Исследование возможности использования криптопровайдера КриптоПро jcp для создания программных средств электронной цифровой подписи

ИССЛЕДОВАНИЕ ВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ КРИПТОПРОВАЙДЕРА КРИПТОПРО JCP ДЛЯ СОЗДАНИЯ ПРОГРАММНЫХ СРЕДСТВ ЭЛЕКТРОННОЙ ЦИФРОВОЙ

ПОДПИСИ

И.В. Головков Научный руководитель - к. т.н., доцент А.В. Птицын

Построение систем защищенного электронного документооборота основано на использовании электронной цифровой подписи (ЭЦП). Базовые криптографические функции реализуются средствами крипто-провадеров - службами, предоставляющими криптографические примитивы для формирования и проверки ЭЦП. Представлен программный продукт, реализующий функции нового российского криптопро-вайдера КриптоПро JCP.

Введение

Последние несколько лет ознаменовались постепенной заменой бумажной технологии обработки информации ее электронным аналогом. Со временем можно ожидать полного вытеснения бумажного документооборота электронным. Однако представление традиционных бумажных документов в виде электронных последовательностей, состоящих из нулей и единиц, обезличивает последние. Защитных атрибутов бумажных документов: подписей, печатей и штампов, водяных знаков, специальной фактуры бумажной поверхности и других - у электронного представления документов нет. Но электронные документы нужно защищать не менее тщательно, чем бумажные. Поэтому возникает задача разработки такого механизма электронной защиты, который бы смог заменить подпись и печать на бумажных документах. Необходимо разработать механизм цифровой подписи (digital signature), которая представляет собой дополнительную информацию, приписываемую к защищаемым данным. Цифровая подпись зависит от содержания подписываемого документа и некоего секретного элемента (ключа), которым обладает только лицо, участвующее в защищенном обмене [1]. Таким образом, механизм электронной цифровой подписи должен обеспечивать:

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

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

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

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

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

Поскольку при приобретении системы цифровой подписи, как правило, у заказчика уже сложилась информационная инфраструктура, то очень часто на первое место выходит вопрос об интеграции приобретаемой системы в принятую технологию обработки информации. Если система ЭЦП не поддерживает используемое у заказчика программное обеспечение (например, потому что оно разработано самим заказчиком), то поставщик должен поставлять интерфейс (API) для встраивания возможностей работы с цифровой подписью в систему заказчика. Такую возможность предлагают многие российские производители (например, Крипто-Про, МО ПНИЭИ, ЛАН КРИПТО, НИП «Информзащита»). Причем желательно, чтобы данный интерфейс существовал для различных операционных систем и платформ (Windows NT, Linux, Solaris, FreeBSD).

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

В наиболее полной мере соответствует перечисленным выше факторам продукт российской компании ООО Крипто-Про - криптопровайдер «КриптоПро JCP». «Крип-то-Про JCP» является средством криптографической защиты информации, реализующим российские криптографические стандарты и разработанным в соответствии со спецификацией JCA (Java Cryptography Architecture). Интеграция КриптоПро JCP с архитектурой Java позволяет использовать стандартные процедуры, такие как создание и проверка ЭЦП, шифрование, генерацию ключей, вычисление кодов аутентификации в Java Cryptography Extension (JCE) в соответствии со спецификациями Java Cryptography Extension (JCE) на различных операционных системах и аппаратных платформах. Криптопровайдер «КриптоПро JCP», разработанный в соответствии с требованиями фирмы Sun, является одним из немногих криптопровадеров, позволяющих реализовы-вать российские криптографические алгоритмы в среде Java [2].

Криптопровайдер «КриптоПро JCP» появился на рынке сравнительно недавно, и коммерческих продуктов, реализующих его функционал, на данный момент не существует.

Расширение криптографической архитектуры Java средствами криптопровайдера

КриптоПро JCP

Платформа Java предоставляет все необходимые средства для разработки современных надежных приложений. Изначально разработчики платформы Java руководствовались следующим принципом: «Написано однажды, работает везде» («Write Once, Run Anywhere»), т.е. разработчик приложения на Java не должен задумываться над тем, на какой платформе будет выполняться написанный им код. Это привело к тому, что платформа Java стала одним из самых популярных средств разработки распределенных приложений. Естественно, что данная область программного обеспечения предъявляет повышенные требования к безопасности приложений.

Криптография - неотъемлемая часть современных средств информационной безопасности. Без криптографии невозможны надежная аутентификация, контроль целостности и сохранение конфиденциальности.

Криптографическая архитектура Java (Java Cryptography Architecture - JCA) включает в себя как часть набора инструментальных средств разработки из пакета java.security, которая относится к криптографии, так и ряд соглашений и спецификаций, принятых в JCA. Расширения криптографии Java (Java Cryptography Extension - JCE) обеспечивают структуру и выполнение функций шифрования, генерации ключей, выработку имитовставки, осуществляет поддержку симметричных и асимметричных алгоритмов шифрования.

Рис. 1. Стандартные компоненты системы безопасности Java 2

