Công cụ tạo mã xác thực thông điệp KMAC128
Tính mã xác thực thông điệp KMAC128 với khóa của bạn (văn bản hoặc hex), chuỗi tùy biến và độ dài đầu ra. Khớp với các mẫu NIST SP 800-185.
Bội số của 8, từ 8 đến 16384 bit.
Nhãn phân tách miền tùy chọn, ví dụ tên ứng dụng của bạn. Chuỗi khác nhau cho ra kết quả hoàn toàn không liên quan.
Khóa đang trống. Không có khóa bí mật thì KMAC không xác thực được gì.
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Tạo mã KMAC128 là gì?
KMAC128 là mã xác thực thông điệp dựa trên Keccak trong NIST SP 800-185, tương đương HMAC trong họ SHA-3. Với một khóa bí mật, chuỗi tùy biến tùy chọn và độ dài đầu ra, nó tạo ra một tag mà chỉ người giữ khóa mới tính được. Công cụ này tính KMAC128 của văn bản hoặc byte thô.
Cách sử dụng Tạo mã KMAC128
- Nhập dữ liệu vào ô Thông điệp; chọn mã hóa đầu vào Byte dạng hex hoặc Base64 cho dữ liệu nhị phân.
- Nhập Khóa bí mật và chọn Mã hóa khóa (Văn bản (UTF-8) hoặc Byte dạng hex).
- Nếu cần, nhập Chuỗi tùy biến (S) và đổi Độ dài đầu ra (bit) (mặc định 256).
- Chọn Định dạng đầu ra rồi nhấn Sao chép để dùng tag.
Ví dụ
Message 00010203 (Hex bytes), key 404142…5E5F (32 bytes, hex), S = "My Tagged Application", 256 bits
3b1fba963cd8b0b59e8c1a6d71888b7143651af8ba0a7070c0979e2811324aa5
Mẫu KMAC #2 trong NIST SP 800-185.
Khi nào nên dùng Tạo mã KMAC128
Dùng KMAC128 để xác thực thông điệp hoặc dẫn xuất khóa trong các hệ thống xây dựng trên SHA-3, hoặc để kiểm tra tag KMAC từ một đặc tả hay bản cài đặt khác. Nếu phía bên kia dùng HMAC-SHA256, KMAC sẽ không tương thích — hãy dùng HMAC trong trường hợp đó. Đừng dùng khóa rỗng hoặc dễ đoán; MAC chỉ mạnh ngang với khóa của nó.
Tạo mã KMAC128 hoạt động như thế nào
KMAC128 (NIST SP 800-185) là cSHAKE128 với tên hàm "KMAC". Hàm hấp thụ bytepad(encode_string(K), 168) — tức khóa được đệm cho đủ một khối — rồi đến thông điệp, sau đó là right_encode(L) với L là độ dài đầu ra yêu cầu, và vắt ra L bit. Vì L là một phần của đầu vào, KMAC 256 bit và 512 bit của cùng dữ liệu hoàn toàn không liên quan với nhau (khác với SHAKE). Thiết kế sponge giúp cấu trúc đặt khóa làm tiền tố đơn giản vẫn an toàn, nên KMAC không cần cấu trúc lồng nhau như HMAC.
Các Trường Hợp Sử Dụng Phổ Biến
- Kiểm tra các test vector KMAC trong NIST SP 800-185
- Gỡ lỗi một bản cài đặt KMAC viết bằng ngôn ngữ khác
- Tạo tag xác thực cho API hoặc thông điệp trong giao thức dựa trên SHA-3
- Dẫn xuất khóa bằng KMAC làm KDF (kiểu SP 800-108) để kiểm thử
Lưu Ý Bảo Mật
KMAC128 cung cấp mức bảo mật tới 128 bit khi khóa ngẫu nhiên và dài ít nhất 16 byte. Hãy dùng khóa bí mật mới và so sánh tag theo thời gian hằng định (constant time) trong mã của bạn. Đừng bao giờ dán khóa production vào công cụ bạn không tin tưởng; công cụ này chạy cục bộ và không gửi gì đi.
Câu Hỏi Thường Gặp
KMAC128 khác HMAC như thế nào?
HMAC bọc hàm băm hai lần để tránh lỗ hổng mở rộng độ dài (length extension) của SHA-2. Keccak không bị tấn công mở rộng độ dài, nên KMAC chỉ cần đặt khóa đã đệm làm tiền tố. Kết quả của hai loại không thể thay thế cho nhau.
Vì sao đổi độ dài đầu ra lại làm thay đổi toàn bộ các bit?
Độ dài đầu ra L được mã hóa vào đầu vào, nên KMAC 256 bit và 512 bit là hai giá trị độc lập — giá trị ngắn hơn không phải tiền tố của giá trị dài hơn.
Nhập khóa nhị phân như thế nào?
Đặt Mã hóa khóa thành Byte dạng hex và dán khóa dưới dạng hex (được phép có dấu cách). Với Văn bản (UTF-8), chính các ký tự sẽ được dùng làm byte của khóa.
Khóa của tôi có bị gửi đi đâu không?
Không. Khóa và thông điệp chỉ được xử lý trong trình duyệt của bạn.