Использование одного ключа для шифрования и HMAC
Мне интересно, могу ли я использовать общий секретный ключ, установленный между двумя клиентами, в качестве ключа HMAC.
Я видел, что есть проблема, когда он используется в качестве CBC-MAC, но я не нашел никаких доказательств того, что это плохая практика для HMAC.
Спасибо Владимир
2 ответа
Я считаю, что это в настоящее время в категории "кажется, вероятно, хорошо, но зачем рисковать?".
Рекомендуется, чтобы каждая сторона генерировала два новых ключа из общего секретного ключа:
encryption-key := HMAC(shared-key, "Encryption Nonce")
hmac-key := HMAC(shared-key, "Authenticity Nonce")
Как кафе ускользнуло. Одним из правильных способов сделать это является хеширование общего секретного ключа с некоторыми дополнительными данными.
Например:
enc-key = HASH(shared-key || 1)
hmac-key = HASH(share-key || 2)
Это дает преимущество, заключающееся в том, что нет необходимости передавать 2 дополнительных одноразовых номера, а также проста в реализации.
Я бы НЕ использовал один и тот же ключ в разных функциях (enc + hmac). Это напрашивается на неприятности и плохую идею.