Как работать с ключами открытого текста с помощью CNG?

У меня есть набор предопределенных ключей открытого текста, которые я использую для симметричного шифрования/дешифрования. Эти ключи используются для зашифрованной связи с аппаратными устройствами, подключенными к ПК. Я хотел бы использовать поставщика хранилища ключей CNG для безопасного хранения этих ключей. Шифрование и дешифрование должны выполняться вне CNG. Мне нужно только безопасное место, где можно хранить и откуда извлекать предопределенные ключи открытого текста. В последние дни я изучал справочник по функциям CNG, но не смог найти способ импортировать/экспортировать симметричный ключ открытого текста, идентифицируемый по имени, в контейнер ключей CNG.

Я знаю, что CryptoAPI предоставляет функции для импорта/экспорта сеансовых ключей. Но этот старый API не предоставляет постоянных (сеансовых) ключей и не позволяет выбирать/идентифицировать ключи по имени в контейнере ключей.

Любая помощь очень ценится. Заранее спасибо.


person Gugl Andi    schedule 04.11.2014    source источник


Ответы (1)


Боюсь, вам не повезло получить прямое решение, поскольку поставщики хранилищ ключей CNG в настоящее время поддерживают асимметричные ключи, но не симметричные. Только примитивные поставщики поддерживают симметричные ключи.

Эта модель ориентирована на асимметричные ключи, которые необходимо защищать в долгосрочной перспективе, а симметричные ключи используются только для одного сеанса, а затем выбрасываются. Эти симметричные ключи могут быть получены из асимметричного ключа, такого как ключ Диффи-Хеллмана или ECDH.

Вы говорите, что хотите, чтобы ключи хранились надежно, но шифрование/дешифрование выполняется вне CNG. В зависимости от того, от каких угроз вы пытаетесь защититься, этот подход может оказаться неправильным. Обычно, если вы храните ключи в провайдере хранилища ключей, вы хотите, чтобы криптографические операции выполнялись внутри провайдера хранилища ключей, и не хотите, чтобы ключи когда-либо покидали его (кроме зашифрованных другим ключом), поскольку это подвергает материал ключа злоумышленник.

Однако, если вы уверены, что это то, что вам нужно, одним из вариантов может быть создание ключа RSA в вашем поставщике хранилища ключей и использование его для шифрования и расшифровки симметричных ключей. Вы должны хранить зашифрованные симметричные ключевые BLOB-объекты в другом месте, например. в файловой системе.

person softwariness    schedule 23.01.2015