Открыть сервис

Windows CryptoAPI

Windows CryptoAPI (также известная как Cryptographic Application Programming Interface, CAPI) — это программный интерфейс приложений, входящий в состав операционной системы Microsoft Windows, предназначенный для выполнения криптографических операций, таких как шифрование, расшифрование, хеширование, создание и проверка цифровых подписей, а также управление сертификатами. CryptoAPI предоставляет разработчикам единый набор функций для работы с криптографией, абстрагируя их от конкретных реализаций алгоритмов и аппаратных криптографических модулей.

История

CryptoAPI была впервые представлена компанией Microsoft в составе Windows NT 4.0 (1996 год) и Windows 95 OSR2 (1997 год). Её создание было обусловлено необходимостью стандартизации криптографических функций в экосистеме Windows, чтобы разработчики приложений могли безопасно использовать шифрование без необходимости интеграции сторонних библиотек. В последующих версиях Windows (2000, XP, Vista) интерфейс расширялся: добавлялись новые алгоритмы (например, поддержка AES в Windows Vista), улучшалась работа с сертификатами и хранилищами ключей.

Ключевым этапом развития стало появление Cryptography API: Next Generation (CNG) в Windows Vista (2006 год). CNG является эволюцией CryptoAPI, предлагая более гибкую архитектуру, поддержку современных алгоритмов (включая эллиптическую криптографию) и улучшенную изоляцию криптографических операций. Несмотря на это, классическая CryptoAPI (CAPI) остаётся доступной для обратной совместимости и используется в устаревших приложениях.

Архитектура и компоненты

CryptoAPI построена по модульному принципу и состоит из нескольких ключевых компонентов:

Криптографические сервис-провайдеры (CSP)

Основой CryptoAPI являются криптографические сервис-провайдеры (CSP) — программные или аппаратные модули, реализующие конкретные криптографические алгоритмы. Каждый CSP представляет собой библиотеку DLL, зарегистрированную в системе, и предоставляет набор функций для шифрования, хеширования, подписи и генерации ключей. Windows поставляется с несколькими встроенными CSP, включая:

Разработчики могут создавать собственные CSP для интеграции уникальных алгоритмов или аппаратных устройств (например, HSM — аппаратные модули безопасности).

Хранилища сертификатов

CryptoAPI включает систему управления сертификатами X.509, которая организует их в логические хранилища (certificate stores). Основные хранилища:

  • My (личные сертификаты пользователя).
  • Root (доверенные корневые центры сертификации).
  • CA (промежуточные центры сертификации).
  • Trusted Publishers (доверенные издатели программного обеспечения).

Хранилища могут быть локальными (для текущего пользователя) или машинными (для всех пользователей системы). Операции с сертификатами (импорт, экспорт, поиск, проверка цепочек) выполняются через функции CryptoAPI.

Функции шифрования и хеширования

CryptoAPI предоставляет функции для:

  • Симметричного шифрования — алгоритмы RC2, RC4, DES, 3DES, AES (через CSP).
  • Асимметричного шифрованияRSA, Diffie-Hellman (для обмена ключами).
  • ХешированияMD5, SHA-1, SHA-2 (256, 384, 512), а также HMAC (хеширование с ключом).
  • Цифровых подписей — создание и проверка подписей с использованием RSA или DSA.

Управление ключами

