Функции CNG
CNG имеет следующие функции.
- Криптографическая гибкость
- Сертификация и соответствие требованиям
- Поддержка пакета Suite B
- Поддержка устаревших версий
- Поддержка режима ядра
- Аудит
- Заменяемые генераторы случайных чисел
- Потокобезопасность
- Режим операции
Криптографическая гибкость
Одним из ключевых преимуществ CNG является криптографическая гибкость, иногда называемая криптографическим agnosticism. Преобразование протоколов, таких как протокол SSL или протокол TLS, CMS (S/MIME), IPsec, Kerberos и т. д. в CNG, необходимо было сделать эту возможность ценной. На уровне CNG необходимо обеспечить подстановку и возможность обнаружения для всех типов алгоритмов (симметричных, асимметричных, хэш-функций), случайного создания чисел и других служебных функций. Изменения на уровне протокола являются более значительными, поскольку во многих случаях API протокола, необходимые для добавления выбора алгоритма и других параметров гибкости, которые ранее не существовали.
CNG впервые доступен в Windows Vista и расположен для замены существующего использования CryptoAPI в стеке программного обеспечения Майкрософт. Сторонние разработчики будут находить множество новых функций в CNG, в том числе:
- Новая система конфигурации шифрования, поддерживающая более высокую гибкость шифрования.
- Более детальное абстракция для хранилища ключей (и разделение хранилища от операций алгоритма).
- Изоляция процессов для операций с долгосрочными ключами.
- Заменяемые генераторы случайных чисел.
- Облегчение от ограничений подписывания экспорта.
- Потокобезопасность во всем стеке.
- Криптографический API в режиме ядра.
Кроме того, CNG включает поддержку всех необходимых алгоритмов Suite B, включая криптографию с многоточием кривой (ECC). Существующие приложения CryptoAPI будут продолжать работать, так как CNG становится доступным.
Сертификация и соответствие требованиям
CNG проверяется до федеральных стандартов обработки информации (FIPS) 140-2 и является частью цели оценки для сертификации общих критериев Windows. CNG предназначен для использования в качестве компонента в проверенной системе уровня FIPS 2.
CNG соответствует требованиям общих критериев, сохраняя и используя ключи длительного существования в безопасном процессе.
Поддержка пакета Suite B
Важной особенностью CNG является его поддержка алгоритмов Suite B. В феврале 2005 года Агентство национальной безопасности (NSA) США объявило о координированном наборе симметричного шифрования, асимметричном секретном соглашении (также известном как обмен ключами), цифровой подписи и хэш-функции для будущего использования правительства США с именем Suite B. NSA объявила о том, что сертифицированные реализации Suite B могут и будут использоваться для защиты информации, указанной как Top Secret, Secret и частной информации, которая в прошлом была описана как конфиденциально-но-неклассифицированная. Из-за этого поддержка Suite B очень важна для поставщиков программного обеспечения приложений и системных интеграторов, а также для Майкрософт.
Все алгоритмы Suite B являются общедоступными. Они были разработаны за пределами области государственного секретности исторически связанного с разработкой криптографических алгоритмов. В этот же период времени некоторые европейские страны и регионы также предложили те же требования Suite B для защиты их информации.
Набор B шифрования рекомендует использовать многоточие кривой Diffie-Hellman (ECDH) во многих существующих протоколах, таких как Обмен ключами Интернета (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_LEVEL IRQL. Кроме того, некоторые функции 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:"другие системные события" /success:enable /failure:enable
Заменяемые генераторы случайных чисел
Другим улучшением, которое обеспечивает CNG, является возможность заменить генератор случайных чисел по умолчанию (RNG). В CryptoAPI можно предоставить альтернативный RNG в рамках поставщика служб шифрования (CSP), но невозможно перенаправить базовые поставщики служб Майкрософт для использования другого RNG. CNG позволяет явно указать конкретный RNG для использования в определенных вызовах.
Потокобезопасность
Все функции, изменяющие одну область памяти одновременно (критические разделы) при вызове отдельных потоков, не являются потокобезопасны.
Режим операции
CNG поддерживает пять режимов операций, которые можно использовать с симметричными шифрами блоков через API шифрования. Эти режимы и их поддержка перечислены в следующей таблице. Режим операции можно изменить, задав свойство BCRYPT_CHAINING_MODE для поставщика алгоритмов с помощью функции BCryptSetProperty.
Режим операции | значение BCRYPT_CHAINING_MODE | Алгоритмы | Стандартные |
---|---|---|---|
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.