в начало  предыдущее  закрыть  следущее  в конец
Закрыть окно

Использование токенов в программах Java с помощью криптографического сервис-провайдера LCPKCS11

Система безопасности Java обеспечивает широкие возможности использования различных криптографических алгоритмов в прикладных программах. Поддержка тех или иных криптографических алгоритмов осуществляется в среде выполнения Java (JRE) в рамках Java CryptographyArchitecture (JCA) с помощью так называемых сервис-провайдеров, статически или динамически подключаемых к прикладной программе. Известные провайдеры компании «ЛИССИ-Софт» LCJCE и LCJSSE уже много лет поддерживают применение российских алгоритмов ГОСТ 28147-89, ГОСТ Р34.11-94 и ГОСТ Р34.10-2001 в прикладных программах.

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

 Более надежный способ хранения ключевого материала предоставляют аппаратные токены, которые принципиально не отдают ключи наружу, а сами способны генерировать ключи и производить с ними криптографические операции. Для использования токенов разработан специальный международный стандарт PKCS#11 (Cryptoki), определяющий протоколы и интерфейсы взаимодействия программы с токенами. Начиная с версии 2.30, в данном стандарте представлены российские криптографические алгоритмы.

Российские компании производят токены и другие криптографические устройства, поддерживающие алгоритмы ГОСТ и интерфейсы стандарта PKCS#11 2.30. Такими устройствами являются, например, eToken GOST компании «Аладдин-РД», Рутокен ЭЦП компании «Актив-Софт», ШИПКА компании ОКБ САПР, СКЗИ «MS_KEY K» компании «МультиСофт» и др.

Для того, чтобы российские токены можно было использовать в программах Java, компанией «ЛИССИ-Софт» разработан специальный провайдер LCPKCS11, обеспечивающий подключение токенов через их родные библиотеки PKCS#11 для стандарта 2.30. В отличие от провайдера LCJCE, LCPKCS11 сам не выполняет никаких криптографических операций, а служит лишь посредником между прикладной программой и библиотекой токена PKCS#11 API.

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

 Классы провайдера LCPKCS11 предоставляют прикладной программе фактически два уровня интерфейсов. Верхний уровень - JCA - это традиционные интерфейсы криптографических сервис-провайдеров Java. Нижний уровень - это интерфейсы стандарта PKCS#11. В зависимости от решаемых задач, можно использовать либо интерфейсы высокого уровня, либо интерфейсы уровня PKCS#11.

 К сожалению, многие аппаратные токены поддерживают стандарт PKCS#11 лишь частично, накладывая существенные ограничения реализации. Зачастую они ограничиваются поддержкой лишь тех механизмов, которые необходимы для выполнения операций с ключевой парой ГОСТ Р34.10-2001 при генерации и проверке ЭЦП. Более того, и быстродействие аппаратных токенов зачастую недостаточно высокое. Поэтому компания «ЛИССИ-Софт» разработала библиотеку LCCryptoki, весьма полно реализующую поддержку стандарта PKCS#11 для программных токенов.

 Прикладная программа имеет возможность загрузить два экземпляра провайдера LCPKCS11, один из которых связан с аппаратным токеном, а другой - с программным (см. Рис.1). Операции с ключевым материалом на аппаратном токене выполняются аппаратным токеном, а все остальные - программным. Использование такой спарки обеспечивает как безопасность ключевого материала, так и высокую производительность выполнения тех криптографических операций, которые не требуют доступа к закрытому ключу на аппаратном токене. При этом, все операции производятся через стандартные интерфейсы Java, что позволяет применять в прикладных программах множество стандартных высокоуровневых функций.

 Немаловажной особенностью библиотек компании «ЛИССИ-Софт» является их кроссплатформенность. Как LCPKCS11, так и LCCryptoki успешно работают и в Windows, и в Linux, и в Solaris, и в OS X. Поскольку штатные средства Java сами по себе кроссплатформенные, то и прикладные программы можно разрабатывать кроссплатформенными.

Рис.1 Использование токенов в JRE

Документация

  1. Криптографический сервис-провайдер Java LCPKCS11. Руководство программиста скачать
  2. Враппер Java LCPKCS11. Руководство программиста скачать
© 2002-2018. ООО "ЛИССИ-Софт". Все права защищены
Телефон: +7(495) 589-99-53
Техническая поддержка: +7(499) 110-90-40
E-mail: [email protected]