типы ключей криптопро

типы ключей криптопро Электронная цифровая подпись
Содержание
  1. Особенности
  2. Функции программы
  3. Кому нужна
  4. Можно ли скачать бесплатно
  5. Где купить КриптоПро
  6. Защищенные носители
  7. Преимущества решений КриптоПро
  8. Файл masks. key
  9. Рутокен ЭЦП 2
  10. Для чего нужна
  11. Как работает
  12. Модели
  13. Ключевые функции
  14. Аутентификация
  15. Электронная подпись
  16. Безопасное хранение ключевой информации
  17. Защита персональных данных
  18. Корпоративное использование
  19. Характеристики
  20. USB-токены
  21. Смарт-карты
  22. Сертификаты
  23. Неизвлекаемые ключи
  24. Читаем закрытый ключ и конвертируем
  25. Неизвлекаемые ключи
  26. Термины
  27. СКЗИ КриптоПро CSP 5
  28. Алгоритмы
  29. Технологии хранения ключей
  30. Облачный токен
  31. Носители с неизвлекаемыми ключами и защищенным обменом сообщениями
  32. Носители с неизвлекаемыми ключами
  33. Классические пассивные USB-токены и смарт-карты
  34. Инструменты для использования
  35. Какие ПО поддерживает
  36. С какими продуктами компании совместима программа
  37. В какие программы встраивается
  38. Извлекаемые ключи
  39. Инструкции
  40. Установка
  41. Настройки
  42. Регистрация
  43. Изменение набора устройств считывания ключевой информации
  44. Изменение набора устройств хранения ключевой информации
  45. Настройка датчиков случайных чисел
  46. Установка времени ожидания ввода пароля доступа к ключевому контейнеру
  47. Установка параметров криптографических алгоритмов
  48. Работа с ключевыми контейнерами и сертификатами
  49. Создание ключевого контейнера
  50. Копирование и удаление ключевого контейнера
  51. Возможные проблемы в работе
  52. Файл header. key
  53. Извлекаемые ключи
  54. ФКН-ключи
  55. Главные функции
  56. Защита информации
  57. Создание ключей шифрования
  58. Формирование ПИН-кода
  59. Защита информации от случайных или преднамеренных потерь
  60. Защита от вредоносного кода и целенаправленного взлома

Особенности

ООО «КриптоПро» – российская компания, которая занимается разработкой программного обеспечения с 2000 года. Основное направление ее деятельности – разработка программных средств криптографической защиты информации (СКЗИ) и электронных ключей цифровой подписи. Программы для использования криптографических средств защиты информации называют криптопровайдерами.

Преимущества ООО «КриптоПро»:

  1. Более 20 лет работы в указанной сфере.
  2. Программные комплексы получили такое распространение и популярность, что представители бизнеса обычно устанавливают продукты компании в качестве средств для работы с цифровыми подписями по умолчанию, не задумываясь об аналогах от конкурентов.
  3. ООО «КриптоПро» разрабатывает мультиплатформенное ПО. То есть программы могут устанавливаться на любые устройства – будь то компьютер на Windows, Mac, Linux или мобильный терминал на ОС Android. 
  4. Отзывчивые операторы службы поддержки помогут при любых проблемах с ПО.

На заметку. На сайте компании представлена презентация с описанием особенностей CryptoPro CSP.

Функции программы

В задачи КриптоПро входит:

  • генерация и проверка ЭЦП (электронной цифровой подписи);
  • шифрование и имитозащита информации для обеспечения ее конфиденциальности и целостности;
  • создание безопасных и аутентичных соединений по протоколам TLS, и IPsec для обеспечения конфиденциальности передаваемых данных;
  • защита ПО, используемого совместно с криптопровайдером, от взлома путем проверки целостности исполняемых файлов.

Кому нужна

Эксплуатация ПО КриптоПро CSP возможна частными и государственными организациями, у которых есть необходимость подписывать цифровые документы ключами электронных подписей. Например, транспортные компании пользуются криптопровайдерами для подписания машиночитаемых доверенностей на сотрудников, отвечающих за оснащение тахографами и модулями НКМ автопарка предприятия.

Представители бизнеса могут использовать в своей деятельности криптопровайдеры в комплексе с онлайн-кассами для передачи отчетности в казначейство либо при подготовке бухгалтерского отчета в ФНС. КрипроАРМ используется в банковской сфере. Например, Генбанк, Россельхозбанк, ВТБ, СКБ используют в своей работе КриптоПро CSP.

Можно ли скачать бесплатно

Актуальную версию СКЗИ КриптоПро CSP можно бесплатно скачать с официального сайта компании. Для этого нужно зайти на сайт cryptopro.ru и в верхней строке выбрать категорию «Скачать». В этот же раздел можно попасть из блока «С чего начать?», как показано на изображении ниже.

типы ключей криптопро

В открывшемся окне выбираем пункт КриптоПро CSP.

типы ключей криптопро

Далее следует заполнить регистрационную форму, после чего откроется доступ к скачиванию файлов. К загрузке доступна демонстрационная версия программы с бесплатным тестовым периодом всех функций на протяжении 90 дней с даты установки. Когда три месяца бесплатного использования начнут истекать, для продолжения полноценной работы потребуется приобрести годовую или неограниченную лицензию.

Предприятию понадобится столько ключей для разблокировки работы программы, на сколько компьютеров она установлена. Каждый регистрационный номер лицензии будет уникален и может быть использован для активации одной версии СryptoPro CSP на одном ПК. Также доступны варианты приобретения групповых лицензий. В таком случае одним регистрационным ключом можно активировать определенное количество копий криптопроарм.

Еще один (не совсем честный) вариант – скачать актуальный дистрибутив программы через торрент со сторонних пиратских сайтов. Там же можно найти и бессрочный ключ активации программы. Правда, в таком случае пользователь останется без технической поддержки и доступа к облачным хранилищам. 

Где купить КриптоПро

Купить лицензию на КриптоПро CSP можно на официальном сайте компании либо приобрести у одного из дилеров, список которых представлен на сайте производителя в разделе «Партнеры». Среди таковых:

  • «Computer Business Systems», Москва (www.cbs.ru);
  • АО «АЛТЭКС-СОФТ», Москва (www.altx-soft.ru);
  • ООО «НТПЦ», Ленинградская область (ntpc.ru);
  • АО «НПО «Инфобезопасность», Воронежская область (www.infobez.org);
  • ООО «Агентство информационной безопасности» (ООО «АИнБ»), Калининградская область (ainb39.ru).
     

Цена КриптоПро CSP зависит от нескольких факторов:

  • статуса покупателя лицензии (частное лицо, индивидуальный предприниматель, юрлицо, иностранец);
  • количества копий программы, которые можно активировать одним кодом;
  • срока действия лицензии.

В таблице указано, сколько стоит лицензия СКЗИ КриптоПро CSP для ИП.

Наименование продуктаСтоимость, рублей
Лицензия на одно рабочее место без возможности подключения к серверу (в зависимости от наценки дилера)2700–3000
Рутокен (носитель)

2500

Право скачать обновление на один рабочий ПК1125
Серверная копия программы для нескольких пользователей70000
Право обновить программу на сервере 1 раз24000
Технический контроль со стороны разработчика одного рабочего места (в год)

850

Защищенные носители

Защищенные носители – это носители ключевой информации, предназначенные для хранения ключей электронной подписи. Они имеют специальную защищенную память, в которую записываются ключи и сертификаты электронной подписи. Такие носители сертифицируются по требованиям ФСТЭК России. Описание носителей и актуальные сертификаты на них можете скачать по ссылкам ниже.

  • Рутокен Lite (
    Сертификат на ПАК «Рутокен» №3753 ФСТЭК РФ)
  • Рутокен S (
    Сертификат на ПАК «Рутокен» №3753 ФСТЭК РФ)
  • JaCarta LT (
    Сертификат соответствия ФСТЭК России № 4446)
  • JaCarta ГОСТ (
    Сертификат соответствия ФСТЭК России № 4446)
  • Esmart Token (
    Сертификат соответствия ФСТЭК России №2986)

При получении ключей электронной подписи в ФНС России вместе с носителем необходимо предоставить копию сертификата ФСТЭК России.

