Извлечение контейнера закрытого ключа из APDU-трафика

Заместитель генерального директора, криптопро

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

Заместитель директора, криптопро

«КриптоПро» очень тесно взаимодействует с компанией «Актив» в части взаимной поддержки продуктов и научных исследований. Данная интеграция является одним из шагов по продвижению к новым безопасным и совместимым решениям, которые будут основаны на впервые принятых в российской системе стандартизации рекомендациях по взаимодействию СКЗИ с аппаратными токенами и смарт-картами, которые приняты Техническим комитетом по стандартизации «Криптографическая защита информации» (ТК 26) – «Протокол выработки общего ключа с аутентификацией на основе пароля». Эти же рекомендации мы сейчас стандартизуем в международном сообществе IETF в виде RFC «The Security Evaluated Standardized Password Authenticated Key Exchange (SESPAKE) Protocol.

Извлечение контейнера закрытого ключа из apdu-трафика

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

Проблема с которой ко мне обратились – утилита dumpContfromAPDU.pl не дампит контейнер из правильно созданного с помощью Smartcard Sniffer -а лога команд и ответов APDU.
Причин такой неработы dumpContfromAPDU.plмогут быть две:
1.  используется отличная от имеющейся у меня на момент исследования модель токена – разные модели токенов имеют несколько разный набор команд APDU, поэтому скрипт не находит нужные регексы;
2. дамп не содержит пересылки контейнера.
Вообще, скрипт писался на скорую руку в качестве PoC исключительно для целей разовой демонстрации и делать из него полноценный инструмент “на все (ну, или, по крайней мере, на многие) случаи жизни” не планирую по нескольким причинам:
а)  наверно, это своего рода “хак” (реализация неавторизованного доступа), а распространять инструменты для неавторизованного доступа – неправильно;
б) лень.

В качестве компромисса – просто расскажу как извлечь контейнер из трафика APDU вручную и предположу почему это работает.

Как это сделать.
1. Получаем дамп Smartcard Sniffer-а, при выполнении операции Проверки (можно выполнить любую другую операцию, провоцирующую передачу ключа в приложение, например, вычисление электронной подписи), как это показано в видео .
2. Далее, как выше отмечено, скрипт dumpContfromAPDU.pl не работает, поэтому что-то запустить и получить контейнер – не получится :), но для анализа, традиционно на скорую руку, я написал другой скрипт – writeBinaryAPDU.pl ,  который делает элементарную вещь: дамп Smartcard Sniffer-а записывает в виде бинарных файлов диалога APDU между приложением и карточкой (токеном). Понятно, что диалог такой есть всегда, поэтому этот скрипт работает с любым токеном. В результате его работы появляется дериктория с именем эквивалентному времени ее создания, в которой лежат файлы вида “001_out(4)39_6A_42_32“, где
001 – идентификатор последовательности запрос-ответ;
out – означает, что эти байты передавались из карточки в приложение, соответственно, от приложения в карточку – будет “in”;
(4) – количество переданныхполученных байтов;
39_6A_42_32 – первые 4 байта.
3. Такие файлики (001_out(4)39_6A_42_32) далее смотрим глазами иили в шестрнадцатиричном редакторе. Кто такого редактора не имеет и никогда не планирует – можно использовать FAR .
4. Опытным путем установлено, что контейнер секретного ключа представляет из себя набор файлов с расширением .key (см. слайд 11 ):

  • header.key – файл, похоже, со всяким описанием, однако его целостность как-то контролируется, поэтому если его собрать не полностьюнеправильно контейнер работать не будет. О нем известно, что он содержит много информации, причем, в основном текстовой, через APDU передается порциями по 256 байт. Соответственно, в нашем дампе собираем в отдельную папочку все файлы вида №_out(256?)какие-то_байты. Я написал 256?не случайно, поскольку видел, как header.key передавался порциями по 253 байта, какая там логика выбора размера порций – не известно, но в любом случае эти порции будут радикально отличаться по размеру от всего остального трафика из карточки. Дополнительно к этим файлам надо обязательно добавить предыдущий порциям из 256 байтов ответ от карточки длиной 10 байт и с началом 30_82, а также, возможно, оставшийся “хвостик”, следующий за порциями по 256 байт (или 253 или еще сколько, но обычно – больше всех остальных, и равных).  Все эти файлы надо слить в один в порядке следования (поскольку вначале названия файла стоит номер последовательности – упорядочивание по алфавиту дает порядок следования) – это можно сделать утилиткой cat .
  • name.key – содержит имя контейнера, передаваемое обычно одной порцией (в рамках исследования я делал контейнер с очень длинным именем, это видно на видео, чтобы спровоцировать передачу имени контейнера в нескольких порциях – это удалось, передача проводилась аналогично передаче header.key: сначала первые 10 байт, затем – все остальное), искомый файл – следующего вида №_out(длина имени)30_длина имени_16_длина имени – 2. Интересен тот факт, что содержимое этого файла, в целом, не важно, поэтому можно сгенерить свой файл name.key, с соблюдением формата его первых четырех байт.


