- Описание необходимых пакетов криптопро
- Rosa crypto tool
- Trusted esign
- Альтернативный метод получения тестового сертификата
- Возможна ли проверка эцп на linux-сервере?
- Диагностический архив для обращения в тех. поддержку
- Как проверить электронные подписи с помощью gnupg (gpg)
- Копирование контейнера
- Настройка и диагностика криптопро csp
- Настройка криптопро csp
- Настройка работы с рутокен эцп 2.0
- Подключение и установка криптопро
- Подключение токена к компьютеру
- Подпись средствами «криптопро csp»
- Получаем тестовый сертификат
- Применимость
- Примечания
- Причина 1
- Причина 2
- Причина 3
- Причина 4
- Проверка контрольных сумм
- Проверка работы контейнера
- Проверка цепочки сертификатов
- Программное извлечение ключей
- Прописывание путей к исполняемым файлам[править]
- Просмотр
- Работа с токеном jacarta pki
- Результаты
- Резюме
- Создание и проверка подписи в командной строке[править]
- Создание локального носителя
- Удаление
- Удаление криптопро[править]
- Управление считывателями[править]
- Установка базовых компонентов криптопро
- Установка графических компонентов
- Установка дополнительных пакетов с модулем поддержки для токена
- Установка драйверов и по для работы с jacarta pki
- Установка криптопро fox
- Установка пакетов криптопро csp
- Установка пакетов поддержки устройств
- Установка пакетов[править]
- Установка сертификатов
- Хеши и подписи
- Экспорт сертификатов на другую машину
Описание необходимых пакетов криптопро
dpkg -l | grep cprocsp
Rosa crypto tool
Как следует из названия, это утилита для работы с электронной подписью и шифрованием для дистрибутива ROSA Linux. В данный момент утилита доступна в репозиториях Rosa Linux и Alt Linux.
Эта утилита разрабатывается одним человеком – Михаилом Вознесенским. У нее простой, но удобный интерфейс. На данный момент утилита находится в активной разработке – с ноября 2021 года мне удалось протестировать три версии. Последняя версия, доступная на момент написание статьи — 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 – «КриптоАРМ».
Главное, не путать этот продукт с Trusted.eSign – web-сервисом по работе с подписью этой же компании.
Альтернативный метод получения тестового сертификата
2) Для получение сертификата, перейдите в раздел Сформировать ключи и отправить запрос на сертификат
6) Тестовый УЦ КриптоПро уведомит нас о том, что сертификат выдан
7) Пройти по ссылке и установить сертификат, введя пароль контейнера.
Возможна ли проверка эцп на linux-сервере?
Возможно ли это сделать свободным ПО или посоветуйте платное что-то? Должны поддерживаться российские ГОСТы.
Подпись создается при помощи плагина для браузера КриптоПро.
Смотрел в сторону OpenSSL с поддержкой gost (для работы российских ГОСТов) , может кто-то прокомментирует этот вариант (плюс там для верификации подписи нужен публичный ключ, и я не понял откуда его взять, если при формировании подписи на сервер приходят только исходное и зашифрованное сообщение)?
p.s. желательно, чтобы это все работало на Python
Диагностический архив для обращения в тех. поддержку
Для создания диагностического архива, можно воспользоваться следующей командой:
В результате должен получится cprodiag_день_месяц_год.tar.gz архив, который следует прислать в техническую поддержку Astra Linux и КриптоПро.
Как проверить электронные подписи с помощью gnupg (gpg)
Утилита gpg обычно устанавливается по умолчанию на всех дистрибутивах.
Если по какой-либо причине он отсутствует, вы можете установить его с помощью приведенных ниже команд.
В некоторых дистрибутивах, если вы получаете сообщение об ошибке типа «gpg: не удалось запустить dirmngr‘ /usr/bin/dirmngr ’: нет такого файла или каталога», вам также необходимо установить dirmngr.
В дистрибутивах Debian, Ubuntu или на основе Debian запустите:
Для RedHat/CentOS:
и Fedora:
Вы можете следовать приведенному ниже примеру, чтобы проверить, как проверить установщик Debian 9.8.0 ISO.
Загрузите «SHA256SUMS», «SHA256SUMS.sign» и «debian-9.8.0-amd64-netinst.iso».
Возможно, вам придется щелкнуть правой кнопкой мыши первые два файла и выбрать «Сохранить ссылку как» или эквивалентный файл в ваш веб-браузер.
В противном случае нажатие на них может просто отобразить их содержимое вместо автоматической загрузки.
Откройте эмулятор терминала и перейдите в каталог, где находятся ваши загрузки.
Копирование контейнера
csptestf -keycopy -contsrc ’\.HDIMAGEКонтейнер_оригинал’ -contdest ’\.Aktiv Rutoken ECP 00 00Контейнер_копия’
Для создания запроса на получение сертификата для контейнера ’\.Aktiv Rutoken ECP 00 00Shuhrat’ , воспользуемся командой:
Для примера можно воспользоваться тестовым удостоверяющим центром КриптоПро. Нам нужен пункт « Отправить готовый запрос PKCS#10 или PKCS#7 в кодировке Base64 «. На следующей странице в поле «Сохраненный запрос» вставляем содержимое файла cert.req и нажимаем кнопку «Выдать».
/opt/cprocsp/bin/amd64/certmgr -inst -file имя_полученного_сертификата.cer -cont ’\.Aktiv Rutoken ECP 00 00Shuhrat’
/opt/cprocsp/bin/amd64/csptest -keys -cont ’\.Aktiv Rutoken ECP 00 00Shuhrat’ -keyt exchange -impcert имя_полученного_сертификата.cer
Настройка и диагностика криптопро csp
Проверим, видит ли криптографический провайдер наш токен и другие доступные типы носителей следующими командами:
/opt/cprocsp/bin/amd64/csptest -card -enum -v –v
/opt/cprocsp/bin/amd64/csptest -enum -info -type PP_ENUMREADERS | iconv -f cp1251
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -view -f cp1251
Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 — это наш носитель.
Следуя инструкции КриптоПро CSP для Linux. Настройка, выполняем его регистрацию в криптографическом провайдере:
/opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add "Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00"
В результате выполнения в конфигурационный файл /etc/opt/cprocsp/config64.iniв раздел [KeyDevicesPCSC] будет добавлена запись:
[KeyDevicesPCSC”Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00″Default]
Чтобы выполнить требования Формуляра, Правил пользования и Руководства администратора безопасности КриптоПро CSP:
Использование СКЗИ «КриптоПро CSP» версии 4.0 с выключенным режимом усиленного контроля использования ключей не допускается. Включение данного режима описано в документах ЖТЯИ.00087-01 91 02. Руководство администратора безопасности.
Необходимо включить режим усиленного контроля использования ключей:
/opt/cprocsp/sbin/amd64/cpconfig -ini 'configparameters' -add long StrengthenedKeyUsageControl 1
Проверяем, что режим включен:
cat /etc/opt/cprocsp/config64.ini | grep StrengthenedKeyUsageControl
Выполняем перезапуск службы криптографического провайдера:
/etc/init.d/cprocsp restart
/etc/init.d/cprocsp status
После перезапуска проверяем, что ошибок в работе провайдера с ключевыми носителями нет:
/opt/cprocsp/bin/amd64/csptest -keyset –verifycontext
/opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum –unique
CSP (Type:80) v4.0.9017 KC2 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:REA
AcquireContext: OK. HCRYPTPROV: 16052291
alfa_shark1 |SCARDJACARTA_4E3900154029304CCC00E9F6
OK.
Total: SYS: 0.000 sec USR: 0.000 sec UTC: 4.560 sec
[ErrorCode: 0x00000000]
Настройка криптопро csp
Несмотря на то, что есть несколько неплохих статей по настройке КриптоПро CSP под Linux (например,
или
), я опишу здесь свой вариант. Основная причина в том, что большинство инструкций написаны для «Крипто Про CSP» версии 3.x. А современная версия КриптоПро CSP 4.0 не является 100% совместимой с 3.x. Дополнительная причина — всегда приятно иметь полную инструкцию по настройке в одном месте, а не переключаться с одного окна на другое.
Приступаем к настройке. Скачиваем КриптоПро CSP для Linux с официального сайта КриптоПро и распаковываем:
tar -zxf ./linux-amd64_deb.tgz
Далее у нас есть 2 варианта: автоматическая установка и установка вручную. Автоматическая установка запускается командой sudo ./install.sh или sudo ./install_gui.sh .
Здесь надо отдать должное разработчикам «КриптоПро» — автоматическая установка для большинства дистрибутивов отрабатывает успешно. Хотя бывают и нюансы. Например, если у вас не хватает некоторых пакетов, то установка будет успешно завершена, хотя некоторый функционал работать не будет.
Если что-то пошло не так, или вы по тем или иным причинам хотите использовать установку в ручном режиме, то вам необходимо выполнить:
dpkg -i ./cprocsp-curl-64_4.0.0-4_amd64.deb lsb-cprocsp-base_4.0.0-4_all.deb lsb-cprocsp- capilite-64_4.0.0-4_amd64.deb lsb-cprocsp-kc1-64_4.0.0-4_amd64.deb lsb-cprocsp-rdr-64_4.0 .0-4_amd64.deb
Для установки пакетов в ROSA используйте urpmi , вместо dpkg -i .
Устанавливаем лицензию для «КриптоПро CSP» для Linux и проверяем, что все работает нормально:
cpconfig -license -set cpconfig -license –view
Мы должны получить что-то вроде:
License validity: XXXXX-XXXXX-XXXXX-XXXXX-XXXXX Expires: 3 month(s) 2 day(s) License type: Server.
Настройка работы с рутокен эцп 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
Подключение и установка криптопро
- Запустите в отдельной консоли программу pcscd с правами администратора (root). В дальнейшем это следует делать через консоль и
sudo
, хотя можно и через командуsu
, чтобы не вводить пароль каждый раз.sudo
будет индикатором того, что команда требует прав администратора.
sudo pcscd -adfffff
После запуска не закрывайте эту консоль — в ней можно будет видеть, как система взаимодействует со смарт-картой.
- Откройте ещё одну консоль.
- Запустите в ней утилиту уже установленного в папку /opt КриптоПро:
/opt/cprocsp/bin/amd64/list_pcsc
Утилита также должна «видеть» устройство:
Подключение токена к компьютеру
Теперь можно подключить Рутокен к USB-порту компьютера.
Для контроля правильности подключения выполните команду lsusb.
Пример правильного вывода:
Подпись средствами «криптопро csp»
В составе «КриптоПро CSP» есть утилита csptestf, позволяющая выполнять различные криптографические операции. Как я уже писал выше, у этой утилиты есть 2 недостатка: Отсутствие хорошей документации и отсутствие графического интерфейса.
Подписать можно с помощью команды:
csptestf –sfsign –sign –in -out -my ‘Trusted eSign Test’ –detache d –alg GOST94_256
Здесь:
- my — параметр, в котором надо указать часть Common Name сертификата для подписи;
- detached — позволяет создать открепленную подпись;
- alg GOST94_256 — задает алгоритм хэширования, который будет использоваться при создании подписи.
Более подробную информацию о возможных параметрах вы можете получить, выполнив команду:
Такой интерфейс отлично подходит для подготовленного пользователя или для автоматизации операций в скриптах.
Поговорим теперь об утилитах, которые облегчают жизнь обычным пользователям при работе с подписью и шифрованием в Linux.
Получаем тестовый сертификат
Перед тем как перейти непосредственно к работе с подписью, надо сгенерировать ключевую пару и создать сертификат электронной подписи. Если у вас уже есть Рутокен с контейнером «КриптоПро», то эту часть можно смело пропустить.
Применимость
В этой инструкции описана установка СКЗИ КриптоПро CSP 4.0 в ROSA Fresh R7–R10 (RED X2–X3) для работы с электронными ключами Рутокен. Пример приведён для 64-разрядной архитектуры AMD64; для 32-разрядной i586 установка аналогична с точностью до названий установочных пакетов и папок.
Примечания
Для работы с другими носителями нужно установить модули поддержки соответствующих устройств. Названия модулей: cprocsp-rdr-<название_устройства>. К таким модулям относятся (cprocsp-rdr-) emv, esmart, inpaspot, mskey, jacarta, novacard, rutoken.
Причина 1
Официальная документация на
больше адаптирована под операционные системы Astra Linux и ALT Linux, сертифицированные в Минобороны, ФСТЭК и ФСБ как средства защиты информации.
Причина 2
Лучшая инструкция по настройке взаимодействия с аппаратными носителями в Linux, которую удалось найти, была также от
Причина 3
UPD 16.04.2021:
В процессе настройки среды и оборудования выяснилось, что носитель, первым оказавшийся в распоряжении, был вовсе не JaCarta PKI Nano, как ожидалось, а устройство работающее в режиме SafeNet Authentication Client eToken PRO.
UPD 16.04.2021: Некогда Банку требовалось устройство, которое могло бы работать в той же инфраструктуре, что и eToken PRO (Java). В качестве такого устройства компания “ЗАО Аладдин Р.Д.” предложила токен JaCarta PRO, который был выбран банком.
UPD 16.04.2021: Благодарю компанию Аладдин Р.Д., за то что помогли разобраться и установить истину.
В этой ошибке нет никаких политических и скрытых смыслов, а только техническая ошибка сотрудника при подготовке документов. Токен JaCarta PRO является продуктом компании ЗАО “Аладдин Р.Д.”. Апплет, выполняющий функциональную часть, разработан компанией “ЗАО Аладдин Р.Д”.
Этот eToken PRO относился к партии, выпущенной до 1 декабря 2021 года. После этой даты компания «Аладдин Р.Д.» прекратила продажу устройств eToken PRO (Java).
Забегая немного вперед, нужно сказать, что работа с ним настраивалась через соответствующие драйверы — SafenetAuthenticationClient-10.0.32-0.x86_64, которые можно получить только в поддержке Аладдин Р.Д. по отдельной online заявке.
В КриптоПро CSP для работы с этим токеном требовалось установить пакет cprocsp-rdr-emv-64 | EMV/Gemalto support module.
Данный токен определялся и откликался. При помощи утилиты SACTools из пакета SafenetAuthenticationClient можно было выполнить его инициализацию. Но при работе с СКЗИ он вел себя крайне странно и непредсказуемо.
Проявлялось это следующим образом, на команду:
csptest -keyset -cont '\.Aladdin R.D. JaCarta [SCR Interface] (205D325E5842) 00 00alfa_shark' -check
Выдавался ответ, что все хорошо:
[ErrorCode: 0x00000000]
Но сразу после попытки зачитать ключи программно эта же проверка начинала выдавать ошибку:
[ErrorCode: 0x8009001a]
Согласно перечню кодов ошибок объектной модели компонентов Microsoft
NTE_KEYSET_ENTRY_BAD
0x8009001A
Keyset as registered is invalid.
«Невалидный набор ключей» — причина такого сообщения, возможно, кроется либо в старом чипе, прошивке и апплете Gemalto, либо в их драйверах для ОС, которые не поддерживают новые стандарты формирования ЭП и функции хэширования ГОСТ Р 34.10-2021 и ГОСТ Р 34.11-2021.
В таком состоянии токен блокировался. СКЗИ начинало показывать неактуальное состояние считывателя и ключевого контейнера. Перезапуск службы криптографического провайдера cprocsp, службы работы с токенами и смарт-картами pcscd и всей операционной системы не помогали, только повторная инициализация.
Справедливости ради требуется отметить, что SafeNet eToken PRO корректно работал с ключами ГОСТ Р 34.10-2001 в ОС Windows 7 и 10.
Можно было бы попробовать установить СКЗИ КриптоПро CSP 4.0 ФКН (Gemalto), но целевая задача — защитить наши ключи ЭП и шифрования с помощью сертифицированных ФСБ и ФСТЭК изделий семейства JaCarta, в которых поддерживаются новые стандарты.
Проблему удалось решить, взяв настоящий токен JaCarta PKI в (XL) обычном корпусе.
Но на попытки заставить работать Safenet eToken PRO времени было потрачено немало. Хотелось обратить на это внимание и, возможно, кого-то оградить от подобного.
Причина 4
Иногда самому требуется вернуться к старым статьям и инструкциям. Это удобно, когда информация размещена во внешнем источнике. Так что спасибо Хабру за предоставленную возможность.
После установки токена JaCarta PKI в USB порт сервера и запуска системы проверяем, что новое устройство обнаружено и появилось в списке:
lsusb
В нашем случае это Bus 004 Device 003: ID 24dc:0101
Для диагностики считывателей можно воспользоваться утилитой pcsc-tools из проекта security:chipcard (software.opensuse.org).
Запускается командой:
pcsc_scan
Пока не установлены все необходимые пакеты, информация о токене не отобразится.
Проверка контрольных сумм
Дождитесь окончания загрузки ISO. Затем проверьте контрольные суммы SHA256.
Проверка работы контейнера
/opt/cprocsp/bin/amd64/csptestf -keyset -container ИМЯ -check
Для удаления контейнера следует воспользоваться командой:
Проверка цепочки сертификатов
/opt/cprocsp/bin/amd64/cryptcp -copycert -dn CN=Имя_вашего_сертификата -df /temp/сертификат.cer
В нашем примере, из логов можно сделать вывод, что нам надо установить сертификат УЦ МО с CN=Министерство обороны Российской Федерации:
Для того, чтобы убедиться в устранении ошибки, можно повторно в режиме отладки запустить команду. При правильно установленной цепочке сертификатов, статус у сертификата будет = CERT_TRUST_NO_ERROR
* attached (присоединённая), тогда результирующий файл — это CMS-сообщение, внутрь которого упакованы данные и атрубуты (типа подписи). Формат сообщения соответствует международному стандарту, поэтому извлекать данные оттуда можно любыми утилитами, типа cryptcp / csptest / openssl / certutil (на windows).
Программное извлечение ключей
В общем виде пример извлечения закрытого ключа и сертификата открытого ключа из контейнера на токене с помощью КриптоПро Java CSP следующий:
import ru.CryptoPro.JCP.KeyStore.JCPPrivateKeyEntry;
import ru.CryptoPro.JCP.params.JCPProtectionParameter;
KeyStore keyStore = KeyStore.getInstance("Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00", "JCSP");
keyStore.load(null, null);
JCPPrivateKeyEntry entry = null;
X509Certificate certificate = null;
PrivateKey privateKey = null;
try {
entry = (JCPPrivateKeyEntry) keyStore.getEntry(keyAlias,
new JCPProtectionParameter(pwd));
certificate = (X509Certificate) entry.getCertificate();
privateKey = entry.getPrivateKey();
} catch (UnrecoverableEntryException | NullPointerException e) {
LOGGER.log(Level.WARNING, PRIVATE_KEY_NOT_FOUND keyAlias ExceptionUtils.getFullStackTrace(e));
}
Если действовать так:
Key key = keyStore.getKey(keyAlias, pwd);
то криптографический провайдер будет пытаться в системе отобразить через консоль или GUI окно запрос на ввод пароля к контейнеру.
Прописывание путей к исполняемым файлам[править]
Утилиты КриптоПро расположены в директориях /opt/cprocsp/sbin/ и /opt/cprocsp/bin/.
Чтобы каждый раз не вводить полный путь к утилитам КриптоПро:
- после установки пакета cryptopro-preinstall начните новый сеанс пользователя в консоли;
Примечание:Не работает для суперпользователя.
- выполните от имени пользователя, который будет запускать команды (будет действовать до закрытия терминала):
Внимание! Если установлен пакет mono или mono4-devel, может быть конфликт по имени утилиты certmgr
Просмотр
certmgr -list
Работа с токеном jacarta pki
Запустим программу Xming (X11 forwarding) на своей станции, чтобы по SSH иметь возможность открывать и работать с графическими интерфейсами нужных утилит.
После установки IDProtectClient — программного обеспечения для работы с JaCarta PKI, на сервере в папке /usr/share/applications появились два файла:
Athena-IDProtectClient.desktopAthena-IDProtectManager.desktop
Это ярлыки, в которых можно посмотреть параметры запуска утилит Exec=/usr/bin/SACTools
Запустим утилиту IDProtectPINTool.
С помощью нее задаются и меняются PIN-коды доступа к токену.
/usr/bin/IDProtectPINTool
При первой инициализации токена будет полезна ссылка, содержащая PIN-коды (пароли) ключевых носителей по умолчанию
Программа IDProtect_Manager позволяет просматривать информацию о токене и контейнере с ключами и сертификатом:
/usr/bin/IDProtect_Manager
Для доступа к контейнеру с ключами нужно ввести пароль:
Для работы с SafeNet Authentication Client eToken PRO существуют аналогичные программы — SafeNet Authentication Client Monitor и SafeNet Authentication Client Tools, которые запускаются так:
/usr/bin/SACMonitor
/usr/bin/SACTools
Выполнять операции непосредственно с ключевыми контейнерами удобнее в интерфейсе криптографического провайдера КриптоПро JavaCSP:
/jdk1.8.0_181/jre/bin/java ru.CryptoPro.JCP.ControlPane.MainControlPane
Для отображения информации о содержимом контейнера с ключами можно выполнить команду:
/opt/cprocsp/bin/amd64/csptest -keyset -cont '\.Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00alfa_shark1' -info
Для диагностики контейнера используется эта же команда с ключом –check
/opt/cprocsp/bin/amd64/csptest -keyset -cont '\.Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00alfa_shark' –check
Потребуется ввести пароль от контейнера:
Результаты
Отторгаемый ключевой носитель-токен установлен во внутренний USB-порт сервера.
Само серверное оборудование опломбировано и размещается в помещении с ограниченным доступом.
Такие меры позволяют повысить уровень защиты наших информационных систем от кражи и компрометации ключей электронной подписи или шифрования, как удаленно по сети, так и физически.
Резюме
Подведем итог. В конце 2021 — начале 2021 года наметился неплохой прогресс в средствах по работе с электронной подписью под Linux. Информационная безопасность начинает поворачиваться к пользователю лицом, и с каждым годом требуется все меньше действий для такого простого действия, как подписать или зашифровать файл с использованием отечественных алгоритмов.
Хочется дополнительно отметить такое развитие отечественных продуктов, учитывая современный тренд на замену Windows на Linux в государственных и муниципальных организациях. В рамках этого тренда становится актуальным использование средств криптографической защиты информации под Linux.
Такое развитие не может не радовать, особенно когда это происходит под Linux.
P. S. Наверняка есть немало пользователей, особенно пользователей Linux, кто считает, что консольных утилит достаточно. А также специалистов по информационной безопасности, которые считают, что дизайн и удобство — излишество в ИБ. Но я не могу с ними согласиться.
Создание и проверка подписи в командной строке[править]
Примечание:
Для версии КриптоПро CSP под Linux все лицензии считаются серверными, поэтому не смущайтесь строкой «License type: Server».
Примечание:Серийный номер следует вводить с соблюдением регистра символов.
Для создания электронной подписи файла необходимо указать сертификат и имя подписываемого файла.
Примечание:Проще всего для указания сертификата использовать адрес e-mail.
gost-crypto-gui — средство для создания электронной подписи и шифрования файлов.
Создание локального носителя
sudo /opt/cprocsp/sbin/amd64/cpconfig -hardware reader -add HDIMAGE store
Для создания контейнера в носителе HDIMAGE следует воспользоваться командой:
Для добавления контейнера в носитель токена следует воспользоваться командой:
В 5-ой версии КриптоПРО CSP v.5.0, для создания контейнера, имя носителя можно не указывать, а выбрать в интерактивном gtk-диалоге:
Для просмотра подробной информации о контейнерах воспользуйтесь командой:
Удаление
certmgr -delete 1 (номер сертификата)
Удаление криптопро[править]
Внимание! Пакеты КриптоПро становятся нерабочие при их обновлении. Рекомендуется удалить все пакеты и установить пакеты снова.
Для обновления КриптоПро необходимо:
- Запомнить текущую конфигурацию:
- набор установленных пакетов:
- настройки провайдера (для простоты можно сохранить /etc/opt/cprocsp/config[64].ini).
- набор установленных пакетов:
- Удалить штатными средствами ОС все пакеты КриптоПро:
- Установить аналогичные новые пакеты КриптоПро.
- При необходимости внести изменения в настройки (можно просмотреть diff старого и нового /etc/opt/cprocsp/config[64].ini).
- Ключи и сертификаты сохраняются автоматически.
Управление считывателями[править]
Считыватель HDIMAGE размещается на /var/opt/cprocsp/keys//.
Установка базовых компонентов криптопро
- Распакуйте загруженный архив. Это можно сделать, выбрав соответствующий пункт меню в графическом интерфейсе или выполнив консольные команды:
cd ~/Загрузки/ tar -xvf linux-amd64.tgz
Должна появиться папка с установочными файлами КриптоПро.
- В консоли перейдите в эту папку:
cd linux-amd64/
Дальнейшую установку нужно выполнять с правами администратора (root).
- Выполните в консоли команду перехода в режим администратора (
su
) и введите пароль. - Выполните команды установки:
urpmi -a lsb-core ccid ./install.sh rpm -ivh cprocsp-rdr-pcsc-* lsb-cprocsp-pkcs11-*
Если пароль администратора неизвестен, можно использовать команду sudo ./install.sh, а затем — sudo rpm -ivh cprocsp-rdr-pcsc-* lsb-cprocsp-pkcs11-*, введя при этом пароль текущего пользователя (если у него есть на это права).
Для установки в графическом интерфейсе запустите файловый менеджер Dolphin с правами администратора, выполнив следующую команду:
kdesu dolphin
В открывшемся окне щёлкните по файлу install.sh.
Установка графических компонентов
Если планируется использование Криптопро ЭЦП Browser Plugin (данный этап включён в инструкцию в ссылке), rosa-crypto-tool или других программ и компонентов с графическим интерфейсом, необходимо установить ещё два пакета:
urpmi pangox-compat && rpm -ivh cprocsp-rdr-gui-gtk*
Не следует устанавливать пакет cprocsp-rdr-gui, т. к. в связке с cprocsp-rdr-gui-gtk он нарушает работу графических компонентов.
Установка дополнительных пакетов с модулем поддержки для токена
библиотека libccid, libgost-astra , пакеты pcscd, libpcsclite1
Установка драйверов и по для работы с jacarta pki
На странице Поддержки сайта «Аладдин Р.Д.» загружаем
Согласно Руководству по внедрению «JaCarta для Linux» пункт 4.2., первым делом требуется установить пакеты pcsc-lite, ccid и libusb.
Для работы утилиты управления JaCarta необходимо установить следующие компоненты:
Выполняем проверку наличия этих пакетов и установку:
zypper search pcsc-lite
zypper search libusb
zypper install pcsc-lite
zypper search CCID
zypper install pcsc-ccid
zypper search CCID
zypper install libusb
В итоге пакет pcsc-lite был обновлен, CCID установлен, libusb никаких действия не требовалось.
Следующими двумя командами выполняем установку пакета с драйверами и программным обеспечением непосредственно для работы с JaCarta PKI:
zypper install idprotectclientlib-637.03-0.x86_64.rpm
zypper install idprotectclient-637.03-0.x86_64.rpm
Проверяем, что драйверы и ПО для JaCarta PKI установились:
zypper search idprotectclient
При попытках заставить работать SafeNet eToken PRO я нашел информацию, что предустановленный в SLES пакет openct — Library for Smart Card Readers может конфликтовать с pcsc-lite — PCSC Smart Cards Library, установку которого требует руководство Аладдин Р.Д.
zypper search openct
Поэтому пакет openct удаляем:
rpm -e openct
Теперь все необходимые драйверы и ПО для работы с токеном установлены.
Выполняем диагностику с помощью утилиты pcsc-tools и убеждаемся, что JaCarta определяется в операционной системе:
pcsc_scan
Установка криптопро fox
КриптоПро Fox — версия браузера Firefox, умеющая работать с КриптоПро.
Для удобства работы с КриптоПро Fox можно создать ярлык для его запуска на рабочем столе:
- Кликните по столу правой кнопкой мыши.
- Выберите пункт Создать → Ссылка на приложение.
- В открывшемся окне на вкладке Приложение укажите команду запуска и название ярлыка.
Установка пакетов криптопро csp
При установке КриптоПро CSP по умолчанию нужные пакеты для работы с токенами и смарт-картами отсутствуют.
zypper search cprocsp
Выполняем установку в CSP компонента поддержки JaCarta components for CryptoPro CSP
zypper install cprocsp-rdr-jacarta-64-3.6.408.683-4.x86_64.rpm
Некоторые компоненты имеют зависимости. Так, например, если попытаться выполнить установку пакета поддержки SafeNet eToken PRO cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm — EMV/Gemalto support module, то получим сообщение о необходимости сначала установить базовый компонент CSP поддержки считывателей cprocsp-rdr-pcsc-64-4.0.9944-5.x86_64.rpm — PC/SC components for CryptoPro CSP readers:
zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm
Loading repository data...
Reading installed packages...
Resolving package dependencies...
Problem: nothing provides cprocsp-rdr-pcsc-64 >= 4.0 needed by cprocsp-rdr-emv-64-4.0.9944-5.x86_64
Solution 1: do not install cprocsp-rdr-emv-64-4.0.9944-5.x86_64
Solution 2: break cprocsp-rdr-emv-64-4.0.9944-5.x86_64 by ignoring some of its dependencies
Choose from above solutions by number or cancel [1/2/c] (c): c
Устанавливаем базовые пакеты поддержки считывателей и ключевых носителей:
zypper install cprocsp-rdr-pcsc-64-4.0.9944-5.x86_64.rpm
zypper install lsb-cprocsp-pkcs11-64-4.0.9944-5.x86_64.rpm
Теперь можно установить модули для работы с остальными видами носителей и компонент GUI:
zypper install cprocsp-rdr-emv-64-4.0.9944-5.x86_64.rpm
zypper install cprocsp-rdr-novacard-64-4.0.9944-5.x86_64.rpm
zypper install cprocsp-rdr-mskey-64-4.0.9944-5.x86_64.rpm
zypper install cprocsp-rdr-gui-gtk-64-4.0.9944-5.x86_64.rpm
Проверяем итоговую конфигурацию КриптоПро CSP:
zypper search cprocsp
Loading repository data...
Reading installed packages...
S | Name | Summary | Type— —————————– —————————————————- ——–i | cprocsp-curl-64 | CryptoPro Curl shared library and binaris. Build 9944. | packagei | cprocsp-rdr-emv-64 | EMV/Gemalto support module | packagei | cprocsp-rdr-gui-gtk-64 | GUI components for CryptoPro CSP readers. Build 9944. | packagei | cprocsp-rdr-jacarta-64 | JaCarta components for CryptoPro CSP. Build 683. | packagei | cprocsp-rdr-mskey-64 | Mskey support module | packagei | cprocsp-rdr-novacard-64 | Novacard support module | packagei | cprocsp-rdr-pcsc-64 | PC/SC components for CryptoPro CSP readers. Build 9944.| packagei | lsb-cprocsp-base | CryptoPro CSP directories and scripts. Build 9944. | packagei | lsb-cprocsp-ca-certs | CA certificates. Build 9944. | packagei | lsb-cprocsp-capilite-64 | CryptoAPI lite. Build 9944. | packagei | lsb-cprocsp-kc2-64 | CryptoPro CSP KC2. Build 9944. | packagei | lsb-cprocsp-pkcs11-64 | CryptoPro PKCS11. Build 9944. | packagei | lsb-cprocsp-rdr-64 | CryptoPro CSP readers. Build 9944. | package
Чтобы применить изменения, выполняем перезапуск службы криптографического провайдера и проверяем ее статус:
/etc/init.d/cprocsp restart
/etc/init.d/cprocsp status
Установка пакетов поддержки устройств
Пакеты поддержки токенов/ридеров/плат расширения находятся в архиве КриптоПро CSP; их названия начинаются с cprocsp-rdr-. Если необходимо использовать определённое устройство (например, Рутокен ЭЦП), установите соответствующий пакет:
sudo rpm -ivh cprocsp-rdr-rutoken*
Ещё в архиве есть пакеты с драйверами (ifd-*). Их также следует установить при использовании соответствующих устройств. Например, для Рутокен S:
sudo rpm -ivh ifd-rutokens*
Установка пакетов[править]
- Этот пакет установит все требуемое для КриптоПро (включая инфраструктуру поддержки карт Рутокен S и Рутокен ЭЦП).
Примечание:Пакет cryptopro-preinstall вытягивает зависимости libpangox-compat, opensc, pcsc-lite, pcsc-lite-rutokens, pcsc-lite-ccid, newt52.
Таблица 1. Описание необходимых пакетов КриптоПро.
Пакет | Описание |
---|---|
Базовые пакеты: | |
cprocsp-curl | Библиотека libcurl с реализацией шифрования по ГОСТ |
lsb-cprocsp-base | Основной пакет КриптоПро CSP |
lsb-cprocsp-capilite | Интерфейс CAPILite и утилиты |
lsb-cprocsp-kc1 | Провайдер криптографической службы KC1 |
lsb-cprocsp-kc2 | Провайдер криптографической службы KC2 (требует наличия аппаратного датчика случайных чисел или гаммы) |
lsb-cprocsp-rdr | Поддержка ридеров и RNG |
Дополнительные пакеты: | |
cprocsp-rdr-gui-gtk | Графический интерфейс для диалоговых операций |
cprocsp-rdr-rutoken | Поддержка карт Рутокен |
cprocsp-rdr-jacarta | Поддержка карт JaCarta |
cprocsp-rdr-pcsc | Компоненты PC/SC для ридеров КриптоПро CSP |
lsb-cprocsp-pkcs11 | Поддержка PKCS11 |
ifd-rutokens | Конфигурация Рутокеновских карт (или можно взять pcsc-lite-rutokens из репозитория) |
Установка сертификатов
После установки пакетов появится возможность просматривать контейнеры на устройстве Рутокен. Например, чтобы узнать путь к требуемому контейнеру, выполните:
/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fq
Для работы с сертификатами нужно установить сертификат удостоверяющего центра (в данном случае устанавливается непосредственно корневой сертификат) и сертификат Рутокен на локальное хранилище.
- Загрузите с сайта удостоверяющего центра файл, содержащий корневой сертификат (обычно он имеет расширение .cer или .p7b) и, при необходимости, цепочку сертификатов.
- Загрузите список отозванных сертификатов (файл с расширением .crl) и установите полученные файлы с помощью команд, аналогичных приведённым ниже.
Установка корневого сертификата удостоверяющего центра:
/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/<название файла>.cer -store uRoot
Установка списка отозванных сертификатов:
/opt/cprocsp/bin/amd64/certmgr -inst -crl -file ~/Загрузки/<название файла>.crl
Установка цепочки промежуточных сертификатов:
/opt/cprocsp/bin/amd64/certmgr -inst -cert -file ~/Загрузки/<название файла>.p7b -store CA
Установка сертификата с рутокена:
/opt/cprocsp/bin/amd64/certmgr -inst -cont '<путь к контейнеру, начинающийся на \.>' -store uMy
Подробнее о программе certmgr можно узнать здесь.
Примечание. Чаще всего расширение .cer соответствует сертификату, а .p7b — контейнеру, в котором может содержаться один или больше сертификатов (например, их цепочка).
Хеши и подписи
Разработчики, которые заботятся о безопасности, часто связывают свои установочные файлы или архивы с контрольными суммами, которые вы можете проверить.
Вы можете прочитать, как проверить их в Windows или Linux:
Однако проблема с этими хэшами заключается в том, что если хакер заменяет файлы на веб-сайте, он также может легко заменить хэши.
Это делает хэши сами по себе почти бесполезными, особенно если они размещены на том же сервере, где находятся программы.
Чтобы сделать эти контрольные суммы полезными, разработчики могут также подписать их цифровой подписью с помощью пары открытого и закрытого ключей.
Только человек, которому принадлежит этот закрытый ключ, может создавать подписи.
Их можно проверить только с помощью соответствующего открытого ключа, который публикуется в Интернете.
Если проверка прошла успешно, вы можете быть (почти всегда) уверены, что владелец закрытого ключа подписал свое программное обеспечение.
Чтобы хакер обошел этот механизм безопасности, он должен каким-то образом украсть закрытый ключ, что гораздо труднее сделать, если владелец примет надлежащие меры, чтобы сохранить его в секрете.
И даже когда ключ украден, владелец может сделать его недействительным, отозвав его и объявив его скомпрометированным.
Если это произойдет, когда вы загрузите его открытый ключ и попытаетесь использовать его для проверки подписи, вы будете уведомлены о том, что он был отозван.
Экспорт сертификатов на другую машину
Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.
/opt/cprocsp/bin/amd64/certmgr -export -dest cert.cer
И как обычно, связываем сертификат и закрытый ключ:
Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка: