Dizi şifresi
Kriptografide, bir kesintisiz şifreleme[1], dizi şifresi veya akış şifresi (İngilizce: stream cipher) 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
[değiştir | kaynağı değiştir]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.[2] 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.[kaynak belirtilmeli]
Akış şifrelerinin türleri
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]İ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ı
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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;[3], 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ı
[değiştir | kaynağı değiştir]Kesintisiz Şifreleme |
Oluşturulma Tarihi |
Hız (döngü/byte) |
(bit) | Saldırı | |||
---|---|---|---|---|---|---|---|
Etkili Anahtar-Boyutu |
İlklendirme vektörü | Dahili Durum |
En Çok Bilinen | Hesaplama Karmaşıklığı | |||
A5/1 | 1989 | Ses (Wphone) | 54 | 114 | 64 | Aktif KPA VEYA KPA Zaman-Bellek Ödünleşimi |
~2 saniye VEYA 239,91 |
A5/2 | 1989 | Ses (Wphone) | 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 korelasyon saldırısı.[4] |
280 resp. 2128 for L ≤ 244. |
CryptMT | 2005 | ? | Değişken | 19968'e kadar | 19968 | — (2008) | — (2008) |
Crypto-1 | 1994 başları | ? | 48 | 16 | 48 | Aktif KPA (2008) | 40 ms VEYA 248 (2008)[5] |
E0 | 1999 başları | ? | Değişken (genellikle 128) |
4 | 132 | KPA (2005) | 238 (2005)[6] |
FISH | 1993 | Oldukça Hızlı (Wsoft) | Çok büyük | ? | ? | KPA | 211 |
Grain | 2004 başları | Hızlı | 80 | 64 | 160 | Anahtar Türetme | 243 |
HC-256 | 2004 başları | 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-döngü Zayıf-İç-Durum-Türetme |
4,67×101240 (2001) |
MICKEY | 2004 başları | ? | 80 | Değişken (0 ila 80) | 200 | Diferansiyel Hata Saldırısı (2013) | 232,5 (2013)[7] |
MUGI | 1998-2002 | ? | 128 | 128 | 1216 | N/A (2002) | ~282 |
PANAMA | 1998 | 2 | 256 | 128? | 1216? | Hash Çakışmaları (2001) | 282 |
Phelix | 2004 başları | 8'e kadar (Wx86) | 256 + bir 128-bitlik tek seferlik anahtar | 128? | ? | Diferansiyel (2006) | 237 |
Pike | 1994 | 0,9 x FISH (Wsoft) | Çok büyük | ? | ? | N/A (2004) | N/A (2004) |
Py | 2004 başları | 2,6 | 8-2048? genellikle 40-256? |
64 | 8320 | Kriptanalitik Teori (2006) | 275 |
Rabbit | 2003-Şub. | 3,7(WP3)-9,7(WARM7) | 128 | 64 | 512 | N/A (2006) | N/A (2006) |
RC4 | 1987 | Etkileyici | 8-2048 genellikle 40-256 |
8 | 2064 | Shamir başlangıç-baytları anahtar türetme VEYA KPA | 213 VEYA 233 |
Salsa20 | 2004 başları | 4,24 (WG4) - 11,84 (WP4) |
128 + bir 64-bitlik tek seferlik anahtar | 512 | 512 + 384 (anahtar+İV+indeks) | Diferansiyel (2005) | N/A (2005) |
Scream | 2002 | 4 - 5 (Wsoft) | 128 + bir 128-bitlik tek seferlik anahtar | 32? | 64-bit döngü fonksiyonu | ? | ? |
SEAL | 1997 | Çok hızlı (W32-bit) | ? | 32? | ? | ? | ? |
SNOW | 2003 başları | Çok iyi (W32-bit) | 128 VEYA 256 | 32 | ? | ? | ? |
SOBER-128 | 2003 | ? | 128'e kadar | ? | ? | Mesaj Dövme | 2−6 |
SOSEMANUK | 2004 başları | Çok iyi (W32-bit) | 128 | 128 | ? | ? | ? |
Trivium | 2004 başları | 4 (Wx86) - 8 (WLG) | 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 | CPA & CCA | Savunmasız |
Kesintisiz Şifreleme |
Oluşturulma Tarihi |
Hız (döngü/byte) |
(bit) | Saldırı | |||
Etkili Anahtar-Boyutu |
İlklendirme vektörü | Dahili Durum |
En Çok Bilinen | Hesaplama Karmaşıklığı |
Ek bilgiler
[değiştir | kaynağı değiştir]- 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
[değiştir | kaynağı değiştir]Notlar
[değiştir | kaynağı değiştir]- ^ "kesintisiz şifreleme". Akademik Bilim Terimleri Sözlüğü. TÜBA. 30 Nisan 2024 tarihinde kaynağından arşivlendi.
- ^ Deane, Arthur; Kraus, Aaron (2021). "Chapter 3: Domain 3: Security Architecture and Engineering". The Official (ISC)2 CISSP CBK Reference (6. bas.). Hoboken, New Jersey: John Wiley & Sons, Inc. s. 232. ISBN 978-1-119-78999-4.
- ^ "Do the ChaCha: Better mobile performance with cryptography". 23 Şubat 2015. 10 Mart 2015 tarihinde kaynağından arşivlendi.
- ^ Rainer Göttfert & Berndt M. Gammel (2007). "On the frame length of Achterbahn-128/80" (PDF). Information Theory Workshop (ITW). 19 Temmuz 2011 tarihinde kaynağından (PDF) arşivlendi.
- ^ Garcia, Flavio D.; de Koning Gans, Gerhard; Muijrers, Ruben; van Rossum, Peter; Verdult, Roel; Schreur, Ronny Wichers; Jacobs, Bart (4 Ekim 2008). "Dismantling MIFARE Classic" (PDF). 13th European Symposium on Research in Computer Security (ESORICS 2008), LNCS, Springer. 23 Şubat 2021 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 25 Haziran 2022.
- ^ Lu, Yi; Meier, Willi; Vaudenay, Serge (2005). "The Conditional Correlation Attack: A Practical Attack on Bluetooth Encryption". Advances in Cryptology – CRYPTO 2005 (PDF). Crypto 2005. Lecture Notes in Computer Science. 3621. Santa Barbara, California, USA. ss. 97-117. CiteSeerX 10.1.1.323.9416 $2. doi:10.1007/11535218_7. ISBN 978-3-540-28114-6. 18 Ocak 2024 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 30 Nisan 2024.
- ^ Banik, Subhadeep; Maitra, Subhamoy; Sarkar, Santanu (2013). "A Differential Fault Attack on MICKEY 2.0". Cryptology ePrint Archive. 15 Nisan 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 30 Nisan 2024.
Kaynakça
[değiştir | kaynağı değiştir]- Matt J. B. Robshaw (1995), Stream Ciphers Technical Report TR-701, version 2.0 (PDF), RSA Laboratories.
- Beth, Thomas; Piper, Fred (1985). The Stop and Go Generator (PDF). EUROCRYPT '84. ss. 88-92. doi:10.1007/3-540-39757-4_9 . 29 Mart 2019 tarihinde kaynağından arşivlendi (PDF).
- 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.