В тех случаях, что я видел, можно игнорировать запросы к карточке №_in(размер)00_04*  и ответы на них. В некоторых случаях можно игнорировать и другие “стандартные” команды и ответы на них из спецификации GlobalPlatform .

Итак, собрав все 4 файлика, копируем их на флешку и проверяем контейнер, выполняя операцию “Проверка”, аналогично той, что делали в момент работы Smartcard sniffer-а (при этом уже никакой пароль на контейнер спрашиваться не будет). Если проверка не прошла, то надо попробовать различные “оконечные условия” для файла header.key – если после одинаковых порций вы добавляли “хвостик”, с порцией меньше предыдущих – попробуйте без него – если проверка снова неуспешна, добавьте еще следующую порцию (еще один “хвостик”) – в общем, поупражняйтесь с разными комбинациями порций файлов №_out(размер)* для сбора header.key.

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

Криптопровайдер КриптоПРО CSP (не КриптороПРО eToken CSP и не КриптоПРО Rutoken CSP!! – предположительно, на них не пройдет описываемая атака, но надо поисследовать…), умеет хранить хранить ключи в файликах, указанных выше, причем, не важно в какой среде – реестр ли Windows (посмотрите внимательно видео в районе 2:28, где видно как устроено хранилище в реестре 🙂 и сравните с упомянутым выше слайдом 11), флешка с файловой системой или токен используется. Работа с ключами происходит в приложении (криптопровайдере), а, следовательно, они туда передаются – поэтому они дампятся из трафика APDU.

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

мы рассказываем о главных новостях из мира IT, актуальных угрозах и событиях, которые оказывают влияние на

Читайте также:  Эцп для росреестра какие oid

, бизнес глобальных корпораций и безопасность пользователей по всему миру. Узнай первым как

Как выполнить копирование сертификата с рутокена через криптопро

Для решения задачи понадобится программа КриптоПРО CSP. Непосредственно копирование ЭЦП с токена идет следующим образом:

В указанном нами месте на жестком диске или USB-носителе появится новая папка с ключами, которую далее можно копировать «традиционным» способом.

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

Как произвести копирование сертификата с рутокен

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

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

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

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

Как работать с эцп без флешки?

Выдача ЭЦП осуществляется на флеш-накопителе. Но нужно учитывать, что это вещь не вечная: может потеряться или сломаться. Пользоваться электронной подписью получится и без флешки. Достаточно выполнить следующие действия на компьютере:

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

Читайте также:  Электронная подпись для Федерального казначейства. Порядок получения ЭЦП для казначейства

Удостовериться в наличии сертификата в контейнере можно путем нажатия соответствующей кнопки во вкладке «Сервис». Тут понадобится выбрать подходящий вариант. Принцип прост: достаточно кликнуть дважды левой кнопкой мыши.

При создании контейнера предлагается создать новый пароль. Его понадобится ввести дважды в соответствующие строки. Однако это не является обязательным действием во время установки Рутокена.

По завершении копирования сертификата в реестр понадобится установить его в раздел, который именуется «Личное». Как это сделать: во вкладке под названием «Сервис» выбирается пункт «Просмотреть сертификаты в контейнере». На дисплей выводится окно, где предлагается нажать кнопку «Обзор». Понадобится обозначить, какой именно сертификат интересует, и подтвердить это путем нажатия кнопки «ОК».

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

Затем все еще проще: следует нажать кнопку «Да», потом «ОК», чтобы подтвердить совершаемые действия.

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

Чтобы проверить, удалось ли установить ЭЦП, надлежит совершить попытку зайти в ЛК требуемого интернет-сервиса по ключу. Достаточно совершить любое обращение к электронной подписи без вставленной в ПК флешки. Результатом станет вывод на экран данных о сертификате ЭЦП.

Коммерческий директор, актив

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

Проведение копирования контейнера с помощью встроенных средств операционной системы windows

При использовании USB-накопителя либо дискеты все можно выполнить стандартными средствами Windows. Для этого достаточно скопировать папку с сертификатом на конкретный носитель. Внутри этой папки будет 6 файлов с одинаковым расширением .key. Также здесь может находиться ключ в виде файла типа keyName.cer, копировать который необязательно.

Файлы для электронной цифровой подписи имеют следующие наименования (все имеют расширение .key):

Файл primary.key включает в себя 32 байта ключа, представленного в формате ASN1. При этом данное значение представляет собой только 50% искомого ключа, так как полная его версия может быть получена при делении на маску с учетом модуля Q.

Файл masks.key включает 32 байта маски ключа, которая также представлена в формате ASN1. Также здесь есть 12 байт данных для генерации ключа при условии, что криптографический контейнер защищен от несанкционированного доступа паролем (последний также принимает участие при генерации уникального ключа хранения). Завершает перечень информации в файле контрольная сумма, занимающая 4 байта.

Файл header.key представляет собой набор параметров ЭЦП и другую общую информацию.

Регистрация и установка программного решения cryptopro

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

