Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Current »

При создании собственного приложения, использующего возможности устройств Рутокен, перед разработчиком встает вопрос о выборе оптимального средства реализации криптографических функций. На сегодняшний день наиболее распространёнными высокоуровневыми интерфейсами, предоставляющими мощные возможности по использованию функционала устройств Рутокен прикладными приложениями, являются стандарты RSALabs PKCS #11 и Microsoft CryptoAPI.

Важно помнить, что выбор API должен осуществляться разработчиком в каждом конкретном случае отдельно в зависимости от предъявляемых требований.

Стандарт PKCS #11 является одним из семейства стандартов криптографии с открытым ключом (PKCS, Public-Key Cryptography Standard), разработанных RSA Laboratories для обеспечения совместимости различных реализаций криптографии с открытым ключом.

Стандарт PKCS #11, также известный под названием Cryptoki (Cryptographic Token Interface Standart), распространяется на «криптографические токены» – устройства, способные содержать криптографическую информацию и выполнять криптографические преобразования, и определяет для них интерфейс прикладного программирования (API). Таким образом, стандарт описывает общий набор команд для выполнения криптографических функций независимо от конкретной аппаратной реализации токена и программной среды.

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

Более подробно с текстом стандарта можно ознакомиться на странице http://www.rsa.com/rsalabs/node.asp?id=2133 .

Достоинства PKCS #11
  • кроссплатформенность. PKCS #11 легко реализуется на любых платформах: Windows, Mac OS, Linux, UNIX, Java и т.п.
  • простой интерфейс для языка C;
  • высокая степень абстракции;
  • высокая распространенность среди не-Windows платформ;
  • легкая портируемость программного обеспечения на любые платформы;
  • поддержка управления несколькими устройствами Рутокен одновременно;
  • поддержка одновременного хранения на устройстве Рутокен ключей, сертификатов и объектов данных;
  • наличие специальной функции ожидания подключения/отключения токена (C_WaitForSlotEvent).
Недостатки PKCS #11
  • недостаточная поддержка стандарта операционными системами семейства  Windows и, как следствие, прикладным программным обеспечением под Windows;
  • отсутствие вспомогательных функций для работы с сертификатами, в результате чего разбор и изучение сертификата формата X.509 может оказаться достаточно сложной задачей. Однако при работе в MS Windows возможно использование функций Win32 API даже при использовании стандарта PKCS #11 (см. пример ССЫЛКА);
  • отсутствие функции выбора и управления криптопровайдерами. Так как PKCS #11 представляет собой API, а не архитектуру,  в случае, если приложению необходимо использовать несколько криптопровайдеров, то оно само должно определять, как с ними работать.

Microsoft CryptoAPI (MS CAPI) представляет собой интерфейс прикладного программирования, разработанный корпорацией Microsoft для обеспечения криптографическими функциями разработчиков Windows-приложений и входящий в состав операционных систем Windows. Криптографические алгоритмы реализуются криптопровайдером – независимым модулем, содержащим библиотеку криптографических функций со стандартизованным интерфейсом, а CryptoAPI лишь предоставляет унифицированный интерфейс работы с криптопровайдером. Подобная архитектура позволяет переходить от одного провайдера к другому с минимальными изменениями исходного кода, так как интерфейс (т. е. сами функции) не меняется.

Начиная с Windows Vista, Microsoft предлагает новый интерфейс Cryptography API: Next Generation (CNG), предназначенный для замены устаревшего интерфейса CryptoAPI. Служба CNG предоставляет набор интерфейсов API для выполнения основных криптографических операций и благодаря своей модульной архитектуре позволяет создавать, обновлять и использовать собственные алгоритмы шифрования в таких приложениях и технологиях, как служба сертификации Active Directory, технологии SSL и IPsec. CNG поддерживает все алгоритмы, предоставляемые CryptoAPI, а также новые алгоритмы, включая алгоритмы шифрования, цифровых подписей, обмена ключами и хеширования, в том числе и алгоритмы на основе эллиптических кривых (ECC). Интерфейс CNG является гораздо более гибким, тем самым обеспечивая разработчикам больший контроль над способом выполнения криптографических операций и совместной работой алгоритмов при выполнении различных операций.

Более подробная информация o CryptoAPI доступна на сайте MSDN Library по ссылке http://technet.microsoft.com/en-us/library/cc962093.aspx.

Достоинства CryptoAPI
  • глубокая интеграция в Windows и прикладное программное обеспечение под Windows;
  • простой интерфейс;
  • более высокий уровень абстракции по сравнению с PKCS #11;
  • легкая портируемость программного обеспечения в пределах ОС Windows;
  • автоматический доступ к любому установленному криптопровайдеру.
Недостатки CryptoAPI
  • невозможность использования в ОС, отличных от Windows;
  • отсутствие возможности управления несколькими устройствами Рутокен одновременно. Так как в CryptoAPI нет понятия физического устройства, то для одновременного использования нескольких устройств Рутокен на одном и том же компьютере потребуется использование особой техники, описанной в разделе ССЫЛКА;
  • отсутствие специальной функции ожидания подключения/отключения токена (реализация возможна через Win32 API);
  • невозможность хранения объектов данных вместе с RSA ключами и сертификатами на устройстве Рутокен;
  • установка криптопровайдера требует наличия прав администратора в ОС.
  • No labels