Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Salt, parolaya hash uygulanmadan önce eklenen, her parola kaydı için ayrı ve rastgele üretilen değerdir. Temel amacı, aynı parolaların aynı hash sonucunu üretmesini engellemek ve saldırganın önceden hazırlanmış hash tablolarını doğrudan kullanmasını zorlaştırmaktır. Salt gizli tutulmaz; kullanıcı kaydındaki hash ile birlikte saklanabilir.

Salt nasıl çalışır?​


Salt kullanılmadığında aynı parola her zaman aynı hash değerini üretir. Böylece saldırgan, ele geçirdiği veritabanında aynı parolayı kullanan hesapları kolayca gruplayabilir veya yaygın parolalar için önceden hesaplanmış sonuçlardan yararlanabilir.

Salt kullanıldığında hesaplama kabaca şu hale gelir:

hash = KDF(parola, salt, parametreler)

Buradaki salt her kayıt için farklıdır. Örneğin iki kullanıcının parolası da OrnekParola! olsa bile salt değerleri farklıysa elde edilen hash değerleri de farklı olur. Veritabanında genellikle hash sonucu, salt ve hesaplama parametrelerini taşıyan parola doğrulama değeri saklanır; düz parola saklanmaz. Bu şema kendiniz birleştirme algoritması yazmanız için tarif değildir.

Salt, parolayı şifrelemez ve hash değerini geri çevrilemez hale getiren tek unsur değildir. Asıl güvenlik; parola için tasarlanmış, hesaplama maliyeti ayarlanabilen bir KDF veya parola hash algoritması kullanılmasıyla sağlanır. Salt ise her parola için bu hesaplamanın benzersiz olmasını sağlar.

Somut örnek​


Aynı parolayı kullanan iki hesap düşünün:

Kullanıcı A: parola = OrnekParola!, salt = a1...
Kullanıcı B: parola = OrnekParola!, salt = f9...

İki kayıt da parola ve kendi salt değeri birlikte işlenerek oluşturulur. Saltlar farklı olduğu için hashler de farklı çıkar. Saldırgan bir parolanın hashini tahmin etmek istese bile bunu her kayıt için o kayda ait salt ile yeniden hesaplamak zorundadır. Salt, parolayı bilen bir saldırganın deneme yapmasını imkânsız kılmaz; yalnızca önceden hazırlanmış ortak tabloların ve hash tekrarlarının faydasını azaltır.

Aşağıdaki ayrım, saltın rolünü doğru konumlandırır:

ÖzellikSaltPepperParola hash/KDF
AmaçHer kaydı benzersizleştirmekVeritabanı dışında ek gizli değer kullanmakParolayı maliyetli biçimde işlemek
Gizli olması gerekir mi?HayırEvetAlgoritma gizli olmak zorunda değildir
Nerede tutulur?Hash ile birlikteAyrı ve korumalı yapılandırmadaHash çıktısının parçası veya yanında parametre olarak

Bu nedenle salt, pepper'ın yerine geçmez; çoğu kurulumda ikisi farklı tehditlere karşı kullanılan ayrı katmanlardır. Saltın amacı gizlilik değil, benzersizliktir.

Uygulamada doğru yaklaşım​


Modern kütüphaneler saltı çoğunlukla otomatik üretir ve doğrulama biçiminde saklar. PHP password_hash buna örnektir; özel salt seçeneği verilmez, doğrulama password_verify ile yapılır. Kütüphanenin kendisi yönetiyorsa ayrı salt üretip iki kez eklemeyin.

Parola kaydı oluştururken şu sırayı izleyin:

  1. Parola için genel amaçlı hızlı hash yerine parola doğrulamaya uygun bir KDF veya parola hash algoritması seçin. Uygulamanızın ve kullandığınız kütüphanenin güvenli varsayılanlarını tercih edin.
  2. Saltı otomatik üreten güvenilir kütüphaneyi tercih edin. Yalnız düşük seviyeli API gerçekten salt istiyorsa her kayıt için kriptografik rastgele salt sağlayın. Saltı sabit, kullanıcı adı gibi tahmin edilebilir veya tüm kullanıcılar için ortak yapmayın.
  3. Parola ile saltı seçtiğiniz KDF'ye verin ve ortaya çıkan doğrulama değerini, gerekli parametrelerle birlikte saklayın.
  4. Girişte kütüphanenin doğrulama işlevine girilen parola ile saklı doğrulama değerini verin. Salt/parametre ayrıştırmasını ve güvenli karşılaştırmayı desteklenen API’ye bırakın.
  5. Başarılı giriş sonrasında eski ve zayıf bir parola hash biçimi tespit ediliyorsa, kullanıcı parolayı yeniden girdiğinde daha güçlü biçime geçiş yapın. Eski hashlerden düz parolayı çıkarmaya çalışmayın.

Sık yapılan hatalar​


Tek bir sabit salt kullanmak: Bu, tüm kayıtların aynı saltı paylaşmasına neden olur ve kayıtlar arasındaki benzersizliği büyük ölçüde ortadan kaldırır.

Saltı parola gibi gizlemek: Saltın veritabanında hashle birlikte bulunması normaldir. Gizlenmesi gereken değer parola ve varsa pepperdır. Salt sızdı diye hash doğrulaması geçersiz sayılmaz; ancak zayıf veya hızlı bir hash yöntemi kullanılıyorsa saldırgan çevrimdışı tahmin yapmaya devam edebilir.

Saltı şifreleme anahtarı sanmak: Salt, veriyi çözecek gizli anahtar değildir. Parolayı geri getirmez ve tek başına zayıf parolayı güçlü hale getirmez.

Salt var diye hızlı hash kullanmak: Benzersiz salt, parola tahminlerini ortadan kaldırmaz. Ele geçirilmiş bir hash veritabanına karşı saldırgan yine aday parolaları deneyebilir; bu yüzden uygun KDF, güçlü hesaplama parametreleri ve kullanıcıların güçlü parolalar seçmesini destekleyen bir tasarım birlikte değerlendirilmelidir.

Sık sorulan sorular​

Aynı parolayı tekrar hashleyince farklı sonuç hata mı?​

Hayır. Yeni rastgele salt nedeniyle farklı kayıt çıkması beklenir. Girişte yeniden hash üretip metin eşitliği aramak yerine password_verify gibi ilgili doğrulama işlevini kullanın; o, saklı kayıttaki salt ve parametrelerle kontrol eder.

Salt tek başına sızdıysa parolayı değiştirmek gerekir mi?​

Salt gizli değer değildir; tek başına bilinmesi parolanın öğrenildiğini göstermez. Olayı yine kapsamıyla değerlendirin: hashler de alındıysa çevrimdışı tahmin riski, algoritma ve parolanın gücü önemlidir. Pepper veya başka sırların sızması ayrı müdahale gerektirir; saltı gizlemek olayın çözümü değildir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic