Thử nghiệm PBKDF2

Dẫn xuất khóa bằng PBKDF2-HMAC-SHA-1/256/512 với salt, số vòng lặp và độ dài khóa tùy chọn. Xuất hex, Base64, định dạng passlib; đã kiểm chứng với vector RFC 6070.

PBKDF2 (RFC 8018) được tính bằng Web Crypto API của trình duyệt. OWASP khuyên dùng 600.000 vòng cho HMAC-SHA-256 và 210.000 vòng cho HMAC-SHA-512. PBKDF2 không tốn bộ nhớ (không memory-hard), nên hệ thống mới nên ưu tiên Argon2id.

Xác minh mật khẩu với chuỗi hash

Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.

Thử nghiệm PBKDF2 là gì?

Tính PBKDF2 (RFC 8018) với HMAC-SHA-1, SHA-256 hoặc SHA-512, số vòng lặp, salt và độ dài đầu ra bất kỳ. Kết quả hiển thị dạng hex, Base64 và định dạng passlib $pbkdf2-sha256$, và bộ xác minh cũng chấp nhận hash pbkdf2_sha256$ của Django.

Cách sử dụng Thử nghiệm PBKDF2

  1. Nhập Mật khẩu.
  2. Chọn Hàm băm (PRF), Số vòng lặp và Độ dài khóa (byte).
  3. Nhập Salt và kiểu mã hóa của nó, hoặc để trống để dùng salt ngẫu nhiên.
  4. Nhấn Băm và sao chép kết quả hex, Base64 hoặc dạng đã mã hóa.

Ví dụ

Đầu vào
Mật khẩu password, salt salt, HMAC-SHA-1, 4096 vòng lặp, 20 byte
Đầu ra
4b007901b765489abead49d926f721d065a429c1
$pbkdf2-sha1$4096$c2FsdA$SwB5AbdlSJq.rUnZJvch0GWkKcE

Giá trị hex là test vector số 3 của RFC 6070.

Khi nào nên dùng Thử nghiệm PBKDF2

Dùng để dẫn xuất khóa phục vụ kiểm thử, tái tạo vector RFC 6070 hoặc xác minh hash của Django và passlib. Với việc lưu mật khẩu mới, hãy ưu tiên Argon2id hoặc scrypt, vốn là các thuật toán tốn bộ nhớ.

Thử nghiệm PBKDF2 hoạt động như thế nào

PBKDF2 tính các khối T_i = U_1 ⊕ U_2 ⊕ … ⊕ U_c, trong đó U_1 = HMAC(password, salt ‖ INT(i)) và U_j = HMAC(password, U_{j−1}), rồi nối chúng lại đến độ dài yêu cầu. Web Crypto API của trình duyệt (deriveBits) thực hiện phép tính. Định dạng passlib lưu số vòng lặp, salt và hash bằng Base64 biến thể (+ được thay bằng .).

Các Trường Hợp Sử Dụng Phổ Biến

  • Xác minh hash pbkdf2_sha256 của Django khi di chuyển hệ thống
  • Tái tạo test vector RFC 6070
  • Dẫn xuất khóa AES từ cụm mật khẩu để kiểm thử
  • So sánh số vòng lặp và thời gian xử lý

Câu Hỏi Thường Gặp

Tôi nên dùng bao nhiêu vòng lặp?

OWASP khuyến nghị 600.000 cho HMAC-SHA-256, 210.000 cho HMAC-SHA-512 và 1.300.000 cho HMAC-SHA-1.

PBKDF2 còn chấp nhận được không?

Có, đặc biệt khi cần chứng nhận FIPS, nhưng nó không tốn bộ nhớ, nên GPU bẻ khóa nó nhanh hơn Argon2id hay scrypt.

Vì sao độ dài khóa lại quan trọng?

Yêu cầu nhiều byte hơn đầu ra của hàm băm (ví dụ hơn 32 với SHA-256) khiến PBKDF2 tính thêm khối, nhân chi phí của bên phòng thủ mà không làm chậm kẻ tấn công.

Khám phá thêm danh mục