Для инициализации объекта создания/проверки подписи в JCP/JCSP в функции Signature.getInstance() используются следующие константы:
Константы в провайдерах JCP и JCSP в этом случае используются идентичные. То есть разработчик может создать подпись с помощью провайдера JCP,
а затем проверить ее с помощью провайдера JCSP, указав при этом одну и ту же константу в качестве имени алгоритма (и наоборот).
В случае проверки подписи, созданной непосредственно в CSP, а также при создании подписи, которая в последствии будет проверяться в CSP, ситуация иная.
В этих случаях в провайдерах JCP/JCSP для совместимости с CSP при инициализации объекта создания/проверки подписи в функции Signature.getInstance()
должны использоваться следующие константы:
В ситуациях, когда в функцию создания/проверки подписи подаются не данные, а готовый хэш, в JCP/JCSP используются особые константы.
В этом случае для инициализации объекта создания/проверки подписи в функции Signature.getInstance() используются константы:
Подпись, созданная таким образом в провайдере JCP, может быть проверена в провайдере JCSP, и обратно.
Если же требуется совместимость с провайдером CSP, то для инициализации объекта создания/проверки подписи в функции Signature.getInstance()
КриптоПро JCP
— средство криптографической защиты информации, реализующее российские криптографические стандарты, разработанное в соответствии со спецификацией JCA (Java Cryptography Architecture)
.
Интеграция КриптоПро JCP
с архитектурой Java позволяет использовать стандартные процедуры, такие как создание и проверка ЭЦП (в том числе XMLdsig
, CAdES
, XAdES
) , шифрование, генерацию ключей, вычисление кодов аутентификации (Message Authentication Code — MAC) в JavaTM Cryptography Extension (JCE) в соответствии со спецификациями Java TM
Cryptography Extension (JCE) на различных операционных системах и аппаратных платформах.
Реализация КриптоПро JCP
совместима с КриптоПро CSP
.
Средство криптографической защиты КриптоПро JCP
распространяется в двух комплектациях:
- генерация ключей, формирование и проверка ЭЦП, хэширование данных;
- генерация ключей, формирование и проверка ЭЦП, хэширование данных, шифрование.
КриптоПро JCP предназначен для:
- авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной цифровой подписи (ЭЦП) в соответствии с отечественными стандартами ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012;
- обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89 и ГОСТ 34.12-2015;
- обеспечение аутентичности, конфиденциальности и имитозащиты соединений TLS;
- контроля целостности, системного и прикладного программного обеспечения для его защиты от несанкционированного изменения или от нарушения правильности функционирования;
- управления ключевыми элементами системы в соответствии с регламентом средств защиты.
Алгоритм выработки значения хэш-функции реализован в соответствии с требованиями ГОСТ Р 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.
КриптоПро JCP функционирует в следующем окружении:
- виртуальной машина, удовлетворяющая спецификации Java 7 ™ Virtual Machine
; - требуется Java 7 Runtime Environment версии 7 и выше;
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2001):
- закрытый ключ — 256 бит;
- открытый ключ — 512 бит при использовании алгоритма ГОСТ Р 34.10-2001;
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 256 бит):
- закрытый ключ — 256 бит;
- открытый ключ — 512 бит при использовании алгоритма ГОСТ Р 34.10-2012, 256 бит;
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 512 бит):
- закрытый ключ — 512 бит;
- открытый ключ — 1024 бит при использовании алгоритма ГОСТ Р 34.10-2012, 512 бит;
Длина ключей, используемых при шифровании:
- закрытый ключ — 256 бит на базе алгоритма ГОСТ Р 34.10-2001;
- закрытый ключ — 256 бит на базе алгоритма ГОСТ Р 34.10-2012, 256 бит;
- закрытый ключ — 512 бит на базе алгоритма ГОСТ Р 34.10-2012, 512 бит;
- открытый ключ — 512 бит на базе алгоритма ГОСТ Р 34.10-2001;
- открытый ключ — 512 бит на базе алгоритма ГОСТ Р 34.10-2012, 256 бит;
- открытый ключ — 1024 бит на базе алгоритма ГОСТ Р 34.10-2012, 512 бит;
- симметричный ключ — 256 бит;
Типы ключевых носителей:
- дискеты 3,5″;
- сменные носители с интерфейсом USB;
- российские интеллектуальные карты (Оскар) с использованием считывателей смарт-карт, поддерживающих интерфейс OpenCard Framework (в том числе протокол PC/SC для Windows): GemPC Twin, Towitoko, Oberthur OCR126 и др.);
- электронные ключи и смарт-карты eToken;
- электронные ключи Rutoken;
- смарт-карты ESMART;
- директория жесткого диска.

— средство криптографической защиты информации, реализующее российские криптографические стандарты, разработанное в соответствии со спецификацией
JCA (Java Cryptography Architecture)
представляет собой Java модуль который выполняет все криптографические операции используя КриптоПро CSP. Данный криптопровайдер сочетает в себе высокую скорость нативного кода с удобством разработки и использования JCE интерфейсов в Java приложениях.
с архитектурой Java позволяет использовать стандартные процедуры, такие как создание и проверка ЭЦП (в том числе
) , шифрование, генерацию ключей, вычисление кодов аутентификации (Message Authentication Code — MAC) в JavaTM Cryptography Extension (JCE) в соответствии со спецификациями Java
Cryptography Extension (JCE) на различных операционных системах и аппаратных платформах.
Реализация API КриптоПро J
совместима с API КриптоПро
Для работы КриптоПро
Java
CSP
требуется установить криптопровайдер КриптоПро CSP версии 3.6 R4, 3.9 или 4.0.
КриптоПро Java CSP предназначен для:
- авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной цифровой подписи (ЭЦП) в соответствии с отечественными стандартами ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012;
- обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89;
- обеспечение аутентичности, конфиденциальности и имитозащиты соединений TLS;
- контроля целостности, системного и прикладного программного обеспечения для его защиты от несанкционированного изменения или от нарушения правильности функционирования;
- управления ключевыми элементами системы в соответствии с регламентом средств защиты.

