Cryptopro jcp что это
КриптоПро J ava C S P представляет собой Java модуль который выполняет все криптографические операции используя КриптоПро CSP. Данный криптопровайдер сочетает в себе высокую скорость нативного кода с удобством разработки и использования JCE интерфейсов в Java приложениях.
Реализация API КриптоПро J ava C S P совместима с API КриптоПро JCP 2.0. Для работы КриптоПро Java CSP требуется установить криптопровайдер КриптоПро CSP версии 5.0.
КриптоПро Java CSP предназначен для:
Алгоритм выработки значения хэш-функции реализован в соответствии с требованиями ГОСТ Р 34.11 94 «Информационная технология. Криптографическая защита информации. Функция хэширования» и ГОСТ Р 34.11 2012 «Информационная технология. Криптографическая защита информации. Функция хэширования».
Алгоритмы формирования и проверки ЭЦП реализованы в соответствии с требованиями:
ГОСТ Р 34.10-2001 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»;
ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи».
Алгоритм зашифрования/расшифрования данных и вычисление имитовставки реализованы в соответствии с требованиями ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая» и ГОСТ 34.12-2015 «Информационная технология. Криптографическая защита информации».
При генерации закрытых и открытых ключей обеспечена возможность генерации с различными параметрами в соответствии с ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012.
При выработке значения хэш-функции и шифровании обеспечена возможность использования различных узлов замены в соответствии с ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ 28147-89.
Провайдер Java CSP RSA (требует установки компонента провайдера КриптоПро CSP 5.0 с реализацией иностранных алгоритмов: Crypto-Pro Enhanced RSA and AES CSP) также поддерживает зарубежные алгоритмы: SHA-1, SHA-2, AES (128/192/256), 3DES, 3DES-112, DES, RSA.
КриптоПро Java CSP разработан в соответствии с требованиями интерфейса JCA и может быть использован в операционных системах с установленной виртуальной машиной Java версии 7 и выше или Google Android (версии 7.0 и выше).
Поддерживаемые операционные системы:
В соответствии с КриптоПро JCP, КриптоПро Java CSP функционирует в следующем окружении:
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2001):
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 256 бит):
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 512 бит):
Длина ключей, используемых при шифровании:
Криптографическая архитектура Java 7 и выше
Стандартные спецификации Java 7 предоставляют стройную систему криптографической защиты информации (ПКЗИ). Более подробно эта архитектура развёрнута по следующим ссылкам:
Cryptopro jcp что это
Реализация КриптоПро JCP совместима с КриптоПро CSP.
Средство криптографической защиты КриптоПро JCP распространяется в двух комплектациях:
КриптоПро JCP предназначен для:
Алгоритм выработки значения хэш-функции реализован в соответствии с требованиями ГОСТ Р 34.11 94 «Информационная технология. Криптографическая защита информации. Функция хэширования» и ГОСТ Р 34.11 2012 «Информационная технология. Криптографическая защита информации. Функция хэширования».
Алгоритмы формирования и проверки ЭЦП реализованы в соответствии с требованиями:
Алгоритм зашифрования/расшифрования данных и вычисление имитовставки реализованы в соответствии с требованиями ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая» и ГОСТ 34.12-2015 «Информационная технология. Криптографическая защита информации».
При генерации закрытых и открытых ключей обеспечена возможность генерации с различными параметрами в соответствии с ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012.
При выработке значения хэш-функции и шифровании обеспечена возможность использования различных узлов замены в соответствии с ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ 28147-89.
КриптоПро JCP функционирует в следующем окружении:
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2001):
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 256 бит):
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 512 бит):
Длина ключей, используемых при шифровании:
Типы ключевых носителей:
Криптографическая архитектура Java
Стандартные спецификации Java 7, предоставляют стройную систему криптографической защиты информации (ПКЗИ). Более подробно эта архитектура развёрнута по следующим ссылкам:
Как использовать
КриптоПро JCP разработан в соответствии с требованиями интерфейса JCA и позволяет создавать новые, надежно защищенные приложения с использованием богатейшего и проверенного временем инструментария Java такого, как Apache XML Security для ЭЦП XML-документов стандарта XMLdsig.
Рекомендации к окружению
Для пользовательских приложений рекомендуется использовать лицензированные Sun виртуальные машины J2SE полностью удовлетворяющие требованиям спецификации Java 7. Для серверных приложений рекомендуется использовать сертифицированные Sun сервера приложений имеющие значок «Java compatible Enterprise Edition».
Cryptopro jcp что это
Реализация КриптоПро JCP совместима с КриптоПро CSP.
Средство криптографической защиты КриптоПро JCP распространяется в двух комплектациях:
КриптоПро JCP предназначен для:
Алгоритм выработки значения хэш-функции реализован в соответствии с требованиями ГОСТ Р 34.11 94 «Информационная технология. Криптографическая защита информации. Функция хэширования» и ГОСТ Р 34.11 2012 «Информационная технология. Криптографическая защита информации. Функция хэширования».
Алгоритмы формирования и проверки ЭЦП реализованы в соответствии с требованиями:
Алгоритм зашифрования/расшифрования данных и вычисление имитовставки реализованы в соответствии с требованиями ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая» и ГОСТ 34.12-2015 «Информационная технология. Криптографическая защита информации».
При генерации закрытых и открытых ключей обеспечена возможность генерации с различными параметрами в соответствии с ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012.
При выработке значения хэш-функции и шифровании обеспечена возможность использования различных узлов замены в соответствии с ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ 28147-89.
КриптоПро JCP функционирует в следующем окружении:
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2001):
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 256 бит):
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 512 бит):
Длина ключей, используемых при шифровании:
Типы ключевых носителей:
Криптографическая архитектура Java
Стандартные спецификации Java 7, предоставляют стройную систему криптографической защиты информации (ПКЗИ). Более подробно эта архитектура развёрнута по следующим ссылкам:
Как использовать
КриптоПро JCP разработан в соответствии с требованиями интерфейса JCA и позволяет создавать новые, надежно защищенные приложения с использованием богатейшего и проверенного временем инструментария Java такого, как Apache XML Security для ЭЦП XML-документов стандарта XMLdsig.
Рекомендации к окружению
Для пользовательских приложений рекомендуется использовать лицензированные Sun виртуальные машины J2SE полностью удовлетворяющие требованиям спецификации Java 7. Для серверных приложений рекомендуется использовать сертифицированные Sun сервера приложений имеющие значок «Java compatible Enterprise Edition».
Веб-сервисы с поддержкой ЭЦП на базе криптографии ГОСТ
Начиная с версии 2008.2, в Caché и в Ensemble встроена поддержка WS-Security, включающая механизмы проверки и формирования электронной подписи SOAP-сообщений. На текущий момент имеется «out of the box» поддержка ЭЦП на базе крипто алгоритмов семейства RSA.
К системам, создаваемым для российских заказчиков, зачастую предъявляется требование применения сертифицированных СКЗИ, использующих крипто алгоритмы ГОСТ. Далее описан один из подходов к разработке веб-сервисов Caché, защищенных ЭЦП на базе ГОСТ’овской криптографии.
В качестве сертифицированного СКЗИ, будем использовать продукт КриптоПро JCP, представляющий собой набор Java библиотек, в которых реализован алгоритм подписи — ГОСТ Р 34.10-2001, а также алгоритм хэширования ГОСТ Р 34.11-94.
Установка КриптоПро JCP на Windows
Прежде всего, на сервер системы установите Java Runtime Environment (JRE) версии не ниже 1.6.
Загрузите дистрибутив КриптоПро JCP с сайта производителя, распакуйте его в папку на сервере и запустите скрипт установки install.bat. Скрипт находится в папке lib дистрибутива. При его запуске необходимо указать путь к JRE:
install.bat «C:\Program Files\Java\jdk1.6.0_20\jre»
В случае если имеется лицензия, при запуске скрипта также указывается серийный номер и название компании:
install.bat «C:\Program Files\Java\jdk1.6.0_20\jre» XXXXX-XXXXX-XXXXX-XXXXX-XXXXX «Your Company»
Под Windows 7 скрипт установки необходимо запускать с правами администратора. После завершения работы скрипта, убедитесь в том, что в папке jre\lib\ext появились следующие библиотеки:
| asn1rt.jar | JCP.jar | JCPRevCheck.jar | JCP_ASN.jar |
| AsnLite.jar | JCPinst.jar | JCPRevTools.jar | JCryptoP.jar |
| forms_rt.jar | JCPRequest.jar | JCPxml.jar |
Дополнительные библиотеки Java
Нам понадобится библиотека iscjcp.jar (исходники здесь), в которой содержится ряд вспомогательных классов для работы с JCP из Caché. Кроме этого, потребуются три open source библиотеки — Commons Logging, Santuario (aka XML Security) и WSS4J. Их использование регулируется лицензией Apache Software License 2.0.
Загрузите архив jars.zip с четырьмя перечисленными библиотеками и распакуйте его в папку jre\lib\ext.
В случае использования Windows 7, необходимо выдать полномочия группе «Все» на чтение и выполнение всех библиотек в папке jre\lib\ext.
Настройка и запуск Java Gateway, создание проекций классов
Чтобы стало возможным вызывать Java-классы из Caché/Ensemble, необходимо настроить и запустить Java Gateway, а также создать проекции используемых Java-классов.
Добавим новую запись в таблицу настроек Java Gateway в области %SYS:
insert into %Net_Remote.ObjectGateway(Name, Type, Server, Port, JavaHome) values (‘JCPGate’, ‘1’, ‘127.0.0.1’, ‘55555’, ‘C:\Program Files\Java\jdk1.6.0_20\jre’)
Здесь в поле Name указано значение “JCPGate” – это имя нового Java Gateway. В поле JavaHome необходимо указать путь к JRE, для которой была произведена установка JCP. В поле Port указывается TCP-порт, используемый для общения с этим Java Gateway из Caché.
Теперь можно запустить новый Java Gateway, выполнив в терминале Caché следующую команду:
write ##class(%Net.Remote.Service).StartGateway(«JCPGate»)
Чтобы остановить его, вызовите метод StopGateway:
write ##class(%Net.Remote.Service).StopGateway(«JCPGate»)
Запускать/останавливать Java Gateway можно из любой области.
Перейдем в область, где ведется разработка веб-сервисов, и создадим проекцию для Java-класса isc.jcp.JcpFacade, выполнив в терминале Caché следующую команду:
do ##class(%Net.Remote.Java.JavaGateway).%ExpressImport(«isc.jcp.JcpFacade», «55555»)
Здесь 55555 – это номер TCP-порта, который используется для общения с Java Gateway. Этот порт был указан нами ранее при добавлении записи в таблицу %Net_Remote.ObjectGateway.
Проверка ЭЦП во входящих SOAP-сообщениях
Загрузите и распакуйте архив iscjcp-cos-sources2012.zip с исходным кодом классов smev.JcpUtils и smev.JcpSignature. Импортируйте класс smev.JcpUtils в Caché с помощью Studio, предварительно перейдя в область, где ведется разработка веб-сервисов. Откройте импортированный класс в Studio и отредактируйте значения параметров JAVAGATEWAYPORT и JAVAGATEWAYSERVER, указав соответственно TCP-порт и IP-адрес используемого Java Gateway. Скомпилируйте класс.
Теперь, чтобы добавить в существующий веб-сервис проверку ЭЦП, достаточно внести в класс веб-сервиса следующий метод:
Это работает на версиях Caché/Ensemble, начиная с 2009.1. Ниже приведен пример веб-сервиса, который осуществляет проверку подписи всех входящих SOAP-сообщений.
Формирование ЭЦП для исходящих SOAP-сообщений веб-сервиса
Далее рассмотрим случай, когда все ответы веб-сервиса должны быть подписаны ЭЦП организации. В такой ситуации на сервере системы размещается хранилище, содержащее секретный ключ, который используется при формировании подписи. Кроме того, должен быть доступен сертификат, соответствующий этому ключу. В библиотеке iscjcp.jar реализована работа с хранилищем типа «FloppyStore». Поэтому, для формирования ЭЦП нам потребуется виртуальная дискета с хранилищем ключей.
Размещение секретного ключа и сертификата на виртуальной дискете на сервере системы
Вы можете самостоятельно генерировать ключи и сертификаты с помощью КриптоПро JCP. Эти процедуры описаны в документации продукта.
Формирование ЭЦП
Загруженный ранее архив iscjcp-cos-sources2012.zip с исходным кодом Caché Object Script содержал класс smev.JcpSignature. Импортируйте этот класс в Caché с помощью Studio.
Откройте класс smev.JcpUtils в Studio и отредактируйте значение параметра CERTFILENAME, указав полный путь к файлу сертификата – “A:\SelfSigned.cer”. Этот сертификат соответствует секретному ключу, который будет использоваться при формировании ЭЦП. Скомпилируйте класс.
Теперь, чтобы добавить в метод веб-сервиса функционал по формированию ЭЦП для возвращаемых сообщений, необходимо вставить следующую строку в код этого метода:
Это работает на версиях Caché/Ensemble, начиная с 2009.1, по 2012.1 включительно. Ниже приведен пример веб-сервиса, где в метод echo() добавлено подписывание ответа.
Тестирование веб-сервиса
Чтобы протестировать проверку/формирование ЭЦП веб-сервисом test.TestService, исходный код которого приведен выше, выполним следующие действия.
Файл необходимо сохранить в кодировке UTF-8. Обратите внимание на атрибут wsu:Id корневого элемента Body.
Готовый файл input.xml имеется в архиве xmls.zip.
Убедимся в том, что в результате работы метода был создан файл C:\Temp\output.xml, содержащий подписанное SOAP-сообщение (Envelope): в заголовке (Header) находится ЭЦП в формате WS-Security, а тело (Body) представляет собой XML-документ, взятый из файла input.xml.
Готовый файл output.xml имеется в архиве xmls.zip.
Если успешно прошла проверка ЭЦП входящего сообщения, а затем и формирование ЭЦП исходящего, то в окне терминала появится ответ веб-сервиса примерно такого вида:
HTTP/1.1 200 OK
CACHE-CONTROL: no-cache
CONNECTION: close
CONTENT-LENGTH: 2352
CONTENT-TYPE: text/xml; charset=UTF-8
DATE: Thu, 01 Dec 2011 20:08:40 GMT
EXPIRES: Thu, 29 Oct 1998 17:04:19 GMT
PRAGMA: no-cache
SERVER: Apache
SET-COOKIE: CSPSESSIONID-SP-57774-UP-csp-user-=0000000100001odLLhtp000000igxIuSVnd12z6BtrSIFFJA—; path=/csp/user/;
vs42sfoxCX8naSV2NnBSoIoCvUb1ydvvyNnp5XC7nKQ=
ES4aVXFSkHr1cnXUcdZYJTPTa+e5//ASQRYhrRMy46pWSwRW93VxgrW+GhATD2xwK3l+8T1Dfsi2
beVfrkQS0g==
MIIB9TCCAaSgAwIBAgIIRdAY3dqebKUwCAYGKoUDAgIEMCkxJzAlBgNVBAMeHgB0AC4AZQAuAG0A
LgBwAEAAbQBhAGkAbAAuAHIAdTAeFw0xMTExMjkxMzQwMTFaFw0xMjExMjkxMzQwMTFaMCkxJzAl
BgNVBAMeHgB0AC4AZQAuAG0ALgBwAEAAbQBhAGkAbAAuAHIAdTBjMBwGBiqFAwICEzASBgcqhQMC
AiMBBgcqhQMCAh4BA0MABECebxtl5EDpwaWKy2MeJQ7v+NCiIRHiXBeqaqJnNi5AS4aW+14FKKHH
Llu7jjggB06d+/4U29OtDbjfIkPqRUcio4GtMIGqMB0GA1UdDgQWBBTz0qujqn+CC0O9L1aSv39a
ga3EhDALBgNVHQ8EBAMCAcYwEwYDVR0lBAwwCgYIKwYBBQUHAwMwDwYDVR0TBAgwBgEB/wIBATBW
BgNVHQEETzBNgBTz0qujqn+CC0O9L1aSv39aga3EhKErMCkxJzAlBgNVBAMeHgB0AC4AZQAuAG0A
LgBwAEAAbQBhAGkAbAAuAHIAdYIIRdAY3dqebKUwCAYGKoUDAgIEA0EANUalM3ag0xYJ7MqzmCzh
w8ejPqUds37UXKadbyqogZ2yJBMbhWUCsQFyZZZzfc6gXQbRThBTAftfdXxjW8Yusg==
Здравствуй, мир!
Все действия, описанные в статье, можно посмотреть в следующем видеоролике:
CryptoPro JCP на Linux. Как легко и безболезненно перейти на новый стандарт шифрования
Содержание статьи
Если же ты впервые слышишь обо всем этом, то вот небольшая историческая справка.
На смену пришел всем известный ГОСТ Р 34.10—2001 — улучшенный стандарт, разработанный для обеспечения большей стойкости алгоритма. Но время не стоит на месте, меняются алгоритмы и методы криптозащиты, и спустя одиннадцать лет ГОСТ Р 34.10—2001 меняют на ГОСТ Р 34.10—2012.
В новом стандарте первый вариант требований к параметрам остался прежним. Длина секретного ключа составляет порядка 256 бит, и предусмотрено использование хеш-функции с длиной хеш-кода 256 или 512 бит. Главное же отличие нового стандарта — варианты с дополнительными параметрами и схемами, в том числе хешированием по стандарту ГОСТ Р 34.11—2012 «Стрибог».
Стрибог — бог древних славян, который покровительствует ветрам, погоде и всему, что связано с воздушным пространством. Возможно, и облачным технологиям тоже. Подробнее об этом шифре читай в статьях «Хешируем по ГОСТ 34.11—2012» и «Пишем простой локальный блокчейн с использованием „Стрибога“».
Министерство связи даже создало план по переходу на стандарт (PDF). Однако на практике оказалось, что все не так просто, и переход пришлось отложить аж до 31 декабря 2019 года. Причины следующие.
Сейчас в ходу два стандарта криптозащиты для работы ЭЦП, но тем, кто использует ГОСТ-2001, срочно нужно что-то предпринимать. Зима, как говорится, близко, а это значит, что нас ждет череда испытаний при внедрении поддержки ГОСТ-2012.
Ссылки на официальную документацию:
Весь документооборот между участниками обмена происходит по принципу СМЭВ (система межведомственного электронного взаимодействия). Приложение может быть участником такой системы, но может и не быть им вовсе, принцип обмена документами от этого не меняется. Для простоты понимания я нарисовал небольшую схему.

