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

Microsoft CryptoAPI

Microsoft CryptoAPI (также известная как Cryptography API, CAPI) — это программный интерфейс (API) операционной системы Microsoft Windows, предоставляющий разработчикам набор функций для выполнения криптографических операций. CAPI является частью платформы Windows и входит в состав операционных систем, начиная с Windows NT 4.0 и Windows 95 OSR2. Интерфейс позволяет приложениям выполнять шифрование, дешифрование, создание и проверку цифровых подписей, хеширование данных, а также управлять криптографическими ключами и сертификатами, используя стандартные алгоритмы.

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

Microsoft CryptoAPI построена на модульной архитектуре, которая отделяет интерфейс прикладного программирования от реализации криптографических алгоритмов. Ключевым элементом этой архитектуры является модель поставщика криптографических услуг (CSP — Cryptographic Service Provider).

Поставщики криптографических услуг (CSP)

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

Сторонние разработчики могут создавать собственные CSP для поддержки нестандартных алгоритмов или аппаратных ускорителей.

Основные компоненты API

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

История развития

Первая версия CryptoAPI была представлена в 1996 году с выходом Windows NT 4.0. Изначально API поддерживало ограниченный набор алгоритмов (RSA, RC2, RC4, DES) и имело серьёзные экспортные ограничения, наложенные законодательством США, которые ограничивали длину ключей для программного обеспечения, распространяемого за пределами страны. В 1999 году, после ослабления экспортных ограничений, была выпущена Enhanced Cryptographic Provider с поддержкой 128-битных ключей.

В Windows Vista (2006) была представлена Cryptography API: Next Generation (CNG), которая является эволюционным развитием CAPI. CNG поддерживает более современные алгоритмы (AES, ECC, SHA-2), модульную архитектуру, более гибкое управление ключами и возможность замены алгоритмов без перекомпиляции приложений. Однако CAPI остаётся совместимой со старыми приложениями и продолжает поддерживаться в современных версиях Windows.

Применение

Microsoft CryptoAPI широко используется в экосистеме Windows для обеспечения безопасности данных и аутентификации. Основные области применения включают:

Безопасность сетевых протоколов

CAPI используется для реализации протоколов SSL/TLS в Internet Explorer и других приложениях, работающих с WinHTTP и WinINet. API обеспечивает проверку сертификатов серверов и создание защищённых каналов связи.

Цифровые подписи и сертификаты

Операционная система использует CAPI для подписи драйверов, исполняемых файлов и скриптов (Authenticode). Система управления сертификатами Windows (Certificate Manager) построена на основе CAPI. Пользователи могут импортировать, экспортировать и управлять сертификатами через оснастку MMC «Сертификаты».

Шифрование данных

Приложения могут использовать CAPI для шифрования файлов и папок (EFS — Encrypting File System), а также для защиты данных в памяти и на диске. API также используется в продуктах Microsoft, таких как Office, для защиты документов.

Аутентификация

CAPI поддерживает аутентификацию на основе сертификатов (например, для входа в домен Active Directory или для доступа к веб-сайтам). API также используется для создания и проверки цифровых подписей в электронной почте (S/MIME).

Безопасность и критика

Несмотря на широкое распространение, Microsoft CryptoAPI неоднократно подвергалась критике и была связана с рядом уязвимостей.

Экспортные ограничения

Ранние версии CAPI имели встроенные ограничения на длину ключей (до 40 бит) для версий, распространяемых за пределами США. Это делало шифрование уязвимым для атак полным перебором. Ограничения были сняты в 1999 году, но некоторые старые приложения продолжали использовать слабые ключи.

Уязвимость CVE-2020-0601 (CurveBall)

В январе 2020 года была обнаружена критическая уязвимость в реализации ECC (эллиптической криптографии) в CAPI и CNG. Уязвимость позволяла злоумышленнику подделать цифровые подписи и сертификаты, выдавая себя за доверенный центр сертификации. Она затрагивала все версии Windows, начиная с Windows 10 и Windows Server 2016. Уязвимость была закрыта в рамках обновления безопасности Microsoft от 14 января 2020 года.

Уязвимость CVE-2023-36025

В ноябре 2023 года была обнаружена уязвимость, связанная с обработкой файлов .url и .lnk в Windows, которая позволяла обходить проверки безопасности, основанные на CAPI. Злоумышленники могли использовать эту уязвимость для запуска вредоносного кода без предупреждения системы безопасности.

Проблемы с управлением ключами

Критики отмечали, что CAPI не предоставляет достаточных средств для безопасного хранения ключей в некоторых конфигурациях, особенно в ранних версиях, где ключи могли храниться в реестре в незашифрованном виде. В современных версиях Windows для хранения ключей используется изолированное хранилище (Key Storage Provider) и аппаратные модули безопасности (TPM).

Альтернативы и преемники

Основным преемником CAPI является Cryptography API: Next Generation (CNG), которая была введена в Windows Vista. CNG обеспечивает лучшую производительность, поддержку современных алгоритмов (AES, ECC, SHA-2, SHA-3) и более гибкую архитектуру. Рекомендуется использовать CNG для новых разработок.

Для кроссплатформенных решений существуют альтернативы, такие как OpenSSL, LibreSSL, GnuTLS, а также специализированные API операционных систем (например, Security Framework в macOS, Cryptography API в Linux через libgcrypt или NSS). В среде .NET Framework для криптографических операций рекомендуется использовать классы из пространства имён System.Security.Cryptography, которые в современных версиях .NET (5+ и .NET Core) используют CNG на Windows и собственные реализации на других платформах.

Источники

  1. Microsoft Docs. «Cryptography API (CryptoAPI)». Архив документации Microsoft.
  2. Microsoft Security Response Center. «CVE-2020-0601 — Windows CryptoAPI Spoofing Vulnerability». January 2020.
  3. Microsoft Security Response Center. «CVE-2023-36025 — Windows SmartScreen Security Feature Bypass Vulnerability». November 2023.
  4. Howard, M., LeBlanc, D. «Writing Secure Code». Microsoft Press, 2003.
  5. Ferguson, N., Schneier, B. «Practical Cryptography». Wiley, 2003.
  6. MSDN Magazine. «Cryptography API: Next Generation». 2007.

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

На главную BFOmetr →