Hyper-V это встроенная в новые версии Windows технология виртуализация. Но, к сожалению, Hyper-V не пробрасывает flash-накопители из основной системы в гостевую, в отличии от VMWare и, даже, VirtualBox. Если у вас стоит задача, просто, читать файлы с flash-накопителя, то проброс можно организовать средствами RDP, но если требуется прокинуть flash-накопитель с закрытым ключем, для использования в Крипто-Про, то сделать это не так-то просто. Я нашел следующее решение:

Можно скопировать закрытый ключ в реестр Windows на основной машине, средствами Крипто-Про, затем экспортировать следующую ветку реестра в reg-файл:

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

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\S-2-9-21-2883657810-1528702820-1102151106-1001\Keys\Иванов Иван Иванович 01 01 2015]

 

Для 32-битных систем:

[HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\S-2-9-21-2883657810-1528702820-1102151106-1001\Keys\Иванов Иван Иванович 01 01 2015]

 

Где «S-2-9-21-2883657810-1528702820-1102151106-1001» это идентификатор безопасности пользователя (SID), если у вас в ветке Users несколько веток с различными идентификаторами, то ищите в каждой из них нужное вам имя контейнера. Если вы засомневались, то посмотреть SID своего пользователя можно командой в командной строке Windows:

whoami /user

Примечание: Для Windows XP просмотр SID пользователя немного отличается, так как предыдущая команда не будет работать:

1. Следующей командой получаем список пользователей

net user

2. Затем получаем SID пользователя.

wmic useraccount where name="имя_пользователя" get sid

 

«Иванов Иван Иванович 01 01 2015» — это имя контейнера с закрытыми ключами.

 

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

Пример полученного REG-файла:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\S-2-9-21-2883657810-1528702820-1102151106-1001\Keys\Иванов Иван Иванович 01 01 2015]
"name.key"=hex:ee,e0,20,c4,e8,eb,e0,f0,e0,20,de,\
  ,e2,ed,e0,20,31,30,32
"header.key"=hex:3,2d,c7,5f,30,08,06,06,2a,85,03,\02,02,03,30,82,02,43,31,21,30,1f,06,09,2a,86,48,86,f7,0d,01,09,01,16,12,75,\
  75,63,5f,66,6b,40,72,6f,73,6b,61,7a,6e,61,2e,72,75,31,22,30,20,06,03,55,04,\
  09,0c,19,d1,83,d0,bb,2e,20,d0,98,d0,bb,d1,8c,d0,b8,d0,bd,d0,ba,d0,b0,20,d0,\
  b4,2e,37,31,19,30,17,06,03,55,04,07,0c,10,d0,b3,2e,20,d0,9c,d0,be,d1,81,d0,\
  ba,d0,b2,d0,b0,31,81,a2,30,81,9f,06,09,2a,86,48,86,f7,0d,01,09,02,0c,81,91,\
  d0,94,d0,b0,d0,bd,d0,bd,d1,8b,d0,b9,20,d1,81,d0,b5,d1,80,d1,82,d0,b8,d1,84,\
  d0,b8,d0,ba,d0,b0,d1,82,20,d0,be,d1,82,d0,ba,d1,80,d1,8b,d1,82,d0,be,d0,b3,\
  d0,be,20,d0,ba,d0,bb,d1,8e,d1,87,d0,b0,20,d0,b8,d1,81,d0,bf,d0,be,d0,bb,d1,\
  8c,d0,b7,d1,83,d0,b5,d1,82,d1,81,d1,8f,20,d1,81,d0,be,20,d1,81,d1,80,d0,b5,\
  d0,b4,d1,81,d1,82,d0,b2,d0,be,d0,bc,20,d0,a1,d0,9a,d0,97,d0,98,20,d0,9a,d1,\
  1d,0e,04,16,04,14,fe,95,15,4a,04,e2,92,e8,ee,0a,18,7b,27,3a,16,25,58,61,db,\
  45,30,08,06,06,2a,85,03,02,02,03,03,41,00,90,93,6a,b4,ff,d8,5a,ca,b7,6b,6f,\
  52,e8,52,e5,b6,95,d0,ee,97,d3,f4,86,6e,c3,3d,a3,34,58,0b,9a,2c,9d,d7,6d,a5,\
  28,88,97,8b,fb,39,e2,45,91,b1,71,6c,85,d2,71,e3,08,76,de,8c,75,8c,84,d7,35,\
  b4,6b,60,8a,08,8d,78,c1,1a,b8,98,2f,96,04,04,93,c1,f7,94
"primary.key"=hex:30,22,04,20,b0,cb,50,04,6c,76,52,aa,a1,cd,0f,fc,96,61,aa,01,\
  ,58,bf,ae,d9,57,c9
"masks.key"=hex:30,36,04,20,97,99,81,51,0f,97,05,80,62,32,30,aa,bd,30,e2,f6,1c,\
,90,e0,09,03,15,4e,b6,59,\
  e7,2d,24,34,04,04,62,74,57,8c
"primary2.key"=hex:30,22,04,20,d5,16,c7,54,fd,cd,06,8b,27,85,88,3c,4f,87,aa,b1,\
  60,ce,
"masks2.key"=hex:a7,62,3a,9f,ba,f4,1b,ef,73,c7,8e,c4,35,\
  57,a0,06,64,cf

Если гостевая ОС 32-х битная, а вы переносите из 64-битной ОС, то нужно удалить сегмент WOW6432Node из пути ветки в REG-файле, так как в 32-битной системе такой ветки нет. Если же, наоборот, вы переносите из 32-битной ОС в 64-битную, то сегмент WOW6432Node нужно добавить между сегментами «SOFTWARE» и «Crypto Pro»

Т.е., если строка REG-файла экспортированного из 64-битной системы выглядит следующим образом:

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Crypto Pro\Settings\Users\S-2-9-21-2883657810-1528702820-1102151106-1001\Keys\Иванов Иван Иванович 01 01 2015]

То нужно сделать:

[HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\S-2-9-21-2883657810-1528702820-1102151106-1001\Keys\Иванов Иван Иванович 01 01 2015]

А также, в данном пути нужно изменить SID-пользователя на SID-пользователя в гостевой системе. Для этого нужно в гостевой системе выполнить команду whoami /user в командной строке Windows и полученный, в результате выполнения команды, SID заменить в REG-файле вместо имеющегося. Затем сохранить REG-файл и можно его импортировать в реестр гостевой системы. После импорта, закрытый ключ должен сразу начать отображаться в ключевых носителях в Крипто-Про.

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