İçeriğe atla

Blok şifreleme

Vikipedi, özgür ansiklopedi

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.

Bileşke şifreleme, tek başına zayıf olan kriptografik yapıların bir araya getirilerek daha kuvvetli bir yapının oluşmasıyla elde edilir. Blok şifrelemenin temelinde tekrarlanan bileşke şifreleme vardır. 1949 yılında, yeni ufuklar açan yayını Gizlilik Sistemlerin Haberleşme Teorisi ile Claude Shannon bileşke şifrelemeyi önerip analiz ederek, substitüsyon ve permutasyon gibi iki basit operasyonu birleştirip etkin biçimde güvenliği artırmıştır.[1] Şifreleme işlemi, tekrarlanan bileşke şifre kullanılarak birden çok raundda gerçekleşir ve her raundda ana anahtardan üretilmiş farklı bir alt anahtar kullanılır. Bu tür şifrelerin yaygın bir uygulaması da Horst Feistel tarafından adlandırılmış olan ve özellikle de DES[2] şifrelemedeki kullanımıyla dikkat çeken Feistel ağıdır. Diğer birçok blok şifreleme yapısı ise AESde olduğu gibi substitüsyon-permutasyon ağıdır.

1997 yılında ABD Ulusal Standartlar Bürosu (şimdiki adı [National Institute of Standards and Technology], NIST) tarafından DES şifrelemenin yayınlanması, modern blok şifreleme dizaynı için bir temel oluşturmuştur. Aynı şekilde akademik kriptanaliz yöntemlerinin gelişmesini de etkilemiştir. Diferansiyel ve lineer kriptanaliz yöntemleri DES dizaynı üzerine çalışmasıyla ortaya çıktı. Günümüzde, bir blok şifreleme birçok atak tekniğine karşı güvenli olmalıdır ve kaba kuvvet saldırılarına karşı da dayanıklı olmalıdır.

Güvenli bir blok şifreleme tek bir bloğun sabit bir anahtar kullanılarak şifrelenmesi için uygundur. Şifreleme ve kimlik doğrulama gibi güvenlik hedeflerine ulaşabilmek için çoklu blok şifre çalışma kipleri dizayn edilmiştir. Bununla birlikte, evrensel özet fonksiyonu ve sözderastlantısal sayı üreteci gibi diğer kriptografik protokollerde blok üretimi için de blok şifreleme kullanılmaktadır. Ek ücret değerlendirilmesi için de blok şifresi girilmelidir.

Bir blok şifreleme iki algoritmadan oluşur, birincisi şifreleme için, E ve ötekisi şifreyi çözmek için, D.[3] Her iki algoritma da iki adet girdi alır, n bit uzunluğunda bir blok ve k bit uzuluğunda bir anahtar; ve her ikisi de çıktı olarak n bit uzunluğunda blok üretir. Şifre çözme algoritması D şifrelemenin ters fonksiyonudur, yani D = E−1. Biçimsel olarak,[4][5] şifreleme fonksiyonu

şeklinde tanımlanmıştır. Fonksiyon girdi olarak k bit anahtar uzunluğuna sahip anahtar K ve n bit blok uzunluğuna sahip P dizisi alarak n bitlik C dizisini üretiyor. P şifresiz metin ve C ise şifreli metin olarak adlandırılır. Her K için, EK(P) fonksiyonu {0,1}n üzerinde tersi alınabilir olmalıdır. E fonksiyonunun tersi

şeklinde tanımlanmıştır. Fonksiyon girdi olarak anahtar K ve şifreli metin C alıp, çıktı olarak şifresiz metin P vermektedir, öyle ki

Örneğin, bir blok şifreleme algoritması girdi olarak 128-bit şifresiz metin alarak, çıktı olarak 128-bit şifreli metin verebilir. Asıl dönüşümü sağlayan ikinci girdi olan gizli anahtardır. Şifre çözme de aynı şekildedir: şifre çözme algoritması 128-bit şifreli metinle beraber gizli anahtarı alarak çıktı olarak 128-bitlik orijinal şifresiz metni oluşturur.[6]

