2016-01-23 8 views
-3

Объясните мне это, пожалуйста:AES-CCM длина зашифрованного сообщения

Я зашифрован 1 байты простого текста с помощью AES-CCM с 8 байтами MAC. Результат: 9-байтовый.

Я думал, что AES представляет собой 16-байтовый блочный шифр, поэтому результат должен быть длиной 24 байта, но это не так.

Это, безусловно, не ошибка в моем коде, потому что примеры в RFC 3610 очень похожи на мой случай (31 байт данных + 8 байт MAC приводит к выходу 39 байт).

ответ

2

CCM - это аутентифицированный режим, который объединяет режим CTR для шифрования и CBC-MAC для аутентификации. Поскольку шифрование выполняется с использованием streaming mode CTR, зашифрованный текст будет точно таким же, как и открытый текст.

Ноль (Инициализационный вектор) должен быть быть уникальным для режима CCM, в противном случае можно потерять конфиденциальность для всех сообщений, которые используют тот же самый nonce с тем же ключом. Чтобы что-то зашифровать, вам нужно либо использовать глобально известный счетчик сообщений, либо как nonce, либо создать случайный nonce и надеяться, что вы его не сгенерировали раньше (очень тонкий шанс для 128-битных блочных шифров). Unce не должен быть секретным, поэтому вы можете добавить его к зашифрованному тексту. Полная длина шифртекста будет:

nonceLength + plaintextLength + tagLength 

Другая проблема режима СКК является использование CBC-MAC, который рассматривается как сильно нарушена в настоящее время.

+0

Благодарим вас за ответ. Ответ для меня скрыт в режиме «CTR потокового режима». – ifs

 Смежные вопросы

  • Нет связанных вопросов^_^