czay.dev
Yazılar
The blog is currently available in Turkish only. Posts are not translated yet — the rest of the site is in English.

Sisteminizdeki en zayıf halka: MD5 Yanılgısı ve Güvenli Şifreleme

Veritabanında şifreleri düz metin veya MD5 ile saklamak büyük bir yanılgıdır. Rainbow tablolarıyla saniyeler süren şifre kırmayı engellemek için, hızın bir zafiyet olduğunu kabul etmeliyiz.

Furkan Özay18 Eylül 2026 · 2 dk okuma
Sisteminizdeki en zayıf halka: MD5 Yanılgısı ve Güvenli Şifreleme

Sisteminizdeki en zayıf halka nedir? Veritabanınız mı, yoksa şifreleme mimariniz mi? Hayır, çoğu zaman en büyük zayıflık doğrudan şifreleme mimarinizdir. Bir kullanıcının şifresini düz metin olarak (örneğin "123456" şeklinde) kaydetmek bütün sistemi tehlikeye atar.

MD5 Yanılgısı

Şifreleri "hashleyerek" saklamak elbette gereklidir, ancak MD5 gibi eski algoritmaları kullanmak sizi korumaz, yalnızca sahte bir güvenlik hissi verir. MD5 gibi algoritmalar bilerek çok hızlı çalışacak şekilde tasarlanmıştır. Bu hız, bir saldırgan için büyük bir avantajdır. İnternette halihazırda bulunan devasa Rainbow Table (gökkuşağı tabloları) sayesinde, MD5 ile şifrelenmiş milyarlarca parola saniyeler içinde geri döndürülebilir ve kırılabilir. Kırılma süresi sadece 0.01 saniye kadardır.

Çözüm: Salt ve Bcrypt

Bu sorunun çözümü basittir: Aynı şifre, farklı sonuç vermelidir. Her kullanıcının şifresine tamamen rastgele üretilmiş bir salt (tuz) eklenir. Böylece, iki kullanıcı aynı şifreyi ("admin123") kullansa bile, veritabanında saklanan değerleri tamamen farklı olur. Bu yöntem, önceden hazırlanmış Rainbow Tablolarını tamamen işe yaramaz hale getirir.

Fakat salt tek başına yetmez. Hız bir zafiyettir. Örneğin SHA-256 saniyede on milyarlarca hash oluşturabilir; bu bir saldırgan için yine harika bir hızdır. Ancak Bcrypt, güvenliği sağlamak için bilerek yavaşlatılmıştır. Sunucu tarafında ekstra 200 milisaniyelik bir gecikme, sisteminizi veya normal bir kullanıcıyı yormazken; milyarlarca deneme yapması gereken bir saldırganın işini yıllara, hatta yüzyıllara yayar.

Mühendislik Standartları

Gerçek mühendislik standartları, basit kurallara dayanır:

  1. MD5 veya SHA kullanmayın. Şifre saklama standartı Bcrypt, Argon2 veya PBKDF2 gibi algoritmaları gerektirir. Bcrypt çoğu dil için defakto standarttır.
  2. Manuel salt eklemeyin. Kendi başınıza bir metin ekleyip şifreleme uydurmaya çalışmayın. Bcrypt bunu kendi içinde zaten yapar.
  3. Kendi algoritmanızı uydurmayın. Güvenlik dünyasında "kendin yaz" konsepti geçerli değildir. Kanıtlanmış endüstri standartlarına güvenin.
📝Şifremi Unuttum E-postaları

Eğer bir sistemin "Şifremi Unuttum" bölümü size eski şifrenizi açık bir şekilde gönderiyorsa, o sistem şifrelerinizi düz metin (veya geri döndürülebilir) olarak saklıyor demektir. Bu mimari için devasa bir uyarıdır!

Kapanış

Verilerinizin güvenliği, doğru mimariyle başlar. Kullanıcının şifresini siz de (sistem yöneticisi dahil) bilmemelisiniz. Verilerinizi bilerek yavaşlatarak saldırganların önünü kesin!