Рейтинг:0

Безопасен ли CMAC без IV и того же ключа? (только аутентификация)

флаг cn

Я немного не уверен в CMAC и GMAC, и, возможно, кто-то может мне помочь. Насколько я знаю, CMAC не использует IV [СП 800-38Б гл. 6.2]. Безопасно ли использовать один и тот же ключ для разных сообщений? ...и зачем мне капельница для GMAC? Что произойдет, если я повторно использую IV и тот же ключ?

В моем случае я не шифрую никаких сообщений, я просто создаю MAC, который я прикрепляю к сообщению (открытый текст). Это уязвимо?

...с UMAC, VMAC или Поли1305 Я также читал, что кортеж (key, nonce) может использоваться только один раз. Но с OpenSSL я не могу указать одноразовый номер с Poly1305. ...как-то все это меня смущает.

Рейтинг:2
флаг my

Безопасно ли использовать один и тот же ключ для разных сообщений?

Конечно; это не был бы очень хороший MAC, если бы ключ можно было использовать для одного сообщения.

и зачем мне IV для GMAC?

Потому что CMAC и GMAC имеют разные внутренние компоненты.

С CMAC вы делаете в основном те же вычисления, что и при шифровании в режиме CBC, за исключением того, что вы сохраняете только последний блок (и это MAC). Я сказал в основном потому, что если вы просто выполните эту операцию (известную как CBCMAC), это позволит злоумышленнику играть в некоторые игры с расширением сообщения - чтобы предотвратить это, CMAC xor в некоторых секретных данных с последним блоком, срывая такие игры .

Причина, по которой мы просим, ​​чтобы IV был другим (и непредсказуемым) в режиме CBC, заключается в том, что начальный блок не пропускает информацию; CMAC не выводит начальный блок режима CBC (если только сообщение не помещается в один блок, и даже если это так, операция xor секретных данных предотвратит любую подобную утечку), и поэтому CMAC не разделяет опасений по поводу IV.


Что касается GMAC, то тут совсем другое дело; при этом вы логически преобразуете сообщение в коэффициенты полинома $M_k, M_{k-1}, ..., M_1$; затем вы конвертируете IV в постоянный термин $M_0$ в секретном ключе, а затем вычислить многочлен (в конечном поле) в секретной точке $Ч$, то есть вы вычисляете:

$$M_kH^k + M_{k-1}H^{k-1} + ... + M_1 H^1 + M_0$$

и это МАК. Обратите внимание, что злоумышленник знает все, кроме секретных значений. $Ч$ (который является постоянным для данного ключа) и $M_0$ (а последнее зависит от IV).

Теперь, если у вас есть два MAC-адреса для двух разных сообщений с одним и тем же IV, $M_0$ значения будут одинаковыми; Вы можете вычесть их, а затем решить для $Ч$ - это дает вам все секреты, и поэтому вы можете генерировать сообщения с действительными значениями MAC по желанию.

И на довольно высоком уровне, который я описал, Poly1305 работает точно так же (и поэтому имеет ту же слабость к повторению IV).

В моем случае я не шифрую никаких сообщений, я просто создаю MAC, который я прикрепляю к сообщению (открытый текст). Это уязвимо?

Подойдет любой хороший MAC — это действительно тот вариант использования, для которого MAC должен адресовать [1]. CMAC в порядке - GMAC и Poly1305 также подойдут, если вы избегаете повторения IV.

[1]: Предполагая, конечно, что отправитель и получатель используют один и тот же секретный ключ - если вам нужно что-то, где получатель не может генерировать действительные сообщения, вам нужно посмотреть на подписи.

SBond avatar
флаг cn
огромное спасибо. Вы мне очень помогли. Хорошего дня и будьте здоровы :)
Рейтинг:0
флаг tr

Я немного не уверен в CMAC и GMAC, и, возможно, кто-то может мне помочь. Насколько я знаю, CMAC не использует IV [СП 800-38Б гл. 6.2]. Безопасно ли использовать один и тот же ключ для разных сообщений? ...и зачем мне капельница для GMAC? Что произойдет, если я повторно использую IV и тот же ключ?

Две конструкции используют два разных основных строительных блока/логики. Поэтому у них разные требования к безопасности. А именно:

  1. CMAC: мы можем абстрактно описать CMCA как конструкцию, которая строит безопасный PRF для входных данных переменной длины. Почему потому что безопасные PRF также являются безопасными MAC. Но для работы с CMAC переменной длины требуется, чтобы фактический ввод в функции MAC был без префикса. т. е. (w.l.o.g) входов нет $х,у$ такой, что $у$ начинается с $х$. Однако в CMAC это требование не является абсолютным; вместо этого используется рандомизированная схема кодирования, гарантирующая отсутствие отсутствия префиксов с очень низкой вероятностью.Короче говоря, абстрактная версия CMAC использует рандомизированное кодирование без префиксов. $е$ с ключом $k_1$, безопасный PRF для длинных, но без префиксов входных данных $F$ с ключом $к$. В сообщении $м$, mac вычисляется как $\тау = F(k, e(m,k_1))$
  • Для получения фактических деталей и получения ключей обратитесь к стандарту, на который вы также ссылались.
  1. GMAC: подробности см. в первом ответе.

Таким образом, мы видим, что CMAC не требует IV, в то время как GMAC требует, и, что более важно, безопасность зависит от отказа от повторного использования IV.

Что касается OpenSSL, может быть полезно посмотреть, как они сами используют Poly1305? Возможно в chacha20_poly1305

SBond avatar
флаг cn
Спасибо за ответ и ваше драгоценное время. :)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.