Поделиться через


Импорт и экспорт ключей

С помощью CNG можно импортировать и экспортировать симметричные ключи и асимметричные ключи. Кроме того, вы можете использовать функции экспорта и импорта ключей для перемещения ключей между компьютерами.

симметричные ключи;

Чтобы импортировать или экспортировать симметричные (или сеансовые) ключи, в которых один и тот же ключ используется для шифрования и расшифровки некоторых данных, можно использовать функции BCryptImportKey и BCryptExportKey . Как правило, сначала экспорт ключа выполняется с помощью функции BCryptExportKey перед импортом с помощью функции BCryptImportKey . Функции предназначены для включения шифрования экспортированных и импортированных ключей с помощью параметров hExportKey и hImportKey ; однако реализация этих функций корпорацией Майкрософт не поддерживает шифрование экспортированных и импортированных ключей.

асимметричные ключи;

Для импорта асимметричных (или открытых и закрытых) пар ключей, в которых один ключ используется для шифрования, а другой — для расшифровки некоторых данных, можно использовать одну из функций BCryptImportKeyPair или NCryptImportKey . Поставщик CNG должен кодировать пару ключей с использованием поддерживаемого типа ключа BLOB . BCryptExportKey можно использовать для создания большого двоичного объекта закодированного ключа. Структуры CNG описывают типы и структуры ключевых BLOB-объектов, поддерживаемые поставщиком хранилища ключей Майкрософт.

Чтобы BCryptExportKey создавал пару сохраненных ключей, большой двоичный объект входного ключа должен содержать закрытый ключ. Открытые ключи не сохраняются.

Имя ключа и политика экспорта не являются частью структуры BLOB, определенной в разделе Структуры CNG. Однако если BLOB имеет непрозрачный тип BLOB (например, образ памяти внутреннего состояния ключа), blOB может содержать имя ключа и свойства политики экспорта.

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

Импорт сохраненного ключа

  1. Создайте сохраненный ключ с помощью функции NCryptCreatePersistedKey .
  2. Задайте все необходимые свойства объекта ключа с помощью функции NCryptSetProperty .
  3. Задайте blOB-объект импорта ключа в качестве свойства ключа, а в качестве имени свойства — тип BLOB.
  4. Завершите импорт сохраненного ключа с помощью функции NCryptFinalizeKey .