Dizi şifresi

Kriptografide, bir kesintisiz şifreleme, dizi şifresi veya akış şifresi () bir simetrik anahtardır. Düz metin bitlerinin bir exclusive-or (XOR) işlemi kullanılarak bir sözde rastgele şifre bit akışı (anahtar dizisi) ile birleştirildiği şifrelemedir. Bir akış şifresinde düz metin sayısal basamakları her seferinde bir tane şifrelenir ve ardışık basamakların dönüşümü şifreleme durumu sırasında değişir. Her bir basamağın şifrelenmesi mevcut duruma bağlı olduğundan alternatif bir isim durum şifresidir. Pratikte, basamaklar tipik olarak tek bitler veya baytlardır.

Kesintisiz şifreler, simetrik şifreleme için blok şifrelerden farklı bir yaklaşımı temsil eder. Blok şifreler, sabit uzunluktaki büyük bloklar üzerinde çalışır. Akış şifreleri tipik olarak blok şifrelerden daha yüksek hızda çalışır ve daha düşük donanım kaynağı gereksinimine sahiptir. Bununla birlikte, akış şifreleri yanlış kullanıldığında ciddi güvenlik sorunlarına neden olabilir; özellikle, aynı başlangıç durumu asla iki kez kullanılmamalıdır.

Bir akış şifresi, çok daha küçük ve kullanışlı bir kriptografik anahtar, örneğin 128 bit anahtar kullanır. Bu anahtara dayanarak, tek kullanımlık şifreleme algoritmasına benzer bir şekilde düz metin rakamlarıyla birleştirilebilen sözde rastgele bir anahtar dizisi oluşturur. Bununla birlikte, anahtar dizisi sözde rastgele olduğundan ve gerçekten rastgele olmadığından, tek kullanımlık şifre ile ilişkili güvenlik uygulanamaz ve bir akış şifresinin tamamen güvensiz olması oldukça mümkündür.

Tek kullanımlık şifreden alınan yarım yamalak ilham
Akış şifreleri, kırılamazlığı kanıtlanmış bir şifre olan tek kullanımlık şifre (OTP:one-time pad) eylemine yaklaşıyor olarak görülebilir. Tek kullanımlık şifre, tamamen rastgele rakamlardan oluşan bir anahtar dizisi kullanır. Anahtar dizisi, şifreli metni oluşturmak için her seferinde bir tane olmak üzere düz metin rakamlarıyla birleştirilir. Bu sistemin güvenli olduğu 1949 yılında Claude E. Shannon tarafından kanıtlanmıştır. Bununla birlikte, anahtar dizisi en azından düz metinle aynı uzunlukta tamamen rastgele oluşturulmalıdır ve birden fazla kez kullanılamaz. Bu durum sistemi birçok pratik uygulamada kullanışsız hale getirmektedir ve sonuç olarak Tek kullanımlık şifre en kritik uygulamalar dışında yaygın olarak kullanılmamaktadır. Anahtar üretimi, dağıtımı ve yönetimi bu uygulamalar için kritik öneme sahiptir.

Bir akış şifresi, 128 bit gibi çok daha küçük ve kullanışlı bir anahtar kullanır. Bu anahtara dayanarak, tek kullanımlık şifreye benzer bir şekilde düz metin rakamlarıyla birleştirilebilen sözde rastgele bir anahtar dizisi oluşturur. Ancak bunun bir bedeli vardır. Anahtar dizisi artık sözde rastgeledir ve bu nedenle gerçekten rastgele değildir. Tek kullanımlık şifre ile ilişkili güvenlik kanıtı artık geçerli değildir. Bir akış şifresinin tamamen güvensiz olması oldukça mümkündür.

Akış şifrelerinin türleri
Bir akış şifresi, dahili bir duruma dayalı olarak anahtar dizisinin ardışık öğelerini oluşturur. Bu durum iki şekilde güncellenir: 
 Eğer durum, düz metin veya şifreli metin mesajlarından bağımsız olarak değişiyorsa, şifre eşzamanlı bir akış şifresi ("synchronous stream cipher") olarak sınıflandırılır.
 Eğer durum, şifreli metin hanelerindeki önceki değişikliklere göre güncelleniyorsa, şifre kendi kendini senkronize eden akış şifreleri ("self-synchronising stream ciphers") olarak sınıflandırılır.

