Введение
Интерфейс программирования приложений (англ. 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, работающий с их оборудованием.
The Microsoft Windows platform specific Cryptographic Application Programming Interface (also known variously as CryptoAPI, Microsoft Cryptography API, MS CAPI or simply CAPI) is an application programming interface included with Microsoft Windows operating systems that provides services to enable developers to secure Windows based applications using cryptography. It is a set of dynamically linked libraries that provides an abstraction layer which isolates programmers from the code used to encrypt the data. The Crypto API was first introduced in Windows NT 4.0 and enhanced in subsequent versions. CryptoAPI supports both public key and symmetric key cryptography, though persistent symmetric keys are not supported. It includes functionality for encrypting and decrypting data and for authentication using digital certificates. It also includes a cryptographically secure pseudorandom number generator function CryptGenRandom. CryptoAPI works with a number of CSPs (Cryptographic Service Providers) installed on the machine. CSPs are the modules that do the actual work of encoding and decoding data by performing the cryptographic functions. Vendors of HSMs may supply a CSP which works with their hardware.
Криптографический 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.