С 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 «Стрибог».
Стрибог — бог древних славян, который покровительствует ветрам, погоде и всему, что связано с воздушным пространством. Возможно, и облачным технологиям тоже. Подробнее об этом шифре читай в статьях «Хешируем по ГОСТ 34.11—2012» и «Пишем простой локальный блокчейн с использованием „Стрибога“».
В феврале 2014 года ФСБ объявила о начале перехода на использование нового национального стандарта ГОСТ Р 34.10—2012 в средствах электронной подписи для информации, не содержащей сведений, составляющих государственную тайну. В свет вышел документ за номером 149/7/1/3-58 от 31 января 2014 года «О порядке перехода к использованию новых стандартов ЭЦП и функции хэширования», он устанавливал следующие требования.
Министерство связи даже создало план по переходу на стандарт (PDF). Однако на практике оказалось, что все не так просто, и переход пришлось отложить аж до 31 декабря 2019 года. Причины следующие.
Сейчас в ходу два стандарта криптозащиты для работы ЭЦП, но тем, кто использует ГОСТ-2001, срочно нужно что-то предпринимать. Зима, как говорится, близко, а это значит, что нас ждет череда испытаний при внедрении поддержки ГОСТ-2012.
Ссылки на официальную документацию:
Я расскажу, как развернуть сертифицированное ФСБ средство СКЗИ (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 год7490 р. Экономия 1400 рублей! |
1 месяц720 р. 25-30 статей в месяц |
Уже подписан?
Читайте также
Последние новости