Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Цель
API шифрования: следующее поколение (CNG) является долгосрочной заменой cryptoAPI. CNG разработан с возможностью расширения на разных уровнях, а его поведение не зависит от конкретных криптографических алгоритмов.
Аудитория разработчика
CNG предназначен для использования разработчиками приложений, которые позволят пользователям создавать и обмениваться документами и другими данными в безопасной среде, особенно в небезопасных носителях, таких как Интернет. Разработчики должны быть знакомы с языками программирования C и C++ и средой программирования на основе Windows. Хотя это и не обязательно, рекомендуется знание криптографии и тем, связанных с безопасностью.
Если вы разрабатываете поставщик криптографических алгоритмов CNG или поставщик хранилища ключей, необходимо скачать пакет средств разработки поставщиков шифрования от Майкрософт.
Требования к среде выполнения
CNG поддерживается начиная с Windows Server 2008 и Windows Vista. Сведения о требованиях среды выполнения для определенного элемента программирования см. в разделе "Требования " эталонной страницы для этого элемента.
В этом разделе
В следующих разделах содержатся сведения о CNG и его использовании в приложениях:
| Тема | Описание |
|---|---|
| О CNG | Описание функций CNG, криптографических примитивов и хранилища ключей, извлечения, импорта и экспорта. |
| Использование CNG | Объясняет, как использовать функции конфигурации шифрования для CNG и типичного программирования CNG. |
| Справочник по CNG | Подробные описания элементов программирования CNG. Эти страницы содержат справочные описания API для работы с CNG. |
Когда следует использовать CNG
Используйте CNG, если требуется прямой контроль над криптографическими операциями в Windows приложениях. Следующие рекомендации помогут выбрать соответствующий API:
| Scenario | Рекомендуемый API |
|---|---|
| Симметричное шифрование и расшифровка (AES, ChaCha20-Poly1305) | CNG (BCryptEncrypt / BCryptDecrypt) |
| Хэширование (SHA-256, SHA-384, SHA-512) | CNG (BCryptCreateHash) |
| Асимметричные операции (RSA, ECDSA, ML-DSA) | CNG (BCryptSignHash, BCryptVerifySignature) |
| Защита данных пользователя при хранении (в контексте отдельного пользователя или всего компьютера) | DPAPI (проще, управление ключами не требуется) |
| Защита данных, доступных нескольким пользователям или компьютерам | DPAPI-NG (NCryptProtectSecret) |
| ПОДКЛЮЧЕНИЯ TLS/SSL | Schannel (внутренне использует CNG) |
| Устаревший код, который уже использует CryptoAPI | Продолжайте использовать CryptoAPI для обслуживания, но запланируйте миграцию на CNG для новых функций |
Warning
Распространенные криптографические ловушки, чтобы избежать:
- Не используйте режим блочного шифра ECB — он раскрывает шаблоны открытого текста. Используйте CBC со случайным вектором инициализации (IV) или, что предпочтительнее, аутентифицированный режим, например GCM.
- Не следует жестко кодировать ключи шифрования в исходном коде. Используйте поставщики хранилища ключей или DPAPI для защиты ключей.
- Не используйте MD5 или SHA-1 для обеспечения целостности или безопасности. Используйте SHA-256 или сильнее.
- Всегда проверяйте коды возврата из функций CNG. Сбой криптографической операции, которая автоматически игнорируется, может привести к хранению незашифрованных данных.