Key Derivation Function (KDF)
Key Derivation Function (KDF) là một thuật toán dùng để tạo ra khóa mật mã (cryptographic key) từ một dữ liệu ban đầu như:
- mật khẩu (password)
- secret key ban đầu
KDF sẽ biến dữ liệu đầu vào thành một khóa mạnh hơn, có độ dài phù hợp để dùng trong các thuật toán mã hóa như AES, HMAC, TLS…
1. Ý tưởng đơn giản
Giả sử bạn có password:
password = "123456"
Password này quá yếu để dùng trực tiếp làm key AES.
KDF sẽ biến nó thành key mạnh hơn:
KDF("123456") → 0x8F3A92C7B1D4....
Key này có thể:
- dài 128 bit / 256 bit
- phân bố ngẫu nhiên hơn
- chống brute-force tốt hơn
2. KDF hoạt động như thế nào
Thông thường KDF sẽ dùng:
DerivedKey = KDF(
password,
salt,
iterations
)
Các thành phần
- Password / secret: "mypassword"
- Salt: một chuỗi các giá trị random được thêm vào password ban đầu. Mục tiêu chính của salt là:
- ngăn rainbow table attack.
- đảm bảo hai password giống nhau không tạo ra cùng hash.
- làm cho brute-force khó hơn.
salt = random(16 bytes)
- Iterations: Lặp nhiều lần để làm chậm brute force
All rights reserved