Как всегда, встает вопрос о лицензировании программного решения. CryptoPro JCP недешев, и если одна рабочая станция обойдется в 1200 рублей, то серверные лицензии стоят значительно дороже — порядка 30 000 за каждое ядро (или два ядра процессора Intel с отключенным Hyper Threading).
Установка и настройка криптопровайдера
В примерах я буду использовать виртуальную машину с CentOS 7, но ты не ограничен в выборе аппаратного обеспечения и дистрибутива Linux. Все действия и команды будут такими же.
Первым делом создадим локального пользователя, под которым будет работать ПО, использующее подпись документов.
Правильно установим Java JDK. Скачиваем необходимый дистрибутив.
Распаковываем архив и проверяем, готова ли папка с Java для копирования.
Проверяем, что скопировалось правильно. Если необходимо, меняем владельца папки на root.
Прописываем переменные окружения для Java JDK для всех пользователей по умолчанию.
В файл пишем следующее:
Если на сервере стоит несколько версий Java JDK, то необходимо зарегистрировать альтернативы для новой версии.
В меню выбираем опцию 2 (или ту, что приведет к использованию более новой версии Java). Не забываем поправить права на JRE systemPrefs.
Проверяем установленную версию Java.
Копируем папку с дистрибутивом CryptoPro JCP в раздел для прикладного ПО.
Проверяем, что все скопировалось корректно.
Выдаем права на запуск скриптов.
Проверяем владельца и права на папку, должен быть root. Переходим в нее.
Переходим к установке криптопровайдера JCP. Во время установки необходимо будет ответить на ряд вопросов.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Иван Рыжевцев
Системный администратор с богатым опытом. Прошедший огонь, воду и медные трубы. Главный девиз в жизни: Нерешаемых задач нет, надо только найти правильное решение!





