Blok şifreleme

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. Ş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 ş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.Bir blok şifreleme iki algoritmadan oluşur, birincisi şifreleme için, E, ve ötekisi şifreyi çözmek için, D. 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 , ş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.Her anahtar K için, EK girdi blokları kümesi üzerine bir permutasyondur (bijeksiyon eşlemesi). Her anahtar olası  permutasyondan bir adet seçer.Ç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.Raund fonksiyonu R genellikle ikinci girdi olarak orijinal anahtardan üretilen raund anahtarı Ki alır: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):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.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.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.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.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.Feistel ağının subtitüsyon-permutasyon ağına göre bir avantajı ise  raund fonksiyonun tersinin olma zorunluluğunun olmamasıdır.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.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ğı ile sorun çıkarabilir. Bu nedenle daha iyi bir dolgu şeması gerekmektedir. ISO/IEC 9797-1'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.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.Tahmini güvenlik seviyesi, algoritma açıklandıktan sonra yapılan kriptanalizler, matematiksel dayanakları ve mevcut atak türleri 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.