Перед тем как приступать непосредственно к инсталляции ПО, надлежит закрыть все приложения. Нужно перейти в учетную запись администратора. Также важный момент — наличие лицензии на программу.

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

Интегрированное ПО позволяет выполнять различные операции с ЭЦП. Его преимуществом является бесплатность на протяжении всего пробного периода. Испытать возможности «КриптоПро» предлагается на протяжении 3 месяцев. По истечении 90 дней бесплатного демонстрационного периода надлежит купить лицензионный ключ, чтобы и дальше иметь доступ ко всему функционалу.

Важно учесть, что перед инсталляцией надлежит проверить ПК на соответствие минимальным требованиям. Обычно нужна операционная система Windows 7 и более свежая, браузер IE8, процессор с частотой минимум 1 ГГц и оперативная память не менее 512 Мб. USB-вход стандарта 1.1 — также обязательное требование к компьютеру, где проводится работа с программой.

Рутокен эцп 3.0 nfc

Рутокен ЭЦП 3.0 NFC в форм-факторе USB-токена — это принципиально новое полнофункциональное СКЗИ и универсальное средство для электронной подписи на настольных и мобильных платформах.

Функции устройства доступны через два интерфейса: традиционный USB (Type-А, Type-C) и бесконтактный (NFC). Это позволяет подписывать документы на смартфонах и планшетах так же легко, как расплачиваться бесконтактной банковской картой. Для работы с таким устройством на компьютере вам надо будет просто подключить его к USB-порту, а для работы на мобильном устройстве — поднести к NFC-считывателю. Вы сможете легко переключаться между компьютером и мобильным устройством.

Читайте также:  Постановление Правительства РФ от 25 января 2013 г. № 33 “Об использовании простой электронной подписи при оказании государственных и муниципальных услуг” (не вступило в силу)

В USB-токене аппаратно реализованы: ГОСТ Р 34.10-2021 с длиной ключа 256/512 бит и ГОСТ Р 34.11-2021, а также новые симметричные шифры Магма и Кузнечик и международные алгоритмы электронной подписи RSA и ECDSA. Криптографические операции выполняются без копирования ключа в память компьютера.

Поддержка отечественных и международных алгоритмов позволяет использовать Рутокен ЭЦП 3.0 NFC в информационных системах с высокими требованиями безопасности в финансовом, корпоративном и государственных секторах. ПО Рутокен работает в современных настольных и мобильных операционных системах. SDK позволяет встраивать поддержку устройства в классические, мобильные и веб-приложения.

Рутокен ЭЦП 3.0 NFC, подключенный к USB-порту, работает везде, где поддерживается Рутокен ЭЦП 2.0, какие-то дополнительные настройки не понадобятся. Он также, как и его предшественник — Рутокен ЭЦП 2.0, работает во всех современных операционных системах.

USB-токены Рутокен ЭЦП 3.0 NFC проходят сертификацию по требованиям ФСБ и ФСТЭК России.

Способы получения электронной цифровой подписи на пк

Конкретный вариант того, как получить электронную подпись, зависит от ее типа:

С полным перечнем прошедших аккредитацию удостоверяющих центров предлагается ознакомиться на веб-портале Минкомсвязи РФ.

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

Как пользователь может получить и установить ЭЦП на компьютере:

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

Чаще всего используется вариант установки Рутокена через обычный флеш-накопитель. Электронная подпись будет иметь вид папки с файлами.

Установка эцп с флеши на пк

Перед тем как установить и активировать цифровую подпись с flash-накопителя на ПК, потребуется удостовериться в наличии нескольких условий:

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

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

Порядок действий таков:

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

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

Важный нюанс: закрытый ключ выдается в формате файлов *.key. Если они расположены в корневой папке, «КриптоПро CSP» не сможет их увидеть. Поэтому сначала нужно перенести все файлы на флеш-накопитель. Важно, чтобы он находился в папке первого уровня.

Об успешной установке ЭЦП с флешки на компьютер оповестит соответствующее окно. На экране появится надпись о завершении операции.

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

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

После нажатия кнопки «Далее» выдаются основные сведения сертификата для установки. Уточнить данные можно путем перехода во вкладку «Свойства».

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

Если для получения доступа к закрытому ключу нужен пароль, будет подан запрос на него. Надлежит ввести код и подтвердить его нажатием кнопки «ОК».

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

Нужно поставить флажок напротив пункта «Установить сертификат в контейнер».

В завершение предлагается удостовериться в корректности внесенных сведений. Посредством нажатия кнопки «Готово» завершается процедура установки.

Заключение

Основная задача — настроить Рутокен. После установки драйвера и перезагрузки компьютера можно активировать ЭЦП. Данная операция касается электронного ключа. Активировать его можно довольно просто. Нужно найти установленный дистрибутив в панели управления и перейти во вкладку с названием «Свойства». Далее нажатием на кнопку «Сервис» можно посмотреть сертификаты в контейнере. Осуществляется операция импорта.

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

Наличие установленной электронной подписи позволит пользоваться ею даже при отсутствии самого флеш-накопителя, прямо с компьютера.

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

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

Adblock
detector