Blok şifre çalışma kipleri
Kriptografide çalışma kipleri, bir blok şifrenin tek bir anahtar altında güvenli bir şekilde tekrarlı kullanımına olanak veren yöntemlerdir. [1] [2] 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.[1]
Çalışma kipleri özellikle şifreleme ve kimlik doğrulamada kullanılmak üzere oluşturulmuştur.[1] [3] Tarihsel olarak çalışma kipleri çeşitli veri değiştirme senaryoları altında hata yayılma özellikleri bakımında geniş bir biçimde çalışılmıştır. Bütünlük koruması şifrelemeden tamamen farklı bir kriptografik amaç olarak doğmuştur. Kimlik doğrulamalı şifreleme kipi olarak bilinen bazı modern çalışma kipleri şifreleme ve kimlik doğrulamayı verimli bir şekilde birleştirmiştir.
Çalışma kipleri çoğunlukla simetrik şifrelemeyle ilişkilendirilmiş olsa da teoride RSA gibi açık anahtarlı şifreleme yöntemlerinde de kullanılabilir. (Ancak uygulamada uzun mesajların açık anahtarla şifrelenmesi genellikle melez şifreleme kullanılarak yapılır.)
Tarihçe ve standartlaşma
İlk çalışma kipleri ECB, CBC, OFB ve CFB 1981 yılına kadar dayanır ve FIPS 81, DES Modes of Operation'da tanımlanmıştır. 2001 yılında NIST SP800-38A, Recommendation for Block Cipher Modes of Operation ile CTR kipini ve AES blok şifresini ekleyerek onaylanmış çalışma kiplerini güncellemiştir. Son olarak NIST 2010 Ocak ayında SP800-38E, Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices ile XTS-AES kipini eklemiştir. NIST tarafından onaylanmamış başka çalışma kipleri de mevcuttur. Örneğin CTS (ciphertext stealing) kipi birçok popüler kriptografik kütüphanede bulunur.
ECB, CBC, OFB, CFB, CTS ve XTS kipleri sadece gizlilik sağlar; şifrelenmiş bir mesajın yanlışlıkla değiştiğinden ya da kasıtlı olarak oynanmadığından emin olmak için CBC-MAC gibi bir mesaj doğrulama kodu'na ihtiyaç vardır. Kriptografi topluluğu bir bütünlük kipinin gerekliliğinin farkına vardı ve NIST de HMAC, CMAC ve GMAC ile buna karşılık verdi. HMAC 2002'de FIPS 198, The Keyed-Hash Message Authentication Code (HMAC) olarak onaylandı, CMAC 2005'te SP800-38B, Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication ile tanımlandı ve GMAC 2007 yılında SP800-38D, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC ile onaylandı.
Bir gizlilik kipini ve bütünlük kipini birleştirmeye çalışmanın güç ve hataya yatkın olmasının farkına varılmasıyla kriptografi topluluğu gizlilik ve bütünlüğü bir arada sağlayan kipler sunmaya başladılar. Bu kipler kimlik doğrulamalı şifreleme olarak bilinir. Örnekleri CCM (SP800-38C), GCM (SP800-38D), CWC, EAX, IAPM, ve OCB'dir.
Çalışma kipleri günümüzde ulusal ve uluslararası standart kuruluşları tarafından tanımlanmaktadır. Bunların başında NIST gelmektedir. Diğer önemli standart kuruluşları ISO, IEC, IEEE, ANSI, ve IETF'dir.
İlklendirme vektörü (IV)
İlklendirme vektörü (IV) çeşitli kipler tarafından şifrelemeyi rassallaştırmak için kullanılan ve dolayısıyla aynı açık metnin tekrar şifrelendiği durumlarda anahtar değiştirmeden farklı şifreli metin üretilmesini sağlayan bir bit bloğudur. İlklendirme vektörünün güvenlik gereksinimleri anahtardan farklıdır, IV genellikle gizli olmak zorunda değildir. Ancak birçok durumda bir IV'in aynı anahtar ile tekrar kullanılmaması önemlidir. CBC ve CFB kipleri için aynı IV'nin tekrar kullanımı açık metnin ilk bloğu hakkında ya da iki mesajın ortak ilk kısımları hakkında bilgi sızdırabilir. OFB ve CTR kiplerinde bir IV'yi yeniden kullanmak güvenliği tamamen yok eder. CBC kipinde IV ek olarak şifreleme anında tahmin edilememelidir, önceden yaygın olarak uygulanan bir sonraki mesajın IV'sini önceki mesajın son bloğundaki şifreli metni olarak kullanmak güvenli değildir (bu yöntem SSL 2.0'da kullanılmıştır). Eğer bir saldırgan IV'nü (ya da önceki şifreli metin bloğunu) sonraki açık metni seçmeden önce bilirse aynı anahtarla daha önce şifrelenmiş açık metinler hakkında tahmin yapabilir.(bu durum TLS CBC IV saldırısı olarak bilinir).[4]
Özel bir durum olarak, eğer açık metinler bir bloğa sığacak kadar küçük ise, ECB, CBC, PCBC gibi bazı kiplerde aynı IV'yi tekrar kullanmak açık metinlerin aynı olup olmadığı bilgisini açığa çıkarır. Bu durum bir kişinin deşifreleme yapmadan aynı metnin şifrelenip şifrelenmediğini anlayabilmesine yol açar.
Tamamlama
Bir blok şifre blok uzunluğu denen sabit uzunluktaki parçalar üzerinde çalışır, ancak işlenecek mesaj uzunluğu herhangi bir uzunlukta olabilir. Bu yüzden ECB, CBC gibi kipler son bloğun şifrelemeden önce tamamlanmasını gerektirir. Birçok tamamlama şeması vardır. En basiti açık metni blok uzunluğunun katı yapacak şekilde sıfır dizisi eklemektir, ancak deşifrelemeden sonra açık metnin ilk uzunluğunun bilinebilmesi için dikkatli olmak gerekir; örneğin açık metin C biçiminde bir dizinin sadece sonunda sıfır bayt'ı içeriyorsa. Daha karmaşık bir yöntem mesaja tek adet bir bit'ini takiben yeterince sıfır bit'i ekleyerek bloğu tamamlamayan DES yöntemidir; eğer orijinal mesajın uzunluğu blok uzunluğunun tam katıysa, bu durumda yeni bir tamamlama bloğu eklenmiş olur. En karmaşık yöntemler fazladan kapalı metin üretimine neden olmayan ancak bunun karşılığında daha karmaşık olan CBC'ye has kapalı metin çalma tarzı şemalar veya artık blok sonlandırımı'dır. Schneier ve Ferguson iki basit yöntem önermiştir: değeri 128 (hex 80) olan bir bayt ve ardından son bloğu dolduracak kadar sıfır bayt'ı ekleme, veya son bloğu değeri n olan n adet byte ile tamamlama.
CFB, OFB ve CTR kipleri açık metni şifrenin çıktısıyla XOR'lama işlemine tabi tuttukları için herhangi bir tamamlama gerektirmez. Bu kiplerde son açık metin parçası şifrenin çıktısının yeterli miktardaki kısmıyla XOR'lanarak açık metinle aynı uzunlukta kapalı metin oluşturur. Dizi Şifreleri'in bu özelliği onları şifreli metnin açık metinle aynı uzunlukta olması gerektiği veya verinin akan bir yapıda iletildiği ve tamamlamanın uygun olmaduğı uygulamalarda tercih sebebi yapar.
Elektronik kod defteri (ECB)
En basit şifreleme kipi elektronik kod defteri (ECB) kipidir. Mesaj parçalara ayrılır ve her parça ayrı ayrı şifrelenir.
Bu yöntemin dezavantajı aynı açık metinlerin şifrelendiğinde aynı kapalı metinlere dönüştürmesidir; bu yüzden mesajdaki örüntüleri belli eder. Başka bir deyişle mesaj gizliliği sağlanmayabilir ve kriprografik protokollerde kullanılması tavsiye olunmaz. ECB'nin açık metinlerdeki örüntüleri kapalı metinlere nasıl yansıttığının çarpıcı bir örneği aşağıda gösterilmiştir; soldaki resmin pikselleri ECB kipiyle şifrelendiğinde ortadaki resim meydana çıkmıştır, sağdaki resim ise ECB dışındaki bir kip ile yapılan şifreleme sonucunu yansıtmaktadır.
Orijinal | ECB kipi ile şifrelenmiş | ECB dışında bir kip ile şifrelenmiş |
Sağdaki resim CBC, CTR gibi daha güvenli kipler kullanıldığında ortaya çıkan sonuçtur ve rassallıktan ayırt edilemez. Ancak resmin bu rassal görünüşü onun güvenli bir şekilde şifrelendiği anlamı taşımaz, çıktının rassal göründüğü birçok güvensiz şifreleme yöntemi vardır.
ECB kipi ayrıca doğruluk koruması bulunmayan prokollerde tekrar oynatma saldırılarına daha açıktır. Örneğin Phantasy Star Online: Blue Burst çevrim içi oyunu Blowfish blok şifresini ECB kipinde kullanır. Daha büyük açıklara yol açan anahtar değişim protokolünün kırılmasından önce hile yapmak isteyenler Blowfish ile şifrelenmiş "monster killed" mesaj paketleri göndererek, oyunda haksız avantaj elde edebilmişlerdir.
Şifre-bloğu zincirleme (CBC)
Şifre-bloğu zincirleme (CBC) kipi IBM tarafında 1976 yılında geliştirilmiştir.[5] CBC kipinde her açık metin bloğu şifrelenmeden önce bir önceki kapalı metin bloğu ile XORlanır. Bu sayede her kapalı metin bloğu kendisinden önce gelen tüm açık metinlere bağımlı olmuş olur. Bir mesajın aynı anahtar altında tekrar şifrelendiğinin anlaşılamaması için ilk blokta ilklendirme vektörü (IV) kullanılmalıdır.
İlk bloğun indeksine 1 dersek, CBC kipinin matematiksel ifadesi şu şekilde olur
CBC kipi ile şifrelenmiş metinin deşifreleme işlemi de şu şekilde yapılır
CBC kipi en yaygın olarak kullanılan kip olmuştur. Bu kipin en büyük dezavantajları blokların birbirine bağımlı olmalarından dolayı paralel olarak işlenememeleri ve tamamlama gerektirmesidir. Tamamlama sorununu çözmek için kapalı metin çalma yöntemi önerilmiştir.
Farklı bir IV ile deşifreleme yapmaya çalışmak ilk açık metin bloğunun bozulmasına yol açarken diğer bloklar doğru şekilde deşifrelenecektir. Bunun sebebi bir açık metin bloğunun kendisi ve önce gelen kapalı metin bloklarından çıkarılabilmesidir. Sonuç olarak deşifreleme işlemi paralelleştirilebilir. Bir kapalı metin bitindeki hata o bloktaki açık metni tamamen bozar ve sonraki bloktaki açık metinde de karşılık gelen bitlerde hataya yol açar, ancak sonraki bloklarda bir bozulma olmaz.
Yayılan şifre-bloğu zincirleme (PCBC)
Yayılan şifre-bloğu zincirleme kipi ya da açık metin şifre-bloğu zincirleme[6] kipi kapalı metindeki ufak değişikliklerin deşifreleme yaparken sonraki bloklara belirsiz bir şekilde yayılması için tasarlanmıştır.
Şifreleme ve deşifreleme şu şekilde yapılır:
PCBC Kerberos v4 ve WASTE'de kullanılmış ancak bunun dışında yaygın değildir. PCBC ile şifrelenmiş bir mesajda ardışık iki kapalı metin bloğu yer değiştirirse bu sonraki blokların deşifrelenmesini etkilemez.[7] Bu sebeple PCBC Kerberos v5'de kullanılmamıştır.
Hata yayılımı
Mesaj doğrulama kodları ve kimlik doğrulamalı şifrelemenin yaygın kullanımından önce çalışma kipleri için "hata yayılımı" özellikleri bir seçim kriteri olarak tartışılmıştır. Örneğin bir blokta meydana gelen hatanın ECB kipinde bir bloğu, CBC kipinde ise iki bloğu etkilemesi gibi.
Bazıları bu esnekliğin rastgele oluşan hatalara karşı arzu edilen bir koruma sağladığını, bazıları ise bu hata kurtarmanın kötü niyetli kişilerin yapabileceği mesajla oynama türevi saldırıları mümkün kılacağını savunmuştur.
Bununla birlikte, gerekli bütünlük koruma önlemleri alınırsa, bu tarz hatalar tüm mesajın kabul edilmemesine yol açacaktır. Eğer rastgele hatalara karşı dayanıklılık isteniyorsa kapalı metin gönderilmeden önce hata düzeltme kodları kullanılmalıdır.
Kimlik doğrulamalı şifreleme
Gizlilik ve kimlik doğrulamayı tek bir kriptografik araçta birleştirmek için bir takım kipler tasarlanmıştır. Bu kiplerde bazıları XCBC,[8] IACBC, IAPM,[9] OCB, EAX, CWC, CCM, ve GCM'dir. Kimlik doğrulamalı şifreleme kipleri tek geçiş ve çift geçişli kipler olarak sınıflandırılır. Maalesef kriptografi kullanıcıları için tek geçişli kiplerin çoğu (OCB kipi gibi) patent koruması altındadır.
Bunlara ek olarak AEAD (Authenticated-Encryption with Associated-Data) olarak adlandırılan bazı kipler şifrelenmemiş ilave verinin kimlik doğrulamasına olanak verir. Örnek olarak çift geçişli EAX kipi ve tek geçişli OCB kipi gösterilebilir.
Diğer kipler ve kriptografik primitifler
Blok şifreler için birçok kip önerilmiştir. Bazıları kabul görmüş, hatta standartlaşmış ve kullanımdadır. Bazıları da güvensiz bulunmuştur ve kullanılmaması gerekir. Gizlilik, kimlik doğrulamalı veya kimlik doğrulamalı şifreleme kategorilerine girmeyen Anahtar geribildirim kipi (KFM) ve AES-hash gibi örnekler de vardır.
NIST Modes Development).[10][11]'da önerilmiş blok şifre kiplerinin bir listesini tutar.
Disk şifreleme sıklıkla amaca özel tasarlanmış kipler kullanır. Bükülebilir dar-blok şifreleme kipleri (LRW, XEX, ve XTS) ve geniş-blok şifreleme kipleri (CMC ve EME) disk sektörlerini güvenli bir şekilde şifrelemek için tasarlanmıştır. (Bkz. disk şifreleme teorisi)
Blok şifreler genellikle burada açıklanan blok şifre kiplerine benzer kiplerle diğer kriptografik protokollerde de kullanılır.
Bir blok şifreden kriptografik özet algoritması yapmak için çeşitli yöntemler vardır. Bunların açıklamaları için tek-yönlü sıkıştırma fonksiyonuna bakınız.
Blok şifrelerden Kriptografik olarak güvenli neredeyse-rassal sayı üreteçleri (CSPRNGs) yapılabilir.
Mesaj doğrulama kodları (MAC) genellikle blok şifrelerden üretilir. CBC-MAC, OMAC ve PMAC bunlara örnektir.
Kimlik doğrulamalı şifreleme bileşen olarak blok şifreleri kullanır. Bu kipler gizlilik ve kimlik doğrulamayı aynı anda sağlar. IAPM, CCM, CWC, EAX, GCM ve OCB gibi örnekleri mevcuttur.
Ayrıca bakınız
|
Kaynakça
- 1 2 3 Alfred J. Menezes, Paul C. van Oorschot and Scott A. Vanstone (1996). Handbook of Applied Cryptography. CRC Press. ISBN 0-8493-8523-7. http://www.cacr.math.uwaterloo.ca/hac/.
- ↑ "Block Cipher Modes". NIST Computer Security Resource Center. 27 Kasım 2015 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20151127064507/http://csrc.nist.gov/groups/ST/toolkit/BCM/index.html.
- ↑ "FIPS 81: DES Modes of Operation". NIST Computer Security Resource Center. 3 Ocak 2014 tarihinde kaynağından arşivlendi. http://web.archive.org/web/20140103002741/http://www.itl.nist.gov:80/fipspubs/fip81.htm.
- ↑ B. Moeller (May 20, 2004), Security of CBC Ciphersuites in SSL/TLS: Problems and Countermeasures, http://www.openssl.org/~bodo/tls-cbc.txt
- ↑ William F. Ehrsam, Carl H. W. Meyer, John L. Smith, Walter L. Tuchman, "Message verification and transmission error detection by block chaining", US Patent 4074066, 1976
- ↑ Kaufman, C., Perlman, R., & Speciner, M (2002). Network Security. Upper Saddle River, NJ: Prentice Hall. Page 319 (2nd Ed.)
- ↑ Kohl, J. "The Use of Encryption in Kerberos for Network Authentication", Proceedings, Crypto '89, 1989; published by Springer-Verlag; http://dsns.csie.nctu.edu.tw/research/crypto/HTML/PDF/C89/35.PDF
- ↑ Virgil D. Gligor, Pompiliu Donescu, "Fast Encryption and Authentication: XCBC Encryption and XECB Authentication Modes". Proc. Fast Software Encryption, 2001: 92-108.
- ↑ Charanjit S. Jutla, "Encryption Modes with Almost Free Message Integrity", Proc. Eurocrypt 2001, LNCS 2045, May 2001.
- ↑ NIST: Recommendation for Block Cipher Modes of Operation
- ↑ NIST: Modes Development