8 là độ dài thẻ (tính bằng byte).
CCM là một họ thuật toán AEAD (mã hóa xác thực với dữ liệu liên quan) được tham số hóa bởi:
- thuật toán mật mã khối (ví dụ: AES-128, AES-192, AES-256, Camellia-128, â¦) với kích thước khối 128 bit;
- chức năng tạo bộ đếm;
- một chức năng định dạng cho khối đầu tiên;
- một chiều dài thẻ.
CCM được xác định bởi NIST SP 800-30C.
Trong thực tế, mọi người đều sử dụng chức năng tạo bộ đếm và định dạng
được chỉ định trong phụ lục A của NIST SP 800-30C. Đặc tả chức năng định dạng trên thực tế là một họ các chức năng với một tham số: độ dài của trường AEAD. Vì vậy, AES-CCMâ để lại ba tham số không rõ ràng: độ dài của khóa AES, độ dài q của trường AEAD và độ dài t của thẻ.
Giá trị của q không ảnh hưởng trực tiếp đến an ninh. Nó giới hạn kích thước của AEAD có thể được truyền đi và nó giới hạn kích thước của nonce. Giá trị của t có tác động đến bảo mật: một thẻ quá ngắn có thể bị cưỡng bức. Độ dài thẻ có thể thấp tới 4 byte, rất dễ bị brute-force. Các thẻ ngắn như vậy được sử dụng trong các giao thức truyền thông trong đó việc cưỡng bức mạnh thẻ sẽ là một cuộc tấn công chủ động và xác suất thành công của một cuộc tấn công chủ động được coi là thấp có thể chấp nhận được.
Những thông số q và t được mã hóa trong khối đầu tiên của dữ liệu, do đó, việc triển khai xác minh giải mã CCM cho một mật mã khối nhất định có thể giải mã rõ ràng và xác minh đầu vào bất kể các giá trị đó là gì. Một số giao thức hạn chế q và t thành những giá trị cụ thể. Đối với chiều dài thẻ t, đây là một tham số bảo mật. Vì q, điều này có thể cho phép triển khai đơn giản hơn một chút và giúp khả năng tương tác dễ dàng hơn (ít rủi ro về sự khác biệt trong hỗ trợ, giới hạn kích thước AEAD nhất quán, ít gánh nặng hơn đối với thử nghiệm khả năng tương tác...).
Lưu ý rằng q và t là đầu vào để tính toán thẻ. Do đó, giá trị thẻ phụ thuộc vào các tham số này. Đặc biệt, đối với một thông báo nhất định, N-byte thẻ CCM không phải là phần cắt ngắn của thẻ 16 byte thành N byte. (Điều này khác với GCM, trong đó GCM có thẻ ngắn hơn chỉ là GCM có thẻ có độ dài đầy đủ bị cắt bớt.)
Nếu không được chỉ định rõ ràng, độ dài thẻ thường là tối đa có thể, là một khối (128 bit = 16 byte). Điều này cũng có thể được viết âAES-CCM-16â (hoặc các biến thể đánh máy). âAES-CCM-8â có nghĩa là AES-CCM với thẻ 64 bit = 8 byte, v.v.
Ví dụ: trong TLS 1.2, bộ mật mã CCM được xác định bởi RFC 6655 (và RFC khác cho Camellia và ARIA), có tham chiếu đến RFC 5116 §5.3 và §5.4. RFCÂ 6655 §3 chỉ định một nonce 12 byte, tương đương với việc nói rằng q = 3. xxx_CCM
bộ mật mã sử dụng thẻ có độ dài tối đa (t = 16), trong khi đó xxx_CCM_8
bộ mật mã sử dụng thẻ nửa độ dài (t = 8).
Thẻ 8 byte (64 bit) sẽ nhỏ một cách khó chịu trong các tình huống mà kẻ tấn công có thể cưỡng bức tất cả các thẻ có thể. Tuy nhiên, khi thẻ được sử dụng cho giao tiếp TLS, nếu kẻ tấn công đoán sai thẻ, người nhận sẽ ngay lập tức đóng kết nối, vì vậy mỗi lần đoán yêu cầu một kết nối mới. Điều này làm cho vũ phu rất tốn kém. Với DTLS, người nhận sẽ chấp nhận một số gói bị hỏng, vì vậy kẻ tấn công có thể đưa ra một số dự đoán cho mỗi kết nối, nhưng một cuộc tấn công vẫn là một cuộc tấn công tích cực vào một kết nối đang diễn ra và kẻ tấn công thường không thử một lượng đáng kể đoán mà không làm bão hòa băng thông của máy thu hoặc kích hoạt hệ thống phòng thủ lũ lụt.