алгоритмы зависят от версии используемого КриптоПро
, в частности, только в КриптоПро
версии 4.0 реализованы алгоритмы стандарта ГОСТ Р 34.10-2012.
Алгоритм выработки значения хэш-функции реализован в соответствии с требованиями ГОСТ Р 34.11 94 «Информационная технология. Криптографическая защита информации. Функция хэширования» и ГОСТ Р 34.11 2012 «Информационная технология. Криптографическая защита информации. Функция хэширования».
Алгоритмы формирования и проверки ЭЦП реализованы в соответствии с требованиями:
ГОСТ Р 34.10-2001 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи»;
ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи».
Алгоритм зашифрования/расшифрования данных и вычисление имитовставки реализованы в соответствии с требованиями ГОСТ 28147 89 «Системы обработки информации. Защита криптографическая».
При генерации закрытых и открытых ключей обеспечена возможность генерации с различными параметрами в соответствии с ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012.
При выработке значения хэш-функции и шифровании обеспечена возможность использования различных узлов замены в соответствии с ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ 28147-89.
КриптоПро Java CSP разработан в соответствии с требованиями интерфейса JCA и может быть использован в операционных системах с установленной виртуальной машиной Java версии 6 и выше или Google Android (версии 3.2 и выше).
Поддерживаемые операционные системы:
- Microsoft Windows (win32/x64)
- Linux (x86/x64)
- Android (ARM7/ARMv8-A)
- AIX 7 (ppc/ppc64)
В соответствии с КриптоПро JCP, КриптоПро Java CSP функционирует в следующем окружении:
- виртуальная машина Java версии 6 (удовлетворяющая спецификации Sun Java 2 ™ Virtual Machine
) и выше или виртуальная машина операционной системы Google Android (версии 3.2 и выше); - предустановленный провайдер КриптоПро JCP версии 2.0;
- предустановленный провайдер КриптоПро CSP версии 4.0 (рекомендуется), 3.6 R4 или 3.9;
- Необходимость лицензии на КриптоПро Java CSP зависит от лицензии на КриптоПро CSP с которым она используется. Если КриптоПро CSP с серверной лицензией — нужна серверная лицензия на КриптоПро Java CSP. При совместном использовании с клиентским КриптоПро CSP, КриптоПро Java CSP не требует лицензий.
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2001):
- закрытый ключ — 256 бит;
- открытый ключ — 512 бит при использовании алгоритма ГОСТ Р 34.10-2001;
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 256 бит):
- закрытый ключ — 256 бит;
- открытый ключ — 512 бит при использовании алгоритма ГОСТ Р 34.10-2012, 256 бит;
Длина ключей электронной цифровой подписи (ГОСТ Р 34.10-2012, 512 бит):
- закрытый ключ — 512 бит;
- открытый ключ — 1024 бит при использовании алгоритма ГОСТ Р 34.10-2012, 512 бит;
Длина ключей, используемых при шифровании:
- закрытый ключ — 256 бит на базе алгоритма ГОСТ Р 34.10-2001;
- закрытый ключ — 256 бит на базе алгоритма ГОСТ Р 34.10-2012, 256 бит;
- закрытый ключ — 512 бит на базе алгоритма ГОСТ Р 34.10-2012, 512 бит;
- открытый ключ — 512 бит на базе алгоритма ГОСТ Р 34.10-2001;
- открытый ключ — 512 бит на базе алгоритма ГОСТ Р 34.10-2012, 256 бит;
- открытый ключ — 1024 бит на базе алгоритма ГОСТ Р 34.10-2012, 512 бит;
- симметричный ключ — 256 бит;
Типы ключевых носителей: см. ключевые носители в КриптоПро CSP
Если вы решили разрабатывать приложение на Java + maven, которое должно работать с отечественной криптографией, то эта статья для вас.
В статье рассказывается как создать приложение и подключить к нему JavaCSP для работы с ГОСТ-овой криптографией. В качестве примера мы создадим программу, показывающую все сертификаты в регистре.
Целевая аудитория junior/middle разработчики, которым требуется реализовать подписание/шифрование на базе отечественной криптографии. И которые до этого не имели опыта работы с Крипто Про.
Java CSP — это по сути API, чтобы обратиться к уже установленному в системе Crypto Pro CSP. Сам модуль ничего не подписывает и не шифрует, а лишь обращается к уже установленному в системе Крипто Про.
Если вы уже разрабатывали maven приложения на java, то при необходимости добавить новый модуль в проект добавляли еще одну dependency в pom файл. У крипто про нет публичных maven репозиториев и поэтому потребуются дополнительные действия.
Распаковываете архив в удобном месте и стандартными командами устанавливаете библиотеки в локальный maven репозиторий
mvn install:install-file -Dfile=./libs/JCSP.jar \
-DgroupId=ru.cryptopro.jcp \
-DartifactId=jcp-jscp \
-Dversion=5.0.40363-A \
-Dpackaging=jar \
Необходимый минимум библиотек для установки есть в cprypto-install.sh в репозитории в конце статьи.
После установки в локальный maven репозиторий можно добавлять библиотеки JavaCSP как зависимости в pom файл
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-jscp</artifactId>
<version>5.0.40363-A</version>
</dependency>
К счастью начиная с java 10 более нет необходимости устанавливать Java CSP непосредственно в jre. Достаточно инициализировать его непосредственно в программе.
System.setProperty("file.encoding", "UTF-8");
Security.addProvider(new JCSP()); // провайдер JCSP
Security.addProvider(new RevCheck());// провайдер проверки сертификатов JCPRevCheck
//(revocation-провайдер)
Security.addProvider(new CryptoProvider());// провайдер шифрования JCryptoP
Теперь нам нужно получить хранилище ключей, из него имена сертификатов и сами сертификаты
KeyStore ks = KeyStore.getInstance("REGISTRY", "JCSP");
ks.load(null, null);
Enumeration<String> aliases = ks.aliases();
while (aliases.hasMoreElements()) {
Certificate cert = ks.getCertificate(aliases.nextElement());
if (cert == null) {
continue;
}
if (!(cert instanceof X509Certificate)) {
continue;
}
X509Certificate curCert = (X509Certificate) cert;
System.out.println(CertUtil.subjectCN(curCert));
}
Остался последний шаг — собрать наше приложение. Обратите внимание
— при работе Java CSP проверяет свои библиотеки на версию и md5 (RevCheck). При сборке “толстого” jar файла RevCheck проверяет версию и md5 всего “толстого” jar файла. Идет сравнение с заложенными в RevCheck значениями. Ну и конечно такая проверка не проходит. Поэтому необходимо собирать “тонкий” jar с внешними библиотеками.
Для этого мы используем maven-dependency-plugin для сборки зависимостей, maven-jar-plugin для сборки самого приложения и maven-assembly-plugin для сборки всего приложения с библиотеками в zip архив.
<build>
<finalName>${project.name}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/libs
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<mainClass>
site.barsukov.java_csp.Application
</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
<finalName>${project.artifactId}-${project.version}</finalName>
<outputDirectory>${project.build.directory}/distr</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
После запуска приложения выводится список установленных в реестре сертификатов.

