İleti Özümleme Algoritmaları
Önceki İleti Özeti NASIL Sonraki
İleti Özümleme Algoritmaları
Bugüne kadar MD işlevi için bir çok algoritma tasarlanmıştır, fakat bunlardan sadece bir kısmı yukarıda sıralanan özellikleri birarada barındırdığından genel kabul görmüşlerdir. Bu algoritmaların başta gelenleri md5 (message digest 5) ve sha'dır (secure hash algorithm).
MD5 (Message Digest 5)
MD5, Ron Rivest tarafıdan 1992 yılında tasarlanmış bir MD algoritmasıdır. Ron Rivest, yine kendi tasarladığı MD4 algoritmasındaki bir takım zayıflıkları gidermiş ve günümüzde sıkça kuallanılan MD5 algoritması ortaya çıkmıştır. MD5, sonsuz uzunlukta veriyi girdi olarak kabul edebilir ve sonuçta 128 bit uzunluğunda bir çıktı üretir. Kısaca algoritmanın nasıl işlediğine bakacak olursak:
  • MD5, veriyi 512 bitlik bloklara ayırır ve her bir blok üzerinde aynı işlem uygulanır.
  • Üzerinde işlem yapılacak verinin 512 bitin katları olması gerekmektedir, fakat gerçek verimiz bu özelliği sağlamayabilir. Bu sorunu çözmek için ekleme (padding) işlemi uygulanır (gerçek verimiz 512 in katı olsa dahi ekleme yapılır!).
    Ekleme işleminde şu kural gözetilir: Verinin uzunluğu 512 bitin en yakın katından 64 eksik olacak şekilde, verinin sonuna bir adet 1 ve geri kalanlar için ise 0 eklenir. Bu 64 bitlik fark verinin uzunluğunu belirtmekte kullanılır.
    Bir örnekle açıklayacak olursak; diyelim verimiz 300 bit uzunlukta olsun. Bunu 448 bite (512-64) tamamlamız gerekmektedir. Dolayısı ile 301. bit olarak 1 ve geri kalan 147 tane bit için ise 0 ataması yaparız. Elimizde şu anda 448 bit var. Gerçek verimizin uzunluğu 300 bit idi ve bunuda ikilik tabanda 64 bit ile ifade edip 448 bitlik verimize ekleriz. Böylece 512-bitlik yeni oluşturduğumuz veri üzerinde MD5 algoritmasını uygulayabiliriz.
  • Ekleme işleminden sonra, MD5 veriyi işlemeye başlar. Ana döngü Şekil 10.1'de görülmektedir.
    Şekil 10.1. MD5 Ana Döngüsü
    Döngünün başlangıcında 32 bitlik dört tane (A,B,C,D) değişken bulunur. Başlangıçta bunların değeri sabittir ve her 512 bitlik bloğu işleme soktukça bu değişkenlerin değerleri değişir ve en sondaki bloğuda işledikten sonra elde ettiğimiz A,B,C ve D değişkenlerinin değerlerini yanyana dizdiğimizde (A-B-C-D) 128 bitlik MD sonucumuzu elde etmiş oluruz.
    Burada 4 adım (F-G-H-I) göze çarpmaktadır. Her adımın önceden tanımlı ve kendisine özgü birer işlevi bulunmaktadır ve bu işlevler her adımda 16 kez çağırılarak elde edilen sonuç bir sonraki adıma iletilir. Yani her bir 512 bitlik blok için MD5 algoritması 4 adım * 16 işlem = 64 adet işlem yapmaktadır. Bu kadar fazla adımın amacı simetrikliği engelleyip farklı girdiler için farklı sonuçlar üretebilme özelliğini sağlayabimektir. Aşağıda her adımda kullanılan işlevler gösterilmiştir.
    Her adımda 16 kez FF işlevi hesaplanır:
    from (j = 0 to 15)
            FF (a, b, c, d, Mj, s, ti)
    Burada:
    i: adım numarası
    FF (a, b, c, d, Mj, s, ti) => a = b + ((a + F(b, c, d) + Mj + ti) <<< s)
    1. adım için  F(X, Y, Z) = (X and Y) or ((not X) and Z)
    2. adım için  F(X, Y, Z) = (X and Z) or (Y and (not Z))
    3. adım için  F(X, Y, Z) = X xor Y xor Z
    3. adım için  F(X, Y, Z) = Y xor (X or (not Z))
    
SHA (Secure Hash Algorithm)
NİST (National Institute of Standards and Technology) ve NSA (National Security Agency) kuruluşlarının ortak çalışmaları sonucunda 1994 yılında Sayısal İmza Standardında (DSA-Digital Signature Standard) kullanılmak üzere tasarlanmış bir algoritmadır. MD5'le benzerlik göstermektedir. MD5 ile karşılaştıracak olursak;
MD5 - SHA Karşılaştırması
  • MD5'in çıktısı 128 bit iken, SHA'nın çıktısı 160 bittir. Yani MD5'te 4 adet 32 bitlik değişken kullanılırken, SHA'da 5 adet 32 bitlik değişken kullanılır.
  • Her ikiside 512 bitlik bloklar üzerinde işlem yaparlar.
  • SHA'da ekleme (padding) işlemi, MD5'teki ile aynı şekilde yapılır.
  • SHA'da da her 512 bitlik blok için 4 adımda işlemler yapılır, fakat bir farkla: MD5'de her adımda önceden tanımlı işlevlerin kullanımı 16 kez tekrarlanırken, bu sayı SHA'da 20 kezdir.
  • SHA girdi olarak maksimum 264-1 uzunluğunda veriyi kabul eder. Bunu yanında MD5 için böyle bir kısıtlama yoktur.
  • SHA ürettiği 160 bitlik sonuç ile brute-force (bütün olası sonuçların denenmesi ile gerçekleştirilir) ataklara karşı daha dayanıklıdır.
Diğerleri
MD5 ve SHA'nın yanında daha birçok MD algoritması tasarlanmıştır. Bunlardan bazıları MD2, MD4, Haval, Ripe-MD, Snefru, N-Hash'dır.
Önceki Üst Ana Başlık Sonraki
MD Nedir? Başlangıç Uygulamalar
Bir Linux Kitaplığı Sayfası