Eşzamanlı akış şifreleri
Bir eşzamanlı akış şifrelemesinde sözde-rastgele rakamlardan oluşan bir akış düz metni ve şifreli metin mesajlarından bağımsız olarak oluşturulur ve ardından düz metin (şifrelemek için) veya şifreli metin (şifreyi çözmek için) ile birleştirilir. En yaygın biçimde, ikili rakamlar (bitler) kullanılır ve anahtar dizisi exclusive-or (XOR) işlemi kullanılarak düz metinle birleştirilir. Bu ikili eklemeli akış şifresi ("binary additive stream cipher") olarak adlandırılır.

Bir eşzamanlı akış şifresinde, şifre çözmenin başarılı olması için gönderici ve alıcının eşzamanlı olması gerekir. İletim sırasında mesaja rakamlar eklenir veya çıkarılırsa senkronizasyon kaybolur. Senkronizasyonu yeniden sağlamak için, doğru şifre çözmeyi elde etmek üzere çeşitli ofsetler sistematik olarak denenebilir. Diğer bir yaklaşım ise şifre metnini çıktının düzenli noktalarında işaretleyicilerle işaretlemektir.

Bununla birlikte, bir rakam eklenmek veya kaybolmak yerine iletim sırasında bozulursa, düz metindeki yalnızca tek bir rakam etkilenir ve hata mesajın diğer bölümlerine yayılmaz. Bu özellik, iletim hata oranı yüksek olduğunda kullanışlıdır; ancak, hatanın başka mekanizmalar olmadan tespit edilme olasılığını azaltır. Ayrıca, bu özellik nedeniyle, eşzamanlı akış şifreleri aktif saldırılara karşı çok hassastır - bir saldırgan şifreli metindeki bir rakamı değiştirebilirse, karşılık gelen düz metin bitinde öngörülebilir değişiklikler yapabilir; örneğin, çevirme (flipping) şifreli metindeki bir bit, aynı bitin düz metinde çevrilmesine (toggled) neden olur.

Kendi kendini senkronize eden akış şifreleri
Kendini senkronize eden akış şifreleri, anahtar dizisini hesaplamak için önceki N şifreli metin basamağının bir kısmını kullanan başka bir tekniktir. Bu tür şemalar asenkron akış şifreleri veya şifreli metin otomatik anahtarı (CTAK - ciphertext autokey) olarak da bilinir. Kendi kendini senkronize etme fikri 1946'da patentlenmiştir ve alıcının N şifre metni basamağı aldıktan sonra otomatik olarak anahtar dizisi üreteci ile senkronize olması avantajına sahiptir, bu da basamaklar düşerse veya mesaj akışına eklenirse kurtarmayı kolaylaştırır. Tek basamaklı hataların etkisi sınırlıdır, yalnızca N düz metin basamağına kadar etkiler. Kendi kendini senkronize eden akış şifrelerine aktif saldırılar gerçekleştirmek senkronize benzerlerine göre biraz daha zordur.

Kendi kendini senkronize eden bir akış şifresine örnek olarak şifre geri besleme modunda blok şifre (CFB - cipher-feedback mode) verilebilir.

Doğrusal geri beslemeli kaydırmalı kayıt tabanlı akış şifreleri
İkili akış şifreleri genellikle doğrusal geri beslemeli kaydırma kaydedicileri (LFSR-linear feedback shift register) kullanılarak oluşturulur çünkü donanım içinde kolayca uygulanabilir ve matematiksel olarak hızlı bir şekilde analiz edilebilirler. Ancak, sadece LFSR kullanımı iyi bir güvenlik sağlamak için yeterli değildir. LFSR'lerin güvenliğini artırmak için çeşitli şemalar tasarlanmıştır.

Doğrusal olmayan birleştirme fonksiyonları
küçükresim|
LFSR'ler doğası gereği doğrusal olduğundan, doğrusallığı ortadan kaldırmak için kullanılan bir teknik, bir grup paralel LFSR'nin çıkışlarını doğrusal olmayan bir Bool fonksiyonu ile besleyerek bir kombinasyon üreteci ("combination generator") oluşturmaktır. Böyle bir birleştirme fonksiyonunun ("combining function") çeşitli özellikleri, örneğin korelasyon saldırısından kaçınmak amacıyla, sonuç şemasının güvenliğini sağlamak için önemlidir.

 Saat kontrollü üreteçler
Normalde LFSR'ler düzenli olarak adımlanır. Doğrusal olmayan bir teknik, ikinci bir LFSR'nin çıkışı tarafından kontrol edilen LFSR'nin düzensiz olarak saatlenmesini sağlamaktır. Bu tür üreteçler arasında dur-kalk üreteci ("stop-and-go generator"), alternatif adım üreteci ("alternating step generator") ve küçülen üreteç ("shrinking generator") yer alır.

