Использование КриптоПро CSP

Использование КриптоПро CSP позволяет решить сразу несколько задач:

  • для корпоративных пользователей - это возможность использовать стандартные и повсеместно используемые приложения компании Microsoft с надежной российской криптографией;
  • для системных интеграторов - это возможность создания новых, надежно защищенных приложений с использованием богатейшего и проверенного временем инструментария разработки компании Microsoft.

Использование КриптоПро CSP в ПО Microsoft

К стандартным приложениям, которые теперь могут использовать российские алгоритмы электронной цифровой подписи и шифрования, относятся:

  • Microsoft XML версии 5.0 (Microsoft Office 2003 и Microsoft XML Viewer) и версии 6.0 (Microsoft Visual Studio 2005);
  • Microsoft Certification Authority, входящее в состав ОС Windows Server 2000/2003/2008/2008R2 (см. особенности установки);
  • Microsoft Outlook Express, входящее в состав Internet Explorer версии 5.0 и выше;
  • Microsoft Outlook, входящее в состав MS Office 2000/XP/2003/2007/2010/2013 (при формировании сообщений в формате S/MIME). При использовании ПО Microsoft Outlook 2000 рекомендуем установить Набор исправлений Office 2000 SR-1a, который позволяет корректно обрабатывать кодировки KOI8 и Win1251 в подписанных сообщениях;
  • Microsoft Word/Excel, входящее в состав MS Office 2003/2007 (при формировании ЭЦП документов);
  • Средства формирования и проверки ЭЦП программного обеспечения, распространяемого по сети (Microsoft Authenticode);
  • Защита соединений в Интернете (TLS для HTTPS) от клиентов (Internet Explorer 5.0 и выше, КриптоПро Fox) до веб-серверов (Microsoft IIS, Apache, Tomcat);
  • Защита почтовых соединений (TLS для IMAPS/POP3S/SMTPS) в Microsoft Exchange и Microsoft Outlook;
  • Защита соединений удалённого администрирования при использовании Microsoft Terminal Server или серверов и клиентов Citrix;

Встраивание КриптоПро CSP в приложения

Для встраивания КриптоПро CSP в разрабатываемые приложения следует использовать функции Microsoft CryptoAPI, SSPI, CAPICOM, а так же КриптоПро ЭЦП Browser plug-in. Ниже приведено краткое описание этих интерфейсов. Более подробное описание можно найти в программной документации MSDN (Microsoft Developer Network).

Цели использования криптографических функций

Для обеспечения защиты электронных документов и создания защищенной автоматизированной системы в первую очередь используют криптографические методы защиты, которые позволяют обеспечить защиту целостности, авторства и конфиденциальности электронной информации и реализовать их в виде программных или аппаратных средств, встраиваемых в автоматизированную систему. Однако следует отметить, что использование криптографии ни в коем случае не исключает применение организационно-технических мер защиты.

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

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

  • Конфиденциальность информации. При передаче данных в сети обеспечивается использованием функций шифрования. При хранении данных (на дисках, в базе данных) может использоваться функция шифрования или (для обеспечения НСД к хранимой информации) функция шифрования на производном (например, от пароля) ключе.
  • Идентификация и авторство. При сетевом взаимодействии (установлении сеанса связи) обеспечивается функциями ЭЦП при использовании их в процессе аутентификации (например, в соответствии с рекомендациями Х.509). Одновременно при аутентификации должна использоваться защита от переповторов. Для этих целей может быть использована функция имитозащиты с ограничениями, так как при вычислении имитовставки используется симметричный ключ шифрования, единый для двух субъектов (объектов) системы. При электронном документообороте обеспечивается использованием функций ЭЦП электронного документа. Дополнительно должна быть предусмотрена защита от навязывания, переповтора электронного документа.
  • Целостность. Обеспечивается использованием функций ЭЦП электронного документа. При использовании функций шифрования (без использования ЭЦП) обеспечивается имитозащитой. Для обеспечения целостности хранимых данных может быть использована функция хеширования или имитозащиты, но при этом не обеспечивается авторство информации.
  • Неотказуемость от передачи электронного документа. Обеспечивается использованием функций ЭЦП (подпись документа отправителем) и хранением документа с ЭЦП в течение установленного срока приемной стороной.
  • Неотказуемость от приема электронного документа. Обеспечивается использованием функций ЭЦП и квитированием приема документа (подпись квитанции получателем), хранением документа и квитанции с ЭЦП в течении установленного срока отправляющей стороной.
  • Защита от переповторов. Обеспечивается использованием криптографических функций ЭЦП, шифрования или имитозащиты с добавлением уникального идентификатора сетевой сессии (электронного документа) с последующей их проверкой приемной стороной или разработкой специализированного протокола аутентификации (обмена электронными документами).
  • Защита от навязывания информации. Зашита от нарушителя с целью навязывания им приемной стороне собственной информации, переданной якобы от лица санкционированного пользователя (нарушение авторства информации). Обеспечивается использованием функций ЭЦП с проверкой атрибутов электронного документа и открытого ключа отправителя. В случае навязывания информации про компрометации ключа обеспечивается организационно-техническими мероприятиями. Например, созданием системы централизованного управления ключевой информацией (оповещением абонентов) или специализированных протоколов электронного документооборота.
  • Защита от закладок, вирусов, модификации системного и прикладного ПО. Обеспечивается совместным использованием криптографических средств и организационных мероприятиях.

