9 Mart 2018 Cuma

Kriptografide Salt Nedir

Salt Özellikleri
Açıklaması şöyle.
A salt is:
 -Not secret - Salts are stored in plaintext.
 -Secure - They are generated randomly and are long.
 -Unique - Every user's salt is intentionally different.

A password is:
- Secret - Assuming they do not put it on a sticky note.
- Secure - If it's not hunter2.
 -Unique - Or at least difficult to guess. Ideally, it should be unique.
Salt Hash İle Birlikte Saklanır
Açıklaması şöyle. Burada "Not secret" özelliği anlatılıyor.
The salt is stored in plaintext next to the hash and the same salt is used when checking a password.
Veritabanında şöyle görünür
id : password_hash : salt
1    abcdxqx         mysalt
Örnek
Elimzde bir şifre ve cryptographic hash'i olsun
şifre : 123 hash : GBIQ
Eğer bu şekilde saklarsak sık kullanılan şifreleri önceden hash'leye bir saldırgan şifreyi bulabilir. Açıklaması şöyle.
Someone who hasn't stolen your password database can work out ahead-of-time that GBIQ is the hash of password 123, so they can just make a big database with millions of common passwords with their hashes and compare that to any password database they steal. 
Ama hash metoduna salt'u da girdi olarak verirsek bu saldırıyı yapamaz. Şöyle yaparız
Hash (salt + password)
Açıklaması şöyle.Bu durumda hash şöyle saklanır.
Salt : 111| Hash : P2C/
Açıklaması şöyle.
During the brute force attack, words from the dictionary are hashed with the correct hash algorithm and salt, and then compared to the hash in the database dump. So the attacker needs to know not only the hash value itself, but the algorithm and the salt.
Salt Üretimi
Java'da SecureRandom.getNextBytes() kullanılabilir.

Hiç yorum yok:

Yorum Gönder