Введение

Интерфейс программирования приложений (англ. Application programming interface) – криптографический интерфейс программирования приложений, специфичный для платформы Microsoft Windows (также известный как CryptoAPI, Microsoft Cryptography API, MS CAPI или просто CAPI), – это интерфейс программирования приложений, включенный в состав операционных систем Microsoft Windows, предоставляющий сервисы для обеспечения безопасности приложений на базе Windows с использованием криптографии. Он представляет собой набор динамически подключаемых библиотек, обеспечивающих уровень абстракции, который изолирует программистов от кода, используемого для шифрования данных. Crypto API был впервые представлен в Windows NT 4.0 и усовершенствован в последующих версиях. CryptoAPI поддерживает как криптографию с открытым ключом, так и симметричную криптографию, однако постоянные симметричные ключи не поддерживаются. Он включает в себя функциональность для шифрования и дешифрования данных, а также для аутентификации с использованием цифровых сертификатов. Также он включает криптографически безопасную функцию генератора псевдослучайных чисел CryptGenRandom. CryptoAPI работает с рядом установленных на компьютере поставщиков криптографических услуг (CSP). CSP – это модули, выполняющие фактическую работу по кодированию и декодированию данных посредством выполнения криптографических функций. Производители HSM могут предоставлять CSP, работающий с их оборудованием.

Криптографический API: следующее поколение

Windows Vista включает в себя обновление API Crypto, известное как Cryptography API: Next Generation (CNG). Оно имеет улучшенную структуру API, позволяющую одним и тем же функциям работать с широким спектром криптографических алгоритмов, и включает в себя ряд новых алгоритмов, входящих в Suite B Агентства национальной безопасности (NSA). CNG также отличается гибкостью, поддерживая подключение пользовательских криптографических API к среде выполнения CNG. Однако поставщики хранилищ ключей CNG по-прежнему не поддерживают симметричные ключи. CNG работает как в пользовательском, так и в режиме ядра, а также поддерживает все алгоритмы из CryptoAPI. Провайдер Microsoft, реализующий CNG, находится в Bcrypt.dll. CNG также поддерживает криптографию на эллиптических кривых, которая, благодаря использованию более коротких ключей при том же уровне безопасности, более эффективна, чем RSA. API CNG интегрируется с подсистемой смарт-карт посредством модуля базового поставщика криптографических услуг для смарт-карт (Base CSP), который инкапсулирует API смарт-карт. Производителям смарт-карт достаточно обеспечить совместимость своих устройств с этим модулем, а не разрабатывать решение с нуля. CNG также добавляет поддержку Dual EC DRBG, генератора псевдослучайных чисел, определенного в NIST SP 800 90A, который может подвергать пользователя прослушиванию со стороны Агентства национальной безопасности, поскольку содержит клептографическую бэкдор, если разработчик не сгенерирует новые базовые точки с использованием другого криптографически безопасного генератора псевдослучайных чисел или генератора истинных случайных чисел, а затем не опубликует сгенерированное начальное значение для устранения бэкдора NSA. Он также очень медленный и используется только при явном вызове. Кроме того, CNG заменяет генератор псевдослучайных чисел (PRNG) по умолчанию на CTR DRBG с использованием AES в качестве блочного шифра, поскольку предыдущий PRNG, определенный в устаревшем стандарте FIPS 186-2, основан либо на DES, либо на SHA-1, оба из которых были взломаны. CTR DRBG – один из двух алгоритмов в NIST SP 800 90, одобренных Брюсом Шнайером, другим является Hash DRBG.