Дмитрий Державин, Базальт СПО, версия 72, 01:08, 10 января 2017 (MSK), , обратная связь.
Вниманию читателей предлагается исследовательская работа, в ходе которой выявлен ряд проблем с применением средств ЭЦП, возникающих у пользователей Linux. В частности, выяснились следующие не вполне очевидные моменты:
- возможность получить и использовать персональный сертификат электронной цифровой подписи для доступа к государственным услугам на сегодняшний день предоставляется только за плату коммерческими организациями;
- носители данных электронной подписи, выданные конечным пользователям разными уполномоченными организациями, могут быть несовместимы как между собой, так и с порталами, предоставляющими доступ к услугам, в том числе — к государственным;
- уровень защищённости носителей данных электронной подписи, массово выдаваемых конечным пользователям, как правило, существенно снижен по отношению к доступному на сегодняшний день технологическому уровню;
- для большинства пользователей ОС из Реестра отечественного ПО механизмы ЭЦП на Едином портале государственных услуг недоступны из-за несовместимости программного обеспечения ЕПГУ и ПО уполномоченных организаций, выдающих персональные сертификаты электронной подписи;
- в некоторых случаях разработчики порталов, предоставляющих государственные услуги, рекомендуют использовать не входящие в Реестр операционные системы, а также программные средства и конфигурации, заведомо снижающие защищённость пользовательских данных.
Авторы работы рассчитывают, что полученные результаты будут полезны пользователям решений, задействующих механизмы ЭЦП, интеграторам, внедряющим соответствующие решения, а также будут приняты во внимание организациями, отвечающими за предоставление государственных информационных услуг и за реализацию конкретных механизмов инфраструктуры ЭЦП, а также разработчиками соответствующего программного и аппаратного обеспечения.
Статья посвящена поддержке электронной цифровой подписи (ЭЦП) документов в ОС ALT, а также специфике применения ЭЦП в Российской федерации.
На эту тему уже проведён ряд исследовательских работ, результатом которых стало заключение о том, что, в принципе, всё работает. Здесь важно понимать, что большинство исследований совместимости с порталами государственных услуг РФ современных криптосредств, работающих под ОС Linux, проводилось в лабораторных условиях. Например, при наличии специальных договорённостей между исследователем и удостоверяющим центром, выдающим сертификат. К сожалению, по результатам таких работ о реальных возможностях лиц, действующих на общих основаниях, судить сложно.
Для того, чтобы зайти на сайт, не вводя при этом логин и пароль, а просто подсоединив к разъёму USB аппаратный токен, необходимо, чтобы в операционной системе корректно работал специализированный стек программных средств: обеспечивалась бы поддержка физических устройств, криптографических алгоритмов, программных интерфейсов, форматов и протоколов обмена данными. При этом совместимость криптографических алгоритмов, форматов и протоколов должна обеспечиваться также и за пределами области ответственности ОС — в удостоверяющем центре, выдающем сертификат, и на сайте, доступ к которому необходимо обеспечить.
Содержание
- 1
Инструменты пользователя
- 2
Сайты
- 3
Доступ к сайту Госуслуг
- 4
Доступ к электронным торговым площадкам
Основные механизмы
В основе технологии ЭЦП, официально применяемой в РФ, находится инфраструктура открытых ключей. Рассмотрим её работу на примере.
Подпись документа
Итак, для формирования электронной подписи в инфраструктуре открытых ключей применяется асимметричная схема шифрования, для которой характерно использование пары ключей. То, что зашифровано одним из этих ключей, может быть расшифровано только другим ключом пары. Один из ключей пары называется секретным, или закрытым, и хранится максимально скрытно, другой называется публичным, или открытым, и свободно распространяется — как правило, в составе сертификата. Кроме ключа в состав сертификата электронной подписи входит информация о владельце сертификата, а также подпись ключа совместно с информацией о владельце, сделанная некоей доверенной стороной. Таким образом, в составе сертификата уже находится электронная подпись, подтверждающая соответствие информации о владельце его паре ключей.
У удостоверяющего центра для подписи клиентских сертификатов тоже есть пара ключей. Подтверждённая информация о владельце сертификата в виде специальным образом оформленной таблицы объединяется в один документ с его публичным ключом. Этот документ затем проходит через два преобразования. Сначала с помощью функции хэширования документ превращается в уникальную последовательность символов фиксированной длины (хэш). Далее полученный хэш шифруется закрытым ключом удостоверяющего центра. Результат шифрования и есть собственно электронная подпись. Она прикрепляется к подписанному документу, в данном случае — информации о пользователе и его ключу, и распространяется вместе с ним. Всё это вместе — документ с информацией о пользователе и его публичным ключом, а также подпись этого документа публичным ключом УЦ, оформляется специальным образом и называется сертификатом пользователя.
Проверка подписи
Как обычно происходит в случае асимметричного шифрования — то, что зашифровано одним ключом, может быть расшифровано только другим ключом пары. Так, в случае сертификата, зашифрованный хэш документа, содержащего публичный ключ пользователя и подтверждённую информацию о пользователе, может быть расшифрован с помощью открытого ключа удостоверяющего центра, который свободно распространяется в составе сертификата удостоверяющего центра. Таким образом, любой, кто получит сертификат УЦ, сможет получить из пользовательского сертификата расшифрованный хэш. Так как функция хэширования даёт уникальный результат, применив её к документу, содержащему публичный ключ пользователя и информацию о нём, можно проверить, будут ли соответствовать друг другу эти два хэша. Если будут, значит перед нами тот же самый документ, который был подписан удостоверяющим центром, и информации, содержащейся в нём, можно верить. Если нет, значит подпись не соответствует документу, и перед нами подделка.
Кроме информации о пользователе и его публичного ключа, в состав сертификата входят некоторые дополнительные данные — в частности, срок действия сертификата. Если срок действия хотя бы одного сертификата в цепочке истёк, подпись считается недействительной.
Услуги удостоверяющих центров
Итак, удостоверяющий центр своей подписью подтверждает соответствие некоего публичного ключа некоему набору записей. Теоретически затраты УЦ на подпись одного сертификата близки к нулю: собственно подпись представляет собой хорошо автоматизируемую, не очень затратную на современном оборудовании вычислительную операцию. При этом услуги УЦ платны. Но, в отличие от УЦ, выдающих сертификаты для сайтов, здесь деньги делаются не совсем «из воздуха».
Второе слагаемое стоимости сертификата появляется, когда пользователь хочет с помощью своего сертификата, например, работать на электронных торговых площадках. Согласно действующему регламенту, сайт электронной торговой площадки аутентифицирует клиента при соблюдении уже двух условий: во-первых, естественно, если срок действия сертификата не истёк, сертификат не отозван и подпись его валидна. А во-вторых, если в сертификате явно указано, что он предназначен для работы на конкретной площадке. Запись об этом выглядит как обычная запись в той же таблице, в которой хранятся остальные данные сертификата. Вот за каждую такую запись в каждом пользовательском сертификате удостоверяющий центр отдаёт определённую сумму. Которую и стремится компенсировать за счёт владельца сертификата. Поэтому сертификаты, дающие возможность входа на электронные торговые площадки, сто́ят дороже.
Угрозы и атаки
В отличие от шифрования, в случае электронной подписи основная задача атакующего сводится не к получению расшифрованного текста, а к возможности подделать или произвести электронную подпись произвольного документа. То есть, условно говоря, не к расшифрованию, а к зашифрованию. Условно — потому что современные специализированные алгоритмы ЭЦП, как уже говорилось выше, не шифруют хэш документа, а выполняют над ним близкие по смыслу, но отличающиеся технически математические операции.
Таким образом, в случае электронной подписи основные векторы атаки направлены на получение атакующим секретного ключа. Если ключ хранится в файле на диске, украсть его можно в любой момент, получив соответствующий доступ на чтение. Например, с помощью вируса. Если ключ хранится в зашифрованном виде, получить его можно в момент применения — например, когда программа, выполняющая электронную подпись, уже расшифровала ключ и обрабатывает им данные. В данном случае задача существенно усложняется — нужно найти уязвимость в программе, или ключ придётся расшифровывать самостоятельно. Несмотря на существенное усложнение задачи, она по-прежнему остаётся вполне реальной. Для специалистов в соответствующей области она относится к категории рутинных.
Здесь опять таки уместна аналогия с банковской картой, которая является средством аутентификации для доступа к банковскому счёту. Пока она у владельца, он спокоен. Если карта теряется — нужно срочно её заблокировать. Задача злоумышленника при этом — не украсть карту, а незаметно сделать её копию, чтобы владелец не заблокировал доступ. Для современных аппаратных токенов способы клонирования на текущий момент неизвестны.
Токены
В данный момент общепринятый термин для обозначения отдельных физических устройств, используемых для хранения ключей электронной подписи — токен. Токены могут подключаться к компьютеру через интерфейсы USB, Bluetooth, или через специальные устройства-считыватели. Большинство современных токенов используют интерфейс USB. Но главное различие между типами токенов не в интерфейсе подключения. Токены можно разделить на два типа — те, которые используются фактически только как хранилище ключей, и те, которые «умеют» выполнять криптографические операции собственными средствами.
Токены второго типа называются аппаратными, и основное их отличие в том, что секретный ключ является неизвлекаемым — он никогда не покидает пределов токена. Для этого на токене размещается специальный набор программного обеспечения, который активируется в момент подключения токена к компьютеру. По сути такой токен представляет собой самостоятельное вычислительное устройство со своим процессором, памятью и приложениями, которое обменивается данными с компьютером.
Одной из основных характеристик аппаратного токена является набор поддерживаемых криптографических алгоритмов. Например, если мы хотим использовать аппаратный токен для аутентификации на своём домашнем компьютере, подойдёт любой современный токен. А если мы хотим аутентифицироваться на портале Госуслуг, то необходим токен, поддерживающий сертифицированные в России криптографические алгоритмы.
Видно, что список поддерживаемых механизмов для eToken очень длинный, но не включает алгоритмы ГОСТ. Список поддерживаемых механизмов JaCarta включает только алгоритмы ГОСТ, но зато в объёме, необходимом для реализации функциональности ЭЦП на аппаратном токене.
В качестве примеров исключительно программных токенов можно привести «Рутокен S» и «Рутокен Lite». В качестве примеров аппаратных токенов, не поддерживающих сертифицированные в России криптографические алгоритмы, — устройства «eToken»; в качестве поддерживающих российскую криптографию — «Рутокен ЭЦП», «JaCarta ГОСТ».
Криптопровайдеры
Программное обеспечение, предоставляющее оператору доступ к криптографическим функциям — электронной подписи, зашифрованию, расшифрованию, хэшированию — называется криптопровайдером, провайдером криптографических функций. В случае аппаратного токена криптопровайдер реализован непосредственно на токене, в случае программного токена или в случае хранения ключей на диске компьютера — в виде обычного пользовательского приложения.
К сертифицированным на территории Российской Федерации для ЭЦП криптопровайдерам относятся, в частности: «Рутокен ЭЦП», «JaCarta ГОСТ», «КриптоПро CSP», «ЛИССИ-CSP», «VipNet CSP». Первые два реализованы непосредственно на аппаратных токенах, остальные — в виде пользовательских приложений. Важно понимать, что при приобретении сертифицированного в РФ аппаратного токена мы уже приобретаем сертифицированный в РФ криптопровайдер, и необходимости — технологической и юридической — в покупке ещё одного криптопровайдера нет.
Кроме термина «криптопровайдер» существует ещё один близкий по смыслу термин — «средство криптографической защиты информации» (СКЗИ). Чёткого различия между этими двумя понятиями нет. Первый термин менее официальный, второй чаще используется применительно к сертифицированным техническим решениям. Так как в данном документе, в основном, описываются технологические, а не формальные аспекты, мы чаще будем пользоваться термином «криптопровайдер».
Реализация механизмов
Алгоритмы электронной подписи
В данный момент в Российской Федерации для квалифицированной электронной подписи официально разрешено использовать только два алгоритма подписи и два алгоритма хэширования. До конца 2017 года разрешено использовать ГОСТ Р 34.10-2001 совместно с алгоритмом хэширования ГОСТ Р 34.11-94. С начала 2018 года разрешено использовать только ГОСТ Р 34.10-2012 и хэши по ГОСТ Р 34.11-2012. В ситуациях, когда не требуется обязательное использование алгоритмов ГОСТ, можно пользоваться любыми доступными алгоритмами.
Необходимость применения российских алгоритмов при взаимодействии с государственными структурами обусловлена вовсе не желанием ограничить граждан в выборе. Причина в том, что государство, вложившись в разработку этих алгоритмов, отвечает за их криптостойкость и отсутствие в них недекларированных возможностей. Все стандартизированные в РФ криптографические алгоритмы неоднократно проходили независимый аудит и убедительно доказали свою состоятельность. То же самое можно сказать и по поводу многих других распространённых криптографических алгоритмов. Но, к сожалению, отсутствие в них недекларированных возможностей с такой же лёгкостью доказать нельзя. Вполне понятно, что с точки зрения государства, неразумно использовать недоверенные средства, например, для обработки персональных данных граждан.
Интерфейсы, форматы и протоколы
Для обеспечения совместимости при работе с электронной подписью выработан ряд международных стандартов, касающихся хранения данных и предоставления к ним доступа. К основным стандартам относятся:
- PC/SC — низкоуровневый интерфейс доступа к криптографическим устройствам, в том числе — программным и аппаратным токенам;
- PKCS#11 — высокоуровневый интерфейс для взаимодействия с аппаратными криптографическими модулями, можно рассматривать как унифицированный интерфейс доступа к криптопровайдерам;
- PKCS#15 — формат контейнера с ключами электронной подписи, предназначенный для хранения на физическом устройстве;
- PKCS#12, PEM — форматы контейнеров с ключами электронной подписи предназначенные для хранения в файлах, бинарных и текстовых соответственно;
- PKCS#10 — формат документа — запроса на подпись, отправляемого клиентом в УЦ для получения подписанного сертификата.
Важно понимать, что такие стандарты, как PKCS#11 или PKCS#15 первоначально разрабатывались без учёта специфики сертифицированных в Российской федерации криптосредств. Поэтому для реализации полноценной поддержки отечественной криптографии стандарты пришлось, и приходится, дорабатывать. Процесс принятия поправок к стандартам долгий, поэтому, пока доработанные стандарты не были окончательно приняты, появились их реализации, несовместимые между собой. В том числе, это касается сертифицированных в РФ криптопровайдеров. Так, сейчас все сертифицированные криптопровайдеры имеют несовместимые между собой реализации контейнера для хранения ключей на токене. Что касается стандартов обмена данными — PKCS#10, PKCS#12, PEM — их реализации, к счастью, обычно между собой совместимы. Также, обычно не возникает разночтений в трактовке стандарта PC/SC.
Программная часть
Программный стек для работы с электронной подписью состоит из следующих компонентов:
- реализации интерфейса для низкоуровневого доступа к хранилищам контейнеров с ключами — например, интерфейса PC/SC для доступа к физическим устройствам — токенам;
- модуля, реализующего интерфейс PKCS#11 для взаимодействия с криптопровайдером — например, выполненном на аппаратном токене;
- криптопровайдера, реализующего соответствующие криптографические алгоритмы и выполняющего действия с ними — например, электронную подпись или шифрование данных;
- пользовательского приложения, взаимодействующего с другой — по отношению к криптопровайдеру — стороны с модулем PKCS#11, и выполняющего от имени пользователя такие операции, как электронная подпись или аутентификация.
Пример стека:
- открытое программное обеспечение pcsc-lite реализует интерфейс PC/SC для взаимодействия с аппаратным токеном «Рутокен ЭЦП»;
- библиотека libcppksc11.so из состава ПО «КриптоПро CSP» обеспечивает взаимодействие с размещённым на токене контейнером, в котором хранится закрытый ключ и сертификат пользователя;
- приложение командной строки cryptcp из состава ПО «КриптоПро CSP» взаимодействует с библиотекой libcppksc11.so через интерфейс PKCS#11 и осуществляет возможность подписания документов секретным ключом пользователя; при этом функции криптопровайдера полностью реализованы в компонентах ПО «КриптоПро CSP», криптопровайдер аппаратного токена не задействуется.
Другой пример:
- открытое программное обеспечение pcsc-lite реализует интерфейс PC/SC для взаимодействия с аппаратным токеном «Рутокен ЭЦП»;
- библиотека libcppksc11.so из состава ПО «КриптоПро CSP» обеспечивает взаимодействие с размещённым на токене контейнером, в котором хранится закрытый ключ и сертификат пользователя;
- приложение «КриптоПро ЭЦП Browser plugin», работающее в составе html-браузера Firefox взаимодействует с библиотекой libcppksc11.so через интерфейс PKCS#11 и осуществляет возможность подписания документов в интерфейсе браузера на сайтах электронных торговых площадок; при этом функции криптопровайдера полностью реализованы в компонентах ПО «КриптоПро CSP», криптопровайдер аппаратного токена не задействуется.
Третий пример:
- открытое программное обеспечение pcsc-lite реализует интерфейс PC/SC для взаимодействия с аппаратным токеном «Рутокен ЭЦП»;
- библиотека librtpksc11.so производства компании «Актив» обеспечивает взаимодействие с криптопровайдером токена;
- криптопровайдер токена осуществляет функции подписи секретным ключом передаваемых ему данных; секретный ключ при этом не покидает пределов токена;
- приложение «Рутокен Плагин», работающее в составе html-браузера Firefox взаимодействует с библиотекой librtpksc11.so через интерфейс PKCS#11 и осуществляет возможность подписания документов в интерфейсе браузера на совместимых сайтах; при этом функции криптопровайдера полностью реализованы на аппаратном токене.
Выбор конкретной реализации стека в данный момент определяется, в первую очередь, тремя факторами — предполагаемой областью применения ЭЦП, уровнем технической грамотности пользователя и готовностью удостоверяющего центра работать с запросом на подпись сертификата.
Если удостоверяющий центр, в котором мы планируем получить сертификат, не готов работать с запросами на подпись в формате PKCS#10 и умеет работать только с программными токенами (то есть, воспринимает любой токен как программный), у нас не остаётся выбора. Как правило, в этом случае ПО УЦ сгенерирует для нас пару ключей, запишет её на токен, тут же сгенерирует на базе открытого ключа и наших персональных данных запрос на подпись, подпишет его, и сохранит сертификат на токене. Сертификат и ключ при этом будут находиться в контейнере закрытого формата, известного только разработчику ПО УЦ. Соответственно, для доступа к контейнеру с ключами придётся покупать криптопровайдер того же разработчика. И область применения ЭЦП будет ограничена возможностями ПО одного конкретного разработчика. Покупать в этом случае аппаратный токен смысла нет — можно обойтись программным. Токен в этом случае обязательно придётся нести в УЦ.
К сожалению, очень немногие УЦ в данный момент (конец 2016 года) готовы работать с запросом на подпись. Отчасти такая ситуация обусловлена недостаточным уровнем технической подготовки пользователей, которые не в состоянии проследить за тем, чтобы запрос на подпись был оформлен надлежащим образом — с указанием всех необходимых атрибутов и их значений. На решение этой проблемы направлено, в том числе, данное руководство.
Аппаратная часть
Среди представленных на российском рынке токенов можно отметить следующие:
Аппаратные носители с поддержкой российской криптографии: Рутокен ЭЦП, JaСarta ГОСТ, MS_KEY K.
Как видим, списки поддерживаемых криптографических механизмов Рутокен Lite пуст, в отличие от Рутокен ЭЦП, который включает алгоритмы ГОСТ и RSA.
Учитывая относительно невысокие цены на аппаратные токены с поддержкой российской криптографии, можно с уверенностью рекомендовать использовать именно их. Кроме явного преимущества в виде неизвлекаемого секретного ключа, аппаратный токен ещё и включает в себя сертифицированный криптопровайдер. То есть, существует возможность организовать работу с токеном таким образом, что не потребуется дополнительно покупать дорогостоящее ПО.
Инструменты пользователя
Открытые инструменты
Открытое программное обеспечение на текущий момент позволяет реализовать практически полный программный стек для работы с ЭЦП.
PCSC lite
Реализация PC/SC, разработанная в рамках проекта PCSC lite, является эталонной для ОС семейства Linux. Она входит в состав любого из рассматриваемых в настоящем документе вариантов программного стека для работы с ЭЦП. В дальнейшем, если конкретный вариант реализации не указан, будем считать её задействованной по умолчанию.
OpenSC
Библиотека, реализующая интерфейс PKCS#11, а также набор прикладных инструментов, задействующих её функциональность, была разработана в рамках проекта OpenSC. Инструментарием поддерживается множество аппаратных токенов, среди которых Рутокен ЭЦП, поддержка которого была добавлена специалистами компании «Актив», разрабатывающей токены семейства Рутокен.
- инициализировать токен — сбросить настройки к первоначальному состоянию;
- установить PIN-коды администратора и пользователя (если поддерживаются);
- сгенерировать пару ключей (если поддерживается библиотекой PKCS#11);
- импортировать на токен сертификат, подписанный удостоверяющим центром.
Библиотека PKCS#11 из комплекта OpenSC позволяет выполнять на поддерживаемых токенах полный набор операций с электронной подписью. К поддерживаемым токенам относится также Рутокен ЭЦП.
OpenSSL
Чтобы полноценно использовать возможности ЭЦП, кроме собственно библиотеки PKCS#11 должны быть реализованы пользовательские приложения, предоставляющие оператору доступ к функциям библиотеки и возможностям токена. Ярким примером такой реализации является открытое ПО из проекта OpenSSL. В нём поддерживаются, в частности, следующие функции:
- зашифрование данных;
- расшифрование данных;
- подпись документа;
- проверка подписи;
- формирование запроса на подпись сертификата;
- импорт сертификата;
- экспорт сертификата.
Кроме того, с помощью OpenSSL можно реализовать функциональность полноценного удостоверяющего центра, в том числе:
- выдачу клиентских сертификатов путём подписания запросов на подпись в формате PKCS#10;
- отзыв клиентских сертификатов;
- учёт выданных и отозванных сертификатов.
Единственная на текущий момент недоработка OpenSSL, не позволяющая пока реализовать полнофункциональный вариант программного стека ЭЦП на базе открытого ПО — отсутствие открытого модуля для взаимодействия с библиотеками PKCS#11 с поддержкой алгоритмов ГОСТ. Существует закрытая реализация такого модуля, выполненная в компании «Актив», но она не входит в базовую поставку OpenSSL, и поэтому с выходом новых версий OpenSSL совместимость периодически нарушается. Открытая реализация этого модуля пока не поддерживает алгоритмы ГОСТ.
Firefox
Кроме OpenSSL взаимодействовать с библиотеками PKCS#11 умеет также всем известный html-браузер Firefox. Для подключения библиотеки PKCS#11 нужно зайти в меню управления настройками «Preferences», далее — в вертикальном списке слева выбрать «Advanced», в горизонтальном списке выбрать «Certificates», нажать кнопку «Security Devices», в появившемся диалоговом окне нажать кнопку «Load». Появится ещё одно окно с возможностью выбора пути к файлу с библиотекой PKCS#11 и возможностью ввода локального имени для этой конкретной библиотеки. Можно таким образом загрузить несколько разных модулей PKCS#11 для разных типов физических и виртуальных устройств.
К сожалению, функциональности Firefox пока недостаточно для подписи документов в интерфейсе веб-сайта. Поэтому для полноценного открытого программного стека ЭЦП с поддержкой ГОСТ не хватает ещё подключаемого модуля (плагина), позволяющего обращаться к объектам на токене из ПО сайта. Надеемся, что в ближайшее время такой плагин будет написан. Или открыт.
КриптоПро
Компания «КриптоПро» в настоящий момент является крупнейшим игроком на рынке ПО для ЭЦП в России. Среди её разработок отметим криптопровайдер «КриптоПро CSP», ПО для обеспечения работы УЦ «КриптоПро УЦ» и браузерный плагин «Cades плагин». Популярность решений КриптоПро обусловлена поддержкой со стороны удостоверяющих центров и сайтов электронных торговых площадок.
КриптоПро CSP
Самый популярный сертифицированный криптопровайдер. Поддерживает программные (или аппаратные в режиме программных) токены, инициализированные с помощью него же или с помощью ПО КриптоПро УЦ. Библиотека PKCS#11 из состава КриптоПро CSP поддерживается ПО «Cades плагин» — популярным браузерным плагином. Три перечисленных программных компонента вместе формируют стек, поддерживающий полный набор функций ЭЦП. Закрытое проприетарное ПО, платная лицензия.
Версия под Linux имеет интерфейс командной строки с нестандартным (несовместимым с POSIX.2) синтаксисом. Поддерживается большинство современных дистрибутивов, в том числе ALT.
Сторонние разработчики предпринимают попытки написания графических интерфейсов к КриптоПро CSP, облегчающие проведение рутинных пользовательских операций. Примером такой утилиты может служить rosa-crypto-tool, автоматизирующий подписание и зашифрование документов. Пакет доступен в дистрибутивах ALT.
КриптоПро УЦ
Самое популярное в России ПО для удостоверяющих центров. Для хранения ключей создаёт на токене контейнер собственного закрытого формата. Для работы с контейнером необходимо ПО КриптоПро CSP. Таким образом, после инициализации с помощью КриптоПро УЦ любой современный токен превращается в программный, поддерживаемый единственным совместимым криптопровайдером. Закрытым, требующим покупки лицензии.
Cades плагин
Единственный браузерный плагин для работы с ЭЦП в Linux, поддерживаемый электронными торговыми площадками. Использует для доступа к криптопровайдеру библиотеку PKCS#11 из состава КриптоПро CSP. Соответственно, поддерживает только токены, инициализированные КриптоПро CSP или КриптоПро УЦ.
VipNet
Другой популярный набор из совместимых друг с другом сертифицированного криптопровайдера и ПО УЦ. Умеет работать с аппаратными токенами, но не даёт преимуществ в части поддержки электронных торговых площадок и сайтов государственных услуг. Версия под Linux пока находится на стадии бета-тестирования и не является сертифицированным средством криптографической защиты. Что, кстати, в случае применения аппаратных токенов несущественно.
Инструментарий производства компании «Актив»
Производитель токенов «Рутокен», компания «Актив», помимо большого вклада в открытое программное обеспечение, также разработала собственный полнофункциональный стек программных средств для поддержки ЭЦП, включающий в себя:
- библиотеку PKCS#11, предоставляющую доступ ко всем возможностям токена;
- уже упоминавшийся модуль реализации интерфейса PKCS#11 для OpenSSL с поддержкой ГОСТ;
- «Рутокен Плагин» для html-браузера, в полном объёме поддерживающий функциональность, предоставляемую библиотекой PKCS#11 собственной разработки;
- «Центр регистрации» — набор скриптов, выполняющихся на стороне браузера и работающих через «Рутокен Плагин», позволяющих генерировать ключевые па́ры на аппаратных токенах семейства «Рутокен», а также генерировать запрос на подпись на основе публичного ключа;
- библиотеку PKCS#11, распространяющуюся в составе браузерного плагина «IFCPlugin», предоставляющего возможность в том числе использовать токены семейства «Рутокен» для аутентификации и подписи документов в интерфейсе портала государственных услуг РФ.
Таким образом, компания «Актив» бесплатно предоставляет владельцам токенов «Рутокен» полный набор ПО для работы с электронной подписью.
Инструментарий производства компании «Аладдин Р.Д.»
Компания «Аладдин Р.Д.» — второй производитель сертифицированных в России аппаратных токенов, поддерживающих алгоритмы ГОСТ. Возможности собственного программного обеспечения под Linux ограничиваются графической утилитой на базе ПО SafeNet, позволяющей инициализировать токен и поменять PIN-коды. Библиотека PKCS#11 собственной разработки предоставляет доступ ко всем возможностям аппаратного токена, но, к сожалению через утилиту pkcs11-tool из состава ПО OpenSC бо́льшая часть этих возможностей недоступна. Например, чтобы создать на аппаратном токене ключевую пару, сейчас необходимо пользоваться сторонним ПО типа VipNet CSP или найти в официальном комплекте разработчика (SDK) примеры на языке C, адаптировать их, откомпилировать и запустить. Так же, изучая примеры из SDK, можно сгенерировать запрос на подпись в формате PKCS#10. Таким образом, теоретическая возможность обойтись без покупки дополнительного сертифицированного криптопровайдера существует. На практике эту возможность ещё предстоит проверить.
Инструментарий производства компании «Лисси СОФТ»
Компания «Лисси СОФТ» — ещё один производитель ПО, предлагающий полный набор инструментов для работы с электронной подписью. Кроме ПО для УЦ и традиционных программных криптопровайдеров в арсенале программных средств «Лисси СОФТ» есть ряд уникальных технических решений. Например, криптопровайдеры для хранения программных токенов в облаке.
Применительно к организации доступа к сайтам государственных услуг продукты «Лисси СОФТ» также представляют интерес. В первую очередь — совместимостью с «IFCPlugin» — браузерным плагином, реализующим механизмы ЭЦП на портале Госуслуг. Во-вторых — возможностью ПО удостоверяющих центров работать с запросами на подпись сертификата в формате PKCS#10.
Браузеры
Иногда, для доступа к сайтам, на которых мы планируем применять механизмы электронной подписи, приходится задействовать другие технологии, использующие российскую криптографию. Например, алгоритмы ГОСТ могут использоваться для организации шифрованного канала передачи данных. В этом случае необходима поддержка соответствующих алгоритмов в браузере. К сожалению, официальные сборки Firefox и Chromium пока не поддерживают российскую криптографию в полной мере. Поэтому приходится пользоваться альтернативными сборками. Такие сборки есть, например, в арсенале криптосредств компаний «КриптоПро» и «Лисси СОФТ», а также, конечно, в дистрибутивах Альт.
Сайты
Среди сайтов, для работы с которыми необходимо применение технологий электронной подписи, в первую очередь нас интересуют сайты, предоставляющие государственные услуги, а так же электронные торговые площадки (ЭТП). К сожалению, некоторые ЭТП не поддерживают пока работу с ОС из Реестра отечественного ПО. Но ситуация постепенно меняется в лучшую сторону.
Госуслуги
Основная функциональность портала государственных услуг, доступная с помощью механизмов ЭЦП — возможность подписи документов, сформированных в интерфейсе сайта. Так, например, можно через веб-форму заполнить заявление, тут же его подписать и передать в работу. Кроме того, ЭЦП позволяет аутентифицироваться на сайте без предъявления логина и пароля, только по сертификату на токене.
Достоверно известно, что работу с порталом госуслуг под ОС семейства Linux можно организовать сейчас одним из двух способов. Один способ описан разработчиками «Лисси СОФТ», другой — разработчиками компании «Актив». Оба способа предполагают наличие специальных договорённостей с удостоверяющим центром. В первом случае придётся ехать за токеном в УЦ Лисси в город Юбилейный Московской области. Во втором случае — найти УЦ, который выдаст клиентский сертификат на основе запроса на подпись в формате PKCS#10. Первый вариант может оказаться проще. И — да — УЦ Лисси СОФТ не работает с запросами на подпись удалённо.
Что касается поддержки самого распространённого варианта токенов — программных (или аппаратных в режиме программных) токенов, обслуживаемых ПО КриптоПро, она в настоящий момент в IFCPlugin под Linux не работает. В полученном 19 декабря 2016 года официальном ответе Ростелекома, в частности, указано: «Просим рассмотреть возможность работы Плагина и ЭЦП с порталом через MSIE 10 или 11 на виртуализированной или хостовой ОС Windows XP/7/8/10, при обязательной установке сертификата в личное хранилище сертификатов в системе». То есть, если прийти в первый попавшийся УЦ со своим токеном с просьбой оформить на нём ключ и сертификат электронной подписи, почти наверняка зайти с таким токеном на сайт Госуслуг под Linux не получится.
Торговые площадки
Так же, как и в случае портала государственных услуг, для электронных торговых площадок механизмы электронной цифровой подписи дают возможность аутентифицироваться на сайте по сертификату на токене и — главное — подписывать документы, сформированные в интерфейсе сайта. То есть, например, размещать заявки и участвовать в аукционах. Для большинства ЭТП эта функциональность является основной. То есть, фактически, без исправно функционирующих на стороне клиента механизмов ЭЦП на электронной торговой площадке делать нечего.
В результате исследования выяснилось, что по состоянию на 14 декабря 2016 года большинство федеральных торговых площадок — «Единая электронная торговая площадка», «РТС-тендер» и «Сбербанк-АСТ» готовы к использованию на рабочих местах под управлением ОС семейства Linux. Оставшиеся две площадки пока не обеспечивают даже возможность входа по клиентскому сертификату. Планируются ли их разработчиками какие-то меры по обеспечению совместимости, к сожалению, пока выяснить не удалось.
В обобщённом виде результаты исследования приведены в таблице:
Для ЭТП, обеспечивающих совместимость с Linux, единственным поддерживаемым криптосредством в данный момент является Cades plugin, который умеет использовать в качестве криптопровайдера только КриптоПро CSP. Таким образом, хорошая новость заключается в том, что получить токен для доступа к электронным торговым площадкам очень просто — большинство УЦ выдают именно их. Плохие новости — токен будет программным и не будет совместим с сайтом Госуслуг.
Прочие сайты
Помимо перечисленных сайтов, использующих ЭЦП непосредственно — для входа на сайт и подписи документов, сформированных в интерфейсе сайта, существует ряд площадок, предоставляющих возможность загрузки документов, предварительно подписанных квалифицированной электронной подписью. В качестве примера можно привести сайт Главного радиочастотного центра. Доступ на сайт осуществляется по логину и паролю, а документы готовятся и подписываются заранее — в интерфейсе пользовательской ОС. Таким образом, для работы с такими сайтами нужна только функциональность локальной подписи документов. То есть, ограничений по выбору криптопровайдера в данном случае практически нет.
К сожалению, на текущий момент авторам данного документа неизвестен способ применения одного и того же токена одновременно на сайте Госуслуг и на электронных торговых площадках. Поэтому придётся сделать два токена с двумя парами ключей и двумя сертификатами соответственно. Законодательно это не запрещено, технически — осуществимо. Финансово тоже вполне реально: одним токеном будет, например, аппаратный Рутокен ЭЦП, другим — какая-нибудь старая модель eToken, которую сейчас вполне можно найти за символическую плату.
Доступ к сайту Госуслуг
Для доступа к Госуслугам возьмём Рутокен ЭЦП и выполним следующие действия:
- загрузим ПО «Рутокен плагин» со страницы по ссылке;
- установим Рутокен плагин — скопируем файлы плагина (npCryptoPlugin.so и librtpkcs11ecp.so) в ~/.mozilla/plugins/;
- зайдём на сайт с ПО «Центр регистрации» и по инструкции выполним следующие действия — проинициализируем токен, сгенерируем пару ключей, сгенерируем и сохраним локально файл с запросом на подпись в формате PKCS#10;
- обратимся в УЦ, готовый выдать нам сертификат по запросу на подпись, получим сертификат в виде файла;
- в интерфейсе «Центра регистрации» сохраним сертификат из полученного файла на токене;
- по ссылке загрузим пакет формата «deb» — файл IFCPlugin-x86_64.deb;
- с помощью ПО «Midnight Commander» (команда mc) «зайдём» в файл пакета как в каталог;
- скопируем содержимое каталога CONTENTS/usr/lib/mozilla/plugins в локальный каталог ~/.mozilla/plugins;
- в браузере Firefox на сайте Госуслуг пройдём последовательно по ссылкам «Войти» и «Войти с помощью электронных средств».
Основная проблема в осуществлении этой инструкции — найти удостоверяющий центр, готовый работать с запросом на подпись.
Доступ к электронным торговым площадкам
Для доступа к сайтам электронных торговых площадок, поддерживающих работу в Linux, выполним следующие действия:
- с любым официально продававшимся в РФ токеном обратимся в любой удостоверяющий центр, использующий по «КриптоПро УЦ», и получим сохранённые на токене пользовательский сертификат и секретный ключ в контейнере формата, поддерживаемого ПО КриптоПро;
- в соответствии с инструкцией установим ПО «CryptoPro CSP» и «Cades plugin» для браузера Chromium;
- с помощью браузера Chromium зайдём на сайты электронных торговых площадок и начнём работу с ними согласно официальным инструкциям.
Возможность подписи документов в виде файлов будет доступна через консольные утилиты КриптоПро и через сторонние приложения-обёртки типа уже упоминавшегося rosa-crypto-tool.
Источник