Как реализовать подписание, шифрование и пр. вы сможете найти в документации в скачанном ранее с сайта крипто про архиве.
- КриптоПро IPsec
- КриптоПро PDF
- Криптографические решения. От облачной подписи к доверенной среде
- Средства формирования доверенной среды
- КриптоПро JCP
- КриптоПро DSS 2
- Облачная подпись
- Отдельные браузеры с российской криптографией
- На базе NSS
- КриптоПро CSP 5
- КриптоАРМ ГОСТ
- КриптоПро Stunnel
- КриптоПро
- Российская криптография в фреймворках, платформах, интерпретаторах
- Microsoft. NET
- Расширения классов
- Отдельные библиотеки
- Java
- JCP
- Java-апплеты
- PHP
- Perl
- Ruby
- JavaScript
- КриптоПро HSM 2
- Настольные криптографические приложения
- Продукты
- Отдельные почтовые клиенты с российской криптографией
КриптоПро IPsec
Комплексное решение, реализующее набор протоколов IPsec в соответствии с особенностями использования отечественных криптографических алгоритмов.
КриптоПро IPsec применяется для:
защиты передачи конфиденциальной информации в ЛВС от нарушителей не являющихся пользователями автоматизированных систем, но имеющим физический доступ к ЛВС и нарушителей являющихся пользователями ЛВС, но не имеющих необходимых полномочий;
защиты подключений удалённых пользователей или малых офисов (VPN);
защиты соединений между шлюзами корпоративной вычислительной сети (Site-to-Site VPN);
КриптоПро IPsec предназначен для обеспечения:
аутентичности сторон взаимодействия, указанных в политике IPsec (правилах IPsec), при использовании совместно с МЭ;
конфиденциальности и аутентичности передаваемой по VPN или ЛВС конфиденциальной информации в режиме мандатного шифрования без применения дополнительных МЭ;
конфиденциальности и аутентичности передаваемой по VPN или ЛВС конфиденциальной информации между некоторыми, выделенными, сторонами взаимодействия при встраивании в состав МЭ или приложений;
аутентичности сторон голосовых или видеоконференций, в которых нет обмена конфиденциальной информации.
КриптоПро PDF
модуль создания и проверки ЭЦП
КриптоПро PDF — модуль создания и проверки ЭЦП, предназначенный для формирования и проверки электронной цифровой подписи.
КриптоПро PDF позволяет использовать сертифицированные средства криптографической защиты информации КриптоПро CSP в продуктах Adobe Acrobat, Adobe Reader и Adobe LiveCycle ES для формирования и проверки электронной цифровой подписи и обеспечения юридической значимости электронных документов, формируемых в формате PDF.
Специалисты IS-Systems помогут с внедрением
- Осуществим установку продуктов КриптоПро
- Сделаем анализ существующих pipeline и подберем подходящий метод интеграции в соответствии со спецификой проекта
- Проанализируем результаты
- Настроим workflow

