Hash/Mật mã

PBKDF2 Hash + Verify

Suy ra khóa bằng PBKDF2 (RFC 8018) từ mật khẩu, HMAC-SHA1/256/384/512, với số vòng lặp có thể tùy chỉnh.


                    

PBKDF2 (RFC 8018) applies HMAC to a password and salt repeatedly to deliberately slow down computation — it's the oldest of the standardized algorithms for password hashing and encryption key derivation.

How to use it

Common uses

Things to keep in mind

Unlike bcrypt and Argon2, PBKDF2 isn't memory-hard — it only requires CPU time, so it's less resistant to attacks on GPUs with many parallel compute units.

The recommended iteration count rises over time in NIST and OWASP guidance as hardware gets faster — check against current recommendations periodically.

Bài viết về công cụ này: PBKDF2: tiêu chuẩn kéo giãn khóa lâu đời nhất

Câu hỏi thường gặp

PBKDF2 khác bcrypt hay Argon2 như thế nào trong việc băm mật khẩu?

PBKDF2 áp dụng lặp lại một hàm băm HMAC để làm chậm brute-force, nhưng khác với bcrypt hay Argon2, nó không tốn nhiều bộ nhớ, khiến việc bẻ khóa bằng GPU tương đối rẻ hơn. Nó vẫn được dùng rộng rãi và được FIPS chấp thuận, nhưng Argon2 thường được ưu tiên cho hệ thống mới.

Số lần lặp kiểm soát điều gì, và nên cao đến mức nào?

Số lần lặp quy định hàm băm cơ bản được áp dụng bao nhiêu lần, đánh đổi trực tiếp tốc độ lấy khả năng chống brute-force. Hướng dẫn hiện tại khuyến nghị hàng trăm nghìn lần lặp cho SHA-256, tăng dần theo thời gian khi phần cứng nhanh hơn.

Vì sao PBKDF2 cần salt?

Salt đảm bảo các mật khẩu giống hệt nhau tạo ra đầu ra khác nhau, ngăn kẻ tấn công dùng bảng rainbow tính sẵn và buộc họ phải tấn công từng hash riêng lẻ.

Hàm băm cơ sở mà PBKDF2 sử dụng có quan trọng không?

Có. Các triển khai cũ thường mặc định dùng HMAC-SHA1 — trong cấu trúc HMAC đây không phải lỗ hổng nghiêm trọng, nhưng các khuyến nghị hiện đại đều đề xuất HMAC-SHA256 hoặc mạnh hơn để có biên độ an toàn lớn hơn mà không làm giảm tốc độ đáng kể.

PBKDF2 còn được dùng ở đâu ngoài việc lưu trữ mật khẩu?

PBKDF2 được sử dụng rộng rãi để suy ra khóa mã hóa từ mật khẩu — ví dụ trong WPA2/WPA3 cho Wi-Fi và trong nhiều định dạng container tệp được mã hóa.

Bài viết: Hash/Mật mã

Hash Generator: MD5, SHA-1 và SHA-256 khác nhau ở điểm nào

Vì sao MD5 vẫn được dùng để kiểm tra tính toàn vẹn của tệp, nhưng không dùng cho mật khẩu.

Checksum Verifier: cách kiểm tra một tệp có bị hỏng hay không

Vì sao checksum trùng khớp xác nhận tính toàn vẹn của một tệp, nhưng không xác nhận ai đã tạo ra nó.

HMAC: hash có khóa khác gì so với hash thông thường

Vì sao SHA-256 thông thường không bảo vệ khỏi việc giả mạo tin nhắn, nhưng HMAC thì có.

Bcrypt: vì sao mật khẩu được băm chậm chứ không nhanh

Vì sao SHA-256 nhanh là lựa chọn tồi cho mật khẩu, còn bcrypt chậm mới là lựa chọn đúng.

UUID: cách tạo ra định danh gần như không bao giờ trùng lặp

Vì sao UUID v4 có thể được tạo độc lập trên hàng triệu máy mà không có nguy cơ trùng lặp.

Trình tạo mật khẩu: điều gì thực sự làm cho mật khẩu mạnh

Vì sao mật khẩu dài gồm các từ trong từ điển mạnh hơn mật khẩu ngắn có ký hiệu và số.

AES: mã hóa đối xứng hoạt động như thế nào

Vì sao cùng một khóa vừa mã hóa vừa giải mã dữ liệu trong AES, và điều này khác gì với mã hóa bất đối xứng.

Argon2: vì sao thuật toán này giành chiến thắng cuộc thi băm mật khẩu

Argon2 phòng thủ trước các cuộc tấn công bằng GPU tốt hơn các thuật toán băm mật khẩu cũ như thế nào.

Scrypt: vì sao thuật toán cần nhiều bộ nhớ đến vậy

Vì sao scrypt cố ý đòi hỏi nhiều bộ nhớ để gây khó khăn cho việc dò trên thiết bị ASIC.

TOTP: mã dùng một lần trong ứng dụng xác thực hoạt động như thế nào

Vì sao mã trong Google Authenticator hoạt động không cần internet và chỉ đồng bộ với máy chủ qua thời gian.

X.509: bên trong một chứng chỉ SSL có gì

Trình duyệt kiểm tra chính xác điều gì trong chứng chỉ của một trang web trước khi hiển thị ổ khóa xanh.

PGP: mã hóa bằng khóa công khai và khóa riêng hoạt động như thế nào

Vì sao có thể chia sẻ tự do khóa công khai PGP, nhưng không bao giờ chia sẻ khóa riêng.