Her anahtar K için, EK girdi blokları kümesi üzerine bir permutasyondur (bijeksiyon eşlemesi). Her anahtar olası permutasyondan bir adet seçer.

Tekrarlanan Blok Şifreler

[değiştir | kaynağı değiştir]

Çoğu blok şifre tekrarlaran blok şifreler olarak sınıflandırılır, yani şifresiz metin sabit boyutta bloklara bölünerek aynı boyuttaki şifreli metin bloklarına dönüştürülür ve bu tekrarlanan tersi alınabilir dönüşüme raund fonksiyonu adı verilirken, her bir tekrara da "raund" denir.[7]

Raund fonksiyonu R genellikle ikinci girdi olarak orijinal anahtardan üretilen raund anahtarı Ki alır:

ve burada r raund sayısı olmak üzere şifresiz metin ve ise şifreli metindir.

Buna ek olarak anahtar beyazlatma sık olarak kullanılır. Başta ve sonda veri anahtar malzemesi ile modifiye edilir (genellikle XOR kullanılır, ama toplama ve çıkarma gibi basit aritmetik işlemleri de kullanılabilir):

Substitüsyon-Permutasyon Ağı

[değiştir | kaynağı değiştir]
16-bit şifresiz metnin 16-bit şifreli metine dönüştürüldüğü 3 raundluk substitüsyon-permutasyon ağı krokisi. S-kutuları Si, P-kutuları P ve raund anahtarları Ki’dır.

Diğer bir önemli tekrarlanan blok şifre türüyse substitüsyon-permutasyon ağıdır. Burada şifreli metin bloğu ve anahtar girdi olarak alınır ve birbirlerini izleyen raundlarda substitüsyon aşaması ve ardından permutasyon aşamasıyla her bloğa ait şifreli metinler üretilir.[8] Lineer olmayan substitüsyon aşamasında şifresiz metin bitleri anahtar bitleri ile karıştırılarak Shannon'un karışıklığı elde edilir. Lineer olan permutasyon aşamasında ise bitler dağıtılarak diffüzyon sağlanır.[9][10]

Substitüsyon kutusu (S-kutusu) kullanılarak girdi olarak alınan ufak bit bloklarından çıktı olarak başka bit blokları elde edilir. Tersinin olması için substitüsyon birebir olmalıdır. Güvenli bir S-kutusunda bir girdi biti değiştirilirse çıktı bitlerinin ortalama yarısı değişmelidir, yani her çıktı biti tüm girdi bitlerine bağlıdır.[11]

Permutasyon kutusu (P-kutusu) tüm bitlerin yer değiştirmesidir: bir raunddaki tüm S-kutularının çıktılarını alıp bitlerin yerleri değiştirir ve bir sonraki raunddaki S-kutularına girdi olarak verir. İyi bir P-kutusu herhangi bir S-kutusunun çıktısını mümkün olduğunca fazla S-kutusuna dağıtabilmelidir.

Her raundda ana anahtardan üretilen raund anahtarları bazı grup operasyonları kullanılarak işleme dahil edilir. Burada genellikle XOR işlemi kullanılır.

Şifreyi çözme ise tüm bu işlemleri tersten yapılmasıyla kolayca yapılır.

DES ve Blowfish gibi birçok blok şifrede Fiestel ağ yapısı kullanılmıştır.

Feistel ağında, şifrelenecek olan şifresiz metin bloğu iki eşit uzunluktaki parçaya ayrılır. Alt anahtar kullanılarak raund fonksiyonu bu yarımlardan birine uygulandıktan sonra öteki yarı ile XOR'lanır. Ardından iki yarı yer değiştirir.

raund fonksiyonu olsun ve için sırasıyla alt anahtarlar olsun.

Basit işleyiş şu şekildedir:

Şifresiz metin bloğu iki eşit uzunluktaki parçaya ayrılır, (, )

numaralı her raund için

hesapla.

Sonrasında şifreli metindir.

şifreli metnini çözme işlemi, için sırasıyla

hesaplanmasıyla elde edilir.

Ardından şifresiz metindir.

Feistel ağının subtitüsyon-permutasyon ağına göre bir avantajı ise raund fonksiyonun tersinin olma zorunluluğunun olmamasıdır.

Çalışma kipleri

[değiştir | kaynağı değiştir]
Block passwords

Kriptografide çalışma kipleri, bir blok şifrenin tek bir anahtar altında güvenli bir şekilde tekrarlı kullanımına olanak veren yöntemlerdir.[4][12] 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.[4]

Çalışma kipleri özellikle şifreleme ve kimlik doğrulamada kullanılmak üzere oluşturulmuştur.[4] [13] 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.

CBC gibi bazı modlar tam şifresiz metin blokları üzerinde çalışmak ister. Son bloğu 0-bitleri ile tamamlamak işe yaramaz, çünkü alıcı orijinal mesajla tek farkı dolgu olan yeni mesajı ayırt edemeyebilir. Daha da önemlisi böyle bir çözüm dolgu kâhin atağı[14] ile sorun çıkarabilir. Bu nedenle daha iyi bir dolgu şeması gerekmektedir. ISO/IEC 9797-1[15]'de dolgu metodu 2 olarak geçen yöntem kullanılmaktadır: mesaja 1-bit'i ekleyip son blok 0-bit ile tamamlanır. Bu tür ataklara karşı güvenilirliği ispatlanmıştır.

Kaba kuvvet ataklar

[değiştir | kaynağı değiştir]

Blok şifrelemenin tersine çevrilebilir fonksiyonundan dolayı, doğumgünü problemi kullanılarak blok şifre çıktısının zamanla gerçek rastgeledizilerden ayırt edilebileceğini söyleyebiliriz. Bu özellikten ötürü sistemin güvenliği blok uzunluğunun karekökü ile orantılıdır. Blok uzunluğunu çok büyük seçmek ise performans kaybına sebep olacaktır, bu yüzden aradaki dengeyi korumak gerek. Eski blok şifrelerden DES 64-bit blok uzunluğu kullanıyorken, yeni olan AES ise 128-bit kullanmaktadır.

Farksal Kriptanaliz

[değiştir | kaynağı değiştir]

Doğrusal Kriptanaliz

[değiştir | kaynağı değiştir]

İntegral Kriptanaliz

[değiştir | kaynağı değiştir]

İspatlanabilir güvenlik

[değiştir | kaynağı değiştir]

İdeal şifreleme modeli

[değiştir | kaynağı değiştir]

Pratik değerlendirme

[değiştir | kaynağı değiştir]

Pratikte blok şifreleme birçok alanda değerlendirilebilir. Ortak faktörler:[16]

  • Anahtar ve blok uzunluğu gibi temel parametreler güvenlik için bir üst limit oluştururlar.
  • Tahmini güvenlik seviyesi, algoritma açıklandıktan sonra yapılan kriptanalizler, matematiksel dayanakları ve mevcut atak türleri ile ölçülür.
  • Karmaşıklık, şifrelemenin donanım ve yazılım üzerine uygulamalarının sonuçları ile ölçülür.
  • Performans ölçümü sırasında çeşitli platformlardaki çalışmaları göz önüne alınır ve buna gerekli olan bellek miktarı da dahil edilir.
  • Esneklik ise şifrelemenin çeşitli blok ve anahtar boyutlarını desteklemesidir.

Dikkate değer blok şifrelemeler

[değiştir | kaynağı değiştir]

Ayrıca bakınız

[değiştir | kaynağı değiştir]
  1. ^ Shannon, Claude (1949). "Communication Theory of Secrecy Systems" (PDF). Bell System Technical Journal. 28 (4). ss. 656-715. 5 Haziran 2007 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  2. ^ van Tilborg, Henk C. A.; Jajodia, Sushil, (Ed.) (2011). "Encyclopedia of Cryptography and Security". Springer. ISBN 978-1-4419-5905-8. 29 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. , p. 455.
  3. ^ Cusick, Thomas W. & Stanica, Pantelimon (2009). "Cryptographic Boolean functions and applications". Academic Press. ss. 158-159. ISBN 9780123748904. 29 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  4. ^ a b c d Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A. (1996). Chapter 7: Block Ciphers"Handbook of Applied Cryptography". CRC Press. ISBN 0-8493-8523-7. 7 Mart 2005 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  5. ^ Bellare, Mihir; Rogaway, Phillip (11 Mayıs 2005), Introduction to Modern Cryptography (PDF) (Lecture notes), 24 Eylül 2009 tarihinde kaynağından (PDF) arşivlendi, erişim tarihi: 23 Mayıs 2012 , chapter 3.
  6. ^ Chakraborty, D. & Rodriguez-Henriquez F. (2008). Block Cipher Modes of Operation from a Hardware Implementation Perspective Koç, Çetin K. (Ed.). "Cryptographic Engineering". Springer. s. 321. ISBN 9780387718163. 29 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  7. ^ Junod, Pascal & Canteaut, Anne (2011). "Advanced Linear Cryptanalysis of Block and Stream Ciphers". IOS Press. s. 2. ISBN 9781607508441. 29 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  8. ^ Keliher, Liam ve diğerleri. (2000). Modeling Linear Characteristics of Substitution-Permutation Networks Hays, Howard & Carlisle, Adam (Ed.). "Selected areas in cryptography: 6th annual international workshop, SAC'99, Kingston, Ontario, Canada, August 9-10, 1999 : proceedings". Springer. s. 79. ISBN 9783540671855. 29 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  9. ^ Baigneres, Thomas & Finiasz, Matthieu (2007). Dial 'C' for Cipher Biham, Eli & Yousseff, Amr (Ed.). "Selected areas in cryptography: 13th international workshop, SAC 2006, Montreal, Canada, August 17-18, 2006 : revised selected papers". Springer. s. 77. ISBN 9783540744610. 29 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  10. ^ Cusick, Thomas W. & Stanica, Pantelimon (2009). "Cryptographic Boolean functions and applications". Academic Press. s. 164. ISBN 9780123748904. 29 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  11. ^ Katz, Jonathan; Lindell, Yehuda (2008). "Introduction to modern cryptography". CRC Press. ISBN 9781584885511. , pages 166-167.
  12. ^ "Block Cipher Modes". NIST Computer Security Resource Center. 27 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Temmuz 2012. 
  13. ^ "FIPS 81: DES Modes of Operation". NIST Computer Security Resource Center. 3 Ocak 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 23 Mayıs 2012. 
  14. ^ Kenneth G. Paterson; Gaven J. Watson (2008). "Immunising CBC Mode Against Padding Oracle Attacks: A Formal Security Treatment". Security and Cryptography for Networks – SCN 2008, Lecture Notes in Computer Science, 5229. Springer Verlag. ss. 340-357. 
  15. ^ ISO/IEC 9797-1: Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher, ISO/IEC, 2011, 27 Aralık 2013 tarihinde kaynağından arşivlendi, erişim tarihi: 23 Mayıs 2012 
  16. ^ James Nechvatal, Elaine Barker, Lawrence Bassham, William Burr, Morris Dworkin, James Foti, Edward Roback (Ekim 2000), Report on the Development of the Advanced Encryption Standard (AES) (PDF), National Institute of Standards and Technology (NIST), 30 Aralık 2010 tarihinde kaynağından (PDF) arşivlendi, erişim tarihi: 23 Mayıs 2012 

Konuyla ilgili yayınlar

[değiştir | kaynağı değiştir]

Dış bağlantılar

[değiştir | kaynağı değiştir]