Криптографические решения. От облачной подписи к доверенной среде
Данная статья является продолжением статьи «Криптографические решения. От криптопровайдеров до браузерных плагинов»
и охватывает криптографические решения:
- облачная подпись
- отдельные браузеры с российской криптографией
- отдельные почтовые клиенты с российской криптографией
- российская криптография в фреймворках, платформах, интерпретаторах
- настольные криптографические приложения
- средства формирования доверенной среды
Средства формирования доверенной среды
Проблема формирования доверенной среды для выполнения криптоопераций, в частности ЭЦП, является отдельной большой темой. В данной статье не планируется ее подробно рассматривать, но хочется отметить, что концептуально разработчики идут следующими путями:
- отдельное устройство, на котором визуализируются данные, предназначенные для подписи и сама подпись производится после подтверждения пользователя (trustscreen)
- установка на компьютер и клиентскую ОС комплекса средств защиты информации (МДЗ, антивирусы и т.п.), с целью минимизации возможности заражения компьютера вредоносным ПО
- загрузка отдельной доверенной ОС в режиме USB-live
- параллельная работа клиентской ОС и доверенной среды на различных ядрах одного компьютера
На последнем способе формирования ДС хотелось бы остановиться подробнее.
Компанией «Код безопасности» предложен интересный продукт Jinn, который позволяет эмулировать доверенную среду как на многоядерном, так и на одноядерном компьютере. Основной идеей данного решения является то, что доверенная среда выполняется на логических ядрах, на которых не выполняется сама клиентская ОС. В случае одноядерного компьютера now-how решения позволяет реализовать эмуляцию отдельного физического вычислительного устройства, которое не видно ОС (или, вернее, доступ к нему из ОС сильно затруднен).
Для случая многоядерного компьютера доверенная среда функционирует на 2 ядрах, на остальных ядрах функционирует клиентская ОС. Доверенная среда загружается перед загрузкой клиентской ОС либо с флешки, либо с электронного замка Соболь. Решение гарантирует, что клиентская ОС (а следовательно и потенциальное вредоносное ПО) не управляет поведением доверенной среды.
По сути, в решении две ОС разнесены по различным ядрам одного компьютера и между ними настроен канал передачи данных. При этом одна из ОС (доверенная среда), спроектирована таким образом, что варианты ее заражения минимизированы и ее функционал служит исключительно цели безопасной визуализации данных и их пописи.
Для доступа к доверенной среде из клиентской ОС используется специальная библиотека (COM-объект). При подписи платежки через данную библиотеку Jinn перехватывает управление графическим адаптером и визуализирует на нем платежку. Если представленная информация верна, то после подтверждения пользователя Jinn подписывает платежку и возвращает управление клиентской ОС.
КриптоПро JCP
средство криптографической защиты информации
Назначение КриптоПро JCP
авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной цифровой подписи (ЭЦП) в соответствии с отечественными стандартами ГОСТ Р 34.11-94/ГОСТ Р 34.11-2012 и ГОСТ Р 34.10-2001/ГОСТ Р 34.10-2012;
обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89 и ГОСТ 34.12-2015;
обеспечение аутентичности, конфиденциальности и имитозащиты соединений TLS;
контроля целостности, системного и прикладного программного обеспечения для его защиты от несанкционированного изменения или от нарушения правильности функционирования;
управления ключевыми элементами системы в соответствии с регламентом средств защиты.
КриптоПро DSS 2
Централизованное выполнение действий пользователей по созданию электронной подписи (ЭП), управление сертификатами и других криптографических операций.
КриптоПро DSS 2.0 обеспечивает:
создание электронной подписи любого формата электронного документа;
возможность работы с квалифицированной электронной подписью в случае использования комплектаций, имеющих сертификаты соответствия требованиям ФСБ России (требуется установка указанных в документации на данные комплектации клиентских компонент);
снижение стоимости развертывания и владения инфраструктурой ЭП;
снижение риска компрометации ключей пользователей за счёт их централизованного защищённого хранения;
возможность использования стандартного интерфейса CryptoAPI с помощью дополнительного модуля КриптоПро Cloud CSP
на базе КриптоПро CSP версии 5.0
для обеспечения совместимости с традиционными приложениями;возможность работы с локальными ключами электронной подписи на рабочих местах пользователей (режим КриптоПро DSS Lite
);возможность работы с локальными ключами электронной подписи на мобильных устройствах пользователей (режим мобильной подписи
);
лёгкость встраивания функций создания ЭП в прикладные системы за счёт наличия простых интерфейсов автоматизации на базе стандартных средств протокола HTTP и веб-сервисов (API), включая SOAP и REST;
возможность усиления ранее созданной электронной подписи до усовершенствованного формата (CAdES-T или CAdES-X Long Type 1) путем добавления штампов времени и информации о статусе сертификата;
возможность применения различных схем аутентификации пользователя для доступа к его ключам, включая возможность интеграции со сторонними центрами идентификации по протоколам SAML (WS-Security) и OAuth (в т.ч. с корпоративным доменом на безе MS AD и OpenLDAP);
централизованное/локальное шифрование/расшифрование электронных документов;
пакетная обработка электронных документов (подписание/шифрование по API одной командой набора однотипных электронных документов);
поддержка нескольких экземпляров сервисов электронной подписи и центров идентификации с различными параметрами настройки функционирования на одном сервере КриптоПро DSS;
визуализация (отображение) подписываемых электронных документов формата PDF, docx, txt, xml;
создание видимой подписи с логотипом и текстом и в виде изображения (image appearance) с учетом требований Приказа Минкомсвязи и ФСО России от 27.05.2015 №186/258При для документов формата PDF с использованием API (SOAP/REST);
возможность интеграции с корпоративными хранилищами документов, поддерживающими стандарт CMIS;
возможность кастомизации графического веб-интерфейса в соответствии с корпоративным стилем и требованиями Заказчика.
Облачная подпись
Концепция облачной подпись предполагает хранение закрытого ключа и выполнение процедуры подписи/шифрования данных непосредственно на сервере.
Для безопасного применения облачной подписи требуется решить задачу строгой аутентификации клиента при доступе к его закрытому ключу и задачу надежного хранения закрытого ключа на сервере. Примером подобного решения может служить КриптоПро DSS, который в качестве одного из вариантов аутентификации поддерживает Рутокен WEB (строгая двухфакторная аутентификация), а для хранения закрытого ключа использует HSM.
- строгая аутентификация в сервисе
- гарантии защиты закрытого ключа от НСД
- снижение безопасности системы -> ограничение применения
- кроссплатформенность, кроссбраузерность
- удобство для конечного пользователя — вообще ничего не надо устанавливать и настраивать
- удобная интеграция в информационные системы (WEB API)
Отдельные браузеры с российской криптографией
Браузеры, созданные на базе open source проектов Mozilla FireFox и Chromium, используют в качестве криптоядра NSS или OpenSSL. OpenSSL поддерживает российские криптоалгоритмы. Для NSS также существуют разработки, которые обеспечивают поддержку российских криптоалгоритмов. Некоторое время назад на рынке появились полнофункциональные браузеры с поддержкой российской криптографии.
Подобное решение обладает большим, на данный момент невостребованным, потенциалом, так как позволяет создавать защищенные стандартные WEB-клиенты для систем с высокими требованиями к безопасности. Еще одним плюсом подобного браузера является его «портабельность». С учетом существования USB-токенов с защищенной FLASH-памятью созданы безопасные решения, в котором наиболее критические операции с закрытом ключом осуществляются на «борту» USB-токена, а сам браузер хранится в его защищенной от модификации FLASH-памяти. Подобное решение кроме высокого уровня безопасности является очень удобным в применении.
На базе NSS
На картинке представлена архитектура решения, реализованная в проекте по расширению NSS aToken.

