Предположим, что мы хотим увеличить время жизни мастер-ключа.Можем ли мы сделать это, добавив шаг получения ключа перед фактическим шифрованием? Предполагая, что мы используем мастер-ключ в качестве входного ключевого материала и случайный одноразовый номер в HKDF, можем ли мы продлить время жизни мастер-ключа?
Да, конечно, когда речь идет о требованиях GCM. Конечно, могут быть и другие соображения, потому что один и тот же главный ключ по-прежнему защищает, возможно, большое количество сообщений.
Другими словами, это AES-GCM(HKDF(MasterKey, ...)
, IV, ...), предлагающие какое-либо преимущество в отношении общего количества сообщений по сравнению с AES-GCM(MasterKey, IV, ...)
?
Потенциально да, это, конечно, зависит от других входных данных HKDF, но пока входные данные для HKDF уникальны, у вас есть безопасная односторонняя функция, которая делает производные ключи независимыми друг от друга.
В частности, если предположить, что HKDF имеет фиксированную соль и случайный 128-битный одноразовый номер в качестве входных данных, а GCM использует 96-битный случайный IV, то я предполагаю, что (WK, IV) имеют более низкую вероятность коллизии, чем (IV).
В качестве входного параметра для HKDF не определено значение «одноразовый номер», но вы можете использовать его в Информация
поле.
«Фиксированная соль» практически бесполезна. Однако вы можете использовать пустой параметр соли и использовать одноразовый номер как часть Информация
параметр и быть достаточно безопасным.
С солью вам не нужно думать о разделении доменов (например, об использовании вашего главного ключа для чего-либо еще, что может помешать), независимом от источника извлечении (например, о возможном повторении одноразового номера или плохой энтропии главного ключа) — но вы можно обойтись без.
На самом деле, вы можете пропустить шаг если вы хотите, и просто используйте HKDF-Expand, если ваш мастер-ключ имеет достаточную энтропию. В таком случае нет Соль
обязательный параметр.
Я бы порекомендовал иметь дополнительную постоянную строку в поле «Информация», которую также можно использовать для получения ключей от мастера для дополнительных вариантов использования. Например, Информация
поле может использовать метку, называемую "Ключ Энкап"
. Это просто указывает, каков вариант использования производных подразделов — это обеспечивает некоторое разделение предметной области.
Если это предположение верно, как можно вычислить границу времени жизни главного ключа?
Предположим, что вы выводите 256-битные ключи и используете как минимум SHA-256 в качестве базового хэша. Тогда дополнительную вероятность столкновения можно считать пренебрежимо малой; это полностью зависит от свойств коллизии предоставляемого одноразового номера.
Как указано, могут быть и другие причины, по которым вы хотите время от времени обновлять свой главный ключ, потому что безопасность сообщений по-прежнему зависит от этого единственного ключа.