Использование CryptoAPI

Использование CryptoAPI в ОС Windows/Solaris/Linux/FreeBSD преследует две главные цели:

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

На рисунке ниже приведена общая архитектура криптографических функций.

Общая архитектура CryptoAPI состоит из пяти основных функциональных групп:

Базовые криптографические функции

  • Функции инициализации (работы с контекстом). Эти функции предоставляют приложению возможность выбрать определенный криптопровайдер по типу имени или по требуемой функциональности.
  • Функции генерации ключей. Эти функции предназначены для формирования и хранения криптографических ключей различных типов.
  • Функции обмена ключами. Эти функции предназначены для того чтобы приложения могли обмениваться различными типами ключевой информации для обеспечения взаимодействия между собой.

Функции кодирования/декодирования

Данные функции предназначены для преобразование (кодирования) из внутреннего представления объектов, используемых в CryptoAPI, во внешнее представление и обратно. В качестве внешнего представления объектов используется формат ASN.1 (Abstracy Syntax Notation One), определенный серией рекомендаций X.680.

К этой же группе функций можно отнести набор функций, позволяющих расширить функциональность CryptoAPI, путем реализации и регистрации собственных типов объектов.

Функции работы со справочниками сертификатов

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

Высокоуровневые функции обработки криптографических сообщений

Именно эта группа функций (Simplified Message Functions) в первую очередь предназначена для использования в прикладном ПО. С помощью этих функций можно:

  • Зашифровать/расшифровать сообщение от одного пользователя к другому.
  • Подписать данные.
  • Проверить подпись данных.

Эти функции (так же как и функции низкого уровня) оперируют сертификатами открытых ключей X.509 для адресации отправителя/получателя данных. В качестве формата данных, формируемых функциями, используется формат PKCS#7 (RFC2315) или CMS (RFC2630) в Windows.

Низкоуровневые функции обработки криптографических сообщений

Данная группа функция (Low Level Message Functions) предназначена для аналогичных целей, что и группа высокоуровневых функций, но обладает большей функциональностью. Вместе с тем большая функциональность потребует от прикладного программиста более детальных знаний в области прикладной криптографии.

Использование SSPI

Использование SSPI в ОС Windows/Solaris/Linux/FreeBSD преследует две главные цели:

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

Инструментарий разработчика CAPICOM

CAPICOM предоставляет COM-интерфейс, использующий основные функции CryptoAPI. Этот компонент является добавлением к уже существующему COM интерфейсу Certificate Enrollment Control (xenroll), который реализуют клиентские функции генерации ключей, запросов на сертификаты и обмена с центром сертификации.

С выпуском данного компонента стало возможным использование функций формирования и проверки электронной цифровой подписи, построения и проверки цепочек сертификатов, взаимодействия с различными справочниками сертификатов (включая Active Directory) с использованием Visual Basic, C++, JavaScript, VBScript и среды разработки Delphi.

Загрузить дистрибутив и примеры использования CAPICOM можно непосредственно с сайта Microsoft.

Подробную информацию о CAPICOM смотрите на сайте Microsoft в следующих разделах:

Инструментарий разработчика КриптоПро CSP SDK

КриптоПро CSP может использоваться для встраивания в прикладное программное путем непосредственного вызова функций КриптоПро CSP после загрузки модуля с использованием функции LoadLibrary.

Для этих целей в комплект поставки включается Руководство программиста (csp_2_0.chm, tls_2_0.chm для версии 2.0, CSP_3_0.chm, SSPI_3_0.chm, CAPILite_3_0.chm для версии 3.0), описывающее состав функций и тестовое ПО (sample2_0.zip для версии 2.0 и SDK для версии 3.0).

Руководство программиста и тестовое ПО для версии 3.6 доступны на странице загрузки.

Онлайн-версия руководства программиста для версии 3.6 также доступна на нашем сайте:

Тестовое ПО разработано с использованием компиляторов Microsoft Visual C++ (версия 2.0) и Microsoft Visual Studio .NET (для 3.0).

Для компиляции программ, входящих в тестовое ПО, дополнительно необходимы include файлы и библиотеки, входящие в Microsoft Windows Platform SDK.

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

Вы также можете получить уже скомпилированную тестовую программу csptest2_0.exe для версии 2.0 или SDK для версий 3.0 и выше.