Функции CNG

CNG имеет следующие функции.

Криптографическая гибкость

Одним из ключевых преимуществ CNG является криптографическая гибкость, иногда называемая криптографическим agnosticism. Преобразование реализации таких протоколов , как протоколSSL или протокол TLS, CMS (S/MIME), IPsec, Kerberos и т. д., требуется, чтобы сделать эту возможность ценной. На уровне CNG необходимо обеспечить подстановку и возможность обнаружения для всех типов алгоритмов (симметричных, асимметричных, хэш-функций), создания случайных чисел и других служебных функций. Изменения на уровне протокола являются более значительными, поскольку во многих случаях API протокола, необходимые для добавления выбора алгоритма и других параметров гибкости, которые ранее не существовали.

CNG впервые доступен в Windows Vista и позиционируется для замены существующих способов использования CryptoAPI в стеке программного обеспечения Майкрософт. Сторонние разработчики найдут множество новых возможностей в CNG, в том числе:

  • Новая система конфигурации шифрования, поддерживающая лучшую криптографическую гибкость.
  • Более детальное абстракция для хранилища ключей (и разделение хранилища от операций алгоритма).
  • Изоляция процессов для операций с долгосрочными ключами.
  • Заменяемые генераторы случайных чисел.
  • Облегчение от ограничений на подписывание экспорта.
  • Потокобезопасность во всем стеке.
  • КРИПТОГРАФИЧЕСКИЙ API в режиме ядра.

Кроме того, CNG включает поддержку всех необходимых алгоритмов Suite B, включая криптографию эллиптических кривых (ECC). Существующие приложения CryptoAPI будут продолжать работать по мере того, как становится доступным CNG.

Сертификация и соответствие требованиям

CNG проверяется на соответствие федеральным стандартам обработки информации (FIPS) 140-2 и является частью целевой оценки для сертификации Windows общих критериев. CNG был разработан для использования в качестве компонента в проверенной системе уровня 2 FIPS.

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

Поддержка пакета Suite B

Важной особенностью CNG является поддержка алгоритмов Suite B. В феврале 2005 года Агентство национальной безопасности (NSA) США объявило о скоординированном наборе симметричного шифрования, асимметричного секретного соглашения (также известного как обмен ключами), цифровой подписи и хэш-функций для будущего использования правительства США под названием Suite B. NSA объявила, что сертифицированные реализации Suite B могут и будут использоваться для защиты информации, обозначенной как Top Secret, Secret и private information, что в прошлом было описано как конфиденциальные, но неклассифицированные. Из-за этого поддержка Suite B очень важна для поставщиков программного обеспечения приложений и системных интеграторов, а также для Майкрософт.

Все алгоритмы Suite B являются общедоступными. Они были разработаны вне сферы действия государственной тайны, исторически связанной с разработкой криптографических алгоритмов. В рамках этого же периода некоторые европейские страны и регионы также предложили те же требования к пакету B для защиты их информации.

Набор B шифрования рекомендует использовать многоточие кривых Diffie-Hellman (ECDH) во многих существующих протоколах, таких как Exchange ключей Интернета (IKE, в основном используемых в IPsec), tls и Secure MIME (S/MIME).

CNG включает поддержку suite B, которая распространяется на все необходимые алгоритмы: AES (все размеры ключей), семейство SHA-2 (SHA-256, SHA-384 и SHA-512) алгоритмов хэширования, ECDH и эллиптических кривых DSA (ECDSA) на основе NIST-стандартных простых кривых P-256, P-384 и P-521. Двоичные кривые, Коблицские кривые, пользовательские простые кривые и эллиптические кривые Menezes-Qu-Vanstone (ECMQV) не поддерживаются поставщиками алгоритмов Майкрософт, включенными в Windows Vista.

Поддержка прежних версий

CNG обеспечивает поддержку текущего набора алгоритмов в CryptoAPI 1.0. Каждый алгоритм, поддерживаемый в настоящее время в CryptoAPI 1.0, будет по-прежнему поддерживаться в CNG.

Поддержка режима ядра

CNG поддерживает шифрование в режиме ядра. Одни и те же API используются как в ядре, так и в пользовательском режиме для полной поддержки функций шифрования. Протокол SSL/TLS и IPsec работают в режиме ядра в дополнение к процессам загрузки, которые будут использовать CNG. Не все функции CNG можно вызывать из режима ядра. Справочный раздел для функций, которые нельзя вызывать из режима ядра, явно указывает, что функция не может быть вызвана из режима ядра. В противном случае все функции CNG можно вызывать из режима ядра, если вызывающий объект выполняется в PASSIVE_LEVELIRQL. Кроме того, некоторые функции CNG в режиме ядра могут вызываться в DISPATCH_LEVEL IRQL в зависимости от возможностей поставщика.

