Phần 2: Mã hóa mật khẩu như nào


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


Post a Comment

Mới hơn Cũ hơn