Password hashing: salt, cost và migration
Password có entropy thấp nên fast hash như SHA-256 không phù hợp. Dùng password hashing/KDF chậm và có cost: ưu tiên Argon2id; scrypt, bcrypt hoặc PBKDF2 khi platform/compliance yêu cầu.
Storage model
- Mỗi password có random salt riêng; salt không bí mật và lưu cùng hash.
- Pepper là secret toàn hệ thống đặt trong KMS/HSM/secret manager; rotation phức tạp và không thay salt.
- Lưu algorithm/version/cost/salt/hash để verify và nâng cấp.
- Rehash-on-login khi cost/algorithm cũ; reset path cho account không quay lại.
- Rate limit login và hỗ trợ MFA; hashing không ngăn credential stuffing.
Bcrypt caveat: hiểu giới hạn input/password Unicode của implementation; không silently truncate.