Как скопировать не экспортируемый ключ ЭП из ESMART Token и JaCarta?

https://anyfix.ru/ak-skopirovat-ne-eksportiruemyj-klyuch-ep-iz-esmart-token-i-jacarta.html взял отсюда

image.png

Нам понадобится:

1) Windows 7 (x86/x64), либо более поздние ОС, но с отключенным Secure Boot. Иначе, SmartcardSniffer работать не будет.

2) Редист Microsoft Visual C++ 2010 x86 (если не установлен) 

3) Strawberry Perl 5.32.1.1 32bit — Нужен для работы скрипта, разделяющего дамп по действиям. 

4) Драйвера esmart.
Легче всего, вставить esmart в USB, зайти на i.kontur.ru и настроить рабочее место, например, под работу с Диадок. Тогда установятся все нужные компоненты. Кстати! Самое главное — не устанавливать компоненты, да и вообще не работать по RDP! Компоненты не запустятся. Если нужно работать удалённо — запустите AnyDesk, либо VNC (ну, или чем вы там любите подключаться?). Если не хотите лишнего ставить — ссылка на скачивание.

4.1) Драйвера JaCarta.
Ставятся точно так же, как и драйвера esmart через i.kontur.ru.

5) КриптоПро (Если зайдёте на i.kontur.ru — то криптопро скачается сама. Если ставите руками — то вот свежая версия)

6) WinHEX

7) Некоторые советуют Total Commander, но мне удобнее пользоваться Q-Dir
В нём нужно настроить: Меню Настройки\Размер файлов, там поставить галочки: «Внутренний алгоритм Q-Dir» и «Размер в байтах». 

0001.png

Готовую, настроенную версию можно стянуть тут.

8) Smartcard Sniffer качаем SmartcardSniffer и оттуда достаём «SmartcardSniffer.dll» в моём случае, т.к. у меня Win7x86 — дёргаю файлик из папки SmartcardSniffer-0.1\SmartcardSniffer\bin\x86.
Его кидаем на диск C:\, в папку «SmartcardSniffer» (Желательно, сделать именно так, как в инструкции, т.к. команды, в дальнейшем, будут опираться именно на этот путь).
Так же, нужно поправить реестр:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]»AppInit_DLLs»=»C:\\SmartcardSniffer\\SmartcardSniffer.dll»
«LoadAppInit_DLLs»=dword:00000001
«RequireSignedAppInit_DLLs»=dword:00000000

Вот готовый файлик реестра

9) Файл writeBinaryAPDU.pl (готовый файл лежит здесь)
Помещаем его в “C:\SmartcardSniffer\”

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) В открывшемся окне, смотрим пункт «Экспорт ключа» и убеждаемся, что он действительно не экспортируемый. Жмём «Готово» и закрываем программу.

002.png

1.7) В папке “C:\SmartcardSniffer\” появится дамп-файл «rundll32.exe.txt»

003.png

2) Разбиваем дамп на отдельные файлы:
2.1) Запускаем консоль (Win+R, пишем CMD и жмём «Enter»)
2.2) В консоли меняем папку командой: cd C:\SmartcardSniffer

004.png

2.3) Пишем команду perl writeBinaryAPDU.pl < rundll32.exe.txt

005.png
006.png

2.4) Появится папка с кучей файлов

007.png

2.5) Сразу, чтоб облегчить жизнь, в папке, жмём Ctrl+F, в поиске вбиваем «in» и удаляем все файлы, содержащие в названии это слово.

008.png

3) Собираем контейнер:
3.1) Первым идёт primary.key
3.1.1) Ищем файл, содержащий в названии 30_22

009.png

У меня он один, но у вас могут быть их несколько.
3.1.2) Выбираем тот, что по меньше и перетаскиваем в WinHEX.

010.png

3.1.3)Видим, что в конце стоят нули. Подрезаем файл до 36 байт (у меня это были все нули):
3.1.3.1) Ставим курсор на последний ноль, зажимаем клавишу Shift и стрелочками двигаем курсор, выделяя данные (лучше выделить не все нули, а оставить сначала половину и посмотреть, сколько данных обрезали).
3.1.3.2) Жмём клавишу Del и смотрим сколько отрезали. Должно остаться 36 байт.

011.png

3.1.4) Сохраняем файл под именем primary.key куда-нибудь отдельно (я сохранил в C:\SmartcardSniffer\2)

3.2) Далее, идёт файл masks.key:
3.2.1) Ищем файл с именем, содержащем 30_36

012.png

3.2.2) Подрезаем его до 56 байт (так же как предыдущий) и сохраняем под именем masks.key.

3.3) Ну и самый геморный файл — header.key:

3.3.1) Ищем самые большие файлы (для этого нам и понадобится Q-Dir с настройкой отображения байтов).

3.3.2) Берём файл, идущий перед ними (весит обычно, 16 байт и в названии содержит 83_02 (по крайней мере, у меня во всех случаях так было)) и тот, что идёт после них (он чуть меньше самых больших файлов (бывает так, что в конце, может быть два одинаковых по размеру файла. Берём любой(см скриншот ниже))).

013.png

Распишу подробнее: нам нужен первый файл, обычно, в ESMART Token он называется *_out(16)30_82_0A_BE, в JaCarta, называется *_out(16)30_82_0A_32.
После 30_82, названия могут быть разными, однако, «out(16)30_82» присутствует всегда (по крайней мере, на моей тачке, у ESMART Token и JaCarta — точно.

014.png

В моём случае, их было 12. Может быть 14 (например, как у JaCarta)

3.3.3) Копируем эти файлы в отдельную папку (в данном случае, я скопировал в C:\SmartcardSniffer\3)

3.3.4) В консоли меняем рабочую папку на C:\SmartcardSniffer\3 (ну, или на ту, в которую вы скопировали файлы) командой cd C:\SmartcardSniffer\3

015.png

3.3.5) Пишем команду copy /B * header.key и жмём энтер

016.png

3.3.6) В папке C:\SmartcardSniffer\3 появился файл header.key

017.png

3.3.7) Его помещаем в папку к другим файлам.

018.png

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). Примонтировал такую виртуальную «флешку» и балуешься).

019.png

3.6) Снова запускаем КриптоПро и находим сертификат.

020.png

3.7) Убеждаемся, что ошибок не обнаружено.

021.png

3.8) В принципе, ключ уже можно использовать так. Многие так и делают: закидывают папку на флешку и спокойно работают. Но можно пойти дальше и сделать ключ экспортируемым (на сколько это видно госорганам, когда подключаешься к их порталам — я не знаю. Но есть люди, которым принципиально нужно скопировать ключ на токен и использовать его как раньше.

Описание по конвертации ключа в экспортируемый, перейдите в раздел III. 

II. Процесс извлечения ключа из JaCarta:

1) Выполняем пункты с 1 по 3.2.2, пункт 3.3 тоже похож, только файлов может быть меньше и после удаления файлов *in*, нужные нам файлы будут идти практически по порядку.

022.png

2) Ровно таким же способом, как описано в пунктах с 3.3.1 по 3.3.7 собираем  header.key

3) И так же, используем любой name.key

III. Конвертация не экспортируемого ключа в экспортируемый.

1) Запускаем Firewall App Blocker и запрещаем CertFix выход в интернет (я на всякий случай запретил как входящие, так и исходящие подключения).

023.png
024.png
025.png

2) Запускаем CertFix от имени администратора и находим наш ключ. Смотрим на столбец «Экспорт закрытого ключа» и видим параметр «DENIED».

3) Зажимаем клавишу «Shift» на клавиатуре, нажимаем правой кнопкой мыши по ключу и выбираем пункт «Сделать экспортируемым (файловая система)».

027.png

4) После чего, получаем уведомление, что всё прошло успешно и резервная копия лежит в папке контейнера.

28.png

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

29.png

5) Ну а дальше всё просто:
    5.1) Запускаем КриптоПро, там жмём вкладку Сервис;
    5.2) Жмём кнопку «Скопировать…»
    5.3) Затем, кнопку «Обзор…»
    5.4) Выбираем контейнер и жмём кнопку «Ок»
    5.5) Можем задать другое имя контейнеру (я оставил по умолчанию), жмём «Готово»
    5.6) Выбираем носитель (у меня Rutoken Lite), жмём «Ок»
    5.7) Готово!
    5.8) Тестируем сертификат.

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

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