Использование одного ключа для шифрования и HMAC - PullRequest
5 голосов
/ 23 марта 2010

Мне интересно, могу ли я использовать общий секретный ключ, установленный между двумя клиентами, в качестве ключа HMAC.

Я видел, что есть проблема, когда он используется в качестве CBC-MAC, но я не нашел никаких доказательств того, что это плохая практика для HMAC.

Спасибо, Владимир

Ответы [ 2 ]

6 голосов
/ 24 марта 2010

Я полагаю, что в настоящее время он относится к категории "кажется, что все в порядке, но зачем рисковать?"

Рекомендуется, чтобы каждая сторона генерировала два новых ключа из общего секретного ключа:

encryption-key := HMAC(shared-key, "Encryption Nonce")
hmac-key := HMAC(shared-key, "Authenticity Nonce")
2 голосов
/ 25 марта 2010

Как кафе ускользнуло от. Одним из правильных способов сделать это является хеширование общего секретного ключа с некоторыми дополнительными данными.

Например:

enc-key = HASH(shared-key || 1)
hmac-key = HASH(share-key || 2)

Преимущество заключается в том, что нет необходимости передавать 2 лишних одноразовых номера, а также в простоте реализации.

Я бы НЕ использовал одну и ту же клавишу в разных функциях (enc + hmac). Это напрашивается на неприятности и плохую идею.

...