Главная страница. Подборки статей и гайдов, которые интересны мне.
Ссылки на разделы
16 апреля 2023
Переносим непереносимое и экспортируем не экспортируемое 2. Или «Как скопировать не экспортируемый ключ ЭП из ESMART Token и JaCarta?»
Ранее, я написал статью, как выдернуть новые, не экспортируемые ключи ЭП из RuToken.
Сейчас же, я хочу описать свой опыт на тему «выдёргивания» ключа из esmart.
В этих наших интернетах, есть несколько статей по выдёргиванию ключей из JaCarta LT. В них, мельком упоминалось, что примерно так же, можно извлечь ключи и из esmart, но никаких подробностей не было.
Тут мне понадобилось извлечь ключик из esmart и я столкнулся с некоторыми моментами, а учитывая, что я не то, чтобы «кулхацкер» — некоторые моменты были мне не понятны.
Поэтому, после того, как всё получилось — я решил написать свою, более подробную инструкцию.
Нам понадобится:
1) Windows 7 (x86/x64), либо более поздние ОС, но с отключенным Secure Boot. Иначе, SmartcardSniffer работать не будет.
Как скопировать неэкспортируемый закрытый ключ с руТокен (ruToken)?
3) Strawberry Perl 5.32.1.1 32bit — Нужен для работы скрипта, разделяющего дамп по действиям.
4) Драйвера esmart.
Легче всего, вставить esmart в USB, зайти на i.kontur.ru и настроить рабочее место, например, под работу с Диадок. Тогда установятся все нужные компоненты. Кстати! Самое главное — не устанавливать компоненты, да и вообще не работать по RDP! Компоненты не запустятся.
Если нужно работать удалённо — запустите AnyDesk, либо VNC (ну, или чем вы там любите подключаться?). Если не хотите лишнего ставить — попробуйте стянуть драйвера на сайте esmart
4.1) Драйвера JaCarta.
Ставятся точно так же, как и драйвера esmart через i.kontur.ru.
5) КриптоПро (Если зайдёте на i.kontur.ru — то криптопро скачается сама. Если ставите руками — то вот свежая версия)
7) Некоторые советуют Total Commander, но мне удобнее пользоваться Q-Dir.
В нём нужно настроить: Меню НастройкиРазмер файлов, там поставить галочки: «Внутренний алгоритм Q-Dir» и «Размер в байтах».
Готовую, настроенную версию можно стянуть тут.
8) Smartcard Sniffer качаем SmartcardSniffer и оттуда достаём «SmartcardSniffer.dll» в моём случае, т.к. у меня Win7x86 — дёргаю файлик из папки SmartcardSniffer-0.1SmartcardSnifferbinx86.
Его кидаем на диск C:, в папку «SmartcardSniffer» (Желательно, сделать именно так, как в инструкции, т.к. команды, в дальнейшем, будут опираться именно на этот путь).
Так же, нужно поправить реестр:
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWindows]
«AppInit_DLLs»=»C:\SmartcardSniffer\SmartcardSniffer.dll»
«LoadAppInit_DLLs»=dword:00000001
«RequireSignedAppInit_DLLs»=dword:00000000
9) Файл writeBinaryAPDU.pl (готовый файл лежит здесь)
Помещаем его в “C:SmartcardSniffer”
Как прописать ключ в Иммобилайзер автомобилей VAG (Audi, VW, Skoda, Seat)
10) CertFix версии 1.1.27.3154. Нужен для конвертации ключа в экспортируемый. Про более старые — ничего не скажу, а вот новые уже не могут конвертировать. И самое поганое — при первом же запуске — программа сама обновится до новой версии. Поэтому, ей нужно обломать доступ в интернеты.
11) Firewall App Blocker. Нужен для блокировки доступа в интернет CertFix.
Устанавливаем все компоненты и ОБЯЗАТЕЛЬНО перезагружаем компьютер.
I. Собственно, сам процесс извлечения ключа из ESMART:
1) Получаем дамп диалога КриптоПро с токеном:
1.1) Вставляем ключ в ПК,
1.2) Запускаем КриптоПро,
1.3) Открываем вкладку «Сервис»,
1.4) Нажимаем «Протестировать»
1.5) Выбираем ключ и вводим пароль (кто не знал — стандартный пароль от ruToken и ESMART Token — 12345678, от JaCarta 1234567890 (в старых версиях (до 15.01.2019) стоял 1eToken), админские пароли можно глянуть тут и тут),
1.6) В открывшемся окне, смотрим пункт «Экспорт ключа» и убеждаемся, что он действительно не экспортируемый. Жмём «Готово» и закрываем программу.
1.7) В папке “C:SmartcardSniffer” появится дамп-файл «rundll32.exe.txt»
2) Разбиваем дамп на отдельные файлы:
2.1) Запускаем консоль (Win+R, пишем CMD и жмём «Enter»)
2.2) В консоли меняем папку командой: cd C:SmartcardSniffer
2.3) Пишем команду perl writeBinaryAPDU.pl < rundll32.exe.txt
2.4) Появится папка с кучей файлов
2.5) Сразу, чтоб облегчить жизнь, в папке, жмём Ctrl+F, в поиске вбиваем «in» и удаляем все файлы, содержащие в названии это слово.
3) Собираем контейнер:
3.1) Первым идёт primary.key
3.1.1) Ищем файл, содержащий в названии 30_22
У меня он один, но у вас могут быть их несколько.
3.1.2) Выбираем тот, что по меньше и перетаскиваем в WinHEX.
3.1.3)Видим, что в конце стоят нули. Подрезаем файл до 36 байт (у меня это были все нули):
3.1.3.1) Ставим курсор на последний ноль, зажимаем клавишу Shift и стрелочками двигаем курсор, выделяя данные (лучше выделить не все нули, а оставить сначала половину и посмотреть, сколько данных обрезали).
3.1.3.2) Жмём клавишу Del и смотрим сколько отрезали. Должно остаться 36 байт.
3.1.4) Сохраняем файл под именем primary.key куда-нибудь отдельно (я сохранил в C:SmartcardSniffer2)
3.2) Далее, идёт файл masks.key:
3.2.1) Ищем файл с именем, содержащем 30_36
3.2.2) Подрезаем его до 56 байт (так же как предыдущий) и сохраняем под именем masks.key.
3.3) Ну и самый геморный файл — header.key:
3.3.1) Ищем самые большие файлы (для этого нам и понадобится Q-Dir с настройкой отображения байтов).
3.3.2) Берём файл, идущий перед ними (весит обычно, 16 байт и в названии содержит 83_02 (по крайней мере, у меня во всех случаях так было)) и тот, что идёт после них (он чуть меньше самых больших файлов (бывает так, что в конце, может быть два одинаковых по размеру файла. Берём любой(см скриншот ниже))).
Распишу подробнее: нам нужен первый файл, обычно, в ESMART Token он называется *_out(16)30_82_0A_BE, в JaCarta, называется *_out(16)30_82_0A_32.
После 30_82, названия могут быть разными, однако, «out(16)30_82» присутствует всегда (по крайней мере, на моей тачке, у ESMART Token и JaCarta — точно.
В моём случае, их было 12. Может быть 14 (например, как у JaCarta)
3.3.3) Копируем эти файлы в отдельную папку (в данном случае, я скопировал в C:SmartcardSniffer3)
3.3.4) В консоли меняем рабочую папку на C:SmartcardSniffer3 (ну, или на ту, в которую вы скопировали файлы) командой cd C:SmartcardSniffer3
3.3.5) Пишем команду copy /B * header.key и жмём энтер
3.3.6) В папке C:SmartcardSniffer3 появился файл header.key
3.3.7) Его помещаем в папку к другим файлам.
3.4) Остаётся получить файл name.key. Конечно, можно его как-то вытащить из того сборища файлов, но легче взять готовый. Например, вот здесь. Отображаться в КриптоПро он будет как «Test_123», но потом, ключ легко будет переименовать после того, как вы сделаете его экспортируемым.
Если хотите — то вот вам файл с именами: esmart_1, esmart_2, esmart_3? jakarta_1, jakarta_2, jakarta_3, Export_1, Export_2, Export_3
3.4.1) Копируем файл в папку с primary.key, masks.key и header.key.
3.5) Переименовываем папку в «1234» (можно использовать любые 12 символов, (цифры и ТОЛЬКО латинские буквы) и закидываем папку на любую флешку или жёсткий диск, имеющий любую букву, кроме диска C: (я использую виртуальный диск (VHD). Примонтировал такую виртуальную «флешку» и балуешься).

3.6) Снова запускаем КриптоПро и находим сертификат.
3.7) Убеждаемся, что ошибок не обнаружено.
3.8) В принципе, ключ уже можно использовать так. Многие так и делают: закидывают папку на флешку и спокойно работают. Но можно пойти дальше и сделать ключ экспортируемым (на сколько это видно госорганам, когда подключаешься к их порталам — я не знаю. Но есть люди, которым принципиально нужно скопировать ключ на токен и использовать его как раньше.
Описание по конвертации ключа в экспортируемый, перейдите в раздел III.
II. Процесс извлечения ключа из JaCarta:
1) Выполняем пункты с 1 по 3.2.2, пункт 3.3 тоже похож, только файлов может быть меньше и после удаления файлов *in*, нужные нам файлы будут идти практически по порядку.
2) Ровно таким же способом, как описано в пунктах с 3.3.1 по 3.3.7 собираем header.key
3) И так же, используем любой name.key
III. Конвертация не экспортируемого ключа в экспортируемый.
1) Запускаем Firewall App Blocker и запрещаем CertFix выход в интернет (я на всякий случай запретил как входящие, так и исходящие подключения).
2) Запускаем CertFix от имени администратора и находим наш ключ. Смотрим на столбец «Экспорт закрытого ключа» и видим параметр «DENIED».
3) Зажимаем клавишу «Shift» на клавиатуре, нажимаем правой кнопкой мыши по ключу и выбираем пункт «Сделать экспортируемым (файловая система)».
4) После чего, получаем уведомление, что всё прошло успешно и резервная копия лежит в папке контейнера.
Если зайти в папку с ключом — можно увидеть каталог бэкапа.
5) Ну а дальше всё просто:
5.1) Запускаем КриптоПро, там жмём вкладку Сервис;
5.2) Жмём кнопку «Скопировать. »
5.3) Затем, кнопку «Обзор. »
5.4) Выбираем контейнер и жмём кнопку «Ок»
5.5) Можем задать другое имя контейнеру (я оставил по умолчанию), жмём «Готово»
5.6) Выбираем носитель (у меня Rutoken Lite), жмём «Ок»
5.7) Готово!
5.8) Тестируем сертификат.
Вот в виде видео:
Ну, и собственно всё. Позже, выложу ссылки на сборник программ в одном архиве и образ виртуалки VMWare с настроенной виндой под ESMART и JaCarta.
Источник: lexgallery.blogspot.com
Извлечение ключа из токена с неизвлекаемым ключом

