Token Copy — бесплатная утилита для Windows, предназначенная для просмотра и управления сертификатами и контейнерами электронной подписи на Рутокен, JaCarta и в хранилищах КриптоПро.
Программа помогает увидеть подключённые носители, проверить сертификаты, сохранить разрешённые для экспорта контейнеры, перенести их на другой совместимый носитель, удалить выбранную ЭЦП и подготовить компьютер к работе с государственными порталами.
В таком случае можно:
Доступны профили:
Установка программ и сертификатов выполняется только после подтверждения пользователя.
Такой носитель:
Любое неправомерное использование электронной подписи, чужих сертификатов или закрытых ключей может повлечь ответственность в соответствии с законодательством.
Удаление ЭЦП с аппаратного токена может быть необратимым. Перед удалением убедитесь, что выбран правильный сертификат и при необходимости существует разрешённая резервная копия.
SHA-256 файла TokenCopy-v1.32.exe:
Telegram: @markrus777
Поддержать дальнейшую разработку:
Программа помогает увидеть подключённые носители, проверить сертификаты, сохранить разрешённые для экспорта контейнеры, перенести их на другой совместимый носитель, удалить выбранную ЭЦП и подготовить компьютер к работе с государственными порталами.
Основные возможности
Работа с токенами и ЭЦП
- Автоматически обнаруживает подключение и отключение токенов.
- Поддерживает обнаружение носителей Рутокен и JaCarta.
- Показывает модель, идентификатор, версию прошивки и количество оставшихся попыток ввода PIN.
- Позволяет открыть токен с PIN или выполнить доступное анонимное чтение без PIN.
- PIN вводится в штатном защищённом окне производителя токена.
- Утилита не получает и не сохраняет введённый PIN.
- Доступ к уже открытому токену временно запоминается на 15 минут.
- При переключении между ранее открытыми токенами повторный ввод PIN в течение этого времени не требуется.
- Показывает найденные сертификаты и контейнеры КриптоПро.
- Отображает владельца сертификата, даты начала и окончания действия.
- Выделяет действующие, истекающие и просроченные сертификаты.
- Показывает контейнеры из хранилищ REGISTRY, HDIMAGE, FAT12 и CLOUD.
- Читает совместимые файловые контейнеры КриптоПро с файлами .key.
- Сохраняет открытые сертификаты в формате .cer.
- Устанавливает сертификаты в хранилища Windows и КриптоПро.
- Привязывает сертификат к соответствующему контейнеру.
- Копирует разрешённые провайдером контейнеры на другой совместимый токен.
- Сохраняет экспортируемые контейнеры в папку для последующего использования в КриптоПро.
- Удаляет выбранную ЭЦП или зарегистрированный файловый контейнер с контрольной проверкой результата.
- После удаления автоматически обновляет содержимое без повторного ввода PIN.
Важное ограничение
Если закрытый ключ создан как неэкспортируемый, Token Copy не снимает этот признак и не обходит аппаратную защиту носителя.В таком случае можно:
- сохранить открытый сертификат;
- просмотреть сведения и сроки действия;
- установить или привязать сертификат;
- использовать ключ непосредственно на исходном токене;
- удалить объект штатными средствами, если операция поддерживается производителем.
Подготовка Windows к работе с ЭЦП
В программу включён раздел подготовки рабочего места. Он помогает проверить компьютер и определить, каких компонентов не хватает для работы с электронной подписью.Доступны профили:
- Госуслуги и ФНС;
- Казначейство и СУФД;
- «Электронный бюджет»;
- защищённые сети государственных органов;
- сервисы Контур.
- КриптоПро CSP;
- КриптоПро ЭЦП Browser plug-in;
- поддерживаемого браузера;
- драйверов Рутокен;
- компонентов JaCarta;
- расширений для браузера;
- корневых и промежуточных сертификатов;
- компонентов, необходимых выбранному государственному порталу.
Установка программ и сертификатов выполняется только после подтверждения пользователя.
Диагностика рабочего места
Отдельное окно диагностики позволяет:- проверить готовность компьютера к выбранному порталу;
- увидеть найденные проблемы и рекомендации;
- проверить сроки действия сертификатов;
- обнаружить сертификаты, срок которых истекает через 7, 30 или 60 дней;
- создать и проверить локальную тестовую подпись через КриптоПро;
- сохранить безопасный диагностический отчёт;
- создать резервную копию открытых сертификатов;
- просмотреть каталог установленных профильных удостоверяющих центров;
- сохранить историю выполненных проверок.
- PIN-коды;
- закрытые ключи;
- серийные номера физических токенов;
- содержимое подписываемых документов;
- пути к контейнерам с закрытыми ключами.
Виртуальный носитель
Token Copy умеет создавать отдельный виртуальный носитель VHDX с файловой системой FAT32.Такой носитель:
- не требует уменьшения системного раздела;
- отображается в Windows как отдельный диск;
- подходит для совместимых файловых контейнеров КриптоПро;
- может автоматически подключаться после перезагрузки;
- отключается без удаления образа;
- не изменяет структуру диска C:.
Что изменилось в версии 1.32
- Исправлена отрисовка кнопок в главном окне и диагностике.
- Активные, отключённые и опасные действия теперь визуально различаются.
- Устранены чёрные и синие артефакты по краям кнопок.
- Добавлен перетягиваемый разделитель между списком носителей и списком сертификатов.
- Высоту каждого блока можно менять мышью.
- Добавлен заметный маркер захвата разделителя.
- Сохранены минимальные размеры блоков, чтобы элементы интерфейса не исчезали.
- Улучшена адаптация окна для мониторов с различным разрешением и масштабированием.
- Контакт разработчика изменён на Telegram: @markrus777.
Как пользоваться
- Установите КриптоПро CSP и официальный драйвер вашего токена.
- Запустите Token Copy.
- Подключите Рутокен или JaCarta к USB.
- Подождите автоматического появления носителя в верхнем списке.
- Выберите нужный токен.
- Нажмите «С PIN…», дважды щёлкните по токену либо используйте «Без PIN», если носитель допускает анонимный доступ.
- После открытия токена программа покажет доступные сертификаты и контейнеры.
- Выберите нужную строку — доступные для неё действия станут активными.
- Перед копированием или удалением внимательно проверьте имя владельца и срок действия сертификата.
Системные требования
- Windows 10 или Windows 11.
- Разрядность системы: x86 или x64.
- Microsoft .NET Framework 4.8.
- КриптоПро CSP для операций с контейнерами КриптоПро.
- Официальный драйвер Рутокен для соответствующих моделей.
- Единый Клиент JaCarta и компоненты PKCS#11 для расширенной работы с JaCarta.
- Права администратора для установки компонентов, сертификатов и создания виртуального носителя.
Безопасность
- PIN вводится в системном окне производителя токена.
- Программа не записывает PIN в настройки, журналы или отчёты.
- Доступ к открытому токену хранится только временно.
- Закрытые ключи не отправляются в интернет.
- Диагностика выполняется локально.
- Удаление ЭЦП требует отдельного подтверждения.
- Действия с закрытыми ключами выполняются только через установленные криптографические компоненты и в рамках разрешений провайдера.
Предупреждение
Данная утилита предназначена для работы с электронными подписями, которыми пользователь имеет право распоряжаться.Любое неправомерное использование электронной подписи, чужих сертификатов или закрытых ключей может повлечь ответственность в соответствии с законодательством.
Удаление ЭЦП с аппаратного токена может быть необратимым. Перед удалением убедитесь, что выбран правильный сертификат и при необходимости существует разрешённая резервная копия.
# Token Copy
Небольшая Windows-утилита для просмотра и штатного копирования совместимых контейнеров ЭЦП с Рутокенов и JaCarta.
Версия 1.32 получила обновлённый адаптивный интерфейс и единое окно диагностики. Высоту списков носителей и сертификатов можно менять перетаскиванием горизонтального разделителя. Состояния кнопок имеют собственную однозначную отрисовку во всех основных окнах и не зависят от темы Windows.
## Что делает
1. Автоматически обнаруживает подключение и извлечение одного или нескольких Рутокенов через официальный COM-компонент `rtComLite`.
2. Показывает устройство, метку, ID, модель, прошивку и оставшееся число попыток PIN.
3. Одинарный клик только выбирает токен и показывает варианты открытия; двойной клик или кнопка «Открыть с PIN…» запускает штатное окно драйвера.
4. Показывает найденные контейнеры КриптоПро, проверяет наличие шести компонентов старого файлового контейнера и отдельно отображает нестандартные числовые объекты токена.
5. Сохраняет открытые сертификаты в указанную папку без перезаписи существующих файлов; закрытые ключи копирует только штатным механизмом КриптоПро.
6. Показывает активные аппаратные ключи PKCS#11 отдельными строками, сохраняет их сертификаты как `.cer` и может зарегистрировать сертификат в хранилище «Личное» с привязкой к ключу на Рутокене.
7. Может полностью удалить выбранную активную ЭЦП непосредственно с токена: сертификат, открытый ключ, закрытый ключ и связанные PKCS#11-данные.
8. Может попросить КриптоПро штатно скопировать активную ЭЦП в полноценный файловый контейнер `.key`, если свойства ключа допускают экспорт.
9. Обнаруживает подключённые JaCarta через КриптоПро CSP и показывает их в общем списке устройств.
10. Копирует совместимый контейнер с одного аппаратного токена на другой штатной командой КриптоПро `csptest -keycopy`.
11. При запуске проверяет драйверы и компоненты, объясняет найденную проблему и предлагает открыть официальную страницу загрузки.
12. Может открыть незапароленный токен без показа окна PIN и прочитать только доступные без авторизации объекты.
13. Показывает локальные и файловые хранилища контейнеров КриптоПро: `HDIMAGE`, `REGISTRY`, `FAT12_*` и `CLOUD`.
14. Создаёт отдельный динамический VHDX-диск FAT32, подключает его как виртуальный файловый носитель КриптоПро и регистрирует автоматическое подключение после перезагрузки, не изменяя разделы системного диска.
15. Копирует на виртуальный носитель все доступные контейнеры выбранного источника штатной командой КриптоПро и выполняет контрольную проверку каждой копии.
16. Показывает в списке ЭЦП даты начала и окончания сертификата и понятный статус: «Действует», «Истёк», «Ещё не действует» или предупреждение об окончании в ближайшие 30 дней.
17. Содержит отдельное окно «Инструкция» с описанием одинарного и двойного клика, открытия с PIN и без PIN, кэша на 15 минут, доступных действий и правил безопасности.
18. Содержит мастер «Подготовка Windows»: проверяет Chromium-браузер, КриптоПро CSP, КриптоПро ЭЦП Browser plug-in, плагин Госуслуг и сертификаты ФНС/Минцифры; открывает официальные страницы, запускает скачанные установщики и устанавливает проверенные пользователем CA-сертификаты.
19. Через совместимый 32-битный модуль `jcPKCS11-2` напрямую перечисляет активные сертификаты JaCarta и может удалить выбранную ЭЦП после однозначной проверки связанных объектов.
20. Содержит окно «Диагностика» с проверкой профилей госпорталов, сроками 7/30/60 дней, локальной тестовой подписью, безопасным отчётом, резервной копией открытых сертификатов, каталогом профильных УЦ и обезличенной историей операций.
## Диагностика
Пункт верхнего меню **«Диагностика»** объединяет проверку готовности к Госуслугам/ФНС, СУФД, ГИИС «Электронный бюджет», защищённым сетям госорганов и сервисам Контура. Результат показывает обязательные, отсутствующие и необязательные компоненты. Это локальная проверка установленного ПО и сертификатов, а не попытка входа на портал.
Вкладка сертификатов читает хранилища `CurrentUser\\My` и `LocalMachine\\My`, показывает наличие закрытого ключа и группирует сроки: до 7, 30 и 60 дней. Счётчик требующих внимания сертификатов отображается рядом с пунктом меню.
**Тестовая подпись** использует штатную команду КриптоПро `csptest -sfsign`: создаёт временную отделённую подпись выбранного локального файла, проверяет её и удаляет. Исходный файл не меняется и не загружается в интернет; PIN запрашивает КриптоПро.
Безопасный отчёт содержит состояние компонентов и агрегированные сведения без PIN, закрытых ключей, серийных номеров и путей контейнеров. Резервная копия сохраняет только открытые сертификаты `.cer`, `containers.csv` и пояснение. История операций хранится локально в `%LocalAppData%\\TokenCopy` и не записывает имена контейнеров, содержимое файлов или PIN.
Каталог официальных сертификатов показывает найденные в Windows профильные УЦ, сроки и SHA-1-отпечатки, а для получения обновлений предоставляет ссылки только на официальные страницы ведомств. Добавление нового корневого сертификата по-прежнему требует просмотра и подтверждения пользователя.
## Подготовка Windows
Пункт верхнего меню **«Подготовка Windows»** содержит отдельные профили: **Госуслуги и ФНС**, **Казначейство — СУФД**, **ГИИС «Электронный бюджет»**, **Защищённые сети госорганов** и **Сервисы Контура**. Для каждой позиции показывается состояние и ссылка на официальную страницу производителя или ведомства. Уже скачанный с официального сайта файл `.exe`/`.msi` можно запустить из мастера с обычным запросом UAC; после завершения состояние перечитывается без перезапуска Token Copy.
Профили СУФД и «Электронного бюджета» дополнительно проверяют цепочку УЦ Федерального казначейства и наличие ГОСТ-доступа через Континент TLS/АП или Chromium-Gost; для отдельных подсистем «Электронного бюджета» показывается Jinn-Client. Профиль защищённых сетей отдельно проверяет ViPNet и напоминает, что ключевой дистрибутив, адрес узла и конкретное средство защиты выдаёт администратор ведомственной сети. `i.kontur.ru` используется только в профиле сервисов Контура и не заменяет требования Казначейства или закрытых сетей.
Мастер также принимает выбранные пользователем файлы `.cer`/`.crt`. Перед установкой он показывает субъект, издателя, срок и SHA-1-отпечаток, принимает только действующие сертификаты центров сертификации и помещает самоподписанные корни в `CurrentUser\\Root`, остальные CA-сертификаты — в `CurrentUser\\CA`. Это намеренно не полностью беззвучная операция: добавление корневого сертификата меняет доверие всей учётной записи Windows, поэтому пользователь должен проверить источник и подтвердить список.
КриптоПро CSP не включается в архив Token Copy: продукт требует отдельной лицензии, а актуальный дистрибутив может требовать входа на официальный сайт. Банковские модули не устанавливаются универсальным набором — требования, плагины и доверенные цепочки зависят от конкретного банка. Их следует добавлять отдельными профилями после проверки официальной документации банка.
## Срок действия сертификатов
В таблице контейнеров есть отдельные колонки **«Действует с»**, **«Действует до»** и **«Статус сертификата»**. Истёкшие сертификаты выделяются красным, отсутствующие, ещё не начавшиеся и заканчивающиеся в ближайшие 30 дней — жёлтым.
Для старых файловых контейнеров программа сначала одним быстрым запросом сопоставляет контейнер с сертификатом из пользовательского хранилища КриптоПро. Оставшиеся сертификаты дочитываются в фоне из самих контейнеров штатной командой `csptest -keyset -expcert`; список при этом уже виден, а в колонке показывается **«Чтение…»**. Если открытого сертификата нет ни в хранилище, ни в контейнере, показывается **«Сертификат не найден»**.
## Виртуальный носитель
Меню **«Виртуальный носитель»** позволяет создать новый файл `.vhdx`/`.vhd` размером от 50 до 1024 МБ или повторно подключить существующий образ. Программа вызывает системный DiskPart через стандартный запрос UAC, создаёт отдельный динамический диск, один раздел FAT32 и назначает выбранную свободную букву. Затем через второй подтверждённый запрос UAC регистрируется защищённая задача Windows от имени `SYSTEM`, которая автоматически подключает образ с той же буквой при запуске компьютера. Системный раздел `C:` не уменьшается и не переразмечается.
После создания можно скопировать все контейнеры текущего источника, которые КриптоПро разрешает экспортировать. Неэкспортируемые аппаратные ключи пропускаются с сообщением провайдера. После копирования утилита проверяет наличие контейнера, его ключи и заголовок через `csptest -keyset --check=6`.
Виртуальный носитель хранит контейнеры как обычные файлы и **не обеспечивает аппаратную защиту** Рутокена или JaCarta. Файл образа необходимо хранить в защищённом месте. Если автоподключение не зарегистрировано или буква занята другим диском, образ можно подключить вручную через **«Подключить существующий VHD/VHDX…»**.
## Контейнеры из панели КриптоПро
Хранилища КриптоПро отображаются в верхней таблице рядом с аппаратными токенами. Например, выберите `HDIMAGE`, чтобы увидеть в нижней таблице те же контейнеры, которые показаны в разделе «Контейнеры» инструмента КриптоПро. Для каждого контейнера показываются его имя, полный путь и тип провайдера.
Контейнер из `HDIMAGE` или другого локального хранилища можно выбрать как источник команды «Копировать на другой токен…». Кнопка удаления с токена для локальных контейнеров специально отключена, чтобы не удалить единственную локальную копию через действие с неверным названием.
## Открытие без PIN
Выберите Рутокен в верхней таблице и нажмите «Открыть без PIN». Программа не выполняет аутентификацию и не показывает окно ввода. Если все нужные объекты доступны анонимному сеансу, они появятся в таблице. Если токен или отдельные объекты требуют авторизации, чтение прекращается с подсказкой использовать «Открыть с PIN…» и штатно ввести PIN. Одинарный клик по токену не открывает окно PIN; двойной клик открывает его с PIN.
Программа намеренно не перебирает стандартные значения `12345678`, `1234567890` и `11111111`: неверная попытка уменьшает аппаратный счётчик и может заблокировать токен. Для чтения и копирования PIN вводится в штатном окне производителя или КриптоПро. Исключение — прямое удаление активной PKCS#11-ЭЦП: Token Copy запрашивает PIN, держит его только в оперативной памяти на время операции, не записывает и сразу очищает.
Для JaCarta список контейнеров КриптоПро и так перечисляется без PIN; PIN запрашивается штатным окном только при операции с закрытым ключом.
## Проверка драйверов
Token Copy проверяет регистрацию `rtCOMLite.rtContext`, загрузку 32-битной `rtPKCS11ECP.dll`, наличие `csptest.exe`, модуля поддержки JaCarta `jacarta.dll` и совместимого 32-битного модуля `jcPKCS11-2` для прямого управления активными объектами JaCarta. Если обязательный компонент отсутствует, программа показывает отдельное окно со статусом и ссылкой «Скачать…». Окно можно открыть повторно через верхнее меню «Драйверы и компоненты».
После установки нажмите «Проверить снова»: компоненты и список подключённых токенов перечитываются без закрытия Token Copy. Автоматический поиск продолжает работать каждые 1,5 секунды, поэтому новый токен появляется сам.
Ошибка ActiveX `0x800A01AD` означает отсутствие старого компонента `rtCOMLite`. Теперь он считается опциональным: стандартные токены, активные ЭЦП PKCS#11 и контейнеры КриптоПро продолжают работать через `rtPKCS11ECP.dll` и КриптоПро. Без `rtCOMLite` недоступно только расширенное чтение нестандартных файловых объектов.
Используются только официальные страницы:
- Рутокен: <https://www.rutoken.ru/support/download/windows/>
- Единый Клиент JaCarta: <https://www.aladdin-rd.ru/support/downloads/jacarta_client/>
- КриптоПро CSP: <https://www.cryptopro.ru/products/csp/downloads>
Программа не подменяет официальные источники: загрузка открывается на сайте производителя. Мастер может запустить выбранный установщик и затем перепроверить компоненты; перезапуск Token Copy обычно не требуется.
Пункт верхнего меню «О программе» содержит описание возможностей, предупреждение об ответственности, благодарность проектам `1c.akernel.ru`, `rudesk.pro`, `rudesk.pro/cleaner`, ссылки на Telegram-группы `t.me/ipro1c` и `t.me/russia1c_corp`, контакт разработчика `@markrus777` и реквизиты добровольной поддержки разработки.
Для старого файлового контейнера приложение показывает, найдены ли все шесть ожидаемых компонентов: `name.key`, `header.key`, `primary.key`, `masks.key`, `primary2.key` и `masks2.key`. Эти файлы не выгружаются напрямую из интерфейса. Для переноса используется только штатный `csptest -keycopy`, который соблюдает свойство экспортируемости ключа. Если нестандартный объект является сертификатом X.509, приложение старается показать его понятное имя.
Активный ключ PKCS#11 нельзя превратить в `primary.key/masks.key`: закрытая часть создана внутри криптоядра Рутокена и является неизвлекаемой. Для использования такой ЭЦП в КриптоПро выберите строку «Активная ЭЦП PKCS#11» и нажмите «Установить в КриптоПро». Если сертификата на токене нет, нажмите «Привязать сертификат .cer…» и выберите выданный удостоверяющим центром сертификат. Утилита проверит совпадение открытого ключа и не позволит связать чужой сертификат.
После регистрации сертификата подпись работает только при подключённом исходном Рутокене. Файл `.cer` содержит открытый сертификат, но не закрытый ключ.
## Попытка копирования в `.key`
Кнопка «Копировать в папку .key…» запускает официальный механизм `csptest -keycopy`. PIN запрашивает КриптоПро. Если провайдер разрешает экспорт выбранного ключа, на диске создаётся стандартная папка с `header.key`, `masks.key`, `name.key`, `primary.key` и дополнительными файлами контейнера.
Папка назначения должна находиться на диске, зарегистрированном КриптоПро как считыватель `FAT12_<буква>`. На проверяемом компьютере зарегистрированы диски `D:`, `E:` и `R:`. Если активный ключ помечен аппаратно неизвлекаемым, КриптоПро откажет в операции; утилита покажет его фактическую ошибку и не создаст поддельный контейнер.
## Копирование между токенами и JaCarta
Подключите оба носителя, выберите исходный контейнер и нажмите «Копировать на другой токен…». В окне выбирается целевой считыватель и имя нового контейнера. Копирование выполняет официальный механизм КриптоПро CSP; PIN исходного и целевого носителей запрашивает КриптоПро, приложение их не получает и не сохраняет. Перед запуском проверяется отсутствие контейнера с таким именем, после завершения — его фактическое появление на целевом токене.
Поддержка JaCarta реализована двумя путями. Зарегистрированные контейнеры перечисляет и копирует КриптоПро через штатный считыватель и `jacarta.dll`. Активные сертификаты дополнительно перечисляются напрямую через совместимый модуль `jcPKCS11-2`. На реальном носителе `Aladdin R.D. JaCarta 0` безопасно проверены три апплета (eToken GOST, JaCarta GOST 2.0 и JaCarta Laser), чтение сертификата, срока его действия и план сопоставления объектов. Разрушающая проверка удаления на пользовательском носителе не выполнялась. Если закрытый ключ помечен как неизвлекаемый, перенос невозможен — это ограничение токена и КриптоПро, а не интерфейса Token Copy.
## Совместимость токенов
Номер прошивки не используется как разрешение на операцию. Возможность определяется режимом ключа, установленными драйверами и тем, видит ли контейнер КриптоПро.
- Рутокен S и Рутокен Lite: копирование только пассивного экспортируемого контейнера КриптоПро; удаление зарегистрированного контейнера выполняет КриптоПро.
- Рутокен ЭЦП 2.0: модели 2000, 2100, 3000, Flash, Bluetooth и PKI. Пассивный экспортируемый контейнер можно копировать; активный PKCS#11-ключ и ФКН не копируются. Активную PKCS#11-ЭЦП можно удалить через `rtPKCS11ECP`, зарегистрированный контейнер — через КриптоПро.
- Рутокен ЭЦП 3.0: модели 3100, 3120, 3220 и NFC при контактном подключении. Ограничения копирования и удаления совпадают с Рутокен ЭЦП 2.0.
- JaCarta PKI, PRO, PKI/BIO, PKI/Flash, LT, SF/ГОСТ, JaCarta-2 ГОСТ, PKI/ГОСТ, PRO/ГОСТ, PKI/BIO/ГОСТ и SE: Token Copy работает с контейнерами, зарегистрированными через КриптоПро. Экспортируемый контейнер можно копировать, зарегистрированный контейнер можно удалить.
- При наличии совместимого 32-битного `jcPKCS11-2` программа напрямую перечисляет активные сертификаты JaCarta. Удаление разрешается только после повторного определения того же физического токена и слота и обнаружения ровно одной связанной пары открытого и закрытого ключей; при неоднозначности операция отменяется. Прямая активная ЭЦП JaCarta не копируется. JaCarta-3 не проверялась и не заявлена как поддерживаемая.
Неэкспортируемость не мешает удалению, но запрещает копирование. Удаление необратимо.
## Полное удаление ЭЦП
Обычная кнопка «Удалить ЭЦП с токена…» доступна для активной ЭЦП PKCS#11 и файлового контейнера, который фактически зарегистрирован в КриптоПро. Контрольное слово и дополнительное окно подтверждения не используются. Для активной ЭЦП приложение запрашивает пользовательский PIN, а для зарегистрированного файлового контейнера открывается штатное окно КриптоПро. Для контейнера, прочитанного только как набор файлов `rtComLite`, удаление и копирование ключа отключены: PIN не исправляет отсутствие контейнера в реестре CryptoPro. Если открытый сертификат такого контейнера найден, его можно сохранить как `.cer`.
Активная ЭЦП удаляется штатными операциями PKCS#11: приложение находит связанные объекты по ID, имени и содержимому открытого ключа, удаляет сертификат, связанные данные, открытый и закрытый ключи, затем повторно проверяет их отсутствие. Файловый контейнер удаляется официальной командой КриптоПро CSP `csptest -deletekeyset`; перед выполнением приложение однозначно определяет тип провайдера и после выполнения проверяет, что контейнер исчез из реестра контейнеров. После успешного удаления строка исчезает из списка автоматически, без повторного чтения и PIN. Операция необратима. Локальные копии сертификата в Windows не удаляются, потому что они находятся не на токене.
Строки «Нестандартные объекты токена» по-прежнему нельзя удалить этой кнопкой: у `rtComLite` нет официальной однозначной операции удаления таких групп.
Приложение не пробует стандартные PIN-коды и не разблокирует токен. PIN прямого PKCS#11-удаления существует в памяти только на время вызова библиотеки токена и очищается сразу после операции.
После успешного чтения программа на 15 минут сохраняет в оперативной памяти отдельную копию уже прочитанных сведений для каждого токена. При переключении между токенами повторный PIN в течение этого времени не требуется: достаточно одинарного клика по токену. Сам PIN не попадает в приложение и не кэшируется. При извлечении токена его временные данные немедленно очищаются; кнопка «Открыть с PIN…» выполняет новое чтение со штатным запросом PIN.
После закрытия штатного окна ввода PIN чтение файлов продолжается в отдельном STA-потоке. Основной интерфейс остаётся отзывчивым, а обычный указатель мыши принудительно восстанавливается сразу после закрытия PIN-окна и при любом завершении операции.
## Требования
- Windows 10/11 с .NET Framework 4.8;
- установленный 32-битный компонент `rtComLite` от Рутокен;
- драйвер Рутокен и/или Единый Клиент JaCarta;
- подходящая версия КриптоПро CSP с зарегистрированными аппаратными считывателями.
Утилита может диагностически перечислять данные, которые `rtComLite` разрешает прочитать после штатной авторизации, но не предлагает прямую выгрузку сырых ключевых файлов. Неэкспортируемые ключевые объекты PKCS#11 не копируются: решение принимает токен и КриптоПро CSP.
## Безопасность
Экспортированная папка содержит закрытый ключ. Не отправляйте её по обычной почте и не храните в общедоступной папке. Утилита ничего не загружает в интернет и не создаёт журнал с содержимым токена.
## Сборка
Запустите в PowerShell:
```powershell
.\build.ps1
```
Результат: `bin\TokenCopy.exe`. Приложение намеренно собирается как x86 для совместимости с 32-битным `rtComLite`.
Небольшая Windows-утилита для просмотра и штатного копирования совместимых контейнеров ЭЦП с Рутокенов и JaCarta.
Версия 1.32 получила обновлённый адаптивный интерфейс и единое окно диагностики. Высоту списков носителей и сертификатов можно менять перетаскиванием горизонтального разделителя. Состояния кнопок имеют собственную однозначную отрисовку во всех основных окнах и не зависят от темы Windows.
## Что делает
1. Автоматически обнаруживает подключение и извлечение одного или нескольких Рутокенов через официальный COM-компонент `rtComLite`.
2. Показывает устройство, метку, ID, модель, прошивку и оставшееся число попыток PIN.
3. Одинарный клик только выбирает токен и показывает варианты открытия; двойной клик или кнопка «Открыть с PIN…» запускает штатное окно драйвера.
4. Показывает найденные контейнеры КриптоПро, проверяет наличие шести компонентов старого файлового контейнера и отдельно отображает нестандартные числовые объекты токена.
5. Сохраняет открытые сертификаты в указанную папку без перезаписи существующих файлов; закрытые ключи копирует только штатным механизмом КриптоПро.
6. Показывает активные аппаратные ключи PKCS#11 отдельными строками, сохраняет их сертификаты как `.cer` и может зарегистрировать сертификат в хранилище «Личное» с привязкой к ключу на Рутокене.
7. Может полностью удалить выбранную активную ЭЦП непосредственно с токена: сертификат, открытый ключ, закрытый ключ и связанные PKCS#11-данные.
8. Может попросить КриптоПро штатно скопировать активную ЭЦП в полноценный файловый контейнер `.key`, если свойства ключа допускают экспорт.
9. Обнаруживает подключённые JaCarta через КриптоПро CSP и показывает их в общем списке устройств.
10. Копирует совместимый контейнер с одного аппаратного токена на другой штатной командой КриптоПро `csptest -keycopy`.
11. При запуске проверяет драйверы и компоненты, объясняет найденную проблему и предлагает открыть официальную страницу загрузки.
12. Может открыть незапароленный токен без показа окна PIN и прочитать только доступные без авторизации объекты.
13. Показывает локальные и файловые хранилища контейнеров КриптоПро: `HDIMAGE`, `REGISTRY`, `FAT12_*` и `CLOUD`.
14. Создаёт отдельный динамический VHDX-диск FAT32, подключает его как виртуальный файловый носитель КриптоПро и регистрирует автоматическое подключение после перезагрузки, не изменяя разделы системного диска.
15. Копирует на виртуальный носитель все доступные контейнеры выбранного источника штатной командой КриптоПро и выполняет контрольную проверку каждой копии.
16. Показывает в списке ЭЦП даты начала и окончания сертификата и понятный статус: «Действует», «Истёк», «Ещё не действует» или предупреждение об окончании в ближайшие 30 дней.
17. Содержит отдельное окно «Инструкция» с описанием одинарного и двойного клика, открытия с PIN и без PIN, кэша на 15 минут, доступных действий и правил безопасности.
18. Содержит мастер «Подготовка Windows»: проверяет Chromium-браузер, КриптоПро CSP, КриптоПро ЭЦП Browser plug-in, плагин Госуслуг и сертификаты ФНС/Минцифры; открывает официальные страницы, запускает скачанные установщики и устанавливает проверенные пользователем CA-сертификаты.
19. Через совместимый 32-битный модуль `jcPKCS11-2` напрямую перечисляет активные сертификаты JaCarta и может удалить выбранную ЭЦП после однозначной проверки связанных объектов.
20. Содержит окно «Диагностика» с проверкой профилей госпорталов, сроками 7/30/60 дней, локальной тестовой подписью, безопасным отчётом, резервной копией открытых сертификатов, каталогом профильных УЦ и обезличенной историей операций.
## Диагностика
Пункт верхнего меню **«Диагностика»** объединяет проверку готовности к Госуслугам/ФНС, СУФД, ГИИС «Электронный бюджет», защищённым сетям госорганов и сервисам Контура. Результат показывает обязательные, отсутствующие и необязательные компоненты. Это локальная проверка установленного ПО и сертификатов, а не попытка входа на портал.
Вкладка сертификатов читает хранилища `CurrentUser\\My` и `LocalMachine\\My`, показывает наличие закрытого ключа и группирует сроки: до 7, 30 и 60 дней. Счётчик требующих внимания сертификатов отображается рядом с пунктом меню.
**Тестовая подпись** использует штатную команду КриптоПро `csptest -sfsign`: создаёт временную отделённую подпись выбранного локального файла, проверяет её и удаляет. Исходный файл не меняется и не загружается в интернет; PIN запрашивает КриптоПро.
Безопасный отчёт содержит состояние компонентов и агрегированные сведения без PIN, закрытых ключей, серийных номеров и путей контейнеров. Резервная копия сохраняет только открытые сертификаты `.cer`, `containers.csv` и пояснение. История операций хранится локально в `%LocalAppData%\\TokenCopy` и не записывает имена контейнеров, содержимое файлов или PIN.
Каталог официальных сертификатов показывает найденные в Windows профильные УЦ, сроки и SHA-1-отпечатки, а для получения обновлений предоставляет ссылки только на официальные страницы ведомств. Добавление нового корневого сертификата по-прежнему требует просмотра и подтверждения пользователя.
## Подготовка Windows
Пункт верхнего меню **«Подготовка Windows»** содержит отдельные профили: **Госуслуги и ФНС**, **Казначейство — СУФД**, **ГИИС «Электронный бюджет»**, **Защищённые сети госорганов** и **Сервисы Контура**. Для каждой позиции показывается состояние и ссылка на официальную страницу производителя или ведомства. Уже скачанный с официального сайта файл `.exe`/`.msi` можно запустить из мастера с обычным запросом UAC; после завершения состояние перечитывается без перезапуска Token Copy.
Профили СУФД и «Электронного бюджета» дополнительно проверяют цепочку УЦ Федерального казначейства и наличие ГОСТ-доступа через Континент TLS/АП или Chromium-Gost; для отдельных подсистем «Электронного бюджета» показывается Jinn-Client. Профиль защищённых сетей отдельно проверяет ViPNet и напоминает, что ключевой дистрибутив, адрес узла и конкретное средство защиты выдаёт администратор ведомственной сети. `i.kontur.ru` используется только в профиле сервисов Контура и не заменяет требования Казначейства или закрытых сетей.
Мастер также принимает выбранные пользователем файлы `.cer`/`.crt`. Перед установкой он показывает субъект, издателя, срок и SHA-1-отпечаток, принимает только действующие сертификаты центров сертификации и помещает самоподписанные корни в `CurrentUser\\Root`, остальные CA-сертификаты — в `CurrentUser\\CA`. Это намеренно не полностью беззвучная операция: добавление корневого сертификата меняет доверие всей учётной записи Windows, поэтому пользователь должен проверить источник и подтвердить список.
КриптоПро CSP не включается в архив Token Copy: продукт требует отдельной лицензии, а актуальный дистрибутив может требовать входа на официальный сайт. Банковские модули не устанавливаются универсальным набором — требования, плагины и доверенные цепочки зависят от конкретного банка. Их следует добавлять отдельными профилями после проверки официальной документации банка.
## Срок действия сертификатов
В таблице контейнеров есть отдельные колонки **«Действует с»**, **«Действует до»** и **«Статус сертификата»**. Истёкшие сертификаты выделяются красным, отсутствующие, ещё не начавшиеся и заканчивающиеся в ближайшие 30 дней — жёлтым.
Для старых файловых контейнеров программа сначала одним быстрым запросом сопоставляет контейнер с сертификатом из пользовательского хранилища КриптоПро. Оставшиеся сертификаты дочитываются в фоне из самих контейнеров штатной командой `csptest -keyset -expcert`; список при этом уже виден, а в колонке показывается **«Чтение…»**. Если открытого сертификата нет ни в хранилище, ни в контейнере, показывается **«Сертификат не найден»**.
## Виртуальный носитель
Меню **«Виртуальный носитель»** позволяет создать новый файл `.vhdx`/`.vhd` размером от 50 до 1024 МБ или повторно подключить существующий образ. Программа вызывает системный DiskPart через стандартный запрос UAC, создаёт отдельный динамический диск, один раздел FAT32 и назначает выбранную свободную букву. Затем через второй подтверждённый запрос UAC регистрируется защищённая задача Windows от имени `SYSTEM`, которая автоматически подключает образ с той же буквой при запуске компьютера. Системный раздел `C:` не уменьшается и не переразмечается.
После создания можно скопировать все контейнеры текущего источника, которые КриптоПро разрешает экспортировать. Неэкспортируемые аппаратные ключи пропускаются с сообщением провайдера. После копирования утилита проверяет наличие контейнера, его ключи и заголовок через `csptest -keyset --check=6`.
Виртуальный носитель хранит контейнеры как обычные файлы и **не обеспечивает аппаратную защиту** Рутокена или JaCarta. Файл образа необходимо хранить в защищённом месте. Если автоподключение не зарегистрировано или буква занята другим диском, образ можно подключить вручную через **«Подключить существующий VHD/VHDX…»**.
## Контейнеры из панели КриптоПро
Хранилища КриптоПро отображаются в верхней таблице рядом с аппаратными токенами. Например, выберите `HDIMAGE`, чтобы увидеть в нижней таблице те же контейнеры, которые показаны в разделе «Контейнеры» инструмента КриптоПро. Для каждого контейнера показываются его имя, полный путь и тип провайдера.
Контейнер из `HDIMAGE` или другого локального хранилища можно выбрать как источник команды «Копировать на другой токен…». Кнопка удаления с токена для локальных контейнеров специально отключена, чтобы не удалить единственную локальную копию через действие с неверным названием.
## Открытие без PIN
Выберите Рутокен в верхней таблице и нажмите «Открыть без PIN». Программа не выполняет аутентификацию и не показывает окно ввода. Если все нужные объекты доступны анонимному сеансу, они появятся в таблице. Если токен или отдельные объекты требуют авторизации, чтение прекращается с подсказкой использовать «Открыть с PIN…» и штатно ввести PIN. Одинарный клик по токену не открывает окно PIN; двойной клик открывает его с PIN.
Программа намеренно не перебирает стандартные значения `12345678`, `1234567890` и `11111111`: неверная попытка уменьшает аппаратный счётчик и может заблокировать токен. Для чтения и копирования PIN вводится в штатном окне производителя или КриптоПро. Исключение — прямое удаление активной PKCS#11-ЭЦП: Token Copy запрашивает PIN, держит его только в оперативной памяти на время операции, не записывает и сразу очищает.
Для JaCarta список контейнеров КриптоПро и так перечисляется без PIN; PIN запрашивается штатным окном только при операции с закрытым ключом.
## Проверка драйверов
Token Copy проверяет регистрацию `rtCOMLite.rtContext`, загрузку 32-битной `rtPKCS11ECP.dll`, наличие `csptest.exe`, модуля поддержки JaCarta `jacarta.dll` и совместимого 32-битного модуля `jcPKCS11-2` для прямого управления активными объектами JaCarta. Если обязательный компонент отсутствует, программа показывает отдельное окно со статусом и ссылкой «Скачать…». Окно можно открыть повторно через верхнее меню «Драйверы и компоненты».
После установки нажмите «Проверить снова»: компоненты и список подключённых токенов перечитываются без закрытия Token Copy. Автоматический поиск продолжает работать каждые 1,5 секунды, поэтому новый токен появляется сам.
Ошибка ActiveX `0x800A01AD` означает отсутствие старого компонента `rtCOMLite`. Теперь он считается опциональным: стандартные токены, активные ЭЦП PKCS#11 и контейнеры КриптоПро продолжают работать через `rtPKCS11ECP.dll` и КриптоПро. Без `rtCOMLite` недоступно только расширенное чтение нестандартных файловых объектов.
Используются только официальные страницы:
- Рутокен: <https://www.rutoken.ru/support/download/windows/>
- Единый Клиент JaCarta: <https://www.aladdin-rd.ru/support/downloads/jacarta_client/>
- КриптоПро CSP: <https://www.cryptopro.ru/products/csp/downloads>
Программа не подменяет официальные источники: загрузка открывается на сайте производителя. Мастер может запустить выбранный установщик и затем перепроверить компоненты; перезапуск Token Copy обычно не требуется.
Пункт верхнего меню «О программе» содержит описание возможностей, предупреждение об ответственности, благодарность проектам `1c.akernel.ru`, `rudesk.pro`, `rudesk.pro/cleaner`, ссылки на Telegram-группы `t.me/ipro1c` и `t.me/russia1c_corp`, контакт разработчика `@markrus777` и реквизиты добровольной поддержки разработки.
Для старого файлового контейнера приложение показывает, найдены ли все шесть ожидаемых компонентов: `name.key`, `header.key`, `primary.key`, `masks.key`, `primary2.key` и `masks2.key`. Эти файлы не выгружаются напрямую из интерфейса. Для переноса используется только штатный `csptest -keycopy`, который соблюдает свойство экспортируемости ключа. Если нестандартный объект является сертификатом X.509, приложение старается показать его понятное имя.
Активный ключ PKCS#11 нельзя превратить в `primary.key/masks.key`: закрытая часть создана внутри криптоядра Рутокена и является неизвлекаемой. Для использования такой ЭЦП в КриптоПро выберите строку «Активная ЭЦП PKCS#11» и нажмите «Установить в КриптоПро». Если сертификата на токене нет, нажмите «Привязать сертификат .cer…» и выберите выданный удостоверяющим центром сертификат. Утилита проверит совпадение открытого ключа и не позволит связать чужой сертификат.
После регистрации сертификата подпись работает только при подключённом исходном Рутокене. Файл `.cer` содержит открытый сертификат, но не закрытый ключ.
## Попытка копирования в `.key`
Кнопка «Копировать в папку .key…» запускает официальный механизм `csptest -keycopy`. PIN запрашивает КриптоПро. Если провайдер разрешает экспорт выбранного ключа, на диске создаётся стандартная папка с `header.key`, `masks.key`, `name.key`, `primary.key` и дополнительными файлами контейнера.
Папка назначения должна находиться на диске, зарегистрированном КриптоПро как считыватель `FAT12_<буква>`. На проверяемом компьютере зарегистрированы диски `D:`, `E:` и `R:`. Если активный ключ помечен аппаратно неизвлекаемым, КриптоПро откажет в операции; утилита покажет его фактическую ошибку и не создаст поддельный контейнер.
## Копирование между токенами и JaCarta
Подключите оба носителя, выберите исходный контейнер и нажмите «Копировать на другой токен…». В окне выбирается целевой считыватель и имя нового контейнера. Копирование выполняет официальный механизм КриптоПро CSP; PIN исходного и целевого носителей запрашивает КриптоПро, приложение их не получает и не сохраняет. Перед запуском проверяется отсутствие контейнера с таким именем, после завершения — его фактическое появление на целевом токене.
Поддержка JaCarta реализована двумя путями. Зарегистрированные контейнеры перечисляет и копирует КриптоПро через штатный считыватель и `jacarta.dll`. Активные сертификаты дополнительно перечисляются напрямую через совместимый модуль `jcPKCS11-2`. На реальном носителе `Aladdin R.D. JaCarta 0` безопасно проверены три апплета (eToken GOST, JaCarta GOST 2.0 и JaCarta Laser), чтение сертификата, срока его действия и план сопоставления объектов. Разрушающая проверка удаления на пользовательском носителе не выполнялась. Если закрытый ключ помечен как неизвлекаемый, перенос невозможен — это ограничение токена и КриптоПро, а не интерфейса Token Copy.
## Совместимость токенов
Номер прошивки не используется как разрешение на операцию. Возможность определяется режимом ключа, установленными драйверами и тем, видит ли контейнер КриптоПро.
- Рутокен S и Рутокен Lite: копирование только пассивного экспортируемого контейнера КриптоПро; удаление зарегистрированного контейнера выполняет КриптоПро.
- Рутокен ЭЦП 2.0: модели 2000, 2100, 3000, Flash, Bluetooth и PKI. Пассивный экспортируемый контейнер можно копировать; активный PKCS#11-ключ и ФКН не копируются. Активную PKCS#11-ЭЦП можно удалить через `rtPKCS11ECP`, зарегистрированный контейнер — через КриптоПро.
- Рутокен ЭЦП 3.0: модели 3100, 3120, 3220 и NFC при контактном подключении. Ограничения копирования и удаления совпадают с Рутокен ЭЦП 2.0.
- JaCarta PKI, PRO, PKI/BIO, PKI/Flash, LT, SF/ГОСТ, JaCarta-2 ГОСТ, PKI/ГОСТ, PRO/ГОСТ, PKI/BIO/ГОСТ и SE: Token Copy работает с контейнерами, зарегистрированными через КриптоПро. Экспортируемый контейнер можно копировать, зарегистрированный контейнер можно удалить.
- При наличии совместимого 32-битного `jcPKCS11-2` программа напрямую перечисляет активные сертификаты JaCarta. Удаление разрешается только после повторного определения того же физического токена и слота и обнаружения ровно одной связанной пары открытого и закрытого ключей; при неоднозначности операция отменяется. Прямая активная ЭЦП JaCarta не копируется. JaCarta-3 не проверялась и не заявлена как поддерживаемая.
Неэкспортируемость не мешает удалению, но запрещает копирование. Удаление необратимо.
## Полное удаление ЭЦП
Обычная кнопка «Удалить ЭЦП с токена…» доступна для активной ЭЦП PKCS#11 и файлового контейнера, который фактически зарегистрирован в КриптоПро. Контрольное слово и дополнительное окно подтверждения не используются. Для активной ЭЦП приложение запрашивает пользовательский PIN, а для зарегистрированного файлового контейнера открывается штатное окно КриптоПро. Для контейнера, прочитанного только как набор файлов `rtComLite`, удаление и копирование ключа отключены: PIN не исправляет отсутствие контейнера в реестре CryptoPro. Если открытый сертификат такого контейнера найден, его можно сохранить как `.cer`.
Активная ЭЦП удаляется штатными операциями PKCS#11: приложение находит связанные объекты по ID, имени и содержимому открытого ключа, удаляет сертификат, связанные данные, открытый и закрытый ключи, затем повторно проверяет их отсутствие. Файловый контейнер удаляется официальной командой КриптоПро CSP `csptest -deletekeyset`; перед выполнением приложение однозначно определяет тип провайдера и после выполнения проверяет, что контейнер исчез из реестра контейнеров. После успешного удаления строка исчезает из списка автоматически, без повторного чтения и PIN. Операция необратима. Локальные копии сертификата в Windows не удаляются, потому что они находятся не на токене.
Строки «Нестандартные объекты токена» по-прежнему нельзя удалить этой кнопкой: у `rtComLite` нет официальной однозначной операции удаления таких групп.
Приложение не пробует стандартные PIN-коды и не разблокирует токен. PIN прямого PKCS#11-удаления существует в памяти только на время вызова библиотеки токена и очищается сразу после операции.
После успешного чтения программа на 15 минут сохраняет в оперативной памяти отдельную копию уже прочитанных сведений для каждого токена. При переключении между токенами повторный PIN в течение этого времени не требуется: достаточно одинарного клика по токену. Сам PIN не попадает в приложение и не кэшируется. При извлечении токена его временные данные немедленно очищаются; кнопка «Открыть с PIN…» выполняет новое чтение со штатным запросом PIN.
После закрытия штатного окна ввода PIN чтение файлов продолжается в отдельном STA-потоке. Основной интерфейс остаётся отзывчивым, а обычный указатель мыши принудительно восстанавливается сразу после закрытия PIN-окна и при любом завершении операции.
## Требования
- Windows 10/11 с .NET Framework 4.8;
- установленный 32-битный компонент `rtComLite` от Рутокен;
- драйвер Рутокен и/или Единый Клиент JaCarta;
- подходящая версия КриптоПро CSP с зарегистрированными аппаратными считывателями.
Утилита может диагностически перечислять данные, которые `rtComLite` разрешает прочитать после штатной авторизации, но не предлагает прямую выгрузку сырых ключевых файлов. Неэкспортируемые ключевые объекты PKCS#11 не копируются: решение принимает токен и КриптоПро CSP.
## Безопасность
Экспортированная папка содержит закрытый ключ. Не отправляйте её по обычной почте и не храните в общедоступной папке. Утилита ничего не загружает в интернет и не создаёт журнал с содержимым токена.
## Сборка
Запустите в PowerShell:
```powershell
.\build.ps1
```
Результат: `bin\TokenCopy.exe`. Приложение намеренно собирается как x86 для совместимости с 32-битным `rtComLite`.
SHA-256 файла TokenCopy-v1.32.exe:
Поддержка проекта
Большая благодарность за поддержку:- 1c.akernel.ru — команда АКЕРНЕЛ по обслуживанию «1С:Предприятия», официальный франчайзи.
- rudesk.pro — удалённое управление компьютерами.
- rudesk.pro/cleaner — очистка ПК от мусора и временных файлов.
- Купить ключи КриптоПро: https://t.me/ipro1c
- Telegram-группа по 1С: https://t.me/russia1c_corp
Telegram: @markrus777
Поддержать дальнейшую разработку: