İçeriğe atla

Blowfish

Blowfish, Bruce Schneier tarafından 1993 yılında tasarlanmış, çok sayıda şifreleyici ve şifreleme ürününe dahil olan; anahtarlanmış, simetrik bir Block Cipher (öbek şifreleyici)dir. Blowfish ile ilgili olarak şu ana kadar etkin bir şifre çözme analizi var olmasa da, artık AES ya da Twofish gibi daha büyük ebatlı ö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ı.

Bruce 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 öbeğinin 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 2^32 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.

Şifre Çözümü

2006 itibarıyla 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; 2^32den fazla veri öbeğini ş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]

Pratikte 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. Bir 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.

Kaynakça

  • http://tr.opensuse.org/Blowfish#Hakk.C4.B1nda 4 Temmuz 2008 tarihinde Wayback Machine sitesinde arşivlendi.
  • Vincent Rijmen, "Cryptanalysis and design of iterated block ciphers", doctoral dissertation, Ekim 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, Eylül 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.
  1. ^ "Arşivlenmiş kopya". 29 Eylül 2007 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Temmuz 2007. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">AES</span> Şifreleme standartı

AES, elektronik verinin şifrelenmesi için sunulan bir standarttır. Amerikan hükûmeti tarafından kabul edilen AES, uluslararası alanda da defacto şifreleme (kripto) standardı olarak kullanılmaktadır. DES'in yerini almıştır. AES ile tanımlanan şifreleme algoritması, hem şifreleme hem de şifreli metni çözmede kullanılan anahtarların birbiriyle ilişkili olduğu, simetrik-anahtarlı bir algoritmadır. AES için şifreleme ve şifre çözme anahtarları aynıdır.

Kriptografide çalışma kipleri, bir blok şifrenin tek bir anahtar altında güvenli bir şekilde tekrarlı kullanımına olanak veren yöntemlerdir. Değişken uzunluktaki mesajları işlemek için veriler ayrı parçalara bölünmelidir. Son parça şifrenin blok uzunluğuna uyacak şekilde uygun bir tamamlama şeması ile uzatılmalıdır. Bir çalışma kipi bu bloklardan her birini şifreleme şeklini tanımlar ve genellikle bunu yapmak için ilklendirme vektörü (IV) olarak adlandırılan rastgele oluşturulmuş fazladan bir değer kullanır.

Kriptografide blok şifreleme, blok olarak adlandırılmış sabit uzunluktaki bit grupları üzerine simetrik anahtar ile belirlenmiş bir deterministik algoritmanın uygulanmasıdır. Blok şifreleme birçok kriptografik protokol tasarımının önemli temel bileşenlerindendir ve büyük boyutlu verilerin şifrelemesinde yaygın biçimde kullanılmaktadır.

<span class="mw-page-title-main">Üçlü DES</span>

Üçlü DES , 1978 yılında IBM tarafından geliştirilmiş olan bir şifreleme algoritmasıdır. Kaba Kuvvet(Brute Force) saldırılarına karşı koymakta zorlanan DES(Data Encryption Standart, Veri Şifreleme Standardı) algoritmasının üzerine geliştirilmiştir. Öncelikle DES algoritmasının en zayıf noktası olan S-Kutuların(S-Boxes) açıkları giderildi. Ardından bu algoritma art arda üç defa işleme konarak, 3DES algoritması oluşturuldu.

Kriptografide anahtar beyazlatma, yinelenen bir blok şifrenin güvenliğini arttırmaya yönelik bir tekniktir. Verileri anahtarın parçalarıyla birleştiren adımlardan oluşur.

Kriptografide, IBM (ABD) için çalışırken öncü araştırmalar yapan Almanya doğumlu fizikçi ve kriptograf Horst Feistel'in ismiyle anılan Feistel şifresi blok şifrelerin yapımında kullanılan simetrik bir yapıdır; aynı zamanda Feistel ağı olarak da bilinir. Blok şifreler, DES(Data Şifreleme Standardı) dahil, büyük oranda bu şemayı kullanır. Feistel yapısı, şifreleme ve şifre çözme işlemlerinin çok benzer olması, hatta bazı durumlarda aynıdır, sadece anahtar sırasının tersine çevrilmesini gerektirme avantajına sahiptir. Bu nedenle, böyle bir şifreyi uygulamak için gereken kod veya devrenin büyüklüğü neredeyse yarıya inmiştir.

<span class="mw-page-title-main">SP ağı</span>

Kriptografide, SP-network ya da koyma-değiştirme ağı(SPN), AES (Rijndael), 3-Way, Kuznyechik, PRESENT, SAFER, SHARK ve Square gibi gibi blok şifreleme algoritmalarında kullanılan bir dizi bağlantılı matematiksel işlemdir.

Bcrypt, Niels Provos ve David Mazières tarafından Blowfish şifreleme yöntemi esas alınarak geliştirilmiş ve ilk kez USENIX’te, 1999 yılında sunulmuş bir parola özet fonksiyonudur. Rainbow table saldırılarına karşı salt kullanmasının yanı sıra adaptif bir fonksiyon olma özelliğine sahiptir. İterasyon sayacı arttırılarak yavaşlatılabilir ve bu sayede kaba kuvvet saldırılarına karşı dirençli kalabilmektedir.