Dur-ve-geç üreteci (Beth ve Piper, 1984) iki LFSR'den oluşur. Bir LFSR, ikinci bir LFSR'nin çıktısı "1" ise saatlenir, aksi takdirde önceki çıktısını tekrarlar. Bu çıktı daha sonra (bazı versiyonlarda) düzenli bir hızda saatlenen üçüncü bir LFSR'nin çıktısı ile birleştirilir.

Küçülen üreteç, farklı bir yaklaşım benimser. Her ikisi de düzenli olarak saatlenen iki LFSR kullanılır. İlk LFSR'nin çıkışı 1 ise, ikinci LFSR'nin çıkışı üretecin çıkışı olur. Ancak ilk LFSR 0 çıktısı verirse, ikincinin çıktısı atılır ve üreteç tarafından hiçbir bit çıktısı verilmez. Bu mekanizma, çıkışın hızı ikinci üretecin durumuna bağlı bir şekilde değişken olduğundan, ikinci üretece yönelik zamanlama saldırılarından mustariptir. Bu durum çıkışın tamponlanmasıyla hafifletilebilir.

Filtre üreteci
Bir LFSR'nin güvenliğini artırmaya yönelik bir başka yaklaşım da tek bir LFSR'nin tüm durumunu doğrusal olmayan bir filtreleme fonksiyonuna ("filtering function") aktarmaktır.

Diğer tasarımlar
Doğrusal bir sürücü aygıt yerine, doğrusal olmayan bir güncelleme işlevi kullanılabilir. Örneğin, Klimov ve Shamir n bitlik kelimeler üzerinde tek bir döngüye sahip üçgensel fonksiyonlar (T-fonksiyonları) önermiştir.

Güvenlik
Güvenli olması için, akış dizisi periyodunun (akış kendini tekrar etmeden önce çıkan basamak sayısı) yeterince büyük olması gerekir. Eğer dizi tekrarlanırsa, üst üste binen şifreli metinler birbirlerine karşı "derinlemesine" ("in depth") hizalanabilir ve bu yöntemler kullanılarak oluşturulan şifreli metinlerden düz metnin çıkarılmasını sağlayan teknikler vardır.

Kullanım
upright=1.27|küçükresim|

Akış şifreleri, genellikle güvenli kablosuz bağlantılarda olduğu gibi düz metnin bilinmeyen uzunlukta miktarlarda geldiği uygulamalarda kullanılır. Bu tür bir uygulamada bir blok şifre kullanılacak olsaydı, blok şifreler blok boyutlarından daha kısa bloklar üzerinde doğrudan çalışamayacağından, tasarımcının iletim verimliliği veya uygulama karmaşıklığı arasında seçim yapması gerekirdi. Örneğin, 128 bitlik bir blok şifre ayrı 32 bitlik düz metin patlamaları alırsa, iletilen verinin dörtte üçü dolgu gerektirir. Dolgudan kaçınmak için blok şifreler, şifreli metin çalma veya artık blok sonlandırma modunda kullanılmalıdır, akış şifreleri ise iletilen en küçük birim (genellikle bayt) üzerinde çalışarak bu sorunu ortadan kaldırır.

Akış şifrelerinin askeri kriptografideki bir diğer avantajı, şifre akışının sıkı güvenlik önlemlerine tabi bir şifreleme cihazı tarafından üretilebilmesi ve daha sonra işlevlerinin bir parçası olarak XOR işlemini gerçekleştirecek olan radyo seti gibi diğer cihazlara beslenebilmesidir. Diğer cihaz daha az güvenli ortamlarda kullanılmak üzere tasarlanabilir.

ChaCha, yazılımda en yaygın kullanılan akış şifresi haline gelmektedir;, diğerleri şunlardır:
RC4,
A5/1,
A5/2,
Chameleon, 
FISH, 
Helix,
ISAAC, 
MUGI,
Panama,
Phelix, 
Pike,
SEAL, 
SOBER,
SOBER-128 ve
WAKE.

Akış şifrelerinin karşılaştırılması
KesintisizŞifrelemeOluşturulmaTarihiHız(döngü/byte)(bit)SaldırıEtkiliAnahtar-Boyutuİlklendirme vektörüDahiliDurumEn Çok BilinenHesaplamaKarmaşıklığıA5/11989Ses (Wphone)5411464Aktif KPA VEYAKPA Zaman-Bellek Ödünleşimi~2 saniye VEYA239,91A5/21989Ses (Wphone)5411464?Aktif4,6 milisaniyeAchterbahn-128/8020061 (donanım)80/12880/128297/351L ≤ 244 çerçeve uzunlukları için kaba kuvvet.L ≥ 248 için korelasyon saldırısı.280 resp. 2128 for L ≤ 244.CryptMT2005 Değişken 19968'e kadar 19968  (2008)  (2008)Crypto-1 1994 başları 48 16 48 Aktif KPA (2008) 40 ms VEYA248 (2008)E0 1999 başları Değişken(genellikle 128) 4 132 KPA (2005) 238 (2005)FISH1993Oldukça Hızlı (Wsoft)Çok büyükKPA211Grain2004 başlarıHızlı8064160Anahtar Türetme243HC-2562004 başları4 (WP4)25625665536ISAAC19962,375 (W64-bit) -4,6875 (W32-bit)8-8288genellikle 40-256N/A8288(2006) İlk-döngüZayıf-İç-Durum-Türetme4,67×101240 (2001)MICKEY 2004 başları 80 Değişken (0 ila 80) 200 Diferansiyel Hata Saldırısı (2013) 232,5 (2013)MUGI1998-20021281281216N/A (2002)~282PANAMA19982256128?1216?Hash Çakışmaları (2001)282Phelix2004 başları8'e kadar (Wx86)256 + bir 128-bitlik tek seferlik anahtar128?Diferansiyel (2006)237Pike19940,9 x FISH (Wsoft)Çok büyükN/A (2004)N/A (2004)Py2004 başları2,68-2048?genellikle 40-256?648320Kriptanalitik Teori (2006)275Rabbit2003-Şub.3,7(WP3)-9,7(WARM7)12864512N/A (2006)N/A (2006)RC41987Etkileyici8-2048genellikle 40-25682064Shamir başlangıç-baytları anahtar türetme VEYA KPA213 VEYA 233Salsa202004 başları4,24 (WG4) -11,84 (WP4)128 + bir 64-bitlik tek seferlik anahtar512512 + 384 (anahtar+İV+indeks)Diferansiyel (2005)N/A (2005)Scream20024 - 5 (Wsoft)128 + bir 128-bitlik tek seferlik anahtar32?64-bit döngü fonksiyonuSEAL1997Çok hızlı (W32-bit)32?SNOW2003 başlarıÇok iyi (W32-bit)128 VEYA 25632SOBER-1282003128'e kadarMesaj Dövme2−6SOSEMANUK2004 başlarıÇok iyi (W32-bit)128128Trivium2004 başları4 (Wx86) - 8 (WLG)8080288Kaba kuvvet saldırısı (2006)2135Turing2000-20035,5 (Wx86)160VEST200542 (WASIC) -64 (WFPGA)Değişkengenellikle 80-256Değişkengenellikle 80-256256 - 800N/A (2006)N/A (2006)WAKE1993Hızlı8192CPA & CCASavunmasızKesintisizŞifrelemeOluşturulmaTarihiHız(döngü/byte)(bit)SaldırıEtkiliAnahtar-Boyutuİlklendirme vektörüDahiliDurumEn Çok BilinenHesaplamaKarmaşıklığı

Ek bilgiler
 Amerika Birleşik Devletleri Ulusal Güvenlik Ajansı belgelerinde bazen birleştirici-tip algoritmalar ("combiner-type algorithms") terimi kullanılmakta ve bir sözde rastgele sayı üreteci (PRNG) ile bir düz metin akışını birleştirmek için bazı işlevler kullanan algoritmalara atıfta bulunulmaktadır.

Ayrıca bakınız
 eSTREAM
 Linear-feedback shift register (LFSR)
 Nonlinear-feedback shift register (NLFSR)

Notlar

Kaynakça
 .

 Christof Paar, Jan Pelzl, "Stream Ciphers", Chapter 2 of "Understanding Cryptography, A Textbook for Students and Practitioners". (companion web site contains online cryptography course that covers stream ciphers and LFSR), Springer, 2009.

Dış bağlantılar
 RSA technical report on stream cipher operation.
 Cryptanalysis and Design of Stream Ciphers (thesis by Hongjun Wu).
 Analysis of Lightweight Stream Ciphers (thesis by S. Fischer).

Kategori:Şifreler
Kategori:Şifreleme
Kategori:Kriptoloji
Kategori:Kriptografik algoritmalar