Key Storage Provider
Key Storage Provider (поставщик хранилища ключей) — это программный или аппаратный компонент операционной системы, реализующий защищённое хранение, управление и предоставление криптографических ключей и сертификатов для приложений и служб. В экосистеме Microsoft Windows Key Storage Provider (KSP) представляет собой модуль, который заменяет устаревший Cryptographic Service Provider (CSP) и обеспечивает более современный интерфейс для работы с асимметричными и симметричными ключами, а также с алгоритмами, поддерживаемыми через Cryptography API: Next Generation (CNG). KSP может быть как встроенным (например, Microsoft Software Key Storage Provider), так и сторонним, поставляемым производителями аппаратных средств защиты (например, смарт-карт или токенов).
История и предпосылки появления
До появления Windows Vista и Windows Server 2008 работа с криптографическими ключами в Windows осуществлялась через CSP (Cryptographic Service Provider) — модули, работавшие в рамках CryptoAPI. CSP имели ряд ограничений: они были ориентированы преимущественно на алгоритмы, сертифицированные в США (в частности, RSA), и не поддерживали современные эллиптические кривые (ECC). Кроме того, CSP не позволяли разделять ключи на сеансовые и долговременные, а также не обеспечивали гибкого управления импортом и экспортом ключей.
С выходом Windows Vista компания Microsoft представила CNG (Cryptography API: Next Generation) — новую архитектуру криптографических служб. В рамках CNG появился новый тип провайдеров — Key Storage Provider (KSP), который призван был заменить CSP в части хранения ключей. KSP предоставляют унифицированный интерфейс для работы с ключами, независимо от того, хранятся ли они в программном обеспечении, на смарт-карте, в аппаратном модуле безопасности (HSM) или в облаке.
Архитектура и принцип работы
Место в стеке CNG
Key Storage Provider является частью стека CNG, который включает:
- CNG API — интерфейс прикладного программирования для вызова криптографических функций.
- CNG Provider — модули, реализующие алгоритмы (например, Microsoft Primitive Provider).
- Key Storage Provider — модули, отвечающие за хранение и управление ключами.
KSP работают на уровне ядра или пользовательского режима. Они не выполняют криптографические операции напрямую, а лишь предоставляют ключи для обработки алгоритмическими провайдерами. Однако KSP могут делегировать выполнение операций (например, подпись или шифрование) аппаратным модулям, если ключ хранится на защищённом устройстве.
Основные функции
KSP реализуют следующие возможности:
- Создание ключей — генерация новых пар ключей (асимметричных) или симметричных ключей.
- Импорт и экспорт ключей — в защищённом формате, с возможностью установки политик экспорта (например, «не экспортируемый»).
- Хранение ключей — в защищённом хранилище, часто с использованием шифрования на основе учётной записи пользователя или машины.
- Управление сертификатами — связывание ключей с сертификатами X.509.
- Поддержка контейнеров — ключи могут быть сгруппированы в контейнеры (например, для разных сценариев использования).
- Аутентификация — проверка подлинности устройства или пользователя перед доступом к ключу.
Типы хранилищ
KSP могут работать с различными типами хранилищ:
- Программное хранилище — ключи хранятся в зашифрованном виде в реестре Windows или в файлах. Пример: Microsoft Software Key Storage Provider.
- Аппаратное хранилище — ключи хранятся на смарт-картах, USB-токенах, HSM или TPM (Trusted Platform Module). Пример: Microsoft Smart Card Key Storage Provider.
- Сетевое или облачное хранилище — ключи могут быть расположены на удалённом сервере или в облачном HSM (например, Azure Key Vault через соответствующий KSP).
Виды Key Storage Provider
Встроенные KSP в Windows
Microsoft поставляет несколько встроенных KSP:
- Microsoft Software Key Storage Provider — программный провайдер, используемый по умолчанию для хранения ключей в реестре. Поддерживает алгоритмы RSA, ECDSA, ECDH, DSA, а также симметричные алгоритмы. Ключи шифруются с использованием ключа, производного от учётной записи пользователя или системного контекста.
- Microsoft Smart Card Key Storage Provider — обеспечивает доступ к ключам, хранящимся на смарт-картах, совместимых со стандартом PKCS#11 или Microsoft Base CSP.
- Microsoft Platform Key Storage Provider — используется для работы с ключами, хранящимися в TPM. Позволяет создавать ключи, которые не могут быть извлечены из TPM даже администратором.
- Microsoft Passport Key Storage Provider — связан с Windows Hello, обеспечивает хранение биометрических ключей и ключей для входа без пароля.
- Microsoft Key Storage Provider for Software Protection — используется для защиты лицензий и цифровых прав (DRM).
Сторонние KSP
Производители аппаратных средств защиты (например, SafeNet, Gemalto, Рутокен, JaCarta) поставляют собственные KSP, которые позволяют использовать их устройства в Windows. Эти KSP обычно реализуют интерфейс CNG и могут быть установлены как драйверы или библиотеки. В России, в соответствии с требованиями законодательства о криптографической защите, часто используются KSP, сертифицированные ФСБ России (например, провайдеры для ГОСТ-алгоритмов).
Применение
Корпоративная безопасность
Key Storage Provider широко применяются в корпоративных средах для:
- Электронной подписи — подписание документов, кода, электронных писем с использованием сертификатов, хранящихся на смарт-картах или в HSM.
- Шифрования данных — защита файлов, дисков (BitLocker), электронной почты (S/MIME).
- Аутентификации — вход в систему (Windows Hello, смарт-карты), VPN, веб-серверы (TLS/SSL).
- Управления цифровыми сертификатами — интеграция с Active Directory Certificate Services (AD CS) и PKI.
Разработка программного обеспечения
Разработчики могут использовать CNG API для создания приложений, работающих с KSP. Это позволяет:
- Не зависеть от конкретного типа хранилища — приложение может работать как с программным, так и с аппаратным ключом.
- Использовать современные алгоритмы (ECC, AES-GCM, SHA-256/384/512).
- Обеспечивать высокий уровень безопасности, делегируя операции защищённому оборудованию.
Государственные и банковские системы
В России и других странах KSP используются для работы с национальными криптоалгоритмами (ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012). Например, провайдеры для ГОСТ-ключей поставляются в составе КриптоПро CSP или VipNet CSP. Они обеспечивают совместимость с требованиями ФСБ и ФСТЭК.
Безопасность и критика
Преимущества
- Изоляция ключей — ключи хранятся в защищённом контейнере, недоступном для прямого чтения приложениями.
- Поддержка аппаратного хранения — ключи могут быть физически защищены от извлечения.
- Гибкость — возможность выбора между программным и аппаратным хранилищем в зависимости от требований безопасности.
- Совместимость — KSP работают с широким спектром приложений, использующих CNG.
Недостатки
- Сложность конфигурации — настройка сторонних KSP, особенно аппаратных, может требовать специальных знаний.
- Зависимость от операционной системы — KSP тесно связаны с Windows, что ограничивает их использование в кроссплатформенных сценариях.
- Потенциальные уязвимости — как и любой программный компонент, KSP могут содержать ошибки, приводящие к утечке ключей (например, уязвимость CVE-2020-0601, связанная с некорректной проверкой сертификатов в CNG).
Критика
Некоторые эксперты отмечают, что программные KSP (например, Microsoft Software Key Storage Provider) не обеспечивают достаточной защиты ключей в случае компрометации операционной системы, поскольку ключи хранятся в зашифрованном виде, но расшифровываются в памяти при использовании. Аппаратные KSP (TPM, смарт-карты) считаются более надёжными, но требуют дополнительных затрат на оборудование.
Интересные факты
- KSP могут быть использованы для создания ключей, которые невозможно экспортировать — это свойство называется «non-exportable» и часто используется для защиты корневых сертификатов.
- В Windows 10 и Windows 11 появилась поддержка KSP для TPM 2.0, что позволяет создавать ключи, привязанные к конкретному устройству.
- Некоторые KSP (например, для Azure Key Vault) позволяют хранить ключи в облаке, обеспечивая централизованное управление и аудит.
- В России существуют сертифицированные KSP, реализующие алгоритмы ГОСТ, которые обязательны для использования в государственных информационных системах.
Источники
- Microsoft Docs. «Key Storage Provider (KSP)». Windows Server documentation.
- Microsoft Docs. «Cryptography API: Next Generation (CNG)». Windows Developer documentation.
- Безопасность информационных технологий. «Криптографические провайдеры Windows». Журнал «Information Security».
- Стандарты: ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012.
- CVE-2020-0601. «Windows CryptoAPI Spoofing Vulnerability». National Vulnerability Database.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →