Как вытащить закрытый ключ из реестра
Перейти к содержимому

Как вытащить закрытый ключ из реестра

  • автор:

Записки IT специалиста

Перенос сертификатов и закрытых ключей CryptoPro хранящихся в реестре

  • Автор: Уваров А.С.
  • 21.09.2020

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

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

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

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

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

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

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

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

Экспорт ключей и сертификатов

Для того, чтобы правильно экспортировать закрытые ключи, нам нужно выяснить идентификатор безопасности ( SID) текущего пользователя (который работает с ЭЦП), это можно сделать командной:

wmic useraccount where name='%username%' get sid

Transfer-keys-certificates-CryptoPro-001.png

Затем откроем редактор реестра и перейдем в ветку для 32-битных систем:

HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users

для 64-битных систем:

\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users

Найдем и раскроем раздел с SID текущего пользователя и экспортируем оттуда ветку Keys.

Transfer-keys-certificates-CryptoPro-002.png

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

После чего скопируем все сертификаты, расположенные по пути

%USERPROFILE%\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates

Это открытые ключи, никакой секретности они не представляют, поэтому просто копируем их любым доступным способом.

Импорт ключей и сертификатов

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

Затем снова узнаем SID пользователя, который будет работать с ЭЦП, если это текущий пользователь, то снова выполните:

wmic useraccount where name='%username%' get sid

В противном случае:

wmic useraccount where name='Name' get sid

где Name — имя пользователя.

После чего откройте на редактирование файл реестра с экспортированными закрытыми ключами и замените в нем все вхождения старого SID на SID нового пользователя.

Transfer-keys-certificates-CryptoPro-003.png

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

Следующим шагом скопируйте сохраненные сертификаты в

%USERPROFILE%\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates

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

Как быть если доступ к старой системе невозможен?

Теория — это хорошо, но практика может подкинуть самые неожиданные ситуации. Как быть, если доступ к старой системе невозможен? Скажем вышла из строя материнская плата или серьезно повреждена операционная система?

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

С копированием сертификатов проблемы возникнуть не должно, их хранилище простая папка на диске, а вот с хранилищем закрытых ключей в реестре немного сложнее. Но не будем забывать, что системный реестр тоже хранится в файлах на диске. Вам следует любым доступным образом скопировать файл SOFTWARE из C:\Windows\System32\config

Transfer-keys-certificates-CryptoPro-004.png

Затем на целевой системе откройте редактор реестра, перейдите в раздел HKEY_LOCAL_MACHINE и через Файл — Загрузить куст подключите скопированный из старой системы раздел реестра. Дайте ему осмысленное имя, скажем OLD_SOFTWARE.

Transfer-keys-certificates-CryptoPro-005.png

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

Transfer-keys-certificates-CryptoPro-006.png

Дальнейшие действия ничем не отличаются от описанных нами в разделе Импорт ключей и сертификатов.

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

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Подпишись на наш Telegram-канал

Или подпишись на наш Телеграм-канал:

Как достать сертификат закрытого ключа ЭЦП с реестра?

Собственно случилось горе, комп уронил Windows XP.
Ну и как всегда все умные и все ЭЦП записаны в реестр, на других носителях их просто нет. часть была установлена вовсе с неделю назад..
Спасибо Сбис ЭЦП получены по каналу связи ну и .. установлены. О резервном копировании все слышали, но никто не пользуется.

Все данные восстановить удалось, но вот незадача осталась папка с реестром от старой системы C:\Windows\System32\Config
что-то мне подсказывает что оттуда можно достать эти закрытые сертификаты ключа, ну и записать на флешку например, но как это сделать и где они там болтаются не понятно.
У кого есть соображения? Никто таким не страдал ниразу

Жить хорошо. а богато жить ещё лучше icq: 321674212 tel: +7 9О9 5О5 В6В6

2 Ответ от anod 19.02.2014 00:23:45 (10 лет назад)

  • anod
  • И жить хорошо и жизнь хороша
  • Неактивен
  • Стаж: 14 лет 6 месяцев
  • Сообщений: 3 822
  • Репутация: [ 64 | 7 ]
Re: Как достать сертификат закрытого ключа ЭЦП с реестра?

Попробовать восстановит виндовс установкой поверх далее крипто про

Сисадмин
Macbook Air m1/8/256
Macbook pro 15″ Retina 2014 i7/16gb/256gb ssd
Xeon E5 2680v2/16gb/256ssd nvme/RX 560 4gb/hackintosh Majave
i5-10600K/32gb/2tb ssd nvme/RX 5700XT 8gb/hackintosh Monterey
m3788 > me45 > 6230i > 3gs > 4s > Amoi 821 > 828 > Elephone p6000 > Redmi Note 3 pro > 5 plus > Note 7 > note 9 pro > 12t pro

3 Ответ от mixall 19.02.2014 00:24:06 (10 лет назад)

Re: Как достать сертификат закрытого ключа ЭЦП с реестра?

ERD regedit, registry editor pe, поковыряться в реестре можно

У меня уже давно другой номер телефона.

4 Ответ от anod 19.02.2014 00:36:50 (10 лет назад)

  • anod
  • И жить хорошо и жизнь хороша
  • Неактивен
  • Стаж: 14 лет 6 месяцев
  • Сообщений: 3 822
  • Репутация: [ 64 | 7 ]
