Parola hashleme, kullanıcı şifrelerinin güvenli saklanmasını sağlar ve veri sızıntılarına karşı önemli bir koruma katmanı sunar. Düz metin parolaların risklerini, hash fonksiyonlarının çalışma prensibini, tuzun (salt) önemini ve en güncel algoritmaları (bcrypt, Argon2id) kapsamlı şekilde bu yazıda öğrenin. Modern sitelerin neden şifreleri açıkça saklamaması gerektiğini ve güvenliğin nasıl sağlandığını adım adım keşfedin.
Parola hashleme, günümüz sitelerinde kullanıcı güvenliğinin temel taşlarından biridir. Hesabınızın parolası size sıradan bir metin dizisi gibi gelebilir, ancak bir web sitesi için bu, en hassas veri kategorilerinden biridir. Eğer bir servis, kullanıcı parolalarını düz metin olarak saklıyorsa, bir veri sızıntısı durumunda saldırganlar anında hesaplara giriş yapabilecek hazır kombinasyonlara sahip olur. Bu nedenle modern sistemler, şifrelerin kendisini değil, geri döndürülemez dijital temsilini saklayan parola hashleme yöntemini kullanır.
Parola hashleme, girilen parolanın özel bir hash fonksiyonu ile sabit uzunlukta bir dizeye dönüştürülmesidir. Örneğin, PixelBurn2026! parolası işlendiğinde, orijinal metni tahmin etmenin imkansız olduğu bambaşka bir değere dönüşür.
Hash fonksiyonları tek yönlüdür: Paroladan hash elde etmek kolaydır, ancak hash'ten orijinal parolayı geri döndürmek mümkün değildir. Hashleme bu yönüyle şifrelemeden ayrılır; şifrelenmiş veriler uygun anahtar ile çözülebilirken, hash'te böyle bir anahtar yoktur.
Hashlemenin önemli bir özelliği, sonucun öngörülebilir olmasıdır. Aynı parola ve aynı koşullarda daima aynı hash'i verir. Böylece site, orijinal parolayı saklamadan doğruluğunu kontrol edebilir.
Ancak, giriş verilerindeki küçük bir değişiklik bile sonucu tamamen değiştirir. Password123 ve Password124 gibi neredeyse aynı parolalar tamamen farklı hash'ler üretir. Ayrıca, hash'in görünümünden, parolaların ne kadar benzer olduğu anlaşılamaz.
Hash'in kendisi de tamamen güvenli sayılmaz. Saldırgan, hash fonksiyonunu matematiksel olarak geri çevirmeye çalışmaz; bunun yerine, çeşitli parola kombinasyonlarının hash'lerini hesaplayıp çalınan hash ile karşılaştırır. Eşleşme bulunursa, orijinal parola açığa çıkar. Bu nedenle güvenlik, yalnızca hash'in varlığına değil, kullanılan algoritmaya, tuz ve hesaplama zorluğu ayarlarına da bağlıdır.
Kullanıcı bir hesap oluşturduğunda, site parolayı veritabanına düz metin olarak kaydetmemelidir. Bunun yerine, sunucu parolayı hash algoritmasıyla işler ve sadece oluşan sonucu, sonraki doğrulamalar için gerekli ek parametrelerle birlikte saklar.
Kullanıcı tekrar giriş yaptığında, aynı algoritma yeni girilen parolaya uygulanır ve sonuç veritabanındaki değerle karşılaştırılır. Eşleşirse, sistem parolayı doğru kabul eder ve girişe izin verir.
Böylece düzgün uygulanan bir servisin, kayıt sonrası orijinal parolayı bilmesine gerek kalmaz. Sadece dönüştürülmüş sonuçla çalışır. Bu nedenle, güvenli bir site, kullanıcıya parolasını gösterme imkanı sunmamalıdır.
Eğer parola unutulursa, güvenli servisler genellikle eski parolayı göndermek yerine sıfırlama prosedürü başlatır: Kullanıcı hesabına erişimini doğrular ve yeni bir parola belirler. Sonrasında veritabanında yeni hash saklanır.
Bu yöntem özellikle veritabanı sızıntılarında hayati önemdedir. Düz metin parolalar içeriyorsa, saldırgan giriş için hazır verilere sahip olur. Doğru şekilde oluşturulmuş hash'ler saklandıysa, saldırgan önce orijinal parolaları bulmak zorunda kalır ve bunun zorluğu algoritmaya, tuza ve hash ayarlarına bağlıdır.
Bir site parolaları düz metin olarak saklarsa, herhangi bir veri sızıntısı hesapların doğrudan ele geçirilmesine yol açar. Saldırganın bir şey denemesi veya çözmesi gerekmez; doğrudan kullanıcı adı, e-posta adresi ve geçerli parolaya ulaşır.
Bu risk, kullanıcıların aynı parolayı birden çok yerde tekrar kullanmasıyla daha da büyür. Aynı kombinasyon forumda, e-postada, alışveriş sitesinde ve diğer servislerde kullanılabilir. O zaman bir sitedeki sızıntı, saldırganın çalınan bilgileri diğer platformlarda denemesini ve birden fazla hesaba erişmesini sağlar.
Daha fazla bilgi ve benzer olaylardan sonra ne yapmanız gerektiği için 2025'te veri sızıntısını kontrol etme ve parolalarınızı koruma rehberimize göz atabilirsiniz.
Sadece klasik hashleme de yeterli değildir; çok hızlı algoritmalarla saklandığında güvenlik zayıflar. Örneğin, SHA-256 veri bütünlüğü için uygun olsa da, parola saklama için tasarlanmamıştır. Modern ekran kartları saniyeler içinde milyonlarca SHA-256 hash'i hesaplayabilir, bu da basit ve popüler parolaların hızla bulunmasına neden olur.
Saldırganlar genellikle hash fonksiyonunu geri çevirmeye çalışmaz. Onun yerine, yaygın parolalardan, kelime kombinasyonlarından ve sembollerden oluşan sözlükler kullanarak her biri için hash hesaplar ve çalınan verilerle karşılaştırır. Algoritma ne kadar hızlıysa, saniyede o kadar çok deneme yapılabilir.
Bu nedenle güvenli parola saklama, birden fazla katmanı bir arada kullanır. Sadece hashleme değil, aynı zamanda benzersiz tuz ve özel olarak tasarlanmış, hesaplama açısından pahalı algoritmalar gerekir. Böylece toplu deneme saldırıları çok daha yavaş ve maliyetli olur.
En iyi hash algoritması bile, aynı parolalar daima aynı değere dönüşüyorsa zayıflar. İki kullanıcı aynı parolayı seçtiğinde, ekstra önlem alınmazsa hash'leri de aynı olur. Bu, çalınan veritabanının topluca analizini kolaylaştırır ve popüler kombinasyonların hızla tespit edilmesini mümkün kılar.
Bunu önlemek için tuz (salt) kullanılır - hash hesaplanmadan önce parolaya eklenen rastgele bir değer. Her kullanıcı için farklı bir tuz üretilir. Böylece aynı parolalar bile farklı hash'ler üretir.
Örnek olarak, iki kullanıcı qwerty123 parolasını seçerse, birine bir tuz, diğerine farklı bir tuz eklenirse sonuçlar tamamen farklı olur. Saldırgan, popüler bir parolanın hash'ini bir kez hesaplayıp tüm kullanıcıları tespit edemez.
Tuz, özellikle önceden hazırlanmış hash veri tabanlarına (rainbow table) karşı koruma sağlar. Tuz olmadan, saldırgan milyonlarca yaygın parolanın hash'ini önceden hesaplayabilir ve çalınan verilerde hızla eşleşme arayabilir. Benzersiz tuz, her kullanıcıya özel deneme yapmayı gerektirir.
Tuzun gizli olması şart değildir; genellikle hash ile birlikte veritabanında saklanır, çünkü sunucunun doğrulama sırasında ihtiyacı vardır. Amacı gizli kalmak değil, her hash'i benzersiz yapmaktır.
Ancak, tuz tek başına zayıf parolaları korumaz. Kullanıcı basit bir kombinasyon seçtiyse, saldırgan yine de bunu deneyebilir. Bu yüzden tuz, her denemenin hesaplama açısından pahalı olmasını sağlayan özel hash algoritmalarıyla birlikte kullanılmalıdır.
Parolalar için herhangi bir kriptografik hash fonksiyonu yeterli değildir. SHA-256 ve SHA-512 gibi algoritmalar özellikle hızlı olacak şekilde tasarlanmıştır, bu da dosya bütünlüğü ve dijital imza doğrulaması için avantajlıdır, ancak parola korumasında dezavantajdır. Hash ne kadar hızlı hesaplanırsa, saldırgan saniyede o kadar çok deneme yapabilir.
Bu yüzden parola hashlemede işlem maliyetini artırmak için özel algoritmalar kullanılır. En bilinenlerden biri bcrypt'tir. Bcrypt, hesaplama zorluğu ayarlanabilen bir algoritmadır; cost parametresi ne kadar yüksek olursa, tek bir hash'in hesaplanması o kadar uzun sürer. Sunucu, normal girişte bu gecikmeyi fark etmez, ancak milyonlarca şifre denemek isteyen saldırgan için büyük yavaşlama yaratır.
Daha modern bir yaklaşım ise Argon2. Bu algoritma, saldırganı hem işlem süresiyle hem de gereken bellek miktarıyla sınırlar. Bu, özellikle GPU ve özel donanımlarla yapılan toplu denemelere karşı etkilidir. Parola saklama için genellikle Argon2id kullanılır; bu, Argon2'nin farklı modlarının koruma özelliklerini birleştirir.
Bcrypt ve Argon2 karşılaştırmasında, bcrypt'in artık işe yaramaz olduğu söylenemez. On yıllardır gerçek sistemlerde başarıyla kullanılmıştır ve doğru ayarlarla hala güçlü koruma sağlar. Ancak yeni projelerde, esnek ayarları ve bellek tüketimi kontrolü nedeniyle genellikle Argon2id tercih edilir.
Güvenlik, algoritma parametrelerine de bağlıdır. Çok düşük zorlukta ayarlanırsa, en güncel fonksiyon bile hızlıca hesaplanabilir. Bu yüzden ayarlar, donanımın gücü arttıkça düzenli olarak gözden geçirilir ve kullanıcı deneyimiyle saldırganın toplu deneme maliyeti arasında denge sağlanır.
Endüstri ayrıca, kullanıcının sunucuya hiç klasik parola göndermesini gerektirmeyen yeni kimlik doğrulama yöntemleri de geliştirmektedir. Parolasız kimlik doğrulama, Passkeys, FIDO2 ve WebAuthn hakkında detaylı bilgi için ilgili makalemizi inceleyin.
Parola hashleme, sitelerin kullanıcı verilerini korurken orijinal parolayı açıkça saklamadan doğrulama yapmasını sağlar. Veritabanında yalnızca hash tutulur ve sunucu, girişte girilen değerin hash'ini tekrar hesaplayıp karşılaştırır.
Güvenli bir saklama sistemi yalnızca hash fonksiyonuyla sınırlı değildir. Benzersiz tuz, aynı parolaları farklı hash'lere dönüştürürken, bcrypt ve Argon2id gibi algoritmalar saldırganlar için toplu denemeleri çok daha masraflı hale getirir.
Eğer bir servis parolaları düz metin olarak veya tuzsuz, çok hızlı algoritmalarla saklarsa, tek bir veri sızıntısı binlerce hesabı riske atar. Bu yüzden modern sistemlerde temel kural nettir: Kullanıcı parolası, doğrudan okunabilecek veya geri döndürülebilecek biçimde saklanmamalıdır.