Ранее расширения криптографии Java реализовывались отдельным пакетом (дополнением) для средств разработчика Java. Это происходило из-за того, что технологии симметричного шифрования и выработки ключевого материала подпадали под экспортные ограничения США. Однако, начиная с версии 1.4, криптографические расширения интегрированы в набор инструментальных средств разработки. Программный интерфейс JCE позволяет реализовывать:

• блочное симметричное шифрование (DES, RC2, IDEA);

• потоковое симметричное шифрование (RC4);

• асимметричное шифрование (RSA);

• шифрование, основанное на паролях;

• ключевые спецификации;

• выработку имитовставки.

JCE в пределах JDK включает два компонента программного обеспечения:

• структуру, которая определяет и поддерживает предлагаемые криптопровайдерами услуги шифрования;

• собственно криптопровайдер «SunJCE».

Криптографическая архитектура Java 2 (рис. 1) разработана для предоставления следующих сервисов:

• постановка/проверка электронной подписи;

• вычисление хэш-функции;

• генерация пар ключей открытый/секретный;

• создание сертификатов, подтверждающих аутентичность открытых ключей;

• хранение ключей, а также сертификатов надежных партнеров;

• преобразование ключей из представления со скрытой структурой в общепонятное представление и наоборот;

• управление параметрами криптографических алгоритмов;

• генерация параметров криптографических алгоритмов;

• генерация (псевдо)случайных чисел;

• симметричное шифрование;

• выработка общего ключевого материала,

и удовлетворяет следующим технологическим требованиям:

• обеспечивать независимость от алгоритмов и их реализаций;

• обеспечивать взаимную совместимость реализаций;

• обеспечивать расширяемость набора алгоритмов и их реализаций.

Платформенная независимость достигается путем использования архитектуры криптопровадеров. Криптопровайдер (Cryptographic Service Provide - криптографический сервис-провайдер) представляет собой класс, реализующий одну или несколько криптографических функций, которые подчиняются интерфейсам, определенным в JCA. В стандартный пакет поставки включен криптопровайдер фирмы Sun, реализующий следующие алгоритмы и механизмы:

• алгоритм DSA, описанный в стандарте США NIST FIPS 186;

• алгоритмы MD5 (RFC 1321) и SHA-1 (NIST FIPS 180-1);

• механизм генерации ключевой пары для алгоритма DSA;

• механизм генерации и управления параметрами алгоритма DSA;

• другие.

Рис. 2. Соотношение между криптографическими сервисами, алгоритмами

и реализациями

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

• MessageDigest - работа c хэшем;

• Signature - работа с цифровой подписью;

• KeyPairGenerator - генерация ключевой пары;

• KeyFactory и KeyStore - работа с ключами и их хранение;

• CertificateFactory - создание сертификатов открытых ключей;

• AlgorithmParameters - задание параметров криптографических алгоритмов;

• AlgorithmParametersGenerator - создание параметров для алгоритмов;

• SecureRandom - генерация случайных чисел;

• СеЛРаШБиПег - построение цепочек сертификации;

• СеЛРаШУаНёаШг - верифицирование цепочек сертификации;

• Сег!81;оге - использование хранилища сертификатов и списков отозванных сертификатов.

Соотношение между криптографическими сервисами, алгоритмами и реализациями представлено на рис. 2. Каждый сервис может обеспечиваться несколькими алгоритмами, каждый из которых, в свою очередь, может иметь несколько реализаций [3]. Например, для вычисления хэш-функции предназначены алгоритмы М05/8НА-1 (равно как и российский ГОСТ «Функция хэширования»), для выработки и проверки электронной подписи - алгоритмы КБА/ОБА, российский ГОСТ «Процессы формирования и проверки электронной цифровой подписи» в реализации компании КриптоПро.

Описание работы программы

Программное средство реализует следующие криптографические функции, основанные на сервисах, предоставляемых криптопровайдером КриптоПро 1СР:

1. генерация ключевой пары (открытый и секретный ключи);

2. генерация самоподписанного сертификата открытого ключа;

3. запись ключевой пары и сертификата в хранилище;

4. экспорт сертификата открытого ключа в файл;

5. формирование электронной цифровой подписи;

6. проверка электронной цифровой подписи.

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

Алгоритм заботы программы представлен на рис. 3.

Рис. 3. Алгоритм работы программы

Заключение

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

Данное программное средство, как и исследуемый криптопровайдер, реализовано на языке Java, что имеет ряд положительных сторон: язык Java платформенно независим, компилятор для этого языка свободно распространим.

Результатом написания программы стало обоснованное подтверждения возможности использования криптопровайдера КриптоПро JCP для создания программных средств электронной цифровой подписи.

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

Литература

1. Как обеспечить подлинность электронных документов [Электронный ресурс] / ред. Лукацкий А.В., Режим доступа: http://docs.luksian.com/security/crypto/digisign/, свободный. Загл. с экрана.

2. КриптоПро JCP [Электронный ресурс] Режим доступа: http://www.cryptopro.ru/cryptopro/products/jcp/default.htm, свободный. Загл. с экрана.

3. Java Cryptography Architecture [Электронный ресурс] Режим доступа: http://java.sun.com/j2se/1.5.0/docs/guide/security/CryptoSpec.html, свободный. Загл. с экрана.