КриптоПро CSP
Назначение
Криптопровайдер КриптоПро CSP предназначен для:
- авторизации и обеспечения юридической значимости электронных документов при обмене ими между пользователями, посредством использования процедур формирования и проверки электронной подписи (ЭП) в соответствии с отечественными стандартами ГОСТ Р 34.10-2001 / ГОСТ Р 34.10-2012 (с использованием ГОСТ Р 34.11-94 / ГОСТ Р 34.11-2012);
- обеспечения конфиденциальности и контроля целостности информации посредством ее шифрования и имитозащиты, в соответствии с ГОСТ 28147-89;
- обеспечения аутентичности, конфиденциальности и имитозащиты соединений по протоколу TLS;
- контроля целостности системного и прикладного программного обеспечения для его защиты от несанкционированных изменений и нарушений правильности функционирования;
- управления ключевыми элементами системы в соответствии с регламентом средств защиты.
https://www.cryptopro.ru/products/csp
В качестве СКЗИ разрешается использовать только КриптоПро CSP следующих версий:
- КриптоПро CSP версии 4.0 R4;
- КриптоПро CSP версии 5.0;
Указанные СКЗИ должны использоваться в исполнениях 1-Base или 2-Base.
СКЗИ КриптоПро CSP в исполнении 2-Base должно использоваться с аппаратно- программным модулем доверенной загрузки (АПМДЗ).
При эксплуатации СКЗИ необходимо соблюдать требования и рекомендации эксплуатационной документации на СКЗИ, в частности требования по защите от несанкционированного доступа и по криптографической защите, а также требования по поддерживаемым СКЗИ аппаратно-программным платформам. В частности, при использовании СЭП со встроенным СКЗИ необходимо проведение проверки программного обеспечения BIOS ЭВМ, на которых предполагается функционирование СКЗИ и СЭП, на соответствие методическим документам ФСБ России в области исследований программного обеспечения BIOS.
Контроль целостности СКЗИ и СЭП должен выполняться с использованием механизма замкнутой программной среды ОС или с использованием стандартных средств контроля целостности КриптоПро CSP.
Установка КриптоПро CSP
Архив с программным обеспечением (КриптоПро CSP) можно загрузить c официального сайта www.cryptopro.ru, предварительно зарегистрировавшись на сайте.
Для ОС Astra Linux следует загрузить пакет КриптоПро CSP 4 и выше версии - пакет для 64 разрядной системы.
Пробный период использования КриптоПро CSP составляет 3 месяца, по истечении которых необходимо приобрести полноценную лицензию.
Для написания настоящей статьи была использована сертифицированная версия ПО «КриптоПро» «4.0 R4». При этом был выполнен следующий алгоритм действий:
1) загрузить архив с сертифицированной версией ПО «КриптоПро». Название полученного файла: «linux-amd64_deb.tgz»;
2) открыть "Терминал Fly" (alt+T);
3) разархивировать полученный архив в терминале командой:
6) выполнить установку ПО с помощью запуска сценария "install.sh" или "instal_gui.sh" командой:
* Выбрать необходимые модули, библиотеки.
Описание необходимых пакетов КриптоПро
Пакет | Описание |
---|---|
Базовые пакеты: | |
cprocsp-curl | Библиотека libcurl с реализацией шифрования по ГОСТ |
lsb-cprocsp-base | Основной пакет КриптоПро CSP |
lsb-cprocsp-capilite | Интерфейс CAPILite и утилиты |
lsb-cprocsp-kc1 | Провайдер криптографической службы KC1 |
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 |
Для просмотра всех установленных пакетов КриптоПро CSP ввести команду:
Прописывание путей к исполняемым файлам
Для того, чтобы не вводить каждый раз полный путь к утилитам КриптоПро CSP, в терминале FLY следует ввести команду:
Установка дополнительных пакетов с модулем поддержки для токена
Для корректной работы с токеном/смарт-картой обязательно требуется установить:
библиотека libccid, libgost-astra , пакеты pcscd
- Для Рутокен: https://www.rutoken.ru/support/download/nix/
- Для Алладин: https://www.aladdin-rd.ru/support/downloads/jacarta
После установки пакетов с модулем поддержки токена следует перезагрузить службу pcscd:
Ключ для работы в режиме замкнутой программной среды Astra Linux SE.
- Перед импортом ключа, следует предварительно установить пакет astra-digsig-oldkeys
- Ключ для работы в режиме замкнутой программной среды Astra Linux SE следует загрузить и поместить в предварительно созданную директорию:/etc/digsig/keys/legacy/cryptopro
После чего выполнить команду:
sudo update-initramfs -uk all- и перезагрузить АРМ
Проверка лицензии
Проверить срок истечения лицензии можно командой:
/opt/cprocsp/sbin/amd64/cpconfig -license -view
Установка лицензии
Для установки другой лицензии следует выполнить команду :
Носители и контейнеры
Идентификация токена
Для просмотра списка настроенных считывателей можно воспользоваться командой:
Чтобы узнать модель подключенного токена, следует ввести команду:
Проверить наличие носителей с контейнерами можно с помощью команды:
в формате FQCN, отображается имя носителя: Где \\.\HDIMAGE - локальный носитель, \\.\HDIMAGE\TestCont123 - название контейнера, \\.\Aktiv Rutoken ECP 00 00 - название носителя (токена).
Подробная информация про "Имена контейнеров"
Информация о контейнерах
Для просмотра подробной информации о контейнерах воспользуйтесь командой:
Пример работы команды:
При наличии кириллических символов в имени ключевого контейнера для дальнейшей работы с таким контейнером необходимо использовать его уникальный идентификатор. Чтобы получить уникальные идентификаторы ключевых контейнеров используйте команду:
Следует учесть про PIN-коды в контейнерах:
- если само устройство осуществляет аутентификацию (как, например, токен), то PIN при создании контейнера не создаётся, а предъявляется, так как он - свойство устройства. Как следствие: у всех контейнеров на токене одинаковый PIN.
- если устройство аутентификацию не осуществляет (как HDIMAGE), то при создании контейнера создаётся и PIN-код. Следствие: у всех контейнеров, PIN-код на HDIAMGE может быть разным.
Проверка работы контейнера
Для того чтобы проверить работу контейнера (в том числе возможность выполнения разных операций при текущей лицензии), следует выполнить команду:
Удаление контейнера
Для удаления контейнера следует воспользоваться командой:
Копирование контейнера
Для примера скопируем контейнер из локального хранилища в хранилище Рутокена ЕЦП:
Смена пароля на контейнер (снятие паролей с контейнера)
В случае, если контейнеру с ключом не был задан PIN, следует воспользоваться командой:
Менеджер сертификатов КриптоПро в Linux
Категории сертификатов
Сертификаты делятся на четыре категории:
- личные сертификаты (устанавливаются в хранилище umy, где u = User, my - имя хранилища). Для таких сертификатов, как правило, имеется закрытый ключ (и они требуют особой установки, чтобы в хранилище появилась ссылка на этот закрытый ключ). В результате с их использованием можно, например, подписать файл;
- корневые сертификаты - краеугольный камень безопасности, так как цепочки доверия строятся от них. Корневые сертификаты надо добавлять в хранилища осознанно и внимательно (устанавливаются в uroot, также администратор может поставить их в mroot, где m = Machine, такие сертификаты будут доступны в режиме read only в root-хранилищах всех пользователей);
- промежуточные сертификаты - появляются, когда есть промежуточные УЦ (структура вида "головной УЦ" -> "промежуточный УЦ" -> "пользовательский сертификат"). Прямое доверие к ним не требуется (устанавливаются в uca, также администратор может поставить их в mca). В это же хранилище устанавливаются и списки отзыва сертификатов (CRL). Обычно точки получения промежуточных сертификатов и списков отзыва (CRL) правильно указаны в пользовательских сертификатах, поэтому они загружаются автоматически и устанавливаются в хранилище ucache. В общем про них можно ничего особо не знать и ничего не делать.
- сертификаты партнёров по общению, чтобы проверять их подписи и зашифровывать для них сообщения. Ставятся либо в umy (это не лучшая, но распространенная практика), либо в uAddressBook;
Установка
Пример установки личного сертификата, выданного УЦ Министерства Обороны Российской Федерации:
Установка всех личных сертификатов со всех контейнеров в uMy :
Примечание
В опции -pattern >>> 'rutoken' может быть другим в зависимости от подключенного токена.
В случае, если рабочая станция не имеет доступа к сети, следует stdin заменить на -file /tmp/ca.cer и -file /tmp/ca.crl
Примечание
1) Имена хранилищ указаны в формате certmgr, у cryptcp похожий формат: -mroot и -uAddressBook
2) Из под учетной записи пользователя ставится в uca, из под учетной записи администратора ставить в mca:
3) В опции -pattern можно указать пустые < ' ' > чтобы установить все сертификаты в uMy. Пример:
Просмотр
Для просмотра выше установленных сертификатов можно воспользоваться :
Удаление
Удаление сертификата из хранилища КриптоПро:
Или удаление всех сертификатов:
Экспорт сертификатов на другую машину
Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys
.
Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.
Экспорт сертификата:
Can not install certificate Public keys in certificate and container are not identical
Проверка цепочки сертификатов
Для примера: чтобы проверить цепочку сертификатов, можно скопировать персональный сертификат в файл:
Можно указать другое поле сертификата: CN, E, SN, OGRN, SNILS и тд.
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018. Утилита командной строки для подписи и шифрования файлов. Будет использован следующий сертификат: Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г. Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02 Цепочка сертификатов не проверена для следующего сертификата: Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Пустовой, Виктор Иванович, "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Генеральный директор, Москва, 77 г. Москва, RU, шоссе Варшавское д. 26, 5087746137023, 007726604816, 13407634844, mail@rusbitech.ru Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02 Ошибка: Цепочка сертификатов не проверена для следующего сертификата (код ошибки 10000): /dailybuilds/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:396: 0x20000133 Вы хотите использовать этот сертификат (Да[Y], Нет[N], Отмена[C])? С
Из вывода следует, что у нас отсутствует некий сертификат в цепочке сертификатов. Можно запустить вышеуказанную команду в режиме debug(отладки):
$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn 'CN=Имя_вашего_сертификата' -df /temp/сертификат.cer ... ----------- Error chain ----------- Chain status:IS_UNTRUSTED_ROOT Revocation reason:unspecified 1. Subject:'E=uc@mil.ru, OGRN=1037700255284, INN=007704252261, C=RU, S=77 г. Москва, L=Москва, STREET=ул.Знаменка д.19, OU=4 центр (удостоверяющий) войсковой части 31659, O=Министерство обороны Российской Федерации, CN=Министерство обороны Российской Федерации' Issuer:'E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России' Cert status:IS_UNTRUSTED_ROOT ...
CP_PRINT_CHAIN_DETAIL=1 --> включает режим отладки
В нашем примере, из логов можно сделать вывод, что нам надо установить сертификат УЦ МО с CN=Министерство обороны Российской Федерации:
.... Subject:'E=uc@mil.ru, OGRN=1037700255284, INN=007704252261, C=RU, S=77 г. Москва, L=Москва, STREET=ул.Знаменка д.19, OU=4 центр (удостоверяющий) войсковой части 31659, O=Министерство обороны Российской Федерации, CN=Министерство обороны Российской Федерации' Issuer:'E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России' Cert status:CERT_TRUST_NO_ERROR ... Цепочки сертификатов проверены. Копирование сертификатов завершено. [ErrorCode: 0x00000000]
Подписание документа ЭЦП
Подпись можно делать двумя способами:
* attached (присоединённая), тогда результирующий файл - это CMS-сообщение, внутрь которого упакованы данные и атрибуты (типа подписи). Формат сообщения соответствует международному стандарту, поэтому извлекать данные оттуда можно любыми утилитами, типа cryptcp / csptest / openssl / certutil (на windows).
* detached (отсоединённая), тогда результирующий файл - это CMS-сообщение БЕЗ исходных данных, но с атрибутами (типа подписи). В этом случае для проверки надо "принести" исходный файл. Разумеется он остаётся неизменным и его можно смотреть cat-ом
Про CMS-сообщения, есть хорошая статья на Хабре
Подпись файлов (присоединённая)
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Будет использован следующий сертификат:
Субъект: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Цепочки сертификатов проверены.
Папка './': raport.pdf...
Подпись данных...
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]
Подпись файлов(отсоединённая)
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Будет использован следующий сертификат: Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Цепочки сертификатов проверены.
Папка './': raport.pdf... Подпись данных...
Подписанное сообщение успешно создано.
[ErrorCode: 0x00000000]
Проверка подписи в файле
Для прикрепленной подписи
Для проверки прикрепленной подписи выполните:
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Найдено сертификатов: 4
Цепочки сертификатов проверены.
Папка './':
raport.pdf.sig ... Проверка подписи...
Автор подписи: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Подпись проверена.
[ErrorCode: 0x00000000]
естественный
использовать ключ -verall, указывающий, что надо найти всех подписавших, в том числе в сообщении:
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Папка '/home/shuhrat/smolensk/': /home/shuhrat/smolensk/raport.pdf... Проверка подписи...
Автор подписи: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Цепочки сертификатов проверены.
Папка './': raport.pdf... Проверка подписи...
Подпись проверена.
[ErrorCode: 0x00000000]
обучающий
указать в качестве хранилища сертификатов само сообщение (ключ -f):
CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.
Будет использован следующий сертификат:
Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Цепочки сертификатов проверены.
Папка './': raport.pdf...
Проверка подписи..
Автор подписи: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02
Подпись проверена.
[ErrorCode: 0x00000000]
Извлечение подписанного файла
Чтобы извлечь файл, необходимо указать его имя в конце команды проверки подписи:
Графический интерфейс КриптоПро CSP v. 5.0 (cptools)
В версии КриптоПро 5 появилась графическая утилита для работы с сертификатами - cptools.
её можно запустить из консоли:
Удаление КриптоПро CSP
Для того, чтобы удалить ПО КриптоПро CSP, в терминале FLY следует ввести последовательно 3 команды:
sudo rm -rf /var/opt/cprocsp/
sudo rm -rf /etc/opt/cprocsp/
Отключение сообщений о необходимости перехода на ГОСТ Р 34.10-2012
В соответствии с принятым в 2014 году порядком перехода на ГОСТ Р 34.10-2012 до 1 января 2019 года попытка использования ГОСТ Р 34.10-2001 (кроме проверки подписи) на всех выпущенных к настоящему моменту сертифицированных версиях КриптоПро CSP 3.9, 4.0 и КриптоПро JCP 2.0 с 1 января 2019 года вызовет ошибку/предупреждение (в зависимости от продукта и режима работы), которые могут привести к неработоспособности автоматических/автоматизированных систем при использовании ими ключей ГОСТ Р 34.10-2001. В случае если ваша система использует ключи ГОСТ Р 34.10-2001, просим принять во внимание инструкцию.
Для отключения данных предупреждений в КриптоПро CSP, нужно добавить два ключа в конфигурационный файл /etc/opt/cprocsp/config64.ini в существующую секцию Parameters:
[Parameters] #Параметрыпровайдера warning_time_gen_2001=ll:9223372036854775807 warning_time_sign_2001=ll:9223372036854775807
На данный момент завершается сертификация обновленной версии КриптоПро CSP 4.0 R4. Для наиболее безболезненного продолжения работы с ГОСТ Р 34.10-2001 в 2019 году мы рекомендуем обновиться до этой версии. В более ранних версиях КриптоПро CSP, а также Клиент HSM 2.0 присутствуют технические ограничения формирования подписи по ГОСТ Р 34.10-2001 после 1 января 2019 года в виде соответствующих предупреждающих окон.
Полезные ссылки
КриптоПро: IFCP plugin для входа ЕСИА (Госуслуги)
КриптоПро CADES ЭЦП Browser plug-in
КриптоПро CADES ЭЦП Browser plug-in
Таблица поддерживаемых устройств Крипто-Про CSP
На официальном сайте СКЗИ КриптоПро в таблице указаны носители, продемонстрировавшие работоспособность с соответствующими версиями КриптоПро CSP:
https://www.cryptopro.ru/products/csp/compare
База знаний КриптоПро
https://support.cryptopro.ru/index.php?/Knowledgebase/List
Обсуждение КриптоПро CSP на форуме astralinux
https://forum.astralinux.ru/threads/419/
Chromium+КриптоПРО
Список ГИС и ЭТП использующих cades-bes plugin
ЭЦП в государственных информационных системах и электронно торговых площадках
Перечень аккредитованных удостоверяющих центров
https://e-trust.gosuslugi.ru/CA/
Диагностический архив для обращения в тех. поддержку
По всем вопросам установки СКЗИ в операционную систему, их настройки и обеспечения доступа к электронным ресурсам в сети Интернет можно обращаться в техническую поддержку Astra Linux и КриптоПро.
Для создания диагностического архива, можно воспользоваться следующей командой:
sudo /opt/cprocsp/bin/amd64/curl http://cryptopro.ru/sites/default/files/products/csp/cprodiag 2>/dev/null|sudo perl
В результате должен получится cprodiag_день_месяц_год.tar.gz архив, который следует прислать в техническую поддержку Astra Linux и КриптоПро.