Предположим, что мы хотим увеличить время жизни мастер-ключа.Можем ли мы сделать это, добавив шаг получения ключа перед фактическим шифрованием? Предполагая, что мы используем мастер-ключ в качестве входного ключевого материала и случайный одноразовый номер в 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 в качестве базового хэша. Тогда дополнительную вероятность столкновения можно считать пренебрежимо малой; это полностью зависит от свойств коллизии предоставляемого одноразового номера.
Как указано, могут быть и другие причины, по которым вы хотите время от времени обновлять свой главный ключ, потому что безопасность сообщений по-прежнему зависит от этого единственного ключа.