Nghị định 13/2023/NĐ-CP về bảo vệ dữ liệu cá nhân của Việt Nam yêu cầu bên kiểm soát dữ liệu áp dụng "biện pháp bảo vệ dữ liệu cá nhân phù hợp" đối với thông tin người dùng, bao gồm cả mật khẩu, nhưng không quy định thuật toán cụ thể. Trong thực tế, các hàm dẫn xuất khóa như PBKDF2 là một cách cụ thể để nhiều ngân hàng số và ví điện tử tại Việt Nam đáp ứng yêu cầu chung này.
Nguyên lý kéo giãn khóa
Thay vì băm mật khẩu một lần, PBKDF2 áp dụng một hàm băm cơ bản (thường là HMAC-SHA256) hàng nghìn lần liên tiếp, sử dụng kết quả của mỗi vòng lặp làm đầu vào cho vòng tiếp theo. Điều này cố ý làm chậm việc tính một hash duy nhất, khiến cho việc dò hàng loạt trở nên đắt đỏ hơn đáng kể đối với kẻ tấn công.
PBKDF2 trong Wi-Fi: WPA2
Một trong những ứng dụng phổ biến nhất của PBKDF2 trên thế giới là dẫn xuất khóa mã hóa Wi-Fi từ mật khẩu mạng theo chuẩn WPA2-PSK: mật khẩu mạng được đưa qua PBKDF2-HMAC-SHA1 với 4096 vòng lặp, dùng tên mạng (SSID) làm salt, tạo ra khóa 256 bit. Đây là lý do vì sao một mật khẩu Wi-Fi ngắn lại dễ bị dò brute force ngoại tuyến đến vậy chỉ sau khi bắt được một "handshake" duy nhất.
Vì sao công cụ này cần HTTPS
Công cụ này tính PBKDF2 bằng Web Crypto API có sẵn trong trình duyệt thay vì một cài đặt JavaScript tự viết. Trình duyệt chỉ công khai crypto.subtle trong một "ngữ cảnh an toàn" — HTTPS, hoặc localhost khi phát triển — nên nếu không có kết nối mã hóa, công cụ này và mọi công cụ mật mã khác trên trang sẽ hoàn toàn không hoạt động, bất kể thiết bị mạnh đến đâu.
Vì sao cần điều này
- Tạo ra khóa mật mã từ mật khẩu để mã hóa (ví dụ trong WPA2/WPA3 cho Wi-Fi).
- Duy trì tính tương thích với các hệ thống cũ sử dụng PBKDF2 để lưu trữ mật khẩu.
- Hiểu vì sao số lần lặp được khuyến nghị liên tục tăng lên trong các phiên bản tiêu chuẩn mới.
Lựa chọn hàm băm cơ sở có ý nghĩa quan trọng
Các triển khai PBKDF2 cũ thường mặc định dùng HMAC-SHA1 — bản thân SHA-1 được coi là yếu về mặt mật mã học khi dùng để băm trực tiếp, nhưng trong cấu trúc HMAC điểm yếu này không phải là lỗ hổng nghiêm trọng. Tuy nhiên các khuyến nghị hiện đại đều đề xuất HMAC-SHA256 hoặc HMAC-SHA512 — không phải vì mối đe dọa trực tiếp từ SHA-1, mà vì đầu ra dài hơn và hàm hiện đại hơn mang lại biên độ an toàn lớn hơn mà không làm giảm tốc độ đáng kể.