twitter
    Find out what I'm doing, Follow Me :)

Blowfish Algoritması

Kullandığımız ağda verilerin gizliliğin sağlanması için veriler şifrelenmektedir. İki uç sistem arasında veri iletimi yapılacaksa veriyi gönderen tarafta veri şifrelenir , şifrelenen veri iletilir ve alan tarafta deşifreleme işlemi yapılarak veriye ulaşılır. 2 çeşit şifreleme yöntemi vardır : simetrik ve asimetrik şifreleme yöntemleri . (Şifreleme ile ilgili olarak önceki yazıya buradan ulaşabilirsiniz.)

Simetrik şifreleme yöntemlerinden biri olan Blowfish algoritmasının başlıca özellikleri şunlardır :

  1. Simetrik şifreleme kullanılır.
  2. Veri 64 bitlik bloklarar ayrılır.
  3. Her biri 32 bitlik olan 18 alt anahtardan oluşmaktadır.
  4. 4 adet S boxtan oluşan fonksiyon kullanılır.
  5. 16 kez tekrarlanır , bu adımlardan alt anahtarlarla XOR işlemi yapılır.

Gönderilecek veri ilk olarak 64 bitlik bloklara ayrılır. Her blok için şifreleme işlemi yapılarak bu işlemler sonucunda şifrelenmiş veri elde edilir. 
Açık metin olarak adlandırılan Plaintext(64 bitlik veri) 32 bitten oluşan 2 parçaya ayrılır. Left ve right olarak 2 parçaya bölünen plaintextin sol kısmı 1. alt anahtar olan P1 ile XOR işleminden geçirilir ve P' değeri elde edilir. Bu P' değeri de F fonksiyonuna gönderilir. Bu fonksiyondan çıkan değerle plaintextin sağ kısmı XOR işlemine sokulur. Buradan çıkan sonuç F2 sonraki adımda sol kısma , daha önce oluşturulan P' değeri de sağ kısma gelecek şekilde yer değiştirilir.Bu işlemler P16 üstü ve F16 üstü elde edilinceye kadar yapılır yani 16 kez tekrarlanır. Daha sonra kalan 2 alt anahtar aşağdaki şekilde gibi yer değiştirme işlemi yapılmadan uygulanır.


Şekildeki gibi P17 ve P18 alt anahtarları uygulanıncaya kadar işlemler tekrarlanır. 64 bitlik plaintext şifreli hale getirilir. Her 64 bitlik blok için aynı işlemler gerçekleştirilir.

Her biri 32 bitten oluşan 18 adet alt anahtarın bulunması ise şu şekilde gerçekleşmektedir :             
P dizisinin başlangıç elemanları olarak Pi sayısının ilk 3 rakamı hariç hexadecimal digitleri kullanılır. Daha sonra 128 bitlik gizli anahtarımız 32 bitten oluşan 4 parçaya bölünür. (K1,K2,K3,K4). Her bir parça da alt anahtarla XOR işleminden geçilir ve yeni P değerleri bulunur. Bu işlemden sonra da  0lardan oluşan veri Blowfish algoritmasına sokulur , algoritmadan dönen 64 bitlik değer 2 ye bölünür ve ilk olarak P(1) ve P(2) elde edilir. Bu veri daha sonra yine algoritmaya gönderilir, dönen değer 2 parçaya bölünür ve P(3) ve P(4) elde edilir bu işlem P(17) ve P(18) elde ediliniceye kadar devam eder.
                                                                                               
                                                             
F fonksiyonu içersinde 4 adet S box bulunmaktadır . Bu S boxlar ise P(17) ve P(18)in elde edildiği verinin tekrar algoritmaya gönderilmesinden oluşan sonuçtan ilk olarak S(0,0) ve S(0,1) elde edilir. Bu veri yine algoritmaya gönderilir ve elde edilen sonuçtan sırayla S boxların diğer elemanları bulunur. Bu işlem 4 S boxın elemanları bulununcaya kadar devam ettilir.

                                                    
F fonksiyonu ise aşagıdaki gibi kullanılmaktadır :

                                                  

BlowFish algoritması simetrik şifrelem yöntemi olduğundan yani , alıcı ve gönderici tarafta aynı anahtarlar kullanıldığından deşifrelemede aynı anahtarlar kullanılarak ters işlemler yapılır ve veri çözülür.

Blowfish algoritması 1993 yılında geliştirilmiştir , patentsiz ve ücretsizdir.

1 yorum:

Ahmet Başar dedi ki...

Güzel . Emeğe saygı :)

Yorum Gönder