Генерация ключей AES с использованием HSM и HKDF

У нас есть сафенет HSM. Наша система требует от нас генерировать ключи AES-256. Какой подход я выберу?

  1. Поручите HSM генерировать ключи AES.

  2. Используйте HSM для создания материала ввода и используйте HKDF для получения ключей.

Предполагается, что HSM сможет генерировать высококачественные ключи. Есть ли необходимость во втором подходе?

1 ответ

Глядя на RFC 5869 для HKDF, в разделе Информация:

HKDF следует парадигме "извлечение-затем-расширение", где KDF логически состоит из двух модулей. Первый этап берет материал ввода ключа и "извлекает" из него псевдослучайный ключ K. фиксированной длины. Второй этап "расширяет" ключ K на несколько дополнительных псевдослучайных ключей (вывод KDF).

Подразумевается, что если бы вы использовали HRNG (аппаратный генератор случайных чисел) HSM, а затем использовали HKDF, вы бы по существу вводили Pseudo-Randomness в ваш ключ AES, который полностью побеждает цель.

Вариант № 1 становится тогда, очевидно, правильным выбором, в противном случае весь смысл использования ГСЧ ИБМ будет побежден.

Я хотел бы представить краткую цель, но перед этим: Да, HSM уже может генерировать высококачественные ключи AES. Внутри HSM использует собственный генератор случайных чисел для достижения энтропии. Однако вы можете заполнить HSM своими собственными случайными числами (обычно вы можете использовать истинные генераторы случайных чисел, такие как QRNG от Idquantique). Использование такого оборудования, как QRNG, увеличивает случайность ваших ключей.

Далее, извлечение (например, HKDF) может также генерировать надежные ключи, но в целом методы извлечения используются для генерации симметричных ключей сеанса, т. Е. Используются для выполнения некоторых криптографических операций (например, шифрование / дешифрование) для конкретного контекста / объекта.

Например: у вас есть главный ключ (например, ключ AES, сгенерированный механизмом обмена ключами), а затем вы можете получить этот главный ключ для генерации ключей сеанса для шифрования / дешифрования различных объектов. Это было то, что вы использовали разные сеансовые ключи для выполнения криптографических операций в зависимости от контекста.

Итак, для второго пункта: либо вы используете собственный ключевой материал (надеясь, что ваши ключевые алгоритмы достаточно сильны), либо используете подход с мастер-ключом, как описано выше.

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

Другие вопросы по тегам