Введение
В Microsoft Windows поставщик криптографических услуг (CSP) — это программная библиотека, реализующая Microsoft CryptoAPI (CAPI). CSP реализуют функции кодирования и декодирования, которые могут использоваться компьютерными приложениями, например, для реализации надежной аутентификации пользователей или для обеспечения безопасности электронной почты. CSP — это независимые модули, которые могут использоваться различными приложениями. Пользовательская программа вызывает функции CryptoAPI, которые перенаправляются в функции CSP. Поскольку CSP отвечают за реализацию криптографических алгоритмов и стандартов, приложениям не требуется учитывать детали безопасности. Кроме того, приложение может указать, какой CSP оно будет использовать при вызове CryptoAPI. Фактически, вся криптографическая активность осуществляется в CSP. CryptoAPI служит лишь мостом между приложением и CSP. CSP в основном реализуются как специальный тип DLL с особыми ограничениями на загрузку и использование. Каждый CSP должен быть цифровой подписью Microsoft, которая проверяется при загрузке CSP в Windows. После загрузки Windows периодически повторно сканирует CSP для обнаружения несанкционированного вмешательства, будь то вредоносное программное обеспечение, такое как компьютерные вирусы, или попытки пользователя обойти ограничения (например, на длину криптографического ключа), встроенные в код CSP. Для получения подписи разработчики CSP, не являющиеся сотрудниками Microsoft, должны предоставить Microsoft документы, подтверждающие их согласие соблюдать различные юридические ограничения и указать действительную контактную информацию. Примерно с 2000 года Microsoft не взимала плату за предоставление этих подписей. В целях разработки и тестирования разработчик CSP может настроить Windows на распознавание собственных подписей вместо подписей Microsoft, однако это сложная и малоизвестная операция, не подходящая для нетехнических пользователей. Архитектура CAPI/CSP берет свое начало в период жесткого контроля правительства США над экспортом криптографии. Стандартный или "базовый" CSP, поставляемый с Windows, был ограничен 512-битной криптографией с открытым ключом RSA и 40-битной симметричной криптографией, что соответствовало максимальной длине ключа, разрешенной для программного обеспечения массового рынка, подлежащего экспорту в то время. CSP, реализующие более надежную криптографию, были доступны только для жителей США, если сами CSP не получили одобрение правительства США на экспорт. Система, требующая подписи CSP только при предоставлении полного пакета документов, была разработана для предотвращения распространения несанкционированных CSP, созданных анонимными или иностранными разработчиками. Это было представлено как уступка Microsoft правительству с целью получения разрешения на экспорт CAPI. После решения суда по делу Бернштейна против Соединенных Штатов, установившего, что исходный код компьютера является защищенной свободой слова, и передачи полномочий по регулированию криптографии из Государственного департамента США в более лояльное экспорту Министерство торговли, ограничения на длину ключа были сняты, и CSP, поставляемые с Windows, теперь поддерживают криптографию полной мощности. Основное назначение сторонних CSP — взаимодействие с внешним криптографическим оборудованием, таким как модули аппаратной безопасности (HSM) или смарт-карты.
Умная карта CSP
Эти криптографические функции могут быть реализованы с помощью смарт-карты, таким образом, CSP для смарт-карты является реализацией PKCS#11 от Microsoft. Microsoft Windows определяет подходящий CSP для смарт-карты, который необходимо использовать, анализируя ответ на включение (ATR) смарт-карты, зарегистрированный в реестре Windows. При установке нового CSP все ATR поддерживаемых смарт-карт добавляются в реестр.
Использование CSP в MS Office для защиты паролем
Поставщики криптографических услуг могут использоваться для шифрования документов Word, Excel и PowerPoint, начиная с Microsoft Office XP. По умолчанию используется стандартный алгоритм шифрования с 40-битным ключом, но использование CSP увеличивает длину ключа и, следовательно, усложняет процесс дешифрования. Это применимо только к паролям, необходимым для открытия документа, поскольку именно этот тип пароля обеспечивает шифрование документа, защищенного паролем.