Интерфейс поставщика поддержки безопасности ядра Майкрософт (Ksecdd.sys) — это программный модуль на основе программного обеспечения, размещенный на уровне режима ядра Windows. Ksecdd.sys выполняется в качестве драйвера экспорта в режиме ядра и предоставляет службы шифрования через документированные интерфейсы для компонентов ядра. Единственным встроенным алгоритмом поставщика Майкрософт, который не поддерживается Ksecdd.sys, является DSA.

Windows Server 2008 и Windows Vista: CNG не поддерживает подключаемые алгоритмы и поставщики в режиме ядра. Единственными поддерживаемыми алгоритмами шифрования, доступными в режиме ядра, являются те реализации, которые корпорация Майкрософт предоставляет через API CNG в режиме ядра.

Аудит

Для соблюдения некоторых требований общих критериев в дополнение к обеспечению комплексной безопасности многие действия, происходящие на уровне CNG, проверяются в поставщике хранилища ключей программного обеспечения Майкрософт (KSP). Microsoft KSP соответствует следующим рекомендациям по созданию записей аудита в журнале безопасности:

  • Необходимо проверять сбои создания ключей и пар ключей, включая самоиспеченные сбои.
  • Необходимо выполнить аудит импорта и экспорта ключей.
  • Необходимо проверить сбои уничтожения ключей.
  • Постоянные ключи необходимо проверять при записи в файлы и считывания из них.
  • Сбои проверки согласованности с парой должны быть проверены.
  • Сбои проверки секретного ключа, если таковые есть, должны быть проверены, например проверки четности для ключей 3DES.
  • Ошибки шифрования, расшифровки, хэширования, подписи, проверки, обмена ключами и создания случайных чисел должны быть проверены.
  • Необходимо проверять криптографические самоинициалы.

Как правило, если ключ не имеет имени, это временный ключ. Временный ключ не сохраняется, и microsoft KSP не создает записи аудита для временных ключей. Microsoft KSP создает записи аудита только в пользовательском режиме в процессе LSA. Запись аудита не создается с помощью CNG в режиме ядра. Администраторам необходимо настроить политику аудита для получения всех журналов аудита KSP из журнала безопасности. Администратор должен выполнить следующую командную строку, чтобы настроить дополнительные аудиты, созданные поставщиком ключевых показателей эффективности.

auditpol /set /subcategory:"other system events" /success:enable /failure:enable

Заменяемые генераторы случайных чисел

Другим улучшением, которое обеспечивает CNG, является возможность замены генератора случайных чисел по умолчанию (RNG). В CryptoAPI можно предоставить альтернативный RNG в рамках поставщика служб шифрования (CSP), но невозможно перенаправить базовые поставщики служб Майкрософт для использования другого RNG. CNG позволяет явно указать определенный RNG для использования в определенных вызовах.

Потокобезопасность

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

Режим операции

CNG поддерживает пять режимов операций, которые можно использовать с симметричными блочных шифрами с помощью API шифрования. Эти режимы и их поддержка перечислены в следующей таблице. Режим работы можно изменить, задав свойство BCRYPT_CHAINING_MODE для поставщика алгоритмов с помощью функции BCryptSetProperty .

Режим работы значение BCRYPT_CHAINING_MODE Алгоритмы Standard
ECB (электронная кодовая книга) BCRYPT_CHAIN_MODE_ECB Симметричные блочные шифры SP800-38A
CBC (цепочка блоков шифра) BCRYPT_CHAIN_MODE_CBC Симметричные блочные шифры SP800-38A
CFB (отзыв о шифре) BCRYPT_CHAIN_MODE_CFB Симметричные блочные шифры SP800-38A
CCM (счетчик с CBC) BCRYPT_CHAIN_MODE_CCM AES SP800-38C
GCM (режим галуа/счетчика) BCRYPT_CHAIN_MODE_GCM AES SP800-38D

 

Примечание

В Windows Vista определены только режимы работы ECB, CBC и CFB. GCM и CCM требуют Windows Vista с пакетом обновления 1 (SP1) или Windows Server 2008.