- только одно приложение с российской криптографией — сам браузер
- обновление браузера
- переучивать пользователя на использование кастомного браузера
- сертификация (нет прецедентов)
- кроссплатформенность
- прозрачность использования для пользователя
- нет ограничений для разработчиков серверной части
- не требуется инсталляция, запуск с FLASH-памяти USB-токена
КриптоПро CSP 5
новое поколение криптопровайдера
КриптоПро CSP (классические токены и другие пассивные хранилища секретных ключей), КриптоПро ФКН CSP/Рутокен CSP (неизвлекаемыe ключи на токенах с защищенным обменом сообщениями) и КриптоПро DSS (ключи в облаке)
Назначение КриптоПро CSP
Формирование и проверка электронной подписи.
Обеспечение конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты.
Обеспечение аутентичности, конфиденциальности и имитозащиты соединений по протоколам TLS
, и IPsec
.Контроль целостности системного и прикладного программного обеспечения для его защиты от несанкционированных изменений и нарушений доверенного функционирования.
КриптоАРМ ГОСТ
приложение для создания и проверки ЭП
Приложение, предназначенное для выполнения операций по созданию и проверке электронной подписи, шифрованию и расшифрованию файлов, управления сертификатами с использованием СКЗИ «КриптоПро CSP» версии 5.0R2.
Приложение «КриптоАРМ ГОСТ» является кроссплатформенным и представлено различными установочными дистрибутивами под платформы: Microsoft Windows, Linux, Mac OS X. На каждой из платформ реализована поддержка российских криптографических стандартов посредством использования СКЗИ «КриптоПро CSP» версии 5.0R2.
Юридически значимый обмен документам с использованием КЭП (63-ФЗ);
Отправка конфиденциальных документов в зашифрованном виде (152-ФЗ);
Кредитным организациям для обмена данными с Банком России;
Для сдачи деклараций в Росалкогольрегулирование;
Кадастровым инженерам, оценщикам для отправки документов в Росреестр;
Гражданам и организациям для подачи исков в суд в электронном виде;
Государственными учреждениям для внутреннего и внешнего ЭДО.
КриптоПро Stunnel
Программа для шифрования трафика
Назначение КриптоПро Stunnel:
Программа stunnel предназначена для шифрования трафика между произвольным приложением на клиентском компьютере, которое работает с некоторым приложением или службой на удаленном компьютере (сервере).
Шифрование делается между двумя экземплярами программы stunnel (на сервере и на клиенте) без необходимости вносить изменения в работу клиентского или серверного ПО. Кроме шифрования, можно настроить требование аутентификации клиента по сертификату клиента. Входит в состав КриптоПро CSP.
КриптоПро
Компания, занимающаяся разработкой средств криптографической защиты информации и развитием Инфраструктуры Открытых Ключей (Public Key Infrastructure) на основе использования международных рекомендаций и российских криптографических алгоритмов.
Российская криптография в фреймворках, платформах, интерпретаторах
Microsoft. NET
Расширения классов
В платформе существует набор криптографических классов, в которых предусмотрены механизмы расширения сторонними алгоритмами. Наиболее известным на рынке решением по расширению платформы Microsoft. NET российскими криптоалгоритмами является продукт КриптоПро. N ET, представляющий собой надстройку над КриптоПро CSP.
Установка КриптоПро. NET позволяет использовать российские криптоалгоритмы, например,
в WEB-сервисах на базе ASP. NET, SOAP-сервисах, в клиентских браузерных приложениях MS. Silverlight.
Отдельные библиотеки
BouncyCastle — это open source библиотека, в которой реализована своя система криптографических классов для платформы Microsoft. NET. В библиотеке поддерживаются как базовые криптографические алгоритмы ГОСТ 28147-89, ГОСТ Р 34.10-2001, ГОСТ Р 34.11-94, так и криптографические форматы PKCS#7/CMS, PKCS#10, X.509 с учетом специфики, описанной в RFC российских производителей СКЗИ. Кроме того, по утверждениям разработчиков библиотека поддерживает формат CADES с российскими криптоалгоритмами.
Java
Архитектура криптографической системы платформы Java (Java Cryptography Architecture) позволяет расширять набор поддерживаемых в платформе криптоалгоритмов. С учетом большой распространенности Java многие из российских разработчиков криптосредств предлагают сертифицированные JCP-провайдеры.
JCP
Java-апплеты
Одним из вариантов использования СКЗИ в браузере является их интеграция в Java-апплеты.
В ряде случаев СКЗИ и криптографические библиотеки не требуют установки и представляют собой нативную библиотеку. В этом случае возможна ее интеграция непосредственно «внутрь» апплета и вызов функций СКЗИ через механизм JNI. При этой схеме библиотека будет инсталлирована в профайл пользователя при первой загрузке Java-апплета в браузере и ее отдельной инсталляции не потребуется.
Другим вариантом является написание Java-апплета, который вызывает предустановленное в системе СКЗИ (CSP, JCP и др.)
Более подробно пример подобной реализации, основанный на использовании Рутокен ЭЦП и OpenSSL, описан в статье habrahabr.ru/company/aktiv-company/blog/134890
.

- Апплет ЭТП «Стройторги» (реализован в соответствии с приведенной на схеме архитектурой)
- Система ДБО Бифит
PHP
PHP является одним из наиболее распространенных языков WEB-разработки. Криптографическая подсистема PHP построена на базе OpenSSL, в котором есть поддержка российских криптоалгоритмов. Но при этом в самом PHP поддержки российских криптоалгоритмов нет. Некоторые российские производители СКЗИ приступали к формированию патча к PHP, который позволял бы использовать российскую криптографию, но до конца эти работы доведены не были.
Бинарная совместимость таких СКЗИ, как МагПро КриптоПакет, с OpenSSL позволила бы придать данному решению легитимность.
В настоящее время многие разработчики инфосистем на базе PHP используют непосредственный вызов командно-строчной утилиты OpenSSL для проведения криптоопераций с использованием российских алгоритмов.
Экзотическое решение реализовано в рамках проекта Рутокен WEB. В серверной компоненте решения проверка подписи ГОСТ Р 34.10-2001 реализована непосредственно на PHP с использованием математических примитивов из нативной библиотеки.
Perl
Еще одним экзотическим примером является реализация шифрования по ГОСТ 28147-89 непосредственно на Perl http://search.cpan.org/~ams/Crypt-GOST-1.00/GOST.pm
.
При этом в реальных проектах на Perl разработчики обычно используют вызовы командно-строчной утилиты из OpenSSL или какого-нибудь Linux-совместимого СКЗИ.
Ruby
Ruby использует в качестве криптоядра openssl, что позволило автору данной статьи habrahabr.ru/post/231261
пропатчить его для поддержки российской криптографии.
JavaScript
Некоторое время назад на Хабре появилась статья, автор которой реализовал многие криптографические форматы непосредственно на JavaScript
При этом криптоалгоритмы используются из унифицированного ядра WebCrypto, которое уже сейчас поддерживается большинством современных браузеров.
habrahabr.ru/post/221857

