Điểm:2

Sự khác biệt giữa chế độ AES-CCM8 và chế độ AES-CCM là gì?

lá cờ id

Tôi biết AES-GCM và AES-CCM nhưng sự khác biệt giữa chế độ AES-CCM8 và chế độ AES-CCM là gì? Đó có phải là độ dài của mật mã?

Điểm:3
lá cờ cn

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ố qt đượ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ế qt 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 qt 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§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.

dawklrw avatar
lá cờ id
vậy aes-ccm an toàn hơn aes-ccm8?
Achim Kraus avatar
lá cờ ph
Có một sự khác biệt trong việc chuyển xác thực thẻ và đưa dữ liệu vào thư được mã hóa, sau đó dẫn đến một giá trị được giải mã "dự kiến". Chỉ vượt qua MAC có thể được coi là dễ dàng hơn. Nhưng điều đó vẫn dẫn đến một "tải trọng ngẫu nhiên" của tin nhắn được giải mã. Nếu điều đó gây hại, hoặc sau đó được phát hiện bởi lớp giao thức tiếp theo, thì thường không rõ ràng. Vấn đề dường như quan trọng hơn là tổng mức tiết kiệm của thẻ 8 byte so với thẻ 16 byte có thể không xứng đáng với rủi ro lớn hơn.
Achim Kraus avatar
lá cờ ph
"Cụ thể, đối với một thông báo nhất định, thẻ CCM n byte không phải là phần cắt ngắn của thẻ 16 byte thành n byte." sau đó có những triển khai bị hỏng, đó chính xác là những gì được thực hiện theo kinh nghiệm của tôi, ccm8 chỉ cắt bớt ccm16.
Gilles 'SO- stop being evil' avatar
lá cờ cn
@AchimKraus [RFC 6655](https://datatracker.ietf.org/doc/html/rfc6655#section-6.1) nêu rõ âBản mã AEAD_AES_128_CCM_8 bao gồm (â¦) đầu ra thẻ xác thực 8 octet của Hoạt động mã hóa CCMâ â lưu ý rằng _không_ nói rằng đây là phần cắt ngắn của thẻ thành 16 byte. RFC 6655 đề cập đến [RFC 5116](https://datatracker.ietf.org/doc/html/rfc5116#section-5.3) nêu rõ âChức năng tạo bộ đếm và định dạng được chỉ định trong Phụ lục A của [SP 800 -38C]â.
Gilles 'SO- stop being evil' avatar
lá cờ cn
Trong OpenSSL, [CCM-8 chuyển `taglen=8` thành `EVP_CTRL_AEAD_SET_TAG](https://github.com/openssl/openssl/blob/openssl-3.0/ssl/t1_enc.c#L410), [`aes_ccm_ctrl` lưu trữ 8 trong `cctx->M`](https://github.com/openssl/openssl/blob/openssl-3.0/crypto/evp/e_aes.c#L3350), [`aes_ccm_init_key` chuyển mã đó tới `CRYPTO_ccm128_init`] (https://github.com/openssl/openssl/blob/openssl-3.0/crypto/evp/e_aes.c#L3395) [mã hóa `M=8` vào khối ban đầu](https://github.com /openssl/openssl/blob/openssl-3.0/crypto/modes/ccm128.c#L31). Việc triển khai không tương thích với OpenSSL sẽ bị coi là bị hỏng.
Achim Kraus avatar
lá cờ ph
Vâng, bạn đúng! Tôi nhầm, tôi chỉ nhớ phần sao chép thẻ. Nhưng nội dung init cũng khác.
Điểm:1
lá cờ ru

Như được định nghĩa trong mục 6.1 của RFC6655, AES-CCM8 khác ở chỗ kích thước của thẻ xác thực là 8 byte (tức là 64-bit) thay vì 16 byte (tức là 128-bit) đối với AES-CCM. NIST Thông số kỹ thuật CCM trong SP800-38C phần 6.1 cho phép một loạt các độ dài thẻ xác thực có thể. Các thẻ ngắn hơn có thể được coi là phần quan trọng nhất của các thẻ dài hơn. Không có sự khác biệt trong các tải trọng được mã hóa.

Gilles 'SO- stop being evil' avatar
lá cờ cn
Đối với CCM, các thẻ ngắn hơn không phải là phần cắt ngắn của thẻ có độ dài đầy đủ: độ dài thẻ là một đầu vào để tính toán thẻ.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.