Re: Как достать сертификат закрытого ключа ЭЦП с реестра?

Изучил эту тему. Сделал так:
1. Запустил regedit под sysytem
2. Импортировал старый реестр в ветку — HKEY_LOCAL_MACHINE
3. Экспортировал старые ключи — пошел немного глубже сделал экспорт нужных ключей.
4. Не совсем въехал как получилось но SSID получился одинаковый поэтому ничего не менял
5. В Far-e заменой исправил название старого реестра который прицепил к новому HKEY_LOCAL_MACHINE\old_reestr на HKEY_LOCAL_MACHINE\SOFTWARE
6. Сохранил, запустил.
7. Все работает.

Здравствуйте.
На старом жёстком диске умера винда (но сами файлы реестра остались (windows\system32\config\software)). Ключи хранились только в реестре, копий нет. Вопрос: можно ли скопировав ветки реестра (HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\S-1-5-21-43413881-1930243565-692992123-2783\Keys\Имя контейнера) из файла реестра старой винды в новую таким образом перенести ключи в реестр новой винды ?
ПыСы
Копировать хочу так: Открываем regedit
щелкаем на HKEY_LOCAL_MACHINE и жмем файл=>загрузить куст, указываем «D:\windows\system32\config\software» c испорченного Windows, пишем любое название для ветки, копируем что нужно, далее файл=>выгрузить куст

Отредактировано anod ( 19.02.2014 00:37:56 , 10 лет назад)

Сисадмин
Macbook Air m1/8/256
Macbook pro 15″ Retina 2014 i7/16gb/256gb ssd
Xeon E5 2680v2/16gb/256ssd nvme/RX 560 4gb/hackintosh Majave
i5-10600K/32gb/2tb ssd nvme/RX 5700XT 8gb/hackintosh Monterey
m3788 > me45 > 6230i > 3gs > 4s > Amoi 821 > 828 > Elephone p6000 > Redmi Note 3 pro > 5 plus > Note 7 > note 9 pro > 12t pro

Выгрузка из реестра контейнера КриптоПро CSP

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

  • В x32 операционных системах контейнеры находятся в ветке: HKEY_LOCAL_MACHINE\SOFTWARE\CryptoPro\Settings\Users\\Keys\
  • В x64 операционных системах контейнеры находятся в ветке: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\\Keys\

Выберите папку Keys и выполните её экспорт.

Импорт контейнера в реестр

На том рабочем месте, куда нужно импортировать контейнеры, проверьте разрядность ОС и узнайте SID пользователя.

SID — Идентификатор безопасности пользователя ОС Windows. У каждого пользователя Windows свой SID. Для того, чтобы узнать SID пользователя запустите ОС Windows под его учетной записью, после чего перейдите в командную строку (Пуск → Выполнить → cmd) и введите команду whoami/user. Команда отобразит основные сведения о текущем пользователе, включая его SID

Пример SID: S-1-5-12-12345678-1234567890-1234567890-1234.

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

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

  1. Откройте редактор реестра (regedit.exe).
  2. В меню Файл выберите пункт Импортировать.
  3. В открывшемся окне найдите файл для импорта, выделите его и нажмите кнопку Открыть.

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

Переносим неэкспортируемые контейнеры Крипто-ПРО

Иногда случается так что необходимо перенести клиент-банк или другое разнообразное бухгалтерское и не очень ПО с одного компьютера на другой. В том случае когда в качестве криптопровайдера выступает СКЗИ Крипто-ПРО обычно проблем не возникает — СКЗИ имеет штатные средства копирования ключей. Но не всегда все гладко — в том случае, когда ключевой контейнер находится в реестре Windows, и при генерации ключа не была выставлена галочка «Пометить ключ как экспортируемый» то при попытке скопировать куда-либо этот ключ Крипто-ПРО будет ругаться и не скопирует ключ.
Из этой ситуации есть очень простой выход — выгружаем ветку реестра HKLM\SOFTWARE\CryptoPro\Settings\Users\ \Keys\(в x64 операционках контейнеры лежат в HKLM\SOFTWARE\Wow6432Node\CryptoPro\Settings\Users\ \Keys\), а на том ПК куда необходимо импортировать смотрим разрядность ОС\SID пользователя, блокнотом правим .reg файл(меняем SID и, если необходимо, путь к конечной ветке), и импортируем его в реестр.
Также этим методом очень удобно бекапить и клонировать ключи тогда, когда их много(например в аутсорс-бухгалтериях).
P.S. Не забывайте после переноса установить сертификаты из криптоконтейнеров в «Личные».

В крипто-про на контейнеры можно ставить пин-код.
А так же при вводе этого пин-кода можно поставить галочку «сохранить» — и в дальнейшем его вводить не придётся.
Иногда после этого пин-код благополучно забывают (что и произошло у нас в компании).

При копировании вышеописанным методом, контейнер остаётся защищён пин-кодом — а вот «сохранение» этого пин-кода не переносится на новый компьютер.

Что можно сделать в таком случае?

Если исходный компьютер ещё жив — заходим в панель управления -> КриптоПро CSP -> Сервис -> Скопировать
Выбираем нужный контейнер (кнопка «обзор» или «по сертификату», как проще найти) -> Далее -> вводим название нового контейнера -> далее -> устанавливаем на него новый пароль. Или не устанавливаем.

И вот после этого уже копируем ветку реестра на новый комп.

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

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

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