С 2020 года использование шифрования по ГОСТ Р 34.10—2001 окажется под запретом, а значит, все организации, которые взаимодействуют с госструктурами, вынуждены срочно внедрять следующий стандарт — 2012 года. Если ты работаешь в одной из них, то не проходи мимо: в этой статье мы поговорим о том, как решить проблему, используя сервер на CentOS 7 и пакет CryptoPro JCP.

Если же ты впервые слышишь обо всем этом, то вот небольшая историческая справка.

В 1994 году в ФСБ разработали ряд стандартов и мер, призванных защитить обмен документами между организациями и другими участниками этого процесса. Одной из таких мер безопасности стала электронная цифровая подпись документов, а одним из стандартов — ГОСТ Р 34.10—94, где описан алгоритм формирования и проверки электронной цифровой подписи. Принятый и введенный в действие постановлением Госстандарта России от 23 мая 1994 года за номером 154, он проработал до 2001 года.

На смену пришел всем известный ГОСТ Р 34.10—2001 — улучшенный стандарт, разработанный для обеспечения большей стойкости алгоритма. Но время не стоит на месте, меняются алгоритмы и методы криптозащиты, и спустя одиннадцать лет ГОСТ Р 34.10—2001 меняют на ГОСТ Р 34.10—2012.

В новом стандарте первый вариант требований к параметрам остался прежним. Длина секретного ключа составляет порядка 256 бит, и предусмотрено использование хеш-функции с длиной хеш-кода 256 или 512 бит. Главное же отличие нового стандарта — варианты с дополнительными параметрами и схемами, в том числе хешированием по стандарту ГОСТ Р 34.11—2012 «Стрибог».

INFO

Стрибог — бог древних славян, который покровительствует ветрам, погоде и всему, что связано с воздушным пространством. Возможно, и облачным технологиям тоже. Подробнее об этом шифре читай в статьях «Хешируем по ГОСТ 34.11—2012» и «Пишем простой локальный блокчейн с использованием „Стрибога“».

В феврале 2014 года ФСБ объявила о начале перехода на использование нового национального стандарта ГОСТ Р 34.10—2012 в средствах электронной подписи для информации, не содержащей сведений, составляющих государственную тайну. В свет вышел документ за номером 149/7/1/3-58 от 31 января 2014 года «О порядке перехода к использованию новых стандартов ЭЦП и функции хэширования», он устанавливал следующие требования.

  1. После 31 декабря 2013 года прекратить сертификацию средств электронной подписи на соответствие требованиям к средствам электронной подписи, утвержденным приказом ФСБ России от 27.12.2011 года №796, если в этих средствах не предусматривается реализация функций в соответствии с ГОСТ Р 34.10—2012.
  2. После 31 декабря 2018 года запретить использование ГОСТ Р 34.10—2001 для формирования электронной подписи.

Министерство связи даже создало план по переходу на стандарт (PDF). Однако на практике оказалось, что все не так просто, и переход пришлось отложить аж до 31 декабря 2019 года. Причины следующие.

  1. Многие государственные и муниципальные органы не готовы перейти на использование нового стандарта электронной подписи ГОСТ-2012 из-за отсутствия поддержки на уровне ПО.
  2. Чтобы выпускать сертификаты нового образца, необходимо оборудование, которое поддерживает новый ГОСТ, и сертификат Головного удостоверяющего центра, сформированный с использованием ГОСТ-2012. Удостоверяющие центры получили его только летом 2018 года. Необходимо дополнительное время, чтобы выпустить сертификаты для всех пользователей.

Сейчас в ходу два стандарта криптозащиты для работы ЭЦП, но тем, кто использует ГОСТ-2001, срочно нужно что-то предпринимать. Зима, как говорится, близко, а это значит, что нас ждет череда испытаний при внедрении поддержки ГОСТ-2012.

WWW

Ссылки на официальную документацию:

Я расскажу, как развернуть сертифицированное ФСБ средство СКЗИ (CryptoPro JCP) на сервере Linux под управлением Java JDK. Кстати, если ты до сих пор используешь ГОСТ-2001, на сайте CryptoPro есть замечательная статья, советую тебе ее прочесть, лишним не будет.

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

Взаимодействие приложений при обмене данными с криптографической защитой в рамках СМЭВ
Взаимодействие приложений при обмене данными с криптографической защитой в рамках СМЭВ

Цены

Как всегда, встает вопрос о лицензировании программного решения. CryptoPro JCP недешев, и если одна рабочая станция обойдется в 1200 рублей, то серверные лицензии стоят значительно дороже — порядка 30 000 за каждое ядро (или два ядра процессора Intel с отключенным Hyper Threading).

 

Установка и настройка криптопровайдера

В примерах я буду использовать виртуальную машину с CentOS 7, но ты не ограничен в выборе аппаратного обеспечения и дистрибутива Linux. Все действия и команды будут такими же.

Первым делом создадим локального пользователя, под которым будет работать ПО, использующее подпись документов.

$ sudo useradd -d /opt/user -p <Тут указываем пароль> -s /bin/bash user; sudo grep user /etc/passwd

Правильно установим Java JDK. Скачиваем необходимый дистрибутив.

$ wget --header "Cookie: oraclelicense=a" --content-disposition http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz -O jdk-8u191-linux-x64.tar.gz

Распаковываем архив и проверяем, готова ли папка с Java для копирования.

$ tar zxvf jdk-8u191-linux-x64.tar.gz; ls -al;

Копируем папку в раздел для прикладного ПО. Я обычно использую /opt.

$ sudo cp -rf jdk1.8.0_191 /opt/

Проверяем, что скопировалось правильно. Если необходимо, меняем владельца папки на root.

$ ls -al /opt/jdk1.8.0_191/
$ sudo chown -R root:root /opt/jdk1.8.0_191/; cd /opt/jdk1.8.0_191/; ls -al;

Прописываем переменные окружения для Java JDK для всех пользователей по умолчанию.

$ sudo vi /etc/profile.d/oracle.sh

В файл пишем следующее:

export JAVA_HOME=/opt/jdk1.8.0_191
export JRE_HOME=/opt/jdk1.8.0_191/jre
export PATH=$PATH:/opt/jdk1.8.0_191/bin:/opt/jdk1.8.0_191/jre/bin

Если на сервере стоит несколько версий Java JDK, то необходимо зарегистрировать альтернативы для новой версии.

$ sudo alternatives --install /usr/bin/java java /opt/jdk1.8.0_191/bin/java 2
$ sudo alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_191/bin/jar 2
$ sudo alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_191/bin/javac 2
$ sudo alternatives --set jar /opt/jdk1.8.0_181/bin/jar
$ sudo alternatives --set jar /opt/jdk1.8.0_191/bin/jar
$ sudo alternatives --set javac /opt/jdk1.8.0_191/bin/javac
$ sudo alternatives --config java

В меню выбираем опцию 2 (или ту, что приведет к использованию более новой версии Java). Не забываем поправить права на JRE systemPrefs.

$ sudo chmod 777 -R /opt/jdk1.8.0_191/jre/.systemPrefs

Проверяем установленную версию Java.

$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

Копируем папку с дистрибутивом CryptoPro JCP в раздел для прикладного ПО.

$ sudo cp -rf jcp-2.0.40035 /opt/

Проверяем, что все скопировалось корректно.

$ ls -al /opt/jcp-2.0.40035/

Выдаем права на запуск скриптов.

$ sudo chmod +x /opt/jcp-2.0.40035/*.sh

Проверяем владельца и права на папку, должен быть root. Переходим в нее.

$ ls -al /opt/jcp-2.0.40035/; cd /opt/jcp-2.0.40035/;

Чтобы избежать проблем при инсталляции, проверь количество ядер на процессоре и сверься с лицензией. Узнать число ядер можно командой nproc.

Переходим к установке криптопровайдера JCP. Во время установки необходимо будет ответить на ряд вопросов.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Check Also

Все мы не в своем уме. Как сделать новый навык для «Алисы» на Python

По примеру американских коллег из Apple, Amazon, Google и Microsoft в «Яндексе» в 2017 год…

Оставить мнение