Для работы ключей электронной подписи, записанных на такие носители обязательно потребуется специальная программа – криптопровайдер. В подавляющем большинстве случаев требуется программа
КриптоПро CSP (источник –
сайт ФНС России).

Программа КриптоПро CSP платная, ее
можно приобрести у нас.

Из представленных моделей самый распространенный и популярный –
Рутокен Lite. Мы рекомендуем к использованию именно его.

На носитель Рутокен S в некоторых инспекциях не могут записать ключи электронной подписи (мы сами столкнулись с такой проблемой).

Обратите внимание! Использования защищенного носителя и программного криптопровайдера КриптоПро CSP позволит Вам удачно воспользоваться электронной подписью от ФНС в 99,999% случаев! Исключением являются специфические системы, в которых до сих пор предъявляются особые требования к носителю ключевой информации и/или программному криптопровайдеру. Например, в системе ЕГАИС-алко работают только аппаратные криптоключи, описанные ниже.

Преимущества решений КриптоПро

Большой опыт в информационной безопасности

Большой опыт в информационной безопасности

Программа широко распространена среди бизнес сообщества для работы с ЭЦП

Совместимость с альтернативным софтом

Совместимость с альтернативным софтом

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

Техническая поддержка

Техническая поддержка

Если пользователь ЭЦП не знает, как обращаться с софтом, можно проконсультироваться с техподдержкой криптопровайдера.

Использование ключей, хранящихся на облачном сервисе

Использование ключей, хранящихся на облачном сервисе

В КриптоПро CSP 5.0 впервые появилась возможность использования ключей, хранящихся на облачном сервисе КриптоПро DSS

Файл masks. key

Содержит 32 байта маски ключа в формате Asn1, зашифрованного на ключе хранения pwd_key. Далее 12 байт «затравочной» информации для генерации ключа хранения pwd_key, если криптоконтейнер защищен паролем, то пароль также участвует в генерации ключа хранения.

Далее контрольная сумма (имитозащита) 4 байта. Контрольной информацией для простоты мы пользоваться не будем, общий контроль будет осуществляться путем генерации открытого ключа и сравнения первых 8 байт полученного ключа с соответствующим полем из файла header.key:

masks.key

Рутокен ЭЦП 2

Рутокен – торговая марка программных и аппаратных продуктов в области защиты информации, которые разрабатываются и производятся в РФ, сертифицируются ФСБ и ФСТЭК. Это такой же носитель ключей защиты, как и традиционный токен. Однако для криптографической защиты информации в рутокенах используются отечественные алгоритмы по ГОСТ Р 34.10-2012 с длиной ключа 256/512 бит и ГОСТ Р 34.11-2012.

Формат выпуска рутокенов: смарт-карточки, USB-носители и контейнеры с интерфейсом подключения Type-C.

Все операции независимо от модели российского носителя выполняются без копирования ключей в память ПК.

типы ключей криптопро

Рутокен с СКЗИ применяется в государственных и частных организациях, где необходимо обеспечение высокого уровня безопасности передаваемой информации (например, ЕГАИС, Маркировка и пр.).

Для чего нужна

Рутокен ЭЦП 2.0 используется для обеспечения защищенного электронного документооборота в таких направлениях:

  • дистанционное обслуживание, проведение удаленных финансовых операций в банковской сфере;
  • безопасная передача конфиденциальной информации в государственном секторе экономики;
  • работа с системами ЕГАИС ФСРАР.

При помощи Рутокен ЭЦП 2.0 можно проходить авторизацию в личном кабинете частного предпринимателя на госпортале ФНС.

Как работает

Рутокен ЭЦП 2.0, как и традиционные токены с неизвлекаемыми ключами, используется для двухфакторной авторизации. Чтобы выполнить процедуру идентификации пользователя, нужно вставить носитель в ПК и подтвердить личность PIN-кодом разблокировки. Такой подход обеспечивает более высокий уровень безопасности данных по сравнению с традиционным введением логина и пароля.

Основой Рутокен ЭЦП 2.0 является микрочип с функцией криптографической защиты данных, модуль невзламываемой памяти для хранения ключей доступа, ЭЦП, сертификатов.

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

Модели

Все модели Рутокен 2.0 обеспечивают безопасность ключей на носителе и отвечают новым стандартам криптографической защиты:

  • ГОСТ Р 34.10-2012 — генерация и тестирование ЭЦП;
  • ГОСТ Р 34.11-2012 — алгоритм и порядок вычисления Hash-функций;
  • VKO ГОСТ Р 34.10-2012 — алгоритмы генерации одноразовых ключей сессий.
     

Также все версии Рутокен 2.0 сохранили за собой поддержку предыдущих криптографических стандартов: ГОСТ Р 34.10-2001, ГОСТ 34.11-94 и ГОСТ 28147-89.

В таблице приведены все вариации Рутокен 2.0 с кратким описанием.

Версии Рутокена

Описание

Базовый

Базовая модель в полноразмерном корпусе

С сертификацией ФСБ

Токен поставляется с сертификатом, подтверждающим лицензирование ФСБ

Экспортный, сертифицированный ФСБ

Носитель, который пользователь может вывозить за пределы российской территории. В этой версии отключена поддержка некоторых стандартов, что позволило получить сертификацию ФСБ и исключить нарушение государственной тайны.

Сертифицированный ФСТЭК

Токен поставляется с сертификатом, подтверждающим лицензирование ФСТЭК

2100

Версия, собранная на базе чипа смарт-карты, но в корпусе традиционного USB-носителя

2100, сертифицированный ФСБ

Версия, собранная на базе чипа смарт-карты, но в корпусе традиционного USB-носителя и с сертификацией ФСБ

Смарт-карта Рутокен ЭЦП 2.0, сертифицированная ФСБ

Токен в виде смарт-карты, который поддерживает современные криптографические стандарты ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012, VKO ГОСТ Р 34.10-2012 (RFC 7836) с длиной библиотеки ключей 256 и 512 бит. Процедура подписи документа выполняется за 0,3 сек. Сертификация ФСБ по классам безопасности КС1 и КС2.

Type-C

Традиционный Рутокен ЭЦП 2.0, но с современным разъемом USB Type-C. Носитель можно подключить к новым мобильным устройствам с портами USB Type-C 3.0 или Thunderbolt 3.

2100 Type-C

Версия, собранная на базе чипа смарт-карты, но в корпусе традиционного USB-носителя c разъемом USB Type-C. Носитель подключается к современным ноутбукам с портами USB Type-C 3.0 или Thunderbolt 3.

Micro

Полноценный Рутокен 2.0, но в миниатюрном корпусе. Удобен в использовании с ноутбуками и планшетами. Корпус носителя имеет такой же вид, как приемник для беспроводных мышек, и выступает за пределы USB-гнезда на 5–6 мм.

Micro, сертифицированный ФСБ

Версия Micro, но с сертификацией ФСБ и сопроводительной документацией

Micro, сертифицированный ФСТЭК

Версия Micro, но с сертификацией ФСТЭК и сопроводительной документацией

2100 Micro

Версия Micro, построенная на контроллере смарт-карточек

Touch

Носитель в полноразмерном корпусе с сенсорной кнопкой для подтверждения операций с ЭЦП.

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

RF

Рутокен ЭЦП 2.0 со встроенной RFID-меткой. Носитель позволяет не только подтверждать проводимые операции с ЭЦП, но и получать доступ к закрытым помещениям с ограниченным доступом.

Рутокен ЭЦП RF комплектуется RFID-метками EM-Marine, Mifare, HID.

Читайте также:  Как сформировать ключ эцп

Собственным блоком криптозащиты оснащаются Рутокены ЭЦП 2.0 c сертификатами ФСБ версий: 2100 (USB), 2100 Micro, 2100 Type-C.

Таким образом, чтобы определить, является ли рутокен носителем СКЗИ, достаточно обратить внимание на его версию и проверить наличие сертификата ФСБ.

Ключевые функции

Все функции, которые могут быть выполнены при помощи Рутокен 2.0, делятся на несколько категорий:

  • аутентификация пользователя;
  • электронная подпись для документов;
  • безопасное хранение ключевой информации;
  • защита персональных данных;
  • корпоративные возможности.

Аутентификация

Использование Рутокена упрощает авторизацию пользователя в различных сервисах:

  • на почтовых серверах, в базах данных, прочих удаленных хранилищах;
  • вместо традиционного доступа к личным кабинетам на государственных порталах посредством ввода логина и пароля можно пользоваться двухфакторной авторизацией при помощи ЭЦП;
  • защищенная аутентификация при удаленном доступе к ПК (например, если администратору нужно подключиться к рабочему компьютеру сотрудника).

Электронная подпись

При помощи Рутокена и аналогичных носителей ЭЦП реализуется возможность подписывать электронные документы при помощи файлов ЭЦП.

Безопасное хранение ключевой информации

Сюда входит:

  • применение ключей для выполнения криптографических операций, но без копирования ключей с носителя;
  • защита ключей, находящихся в памяти токена, от копирования;
  • защита безопасности данных в случае утери носителя, так как для разблокировки функций нужно ввести ПИН-код.

Защита персональных данных

Включает в себя:

  • шифровку переписок по электронной почте;
  • обеспечение безопасности доступа к компьютеру и другим терминалам, которые подключены к локальной сети;
  • защиту отдельных файлов или папок на диске компьютера путем криптографического шифрования.

Корпоративное использование

Рутокен используется:

  • в качестве индивидуального ключа для подписи документов в разных корпоративных информационных системах, программах документооборота (например, СБИС, Бифит);
  • в качестве личного ключа для доступа к личной информации, паролям, ключам шифрования, цифровым сертификатам.

Характеристики

Рутокен 2.0 в зависимости от формата (USB и смарт-карт) имеет незначительные отличия в технических характеристиках.

USB-токены

Основные характеристики Рутокен 2.0 в формате USB:

  • микроконтроллер криптографической защиты с энергозависимым накопителем EEPROM объемом 64 Кб;
  • поддерживаемые подключения – USB 1.1 и выше;
  • габаритные размеры: 5,8 х 1,6 х 0,8 см;
  • вес: 6,3 г;
  • генерируемый серийный номер с длиной библиотеки шифрования в 32 бит;
  • поддержка ОС Windows, Linux, Apple macOS.

Рутокен 2.0 USB может взаимодействовать с интерфейсами:

  • PKCS#11 2.20, 2.30;
  • Microsoft Crypto API;
  • Microsoft SmartCard API;
  • PS/CS;
  • ISO/IEC 7816-4, 7816-8, 7816-12.
     

Отечественный носитель ключей может работать без установки драйверов по стандарту USB CCID.

Смарт-карты

Основные характеристики Рутокен 2.0 в формате SmartCard:

  • микроконтроллер криптографической защиты с энергонезависимым накопителем EEPROM объемом 128 Кб;
  • генерируемый серийный номер с длиной библиотеки шифрования в 32 бит;
  • габаритные размеры: 8,56 х 5,4 х 0,1 см;
  • вес: 5,5 г;
  • поддержка ОС Windows, Linux, Apple macOS, Android 5.0 и выше, iOS 13 и выше.
     

Рутокен 2.0 SmartCard может взаимодействовать с интерфейсами:

  • PKCS#11 2.20, 2.30;
  • Microsoft Crypto API (ms_key);
  • Microsoft SmartCard API;
  • PS/CS;
  • ISO/IEC 7816-3;
  • ISO 14443 (NFC);

Накопитель может связываться со смартфонами по беспроводному протоколу NFC.

Сертификаты

Оба типа токенов отечественного производства (USB, SmartCard) после лицензирования ФСТЭК и ФСБ получают сертификаты соответствия государственного образца.

Сертификат ФСТЭК РФ подтверждает, что носители ключей признаются программно-техническими средствами, которые отвечают требованиям по безопасности информации и установленным уровням доверия к средствам технической защиты информации.

типы ключей криптопро

Сертификат от ФСБ подтверждает, что токен соответствует требованиям таких нормативных актов:

  1. Требования к средствам ЭЦП, утвержденные Приказом ФСБ РФ № 796 от 27.12.2011 г.
  2. Федеральный закон № 63-ФЗ «Об электронной подписи» от 06.04.2011 г.
     

Наличие такого сертификата говорит о том, что токен может быть использован для критографической защиты информации, шифрования данных и использования ЭЦП.

типы ключей криптопро

Неизвлекаемые ключи

Создаются с использованием встроенных аппаратных криптографических механизмов внутри специализированных ключевых носителей. Для генерации ключей используется криптографическое ядро внутри микроконтроллера устройства. Такие ключи ЭП хранятся не просто в защищенной памяти с доступом по PIN-коду, но и в специальном типе файлов, с которым умеет работать только криптоядро устройства. При работе с подписью все операции производятся внутри токена, и закрытый ключ никогда не копируется из памяти микроконтроллера.

Неизвлекаемые ключи бывают разного формата: PKCS#11 и “ФКН-ключ”.

Используя стандартизированный программный интерфейс (API) библиотеки PKCS#11, приложение, или программный криптопровайдер, напрямую работает с криптоядром ключевого носителя.

У носителей, которые называются ФКН (функциональный ключевой носитель) есть возможность работать с неизвлекаемыми “ФКН-ключами”. Такие носители и криптопровайдер на компьютере, для передачи PIN-кода и другого обмена (в т.ч. данными, которые подписываются), строят защищенный канал. Для этого используется протокол SESPAKE (протокол выработки общего ключа с аутентификацией на основе пароля). Выработка ключа — задача устройства ФКН и криптопровайдера наьютере  компьютере, поэтому на компьютере также должна быть установлена версия КриптоПро CSP, поддерживающая SESPAKE.

Читаем закрытый ключ и конвертируем

Файл privkey.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <openssl/pem.h>
#include <openssl/cms.h>
#include <openssl/err.h>
#include "gost_lcl.h"

/* Convert little-endian byte array into bignum */
BIGNUM *reverse32bn(char *b, BN_CTX *ctx)
{
	BIGNUM *res;
	char buf[32];
	BUF_reverse(buf, b, 32);
	res = BN_bin2bn(buf, 32, BN_CTX_get(ctx));
	OPENSSL_cleanse(buf, sizeof(buf));
	return res;
}

void xor_material(char *buf36, char *buf5C, char *src)
{
	int i;
	for(i = 0; i < 32; i++)
	{
		buf36[i] = src[i] ^ 0x36;
		buf5C[i] = src[i] ^ 0x5C;
	}
}

int make_pwd_key(char *result_key, char *start12, int start12_len, char *passw)
{
	int result;
	int i;
	char pincode4[1024];
	int pin_len;
	char current[32];
	char material36[32];
	char material5C[32];
	char hash_result[32];
	gost_hash_ctx ctx;
	init_gost_hash_ctx(&ctx, &GostR3411_94_CryptoProParamSet);
	memset(pincode4, 0, sizeof(pincode4));
	pin_len = strlen(passw);
	if (pin_len*4 > sizeof(pincode4)) {	result = 1;	goto err; }
	for(i = 0; i < pin_len; i++)
		pincode4[i*4] = passw[i];

	start_hash(&ctx);
	hash_block(&ctx, start12, start12_len);
	if (pin_len) 
		hash_block(&ctx, pincode4, pin_len * 4);
	finish_hash(&ctx, hash_result);

	memcpy(current, (char*)"DENEFH028.760246785.IUEFHWUIO.EF", 32);

	for(i = 0; i < (pin_len?2000:2); i++)
	{
		xor_material(material36, material5C, current);
		start_hash(&ctx);
		hash_block(&ctx, material36, 32);
		hash_block(&ctx, hash_result, 32);
		hash_block(&ctx, material5C, 32);
		hash_block(&ctx, hash_result, 32);
		finish_hash(&ctx, current);
	}

	xor_material(material36, material5C, current);

	start_hash(&ctx);
	hash_block(&ctx, material36, 32);
	hash_block(&ctx, start12, start12_len);
	hash_block(&ctx, material5C, 32);
	if (pin_len) 
		hash_block(&ctx, pincode4, pin_len * 4);
	finish_hash(&ctx, current);

	start_hash(&ctx);
	hash_block(&ctx, current, 32);
	finish_hash(&ctx, result_key);

	result = 0; //ok
err:
	return result;
}

BIGNUM *decode_primary_key(char *pwd_key, char *primary_key, BN_CTX *bn_ctx)
{
	BIGNUM *res;
	char buf[32];
	gost_ctx ctx;
	gost_init(&ctx, gost_cipher_list->sblock);
	gost_key(&ctx, pwd_key);
	gost_dec(&ctx, primary_key, buf, 4);
	res = reverse32bn(buf, bn_ctx);
	OPENSSL_cleanse(buf, sizeof(buf));
	return res;
}

BIGNUM *remove_mask_and_check_public(char *oid_param_set8, BIGNUM *key_with_mask, BIGNUM *mask, char *public8, BN_CTX *ctx)
{
	int result;
	EC_KEY *eckey = NULL;
	const EC_POINT *pubkey;
	const EC_GROUP *group;
	BIGNUM *X, *Y, *order, *raw_secret, *mask_inv;
	char outbuf[32], public_X[32];
	ASN1_OBJECT *obj;
	int nid;

	order = BN_CTX_get(ctx);
	mask_inv = BN_CTX_get(ctx);
	raw_secret = BN_CTX_get(ctx);
	X = BN_CTX_get(ctx);
	Y = BN_CTX_get(ctx);
	if (!order || !mask_inv || !raw_secret || !X || !Y) { result = 1; goto err; }

	obj = ASN1_OBJECT_create(0, oid_param_set8+1, *oid_param_set8, NULL, NULL);
	nid = OBJ_obj2nid(obj);
	ASN1_OBJECT_free(obj);

	if (!(eckey = EC_KEY_new())) { result = 1; goto err; }
	if (!fill_GOST2001_params(eckey, nid)) { result = 1; goto err; }
	if (!(group = EC_KEY_get0_group(eckey))) { result = 1; goto err; }
	if (!EC_GROUP_get_order(group, order, ctx)) { result = 1; goto err; }

	if (!BN_mod_inverse(mask_inv, mask, order, ctx)) { result = 1; goto err; }
	if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx)) { result = 1; goto err; }

	if (!EC_KEY_set_private_key(eckey, raw_secret)) { result = 1; goto err; }
	if (!gost2001_compute_public(eckey)) { result = 1; goto err; }
	if (!(pubkey = EC_KEY_get0_public_key(eckey))) { result = 1; goto err; }
	if (!EC_POINT_get_affine_coordinates_GFp(group, pubkey, X, Y, ctx)) { result = 1; goto err; }

	store_bignum(X, outbuf, sizeof(outbuf));
	BUF_reverse(public_X, outbuf, sizeof(outbuf));
	if (memcmp(public_X, public8, 8) != 0) { result = 1; goto err; }

	result = 0; //ok
err:
	if (eckey) EC_KEY_free(eckey);
	if (result == 0) return raw_secret;
	return NULL;
}

int file_length(char *fname)
{
	int len;
	FILE *f = fopen(fname, "rb");
	if (f == NULL) return -1;
	fseek(f, 0, SEEK_END);
	len = ftell(f);
	fclose(f);
	return len;
}

int read_file(char *fname, int start_pos, char *buf, int len)
{
	int read_len;
	FILE *f = fopen(fname, "rb");
	if (f == NULL) return 1;
	if (start_pos) fseek(f, start_pos, SEEK_SET);
	read_len = fread(buf, 1, len, f);
	fclose(f);
	if (read_len != len) return 1;
	return 0; //ok
}

int get_asn1_len(unsigned char *buf, int *size_hdr)
{
	int n, i, res;
	int pos = 0;
	if ((buf[pos]&0x80) == 0) {
		*size_hdr = 1;
		return buf[pos];
	}
	n = buf[pos++]&0x7f;
	res = 0;
	for(i = 0; i < n; i++) {
		res = res*256 + buf[pos++];
	}
	*size_hdr = n+1;
	return res;
}

#define MAX_HEADER 20000
int read_container(char *fpath, int flag2, char *salt12, char *primary_key, char *masks_key, char *public8, char *oid_param_set8)
{
	int result;
	char primary_path[1024+30];
	char masks_path[1024+30];
	char header_path[1024+30];
	char header_buf[MAX_HEADER];
	int header_len;
	int i, len, pos, size_hdr;

	if (strlen(fpath)>1024) { result = 1; goto err; }

	sprintf(header_path, "%s/header.key", fpath);
	if (flag2 == 0)
	{
		sprintf(primary_path, "%s/primary.key", fpath);
		sprintf(masks_path, "%s/masks.key", fpath);
	}
	else
	{
		sprintf(primary_path, "%s/primary2.key", fpath);
		sprintf(masks_path, "%s/masks2.key", fpath);
	}

	if (read_file(primary_path, 4, primary_key, 32)) { result = 1; goto err; }
	if (read_file(masks_path, 4, masks_key, 32)) { result = 1; goto err; }
	if (read_file(masks_path, 0x26, salt12, 12)) { result = 1; goto err; }

	header_len = file_length(header_path);
	if (header_len < 0x42 || header_len > MAX_HEADER) { result = 1; goto err; }
	if (read_file(header_path, 0, header_buf, header_len)) { result = 1; goto err; }

//------------- skip certificate ---------------------------
	pos = 0;
	for(i = 0; i < 2; i++)
	{
		get_asn1_len(header_buf+pos+1, &size_hdr);
		pos += size_hdr+1;
		if (pos > header_len-8) { result = 2; goto err; }
	}

//------------------ get oid_param_set8 -----------------------
#define PARAM_SET_POS 34
	if (memcmp(header_buf+pos+PARAM_SET_POS, "\x6\x7", 2) != 0) { result = 2; goto err; }
	memcpy(oid_param_set8, header_buf+pos+PARAM_SET_POS+1, 8);

//------------------ get public8 -----------------------
	result = 2; //not found
	pos += 52;
	for(i = 0; i < 3; i++)
	{
		len = get_asn1_len(header_buf+pos+1, &size_hdr);
		if (len == 8 && memcmp(header_buf+pos, "\x8a\x8", 2) == 0)
		{
			memcpy(public8,header_buf+pos+2,8);
			result = 0; //ok
			break;
		}
		pos += len+size_hdr+1;
		if (pos > header_len-8) { result = 2; goto err; }
	}
err:
	OPENSSL_cleanse(header_buf, sizeof(header_buf));
	return result;
}

#define START_OID 0x12
#define START_KEY 0x28
unsigned char asn1_private_key[72] = {
	0x30,0x46,2,1,0,0x30,0x1c,6,6,0x2a,0x85,3,2,2,0x13,0x30,0x12,6,7,0x11,
	0x11,0x11,0x11,0x11,0x11,0x11,6,7,0x2a,0x85,3,2,2,0x1e,1,4,0x23,2,0x21,0
};

int main(int argc, char **argv)
{
	int result;
	char *container_path;
	char *passw;
	char salt12[12];
	char primary_key[32];
	char masks_key[32];
	char public8[8];
	char oid_param_set8[8];
	BN_CTX *ctx;
	BIGNUM *key_with_mask;
	BIGNUM *mask;
	BIGNUM *raw_key;
	char pwd_key[32];
	char outbuf[32];

	ctx = BN_CTX_new();

	if (argc == 2)
	{
		container_path = argv[1];
		passw = "";
	}
	else
	if (argc == 3)
	{
		container_path = argv[1];
		passw = argv[2];
	}
	else
	{
		printf("get_private container_path [passw]\n");
		result = 1;
		goto err;
	}

	if (read_container(container_path, 0, salt12, primary_key, masks_key, public8, oid_param_set8) != 0 &&
		read_container(container_path, 1, salt12, primary_key, masks_key, public8, oid_param_set8) != 0)
	{
		printf("can not read container from %s\n", container_path);
		result = 2;
		goto err;
	}

	make_pwd_key(pwd_key, salt12, 12, passw);
	key_with_mask = decode_primary_key(pwd_key, primary_key, ctx);
	OPENSSL_cleanse(pwd_key, sizeof(pwd_key));
	mask = reverse32bn(masks_key, ctx);
	raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx);

	if (raw_key)
	{
		BIO *bio;
		store_bignum(raw_key, outbuf, sizeof(outbuf));
		memcpy(asn1_private_key+START_OID, oid_param_set8, 8);
		memcpy(asn1_private_key+START_KEY, outbuf, 32);
		//bio = BIO_new_file("private.key", "w");
		bio = BIO_new_fp(stdout, BIO_NOCLOSE | BIO_FP_TEXT);
		PEM_write_bio(bio, "PRIVATE KEY", "", asn1_private_key, sizeof(asn1_private_key));
		BIO_free(bio);
		OPENSSL_cleanse(outbuf, sizeof(outbuf));
		OPENSSL_cleanse(asn1_private_key, sizeof(asn1_private_key));
		result = 0; //ok
	}
	else
	{
		printf("Error check public key\n");
		result = 3;
	}

err:
	BN_CTX_free(ctx);
	OPENSSL_cleanse(salt12, sizeof(salt12));
	OPENSSL_cleanse(primary_key, sizeof(primary_key));
	OPENSSL_cleanse(masks_key, sizeof(masks_key));
	return result;
}

Небольшой комментарий.

Основную работу выполняют следующие 3 функции:

1. Создаем ключ хранения исходя из 12-ти байтовой «соли» и пароля.

make_pwd_key(pwd_key, salt12, 12, passw);

2. Расшифровываем основной ключ на ключе хранения.

key_with_mask = decode_primary_key(pwd_key, primary_key, ctx);

3. Делим ключ с маской на маску.

raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx);

Но так как в библиотеке OpenSLL операция деления по модулю традиционно отсутствует, пользуемся операцией взятия обратного числа и умножением.

if (!BN_mod_inverse(mask_inv, mask, order, ctx)) { result = 1; goto err; }
if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx)) { result = 1; goto err; }

Неизвлекаемые ключи

Генерируются на активных и ФКН носителях, с использованием стандартизированного программного интерфейса (API) библиотеки PKCS#11. Например, вся линейка продуктов Рутокен ЭЦП 3.0 содержит в себе возможности аппаратной криптографии.

Для генерации ключей формата PKCS#11 можно использовать инструменты от компании Актив:

  • Генератор запроса на сертификатиз комплекта Драйверов Рутокен. 
  • содержащий примеры использования кроссплатформенной библиотеки rtpkcs11ecp). 

Или воспользоваться программными ГОСТ-криптопровайдерами:

  • СКЗИ КриптоПро CSP версии 5.0 R2 – при генерации ключей надо выбрать режим “Активный токен”.  
  • СКЗИ Signal-COM CSP– на активные ключевые носители из линейки Рутокен ЭЦП 3.0 автоматически генерируются неизвлекаемые ключи.  

Термины

Часть терминов в статье подается в упрощенном виде для простоты понимания.

Используя термин ЭП, мы подразумеваем квалифицированную электронную подпись (КЭП). Это электронная подпись, которая полностью соответствует всем требованиям 63-ФЗ и Приказу ФСБ России № 796 к средствам ЭП и хранится на персональном защищенном ключевом носителе.

Ключи ЭП — закрытый и открытый ключи, которые вместе составляют ключевую пару. Создание (генерация) ключевой пары выполняется криптографическим программным обеспечением , оно может быть установлено в точке выдачи УЦ, у вас на компьютере и в самом ключевом носителе. Закрытый ключ никому разглашать нельзя. Если его кто-то узнал, то он может подписать любой документ от вашего имени. Открытый ключ можно показывать всем. Его значение (это просто длинное число) заносится в сертификат ключа проверки электронной подписи (он же просто «сертификат»), который потом используется при проверке вашей подписи под документом.

Читайте также:  Как сделать ЭЦП для ИП

Сертификат ЭП выдает Удостоверяющий Центр (УЦ). Форма сертификата КЭП соответствует требованиям Приказа ФСБ РФ № 795. Главная задача УЦ — достоверно определить, что вы – это вы. Для того, чтобы при обмене документами в электронном виде люди точно знали, что подпись, сделанная с использованием вашего сертификата — поставлена именно вами.

Ключи ЭП вместе с сертификатом составляют контейнер ЭП (ключевой контейнер).

СКЗИ КриптоПро CSP 5

КриптоПро CSP 5.0 – актуальная версия криптографического провайдера, которая включает в себя несколько модификаций программного продукта:

  • КП CSP, где используются традиционные токены и прочие пассивные хранилища секретных ключей;
  • КП ФКН CSP/Рутокен CSP с неизвлекаемыми ключами на токенах с защищенным обменом сообщениями;
  • КП DSS, где используются «облачные» технологии хранения ЭЦП.

Новая версия криптопровайдера поддерживает больше защитных алгоритмов, в ней увеличено количество поддерживаемых платформ. Интерфейс программы также стал удобнее, управление ключами на физическом носителе и в облачных хранилищах приведено к одному виду. То есть рядовой пользователь не почувствует разницы в использовании разных типов ЭЦП.

Алгоритмы

В таблице представлен список криптографических алгоритмов защиты и шифрования информации, которые поддерживает новая версия (v.5.0) криптопровайдера.

Вид защитыСтандарт алгоритма безопасности
ЭЦПГОСТ Р 34.10-2012 (ГОСТ 34.10-2018), ECDSA, RSA
HASH-функцииГОСТ Р 34.11-2012 (ГОСТ 34.11-2018), SHA-1, SHA-2
ШифрованиеГОСТ Р 34.12-2015 (ГОСТ 34.12-2018), ГОСТ Р 34.13-2015 (ГОСТ 34.13-2018), ГОСТ 28147-89, AES (128/192/256), 3DES, 3DES-112, DES, RC2, RC4

Далее в таблице сравниваются характеристики разных версий КриптоПро по количеству поддерживаемых протоколов криптозащиты.

Стандарт алгоритма безопасностиCSP 2.0, 3.0, 3.3, 3.4, 3.6CSP 3.9CSP 4.0 (4.0.9963)CSP 5.0
ГОСТ Р 34.10-2012512 / 1024 бит512 / 1024 бит
ГОСТ Р 34.10-2001512 бит512 бит512 бит512 бит
ГОСТ Р 34.10-941024 бит
ГОСТ Р 34.10-941024 бит
ГОСТ Р 34.11-2012256 / 512 бит256 / 512 бит
ГОСТ Р 34.11-94256 бит256 бит256 бит256 бит
ГОСТ Р 34.12-2015256 бит
ГОСТ Р 34.13-2015256 бит
ГОСТ 28147-89256 бит256 бит256 бит256 бит

Количество бит в ячейках указывает на размер библиотеки шифрования. Чем больше значение, тем сложнее взломать защиту алгоритма.
Исходя из данных таблицы, исполнение CSP 5.0 обеспечивает защищенность информации на высоком уровне за счет поддержки большого числа алгоритмов криптографии.

Технологии хранения ключей

КриптоПРО 5.0 поддерживает все виды технологий генерации и хранения программных контейнеров с сертификатом и цифровой подписью:

  • на жестком диске или обычной флешке; 
  • в облачном хранилище (на удаленном сервере, к которому обеспечивается защищенный доступ);
  • на защищенном носителе с активной генерацией контейнеров (файл создается встроенным ПО носителя);
  • на защищенном носителе с пассивной генерацией контейнеров (файл создается СКЗИ, но при налаженной связи с носителем токена).

Облачный токен

Токен – это тот же ключ цифровой подписи. Облачным токеном называют ЭЦП, которые хранятся не на рабочем компьютере, а на выделенном сервере сервиса КриптоПро DSS. Криптографический провайдер получает к токенам доступ через интернет. При этом подпись на документах в СБИС, Диадок или ЕГАИС Крипто ставится таким же образом, как если бы КЭП (ключ электронной подписи) находился на ПК, только для этого используется протокол CryptoAPI.

Пользоваться облачными токенами удобнее, ведь к файлам ЭЦП можно получить доступ из любой точки страны, не имея физического доступа к рабочему компьютеру. 
Например, руководитель компании может подписывать документацию, находясь в командировке. При этом для использования ЭЦП ему будет достаточно смартфона на ОС Android с установленным мобильным криптопровайдером.

Кроме того, облачные токены поддерживаются множеством сторонних приложений для общения и работы с документацией. Например, офисные пакеты Microsoft.

Носители с неизвлекаемыми ключами и защищенным обменом сообщениями

Альтернативное название такого типа носителей – функциональные ключевые носители (ФКН). Неизвлекаемыми ключами называют токены, с которых нельзя скопировать цифровую подпись. То есть КЭП генерируется носителем токена, и все операции, связанные с прикреплением ЭЦП, проходят на самом накопителе. В качестве носителя обычно выступает защищенная USB-флешка.

Криптопровайдер может работать с цифровой подписью на носителе только в тот момент, когда накопитель установлен в компьютер, распознан СКЗИ и между ними налажен защищенный канал связи. Шифрованная связь между носителем и криптопровайдером налаживается по протоколу SESPAKE.

Протокол обеспечивает взаимодействие компонентов (накопителя и СКЗИ) без прямой передачи паролей доступа, чтобы они не могли быть перехвачены злоумышленниками для дальнейшего использования в преступных целях. Устройства типа ФКН можно использовать как активные и пассивные носители (режим обычной флешки, куда просто копируется ЭЦП).

Носители с неизвлекаемыми ключами

Этот тип носителей называют активными токенами без защиты канала. Принцип их работы такой же, как у ФКН – контейнеры с сертификатами и подписями также генерируются на носителе. Однако для связи с криптопровайдером аппаратный носитель нужно авторизовать в системе при помощи регистрационных данных. То есть безопасный канал связи между СКЗИ и носителем не налаживается. Соответственно, уровень защиты активных токенов без защиты канала ниже по сравнению с ФКН.

Кроме того, этот тип токена также может быть использован в качестве пассивного носителя. В этом режиме при наличии перехваченных регистрационных данных злоумышленник может получить доступ к ЭЦП на носителе. К активным токенам без защиты канала связи относятся: Рутокен ЭЦП 2.0, JaCarta-2 ГОСТ и InfoCrypt VPN-Key-TLS.

Классические пассивные USB-токены и смарт-карты

Самый доступный и быстрый вариант хранения ЭЦП – использовать традиционный класс USB-токенов или смарт-карт, работающих в пассивном режиме.
Это незащищенные носители, на которых хранится сертификат и файл электронной подписи.

При использовании носителей такого типа контейнер с сертификатом и цифровой подписью создается программным СКЗИ (КриптоПро CSP). В дальнейшем такой контейнер записывается на пассивный носитель, а криптопровайдер получает к нему доступ по необходимости. Например, если нужно подписать доверенность, в ПК вставляют накопитель с ЭЦП, СКЗИ запрашивает доступ к носителю и после авторизации СКЗИ просто копирует цифровую подпись с носителя. Карточка с ключом требует подключения дополнительного считывателя.

Ключи с пассивных токенов могут быть скопированы. Соответственно, уровень безопасности пассивных носителей низкий. В КриптоПро CSP 4.0/5.0 обеспечена совместимость с пассивными носителями: Актив, Аладдин Р.Д., Контур, Multisoft, NovaCard, Rosan, Alioth, MorphoKST и СмартПарк.

Инструменты для использования

В Крипто Про CSP 5.0 включен программный комплекс «Инструменты Крипто Про» («CryptoPro Tools»). Это комплект инструментов для выполнения различных задач в единой графической оболочке.

С «Инструменты КриптоПро» можно:

  • управлять контейнерами и сертифицировать КЭП;
  • создавать и проверять CMS-подписи под файлами;
  • регистрировать облачные контейнеры, хранящиеся в Крипто Про DSS;
  • отображать информацию о провайдере и лицензии и выполнять некоторые настройки.

Список функций на вкладках программы:

  1. В категории «Общее» отображается информация об установленном криптопровайдере, версия ПО, срок действия лицензии.

    типы ключей криптопро

  2. Вкладка «Облачный провайдер» нужна для регистрации облачных хранилищ с токенами ЭЦП и установки сертификатов для этих серверов.

    типы ключей криптопро

  3. На вкладке «Контейнеры» отображаются все виды сгенерированных контейнеров с подписями и сертификатами. В графе «Считыватель» можно определить, к какому типу носителей относится контейнер. Например, «CLOUD» обозначает, что контейнер сгенерирован облачным носителем токенов. 

    Здесь же можно выполнять операции с контейнерами:

    – протестировать сохраненные контейнеры на работоспособность;
    – сохранить нужный сертификат из контейнера в общее хранилище;
    – создать копию имеющегося контейнера;
    – сменить пароль доступа к контейнеру;
    – удалить ненужный контейнер.

  4. Категория меню «Сертификаты» содержит данные об имеющихся в хранилище сертификатах, которые можно удалять либо экспортировать на пассивный носитель.

    типы ключей криптопро

  5. Вкладка «Создание подписи» нужна для того, чтобы подписывать электронные документы файлами ЭЦП.

    типы ключей криптопро

  6. На последней вкладке «Проверка подписи» можно протестировать подписанный файл на соответствие ключу ЭЦП.

    типы ключей криптопро

  7. Если выбрать пункт «Показать расширенные», отобразятся дополнительные пункты меню. Первый из них – «Управление носителями» – позволяет:

    – менять ПИН-код носителя;
    – менять аварийный код, который нужен для разблокировки носителя, если PIN-код был введен неправильно несколько раз и заблокировался;
    – сбрасывать все настройки криптопровайдера к заводским, когда удаляются все пользовательские данные.

  8. Последний пункт меню «Настройки» позволяет:

    – устанавливать предельные интервалы времени, в течение которых происходит обращение к DSS-серверу;
    – стирать записи обо всех сохраненных паролях;
    – изменять настройки для сканеров, считывающих подписи, которые вводятся от руки.

    типы ключей криптопро

Какие ПО поддерживает

С КриптоПро CSP в режиме криптографической защиты информации могут работать такие приложения:

  • Microsoft Office;
  • программный сервис для почтовых переписок Microsoft Exchange;
  • почтовый клиент Microsoft Outlook;
  • все виды ПО от компании Adobe;
  • все браузеры, построенные на платформе Chromium base (Яндекс.Браузер, Internet Explorer, Mozilla Firefox);
  • Microsoft Authenticode;
  • платформы для управления: Microsoft IIS, Nginx, Apache;
  • виртуальная среда удаленного управления ПК Microsoft Remote Desktop Services; 
  • Microsoft Active Directory.
     

КриптоПро СКЗИ устанавливают на большинство существующих аппаратных платформ. Под аппаратной платформой подразумевается центральный процессор, установленный на материнскую плату рабочей машины, где запускается криптопровайдер.

Поддерживаемые типы процессоров:

  • решения корпораций Интел и АМД;
  • PowerPC;
  • экономичные АРМ (Байкал-М, Apple M1);
  • МИПС (Байкал-Т);
  • VLIW (Эльбрус);
  • СПАРК.
     

Если предполагается работа в виртуальных средах, программный СКЗИ поддерживает такие инструменты виртуализации:

  • Microsoft Hyper-V;
  • VMWare;
  • Oracle Virtual Box;
  • RHEV.

Кстати! Под виртуальными средами подразумеваются программы, которые имитируют рабочий ПК. Например, на основном компьютере пользователя установлена ОС Linux. Если оператор запустит среду виртуализации, он сможет создать в ней программную имитацию ПК с установленной ОС Windows и своим набором программ. На одном физическом компьютере может быть создано множество виртуальных ПК, которые могут взаимодействовать со всеми интерфейсами подключения, внешними носителями точно так же, как и основное устройство.

С какими продуктами компании совместима программа

КриптоПро CSP имеет полную совместимость со всеми остальными продуктами компании:

  1. Удостоверяющий центр.
  2. Службы удостоверяющего центра.
  3. Электронная цифровая подпись.
  4. IPsec.
  5. EFS.
  6. NET.
  7. Java CSP.
  8. Vipnet.
  9. NGate (N Gate).

В какие программы встраивается

КриптоПро CSP может быть встроена в любые приложения, построенные на платформах:

  • Microsoft CryptoAPI;
  • PKCS#11;
  • OpenSSL engine;
  • Java CSP (Java Cryptography Architecture);
  • Qt SSL.
     

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

Извлекаемые ключи

Создаются с помощью программного ГОСТ-криптопровайдера, который устанавливается в операционную систему (ОС).

Контейнеры ГОСТ-криптопровайдеров можно хранить в виде файлов на флеш-накопителях, жестком диске и реестре компьютера или на специализированном ключевом носителе, защищенном PIN-кодом.

Когда ключевые контейнеры хранятся как обычные файлы, возможности анализа, копирования или удаления никак не ограничены, а значит скопировать и удалить их может кто угодно. Поэтому безопаснее хранить ключевые контейнеры на специализированном, защищенном ключевом носителе (смарт-карте или токене), защищенном PIN-кодом. Именно этот вариант мы и будем рассматривать дальше.

Чтобы криптопровайдер (СКЗИ) смог получить доступ к содержимому защищенного ключевого носителя, нужно физически иметь в распоряжении ключевой носитель и знать PIN-код. Все операции с закрытым ключом выполняются в оперативной памяти компьютера.

Т. е. во время операций с закрытым ключом, после ввода правильного PIN-кода, закрытый ключ временно извлекается в оперативную память компьютера.

Таким образом, извлекаемые экпортируемые ключи — это ключи, которые можно скопировать на другой носитель средствами программного криптопровайдера.

А извлекаемые неэкспортируемые ключи — это ключи с запретом копирования стандартными средствами программного криптопровайдера.

Читайте также:  Доверенность на участие в электронных торгах по 44-ФЗ образец 2023 г

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

Инструкции

Чтобы начать полноценно пользоваться программным СКЗИ на своем ПК, нужно:

  • установить криптопровайдер;
  • выполнить регистрацию и настройки ПО;
  • сгенерировать ключи ЭЦП;
  • создать активный или пассивный носитель ключа с сертификатом либо отправить ЭЦП в облачное хранилище.

Установка

Установка СКЗИ КриптоПро может выполняться двумя способами:

  1. На официальном сайте компании скачать установочный дистрибутив программы.
  2. Запустить мастера установки из СБИС, если на ПК не установлено других криптоарм.

Обратите внимание! На сайте разработчика опубликовано полное руководство пользователя CryptoPro CSP, в состав которого включено не только описание процесса установки, но и нюансы настройки программы. Формуляр может быть скачан в формате PDF.

Рассмотрим первый вариант:

  1. Необходимо скачать с официального сайта установочный файл программы и запустить его. В открывшемся окне мастера установки нажать кнопку «Далее».

    типы ключей криптопро

  2. Ознакомиться с текстом лицензионного соглашения в новом окне, отметить пункт «Я принимаю условия …» и нажать кнопку «Далее».

    типы ключей криптопро

  3. В форме «Сведения о пользователе» указать регистрационные данные и серийный номер программы. Если для ПО уже приобретена лицензия, ее номер будет указан в электронной почте от разработчика криптопровайдера. Без регистрационного номера программа установится в демонстрационном режиме. Нажимаем «Далее».

    типы ключей криптопро

  4. В окне «Вид установки» отмечаем пункт «Обычная». Нажимаем «Далее».

    типы ключей криптопро

  5. В открывшемся окне нажимаем кнопку «Установить» и дожидаемся завершения процесса установки программы.

    типы ключей криптопро

  6. Когда установка завершится, на экране появится соответствующее уведомление. В открывшемся окне нажимаем кнопку «Готово».

    типы ключей криптопро

  7. Далее появится отдельное окно с требованием перезагрузить ПК. Перезагружаем.

    типы ключей криптопро

Настройки

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

  • регистрация ПО;
  • изменение набора устройств считывания ключевой информации;
  • изменение набора устройств хранения ключевой информации;
  • настройка датчиков случайных чисел;
  • установка времени ожидания ввода пароля доступа к ключевому контейнеру;
  • установка параметров криптографических алгоритмов.

Регистрация

Серийный номер программного СКЗИ нужно вводить отдельно, если регистрация криптопровайдера не была выполнена на стадии установки. Краткая инструкция по регистрации КриптоПро CSP:

  1. Переходим в меню Пуск компьютера и в строке поиска вписываем запрос «панель…». В результатах поиска отобразится приложение «Панель управления», которое нужно запустить.

    типы ключей криптопро

  2. В открывшемся окне с заголовком «Панель управления» должен отображаться пункт «КриптоПро CSP». 

    типы ключей криптопро

  3. Выбираем пункт «КриптоПро CSP». В открывшемся окне на вкладке «Общие» нажимаем кнопку «Ввод лицензии». Вводим регистрационные данные и серийный номер, подтверждаем внесение сведений кнопкой «Ок».

    типы ключей криптопро

  4. Если информация была указана верно, в графе «Срок действия» в блоке «Лицензия» на вкладке «Общие» отобразится период действия оплаченной версии программы либо появится отметка «Бессрочная».

Изменение набора устройств считывания ключевой информации

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

  1. Пройти по пути: Пуск/ Панель инструментов/ КриптоПро CSP и в открывшемся окне выбрать вкладку «Оборудование». Выбрать пункт «Настроить считыватели».

    типы ключей криптопро

  2. В новом окне отобразятся все установленные типы считывателей. Для добавления нового считывателя нажимаем кнопку «Добавить».

    типы ключей криптопро

  3. Запустится «Мастер установки считывателя». Нажимаем кнопку «Далее».

    типы ключей криптопро

  4. В следующем окне выбираем производителя считывающего устройства и модель. Подтверждаем выбор кнопкой «Далее».

    типы ключей криптопро

  5. Выбираем тип соединения, посредством которого считывающее устройство подключено к ПК.

    типы ключей криптопро

  6. Если необходимо, меняем имя считывателя.

    типы ключей криптопро

  7. Если операция прошла успешно, появится окно завершения работы мастера.

    типы ключей криптопро

    Обратите внимание! Удаление считывающих устройств происходит гораздо быстрее. Достаточно подтвердить удаление в диалоговом окне.

    типы ключей криптопро

    В окне свойств считывателя отобразится его состояние, производитель и версия.

    типы ключей криптопро

Изменение набора устройств хранения ключевой информации

Устройства хранения ключевой информации, как и считыватели, можно добавлять в систему, удалять либо просматривать их свойства. Краткая инструкция по добавлению устройств хранения:

  1. Необходимо пройти по пути: Пуск/ Панель инструментов/ КриптоПро CSP и в открывшемся окне выбрать вкладку «Оборудование». Далее выбрать пункт «Настроить типы носителей».

    типы ключей криптопро

  2. Отобразится окно со списком установленных ключевых носителей. Нажимаем кнопку «Добавить».

    типы ключей криптопро

  3. Откроется окно мастера установки. Нажимаем кнопку «Далее».

    типы ключей криптопро

  4. Выбираем производителя и модель ключевого носителя, нажимаем «Далее».

    типы ключей криптопро

  5. Меняем при необходимости имя ключевого носителя.

    типы ключей криптопро

  6. Система может отобразить дополнительные окна в зависимости от типа ключевого носителя. Так, для MPCOS/EMV будет отображено окно «Разметка карты». В этом окне указывают разметку карты и нажимают кнопку «Далее».

    типы ключей криптопро

  7. Если данные введены корректно, мастер настройки завершит работу.

    типы ключей криптопро

Настройка датчиков случайных чисел

Датчики случайных чисел можно добавлять в систему, удалять, либо просматривать их свойства. Для добавления датчиков случайных чисел необходимо:

  1. Пройти по пути: Пуск/ Панель инструментов/ КриптоПро CSP и в открывшемся окне выбрать вкладку «Оборудование». Далее выбрать пункт «Настроить ДСЧ».

    типы ключей криптопро

  2. Отобразится окно со списком установленных ключевых носителей. Нажимаем кнопку «Добавить». Запустится мастер установки ДСЧ. Подтверждаем все действия кнопкой «Далее».

    типы ключей криптопро

  3. Выбрать производителя и модель ДСЧ.

    типы ключей криптопро

  4. Поменять имя ДСЧ, если необходимо.

    типы ключей криптопро

  5. После подтверждения введенного имени мастер установки ДСЧ завершит работу.

    типы ключей криптопро

Установка времени ожидания ввода пароля доступа к ключевому контейнеру

Пользователь криптопровайдера может настроить интервал, в течение которого СКЗИ будет отображать окно ввода логина и пароля для доступа к системе. Для изменения времени ожидания ввода данных необходимо:

  1. Пройти по пути: Пуск/ Панель инструментов/ КриптоПро CSP и в открывшемся окне выбрать вкладку «Дополнительно». Далее нажать кнопку «Установить время ожидания ввода…».

    типы ключей криптопро

  2. В открывшемся окне выбрать один из доступных вариантов. Чтобы окно не закрывалось, необходимо поставить отметку возле строки «Установить бесконечное ожидание». По умолчанию СКЗИ будет закрывать окно через тот же промежуток времени, что и ОС компьютера. Подтверждаем действие кнопкой «Ок».

    типы ключей криптопро

Установка параметров криптографических алгоритмов

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

  1. Переходим в Пуск/ Панель инструментов/ КриптоПро CSP и в новом окне выбираем вкладку «Алгоритмы». Здесь отобразятся все виды механизмов защиты, которые используются для хэширования, шифрования, электронных подписей и обмена информацией с активными носителями токенов.

    типы ключей криптопро

  2. Вносим нужные настройки по типам применяемых алгоритмов, выбирая пункты в выпадающих списках. Действия подтверждаем кнопкой «Ок».

Работа с ключевыми контейнерами и сертификатами

У оператора криптопровайдера должен иметься доступ к управлению контейнерами и сертификатами. Это нужно для обеспечения нормального функционирования СКЗИ, чтобы файлы ЭЦП соответствовали сертификатам, которые к ним прикреплены. На вкладке Сервис в свойствах КриптоПро CSP можно выполнять такие операции:

  •  копировать и удалять закрытые ключи, которые помещены в существующие контейнеры;
  • тестировать работу и просматривать свойства сертификатов в существующих контейнерах;
  • просматривать и устанавливать сертификаты, помещенные в существующие контейнеры закрытых ключей на носителях;
  • создавать связки между сертификатами из файлов и контейнерами закрытых ключей на носителях;
  • оперировать установленными паролями для доступа к хранилищам ключей;
  • удалять сохраненную информацию обо всех носителях с токенами, которые подключались к ПК.

Создание ключевого контейнера

Создать новый ключевой носитель в КриптоПро CSP можно следующим образом:

  1. При первом запуске программы, когда ключевые носители еще не созданы, отобразится окно для выбора чистого контейнера, куда будут записаны нужные данные. Также это меню можно вызвать из программы «Инструменты КриптоПро».

    типы ключей криптопро

  2. Когда носитель будет выбран в списке, а действие подтверждено кнопкой «ОК», появится окно с генерацией последовательности при помощи ДСЧ (датчика случайных чисел). Если к СКЗИ не подключены сторонние устройства, выполняющие эту задачу, по умолчанию будет использоваться системный «Биологический» датчик. 

    типы ключей криптопро

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

  3. Когда случайная последовательность будет создана, необходимо защитить носитель паролем.

    типы ключей криптопро

Копирование и удаление ключевого контейнера

Для копирования контейнера закрытого ключа (то есть для создания копии носителя с токеном) нужно выполнить такой порядок действий:

  1. Открыть окно настроек КриптоПро в Панели управления ПК, выбрать вкладку Сервис, нажать на кнопку «Скопировать…» в блоке «Контейнер закрытого ключа».

    типы ключей криптопро

  2. Откроется окно «Копирование контейнера закрытого ключа». 

    типы ключей криптопро

  3. В строке «Имя» ввести вручную имя носителя, который нужно скопировать, либо выбрать из списка.

    типы ключей криптопро

  4. После выбора нужного ключа нажимаем кнопку «Готово» в окне.

    типы ключей криптопро

  5. В следующем окне нужно выбрать носитель, на который скопируется ключ.

    типы ключей криптопро

  6. После подтверждения кнопкой «ОК» необходимо задать пароль для нового носителя.

    типы ключей криптопро

Для удаления носителя ключа необходимо:

  1. Открыть окно настроек КриптоПро в Панели управления ПК, выбрать вкладку Сервис, нажать на кнопку «Удалить…» в блоке «Контейнер закрытого ключа».

    типы ключей криптопро

  2. В открывшемся окне нужно выбрать контейнер, который подлежит удалению. Для этого можно вписать имя носителя, выбрать контейнер в списке, появляющийся при нажатии кнопок «Обзор» или «По сертификату».

    типы ключей криптопро

  3. После нажатия кнопки «Готово» отобразится окно для подтверждения удаления.

    типы ключей криптопро

Возможные проблемы в работе

Периодически в работе криптопровайдеров случаются такие ошибки:

  • СКЗИ не находит файлы сертификатов, ЭЦП;
  • на экране программы СБИС или аналога отображается сообщение «В системе недействительный сертификат»;
  • криптопровайдер может не находить носители токенов, не определять их подключение;
  • программы для документооборота не видят СКЗИ;
  • не проходит тест соединение между СКЗИ и активными носителями;
  • нет связи с облачным хранилищем;
  • СКЗИ не видит лицензию разработчика.
     

Перечисленные виды ошибок чаще всего решаются такими способами:

  • повторной установкой сертификатов в системе;
  • удалением и повторной активацией ЭЦП в СКЗИ;
  • удалением и повторным подключением носителей к системе, переустановкой драйвера;
  • ремонтом механических повреждений разъемов, куда устанавливаются носители;
  • повторным подключением к облачному хранилищу или решением проблем с интернет-подключением, если не удается считать токены в облаке;
  • переустановкой или повторной настройкой СКЗИ, если СБИС не видит программу;
  • повторной установкой привязки между сертификатами и носителями в сервисной вкладке КриптоПро, в панели управления компьютера;
  • повторным вводом кода лицензии, полученного от разработчика;
  • приобретением лицензии, если срок ее действия истек;
  • обращением в техническую поддержку компании ООО «КриптоПро». 
     

Кроме того, некоторые пользователи на форумах отмечают проблемы в работе СКЗИ на 64-битных версиях операционных систем на ПК и нормальное функционирование на 32-битных ОС.

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

Файл header. key

Из этого файла нам потребуется параметры электронной подписи CryptoProParamSet (подчеркнуто красным).

  • GostR3410_2001_CryptoPro_A_ParamSet — 1.2.643.2.2.35.1
  • GostR3410_2001_CryptoPro_B_ParamSet — 1.2.643.2.2.35.2
  • GostR3410_2001_CryptoPro_C_ParamSet — 1.2.643.2.2.35.3
  • GostR3410_2001_CryptoPro_XchA_ParamSet — 1.2.643.2.2.36.0
  • GostR3410_2001_CryptoPro_XchB_ParamSet — 1.2.643.2.2.36.1

А также первые 8 байт открытого ключа (подчеркнуто) для контроля правильности чтения закрытого.

header.key

Извлекаемые ключи

  • СКЗИ КриптоПро CSP версии 4.0 и новее. При генерации нужно выбрать “режим CSP”. Ключи будут созданы в защищённой памяти любой из моделей Рутокен. 
  • СКЗИ VipNet CSP или Signal-COM CSP, режим выбирать не надо: извлекаемые ключи будут созданы на пассивных ключевых носителях. 

ФКН-ключи

Для того, чтобы сгенерировать ключи ФКН с защитой канала нужно использовать модели линейки Рутокен ЭЦП 3.0 – именно эти модели имеют поддержку протокола SESPAKE. Важно так же, что для работы и генерации ключей в таком формате подойдет версия КриптоПро CSP 5.0 и новее.

Главные функции

Защита информации

Защита информации

Программа защищает ЭП от вредоносных вирусов и несанкционированного взлома

Создание ключей шифрования

Создание ключей шифрования

Допускается использование разных типов носителей

Формирование ПИН-кода

Формирование ПИН-кода

Эта функция используется, чтобы обеспечить пользователя дополнительной защитой и усложнить работу злоумышленнику

Защита информации от случайных  или преднамеренных потерь

Защита информации от случайных или преднамеренных потерь

Последние версии КриптоПро показали надежность софта

Защита от вредоносного кода  и целенаправленного взлома

Защита от вредоносного кода и целенаправленного взлома

Оцените статью
ЭЦП Эксперт
Добавить комментарий