Довольно часто при оформлении сертификатов ключей электронной подписи можно наблюдать навязчивый пиар токенов с неизвлекаемым ключом. Продавцы из удостоверяющих центров уверяют, что, купив у них СКЗИ КриптоПРО CSP и токен с неизвлекаемым ключом (Рутокен ЭЦП или JaCarta ГОСТ), мы получим сертифицированные СКЗИ, обеспечивающие 100%-ную защиту от кражи ключей с токена. Но так ли это на самом деле? Для ответа на этот вопрос проведем простой эксперимент…
Конфигурация тестового стенда
- ОС MS Windows 7 SP1
- СКЗИ КриптоПРО CSP 3.9.8423
- Драйверы Рутокен для Windows (x86 и x64). Версия: v.4.1.0.0 от 20.06.2016, WHQL-certified
- Единый Клиент JaCarta и JaCarta SecurLogon. Версия 2.9.0 сборка 1531
- КриптоАРМ Стандарт Плюс 5. Версия 5.2.0.8847.
- Рутокен ЭЦП. Версия 19.02.14.00 (02)
- JaCarta ГОСТ. Номер модели JC001-2.F09 v2.1
Методика тестирования
- генерируется контейнер закрытого ключа и запрос на сертификат открытого ключа;
- после прохождения в удостоверяющем центре процедуры сертификации из запроса получается сертификат;
- сертификат в совокупности с контейнером закрытого ключа образует готовую для использования ключевую информацию. Данную ключевую информацию, записанную на носителе, будем называть исходным ключевым документом;
- с исходного ключевого документа изготавливаются копии, которые записываются на отчуждаемые носители (далее будем называть их рабочими ключевыми документами) и передаются уполномоченным пользователям;
- после изготовления необходимого количества рабочих ключевых документовисходный ключевой документ уничтожается или депонируется на хранение в орган криптографической защиты информации.
Проведение тестирования
1. Создадим исходный ключевой документ.
Описание
Для этого с помощью КриптоАРМ создадим в реестре контейнер закрытого ключа test-key-reestr, содержащий самоподписанный сертификат (CN=test)
2.Сформируем рабочие ключевые документы.
Описание
С помощью штатных средств СКЗИ КриптоПРО CSP (Пуск—>Панель управления—>КриптоПро CSP) скопируем ключевой контейнер test-key-reestr на ключевые носители Рутокен ЭЦП и JaCarta ГОСТ. Ключевым контейнерам на ключевых носителях присвоим имена test-key-rutoken и test-key-jacarta соответственно.
Описание приведено применительно к JaCarta ГОСТ (для Рутокен ЭЦП действия аналогичны):
Таким образом получили рабочие ключевые документы на JaCarta ГОСТ (контейнер test-key-jacarta) и Рутокен ЭЦП (контейнер test-key-rutoken).
3.Уничтожим исходный ключевой документ
Описание
Штатными средствами СКЗИ КриптоПРО CSP удалим из реестра ключевой контейнер test-key-reestr.
4. Скопируем ключевую информацию из рабочих ключевых документов
Описание
Попробуем скопировать ключевые контейнеры test-key-rutoken и test-key-jacarta обратно в реестр.
Описание приведено для JaCarta ГОСТ (для Рутокен ЭЦП действия аналогичны).

