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.

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:
- MD5 veya SHA kullanmayın. Şifre saklama standartı Bcrypt, Argon2 veya PBKDF2 gibi algoritmaları gerektirir. Bcrypt çoğu dil için defakto standarttır.
- Manuel salt eklemeyin. Kendi başınıza bir metin ekleyip şifreleme uydurmaya çalışmayın. Bcrypt bunu kendi içinde zaten yapar.
- 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.
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!

