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


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

функции CryptoAPI используют поставщики криптографических служб (CSPs) для шифрования и расшифровки, а также для обеспечения хранилища ключей и безопасности. Эти csps являются независимыми модулями. В идеале поставщики СЛУЖБ записываются независимо от конкретного приложения, поэтому любой из них будет работать с различными поставщиками служб. Однако в действительности некоторые приложения имеют определенные требования, требующие настраиваемого поставщика служб CSP. Это сравнивается с моделью GDIWindows. Поставщики служб csps аналогичны драйверам графических устройств.

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

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

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

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

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

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

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

Дополнительные сведения о типах поставщиков шифрования и предопределенных ПОСТАВЩИКАх, которые можно использовать с CryptoAPI, см. в типах поставщиков шифрования и поставщиков служб Шифрования Майкрософт.