- Нет ГОСТов
- Закрытый ключ находится в «хранилище браузеру», а не в отчуждаемом носителе
- Как подключать PKCS#11-совместимые устройства?
- кроссплатформенное, кроссбраузерное решение
- подпись на клиенте
- Поддержка PKI
- не требуется установка вообще ничего на клиент
КриптоПро HSM 2
программно-аппаратный криптографический модуль
Модуль снабжен датчиками вскрытия, защитой ключевой информации с использованием разделенных по схеме «3 из 5» ключей, доверенной операционной системой, безопасными механизмами аудита и контроля подключений, обеспечивающий защиту криптографических ключей класса KB2
Назначение КриптоПро HSM
Формирование и проверка электронной подписи по ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012, ECDSA и RSA
Вычисление значений хэш-функции по ГОСТ Р 34.11-94 и ГОСТ Р 34.11-2012, SHA-1, SHA-2
Шифрование и расшифрование данных по ГОСТ Р 34.12-2015 (Кузнечик и Магма), ГОСТ 28147-89, AES, DES, 3DES, RC2, RC4
Операции на эллиптических кривых, включая работу на сверхскоростных скрученных эллиптических кривых Эдвардса в соответствии с Рекомендациями по стандартизации ТК 26 Р 50.1.114–2016
Настольные криптографические приложения
Класс приложений, которые предоставляют законченный оконный пользовательский интерфейс для проведения клиентских криптоопераций. Как правило, используют некоторое СКЗИ в качестве криптоядра.
- подпись файла
- проверка подписи под файлом, в том числе построение цепочки и проверка списка отзыва, OCSP, проверка таймштампа
- зашифрование файла, в том числе для нескольких респондентов
- расшифрование файла
- поиск и выбор сертификата пользователя
- просмотр сертификата
- ведение базы сертификатов респондентов, интеграция со службой каталога (по протоколу LDAP) для поиска сертификата респондента
- генерация ключевой пары, формирование запроса на сертификат
- удаление ключевой пары
- импорт/экспорт сертификатов (корневых, пользовательских, респондентов)
- удаление сертификата
- КриптоАРМ
- КриптоНУЦ
- File-PRO, Admin PKI
- Блокхост ЭЦП
- Sign Maker
- ViPNet Crypto File
Продукты
Отдельные почтовые клиенты с российской криптографией
Отдельные почтовые клиенты с российской криптографией позволяют реализовать защиту переписки, используя электронную подпись и шифрование письма для абонента/группы абонентов (S/MIME). Данное решение удобно использовать в системах, построенных по принцу «точка-точка», в которых обмен информацией происходит непосредственно между абонентами, а сервер при этом используется только для маршрутизации сообщений.
