Рейтинг:1

Можно ли использовать хэш подписи RSA PKCS1 v1.5 в качестве функции получения ключа?

флаг na

Я знаю, это звучит безумно, но выслушайте меня. В качестве продолжения Можно ли использовать тег аутентификации 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.

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

Может ли кто-нибудь дать более строгое рассуждение (или даже доказательство при стандартных предположениях)?

Maarten Bodewes avatar
флаг in
Что вы имеете в виду под "где-то в подписи достаточно энтропии"? Вся энтропия в ключе и соли, дополнительной энтропии нет, т.к. подписание PKCS#1 полностью детерминировано (разумеется, иначе ваша схема не работала бы как KDF, конечно). В остальном я не вижу ничего плохого в этой схеме, если, конечно, соль и ID не повторяются. К сожалению, нельзя желать уникальности из воздуха.
Perseids avatar
флаг na
@MaartenBodewes Формально говоря, моя интуиция совершенно неверна, как вы правильно заметили. Приятно получить подтверждение того, что это работает, но я в основном ищу аргумент, который убедит кого-то скептически настроенного.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.