Как мы видим, ключевая информация успешно скопирована или, другим языком, извлечена из токенов с неизвлекаемым ключом. Получается, что производители токенов и СКЗИ врут? На самом деле нет, и ситуация сложнее, чем кажется на первый взгляд. Исследуем матчасть по токенам.
Матчасть
То, что на рынке принято называть токеном с неизвлекаемым ключом, правильно называется функциональным ключевым носителем (ФКН) (доп. инфо).
Главным отличием ФКН от обычных токенов (Рутокен S, JaCarta PKI, …) в том, что при выполнении криптографических преобразований (например, формирование электронной подписи) закрытый ключ не покидает устройство. В то время как при использовании обычных токенов закрытый ключ копируется с токена в память комптьютера.
Использование ФКН требует особой организации взаимодействия между прикладным криптографическим ПО и библиотекой СКЗИ (криптопровайдером или, по-другому, CSP).

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

В последней строке указана фраза «Поддержка КриптоПРО ФКН: Нет», а это значит, что на токене нет апплета, с которым умеет работать СКЗИ КриптоПРО CSP. Таким образом, реализация технологии ФКН с использованием СКЗИ и токенов, описанных в конфигурации тестового стенда, невозможна.
Аналогичная ситуация и с JaCarta ГОСТ. Более того, СКЗИ КриптоПРО CSP, по крайней мере та версия, которая использовалась в тестовом стенде, использует данные ключевые носители как «обычные токены», которые, в свою очередь, являются просто носителями ключа.
Это утверждение очень просто подтвердить. Для этого надо поставить СКЗИ КриптоПРО CSP на чистую машину без драйверов от токенов и подключить токен JaCarta ГОСТ. ОС Windows 7 обнаружит токен JaCarta ГОСТ как «Устройство чтения смарт-карт Microsoft Usbccid (WUDF)». теперь можно попробовать создать ключ на токене и скопировать его в реестр компьютера. Весь функционал СКЗИ успешно отработает.
Как сделать, чтобы все было хорошо?
Чтобы с помощью продуктов ООО “КРИПТО-ПРО” реализовать технологию ФКН, необходимо:
1. Купить специальную версию библиотеки СКЗИ:
— для Рутокен ЭЦП — СКЗИ КриптоПРО Рутокен CSP.
— для JaCarta ГОСТ – СКЗИ КриптоПро ФКН CSP.
2. Одновременно с библиотекой СКЗИ необходимо приобрести специально подготовленные токены, содержащие в себе программные части (апплеты), с которыми умеет работать КриптоПРО Рутокен CSP или КриптоПро ФКН CSP соответственно.
Получается, что Рутокен ЭЦП и JaCarta ГОСТ не являются токенами с неизвлекаемым ключом?
Опять нет. Данные устройства могут реализовывать функционал ФКН (но, возможно, в меньшем объеме, чем при использовании их совместно с СКЗИ КриптоПРО), но для этого нужен софт, который умеет работать с апплетами размещенными на токенах. Таким софтом может быть КриптоАРМ Стандарт 5 Плюс. Он это умеет.
При генерации ключевой пары в мастере КриптоАРМ можно выбрать криптопровайдер, который будет использоваться, например, Rutoken ECP или eToken GOST. Это и позволит использовать токен как ФКН.

Выводы
- Не верьте продавцам, чушь вам городящим. Использование обычных версий криптопровайдера КриптоПРО CSP и обычных Рутокен ЭЦП или JaCarta ГОСт не позволяют реализовать технологию ФКН.
- Для использования технологии ФКН совместно с продуктами ООО «КРИПТО-ПРО» необходимы как специально подготовленные токены, содержащие апплет, с которым умеет работать СКЗИ, так и специальные версии криптопровайдера КриптоПРО CSP, которые умеют работать с апплетом на токенах.
- Рутокен ЭЦП и JaCarta ГОСТ умеет самостоятельно реализовывать технологию ФКН, но для этого необходим специальный софт.
Источник: habr.com
Как сделать копию ключа usb?
3 ноября 2014 г.
Просмотров: 1120
Инструкции
Многие программы отечественных разработчиков имеют ключи на usb-носителях, которые гарантируют использование данного продукта в рамках приобретенной лицензии, а также предоставляют определенный уровень безопасности данных организации. На тот случай, если флешка с ключом будет утеряна, полезно сделать копию usb-ключа. Это можно сделать с помощью программы Dekart Key Manager.
Вам понадобится
- — программа Dekart Key Manager.
Источник: imguru.ru