Открыть сервис

Cryptography Next Generation

Cryptography Next Generation (CNG) — это криптографический API (интерфейс прикладного программирования), входящий в состав операционных систем семейства Microsoft Windows, начиная с Windows Vista и Windows Server 2008. CNG пришёл на смену устаревшему API CryptoAPI (Cryptographic Application Programming Interface) и предназначен для обеспечения криптографических операций в приложениях, таких как шифрование, расшифрование, хеширование, создание и проверка цифровых подписей, а также генерация и управление ключами. Разработка CNG велась компанией Microsoft с целью создания модульной, расширяемой и соответствующей современным стандартам безопасности криптографической платформы.

История

Предшественник CNG, CryptoAPI, был представлен в Windows NT 4.0 в 1996 году и долгое время оставался основным криптографическим интерфейсом в Windows. Однако к середине 2000-х годов он устарел: не поддерживал алгоритмы, ставшие стандартами (например, AES с длиной ключа 256 бит, SHA-256, ECDSA), имел жёсткую архитектуру, затруднявшую добавление новых криптопровайдеров, и не соответствовал требованиям Федерального стандарта обработки информации США (FIPS 140-2) для работы в государственных учреждениях.

Разработка CNG началась в 2005 году под кодовым названием «CryptoAPI 2.0». Впервые API был включён в состав бета-версии Windows Vista (Longhorn) и стал доступен разработчикам в 2006 году. Окончательная версия вышла вместе с релизом Windows Vista 30 января 2007 года. В Windows 7 и Windows Server 2008 R2 CNG был значительно расширен: добавлена поддержка эллиптической криптографии (ECC), алгоритмов шифрования с аутентификацией (AES-GCM, AES-CCM) и улучшена интеграция с аппаратными модулями безопасности (HSM). В последующих версиях Windows (8, 8.1, 10, 11) CNG продолжал развиваться, включая поддержку новых алгоритмов, таких как Ed25519 и X25519, а также улучшенную работу с контейнерами ключей и управление сертификатами.

Архитектура и компоненты

CNG построен по модульному принципу, что отличает его от монолитного CryptoAPI. Основные компоненты архитектуры включают:

  • CNG Provider Interface (CNG PI) — интерфейс для разработки криптопровайдеров. Провайдеры могут быть программными (реализующими алгоритмы на уровне ядра или пользовательского режима) или аппаратными (взаимодействующими с HSM, смарт-картами или TPM).
  • Key Storage Provider (KSP) — провайдеры для хранения и управления ключами. Поддерживаются как программные контейнеры (реестр, файлы), так и аппаратные носители.
  • Cryptographic Primitive Provider (CPP) — провайдеры для реализации базовых криптографических примитивов: симметричных и асимметричных алгоритмов, хеш-функций, генераторов случайных чисел.
  • CNG API — набор функций, доступных приложениям через библиотеку bcrypt.dll (для примитивов) и ncrypt.dll (для хранения ключей и асимметричных операций).

Модульность позволяет сторонним разработчикам создавать собственные криптопровайдеры, которые могут быть зарегистрированы в системе и использоваться стандартными приложениями Windows без изменения кода последних. Это особенно важно для организаций, использующих сертифицированные криптографические алгоритмы (например, российские ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012), которые могут быть реализованы в виде отдельного провайдера CNG.

Поддерживаемые алгоритмы

CNG поддерживает широкий спектр криптографических алгоритмов, соответствующих современным стандартам. Список алгоритмов, встроенных в Windows, включает:

Симметричное шифрование

Асимметричное шифрование и цифровые подписи

  • RSA (Rivest–Shamir–Adleman) с длинами ключей от 1024 до 16384 бит.
  • DSA (Digital Signature Algorithm) — устаревший, поддерживается для совместимости.
  • ECDSA (Elliptic Curve Digital Signature Algorithm) с кривыми NIST P-256, P-384, P-521, а также с кривыми Brainpool и Edwards (Ed25519, Ed448).
  • ECDH (Elliptic Curve Diffie-Hellman) для обмена ключами.
  • Diffie-Hellman (DH) — классический протокол обмена ключами.

Хеш-функции

  • SHA-1, SHA-256, SHA-384, SHA-512 (семейство SHA-2).
  • SHA-3 (поддерживается начиная с Windows 10 версии 1903).
  • MD5, MD4, MD2 — устаревшие, поддерживаются для обратной совместимости.
  • HMAC (Hash-based Message Authentication Code) на основе указанных хешей.

Генерация случайных чисел

  • Криптостойкий генератор псевдослучайных чисел (CSPRNG), соответствующий стандартам FIPS 140-2 и NIST SP 800-90A.

Применение