<span class="mw-page-title-main">Simon (şifreleme)</span>

Simon, Haziran 2013'te Ulusal Güvenlik Ajansı (NSA) tarafından halka açık bir şekilde yayınlanmış bir hafif blok şifreleme ailesidir. Simon, donanım uygulamaları için optimize edilmişken, kardeş algoritması Speck, yazılım uygulamaları için optimize edilmiştir.

Kriptografide, biçim korumalı şifreleme, çıktı ve giriş aynı formatta olacak şekilde şifreleme anlamına gelir. "Biçim" in anlamı değişir. Biçimin anlamı için tipik olarak sadece sonlu alanlar tartışılır, örneğin:

<span class="mw-page-title-main">Speck (şifreleme)</span> şifreleme

Speck, Haziran 2013'te Ulusal Güvenlik Ajansı (NSA) tarafından halka açık bir şekilde yayınlanmış bir blok şifreleme ailesidir. Speck, yazılım uygulamaları için optimize edilmişken, kardeş algoritması Simon, donanım uygulamaları için optimize edilmiştir. Speck bir add-rotate – xor (ARX) şifresidir.

<span class="mw-page-title-main">RC5</span>

Kriptografide RC5, basitliği ile dikkat çeken simetrik - anahtar blok şifresidir. 1994 yılında Ronald Rivest tarafından tasarlanmıştır. RC, "Rivest Cipher" veya bir başka seçenek olarak "Ron's Code" anlamına gelmektedir. Gelişmiş Şifreleme Standardı(AES) adayı RC6 ve RC5 blok şifrelerine dayanıyordu.

<span class="mw-page-title-main">XTEA</span>

XTEA, kriptografide TEA'daki eksikleri tamamlamak için oluşturulmuş bir blok şifredir. XTEA tasarımcıları, Cambridge Bilgisayar Laboratuvarı'ndan David Wheeler ve Roger Needham’dır. Bu tasarıma ait algoritma, Needham ve Wheeler tarafından 1997 yılında herhangi bir patente sahip olmadığından teknik olarak bir raporda sunulmuştur.

<span class="mw-page-title-main">GOST (blok şifresi)</span>

GOST 28147-89 standardında tanımlanan GOST blok şifresi (Magma), blok boyutu 64 bit olan bir Sovyet ve Rus hükûmeti standardı simetrik anahtar blok şifresidir. 1989'da yayınlanan orijinal standart, şifreye herhangi bir isim vermemiştir, ancak standardın en son revizyonu olan GOST R 34.12-2015, bunun Magma olarak adlandırılabileceğini belirtir. GOST karma işlevi bu şifreye dayanmaktadır. Yeni standart ayrıca Kuznyechik adlı yeni bir 128 bitlik blok şifrelemeyi de belirtir.

<span class="mw-page-title-main">RC6</span>

Kriptografide RC6, RC5'ten türetilen simetrik bir anahtar bloğu şifresidir. Gelişmiş Şifreleme Standardı AES yarışmasının gerekliliklerini karşılamak için Ron Rivest, Matt Robshaw, Ray Sidney ve Yiqun Lisa Yin tarafından tasarlanmıştır. Algoritma bu yarışmada beş finalistten biriydi ve NESSIE ve CRYPTREC projelerine de gönderilmişti. RSA Security'nin patenti olan tescilli bir algoritmadır. Yapısal olarak basit ve günümüzde hala güvenli olarak nitelendirilmektdir.

<span class="mw-page-title-main">Twofish</span> Blok şifreleme algoritması

Kriptografide Twofish, 128 bit ve 256 bite kadar anahtar boyutlarına sahip simetrik bir anahtar blok şifresidir. Advanced Encryption Standard yarışmasının beş finalistinden bir tanesiydi, ancak standardizasyon için seçilmedi. Twofish, Blowfish'in önceki blok şifrelesi ile ilgilidir.

Kriptografide, bilinir anahtarlı ayırt edici saldırı, simetrik/bakışımlı şifrelemelere karşı bir saldırı modelidir; böylece anahtarı bilen bir saldırgan, düz metinden şifreleme metnine dönüşümün rastgele olmadığı şifrelemede yapısal bir özellik bulabilir. Böyle bir dönüşümün ne olabileceğine dair ortak bir biçimsel tanım yoktur. Seçilmiş anahtarlı ayırt edici saldırı, saldırganın bu tür dönüşümleri tanıtmak için bir anahtar seçebileceği kuvvetle ilişkilidir.

Bu, bilgisayar şifreleme algoritmalarının herkese açık sürümlerinin veya tanıtımlarının bir zaman çizelgesidir.

Kriptografide Lucifer, Horst Feistel ve IBM'deki meslektaşları tarafından geliştirilen en eski sivil blok şifrelerin birçoğuna verilen addı. Lucifer, Veri Şifreleme Standardının doğrudan öncüsüydü. Alternatif olarak DTD-1 olarak adlandırılan bir sürüm, 1970'lerde elektronik bankacılık için ticari kullanım gördü.

Kriptografide bir döngü, çevrim, tur veya döngü fonksiyonu algoritma içinde birçok kez tekrarlanan (yinelemeli) temel bir dönüşümdür. Büyük bir algoritmik işlevi döngülere bölmek hem uygulamayı hem de kriptanalizi basitleştirir.