Dizi şifresi

Kriptolojide dizi şifresi, şifrelenecek açık metnin içeriğindeki basamakların bir sözderastlantısal şifre basamak dizisiyle (anahtar dizisi) birleştirildiği bir simetrik anahtar şifreleme metodudur. Bir dizi şifresinde, açık metindeki her bir basamak, anahtar dizisinde bu basamağa denk gelen basamakla şifre metninin basamaklarını elde etmek amacıyla her seferinde birer kez olmak üzere şifrelenir. Her bir basamağın şifrelenmesi o anki iç duruma bağlı olduğu için dizi şifrelerine durum şifreleri de denmektedir. Pratikte, her bir basamak bir bit ve birleştirme operatörü XOR işlemidir. Sözderastlantısal anahtar dizileri genellikle rastsal bir tohum değerinden dijital kaydırma yazmaçlarının seri olarak kullanılmasıyla üretilir. Burada kullanılan tohum değeri daha sonra şifre metninin deşifre edilmesinde anahtar olarak kullanılır. Dizi şifrelerinin simetrik şifrelemeye yaklaşımı Blok Şifreleri'nden farklıdır. Blok şifreleri sabit ve değişmez büyük basamak blokları üzerinde çalışmaktadırlar. Bu iki şifreleme metodu arasındaki ayrım her zaman belirgin değildir: bazı blok şifrelerindeki işlem kiplerinde bir blok şifre primitifi kullanıma bağlı olarak dizi şifresi karakteri gösterebilir. Dizi şifreleri blok şifreleri ile kıyaslandığında daha hızlı çalışmakta olup daha az donanım maliyetine sahiptirler. Buna karşın dizi şifreleri eğer yanlış kullanılırlarsa ciddi güvenlik açıkları verebilmektedirler (Dizi Şifre Saldırıları). Özellikle, aynı başlangıç rastsal tohumu (yani aynı başlangıç durumu) asla bir defadan fazla kullanılmamalıdır. == Dizi Şifrelerinin Tek kullanımlık Şeritlerle İlişkisi == Dizi şifreleri, kırılamaz olduğu kanıtlanmış bir şifreleme yönteminin, bazen Vernam Şifreleri olarak da adlandırılan Tek Kullanımlık Şeritlerin eylemlerini yakınsayan bir şifreleme yöntemi olarak görülebilir. Bir tek kullanımlık şifreleme yöntemi tamamen rastsal basamaklardan oluşan bir anahtar dizisi kullanır. Bu anahtar dizisi, şifre metnini oluşturmak üzere her seferde birer kez olmak üzere açık metinle birleştirilir. Bu sistemin güvenli olduğu Claude Shannon tarafından 1949 yılında kanıtlanmıştır. Bu metotta üretilen anahtar dizisi tamamen rastsal olarak üretilmeli ve uzunluğu en az açık metin kadar olmalıdır. Bu dezavantaj pratikte sistemi gerçeklemeyi elverişsiz kılmakta ve sonuç olarak çok kritik uygulamalar dışında tek kullanımlık şeritler fazla kullanılmamaktadır. Bir dizi şifresi 128 bitlik gibi çok daha küçük ve daha uygun bir anahtar kullanabilir. Bu anahtarı kullanarak, açık metnin basamaklarıyla tek kullanımlık şeritlerdekine benzer bir şekilde birleştirilmek üzere bir sözderastlantısal anahtar dizisi üretir. Bu yöntem tek kullanımlık şeritlere kıyasla daha pratik olmasına karşın ciddi bir maliyeti de beraberinde getirmektedir. Üretilen anahtar dizisi sözderastlantısal olup tam rastsal olmadığı için tek kullanımlık şeritlerle ilişkilendirilen güvenlik kanıdı burada artık geçerli olmamaktadır: bir dizi şifresinin tamamen güvensiz olması gayet olasıdır. == Dizi Şifrelerinin Çeşitleri == Bir dizi şifresi bir iç durumu esas alarak anahtar dizisinin ardışık elemanlarını üretir. Buradaki iç durum iki yolla güncellenebilir: birinci yöntemde durum açık metin veya şifre metin mesajlarından bağımsız olarak değişmekte olup durumu bu şekilde güncelleyen dizi şifreleri eşzamanlı (senkronize) dizi şifreleri olarak sınıflandırılmaktadır. Buna karşın, oto-eşzamanlı (oto-senkronize) dizi şifreleri durumlarını önceki şifre metin basamaklarını baz alarak güncellemektedirler. === Eşzamanlı Dizi Şifreleri === Bir eşzamanlı dizi şifresinde sözderastlantısal bir basamak dizisi açık metin ve şifre metin mesajlarından bağımsız olarak üretilir ve daha sonra şifrelemek amacıyla açık metinle veya şifrelenmiş mesajı deşifre etmek amacıyla şifre metniyle birleştirilir. En yaygın formunda ikilik basamaklar (bit) kullanılmakta ve anahtar dizisi açık metin ile XOR işlemi kullanılarak birleştirilmektedir. Bu şemaya ikili eklemeli dizi şifresi adı verilmektedir. Bir eşzamanlı dizi şifresinde, şifre metninin deşifresinin başarılı olabilmesi için mesajı yollayan ve alan tamamen senkron olmalıdır. Eğer iletim esnasında mesaja basamaklar eklenir ya da çıkarılırsa senkronizasyon kaybolur. Kaybolan bir senkronizasyonu yeniden sağlamak için, çeşitli görelemeler doğru deşifrelemeyi elde etmek amacıyla sistematik olarak denenebilir. Senkronizasyonu yeniden sağlamanın diğer bir yolu ise çıktıdaki şifre metnini düzenli noktalarda imleyicilerle etiketlemektir. Buna karşın, eğer iletim sırasında bir basamağın eklenmesi veya kaybolması yerine o basamak bozulursa, açık metinde sadece bir basamak bozulmakta ve burada oluşan hata mesajın diğer bölümlerine yayılmamaktadır. Bu özellik iletim hata oranının yüksek olduğu durumlarda yararlı olmakla birlikte buna karşın hatanın ilave mekanizmalar kullanılmadan keşfedilmesini zor kılmaktadır. Buna ek olarak bu özellik, eşzamanlı dizi şifrelerini aktif saldırılara karşı hassas hale getirmektedir. Eğer bir saldırgan şifre metnindeki bir basamağı değiştirebilirse, açık metinde bu basamağa denk gelen basamağa tahmin edilebilir değişiklikler yapabilmektedir (örneğin şifre metnindeki bir bitin ters çevrilmesi durumunda açık metinde buna denk gelen bitin de ters çevrilmesi gibi). === Oto-Eşzamanlı Dizi Şifreleri === Diğer bir yaklaşım ise anahtar dizisini hesaplamak amacıyla önceki N şifre metin basamağının kullanılmasıdır. Bu tarz şemalar oto- eşzamanlı dizi şifreleri, eşzamansız dizi şifreleri veya şifre metni oto- anahtarı olarak bilinmektedir. Oto-eşzamanlama fikri 1946 yılında patentlenmiş olup, mesajı alanın N şifre metni basamağına sahip olduktan sonra otomatik olarak anahtar dizisi üreteciyle senkronize olma avantajı, iletim sırasında mesaj dizisine basamak eklenmesi ya da mesaj dizisinden basamak çıkarılması durumlarına karşı düzeltme sürecini daha kolay hale getirmektedir. Tek basamak hataları yarattıkları etkide sınırlı olup en fazla N açık metin basamağını etkilemektedir. Oto-eşzamanlı dizi şifresine örnek olarak blok şifrelerindeki şifre geribildirim kipi (CFB) örnek olarak verilebilir. == Doğrusal Geribildirim Kaydırma Yazmacı Tabanlı Dizi Şifreleri == Basamak olarak ikilik taban kullanan dizi şifreleri genelde Doğrusal Geribildirim Kaydırma Yazmaçları (DGKY'ler) kullanılarak gerçeklenmektedirler çünkü bu yöntem donanım seviyesinde kolaylıkla gerçeklenebilmekte ve bu yöntemin matematiksel analizleri halihazırda yapılmış durumdadır. Buna rağmen, DGKY'lerin kendi başlarına kullanılması güvenli bir sistem sağlamak açısından yetersizdir. Bu sebeple DGKY'lerin güvenliğini arttırmak için çeşitli metotlar önerilmiştir. === Doğrusal Olmayan Birleştirme Fonksiyonları === DGKY'ler doğal olarak doğrusal olduğu için, doğrusallığı kaldırmak için kullanılan tekniklerden biri bir takım paralel DGKY'lerin çıktılarını birleştirme üreteci oluşturmak amacıyla doğrusal olmayan bir Boole'sal fonksiyonuna beslemektir. Bu tarz bir birleştirme fonksiyonunun çeşitli özellikleri ortaya çıkan dizi şifresi şemasının güvenliğini (örneğin bağıntı saldırılarından korunmak için) sağlama adına kritiktir. === Saat Kontrollü Üreteçler === Normalde DGKY'ler düzenli aralıklarla güncellenmektedirler. Doğrusallığı kaldırmak için kullanılan diğer bir yaklaşım bir DGKY'yi ikinci bir DGKY'nin çıktısına bağlı olacak şekilde kontrol ederek DGKY'yi düzensiz aralıklarla saatlendirmektir. Bu tarz üreteçlere örnek olarak dur-kalk üreteci, dalgalı kademe üreteci ve daraltıcı üreteç örnek olarak verilebilir. Dalgalı kademe üreteci burada DGKY0, DGKY1 ve DGKY2 olarak adlandıracağımız üç doğrusal geribildirim kaydırma yazmacından oluşmaktadır. Bu yazmaçlardan birinin çıktısı diğer iki yazmaçtan hangisinin kullanılacağını belirlemek üzere kullanılır. Örneğin eğer DGKY2 çıktısı 0 olursa DGKY0, 1 olursa DGKY1 saatlendirilir. Dizi şifresinin o andaki çıktısı DGKY0 ve DGKY1 tarafından son olarak üretilen iki bitin XOR işlemi kullanılarak birleştirilmesine eşittir. Bu üç DGKY'nin başlangıç iç durumları kullanılan anahtardır. Dur-kalk üreteci (Beth ve Piper, 1984) iki DGKY'den oluşmaktadır. DGKY'lerden biri eğer diğer DGKY'nin çıktısı 1 ise saatlendirilir, aksi takdirde bu DGKY önceki çıktısını tekrar eder. Bazı yaklaşımlarda bu çıktı daha sonra düzenli olarak saatlendirilmiş bir diğer üçüncü DGKY'nin çıktısı ile birleştirilmektedir. Daraltıcı üreteci yaklaşımı ise bu iki yaklaşımdan farklıdır. Bu yaklaşımda düzenli olarak saatlendirilmiş iki DGKY kullanılmaktadır. Eğer birinci DGKY'nin çıktısı 1 ise, üretecin çıktısı ikinci DGKY'nin çıktısına eşit olmaktadır. Buna karşın eğer birinci DGKY'nin çıktısı 0 ise, ikinci DGKY'nin çıktısı kullanılmamakta ve üreteç çıktı olarak bir şey vermemektedir. Bu mekanizma ikinci üreteç üzerinde zamanlama saldırılarından muzdariptir çünkü çıktının hızı ikinci üretecin durumuna bağlı olarak değişmektedir. Bu sorun çıktıyı arabellekleyerek giderilebilir. === Filtre Üreteci === Bir DGKY'nin güvenliğini arttırmanın diğer bir yolu ise tek bir DGKY'nin bütün durumunu doğrusal olmayan bir filtreleme fonkisyonuna vermektir. == Diğer Tasarımlar == Doğrusal bir sürücü cihaz yerine doğrusal olmayan bir güncelleme fonksiyonu kullanılabilir. Buna örnek olarak, Klimov ve Shamir tarafından önerilen ve tek bir döngüde n bit üzerinde çalışan üçgensel fonksiyonlar örnek olarak verilebilir. == Güvenlik == Bir dizi şifresinin güvenli olması için anahtar dizisi büyük bir periyoda sahip olmalı ve anahtar dizisinden şifreleme anahtarını ya da iç durumu çıkarmak mümkün olmamalıdır. Buna ek olarak kriptografistler anahtar dizisinin saldırganlara bir diziyi rastsal parazitten ayırmalarına izin verecek hafif meyillerden ve alakalı anahtarlara veya kriptografik tek kullanımlık parçalara denk gelen anahtar dizileri arasında saptanabilir ilişkilerden yoksun olmasını gerektirmektedirler. Burada anlatılanlar tüm anahtarlar için (yani zayıf anahtar bulunmamalıdır) ve saldırganın bildiği ya da kendi seçtiği açık metin veya şifre metin durumlarında da geçerli olmalıdır. Kriptografideki diğer saldırılar gibi, dizi şifreleri saldırıları da aslında saldırılan dizi şifresi şemasını kırmanın pratik yolları olmaktan ziyade, o şemanın zayıf yanlarını belirtmek için kullanılan yöntemler olabilmektedir. Bir eşzamanlı dizi şifresini güvenli olarak kullanmak aynı anahtar dizisinin asla bir defadan fazla kullanılmamasını gerektirmektedir. Bu genelde şifreleme şemasının her çağrılışında farklı bir anahtarın ya da tek kullanımlık duruma özel bir değişkenin kullanılması anlamına gelmektedir. Uygulama tasarlayıcıları çoğu dizi şifresinin sadece gizlilik sağladığının ve tasdikleme sağlamadığının farkında olmalılardır: şifrelenmiş mesajlar iletim esnasında hala değişebilmektedir. Dizi şifreleri için kısa periyotlar şemanın pratikliği açısından önemli bir mesele olmuştur. Örneğin DES gibi 64-bitlik blok şifreleri, çıktı geribildirim kipinde (OFB) bir anahtar dizisi üretmek için kullanılabilmektedir. Buna karşın, geribildirim kullanılmadığında, ortaya çıkan dizinin periyodu ortalama olarak 232 blok olmakta ve çoğu uygulama için bu periyot çok düşük kalmaktadır. Örneğin eğer şifreleme saniyede 8 MB hızında yapılıyorsa, ortalama yarım saat sonra 232 blokluk periyotlar dizide tekrar etmeye başlayacaklardır. RC4 dizi şifresini kullanan bazı uygulamalar RC4'ün anahtar kurulumundaki zayıflıklar sebebiyle saldırılara karşı açıktır. Bu sebeple yeni uygulamalar ya RC4'ü kullanmamalı ya da bütün anahtarların eşsiz veya ideal olarak birbirleriyle alakasız olduğunu (yani kriptografik özet fonksiyonu tarafından üretilmiş olmalarını) garanti etmeli ve RC4 tarafından üretilen anahtar dizisinin ilk baytlarını kullanmamalıdırlar. == Kullanım == Dizi şifreleri genellikle hızlı ve donanımda gerçeklenmesi kolay oldukları için tercih edilmektedirler. Buna ek olarak, açık metnin bilinmeyen uzunluklarda geldiği güvenli kablosuz bağlantı gibi uygulamalarda da kullanılmaktadır. Eğer bu tip uygulamalarda dizi şifresi kipinde çalışmayan blok şifreleme metodu kullanılacak olsaydı, blok şifreleri çalıştıkları blok büyüklüğünden daha küçük blok büyüklüklerinde doğrudan çalışamadıkları için, uygulama tasarımcısı ya iletim verimliliğini ya da gerçekleme karmaşıklığını tercih etmek durumunda kalırdı. Örneğin eğer 128-bitlik bir blok şifresi ayrı 32-bitlik açık metin parçaları alacak olsaydı, gönderilecek verinin üç çeyreği dolgu olarak kullanılırdı. Dizi şifreleri iletim yapılabilecek en küçük birim (genellikle bayt) üzerinde çalıştığı için bu sorunu doğal olarak elerken, blok şifreleri dolgulamadan sakınmak için şifre metni çalma veya artık blok sonlandırma kipinde kullanılmalıdırlar. Dizi şifrelerinin diğer bir avantajı ise askeri kriptografide alanındadır. Burada dizi şifresi katı güvenlik kuralları altındaki ayrı bir kutuda üretilip, daha sonra kendi işlevinin bir parçası olarak XOR işlemini kullanan radyo seti gibi çeşitli cihazlara beslenebilir. Bu şekilde dizi şifresiyle beslenen cihaz sonra daha esnek güvenlik kurallarına sahip bir ortamda tasarlanıp kullanılabilir. RC4 yazılımlarda en sık kullanılan dizi şifresidir. Diğer sık kullanılan dizi şifrelerine örnek olarak A5/1, A5/2, Chameleon, FISH, Helix, ISAAC, MUGI, Panama, Phelix, Pike, SEAL, SOBER, SOBER-128 ve WAKE verilebilir. == Dizi Şifrelerinin Kıyaslanması == Dizi Şifresi Ortaya Çıkış Tarihi Hız (döngü/bayt) (bit uzunluğu) (bit uzunluğu) (bit uzunluğu) Saldırı Saldırı Dizi Şifresi Ortaya Çıkış Tarihi Hız (döngü/bayt) Etkin AnahtarUzunluğu İlklendirme Vektörü İç Durum Bilinen En İyi Saldırı Berimsel Hız A5/1 1989 Ses (Wtelefon) 54 114 64 Aktif AMTS veya AMTS Zaman-Bellek Ödünleşimi ~2 saniye veya 239.91 A5/2 1989 Ses (Wtelefon) 54 114 64? Aktif 4.6 milisaniye Achterbahn-128/80 2006 1 (donanım) 80/128 80/128 297/351 L ≤ 244 çerçeve uzunlukları için kaba kuvvet. L ≥ 248 için bağıntı saldırısı . L ≤ 244 için 280 ve 2128. CryptMT 2005 Çok Hızlı (Yazılım) Değişken 19968'e kadar 19968 N/A (2008) N/A (2008) FISH 1993 Gayet Hızlı (Wyazılım) Değişken Açık metin tabanlı saldırı 211 Grain 2004 öncesi Hızlı 80 64 160 Anahtar Türetme 243 HC-256 2004 öncesi 4 (WP4) 256 256 65536 ISAAC 1996 2.375 (W64-bit) - 4.6875 (W32-bit) 8-8288 genellikle 40-256 N/A 8288 (2006) İlk raund Zayıf İç Durum Türetme 4.67×101240 (2001) MUGI 1998–2002 128 128 1216 N/A (2002) ~282 PANAMA 1998 2 256 128? 1216? Özet Çarpışmaları (2001) 282 Phelix 2004 öncesi 8' kadar (Wx86) 256 + 128-bitlik parça 128? Ayrımsal (2006) 237 Pike 1994 0.9 x FISH (Wsoft) Değişken N/A (2004) N/A (2004) Py 2004 öncesi 2.6 8-2048? genellikle 40-256? 64 8320 Kriptanalitik Teori (2006) 275 Rabbit 2003 Şubat 3.7(WP3)-9.7(WARM7) 128 64 512 N/A (2006) N/A (2006) RC4 1987 7 WP5 8-2048 genellikle 40-256 8 2064 Shamir Birincil Baytlardan Anahtar Türetme veya AMTS 213 veya 233 Salsa20 2004 öncesi 4.24 (WG4) - 11.84 (WP4) 256 64-bit parça + 64-bit dizi pozisyonu 512 Olası nötr bit metodu 8 raund için 2251 for 8 rounds (2007) Scream 2002 4 - 5 (Wsoft) 128 + 128-bit parça 32? 64-bit raund fonksiyonu SEAL 1997 Çok Hızlı (W32-bit) 32? SNOW 2003 öncesi Çok İyi (W32-bit) 128 veya 256 32 SOBER-128 2003 128'e kadar Mesaj işlemesi 2−6 SOSEMANUK 2004 öncesi Çok iyi (W32-bit) 128 128 Trivium 2004 öncesi 4 (Wx86) - 8 (WMK) 80 80 288 Kaba Kuvvet Saldırısı (2006) 2135 Turing 2000–2003 5.5 (Wx86) 160 VEST 2005 42 (WASIC) - 64 (WFPGA) Değişken genellikle 80-256 Değişken genellikle 80-256 256 - 800 N/A (2006) N/A (2006) WAKE 1993 Hızlı 8192 SAMTS & SŞMTS Savunmasız Dizi Şifresi Ortaya Çıkış Tarihi Hız (döngü/bayt) (bit uzunluğu) (bit uzunluğu) (bit uzunluğu) Saldırı Saldırı Dizi Şifresi Ortaya Çıkış Tarihi Hız (döngü/bayt) Etkin AnahtarUzunluğu İlklendirme Vektörü İç Durum Bilinen En İyi Saldırı Berimsel Hız == Ek Bilgiler == * Birleşik Devletler Ulusal Güvenlik Teşkilatı dokümanları, bazen birleştirici-tip algoritmalar terimini kullanırken sözderastlantısal sayı üreteci ile bir açık metin dizisini birleştiren fonksiyonları kastetmektedir. == Notlar == == Kaynakça == * Matt J. B. Robshaw, Stream Ciphers Technical Report TR-701, version 2.0, RSA Laboratories, 1995 (PDF). * Thomas Beth and Fred Piper, The Stop-and-Go Generator. EUROCRYPT 1984, pp88–92. * Christof Paar, Jan Pelzl, "Stream Ciphers", Chapter 2 of "Understanding Cryptography, A Textbook for Students and Practitioners", Springer, 2009. == Dış bağlantılar == * Dizi şifresi işlemi üzerine RSA teknik raporu. * Hafif dizi şifrelerinin analizi (S. Fischer'in tezi). * Basit dizi şifresinin SVG animasyonu. Kategori:Bilişim Kategori:Kriptoloji Kategori:Kriptografik algoritmalar Kategori:Dizi Şifreleri