Yaptığım şeyin aslında şifreleri tuzlamaktan ziyade onları biberleştirmek olduğunu öğrendiğim bir tartışmaya rastladım ve o zamandan beri her ikisini de şu şekilde yapmaya başladım:
hash_function($salt.hash_function($pepper.$password)) [multiple iterations]
Seçilen hash algoritmasını görmezden gelmek (Bunun tuzlar ve biberlerin bir tartışması olmasını istiyorum ve belirli algoritmalar değil, güvenli bir tane kullanıyorum), bu güvenli bir seçenek mi yoksa farklı bir şey mi yapmalıyım? Terimlere aşina olmayanlar için:
Bir tuz , şifreleri kırmak için karma tabloların kullanılmasını imkansız hale getirmek üzere tasarlanmış veritabanında genellikle dizeyle depolanan rastgele oluşturulmuş bir değerdir. Her şifrenin kendi tuzu olduğundan, şifreleri kırmak için tek tek kaba kuvvet uygulanmalıdır; ancak, tuz veri tabanında parola karması ile saklandığından, veri tabanı uzlaşması her ikisini de kaybetmek anlamına gelir.
Bir biber gizli olması amaçlanmıştır (genellikle uygulamanın kaynak kodunda kodlanmış) veri tabanında ayrı olarak depolanır site çapında bir statik bir değerdir. Veritabanından bir uzlaşmanın tüm uygulamanın parola tablosunun kaba kuvvet uygulanmasına neden olmaması için kullanılır.
Eksik bir şey var mı ve parolalarımı tuzlamak ve karabiber yapmak, kullanıcımın güvenliğini korumak için en iyi seçenek mi? Bunu bu şekilde yapmanın herhangi bir potansiyel güvenlik kusuru var mı?
Not: Uygulama ve veri tabanının ayrı makinelerde depolandığını, şifreleri paylaşmadığını, bu nedenle veri tabanı sunucusunun ihlali, uygulama sunucusunun otomatik olarak ihlal edildiği anlamına gelmez.