Salt
সল্ট
প্রতি-user random, unique মান যা password-এর সাথে জুড়ে hash করা হয় — গোপন নয়, hash-এর পাশেই plaintext store হয়, উদ্দেশ্য precomputed dictionary/rainbow-table attack অকার্যকর করা।
also: password-salt, salting
stored_hash = H(salt || password) -- salt প্রতি-user আলাদা, random, কিন্তু গোপন না
salt DB-তে plaintext-এই hash-এর পাশে থাকে -- attacker-ও দেখতে পারে
- একই password দুই user-এর জন্য আলাদা salt-এ সম্পূর্ণ ভিন্ন hash তৈরি করে — attacker একটাই precomputed dictionary দিয়ে সবাইকে ভাঙতে পারে না, প্রতিটার জন্য আলাদা কাজ লাগে
- Salt গোপন রাখার দরকার নেই — এর কাজ uniqueness নিশ্চিত করা, secrecy না (সেই কাজ pepper-এর — module-wide secret, database-এর বাইরে রাখা হয়)
- কমপক্ষে ১৬ byte cryptographically-random salt সুপারিশ করা হয় (OWASP); bcrypt/Argon2-এর মতো আধুনিক KDF নিজেই salt generate ও embed করে, আলাদাভাবে handle করা লাগে না