Dẫn xuất khóa HKDF
RFC 5869 Dẫn xuất khóa Extract-and-Expand dựa trên HMAC
Tài liệu HKDF
HKDF (Hàm dẫn xuất khóa Extract-and-Expand dựa trên HMAC) được định nghĩa trong RFC 5869. Nó cung cấp phương pháp mạnh mẽ để dẫn xuất khóa mã hóa từ vật liệu khóa đầu vào sử dụng quy trình hai giai đoạn: Trích xuất và Mở rộng.
HKDF được áp dụng rộng rãi trong các giao thức bảo mật hiện đại bao gồm TLS 1.3, Signal Protocol, Noise Protocol Framework và SSH. Sự phân tách rõ ràng giữa các giai đoạn trích xuất và mở rộng làm cho nó đặc biệt phù hợp cho việc dẫn xuất phân cấp khóa.
Giai đoạn Trích xuất: HKDF-Extract(salt, IKM) → PRK
Giai đoạn trích xuất tập trung entropy có thể phân tán từ Vật liệu khóa đầu vào (IKM) thành Khóa giả ngẫu nhiên (PRK) có độ dài cố định:
- Nhận muối (tùy chọn, mặc định HashLen số không) và IKM làm đầu vào
- Tính PRK = HMAC-Hash(salt, IKM)
- Độ dài PRK bằng độ dài đầu ra của hash (32 byte cho SHA-256)
- Muối hoạt động như khóa cho HMAC, tăng cường quá trình trích xuất
Giai đoạn Mở rộng: HKDF-Expand(PRK, info, L) → OKM
Giai đoạn mở rộng kéo dài PRK thành Vật liệu khóa đầu ra (OKM) với độ dài mong muốn:
- Nhận PRK, info (ngữ cảnh/nhãn) và độ dài đầu ra mong muốn L
- Tính lặp T(i) = HMAC-Hash(PRK, T(i-1) | info | counter)
- Nối kết quả: OKM = T(1) | T(2) | ... | T(N)
- Độ dài đầu ra tối đa là 255 × HashLen byte
Các trường hợp sử dụng phổ biến
- Lịch trình khóa TLS 1.3: dẫn xuất traffic secrets, handshake keys và application keys
- Signal Protocol: dẫn xuất chain keys và message keys từ shared secrets
- Trao đổi khóa SSH: dẫn xuất khóa mã hóa và toàn vẹn sau ECDH
- Phân cấp khóa: dẫn xuất nhiều khóa mục đích cụ thể từ master secret
HKDF vs PBKDF2
| Tính năng | HKDF | PBKDF2 |
|---|---|---|
| Tiêu chuẩn | RFC 5869 | RFC 8018 |
| Loại đầu vào | Bí mật chia sẻ, đầu ra DH | Mật khẩu người dùng |
| Số lần lặp | Một lần chạy | Nhiều (10K-1M) |
| Tốc độ | Nhanh | Cố ý chậm |
| Tham số Info | Có (ràng buộc ngữ cảnh) | Không |
| Trường hợp sử dụng chính | Đầu vào entropy cao | Mật khẩu entropy thấp |
Lưu ý bảo mật
- HKDF giả định IKM đã chứa đủ entropy; không sử dụng với mật khẩu yếu
- Tham số info nên xác định duy nhất mục đích sử dụng của khóa (phân tách ngữ cảnh)
- Muối là tùy chọn nhưng được khuyến nghị khi trích xuất nhiều khóa từ cùng một IKM
- PRK không bao giờ nên được sử dụng trực tiếp; luôn sử dụng giai đoạn mở rộng để dẫn xuất khóa cuối cùng
Tài liệu tham khảo kỹ thuật
Công Cụ Liên Quan
Tạo Khóa PBKDF2
Tạo khóa mã hóa an toàn từ mật khẩu với PBKDF2 SHA-256/384/512, tuân thủ OWASP
Trình Tạo HMAC
Tạo mã xác thực HMAC với thuật toán MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3 và RIPEMD-160
Mã Hóa/Giải Mã AES
Mã hóa và giải mã văn bản an toàn bằng thuật toán AES
Bộ Tạo Hash SHA
Bộ tạo hash SHA trực tuyến hỗ trợ thuật toán SHA-1, SHA-256, SHA-384, SHA-512