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:
![]()
Yukarıdaki şekildeki fonksiyonların açılımları aşağıdaki şekilde verilmiştir:
F(X,Y,Z) = ( X Λ Y ) V ( ¬X Λ Z )
G(X,Y,Z) = ( X Λ Z ) V ( Y Λ ¬Z )
H(X,Y,Z) = X ^ Y ^ Z
I(X,Y,Z) = Y ^ ( X V ¬Z )
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.
« El Gamal Encryption ( El Cemal Şifrelemesi) | Ellipsel Eğri (Elliptic Curve) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'MD5 (Message Digest , Mesaj Özet)' isimli yazı 30 Apr 2008 tarihinde, saat: 22:13 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 860 defa okunmuştur.
Benzer yazıları Veri Güvenliği(Cryptography) kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Sıralama işleminiz poligonu...
- Şadi Evren ŞEKER: bahsettiğiniz sıralama algoritması...
- Abdurrahman ulusoy: merhaba hocam. gelişigüzel...
- Oguz Okutan: Merhaba hocam.. Fonksiyonlarda degere göre...
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
Yakın Yazılar
Mesaj Özetleri (Message Digests)
Anahtar Beyazlatma (Key Whitening)
Korunmuş Şifre Girişleri (Protected Password Login)
Güvenlik Saldırıları (Security Attacks)
Özetleme Fonksiyonları (Hash Function)
MD5 (Message Digest , Mesaj Özet)
Seçilmiş Açık Mesaj Saldırısı (Chosen Plaintext Attack)
Elektronik kod defteri şekli (Electronic Code Book Mode)
Bilinen Açık Mesaj Saldırısı (Known Plain Text Attack)
Sezar Şifrelemesi (Ceaser's Cipher, Shift Cipher, Kaydırma Şifrelemelesi)
Sezar Şifrelemesi (Ceaser's Cipher, Shift Cipher, Kaydırma Şifrelemelesi)
Sezar Şifrelemesi (Ceaser's Cipher, Shift Cipher, Kaydırma Şifrelemelesi)
Sezar Şifrelemesi (Ceaser's Cipher, Shift Cipher, Kaydırma Şifrelemelesi)
Sezar Şifrelemesi (Ceaser's Cipher, Shift Cipher, Kaydırma Şifrelemelesi)
Sezar Şifrelemesi (Ceaser's Cipher, Shift Cipher, Kaydırma Şifrelemelesi)
Sezar Şifrelemesi (Ceaser's Cipher, Shift Cipher, Kaydırma Şifrelemelesi)
Bağlantılar
[...] fazla bilgi için örneğin MD5 özetleme fonksiyonuna [...]
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.
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
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