İçeriğe atla

Padding oracle atağı

Kriptolojide padding oracle atağı kriptografik bir mesaja padding(doldurma) denilen yöntemin uygulanması sonucunda ortaya çıkmaktadır. Padding (cryptography) kriptografide özellikle blok şifrelemelerde değişken uzunluktaki mesajların uzatılarak aynı blok uzunluğuna gelmesi için doldurulmasını sağlamaktadır. Açık anahtarlamalı yapılarda da kullanılmaktadır. Oracle, kriptografide bir testin başarılı olup olmadığını gösteren mekanizmaya denir. Bu mekanizma genellikle karşımıza sunucu olarak çıkmaktadır. Padding oracle atağı da, mesaj bloklarının doldurulmasının doğru olup olmamasına cevap verilmesi özelliğine dayanmaktakdır. Bu atak genellikle blok şifrelemelerde kullanılan CBC (Cipher Block Chanining) moduyla ilişkilendirilir. Ayrıca asimetrik algoritmalarda (örneğin OAEP) padding oracle zafiyeti olabilir.[1]

Simetrik Şifreleme

Simetrik kriptografide, padding oracle atağı (oracle attack) CBC mode da şifreleme işlemine uygulanabilir. Sunucunun blok doldurma işleminin doğru olup olmadığı bilgisini sızdırması sonucunda saldırgana şifreleme anahtarını bilmeden sunucunun anahtarını kullanarak, şifreyi çözmesine imkân tanımaktadır. CBC modunun şifre çözme mekanizması aşağıda gösterilmiştir.

CBC modu

CBC Modda Atak Örneği

Saldırganın elinde üç adet şifreli blok olduğunu ve ikinci bloğun (yani ) şifresini çözmek istediğini farzedelim. Saldırgan sadece son bloğun PKCS7 doldurma(padding) metodu ile doğru olarak doldurulduğunu (padded) biliyor. PKCS7'de doldurma işlemi, byte kadar eksik byte varsa oraya 0xn şeklindedir. Aşağıdaki resim doldurma işlemini özetlemektedir.

CBC şifre çözme işlemi yukarıdaki resimde de belirtildiği gibi şu şekilde çalışır Eğer saldırgan in son byte'ını değiştirip, 'i sunucuya gönderirse, 'in tüm bloğu (avalanche effect) ve 'nin son byte'ı ( XORing operasyonundan dolayı) etkilenir.

Bundan sonra sunucu, en son şifresi çözülen blokun (yani ) doldurmasının(padding) doğru olup olmadığını döndürür (bu kontrol şifresiz mesaj işlenmeden önce gerçekleştirilir).

, 'in son byte'ı olsun. Saldırgan 'i şu şekilde değiştirsin (, 'in tahmin edilen son byte'ı olsun). Eğer doğru bir tahmin ise (yani 'nin doğru son byte'ı ise), sunucu doldurma(padding) hatası vermeyecektir. Eğer sunucu doldurma (padding) hatası verirse, saldırgan 'in hatalı olduğunu anlayacaktır. Bu sebepten saldırgan için diğer değerleri deneyecektir. Bu şekilde 255 denemede 'in değeri bulunmuş olacaktır. Sonuç olarak 'nin son byte'ı elde edilmiş olur.

Saldırgan 'nin son byte'ını elde ettikten sonra son byte'dan bir önceki byte'ı bulmaya çalışacaktır. Bunu da ve şeklinde yapacaktır.

Böylelikle saldırgan tüm bloğu elde edebilecektir.

Farz edelimki 128 bits AES kullanılarak şifrelenmiş bloklar var elimizde. Saldırgan 'yi 255⋅16 = 4080 denemede elde edebilecektir. Bu atak birkaç saniye içinde başarıyla gerçekleştirilebilir.

Padding oracle atakları

Orijinal padding oracle atağı 2002 yılında Serge Vaudenay[2] tarafından yazılmıştır. 2010 yılında ise atak, JavaServer Faces, Ruby on Rails[3] ve ASP.NET.[4][5][6] gibi web çatılarına uygulanmıştır. 2012 de bazı güçlendirilmiş donanımlarada atak yapılabildiği gösterilmiştir[7]

