Her veri sızıntısı haberi aynı soruyu beraberinde getirir: kullanıcı parolaları ne şekilde saklanıyordu? Cevap "düz metin" ise afetin ikinci dalgası biletini çoktan almıştır, çünkü insanların büyük çoğunluğu aynı parolayı onlarca sitede kullanıyor. Şifre depolama göründüğünden daha basit bir meseledir: doğru algoritma, rastgele tuz ve bilinçli bir yavaşlık. 2026'da bu üçünden birini es geçen sistem, sızdığı gün manşet olmayı kabul etmiş sayılır.
Bu yazıda şifre depolamanın üç ayakını — algoritma seçimi, tuz-biber ikilisi ve yükseltme alışkanlığı — sırasıyla ele alacağız. Anlatılacakların hiçbiri yeni değil; yeni olan, hâlâ eski yöntemlerle devam eden projelerin sayısının azalmamış olması.
Sızıntı haberlerinde ilk aranan kayıt şifre tablosudur ve düz metinle ya da MD5, SHA-1 gibi hızlı özet fonksiyonlarıyla saklanmış tablolar, günümüz grafik işlemcileriyle saniyede milyarlarca denemeyle taranır. Amaç parolayı "çözülemez" yapmak değil, saldırganın deneme başına maliyetini kasten yükseltmektir; güvenlik literatürü buna sabır der. 2026'da sabrın ticari adı, belleğe dayalı bir algoritma olan Argon2id'dir. Önce hızlı özetlerin neden çözüm olmadığını netleştirelim, sonra Argon2id'ye geçelim.
Argon2id neyi değiştirir?
Argon2id her doğrulama denemesi için belirli bir miktarda bellek talep eder. Bu tekil özelliği, grafik işlemcilerin en büyük silahını — paralelleştirmeyi — pahalılaştırır: bellek sabit bir kaynaktır, çekirdek çoğaltamaz. Yani saldırganın kümesi ne kadar büyük olursa olsun, sizin doğrulama maliyetiniz ona da aynen yansır. OWASP rehberi uzun süredir minimum on dokuz mebibayt bellek ve en az iki iterasyon öneriyor; donanımınız izin veriyorsa bu sayıları büyütmek serbesttir, küçültmek ise genellikle "test hızlı olsun" bahanesiyle başlayıp üretime sıçrayan bir kestirmedir.
Parametre seçiminde altın kural, doğrulamanın sunucunuzda yüz milisaniye civarında sürmesidir. Kullanıcı bu gecikmeyi hissetmez; ama on bin kat daha hızlı çalışmak isteyen bir saldırgan için aynı iş, katlanılmaz bir maliyete dönüşür.
# argon2 komut satırı aracı: 64 MiB bellek, 3 tur, 4 paralel iş
echo -n "parolam" | argon2 "$(openssl rand -base64 16)" -id -t 3 -m 6 -p 4 -l 32
Tuz ve biber
Tuz, her kullanıcı için rastgele üretilen ve özetle birlikte saklanan bir değerdir. Aynı parolayı seçen iki kullanıcının kayıtları bile farklı görünür; hazır özet tabloları çöker ve saldırgan her hesap için ayrı çalışmak zorunda kalır. Biber ise farklı bir katmandır: yalnızca uygulama sunucusunda tutulan, veritabanıyla birlikte sızmayan ikinci bir sır. Veritabanı yedeği eline geçen saldırgan biberi bilmediği için, parolaları kırmak için önce uygulamanızın makinesine de girmesi gerekir. İkisinin ortak işi aynıdır: saldırganın topladığı sabrı ona geri vermektir.
Doğrulama anında yükseltme
Kullanıcının ilk başarılı girişi, elinizde parolanın düz metninin bulunduğu tek andır ve bu fırsat çoğu projede boşa harcanır. Doğrulama anında eski özeti Argon2id ile yeniden üretip kaydın üzerine yazın; aylar içinde tablo kendiliğinden göç eder, kimse hiçbir şeyin değiştiğini hissetmez. Yükseltme tamamlandıktan sonra da iş bitmez: algoritma parametreleri her iki yılda bir gözden geçirilmeli, artan işlemci gücüyle birlikte bellek ve tur sayıları büyütülmelidir. Şifre deposu bir kurulum maddesi değil, bakım gerektiren bir altyapı parçasıdır.
Bir de denetim tarafı var: hangi kullanıcının hangi algoritma ile saklandığını takip etmeli, eski algoritmadan kalan son kayıt gittiğinde eski doğrulama yolunu da koddan temizlemelisiniz; ölü kod, güvenlik denetimlerinde her zaman soru doğurur.
Son bir not: kullanıcıya "parola kuralları" dayatmak, Argon2id'nin yerine geçmez. Uzunluk sınırını cömert tutun, düzenli zorlamayı kaldırın; gerçek güç depolama tarafındaki sabırdan gelir, kullanıcının gözlerinden çıkan özel karakterlerden değil. Sabrı doğru yere yatırın — hem kullanıcılarınız hem basın bültenleriniz size teşekkür eder.
Okur Yorumları (0)