CNG используется в различных компонентах операционной системы Windows и сторонних приложениях:

  • BitLocker Drive Encryption — шифрование дисков с использованием AES через CNG.
  • Windows Defender Application Guard — изоляция браузера и приложений с использованием криптографических операций CNG.
  • Secure Boot — верификация загрузчиков и драйверов с помощью цифровых подписей, проверяемых через CNG.
  • TLS/SSL — протоколы защиты сетевого трафика (например, в Internet Explorer, Microsoft Edge, IIS) используют CNG для шифрования и аутентификации.
  • Сертификаты и PKI — управление сертификатами X.509, создание запросов на сертификат (CSR) и проверка цепочек сертификатов.
  • Сторонние приложения — разработчики могут использовать CNG для реализации собственных криптографических функций, например, в банковских системах, электронном документообороте, VPN-клиентах.

Преимущества и недостатки

Преимущества

  • Модульность — возможность добавления новых алгоритмов и провайдеров без изменения приложений.
  • Совместимость с FIPS 140-2 — CNG сертифицирован для использования в государственных учреждениях США.
  • Поддержка современных алгоритмов — ECC, AES-GCM, SHA-3, Ed25519.
  • Интеграция с аппаратными модулями — TPM, смарт-карты, HSM.
  • Производительность — оптимизация для многоядерных процессоров и аппаратного ускорения (например, инструкции AES-NI).

Недостатки

  • Привязка к Windows — CNG не является кроссплатформенным решением.
  • Сложность разработки — API требует глубокого понимания криптографии и управления памятью.
  • Обратная совместимость — старые приложения, использующие CryptoAPI, не могут напрямую работать с CNG без модификации.
  • Зависимость от версии ОС — некоторые алгоритмы (например, SHA-3) доступны только в новых версиях Windows.

Сравнение с CryptoAPI

ХарактеристикаCryptoAPICNG
АрхитектураМонолитнаяМодульная
Поддержка алгоритмовОграниченная (DES, RSA, SHA-1)Широкая (AES, ECC, SHA-2/3, Ed25519)
РасширяемостьТолько через CSP (Cryptographic Service Provider)Через провайдеры CNG (KSP, CPP)
FIPS 140-2Сертифицирован (версия 1.0)Сертифицирован (версия 2.0)
Аппаратная поддержкаОграниченнаяПолная (TPM, HSM, смарт-карты)
Управление ключамиЧерез реестр и файлыЧерез KSP (включая аппаратные контейнеры)

Безопасность

CNG разработан с учётом требований безопасности, включая защиту от атак по сторонним каналам (например, timing attacks) и использование криптостойких генераторов случайных чисел. В Windows 10 и 11 компания Microsoft внедрила механизмы изоляции ключей в защищённой памяти ядра, что затрудняет их извлечение даже при компрометации пользовательского режима. Однако, как и любое программное обеспечение, CNG не является абсолютно защищённым: уязвимости могут возникать из-за ошибок в реализации алгоритмов или в сторонних провайдерах. Регулярные обновления безопасности Windows устраняют выявленные проблемы.

Критика

Основные критические замечания в адрес CNG связаны с его закрытостью и привязкой к экосистеме Microsoft. Сторонние разработчики отмечают, что документация по API иногда неполна, а отладка провайдеров CNG сложна из-за ограниченных инструментов. Кроме того, в некоторых версиях Windows наблюдались проблемы с производительностью при работе с большими объёмами данных, особенно при использовании аппаратных провайдеров. В ответ Microsoft выпустила обновления, оптимизирующие работу CNG, и улучшила документацию начиная с Windows 10.

Интересные факты

  • CNG поддерживает до 256 одновременных криптографических операций на одном процессоре, что позволяет эффективно использовать многоядерные системы.
  • В Windows 10 версии 1809 была добавлена поддержка алгоритма Ed25519, который используется в блокчейн-технологиях и протоколах, таких как Signal.
  • Некоторые российские криптопровайдеры, например, «КриптоПро CSP», реализуют алгоритмы ГОСТ через интерфейс CNG, что позволяет использовать их в стандартных приложениях Windows.
  • CNG является частью платформы Windows, но также доступен для Windows Embedded и Windows IoT, что расширяет его применение во встраиваемых системах.

Источники

  • Microsoft Docs. «Cryptography Next Generation (CNG)». Windows App Development.
  • Microsoft Docs. «CNG Architectural Overview». Windows Server Documentation.
  • NIST. «FIPS 140-2 Security Requirements for Cryptographic Modules».
  • Русскоязычная документация Microsoft. «Обзор CNG (Cryptography Next Generation)».
  • Статья «Cryptography Next Generation» в англоязычной Википедии (версия от 2023 года).
  • Технический блог Microsoft. «Improvements in Cryptography Next Generation in Windows 10».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →