. Кривизна и ненадежность процедуры навели на мысли о том, что неплохо бы сделать резервную копию секретного ключа. Судя по тому, что 5110 аппаратно не поддерживает алгоритмы ГОСТ, а SafeNet Authentication Client Tools по-прежнему не видит на ключе никаких контейнеров/сертификатов, КриптоПро до сих пор держит закрытые ключи в файловой системе eToken в собственном формате, извлекая их оттуда при вычислении подписи.
В сети полно инструкций по извлечению секретного ключа с разных моделей РуТокен с помощью утилит Tokens и CertFix от Контура, но eToken 5110 и 72k эти утилиты не видят. Они принципиально не умеют с ними работать, или им нужны какие-то особые драйверы/службы для РуТокен?
Кто имел дело с файловыми системами ключей — посоветуйте, как проще это сделать. Может, есть какой хак для КриптоПро?
. Кривизна и ненадежность процедуры навели на мысли о том, что неплохо бы сделать резервную копию секретного ключа. Судя по тому, что 5110 аппаратно не поддерживает алгоритмы ГОСТ, а SafeNet Authentication Client Tools по-прежнему не видит на ключе никаких контейнеров/сертификатов, КриптоПро до сих пор держит закрытые ключи в файловой системе eToken в собственном формате, извлекая их оттуда при вычислении подписи.
ЕМ>В сети полно инструкций по извлечению секретного ключа с разных моделей РуТокен с помощью утилит Tokens и CertFix от Контура, но eToken 5110 и 72k эти утилиты не видят. Они принципиально не умеют с ними работать, или им нужны какие-то особые драйверы/службы для РуТокен?
ЕМ>Кто имел дело с файловыми системами ключей — посоветуйте, как проще это сделать. Может, есть какой хак для КриптоПро?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Судя по тому, что 5110 аппаратно не поддерживает алгоритмы ГОСТ, а SafeNet Authentication Client Tools по-прежнему не видит на ключе никаких контейнеров/сертификатов, КриптоПро до сих пор держит закрытые ключи в файловой системе eToken в собственном формате, извлекая их оттуда при вычислении подписи.
Вообще-то он умеет java и элептические кривые поддерживает, так что может быть и не извлекаемый. Тогда просто еще пару ключей создайте. (Не отзывая старых конечно же )
ЕМ>Кто имел дело с файловыми системами ключей — посоветуйте, как проще это сделать. Может, есть какой хак для КриптоПро?
Вообще криптопро если ключ извлекаемый умеет делать копию и потом бэкап на флешку и оттуда уже можно вынуть.
C 2022 года в РФ были отменены все сертификаты ФСТЭК, выданные на иностранное оборудование. По этой причине eToken 5110 пока не может быть сертифицирован ФСТЭК.
Спасибо, находил уже это в поиске. Но я с Java знаком только на уровне запуска полных готовых программ, а делать что-то свое на основе коротких примеров, боюсь, будет слишком геморройно.
BE>По нормальному на новых токенах ключ должен быть не извлекаем.
5110 как раз достаточно старый — я его покупал еще в 2017-м. В прошлом году мне на него записали сертификат в отделении ФНС, а вчера я туда же записал новый сертификат, полученный через браузер. Пока не могу понять, в каком формате там лежит секретный ключ.
Спасибо, видел. Если не найду более готового решения, то придется и так.
_>ps:
C 2022 года в РФ были отменены все сертификаты ФСТЭК, выданные на иностранное оборудование. По этой причине eToken 5110 пока не может быть сертифицирован ФСТЭК.
То есть, можно считать, что ключ просто лежит в контейнере, формально помеченном, как неизвлекаемый?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>То есть, можно считать, что ключ просто лежит в контейнере, формально помеченном, как неизвлекаемый?
Нет. Если бы вы генерировали ключ в браузере и сохранили его в контейнере на компьютере. Он бы лёг в реест. И тогда он элементарно извлекается даже если помечен как не извлекаемый.
Но если вы генерировали секретный ключ токеном, то он не покидал токена и он его низачто не отдаст ни при каких обстоятельствах. Только аппаратно, снимать компаунд, кислотой травить слой за слоем и коротить дорожки под микроскопом (и обычно даже там есть мины, чтоб так не делали). (При условии что это действительно токен, а не флешка).
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, BlackEric, Вы писали:
BE>>https://coderanch.com/t/646136/java/Extract-private-Key-Etoken
ЕМ>Спасибо, находил уже это в поиске. Но я с Java знаком только на уровне запуска полных готовых программ, а делать что-то свое на основе коротких примеров, боюсь, будет слишком геморройно.
Там принцип показан, так то можно на любом языке сделать. Все зависит от библиотеки токена и как был сгенерирован ключ.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, kov_serg, Вы писали:
_>>Если бы вы генерировали ключ в браузере извлекаемый. _>>Но если вы генерировали секретный ключ токеном
ЕМ>Так весь вопрос в том, как именно генерировался ключ на нижнем уровне. На верхнем-то всегда браузер.
Как обычно это происходит.
1. генерируется секретный ключ (точка на эллиптической кривой)
2. генерируется публичный ключ и запрос на сертификат.
3. этот запрос уходит на сторону, которая подписывает сертификат своим ключом и возвращает сертификат
4. в сертификате только открытый ключ, но он подписан удостоверяющим центром и там еще добавляют доп поля, типа назначения адреса явки инн и т.п.
5. вот этот сертификат тоже кладётся в токен. его он отдаёт без вопросом. но секретный ключ от него никогда (если специально не указано обратное).
Здравствуйте, Евгений Музыченко, Вы писали:
_>>Как обычно это происходит.
ЕМ>Точнее, "как это должно происходить". А я хочу узнать, как это происходило в конкретно моем случае.
Отзовите и сгенерируйте в криптопрошный контейнер новый. И потом делайте резервные копии на флекшу ( на диск и в сеть он не хочет, только флешки )
Здравствуйте, kov_serg, Вы писали:
_>Отзовите и сгенерируйте в криптопрошный контейнер новый.
Так он всегда кладет в новый контейнер. Старый контейнер остается.
_>И потом делайте резервные копии на флекшу ( на диск и в сеть он не хочет, только флешки )
Ничего не понял. Если он сейчас не делает резервных копий, отчего вдруг станет их делать на следующий раз?
Здравствуйте, BlackEric, Вы писали:
BE>можно на любом языке сделать. Все зависит от библиотеки токена
Ну вот экспорты C_OpenSession, C_FindObjects я в экспортах их DLL вижу. А где брать определения констант (Token.SessionType.SERIAL_SESSION, Token.SessionReadWriteBehavior.RW_SESSION и прочих)? В приведенных примерах их импортируют из каких-то известных библиотек. Если это SDK производителя, то где его брать? Просто так они его не дают.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, BlackEric, Вы писали:
BE>>можно на любом языке сделать. Все зависит от библиотеки токена
ЕМ>Ну вот экспорты C_OpenSession, C_FindObjects я в экспортах их DLL вижу. А где брать определения констант (Token.SessionType.SERIAL_SESSION, Token.SessionReadWriteBehavior.RW_SESSION и прочих)? В приведенных примерах их импортируют из каких-то известных библиотек. Если это SDK производителя, то где его брать? Просто так они его не дают.
У производителя обычно есть софт для работы с токеном. Если ключ извлекаем, то в этом софте будет такая функция. Если ключ не извлекаем, то его не извлечь, для того аппаратный токен и придумали, в общем-то.
Если там программное ограничение, то это жуткая халтура, я не думаю, что такое может существовать.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Ничего не понял. Если он сейчас не делает резервных копий, отчего вдруг станет их делать на следующий раз?
Если сгенерировать ключ не токеном, а криптопром то он будет физически лежать в реестре винды.
Есть утилита которая позволяет убрать галочку не извлекаемый приватный ключ.
Далее штатным способом просите сделать бэкап приватного ключа и сертификата на флешку.
Далее можете вынуть оттуда приватный ключи и потом openssl-ем подписывать что угодно.
Либо просто использовать как резервную копию распечатав в виде qr-кода base64 от приватного ключа и т.п.
Но если вы сгенерировали приватный ключ токеном, то он его без боя не отдаст.
Здравствуйте, kov_serg, Вы писали:
_>Если сгенерировать ключ не токеном, а криптопром то он будет физически лежать в реестре винды.
Лежать он будет там, куда его положит сгенерировавший софт (в данном случае КриптоПро). И в том виде, который задаст КриптоПро, и который будет поддерживать токен.
_>Есть утилита которая позволяет убрать галочку не извлекаемый приватный ключ.
Если Вы про Tokens.exe, то она предназначена для РуТокен, а eToken она не видит. Возможно, ее можно как-то научить, но я не нашел.
_>Далее штатным способом просите сделать бэкап приватного ключа и сертификата на флешку.
Угу.
_>Но если вы сгенерировали приватный ключ токеном, то он его без боя не отдаст.
Да знаю я. А толку от этого знания? Сперва надо понять, как именно был сгенерирован ключ. Есть идеи?
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Лежать он будет там, куда его положит сгенерировавший софт (в данном случае КриптоПро). И в том виде, который задаст КриптоПро, и который будет поддерживать токен.
Нет. Если его генерит криптопро то он будет лежать в контейнере криптопро. А если токен то внутри токена.
ЕМ>Если Вы про Tokens.exe, то она предназначена для РуТокен, а eToken она не видит. Возможно, ее можно как-то научить, но я не нашел.
Нет. Я про то что если вы получаете сертификат через интернет, то секретный ключ генерируете вы и потом отправляете запрос на получения сертификата, его подписывают и отдают вам.
У стороны которая подписывает сертификат нет понятия где у вас секретный ключ. На токене или на бумаге или еще где. Секретный ключ это просто случайное число, просто длинное.
_>>Но если вы сгенерировали приватный ключ токеном, то он его без боя не отдаст. ЕМ>Да знаю я. А толку от этого знания? Сперва надо понять, как именно был сгенерирован ключ. Есть идеи?
Еще раз получите сертификат, генерируйте ключ не токеном, а криптопрой. Его потом можно легко бэкапить и вынуть если хочется.