Ключи могут быть временными (сессионными) или постоянными (хранящимися в CSP). CryptoAPI поддерживает генерацию ключей, их импорт/экспорт в защищённом формате (например, через PFX/PKCS#12), а также привязку к сертификатам.

Применение

CryptoAPI широко используется в операционной системе Windows и сторонних приложениях для обеспечения безопасности:

Защита данных

  • Шифрование файлов — через EFS (Encrypting File System), которая использует CryptoAPI для шифрования файлов на NTFS-томах.
  • Шифрование дисков — BitLocker (в более поздних версиях Windows) использует CNG, но в ранних реализациях опирался на CAPI.
  • Защита сетевого трафика — протоколы TLS/SSL в Windows (например, в Internet Explorer или IIS) используют CryptoAPI для управления сертификатами и выполнения криптографических операций.

Аутентификация и подписи

  • Цифровые подписи кода — Authenticode, используемый для подписания исполняемых файлов (.exe, .dll) и драйверов, базируется на CryptoAPI.
  • Аутентификация пользователей — через смарт-карты и сертификаты (например, в Active Directory или VPN).
  • Подпись электронной почты — S/MIME (Secure/Multipurpose Internet Mail Extensions) использует CryptoAPI для подписи и шифрования сообщений.

Безопасность приложений

Разработчики вызывают функции CryptoAPI (например, CryptEncrypt, CryptDecrypt, CryptHashData, CryptSignMessage) для интеграции криптографии в свои программы. Это позволяет создавать защищённые каналы связи, хранить пароли в хешированном виде, проверять целостность данных.

Критика и уязвимости

Несмотря на широкое распространение, CryptoAPI подвергалась критике по нескольким причинам:

Проблемы безопасности

  • Уязвимость CVE-2020-0601 (январь 2020 года) — в реализации проверки сертификатов ECC (эллиптической криптографии) в Windows CryptoAPI (CNG) была обнаружена ошибка, позволявшая злоумышленникам подделывать цифровые подписи, выдавая себя за доверенные центры сертификации. Уязвимость затрагивала Windows 10, Windows Server 2016/2019 и была закрыта в экстренном обновлении.
  • Уязвимость CVE-2001-0342 — в ранних версиях CryptoAPI (Windows 2000) была найдена проблема с генерацией случайных чисел, что делало ключи предсказуемыми.
  • Отсутствие поддержки современных алгоритмов в классической CAPI (например, ECDSA, Ed25519) — это ограничение было устранено в CNG, но устаревшие приложения остаются уязвимыми.

Ограничения архитектуры

  • Сложность управления CSP — регистрация и настройка сторонних CSP может быть нетривиальной.
  • Проблемы с обратной совместимостью — некоторые функции CAPI устарели, но продолжают использоваться, что создаёт риск для безопасности.
  • Зависимость от реализации CSP — если CSP содержит ошибки, это может скомпрометировать все операции, выполняемые через него.

Критика со стороны сообщества

  • Закрытость исходного кода — до 2019 года Microsoft не публиковала исходный код CryptoAPI, что затрудняло аудит безопасности. В 2019 году компания открыла часть кода CNG на GitHub.
  • Политика экспортных ограничений — в 1990-х годах Microsoft была вынуждена поставлять версии CryptoAPI с ослабленным шифрованием (40-битные ключи) для экспорта в страны, не входящие в зону свободной торговли США, что снижало безопасность.

Сравнение с CNG

Cryptography API: Next Generation (CNG) — это преемник CryptoAPI, представленный в Windows Vista. Основные отличия:

  • Модульная архитектура — CNG использует модель поставщиков (providers), которые могут быть заменены без изменения кода приложения.
  • Поддержка современных алгоритмов — ECDSA, ECDH, AES-GCM, SHA-3 (начиная с Windows 10).
  • Улучшенная изоляция — криптографические операции выполняются в режиме ядра или пользовательском режиме с минимальными привилегиями.
  • Поддержка аппаратного ускорения — через TPM (Trusted Platform Module) и HSM.

Несмотря на преимущества CNG, классическая CryptoAPI остаётся критически важной для обратной совместимости с приложениями, написанными до Windows Vista.

Интересные факты

  • CryptoAPI стала основой для реализации PKI (Public Key Infrastructure) в Windows, включая службы сертификации Active Directory Certificate Services.
  • В 2002 году Microsoft выпустила Windows XP Service Pack 2, который значительно усилил безопасность CryptoAPI, добавив проверку цепочек сертификатов по умолчанию.
  • Уязвимость CVE-2020-0601, известная как «CurveBall», была обнаружена Агентством национальной безопасности США (NSA) и могла использоваться для атак на критическую инфраструктуру.
  • В Windows 10 и Windows 11 Microsoft рекомендует использовать CNG вместо CAPI для новых разработок, но классическая CryptoAPI остаётся доступной для совместимости.

Источники

  • Microsoft Docs: «Cryptography API (CryptoAPI)» — документация по функциям и архитектуре.
  • Microsoft Security Response Center: «CVE-2020-0601» — описание уязвимости и исправления.
  • «Windows Internals, Part 1» (7th edition) — Pavel Yosifovich, Mark Russinovich, David Solomon, Alex Ionescu.
  • «Cryptography in the Windows Operating System» — статья в журнале «MSDN Magazine» (2005).
  • «A History of Windows Cryptography» — блог Microsoft Security (2019).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →