Рейтинг:1

Использование CMAC вместо хеш-функции для подписи сообщений

флаг us

Как правило, когда мы хотим сгенерировать подпись для сообщения M, мы используем хеш-функцию H и подписываем результат H(M) закрытым ключом. Что, если вместо хеш-функции H мы будем использовать CMAC с ключом K, а затем подпишем результат CMAC(M, K) закрытым ключом? Является ли такая операция криптографически безопасной? Если да, то нужно ли держать ключ K в секрете?

У меня есть устройство с аппаратным ускорителем для AES-CMAC, и мне интересно, смогу ли я использовать его вместо реализации алгоритма хеширования в программном обеспечении.

kelalaka avatar
флаг in
Добро пожаловать в Cryptography.SE. Хеширование, а затем подписание будет намного быстрее. Вы можете найти множество реализаций любой хорошей хэш-функции. Какой у вас алгоритм цифровой подписи? Обычно они идут вместе с хэш-функцией. Вы самостоятельно внедряете цифровую подпись? А как насчет атак по сторонним каналам?
morsisko avatar
флаг us
Здравствуйте, мой алгоритм подписи — ECDSA. У меня есть микроконтроллер с аппаратным ускорителем AES-CMAC. Я использую реализацию цифровой подписи с открытым исходным кодом ECDSA, предоставленную проектом micro-ecc. Я знаю, что мог бы реализовать алгоритм хэширования в программном обеспечении, но мне было интересно, каковы побочные эффекты использования CMAC вместо хеширования.
kelalaka avatar
флаг in
Вы тоже шифруете сообщения? Тогда с каким алгоритмом?
morsisko avatar
флаг us
Нет, сообщения не шифруются. На самом деле сообщение является содержанием прошивки. Во время загрузки устройство вычисляет хэш/cmac микропрограммы, а затем проверяет, действительна ли подпись ECDSA, сгенерированная в автономном режиме (на компьютере), для текущей микропрограммы с помощью встроенного открытого ключа.
Рейтинг:5
флаг my

Что, если вместо хеш-функции H мы будем использовать CMAC с ключом K, а затем подпишем результат CMAC(M, K) закрытым ключом? Является ли такая операция криптографически безопасной?

Если $К$ используется для конкретной подписи, является общедоступной (что должно быть для проверки подписи кем-то, у кого есть открытый ключ и подпись, и ничего секретного), тогда легко найти второе сообщение $М'$ такой, что $\text{CMAC}(M, K) = \text{CMAC}(M', K)$; то есть подпись также будет проверяться этим вторым сообщением $М'$.

На самом деле, у злоумышленника будет большая свобода выбора. $М'$; он может указать всю $М'$ сообщение, за исключением 16-байтового выровненного блока в любом месте этого сообщения - тогда он может эффективно вычислить, каким должно быть это 16-байтовое значение; что дает ему всю $М'$.

С другой стороны, если $К$ является секретным, вышеизложенное не применяется. Конечно, возникает очевидный вопрос: если подписывающая сторона и проверяющая действительно имеют общий секрет (и вы можете быть уверены, что верифицирующая сторона не попытается сгенерировать подделку), почему бы вам просто не использовать CMAC и не беспокоиться об операции подписи? ?

morsisko avatar
флаг us
Спасибо за Ваш ответ. Есть ли у такой атаки название, чтобы узнать больше об этом? Я думал, что найти коллизию для CMAC с известным ключом не проще, чем найти коллизию для хеш-функции
poncho avatar
флаг my
@morsisko: где ты это прочитал? Я не знаю, есть ли у этой атаки название — она настолько проста, что я не знаю, удосужился ли кто-нибудь дать ей название. Все, что нужно сделать злоумышленнику, — это вычислить CMAC в прямом направлении до неуказанного блока (это легко, если вы знаете k) и вычислить его в обратном направлении от целевого значения до неуказанного блока (опять же, легко, если вы знаете k и CMAC основан на обратимый блочный шифр) - xor двух значений состояния в двух направлениях является значением, которым должен быть неуказанный блок.
morsisko avatar
флаг us
Спасибо. Теперь я понимаю

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

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