Поделиться через


Поставщики служб конфигурации и процесс шифрования

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

Качество защиты ключей в системе является параметром проектирования CSP, а не системой в целом. Это позволяет приложению выполняться в различных контекстах безопасности без изменений.

Приложения доступа должны иметь криптографические внутренние компоненты тщательно ограничены. Это упрощает безопасную и переносимую разработку приложений.

Применяются следующие три правила проектирования:

  • Приложения не могут напрямую обращаться к материалу ключа. Поскольку все материалы ключей создаются в CSP и используются приложением с помощью непрозрачных дескрипторов, нет риска для приложения или связанных библиотек DLL либо разглашать материал ключа или выбирать материал ключа из плохих случайных источников.
  • Приложения не могут указывать сведения о криптографических операциях. Интерфейс CSP позволяет приложению выбрать алгоритм шифрования или подписи, но реализация каждой криптографической операции выполняется поставщиком служб конфигурации.
  • Приложения не обрабатывают учетные данные пользователя или другие данные проверки подлинности пользователей. Проверка подлинности пользователей выполняется поставщиком служб конфигурации. таким образом, будущие поставщики облачных служб с расширенными возможностями проверки подлинности, такими как биометрические входные данные, будут функционировать без необходимости изменять модель проверки подлинности приложения.

Как минимум, CSP состоит из библиотеки динамической компоновки (DLL) и файла сигнатуры. Файл подписи необходим, чтобы убедиться, что CryptoAPI распознает CSP. CryptoAPI периодически проверяет эту сигнатуру, чтобы убедиться, что обнаружены какие-либо изменения в CSP.

Некоторые поставщики служб конфигурации могут реализовать часть их функциональных возможностей в службе, разделенной адресом, вызываемой через локальный RPC или оборудование, вызываемое с помощью драйвера системного устройства. Изоляция глобальных криптографических операций с состоянием ключей и центральных криптографических операций в службе, разделенной адресом, или аппаратном обеспечении обеспечивает безопасность ключей и операций в пространстве данных приложения.

Это неразумно для приложений использовать преимущества атрибутов, определенных для конкретного поставщика служб CSP. Например, поставщик шифрования Microsoft Base (поставляемый с CryptoAPI) поддерживает 40-разрядные ключи сеанса и 512-разрядные открытые ключи. Приложения, манипуляющие этими ключами, должны избегать предположений о объеме памяти, необходимом для хранения этих ключей, так как приложение, скорее всего, завершится ошибкой, если используется другой поставщик служб конфигурации. Хорошо написанные приложения должны работать с различными поставщиками облачных служб.

Дополнительные сведения о типах поставщиков шифрования и предопределенных поставщиках служб, которые можно использовать с CryptoAPI, см. в разделе "Типы поставщиков шифрования" и поставщики служб шифрования Майкрософт.