MD5 (Message-Digest Algorithm 5), 1991 yılında Ronald Rivest tarafından geliştirilen ve uzun yıllar boyunca yaygın olarak kullanılan bir kriptografik hash fonksiyonudur. 128-bit (16 byte) sabit uzunlukta bir çıktı üretir ve başta veri bütünlüğü kontrolü, parola saklama ve dijital imzalar olmak üzere birçok alanda kullanılmıştır.
MD5'in Temel Özellikleri
-
Hızlıdır: Küçük ve büyük verilerde milisaniyeler içinde hash üretir.
-
Deterministik: Aynı girdi her zaman aynı çıktıyı verir.
-
Çıktı Uzunluğu: 32 karakterlik hexadecimal bir dize (ör:
d41d8cd98f00b204e9800998ecf8427e
).
MD5 Nasıl Çalışır?
MD5, girdiyi 512-bit'lik bloklara böler ve her blok üzerinde 4 tur işlem yapar. Bu işlemler:
-
Padding: Veri, 512-bit'in katı olacak şekilde doldurulur.
-
Buffer Initialization: 4 adet 32-bit register (A, B, C, D) başlangıç değerleri atanır.
-
Main Loop: Her blok için 64 adımda bitwise operasyonlar (AND, OR, XOR, NOT) ve modüler toplama yapılır.
-
Output: Son hash değeri, A, B, C, D registerlarının birleştirilmesiyle oluşturulur.
Örnek MD5 Hashleri
Girdi |
MD5 Çıktısı |
“mustafa” |
e5de81655caaea1616f2d5afe6cb3d23 |
"hello" |
5d41402abc4b2a76b9719d911017c592 |
"password" |
5f4dcc3b5aa765d61d8327deb882cf99 |
MD5'in Zafiyetleri ve Kırılması
1. Çarpışma (Collision) Saldırıları
-
Tanım: Farklı iki girdinin aynı hash değerini üretmesi.
-
2004'te Kırıldı: Xiaoyun Wang ve ekibi, pratik çarpışma saldırısı geliştirdi.
-
2008'de Daha Tehlikeli: SSL sertifikalarını sahtelemede kullanılabilecek yöntemler bulundu.
-
2012'de Flame Malware: Microsoft sertifikalarını taklit etmek için MD5 çarpışması kullandı.
2. Rainbow Table Saldırıları
-
MD5'in hızlı olması, rainbow table ile kolayca tersine çevrilebilmesine yol açar.
-
Örnek:
5f4dcc3b5aa765d61d8327deb882cf99
→ "password".
3. Brute-Force Dirençsizliği
-
GPU'lar ile saniyede milyarlarca MD5 hash'i kırılabilir.
MD5 Hala Kullanılıyor mu?
Güvenli Olmayan Kullanımlar
-
Parola Saklama: Kesinlikle kullanılmamalı (ör: eski forum veritabanları).
-
Dijital İmza/SSL: Çarpışma riski nedeniyle terk edildi.
-
Dosya Doğrulama: Checksum için kullanılsa bile SHA-256 tercih edilmeli.
Hala Kullanıldığı Yerler
-
Eski Yazılımlar: Bazı legacy sistemler (yaması yapılamayanlar).
-
Veri Bütünlüğü (Non-Critical): Örneğin, önbellek kontrolü.
MD5 vs. Modern Alternatifler
Kriter |
MD5 |
SHA-256 |
Argon2 |
Çıktı Uzunluğu |
128-bit |
256-bit |
Değişken |
Çarpışma Direnci |
Kırıldı |
Güvenli |
Güvenli |
Parola için Uygun mu? |
Hayır |
Hayır |
Evet |
Performans |
Çok Hızlı |
Hızlı |
Yavaş (Tasarımlı) |
*SHA-256 bile saltsız parola hashleme için uygun değildir. Argon2 veya bcrypt kullanın.
Sonuç: MD5'i Ne Yapmalı?
-
Yeni Projelerde ASLA Kullanmayın.
-
Eski Sistemlerde SHA-256 veya SHA-3'e Geçin.
-
Eğitim Amaçlı Kullanın: Kriptografi tarihini öğretmek için ideal bir örnek.
Kaynakça
-
Wang, X., & Yu, H. (2005). How to Break MD5 and Other Hash Functions. CRYPTO.
-
Stevens, M. (2012). MD5 Considered Harmful Today: Creating a Rogue CA Certificate.
-
NIST. (2012). Deprecation of SHA-1 and MD5.