Birçok TLS geliştiricisi tarafından bu zafiyet giderilmiş olsa da zaman yan-kanal analizi kullanan Lucy Thirteen Attack olarak bilinen atak 2013 yılında yayınlandı. 2014 başlarında, gerçek hayatta bir tehdit olarak değerlendirilmese de teoride ( bkz: Signal-to-noise ratio) bazı sınıf cihazlarda hala uygulanabilir durumdadır. 2015'te, kriptografik protokollere yapılan ataklar indirgeme (downgrade attacks) atakları örneğin Logjam[8] ve Export RSA/FREAK[9] atakları gibi karşımıza çıkmaktadır. Bu atak destekleyen istemcilerin daha düşük seviyeli protokelleri kullandırılması prensibine dayanmaktadır. 2014 sonlarında ortaya çıkan PODDLE[10] atağı ise hem indirgeme(SSLv3.0) hem de padding oracle atağını kullanarak güvensiz protokol kullanımını sağlayarak transfer edilen şifreli verinin ele geçirilmesini sağlamaktadır.

Kaynakça

  1. ^ Manger, James. A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0http://archiv.infsec.ethz.ch/education/fs08/secsem/Manger01.pdf 14 Ocak 2013 tarihinde Wayback Machine sitesinde arşivlendi.. Telstra Research Laboratories
  2. ^ Şablon:Kaynak conference
  3. ^ Şablon:Kaynak conference
  4. ^ Şablon:Kaynak conference
  5. ^ Dennis Fisher (13 Eylül 2010). "'Padding Oracle' Crypto Attack Affects Millions of ASP.NET Apps". Threat Post. 13 Ekim 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Nisan 2016. 
  6. ^ Vlad Azarkhin. “Padding Oracle” ASP.NET Vulnerability Explanationhttp://blogs.microsoft.co.il/blogs/linqed/archive/2010/09/19/padding-oracle-asp-net-vulnerability-explanation.aspx 23 Ekim 2010 tarihinde Wayback Machine sitesinde arşivlendi.
  7. ^ Romain Bardou, Riccardo Focardi, Yusuke Kawamoto, Lorenzo Simionato, Graham Steel, Joe-Kai Tsay (2012), "Efficient Padding Oracle Attacks on Cryptographic Hardware" (PDF), 11 Ağustos 2014 tarihinde kaynağından arşivlendi (PDF), erişim tarihi: 9 Nisan 2016 
  8. ^ Matthew Green, Nadia Heninger, Paul Zimmerman (2015), "Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice" (PDF), 27 Şubat 2020 tarihinde kaynağından (PDF) arşivlendi, erişim tarihi: 9 Nisan 2016 . For further information see https://www.weakdh.org 22 Aralık 2019 tarihinde Wayback Machine sitesinde arşivlendi..
  9. ^ Matthew Green. Attack of the week: FREAK (or 'factoring the NSA for fun and profit'). http://blog.cryptographyengineering.com/2015/03/attack-of-week-freak-or-factoring-nsa.html 23 Haziran 2015 tarihinde Wayback Machine sitesinde arşivlendi.
  10. ^ Matthew Green, Attack of the week: POODLEhttp://blog.cryptographyengineering.com/2014/10/attack-of-week-poodle.html 23 Haziran 2015 tarihinde Wayback Machine sitesinde arşivlendi.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Grup teorisi</span> simetrileri inceleyen matematik dalı

Grup teorisi veya Grup kuramı, simetrileri inceleyen matematik dalıdır. Simetri kuramı olarak da adlandırılabilir. Bir nesnenin simetrileri ile kast edilen, nesneye uygulandığında nesneye hiçbir etki olmamış gibi sonuç veren dönüşümlerdir. Her nesnenin en az bir simetrisi vardır: hiçbir şey yapmadan olduğu gibi bırakma dönüşümü. Bahsettiğimiz dönüşümlerin tersleri de vardır ve aradığımız özellikleri sağlarlar. Son olarak da dönüşümlerin art arda yapılması, birleşimli bir işlemdir. Bu üç koşula sırasıyla birim elemana sahip olma, elemenların tersi olma ve grup işleminin birleşmeli olması denir. Bu kavramların matematikte soyutlanması, üzerinde tersinebilir ve bileşme özelliğine sahip ikili bir işlemin tanımlı olduğu kümeler ile yapılır. Daha detaylı açıklamak gerekirse, grup nesnesi bir küme G ve onun üzerinde tanımlı bir işleminden oluşur. Bu operasyonun aşağıdaki şartları sağlaması gereklidir:

RSA, güvenliği tam sayıları çarpanlarına ayırmanın algoritmik zorluğuna dayanan bir tür açık anahtarlı şifreleme yöntemidir. 1978’de Ron Rivest, Adi Shamir ve Leonard Adleman tarafından bulunmuştur. Bir RSA kullanıcısı iki büyük asal sayının çarpımını üretir ve seçtiği diğer bir değerle birlikte ortak anahtar olarak ilan eder. Seçilen asal çarpanları ise saklar. Ortak anahtarı kullanan biri herhangi bir mesajı şifreleyebilir, ancak şu anki yöntemlerle eğer ortak anahtar yeterince büyükse sadece asal çarpanları bilen kişi bu mesajı çözebilir. RSA şifrelemeyi kırmanın çarpanlara ayırma problemini kırmak kadar zor olup olmadığı hala kesinleşmemiş bir problemdir.

<span class="mw-page-title-main">Transport Layer Security</span> Internet Şifreleme Protokolü

Taşıma Katmanı Güvenliği (TLS) ve onun öncülü/selefi olan Güvenli Soket Katmanı (SSL), bilgisayar ağı üzerinden güvenli haberleşmeyi sağlamak için tasarlanmış kriptolama protokolleridir. X.509 sertifikalarını kullanırlar ve bundan dolayı karşı tarafla iletişime geçeceklerin kimlik doğrulaması asimetrik şifreleme ile yapılır ve bir simetrik anahtar üzerinde anlaşılır. Bu oturum anahtarı daha sonra taraflar arasındaki veri akışını şifrelemek için kullanılır. Bu, mesaj/veri gizliliğine ve mesaj kimlik doğrulama kodları için mesaj bütünlüğüne izin verir. Protokollerin birçok versiyonu ağ tarama, elektronik mail, İnternet üzerinden faks, anlık mesajlaşma ve İnternet üzerinden sesli iletişim gibi uygulamalarda yaygın olarak kullanılmaktadır. Bu durumda/içerikte/bağlamda en önemli özellik iletme gizliliğidir. Bundan dolayı kısa süreli oturum anahtarı, uzun süreli gizli simetrik anahtardan türetilememelidir.

Rabin şifreleme sistemi, Rabin kriptoloji veya Rabin kriptosistemi, güvenliği RSA'daki gibi tam sayı çarpanlarına ayırmanın zorluğu üzerine kurgulanmış olan asimetrik bir kriptografik tekniktir. Bununla birlikte, Rabin kriptosisteminin avantajı, saldırgan tam sayıları verimli bir şekilde çarpanlarına ayıramadığı sürece, seçilmiş bir düz metin saldırısına karşı hesaplama açısından güvenli olduğu matematiksel olarak kanıtlanmıştır, oysa RSA için bilinen böyle bir kanıt yoktur. Rabin fonksiyonunun her çıktısının dört olası girdiden herhangi biri tarafından üretilebilmesi dezavantajı; her çıktı bir şifreli metinse, olası dört girdiden hangisinin gerçek düz metin olduğunu belirlemek için şifre çözmede ekstra karmaşıklık gerekir.

Kriptografide çalışma kipleri, bir blok şifrenin tek bir anahtar altında güvenli bir şekilde tekrarlı kullanımına olanak veren yöntemlerdir. Değişken uzunluktaki mesajları işlemek için veriler ayrı parçalara bölünmelidir. Son parça şifrenin blok uzunluğuna uyacak şekilde uygun bir tamamlama şeması ile uzatılmalıdır. Bir çalışma kipi bu bloklardan her birini şifreleme şeklini tanımlar ve genellikle bunu yapmak için ilklendirme vektörü (IV) olarak adlandırılan rastgele oluşturulmuş fazladan bir değer kullanır.

Kriptografide blok şifreleme, blok olarak adlandırılmış sabit uzunluktaki bit grupları üzerine simetrik anahtar ile belirlenmiş bir deterministik algoritmanın uygulanmasıdır. Blok şifreleme birçok kriptografik protokol tasarımının önemli temel bileşenlerindendir ve büyük boyutlu verilerin şifrelemesinde yaygın biçimde kullanılmaktadır.

Probabilistik kriptosistem şifreleme algoritması içinde rastgeleselliğin kullanımıdır böylece aynı mesaj birçok kez şifrelendiğinde genel olarak farklı şifreli metinler üretecektir.

Kriptografide Schnorr imzası, Schnorr imza algoritması tarafından üretilen dijital imzalamadır. Güvenliği, ayrık logaritma problemlerinin çözülemezliğine dayanır. Kısa imzalar oluşturur ve verimlidir. Rastgele oracle modelde en basit güvenliği kanıtlanmış dijital imzalama modeli olarak düşünüldü. 2008'de geçerliliğini yitiren U.S. Patent 4,995,082 tarafından lisanslanmıştır.

Günlük kullanmış olduğumuz şifreler disk üzerinde özet olarak kayıt edilir. Bu özetler iki ayrı şekilde LM ve NTLM olarak tutulup birbiri ile entegre olarak işlem görür ve kimlik doğrulamasını gerçekleştirir. Windows işletim sisteminde ise kullanıcı hesapları ve parolaların şifrelemesinde kullanılan SYSKEY bilgisi SAM dosyasında tutulur. İşletim sistemi çalışır durumunda bu dosyayı kontrolünde tutar, Admin dahi olunsa işletim sistemi içerisinden herhangi bir müdahaleye izin vermez. Windows İşletim sistemleri versiyonu doğrultusunda, kullanıcı parolalarını NTLM veya LM özeti fonksiyonuna sokarlar. Sonuç olarak SYSTEM dosyası içerisinde bulunan SYSKEY ile şifreler ve bu şekilde SAM dosyasına kayıt eder. Örnek olarak SAM dosyasında tutulan kullanıcı hesap bilgileri aşağıdaki gibidir.

<span class="mw-page-title-main">Eliptik eğri kriptografisi</span>

Eliptik Eğri Kriptolojisi, sonlu cisimler üzerindeki eliptik eğrilerin cebirsel topolojisine dayanan bir açık anahtar şifrelemesidir. Eliptik Eğri Kriptolojisi, diğer şifrelemeler göre daha küçük anahtar boyuna ihtiyaç duyar.

<span class="mw-page-title-main">Drown atağı</span>

DROWN atağı TLS protokol takımının, artık güvensiz olarak bilinen SSL v2 protokolünü desteklemesi sebebiyle yapılabilmektedir. DROWN, TLS ile hizmet veren bununla birlikte SSL v2 protokolünü destekleyen ve iki protokol arasında aynı açık anahtar bilgilerini paylaşan tüm sunucular üzerinde etkilidir. Ek olarak eğer açık anahtar sertifikası SSLv2 destekleyen farklı bir sunucu üzerinde kullanılıyor ise, TLS sunucusu yine bu zafiyetten etkilenerek bilgi sızıntısına maruz kalmaktadır.

<span class="mw-page-title-main">HMAC</span>

Kriptografide, HMAC, kriptografik özet fonksiyonu ve gizli bir kriptografik anahtar içeren bir mesaj doğrulama kodu türüdür. Diğer MAC türleri gibi, HMAC de hem veri bütünlüğünü kontrol etmek hem de mesaj içeriğini onaylamakta kullanılabilir. HMAC in hesaplanmasında herhangi bir kriptografik özet fonksiyonu kullanılabilir. Örneğin, HMAC in hesaplanmasında MD5 veya SHA-1 özet fonksiyonu kullanılması durumunda, ilgili MAC algoritması da buna uygun olarak HMAC-MD5 veya HMAC-SHA1 olarak isimlendirilebilir. HMAC'in kriptografik saldırılara karşı dayanıklılığı, kullanılan özet fonksiyonunun dayanıklılığına, elde edilen özetin boyutuna, kullanılan kriptografik anahtarın boyutuna ve kalitesine bağlıdır.

Kriptografide, IBM (ABD) için çalışırken öncü araştırmalar yapan Almanya doğumlu fizikçi ve kriptograf Horst Feistel'in ismiyle anılan Feistel şifresi blok şifrelerin yapımında kullanılan simetrik bir yapıdır; aynı zamanda Feistel ağı olarak da bilinir. Blok şifreler, DES(Data Şifreleme Standardı) dahil, büyük oranda bu şemayı kullanır. Feistel yapısı, şifreleme ve şifre çözme işlemlerinin çok benzer olması, hatta bazı durumlarda aynıdır, sadece anahtar sırasının tersine çevrilmesini gerektirme avantajına sahiptir. Bu nedenle, böyle bir şifreyi uygulamak için gereken kod veya devrenin büyüklüğü neredeyse yarıya inmiştir.

