Công cụ làm gì
AES (Advanced Encryption Standard) là thuật toán mã hóa đối xứng được dùng gần như ở mọi nơi: HTTPS, mã hóa ổ đĩa, trình quản lý mật khẩu và ứng dụng nhắn tin. Cùng một khóa bí mật vừa mã hóa vừa giải mã. Công cụ này mã hóa văn bản thành Base64 để dán ở bất kỳ đâu, rồi giải mã lại.
Bạn có thể dùng:
- cụm mật khẩu, được chuyển thành khóa 128 hoặc 256 bit bằng PBKDF2-HMAC-SHA256 với salt ngẫu nhiên, hoặc
- khóa hex: 32 hoặc 64 chữ số thập lục phân (128 hoặc 256 bit), dùng trực tiếp. Bấm Khóa ngẫu nhiên để tạo một khóa.
Có hai chế độ hoạt động. AES-GCM là lựa chọn mặc định hiện đại và phát hiện được giả mạo. AES-CBC với đệm PKCS#7 được cung cấp để tương thích với hệ thống cũ.
Cách sử dụng
- Chọn Mã hóa hoặc Giải mã, thuật toán và loại khóa.
- Nhập cụm mật khẩu hoặc dán khóa hex ở đầu ô nhập.
- Dán văn bản (hoặc Base64 cần giải mã). Kết quả hiện bên phải; Dùng làm đầu vào đổi chiều để kiểm tra mã hóa rồi giải mã.
Định dạng đầu ra
Đầu ra là một chuỗi Base64 duy nhất để không bị hỏng khi gửi qua email hay chat:
passphrase: salt (16 bytes) | IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)
hex key: IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)
Để giải mã, hãy dùng đúng thuật toán, loại khóa, độ dài khóa và số vòng lặp như khi mã hóa. Các thiết lập này được lưu trong địa chỉ trang, nên liên kết chia sẻ mang theo chúng còn khóa vẫn ở lại với bạn.
Chọn cụm mật khẩu
PBKDF2 làm mỗi lần đoán chậm hơn, nhưng không cứu được cụm mật khẩu ngắn hay phổ biến. Hãy dùng cụm mật khẩu dài và ngẫu nhiên, chẳng hạn từ trình tạo mật khẩu, và chia sẻ nó qua kênh khác với bản mã. Nhiều vòng lặp hơn làm việc đoán khó hơn và giải mã chậm hơn một chút; thường dùng từ 100.000 đến 600.000.
Câu hỏi thường gặp
› Nên chọn GCM hay CBC?
Chọn GCM trừ khi hệ thống khác yêu cầu CBC. GCM có xác thực, nên khóa sai hay chỉ một byte bị sửa đều bị phát hiện thay vì cho ra dữ liệu rác. CBC chỉ đảm bảo tính bí mật và chủ yếu dùng để tương thích với mã cũ.
› Vì sao bản mã mỗi lần mỗi khác?
Mỗi lần mã hóa dùng một IV ngẫu nhiên mới, và với cụm mật khẩu thì có thêm salt ngẫu nhiên mới. Cả hai được lưu ở đầu đầu ra nên vẫn giải mã bình thường. Dùng lại IV với cùng một khóa, nhất là với GCM, là một lỗ hổng nghiêm trọng.
› Làm sao giải mã đầu ra trong mã của tôi?
Giải mã Base64. Với cụm mật khẩu, 16 byte đầu là salt PBKDF2, tiếp theo là IV (12 byte với GCM, 16 byte với CBC), rồi đến bản mã. Dẫn xuất khóa bằng PBKDF2-HMAC-SHA256 với cùng số vòng lặp. Với khóa hex thì không có salt. Với GCM, 16 byte cuối là thẻ xác thực.
› Cụm mật khẩu hoặc khóa của tôi có bị lưu hay gửi đi không?
Không. Việc mã hóa chạy trong trình duyệt bằng Web Crypto API. Cụm mật khẩu hoặc khóa chỉ nằm trong bộ nhớ của trang này: không được lưu, không ghi lên thanh địa chỉ và không đưa vào liên kết chia sẻ, nên bạn có thể chia sẻ tin nhắn đã mã hóa mà không kèm khóa.