İçeriğe atla

Dizi şifresi

Vikipedi, özgür ansiklopedi
Cep telefonu konuşmalarını şifrelemek için kullanılan LFSR tabanlı bir kesintisiz şifreleme olan A5/1'deki anahtar dizisi (keystream) üretecinin çalışması.

Kriptografide, bir kesintisiz şifreleme[1], dizi şifresi veya akış şifresi (İngilizcestream 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:

  1. 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.
  2. 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]
Bir yaklaşım, n adet LFSR'yi paralel olarak kullanmak ve bunların çıkışlarını n girişli ikili Bool fonksiyonu (F) kullanarak birleştirmektir.

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ü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.

RC4, en yaygın kullanılan akış şifresi tasarımlarından biridir.

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ığı

Ayrıca bakınız

[değiştir | kaynağı değiştir]
  1. ^ "kesintisiz şifreleme". Akademik Bilim Terimleri Sözlüğü. TÜBA. 30 Nisan 2024 tarihinde kaynağından arşivlendi. 
  2. ^ 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. 
  3. ^ "Do the ChaCha: Better mobile performance with cryptography". 23 Şubat 2015. 10 Mart 2015 tarihinde kaynağından arşivlendi. 
  4. ^ 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. 
  5. ^ 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. 
  6. ^ 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. 
  7. ^ 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. 

Dış bağlantılar

[değiştir | kaynağı değiştir]