Создать закрытый ключ CrypoAPI (CAPI) - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь реализовать шифрование в покое, используя IXmlEncryptor . В частности, используя CertificateEncryptor. (Это часть системы IXmlRepository для совместного использования ключей для расшифровки файлов cookie и общего управления ключами в ASP. NET Core.)

Эта страница документации обсуждает использование сертификата X.509 для этой цели.

Указывает, что «поддерживаются только сертификаты с закрытыми ключами CAPI ».

Поиск в Google, который показывает, что CAPI означает Microsoft CryptAPI. Но я не могу найти намного больше об этом, и то, что я могу найти, похоже, связано с C ++.

Мой «специалист по сертификатам» в основном сказал мне это, когда я спросил его, что такое «закрытый ключ CAPI»:

Сгенерированные Microsoft файлы PFX, преобразованные в x509, имеют пароль. Это было бы единственное, о чем я мог подумать.

Это то же самое?

Если нет, как сертификат X.509 с закрытым ключом CAPI созданный?

ПРИМЕЧАНИЕ. Сертификат X.509 является единственным вариантом из перечисленных на странице docs , который будет работать на Linux машине (контейнере). Вот почему я не смотрю ни на какие другие (возможно, более простые) варианты.

1 Ответ

2 голосов
/ 21 апреля 2020

Ваш «сертификатный парень» неверен.

У Microsoft есть две версии систем шифрования: Legacy CrypotAPI (просто CryptoAPI или CAPI) и криптография следующего поколения (CNG, CAPI2).

CrytpoAPI был изобретен в Windows 2000. Устаревший CryptoAPI морально устарел без поддержки E CC, SHA2: только RSA / устаревшие DSA (ключи длиной до 1 КБ), DES / 3DES, RCx, без встроенного AES. Ключи хранятся в унаследованном поставщике услуг шифрования (или CSP). Хотя в Windows Vista + был добавлен устаревший CSP с SHA2 и AES, чтобы помочь старым приложениям использовать их без особых изменений в коде.

CNG был впервые представлен еще в 2007 году в Windows Vista / Windows Server 2008 и действительно хороший материал: он довольно расширяемый, с собственной поддержкой криптографии NSA Suite B (ключи E CC asymmetri c, группы алгоритмов SHA2), изоляция ключей, унифицированный набор функций BCrypt и необходимость Больше. Большинство API только для CNG включают NCrypt, BCrypt, CNG, NG суффиксы / префиксы в своих именах, чтобы явно сказать, что это API CNG. В CNG ключи хранятся в перепроектированном CSP, называемом Key Storage Provider (KSP), чтобы отличать его guish от устаревшего CSP, поскольку они не совпадают (хотя существует односторонний мост для доступа к CSP из KSP, но не иначе).

Однако. NET изо всех сил пытался принять CNG и сделал его более или менее пригодным для использования только в. NET 4.7 (реализации существовали раньше, но с известными ограничениями) и 3-м сторонние приложения поддерживают CNG только тогда, когда они явно добавляют его поддержку, потому что CNG использует различные API и. NET Обновление Framework не делает приложение CNG-совместимым.

Это было немного теории о том, что такое Разница между CAPI и CAPI2.

И в вашей документации говорится, что для хранения закрытых ключей требуются сертификаты, использующие устаревший CSP. При создании в Windows устаревший CSP используется при использовании одного из следующих провайдеров:

Microsoft Base Cryptographic Provider v1.0
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
Microsoft Base DSS Cryptographic Provider
Microsoft Base Smart Card Crypto Provider
Microsoft DH SChannel Cryptographic Provider
Microsoft Enhanced Cryptographic Provider v1.0
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider
Microsoft Enhanced RSA and AES Cryptographic Provider
Microsoft RSA SChannel Cryptographic Provider <- this is preferred for legacy CSPs
Microsoft Strong Cryptographic Provider

Вы можете указать любой из них при создании сертификата (пары ключей) в Windows. Например, при использовании New-SelfSignedCertificate командлета PowerShell (по умолчанию используется CNG KSP) или инструмента certreq.exe для создания запроса на подпись внешним ЦС. Эта часть зависит от инструментов, которые вы используете для создания сертификатов / запросов на сертификаты.

...