MD5 (Message Digest , Mesaj Özet)

Yazan : Şadi Evren ŞEKER

MD5, şifreleme sistemlerinde kullanılan 128 bitlik bir hash fonksiyonudur. Sistem yapısal oarak tam güvenli değildir ancak internetin yoğun kullanımıyla birlikte hızlı çalışan bu algoritmaya ihtiyaç da artmıştır.

MD5 basitçe istenilen boyuttaki bir mesajı 128 bit uzunluğunda bir sonuç üretir. Üretilen bu mesajı 32 bit uzunluğudan 4 eşit parçaya ayıracak olursak ve bu parçaların her birisine A, B, C ve D isimleri verilirse MD5 algoritmasının çalışması aşağıdaki şekilde gösterileblir:
MD5 Çalışması

Yukarıdaki şekildeki fonksiyonların açılımları aşağıdaki şekilde verilmiştir:

F(X,Y,Z)  = ( X Λ Y ) V ( ¬X Λ Z ),  g := i

G(X,Y,Z) = ( X Λ Z ) V ( Y Λ ¬Z ), g := (5×i + 1) mod 16

H(X,Y,Z) = X ^ Y ^ Z,  g := (3×i + 5) mod 16

I(X,Y,Z) = Y ^ ( X V  ¬Z ), g := (7×i) mod 16



Yazan : Ferhat Saatçi
Ronald Rivest tarafından 1991 yılında MD4 kriptografik dügüm fonksiyonunun yerine geliştirilen MD5,128-bit’lik (16byte) düğüm değeri şifreleme algoritmalarına yardımcı olmak amacıyla kullanılabilecek bir HASH algoritmasıdır.

1996 yılında Hans Dobbertin MD5’in sıkıştırma fonksiyonunda bir çakışmanın olduğunu bulması kritoğrafi uzmanlarını SHA-1,RIPEMD160 gibi algoritmalara yöneltsede,kırlabilirliği ispat edilemediğinden günümüzde dahi veri güvenliğinin kontrolünü sağlamaktadır.

Hash Kodlarındaki Genel Yapı


Hash kodlarının genel yapısı

IV = başlangıç değeri , CV = Değişken , Yi = i. Giriş bloğu , f = sıkıştırma fonksiyonu

L = giriş bloklarının sayısı , n = hash kodun uzunluğu , b = giriş bloklarının uzunluğu

Hash fonksiyonu bir mesaj alıp her biri ‘ b ‘ uzunluğında olan ‘L’ tan e bloğa böler. Hash algoritması n-bit ve b- bit leri girdi olarak kabul eden bir f fonksiyouna sahiptir.f fonksiyonu cıktı olarak n bitini verir.Fonksiyonda genellikle b>n olmaktadır.Aşağıda F fonksiyonu açıklanmıştır.

Fonksiyonda mesaj M ile gösterilmiştir ve Y(0) dan Y(L-1)’ e kadar bloklara bölünmüştür.

MD5 Algoritmasındaki Genel Yapı ve Encryption(Şifreleme)


MD5 düğümleri tipik olarak 32-rakam hexadecimal numaralar olarak betimlenir.MD5 algoritması boyutu fark etmeksizin veriyi girdi olarak kabul edebilir ve sonuçta 128 bit uzunluğunda bir çıktı elde eder.

MD5, veriyi 512 bitlik bloklara ayırır ve herbir blok için aynı işlem uygulanır.Algoritmada şifrelenecek olan veri yani mesaj 512 bitin katlarından(şekilde L x 512 bits olarak gösterilmiştir) olmalıdır.

Padding işlemi şu şekilde çalışır:

Verinin sonuna bir adet 1 ve geri kalanlar için ise 0 eklenerek (10000000000 …)512 bitin en yakın katından 64 bit eksik olana kadar devam eder. Sıfırlanmayan bu 64 bit verinin orijinal uzunluğunu(yukarıdaki şekilde Message Length K mod 2^64) belirtmekte kullanılır. (Orijinal Mesaj Length = 448 ( mod 512))

Mesaj ister 512 bitin katı olsun ister olmasın veriler ekleme(padding) işlemine tabi tutulur.Örnek olarak mesajımızın 448 bit olduğu düşünülürse 512 bit eklenerek 960 bit elde edilir.Böylelikle ‘Orijinal Mesaj Length = 448 (mod 512)’ gerçeklenmiş olur.

Padding işlemi yapıldıktan sonra algoritma ,L tane 512 bitlik blogu işler ve çıktı olarak 128 bitlik özet kısım elde edilir.

Algoritmanın en önemli kısmı sıkıştırma fonksiyonunun olduğu kısımdır.

Buradaki (F-G-H-I) belirli bazı işlemlerdir ve bunlar her adımda (16step) gerçeklenerek sonuç elde edilir.Bu işlemlerin her bir adım için gerçeklendiği düşünülürse toplamda 4 x 16 = 64 işlem gerçekleşir.Bukadar işlemin gerçekleşmesinin sebebi simetrikliği engelleme(farkli sonuçlar üretebilme)isteğinden doğar.


Şekiller sırasıyla XOR,AND,OR,NOT işlemlerini ifade etmektedir.

Başlangıçta değerleri sabit olan, A,B,C,D diye adlandırılan 32bitlik dört değisken bulunur ve bu değişkenlerin değerleri her 512 bitlik blok işleme girdiğinde değişir ve algoritma sonunda değerler yan yana geldiğinde 128 bitlik şifrelenmiş veri elde edilir.

A , B ,C , D = 32 bitlik değişkenler

F = yukarıda belirtilen F ,G ,H ,I işlemlerinden bir tanesi


= 32 bitlik değişkenlerin s bitlerinin sola dairesel kaydırımı


=

q’ inci 512 bitlik blok içindeki k’inci 32 bit mesaj

= K matrisindeki i’inci 32 bit


= mod 2^32

Kullanım Alanları

MD5 bir internet standartı olarak(RFC 1321)bir çok güvenlik uygulamasında kullanılmaktadır.Bunun yanında veri güvenliğinin kontrolü için de kullanılamaktadır.

MD5, Kullanıcı adı ve şifreyle giriş yapılan sitelerde ana makineye şifre gönderimi ve bütünlük (integrity) denetimi uygulamalarında kullanılabilir.

Decryption (Açılması)

Md5 tek yönlü bir algoritmadır ve geri dönüşümü yoktur.Kullanıcı adı ve Şifre uygulamaları örnek verlirse ,Şifre MD5 algoritmasından geçirilmiş halde saklandığı için, şifre çözülemez ve kullanıcı şifresini unuttuğu takdirde sistem eski şifreyi veremez ve kullanıcıya yeni şifre atanır.

Örneğin şifreniz ‘ferhat’ olsun .Bunun 32 karakterli encrypt edilmiş hali ‘900150983CD24FB0D6963F7D28E17F72’ iken decrypt edilmiş hali ‘4C36FA32C9D93A002C3E14CE038AA709’ olabilir.

Günümüzdeki bilgisayarlar kimi mesajları kırabiliyor.örneğin ‘ferhat’ kelimesinin kırılması kısa bir süre olabilirken ’13ewFK@M#f’ in kırılması yıllar alabiliyor.

Sonuç

MD5 algoritması bir önceki düğüm fonksiyonu olan MD4’e göre yavaş çalışmasına rağmen şifrelendirme sistemi çok daha karışık ve çözülmesi güçtür.

Buzamana kadar yapılmış saldırılara(Brute Force Saldırısı,Birthday Saldırıları(2^64) bakılarak MD5 yaralanabilir bir algortima olduğu anlaşılmıştır.En ciddi saldırıları BERSON,BOER VE BOSSLAERS,DOBBERTİN yapmıştır.

Yorumlar

  1. serbay

    iyi günler.md5 algoritmasını daha ayrıntılı açıklayabilirmisiniz.çünkü bildiğim kadarıyla algoritma hala çözülebilmiş değil.açıklarsanız sevinirim.

  2. iskender tosun

    Merhaba,
    Matematik’te bir fonksiyonun tersinin olması için bire bir ve örten olması gerekiyordu, MD5’le üretilen mesajlardan geriye dönüşün olmamasının sebebide bu temel prensibemi dayanmaktadır? md5 fonksiyonu yapı itibarıyla birebir ve örten bir fonksiyonmu olmuyor yoksa bire bir ancak örten olmayan bir fonksiyonmu oluyor?

    teşekkür ederim

  3. Şadi Evren ŞEKER Article Author

    MD5 ve diğer özetleme algoritmaları (message digest) birer özetleme fonksiyonu (hashing function) örneğidir. Bu anlamda sizin bahsettiğiniz tanım ve etki kümeleri (domain and range) arasındaki sayısallık açısından (cardinality), özetleme fonksiyonları (message digest) ve bir üyesi olarak MD5 algoritması çoktan teke (many-to-one) olarka sınıflandırılabilir. Yani pek çok farklı bilgi için fonksiyon tek bir sonuç üretmektedir.
    Bu anlamda veri güvenliğinde kullanılan bu tip fonksiyonlara tek yönlü fonksiyonlar (one way function veya trapdoor function) ismi verilmektedir.

    Yukarıdaki yazıya size fikir vermesi için aynı sonucu veren iki farklı mesaj bloğu ekliyorum. Bu iki mesaj bloğu da MD5 algoritması sonucunda aynı sonucu vermektedir. Bu duruma çakışma (collision) ismi verilir ve bütün özetleme fonksiyonlarında (hash function) yaşanan bir durumdur.

    Başarılar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir