Skip to content

Comparison

SHA-256 ve MD5: güvenlik için asla MD5 kullanmayın

Biri güvenlik için ölü. Diğeri modern varsayılan. Karıştırmayın.

By Published

Özet.MD5, 2004’ten beri kriptografik olarak kırıldı — çakışmalar dizüstü bilgisayarda bir saatten kısa sürede bulunabiliyor — bu yüzden güvenlik için asla kullanmayın. SHA-256’nın bilinen pratik çakışması yoktur ve TLS, JWT, Bitcoin, Git (yeni depolar) ve HMAC için modern varsayılandır. Her ikisi de güvenlik dışı sağlama toplamları için iyidir, ama SHA-256 modern CPU’larda anlamlı ölçüde daha yavaş değildir.

MD5 ve SHA-256, her ikisi de kriptografik hash fonksiyonlarıdır — herhangi uzunlukta girdi alır ve sabit uzunluklu çıktı üretirler (MD5 için 128 bit, SHA-256 için 256 bit). Her ikisi de deterministik, her ikisi de hızlıdır ve yüzeysel olarak birbirinin yerine kullanılabilir görünürler. Değillerdir. MD5, 2004’ten beri kriptografik olarak kırıldı. SHA-256 iyidir.

Temel bilgiler

ÖzellikMD5SHA-256
Çıktı boyutu128 bit (32 hex karakter)256 bit (64 hex karakter)
Yayınlanma19912001 (NIST FIPS 180-2)
Çakışma bulundu2004 (Wang ve ark.)Henüz değil (2026)
Seçilmiş önek çakışmaları2007’den beri pratikBilinmiyor
TLS, JWT, kripto için kullanılıyor mu?HayırEvet

MD5 neden kırıldı

Kriptografik hash fonksiyonu, aynı çıktıyı üreten iki farklı girdi bulmayı hesaplama açısından imkânsız kılmalıdır (“çakışma”). 2004’te Xiaoyun Wang ve ekibi, kişisel bilgisayarda yaklaşık bir saatte MD5 çakışmaları bulmak için bir yöntem yayınladı.

Daha da kötüleşti. 2007’de seçilmiş önek çakışma saldırısı ortaya çıktı — herhangi iki rastgele dosya başlığı verildiğinde, saldırgan her iki dosyanın MD5 çakışmasını sağlamak için özenle hazırlanmış baytlar ekleyebiliyordu. Bu, 2008’de 657 dolarlık PlayStation 3 kümesi kullanılarak sahte bir sertifika yetkilisi imzası oluşturmak için kullanıldı.

Güvenlik amaçları için MD5 ölüdür. İmza doğrulama, içerik bütünlüğü veya parola hash’leme için MD5 kullanan herkes kırık kriptografi kullanıyor demektir.

MD5’in hâlâ kabul edilebilir olduğu yerler

MD5 hiç kırık değildir; kriptografik kullanımlar için kırıktır. Hâlâ uygun olduğu iki kategori:

  • Güvenlik dışı sağlama toplamları. İndirmenin bozulmadığını veya önbellek girişinin bir anahtarla eşleştiğini doğrulamak. Saldırgan yok; yalnızca hızlı, deterministik bir parmak izine ihtiyacınız var. MD5 uygun.
  • Tekilleştirme. İki dosyanın aynı olduğunu tespit etmek; çakışmayı taklit etmek makul hiçbir saldırgana yardımcı olmaz (depolama sistemi, derleme önbelleği).

Bu durumlarda bile SHA-256, modern donanımda nadiren anlamlı ölçüde daha yavaşdır — Intel ve AMD CPU’larının her ikisinde de yerel SHA talimatları vardır. MD5’e varsayılan olarak devam etmek için gerçek bir neden yoktur.

SHA-256’nın doğru seçim olduğu yerler

  • TLS el sıkışmaları ve sertifika imzaları. SHA-256 modern standarttır.
  • JWT imzaları (HS256, RS256, ES256). 256, SHA-256’ya işaret eder.
  • Bitcoin blok hash’leri. Bitcoin iş kanıtında SHA-256’yı iki kez kullanır.
  • Git nesne hash’leri. Git, SHA-1’den (bu da kırılmıştır) SHA-256’ya geçiş yapıyor; yeni depolar başından SHA-256 kullanmalıdır.
  • HMAC tabanlı mesaj doğrulama. HMAC-SHA256 standarttır.

SHA-1 hakkında ne düşünmeli?

SHA-1 (160 bit), zaman çizelgesinde MD5 ile SHA-256 arasında yer alır. Teorik çakışmalar 2005’te öngörüldü; ilk pratik çakışma (SHAttered) 2017’de Google tarafından yayınlandı. SHA-1 güvenlik kullanımları için kullanımdan kaldırıldı; Git hâlâ SHA-256 geçişi tamamlanana kadar (üzerine kapsamlı çakışma tespiti eklenmiş şekilde) kullanıyor.

Parola için MD5 hakkında ne düşünmeli?

Kullanmayın. SHA-256’yı da doğrudan kullanmayın. Parola hash’leme, yavaş, bellek yoğun bir fonksiyon gerektirir — bcrypt, scrypt veya argon2. Düz SHA-256 çok hızlıdır: modern GPU’ları olan bir saldırgan saniyede ~10 milyar SHA-256 hesaplayabilir ve zayıf parolaları dakikalar içinde kaba kuvvetle kırabilir. Yavaş hash fonksiyonları bu saldırıyı ekonomik olarak imkânsız hale getirir.

Pragmatik kural

Güvenliğe dokunan herhangi bir nedenle hash’liyorsanız — kimlik doğrulama, imza doğrulama, saldırganın kandırmak isteyebileceği içerik bütünlüğü — SHA-256 veya daha güçlü kullanın.

Güvenlik dışı parmak izi için hash’liyorsanız — tüm girdileri kontrol ettiğiniz tekilleştirme, içerik adreslenebilir depolama — MD5 teknik olarak uygun, ama modern donanımda SHA-256 daha yavaş değildir, bu yüzden yine de varsayılan olarak onu kullanın. Hangi kategoride olduğunuzu yanlış tahmin etmenin maliyeti yüksek; her zaman SHA-256 kullanmanın maliyeti esasen sıfırdır.

Web Crypto aracılığıyla hash üretecimizi kullanın — ancak kayda değer olarak MD5’i arayüze eklemedik, çünkü tarayıcı yerel olarak sağlamıyor ve kullanımını teşvik etmemeyi tercih ediyoruz.

Sayısal gerçekler

  • Çıktı uzunluğu: MD5 = 128 bit / 32 hex karakter; SHA-256 = 256 bit / 64 hex karakter — tam olarak 2 kat bit.
  • Çakışma direnci: MD5 bugün ~2¹⁸ (dizüstü bilgisayarda gerçekten saniyeler); SHA-256 ~2¹²⁸ — 2¹¹⁰ kat oran.
  • AMD Zen 4 SHA-NI üzerinde verim: MD5 ~700 MB/s; SHA-256 ~1,9 GB/s. Donanım hızlandırmayla SHA-256 artık MD5’ten ~2,5 kat daha hızlı — MD5 için hız argümanı tersine döndü.
  • Hızlandırma olmadan: MD5 ~500 MB/s, SHA-256 ~250 MB/s — tarihsel 2 kat fark.
  • Wang saldırısı (2004): ilk pratik MD5 çakışması tek bir PC’de ~1 saatte bulundu. Modern saldırılar (HashClash), emtia GPU’larında 30 saniyenin altında çakışma buluyor.
  • 2008 sahte CA açığı: Sotirov ve ark., 200 PlayStation 3 konsolu (~657 dolarlık hesaplama) ve MD5 seçilmiş önek çakışması kullanarak CA imzalı sertifika taklit etti.
  • GPU kaba kuvvet oranı (RTX 4090): ~50 milyar MD5/s, ~9 milyar SHA-256/s — her ikisi de tuzlanmamış parola hash’lerini dakikalar içinde kırar.
  • Argon2id varsayılan maliyet (OWASP 2024): 19 MiB bellek, 2 yineleme, 1 paralellik — ham SHA-256’nın nanosaniyelerine karşı ~50 ms/hash.

Karar matrisi

Kullanım durumuHash
TLS sertifika imzalamaSHA-256+
JWT imzasıSHA-256 (HS256/RS256/ES256)
Kod / ikili imzalamaSHA-256
Bitcoin / blok zinciri iş kanıtıSHA-256 (çift)
HMAC API isteği imzalamaHMAC-SHA-256
S3 ETag (tek parçalı yükleme)MD5 — AWS sözleşmesiyle kilitlenmiş
Linux paketi md5sums dosyasıMD5 — eski, ama yeni dağıtımlar SHA-256 ekliyor
İç tekilleştirme, güvenilir girdilerHer ikisi; modern CPU’larda SHA-256 varsayılan
Parola hash’lemeargon2id / bcrypt / scrypt — ham hash değil

Kaynaklar

Frequently asked questions

MD5, parola hash’leme için güvenli mi?
Hayır, ve SHA-256 de parola için doğru seçim değil. Her ikisi de çok hızlı — modern GPU’ları olan bir saldırgan saniyede ~10 milyar SHA-256 hesaplayabilir ve zayıf parolaları dakikalar içinde kaba kuvvetle kırabilir. Kasıtlı olarak yavaş ve bellek yoğun olan bcrypt, scrypt veya argon2 kullanın.
MD5 ne zaman hâlâ kabul edilebilir?
Yalnızca hiçbir saldırganın çakışmadan fayda sağlamadığı güvenlik dışı parmak izi için: güvenilir indirmelerde dosya bütünlüğü kontrolü, önbellek anahtarı türetme, uçtan uca kontrol ettiğiniz bir sistemde tekilleştirme. Hash’in güvenliğe bağlı olduğu her yerde SHA-256 veya daha güçlü kullanın.
SHA-256 geri döndürülebilir mi?
Hayır — kriptografik hash fonksiyonları tasarım gereği tek yönlüdür. Çıktıdan girdiyi türetemezsiniz. Arama tabanlı ‘tersine çevirme’ (gökkuşağı tabloları) yalnızca daha önce hash’lenmiş girdiler için çalışır; tuzlama gökkuşağı tablolarını tamamen etkisiz kılar.
MD5 kırıksa neden hâlâ her yerde var?
Geriye dönük uyumluluk ve atalet. Content-MD5 başlığı, Linux paket yöneticileri, çok parçalı olmayan yüklemeler için S3’ün ETag’i ve sayısız iç araç, protokolü değiştirmenin maliyeti kalan riski aştığı için MD5 yaymaya devam ediyor. Yeni sistemler varsayılan olarak SHA-256 kullanmalıdır.

Related

Published May 14, 2026