Использование одного ключа для шифрования и HMAC

StackOverflow https://stackoverflow.com/questions/2501207

Вопрос

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

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

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

Это было полезно?

Решение

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

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

encryption-key := HMAC(shared-key, "Encryption Nonce")
hmac-key := HMAC(shared-key, "Authenticity Nonce")

Другие советы

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

Например:

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top