Криптографический прикладной программный интерфейс для платформы Microsoft Windows (также известный как CryptoAPI , Microsoft Cryptography API , MS-CAPI или просто CAPI ) — это программный интерфейс приложений , включенный в операционные системы Microsoft Windows , который предоставляет службы, позволяющие разработчикам защищать приложения на базе Windows с помощью криптографии . Это набор динамически подключаемых библиотек , который обеспечивает уровень абстракции , изолирующий программистов от кода, используемого для шифрования данных. Криптографический API был впервые представлен в Windows NT 4.0 [1] и улучшен в последующих версиях.
CryptoAPI поддерживает как алгоритм симметричного ключа , так и криптографию с открытым ключом , хотя постоянные симметричные ключи не поддерживаются. Он включает в себя функциональность для шифрования и дешифрования данных и для аутентификации с использованием цифровых сертификатов . Он также включает в себя криптографически безопасную функцию генератора псевдослучайных чисел CryptGenRandom . [ необходима цитата ]
CryptoAPI работает с несколькими CSP ( поставщиками криптографических услуг ), установленными на машине. CSP — это модули, которые выполняют фактическую работу по кодированию и декодированию данных, выполняя криптографические функции. Поставщики HSM могут поставлять CSP, работающий с их оборудованием.
Windows Vista содержит обновление Crypto API, известное как Cryptography API: Next Generation ( CNG ). Оно имеет улучшенную факторизацию API, позволяющую тем же функциям работать с использованием широкого спектра криптографических алгоритмов, и включает ряд новых алгоритмов, которые являются частью Suite B Агентства национальной безопасности (NSA) . [2] Оно также гибкое, с поддержкой подключения пользовательских криптографических API к среде выполнения CNG. Однако поставщики хранилища ключей CNG по-прежнему не поддерживают симметричные ключи. [3] CNG работает как в пользовательском режиме , так и в режиме ядра , а также поддерживает все алгоритмы из CryptoAPI. [4] Поставщик Microsoft, реализующий CNG, размещен в Bcrypt.dll.
CNG также поддерживает эллиптическое шифрование , которое, поскольку использует более короткие ключи для того же ожидаемого уровня безопасности , более эффективно, чем RSA. [5] API CNG интегрируется с подсистемой смарт-карт , включая модуль Base Smart Card Cryptographic Service Provider (Base CSP), который инкапсулирует API смарт-карт. Производителям смарт-карт просто нужно сделать свои устройства совместимыми с этим, а не предоставлять решение с нуля.
CNG также добавляет поддержку Dual_EC_DRBG [6] , генератора псевдослучайных чисел, определенного в NIST SP 800-90A , который может подвергнуть пользователя риску прослушивания Агентством национальной безопасности , поскольку он содержит клептографический бэкдор, если только разработчик не вспомнит о необходимости сгенерировать новые базовые точки с помощью другого криптографически безопасного генератора псевдослучайных чисел или истинного генератора случайных чисел , а затем опубликовать сгенерированное начальное число, чтобы удалить бэкдор АНБ. Он также очень медленный. [7] Он используется только при явном вызове.
CNG также заменяет PRNG по умолчанию на CTR_DRBG, используя AES в качестве блочного шифра, поскольку более ранний RNG, который определен в ныне замененном FIPS 186-2, основан либо на DES , либо на SHA-1 , оба из которых были взломаны. [8] CTR_DRBG — один из двух алгоритмов в NIST SP 800-90, одобренных Шнайером , другой — Hash_DRBG. [7]