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 ş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.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.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).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.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.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.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.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.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.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.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.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.Matt J. B. Robshaw, Stream Ciphers Technical Report TR-701, version 2.0, RSA Laboratories, 1995 (PDF).Christof Paar, Jan Pelzl,  "Stream Ciphers", Chapter 2 of "Understanding Cryptography, A Textbook for Students and Practitioners", Springer, 2009.