Kriptografide, doldurma birçok farklı uygulamaya işaret eder.

<span class="mw-page-title-main">Tek anahtarlı mesaj doğrulama kodu</span>

Tek anahtarlı mesaj doğrulama kodu, CBC-MAC algoritmasına benzer bir blok şifresinden oluşturulan bir mesaj kimlik doğrulama kodudur.

<span class="mw-page-title-main">CBC-MAC</span> Doğrulama kodu oluşturma sistemi

Kriptografide, CBC-MAC, bir blok şifreleme ile mesaj kimlik doğrulama kodu oluşturmak için kullanılır. Mesaj, her blok önceki bloğun düzgün şifrelenmesine bağlı olacak şekilde, bir blok zinciri oluşturmak için CBC kipinde bir blok şifreleme algoritmasıyla şifrelenir. Bu bağlılık sayesinde, şifresiz metnin herhangi bir bitinde yapılan değişikliğin, şifrelenmiş son bloğun, blok şifreleme anahtarı bilinmeden tahmin edilmesini veya etkisiz hale getirilmesini engeller.

Kriptografide Galois / Sayaç Modu (GCM), performansı sayesinde yaygın olarak benimsenen simetrik anahtar şifreleme blok şifrelemeleri için bir çalışma modudur. Son teknoloji ürünü olan GCM, yüksek hızlı iletişim kanalları için ucuz donanım kaynakları ile üretim hızlandırabilir. Bu operasyon, hem veri doğruluğu (bütünlük) hem de gizlilik sağlamak için tasarlanmış kimliği doğrulanmış bir şifreleme algoritmasıdır. GCM, 128 bit blok boyutuna sahip blok şifreleri için tanımlanmıştır. Galois İleti Kimlik Doğrulama Kodu (GMAC), arttırımlı ileti doğrulama kodu olan GCM'in sadece kimlik doğrulama türüdür. Hem GCM hem de GMAC, başlatma vektörleri keyfi uzunlukta kabul edebilir.

<span class="mw-page-title-main">Simon (şifreleme)</span>

Simon, Haziran 2013'te Ulusal Güvenlik Ajansı (NSA) tarafından halka açık bir şekilde yayınlanmış bir hafif blok şifreleme ailesidir. Simon, donanım uygulamaları için optimize edilmişken, kardeş algoritması Speck, yazılım uygulamaları için optimize edilmiştir.

Kriptografide, bilinir anahtarlı ayırt edici saldırı, simetrik/bakışımlı şifrelemelere karşı bir saldırı modelidir; böylece anahtarı bilen bir saldırgan, düz metinden şifreleme metnine dönüşümün rastgele olmadığı şifrelemede yapısal bir özellik bulabilir. Böyle bir dönüşümün ne olabileceğine dair ortak bir biçimsel tanım yoktur. Seçilmiş anahtarlı ayırt edici saldırı, saldırganın bu tür dönüşümleri tanıtmak için bir anahtar seçebileceği kuvvetle ilişkilidir.

<span class="mw-page-title-main">Şifreli metin</span> şifrelenmiş bilgi

Kriptografide, şifreli metin, şifreleme adı verilen bir algoritma kullanılarak düz metin üzerinde gerçekleştirilen şifreleme işleminin sonucunda elde edilen çıktıdır. Şifreli metin, aynı zamanda şifrelenmiş veya kodlanmış bilgi olarak da bilinir çünkü orijinal düz metnin, şifresini çözmek için uygun şifre olmadan bir insan veya bilgisayar tarafından okunamayan bir biçimini içerir. Bu işlem, hassas bilgilerin bilgisayar korsanlığı yoluyla kaybolmasını önler. Şifrelemenin tersi olan Şifre çözme, şifreli metni okunabilir düz metne dönüştürme işlemidir. Şifreli metin, kod metni ile karıştırılmamalıdır çünkü ikincisi bir şifrenin değil bir kodun sonucudur.