Dẫn xuất khóa PBKDF2 và HKDF

Dẫn xuất một khóa từ mật khẩu hoặc bí mật bằng PBKDF2 hoặc HKDF, chọn salt, số vòng lặp hoặc nhãn info, hàm băm và độ dài đầu ra, rồi đọc nó dưới dạng hex hoặc base64, hoàn toàn trong trình duyệt của bạn.

Đang tải công cụ…

Dẫn xuất khóa PBKDF2 và HKDFKéo giãn một mật khẩu thành khóa PBKDF2, hoặc mở rộng một bí mật có độ ngẫu nhiên cao thành các khóa con có tên bằng HKDF, mà không có gì rời khỏi máy của bạn. Chọn hàm băm, đặt salt và số vòng lặp (PBKDF2) hoặc nhãn info (HKDF), chọn cần bao nhiêu bit đầu ra, và sao chép khóa đã dẫn xuất dưới dạng hex hoặc base64. Mỗi byte được tính cục bộ bằng Web Crypto API gốc (crypto.subtle.deriveBits), nên mật khẩu và bí mật của bạn không bao giờ chạm tới máy chủ.

Dẫn xuất khóa PBKDF2 và HKDF là gì?

Dẫn xuất khóa PBKDF2 và HKDF là công cụ miễn phí chạy trong trình duyệt, thực thi hai hàm dẫn xuất khóa mà các nhà phát triển hay dùng nhất. PBKDF2 (Password-Based Key Derivation Function 2) cố ý làm chậm tấn công vét cạn bằng cách lặp lại một HMAC hàng nghìn lần, biến một mật khẩu của con người cộng với một salt thành khóa có độ dài cố định. HKDF (HMAC-based Key Derivation Function) nhận một bí mật vốn đã có đủ độ ngẫu nhiên và mở rộng nó thành một hoặc nhiều khóa con gắn với ngữ cảnh bằng nhãn info, lý tưởng để dẫn xuất các khóa mã hóa và xác thực riêng biệt từ một bí mật chủ duy nhất. Các kỹ sư backend, người rà soát bảo mật, và bất kỳ ai viết mã đăng nhập hoặc mã hóa đều dùng nó để kiểm thử vector, tái tạo quá trình dẫn xuất của máy chủ, hoặc tạo khóa cho một tác vụ dùng một lần. Dùng công tắc PBKDF2/HKDF để chuyển thuật toán, chọn SHA-256, SHA-384, SHA-512 hoặc SHA-1, đặt độ dài đầu ra theo bit, và đọc kết quả dưới dạng hex hoặc base64.

Cách sử dụng Dẫn xuất khóa PBKDF2 và HKDF

  1. Chọn PBKDF2 hoặc HKDF bằng công tắc ở trên, khớp với hàm mà mã hoặc vector kiểm thử của bạn sử dụng.
  2. Gõ hoặc dán mật khẩu (PBKDF2) hoặc bí mật có độ ngẫu nhiên cao (HKDF) vào trường Bí mật, rồi nhập một salt.
  3. Với PBKDF2, đặt số vòng lặp; với HKDF, đặt nhãn info tùy chọn để gắn khóa với một ngữ cảnh.
  4. Chọn hàm băm (SHA-256, SHA-384, SHA-512 hoặc SHA-1) và độ dài đầu ra theo bit.
  5. Chuyển công tắc hex / base64 sang mã hóa bạn cần và sao chép khóa đã dẫn xuất bằng nút sao chép.

Ví dụ

PBKDF2 — khóa 256 bit từ một mật khẩu

Đầu vào

Bí mật: correct horse battery staple
Salt: a1b2c3d4
Hàm băm: SHA-256, Vòng lặp: 100000, Bit: 256

Đầu ra

một chuỗi hex 64 ký tự (32 byte) có thể tái tạo với cùng mật khẩu, salt, hàm băm và số vòng lặp

HKDF — khóa con gắn ngữ cảnh từ một bí mật chủ

Đầu vào

Bí mật: 9f8e7d6c…(khóa chủ)
Salt: session-2024
Info: aes-gcm-encryption
Hàm băm: SHA-256, Bit: 256

Đầu ra

một khóa 256 bit khác với khóa từ cùng bí mật nhưng Info: hmac-authentication, nên một bí mật chủ tạo ra các khóa con độc lập

Đầu ra ngắn hơn dưới dạng base64

Đầu vào

Bit: 128, mã hóa chuyển sang base64

Đầu ra

một chuỗi base64 24 ký tự mã hóa 16 byte dẫn xuất đầu tiên

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

Mật khẩu hoặc bí mật của tôi có bị gửi đi đâu không?
Không. Bí mật, salt và info ở lại trong trình duyệt của bạn. Khóa được dẫn xuất cục bộ bằng Web Crypto API (crypto.subtle.deriveBits), và không có gì được tải lên hay lưu trên bất kỳ máy chủ nào, nên công cụ hoạt động ngoại tuyến và dữ liệu nhập của bạn không bao giờ rời khỏi trang.
Khi nào nên dùng PBKDF2 so với HKDF?
Dùng PBKDF2 để dẫn xuất khóa từ một mật khẩu của con người có độ ngẫu nhiên thấp — số vòng lặp của nó làm chậm tấn công vét cạn. Dùng HKDF khi bạn đã có một bí mật độ ngẫu nhiên cao (một khóa chủ hoặc bí mật chia sẻ) và muốn mở rộng nó thành một hoặc nhiều khóa con riêng biệt qua nhãn info. HKDF nhanh và không thay thế việc kéo giãn mật khẩu của PBKDF2.
Tại sao độ dài đầu ra của tôi bị làm tròn?
deriveBits của Web Crypto làm việc theo từng byte trọn vẹn, nên độ dài đầu ra theo bit được làm tròn về bội số gần nhất của 8. Thống kê bên dưới kết quả cho biết số bit và byte thực sự được tạo ra.
Những hàm băm và thuật toán nào được hỗ trợ?
Cả hai thuật toán đều chạy trên SHA-256, SHA-384, SHA-512 hoặc SHA-1, các hàm băm mà Web Crypto của trình duyệt cung cấp cho PBKDF2 và HKDF. Scrypt, Argon2 và bcrypt không được cung cấp vì trình duyệt không triển khai chúng một cách nguyên bản.
Cùng dữ liệu nhập có luôn cho cùng một khóa không?
Có. Dẫn xuất khóa có tính xác định: cùng thuật toán, bí mật, salt, hàm băm, độ dài đầu ra và số vòng lặp (PBKDF2) hoặc info (HKDF) luôn tạo ra cùng các byte, nhờ đó bạn có thể dùng nó để tái tạo hoặc xác minh một khóa mà máy chủ của bạn đã dẫn xuất.

Công cụ liên quan