Электронная подпись в доверенной среде на базe загрузочной Ubuntu 14.04 LTS и Рутокен ЭЦП Flash / Блог компании «Актив» / Хабр

Что получилось

Ниже показан процесс загрузки с Рутокен ЭЦП Flash и подпись документов в браузере в доверенной среде:

1. Boot-меню в bios

2. Выбор нужного пункта в меню загрузчика

3. Ubuntu загрузилась, запускаем браузер, заходим в демо-систему. Браузер спрашивает у пользователя позволения запустить плагин на web-странице

4. Разрешаем плагину «Rutoken» загрузиться — нажимаем «Allow» в правом верхнем углу браузера

5. F5

6. Авторизация в системе по сертификату, который хранится на Рутокен ЭЦП Flash

Вводим PIN-код:

6. Подпись платежек в личном кабинете

1 устанавливаем необходимые пакеты и их зависимости

Пуск — Настройки — Менеджер пакетов Synaptic

через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты: 

  • opensc
  • libccid
  • libpam-p11
  • libp11-2
  • libengine-pkcs11-openssl

Rosa crypto tool


Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.

Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2020 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 0.2.2.

Что внутри? Утилита написана на Python с использованием PyQt4 для графического интерфейса.


Установить ее можно, использовав «Управление программами» в Rosa Linux.

Вставляем токен и запускаем утилиту.

Видим, что токен определился успешно и был найден наш сертификат.

Интерфейс программы настолько прост, что описывать и показывать в статье все его функции не имеет смысла. Попробуем только подписать файл.


Выбираем файл и жмем “Подписать файл”. Получаем вот такое предупреждение.

Нажимаем «OK» и получаем информацию о том, что файл был подписан успешно.

Основное достоинство этой утилиты в том, что она совершенно бесплатная, в отличии нашего следующего продукта.

По сравнению с использованием «КриптоПро CSP» из консоли:

На порядок проще использовать− Отсутствуют различные параметры подписи

Исходный код программы доступен в публичном репозитории на ABF:abf.io/uxteam/rosa-crypto-tool-develСистема контроля версий, которую использует «НТЦ ИТ РОСА», интегрирована в сборочную среду и базируется на Git. Можно вполне использовать любой клиент git.

Надеюсь, разработчики других отечественных дистрибутивов Linux, таких как Astra Linux, GosLinux и другие добавят в свои дистрибутивы пакеты с rosa-crypto-tool.

Trusted esign

Второй продукт, про который мы поговорим, это Trusted eSign от компании «Цифровые технологии». Она известна на российском рынке ИБ как разработчик средства по работе с подписью и шифрованием для ОС Windows – «КриптоАРМ».

Читайте также:  Как подать декларацию через личный кабинет | ФНС России | 20 Чеченская Республика

Главное, не путать этот продукт с Trusted.eSign – web-сервисом по работе с подписью этой же компании.

Модификация образа ubuntu


В качестве станка для кастомизации Ubuntu у меня был тоже Ubuntu.

Подготовка:

sudo su
apt-get install squashfs-tools genisoimage

Скачиваем ISO-образ Ubuntu 14.04 и складируем его куда надо:

mkdir ~/livecdtmp
mv ubuntu-14.04.1-desktop-i386.iso ~/livecdtmp
cd ~/livecdtmp

Монтируем ISO-образ:

sudo su
mkdir mnt
mount -o loop ubuntu-14.04.1-desktop-i386.iso mnt

Делаем экстракт образа:

sudo su
mkdir extract-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

Ну и так далее:

sudo su
unsquashfs mnt/casper/filesystem.squashfs
mv squashfs-root editsudo su
cp /etc/resolv.conf edit/etc/
cp /etc/hosts edit/etc/
mount --bind /dev/ edit/dev
chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C
dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

Собственно кастомизация — установка смарткарточного драйвера и плагина:

pt-get install libccid libpcsclite1 pcscd
mkdir /home/ubuntu/.mozilla
mkdir /home/ubuntu/.mozilla/plugins
chmod 776 /home/ubuntu/.mozilla
chmod 776 /home/ubuntu/.mozilla/plugins
cp npCryptoPlugin.so /home/ubuntu/.mozilla/plugins
cp librtpkcs11ecp.so /home/ubuntu/.mozilla/plugins

И технические работы по созданию нового ISO:

Настройка «криптопро» csp

Несмотря на то, что есть несколько неплохих статей по настройке «КриптоПро CSP» под Linux (например, тут или тут), я опишу здесь свой вариант. Основная причина в том, что большинство инструкций написаны для «Крипто Про CSP» версии 3.x. А современная версия «КриптоПро CSP» 4.


Приступаем к настройке.

Настройка работы с рутокен эцп 2.0

Сделаем небольшое отступление. Для работы с электронной подписью и шифрованием нам не обойтись без ключевых пар и сертификатов. Надежное хранение закрытых ключей – один из основных факторов безопасности. А более надежных средств хранения, чем токен или смарт-карта, человечество пока не придумало.

 Рутокен ЭЦП 2.0

Для работы с токенами в ОС Linux есть масса различных средств и драйверов. Для описания всех этих средств понадобится отдельная статья. Поэтому я не буду подробно описывать, как это работает, и почему нам нужны именно эти пакеты.


Устанавливаем пакеты для работы с Рутокен ЭЦП 2.0:

apt-get install libpcsclite1 pcscd libccid

Нам также необходимо установить пакеты КриптоПро CSP для поддержки работы с токенами:

dpkg -i ./cprocsp-rdr-gui-gtk-64_4.0.0-4_amd64.deb ./cprocsp-rdr-rutoken-64_4.0.0-4_amd64.deb ./cprocsp-rdr-pcsc-64_4.0.0-4_amd64.deb ./lsb-cprocsp-pkcs11-64_4.0.0-4_amd64.deb

Подпись средствами «криптопро csp»


В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка:

  • Отсутствие хорошей документации;
  • Отсутствие графического интерфейса.

Подписать можно с помощью команды:

csptestf –sfsign –sign –in <имя файла> -out <имя файла> -my ‘Trusted eSign Test’ –detached –alg GOST94_256

Читайте также:  Купить квалифицированную электронную подпись для Росреестра


Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:

csptestf –sfsign

Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.


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

Получаем тестовый сертификат

Перед тем как перейти непосредственно к работе с подписью, надо сгенерировать ключевую пару и создать сертификат электронной подписи. Если у вас уже есть Рутокен с контейнером «КриптоПро», то эту часть можно смело пропустить.

Резюме

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

Хочется дополнительно отметить такое развитие отечественных продуктов, учитывая современный тренд на замену Windows на Linux в государственных и муниципальных организациях. В рамках этого тренда становится актуальным использование средств криптографической защиты информации под Linux.

Такое развитие не может не радовать, особенно когда это происходит под Linux.

Создание загрузочного устройства

Первым делом отформатируем Рутокен ЭЦП FLASH специальной утилитой, выставив памяти атрибут read-write (под виндой):

Создание и проверка подписи[править]

Примечание:
Если такой пакет не установлен, будет предложено ввести любые символы с клавиатуры.

После этого необходимо предъявить PIN-код пользователя.

После указания PIN-кода снова будет предложено перемещать указатель мыши.

$ cryptcp -sign -dn E=ivanov@mail.mail -der my_file.odt 
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:11223344556, 102301111222, Пр-т Победы 14 кв.3, Калининград, 39 Калининградская обл., RU, ivanov@mail.mail, Иван Иванович, Иванов, Иванов Иван Иванович
Действителен с 27.02.2020 13:41:47 по 27.05.2020 13:51:47

Цепочки сертификатов проверены.
Папка './':
my_file.odt... Подпись данных...    
    
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]
$ cryptcp -verify my_file.odt.sig
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020.
Утилита командной строки для подписи и шифрования файлов.

Найдено сертификатов: 2
Цепочки сертификатов проверены.
Папка './':
my_file.odt.sig... Проверка подписи...     
Автор подписи: 11223344556, 102301111222, Пр-т Победы 14 кв.3, Калининград, 39 Калининградская обл., RU, ivanov@mail.mail, Иван Иванович, Иванов, Иванов Иван Иванович
 Подпись проверена.
[ErrorCode: 0x00000000]

Внимание! Rutoken S — не является токеном — нет аппаратной поддержки алгоритмов, а для использования RSA в opensc < 0.12 были реализованы выгрузкаприватного (!!!) ключа из Rutoken S и работа с этим ключом через openssl.

Управление сертификатами[править]

Проверяем что на устройстве есть сертификат.

Читайте также:  Заставляем плагин госуслуг работать для всех пользователей в терминальной среде / Хабр

Если после строчки 

Using slot 0 with a present token (0x0) 

нет ничего, значит устройство пустое. Обратитесь к администратору или создайте ключи и сертификат самостоятельно следуя пункту 4.1

Если после строчки

Using slot 0 with a present token (0x0)

вместо {id} нужно подставить ID который вы увидите в выводе предыдущей команды команды

В случае, если файл cert.crt создан переходим к пункту 5

генерируем ключевую пару 

  • key_id — ID ключа на токене
  • paramset — используемые параметры эллиптической кривой:
    • A — набор параметров с OID 1.2.643.2.2.35.1;

    • B — набор параметров с OID 1.2.643.2.2.35.2;

    • C  — набор параметров с OID 1.2.643.2.2.35.3;

    • XA — набор параметров с OID 1.2.643.2.2.36.0;

    • XB — набор параметров с OID 1.2.643.2.2.36.1;

  • pin — PIN-код токена

Управление считывателями[править]

$ cryptcp -creatrqst 
-dn "E=ivanov@mail.mail,CN=Иванов Иван Иванович,SN=Иванов,G=Иван Иванович,C=RU,L=Калининград,ST=39 Калининградская обл.,street=Пр-т Победы 14 кв.3" 
-provtype 80 -nokeygen 
-cont '.Aktiv Co. Rutoken S 00 00Rutoken' 
-certusage "1.3.6.1.5.5.7.3.4,1.3.6.1.5.5.7.3.2" rutoken.req
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2020.
Утилита командной строки для подписи и шифрования файлов.
Запрос успешно создан и сохранен в файле.
[ErrorCode: 0x00000000]

Запрос на сертификат необходимо подписать в аккредитованном удостоверяющем центре.

Необходимо последовательно добавить все сертификаты.

Утилита pkcs11-tool[править]

Примечание:

С форума Рутокен: Если Вы хотите работать через opensc-pkcs11.so, то Вы должны обязательно предварительно отформатировать токен через pkcs15-init, а затем создавать и работать с ключами только через opensc-pkcs11.so.

Если Вы хотите работать через наш PKCS#11, то лучше всего форматировать через
Утилиту администрирования Рутокен, а затем создавать и работать с ключами только через наш PKCS#11. Это самый поддерживаемый путь. (не для Рутокен S??)

Вы можете отформатировать токен через pkcs15-init и работать с нашим PKCS#11. Но в этом случае через opensc-pkcs11.so ничего не будет доступно.

В состав opensc входит универсальная утилита pkcs11-tool, которой можно «подложить», например, библиотеку PKCS#11 для работы с Рутокен ЭЦП 2.0 и с ее помощью «управлять» Рутокенами.

Центр регистрации рутокен[править]

Для проверки воспользуемся терминалом. Пуск — утилиты — Терминал Fly.

В случае если увидите строку, показанную ниже, значит токен или смарт-карта работают корректно.

Rutoken ECP  

Модифицируем конфигурационный файл OpenSSL, который находится по адресу /usr/lib/ssl/openssl.cn

Пуск — утилиты — Терминал Fly

Конвертируем сертификат в текстовый формат

Добавляем сертификат в список доверенных сертификатов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector