MD5 Hash Oluşturucu
The quick brown fox jumps over the lazy dog metninin MD5 hash’i 9e107d9d372bb6826bd81d3542a419d6’dır. MD5, herhangi bir girdiden sabit 128-bit çıktı (32 hex karakter) üretir. Hızlıdır, yaygın olarak desteklenir ve 2004’ten beri güvenlik amaçları için kriptografik olarak kırıktır.
Hash Sonucu
9e107d9d372bb6826bd81d3542a419d6
Bunu herhangi bir yerde doğrulayabilirsiniz:
# Linux / macOS
echo -n "The quick brown fox jumps over the lazy dog" | md5sum
# macOS alternatifi
echo -n "The quick brown fox jumps over the lazy dog" | md5
# Python
import hashlib
hashlib.md5(b"The quick brown fox jumps over the lazy dog").hexdigest()
# Node.js
const crypto = require('crypto');
crypto.createHash('md5').update('The quick brown fox jumps over the lazy dog').digest('hex');
echo üzerindeki -n bayrağı, sondaki yeni satırı bastırır. Bu olmadan, farklı bir string hash’lersiniz ve farklı bir sonuç alırsınız.
MD5 Neden Kriptografik Olarak Kırıktır
Temel saldırı bir çarpışmadır: aynı MD5 hash’ini üreten iki farklı girdi. Xiaoyun Wang’in 2004 makalesi bunun makul miktarda hesaplama ile başarılabileceğini gösterdi. 2008’de saldırı, bir araştırmacı ekibinin bir Sertifika Otoritesi sertifikasında tahrifat yapmak için kullanabileceği kadar pratiktir. MD5’te çarpışan bir çift sertifika imzalama isteği oluşturdular, meşru bir CA’ya birini imzalattılar ve ayrıca hazırladıkları kötü amaçlı sertifikayı da kapsayan geçerli bir imzaya sahip oldular. Bu, herhangi bir alan adı için güvenilir SSL sertifikaları vermelerine izin verdi.
Flame kötü amaçlı yazılımı 2012’de, kötü amaçlı Windows güncellemelerinin Microsoft tarafından imzalanmış gibi görünmesini sağlamak için aynı tekniği kullandı. Çarpışma bir küme üzerinde hesaplandı, ancak teknik kanıtlanmıştı.
Bunun Pratikte Anlamı
MD5 çarpışması, seçilmiş önekli bir çarpışmadır: bir saldırgan, her iki önekin de saldırganın kontrolü altında olduğu, aynı MD5 hash’ine sahip iki belge hazırlayabilir. Bu, sertifika tahrifatını mümkün kılan saldırıdır. Bir sistem, A belgesinin B belgesi ile değiştirilmediğini doğrulamak için MD5’e güveniyorsa, bu güven kırılabilir.
MD5’in Hala Kabul Edilebilir Olduğu Yerler
MD5’in kırık durumu, bir düşmanın çarpışma üretmeye çalıştığı güvenlik bağlamları için geçerlidir. Birçok meşru kullanım, çarpışma üretmeye çalışan bir düşman içermez:
Dosya tekilleştirme
Depolama sistemleri, yinelenen dosyaları tespit etmek için MD5 kullanır. MD5 çarpışmaları hazırlanmış dosyaları yükleyebilen bir saldırgan, hash çarpışması riskinden çok daha büyük bir sorundur. Amazon S3, ağ üzerinden yükleme bütünlüğü için MD5 sağlama toplamlarını kabul eder (bit takla tespiti, düşmanca doğrulama değil).
Önbellek anahtarları ve ETag’ler
Web sunucuları, dosya içeriğinin MD5’ini sık sık ETag olarak kullanır. Bu bir performans optimizasyonu ve tesadüfi bir tekilleştirme mekanizmasıdır, güvenlik garantisi değil.
Hash tablosu dağıtımı ve veritabanı parçalama
MD5’in çıktısı iyi dağılır ve hızlıdır. Bir anahtarı hash’leyerek veriyi parçalayan sistemler, güvenlik etkisi olmaksızın bunun için genellikle MD5 kullanır.
Eski sistemler
Pek çok kod, saldırılar gösterilmeden önce yazıldığı veya hiç değiştirilmesi gerekmediği için hala MD5 kullanır. MD5 yazan bir logda bir özet okuyorsanız, sorulması gereken soru şudur: buradaki gerçek güven modeli nedir?
MD5’in Kullanılmaması Gereken Yerler
Parola hash’leme
MD5 çok hızlıdır. GPU’ya sahip bir saldırgan saniyede milyarlarca MD5 hash’i hesaplayabilir. Sızıntı yapmış bir veritabanına karşı tuzlu MD5 bile kırılabilir. bcrypt, Argon2 veya scrypt kullanın; bunlar kasıtlı olarak yavaş ve bellek yoğundur.
Dijital imzalar
İmza şemaları, imzalamadan önce belgeyi hash’ler. Bir saldırgan aynı hash’e sahip iki belge hazırlayabilirse, zararsız olanın imzasını alabilir ve bunu kötü amaçlı olana uygulayabilir.
TLS sertifikaları
SHA-256, 2017’den beri sertifika imzaları için gerekli olmuştur. MD5 sertifika hash’lemesi tüm modern tarayıcılar tarafından reddedilir.
Güvenlik indirmeleri için dosya bütünlüğü
Bir ikili dosyanın yanında SHA-256 sağlama toplamı yayınlarsanız, kullanıcı tam olarak sizin yayınladığınız şeyi indirdiğini doğrulayabilir. MD5 sağlama toplamı, motive olmuş bir saldırgana karşı bu garantiyi sağlayamaz.
MD5, SHA-1 ve SHA-256 Karşılaştırması
| Algoritma | Çıktı | Durum |
|---|---|---|
| MD5 | 128 bit (32 hex karakter) | Kırık. 2004’ten beri pratik çarpışma saldırıları |
| SHA-1 | 160 bit (40 hex karakter) | Kırık. SHAttered çarpışma saldırısı 2017’de gösterildi |
| SHA-256 | 256 bit (64 hex karakter) | Güvenli. Bilinen zayıflık yok |
Güvenlik dışı sağlama toplamları için (düşmanca bütünlük değil, yalnızca hata tespiti), MD5 yeterlidir. Bir düşmanın müdahale edebileceği herhangi bir şey için SHA-256 kullanın. SHA-256’nın nasıl çalıştığı hakkında daha fazla bilgi için SHA-256 hash oluşturucuya bakın.