Blowfish

Şuraya atla: kullan, ara

Hakkında

cryptography'de Blowfish , Bruce Schneier tarafından 1993 yılında tasarlanmış, çok sayıda (şifreleyici) cipher takımı ve şifreleme ürününe dahil olan; anahtarlanmış, benzer bir Block Cipher (öbek şifreleyici)dir. Blowfish ile ilgili olarak şu ana kadar etkin bir şifre çözme çözümlemesi(analysis) var olmasa da, artık, AES ya da Twofish gibi daha büyük boyutlu öbek şifreleyicilerine daha fazla önem verilmektedir.


Schneier Blowfish'i bir genel kullanım algoritması olarak, eskiyen DES'ın yerini alması için ve diğer algoritmalarla yaşanan sorunlara çözüm olarak tasarlamıştır. O zamanlarda, bir çok diğer tasarım lisanslı, patentle korunmakta ya da devlet sırrı olarak saklanmaktaydı. Schneier bunu şu şekilde ortaya koymaktadır :" Blowfish, patentsizdir ve tüm ülkelerde bu şekilde yer alacaktır. Algoritma genel kamusal alanda bulunmakta olup, herkes tarafından özgürce kullanılabilir."

Tasarımın belirgin özellikleri anahtar-bağımlı S-boxes ve oldukça karmaşık anahtar çizelgesini içerir.


Algoritma

Blowfish 64-bit öbek büyüklüğüne ve 32 bit'ten 448 bit'e kadar anahtar uzunluğuna sahiptir. 16-tur Feistel Cipher'dır ve anahtar-bağımlı S-boxes kullanır. Sabit S-boxes kullanan CAST-128 yapısına benzer.

Blowfish'in hareketi; Algoritma iki alt anahtar sırası (subkey array) tutar : 18-girişli P-sırası ve dört 256-girişli S-boxes. S-boxes 8-bit girdi kabul eder ve 32-bit çıktı oluşturur. P-sırasının bir girişi her turda kullanılır ve son turdan sonra veri tabanının her bir yarısı geri kalan kullanılmamış iki P-girişinden biri tarafından XOR'lanır.

F-işlevi. İşlev, 32-bit girdiyi, dört adet sekiz-bitlik çeyreğe böler ve çeyrekleri S-boxes'lara girdi olarak kullanır. Çıktılar modulo 232 a eklenir ve son 32-bit çıktıyı oluşturmak üzere XOR'lanır.

Blowfish bir Feistel ağı olduğundan, basitçe P17 XOR'layarak ve şifreleyici metin öbeğine P18 ile, daha sonra P-girişlerini ters sırayla kullanarak ters çevrilebilir.

Blowfish'in anahtar çizelgesi P-sıralarını ve S-box'ları, hiç bir belirgin şablon (pattern) içermeyen; pi sayısının hexadecimal (onaltılık) dijitlerinden türetilen değerlerle başlangıç konumuna getirerek başlar. Sonra, gizli anahtar, sırayla P-girişleri ile XOR'lanır (gerekirse anahtarı devrederek). 64-bit sıfır öbeği olduğu gibi algoritma ile şifrelenir. Sonuç şifreleyici metni P1 ve P2 nin yerini alır. Şifreleyici metin yeni alt anahtarlarla yeniden şifrelenir ve yeni şifreleyici metin P3 ve P4 yerini alır. Tüm P-sıraları ve S-box girişlerinin yerini alarak devam eder. Sonuçta, Blowfish şifreleme algoritması tüm alt anahtarları oluşturmak için 521 kez çalışacaktır - yaklaşık 4KB veri işlenmiş olur.



Blowfish Şifre Çözümü

2006 itibariyle Blowfish'in genel olarak bilinen etkin bir kriptanalizi mevcut değildir. 64 bit öbek büyüklüğü günümüzde çok kısa olarak düşünülse de; 232 den fazla veri tabanını şifrelemek doğumgünü saldırıları nedeniyle plaintext hakkında bilgi sızmasını başlatabilir. Buna rağmen, Blowfish şu ana kadar güvenli görünmektedir. Kısa öbek büyüklüğü, e-posta gibi rutin kullanıcı uygulamaları konusunda ciddi endişeler yaratmasa da, Blowfish veri arşivleme gibi büyük şifresiz metinler konusunda uygun olmayabilir.

1996'da Serge Vaudenay kırmak için 28r + 1 şifresiz metin gerektiren (r turların sayısını ifade eder) bir bilinen-şifresiz metin saldırısı keşfetti. Daha da fazlası, yalnızca 24r + 1 bilinen-şifresiz metinlerle aynı saldırılarla kırılabilecek bir weak key (zayıf anahtar) sınıfı buldu. Bu saldırı tam 16-tur Blowfish 'e karşı kullanılamadığından; Vaudenay Blowfish'in indirgenmiş-turlu bir türevini kullandı. Vincent Rijmen; doktora tezinde; dört turdan fazlasını kıramayan; ikincil-sıra diferansiyel saldırıyı sundu. Halen, tam 16-tur'u kırabilecek, brute-force search dışında bir yol bilinmemektedir.


2005'te Dieter Schmidt Blowfish anahtar çizelgesini araştırdı ve üçüncü ve dördüncü turlar için alt anahtarların ilk 64 bitlik kullanıcı anahtarından bağımsız olduğunu ortaya koydu. [1].

Uygulamada Blowfish

Blowfish, anahtar değiştirme dışında; geniş kullanımdaki en hızlı öbek şifreleyecilerden biridir. Her yeni anahtar metnin yaklaşık 4 KB'ını şifrelemek için ön-işleme (pre-processing) eşdeğeri gerektirir ki bu diğer öbek şifreleyicilerine kıyasla çok yavaştır. Bu, bazı uygulamalarda kullanımı engeller. Bi uygulamada, aslında bu bir faydadır: OpenBSD'de kullanılan parola-bozma (password-hashing) yöntemi Blowfish'ten türetilen yavaş anahtarlı bir algoritma kullanır; burada düşünce, gereken fazladan hesaba dayalı çabanın dictionary attack (sözlük saldırılarına) karşı koruma sağlamasıdır.

Bazı uygulamalarda, Blowfish, 4 kilobyte RAM dan biraz fazla, göreceli olarak büyük hafıza ayakizine sahiptir. Bu, eski daha küçük masaüstü ve diz üstü bilgisayarlar için bile bir sorun değildir, ancak, ilk smartcard (akıllı kartlar) gibi en küçük embedded systems 'lerde kullanımı engeller.

Blowfish herhangi bir patente konu değildir, bu nedenle herkesin özgürce kullanımına açıktır. Bu onun Cryptographic Software. (Şifresel Yazılımlar)da beğenirliğini artırmıştır.

Ayrıca Bakınız

Referanslar

  • Vincent Rijmen, "Cryptanalysis and design of iterated block ciphers", doctoral dissertation, October 1997.
  • Bruce Schneier, Description of a New Variable-Length Key, 64-bit Block Cipher (Blowfish). Fast Software Encryption 1993: 191-204 [2].
  • Bruce Schneier, The Blowfish Encryption Algorithm -- One Year Later, Dr. Dobb's Journal, 20(9), p. 137, September 1995 [3].
  • Serge Vaudenay, "On the weak keys of Blowfish," Fast Software Encryption (FSE'96), LNCS 1039, D. Gollmann, Ed., Springer-Verlag, 1996, pp. 27--32.

Dış Bağlantılar