Level 1: Thuật toán mã hóa: cứ BCRYPT, ARGON2I, PBKDF2 hoặc BLOWFISH. Chọn cái méo nào cũng được để băm. Thay cho md5 hoặc sha cổ lỗ. (tham khảo cho PHP: http://php.net/manual/en/function.password-hash.php).
Level 2: Băm mỗi mật khẩu của mỗi người dùng với 1 salt ngẫu nhiên >= 64bit.
Ví dụ: trường hợp Trần văn Xoạc
Input password: 123456
saltkey: random string 64bit, ví dụ: dcm
string to encode: input password + saltkey
-> đem đi băm
riêng việt sắp đặt saltkey ở đâu cũng tùy biến được rồi, đầu, trộn, đuôi, abc, xyz
Level này sẽ giúp cho bài toàn 2 user sử dụng chung 1 pass nhưng output string khác nhau hoàn toàn.
Cái salt này ko cần giấu, cứ // với field lưu password lưu là đc rồi. Tham khảo DB của: joomla, drupal, wordpress, VBB...
Level 3: Băm toàn bộ mật khẩu người dùng với 1 pepper key, dài khuyến nghị 128bit trở lên. Key này cần đc lưu trữ bí mật, lưu ở 1 server khác với chỗ lưu mật khẩu.
pepper này là level cao hẳn, và việc setup quyền truy cập đến pepper này cũng cần phải private, hạn chế quyền truy cập, chỉ có 1 server production được cấp quyền với người quản trị được cấp quyền, có server giám sát để kết nối và valid password
Note: money lover, momo và 1 số ứng dụng tài chính đang băm kiểu vầy, sau vụ money lover và momo lộ tài khoản người dùng.
Phản ứng phụ: Admin quên Password cũng chỉ có thể Reset qua thuật toán, ếu vào DB lấy lại đc =))
Phần 3: Kiến trúc lưu pepper key
Đăng nhận xét