Я знаю, это звучит безумно, но выслушайте меня. В качестве продолжения Можно ли использовать тег аутентификации AES-GCM в качестве функции получения ключа?, я также рассматриваю более творческий решения для получения уникальных (симметричных) ключей устройств из надежно сохраненного корневого ключа.
(Предыстория заключается в том, что у нас есть много клиентов (= устройств), которые не могут использовать асимметричную криптографию (в основном из-за аппаратных ограничений). Чтобы установить соединение TLS PSK, нам нужен общий секрет между серверной частью и клиентом. Вместо безопасного хранения уникальный ключ для каждого клиента в серверной части, мы получаем ключ для конкретного клиента из корневого секрета, используя уникальные идентификаторы устройства.)
Мотивация использования ключей RSA исходит из Схема ценообразования Azure Key Vault и доступность модулей HSM в разных регионах. Операции с симметричным ключом доступны только как «расширенные ключи» на HSM, если я правильно прочитал документацию, и, таким образом, они в 5 раз дороже, чем операции RSA (в дополнение к пошаговой почасовой ставке HSM). Кроме того, ограничение на выбор регионов (где доступны управляемые HSM) также может стать препятствием для сделки.
Итак, чтобы обойтись с ECC или RSA, у меня есть следующая идея:
$\text{KDF}(ключ, данные) = \text{SHA256}(\text{RSA-PKCS1v1.5-sign}(ключ, данные))$
Другими словами: сохраните неэкспортируемый ключ RSA в хранилище ключей и используйте детерминированную схему подписи PKCS1 v1.5 в качестве вывода ключа, используя произвольные данные в качестве значения вывода (например, соль, объединенную с идентификатором устройства). Чтобы разрушить алгебраические свойства RSA и сконцентрировать ключевой материал до 256 бит, подпись хэшируется с помощью SHA-256.
Интуитивно это безопасно, потому что подпись невозможно подделать, и, следовательно, невозможно угадать конкретное выходное значение операции со знаком (без ключа). Так что где-то в этой сигнатуре достаточно «энтропии» (неугадываемых битов), чтобы быть устойчивым к грубой силе, и эта «энтропия» должна быть равномерно распределена по результату хеш-операции.
Может ли кто-нибудь дать более строгое рассуждение (или даже доказательство при стандартных предположениях)?