- PVSM.RU - https://www.pvsm.ru -

Извлечение ключа из токена с неизвлекаемым ключом

Извлечение ключа из токена с неизвлекаемым ключом - 1

Довольно часто при оформлении сертификатов ключей электронной подписи можно наблюдать навязчивый пиар токенов с неизвлекаемым ключом. Продавцы из удостоверяющих центров уверяют, что, купив у них СКЗИ КриптоПРО CSP [1] и токен с неизвлекаемым ключом (Рутокен ЭЦП [2] или JaCarta ГОСТ [3]), мы получим сертифицированные СКЗИ, обеспечивающие 100%-ную защиту от кражи ключей с токена. Но так ли это на самом деле? Для ответа на этот вопрос проведем простой эксперимент…

Конфигурация тестового стенда

Соберем тестовый стенд с конфигурацией, типовой для машин, участвующих в электронном документообороте (ЭДО):

  1. ОС MS Windows 7 SP1
  2. СКЗИ КриптоПРО CSP 3.9.8423
  3. Драйверы Рутокен для Windows (x86 и x64). Версия: v.4.1.0.0 от 20.06.2016, WHQL-certified
  4. Единый Клиент JaCarta и JaCarta SecurLogon. Версия 2.9.0 сборка 1531
  5. КриптоАРМ Стандарт Плюс 5. Версия 5.2.0.8847.

Для тестирования будут использоваться токены с неизвлекамым ключом:

  1. Рутокен ЭЦП. Версия 19.02.14.00 (02)
  2. JaCarta ГОСТ. Номер модели JC001-2.F09 v2.1

Методика тестирования

Смоделируем типовой процесс подготовки Администратором информационной безопасности ключевых документов для организации ЭДО:

  1. генерируется контейнер закрытого ключа и запрос на сертификат открытого ключа;
  2. после прохождения в удостоверяющем центре процедуры сертификации из запроса получается сертификат;
  3. сертификат в совокупности с контейнером закрытого ключа образует готовую для использования ключевую информацию. Данную ключевую информацию, записанную на носителе, будем называть исходным ключевым документом;
  4. с исходного ключевого документа изготавливаются копии, которые записываются на отчуждаемые носители (далее будем называть их рабочими ключевыми документами) и передаются уполномоченным пользователям;
  5. после изготовления необходимого количества рабочих ключевых документов исходный ключевой документ уничтожается или депонируется на хранение в орган криптографической защиты информации.

В нашем случае мы не будем пользоваться услугами центров сертификации, а сгенерируем ключевой контейнер с самоподписанным сертификатом и разместим его в реестре компьютера (АРМа генерации ключевой информации), это и будет исходный ключевой документ. Затем скопируем ключевую информацию на Рутокен ЭЦП и JaCarta ГОСТ, изготовив рабочие ключевые документы. После этого уничтожим исходный ключевой документ, удалив из реестра ключевой контейнер. И, наконец, попробуем скопировать ключевую информацию с рабочих ключевых документов обратно в реестр.

Проведение тестирования

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

Описание

Для этого с помощью КриптоАРМ создадим в реестре контейнер закрытого ключа test-key-reestr, содержащий самоподписанный сертификат (CN=test)
Извлечение ключа из токена с неизвлекаемым ключом - 2
Извлечение ключа из токена с неизвлекаемым ключом - 3
Извлечение ключа из токена с неизвлекаемым ключом - 4
Извлечение ключа из токена с неизвлекаемым ключом - 5
Извлечение ключа из токена с неизвлекаемым ключом - 6
Извлечение ключа из токена с неизвлекаемым ключом - 7
Извлечение ключа из токена с неизвлекаемым ключом - 8
Извлечение ключа из токена с неизвлекаемым ключом - 9
Извлечение ключа из токена с неизвлекаемым ключом - 10

2.Сформируем рабочие ключевые документы.

Описание

С помощью штатных средств СКЗИ КриптоПРО CSP (Пуск-->Панель управления-->КриптоПро CSP) скопируем ключевой контейнер test-key-reestr на ключевые носители Рутокен ЭЦП и JaCarta ГОСТ. Ключевым контейнерам на ключевых носителях присвоим имена test-key-rutoken и test-key-jacarta соответственно.
Описание приведено применительно к JaCarta ГОСТ (для Рутокен ЭЦП действия аналогичны):
Извлечение ключа из токена с неизвлекаемым ключом - 11
Извлечение ключа из токена с неизвлекаемым ключом - 12
Извлечение ключа из токена с неизвлекаемым ключом - 13
Извлечение ключа из токена с неизвлекаемым ключом - 14
Извлечение ключа из токена с неизвлекаемым ключом - 15
Таким образом получили рабочие ключевые документы на JaCarta ГОСТ (контейнер test-key-jacarta) и Рутокен ЭЦП (контейнер test-key-rutoken).

3.Уничтожим исходный ключевой документ

Описание

Штатными средствами СКЗИ КриптоПРО CSP удалим из реестра ключевой контейнер test-key-reestr.

4. Скопируем ключевую информацию из рабочих ключевых документов

Описание

Попробуем скопировать ключевые контейнеры test-key-rutoken и test-key-jacarta обратно в реестр.
Описание приведено для JaCarta ГОСТ (для Рутокен ЭЦП действия аналогичны).
Извлечение ключа из токена с неизвлекаемым ключом - 16
Извлечение ключа из токена с неизвлекаемым ключом - 17
Извлечение ключа из токена с неизвлекаемым ключом - 18
Извлечение ключа из токена с неизвлекаемым ключом - 19
Извлечение ключа из токена с неизвлекаемым ключом - 20
Извлечение ключа из токена с неизвлекаемым ключом - 21
Извлечение ключа из токена с неизвлекаемым ключом - 22
Извлечение ключа из токена с неизвлекаемым ключом - 23

Как мы видим, ключевая информация успешно скопирована или, другим языком, извлечена из токенов с неизвлекаемым ключом. Получается, что производители токенов и СКЗИ врут? На самом деле нет, и ситуация сложнее, чем кажется на первый взгляд. Исследуем матчасть по токенам.

Матчасть

То, что на рынке принято называть токеном с неизвлекаемым ключом, правильно называется функциональным ключевым носителем (ФКН) [4] (доп. инфо [5]).

Главным отличием ФКН от обычных токенов (Рутокен S [6], JaCarta PKI [7], …) в том, что при выполнении криптографических преобразований (например, формирование электронной подписи) закрытый ключ не покидает устройство. В то время как при использовании обычных токенов закрытый ключ копируется с токена в память комптьютера.

Использование ФКН требует особой организации взаимодействия между прикладным криптографическим ПО и библиотекой СКЗИ (криптопровайдером или, по-другому, CSP).

Извлечение ключа из токена с неизвлекаемым ключом - 24

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

По-новому взглянем на наш тестовый стенд

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

Извлечение ключа из токена с неизвлекаемым ключом - 25

В последней строке указана фраза «Поддержка КриптоПРО ФКН: Нет», а это значит, что на токене нет апплета, с которым умеет работать СКЗИ КриптоПРО CSP. Таким образом, реализация технологии ФКН с использованием СКЗИ и токенов, описанных в конфигурации тестового стенда, невозможна.

Аналогичная ситуация и с JaCarta ГОСТ. Более того, СКЗИ КриптоПРО CSP, по крайней мере та версия, которая использовалась в тестовом стенде, использует данные ключевые носители как «обычные токены», которые, в свою очередь, являются просто носителями ключа.

Это утверждение очень просто подтвердить. Для этого надо поставить СКЗИ КриптоПРО CSP на чистую машину без драйверов от токенов и подключить токен JaCarta ГОСТ. ОС Windows 7 обнаружит токен JaCarta ГОСТ как «Устройство чтения смарт-карт Microsoft Usbccid (WUDF)». теперь можно попробовать создать ключ на токене и скопировать его в реестр компьютера. Весь функционал СКЗИ успешно отработает.

Как сделать, чтобы все было хорошо?

Чтобы с помощью продуктов ООО “КРИПТО-ПРО” реализовать технологию ФКН, необходимо:

1. Купить специальную версию библиотеки СКЗИ:
— для Рутокен ЭЦП — СКЗИ КриптоПРО Рутокен CSP [8].
— для JaCarta ГОСТ – СКЗИ КриптоПро ФКН CSP [9].

2. Одновременно с библиотекой СКЗИ необходимо приобрести специально подготовленные токены, содержащие в себе программные части (апплеты), с которыми умеет работать КриптоПРО Рутокен CSP или КриптоПро ФКН CSP соответственно.

Получается, что Рутокен ЭЦП и JaCarta ГОСТ не являются токенами с неизвлекаемым ключом?

Опять нет. Данные устройства могут реализовывать функционал ФКН (но, возможно, в меньшем объеме, чем при использовании их совместно с СКЗИ КриптоПРО), но для этого нужен софт, который умеет работать с апплетами размещенными на токенах. Таким софтом может быть КриптоАРМ Стандарт 5 Плюс [10]. Он это умеет [11]. При генерации ключевой пары в мастере КриптоАРМ можно выбрать криптопровайдер, который будет использоваться, например, Rutoken ECP или eToken GOST. Это и позволит использовать токен как ФКН.

Извлечение ключа из токена с неизвлекаемым ключом - 26

Выводы

  • Не верьте продавцам, чушь вам городящим. Использование обычных версий криптопровайдера КриптоПРО CSP [1] и обычных Рутокен ЭЦП или JaCarta ГОСт не позволяют реализовать технологию ФКН.
  • Для использования технологии ФКН совместно с продуктами ООО «КРИПТО-ПРО» необходимы как специально подготовленные токены, содержащие апплет, с которым умеет работать СКЗИ, так и специальные версии криптопровайдера КриптоПРО CSP [12], которые умеют работать с апплетом на токенах.
  • Рутокен ЭЦП и JaCarta ГОСТ умеет самостоятельно реализовывать технологию ФКН, но для этого необходим специальный софт.

Автор: imbasoft

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/rutoken-e-tsp/161857

Ссылки в тексте:

[1] СКЗИ КриптоПРО CSP: http://www.cryptopro.ru/products/csp

[2] Рутокен ЭЦП: http://www.rutoken.ru/products/all/rutoken-ecp/

[3] JaCarta ГОСТ: http://www.aladdin-rd.ru/catalog/jacarta/gost/

[4] функциональным ключевым носителем (ФКН): http://www.cryptopro.ru/products/fkc/info

[5] доп. инфо: http://www.cryptopro.ru/blog/2014/12/04/semnye-nositeli-i-bezopasnoe-khranenie-klyuchei

[6] Рутокен S: http://www.rutoken.ru/products/all/rutoken-s/

[7] JaCarta PKI: http://www.aladdin-rd.ru/catalog/jacarta/pki/

[8] СКЗИ КриптоПРО Рутокен CSP: http://www.cryptopro.ru/products/fkc/rutoken

[9] СКЗИ КриптоПро ФКН CSP: http://www.cryptopro.ru/products/fkc/etoken

[10] КриптоАРМ Стандарт 5 Плюс: http://www.trusted.ru/products/desktop/

[11] умеет: http://www.trusted.ru/wp-content/uploads/comparison.pdf

[12] специальные версии криптопровайдера КриптоПРО CSP: http://www.cryptopro.ru/products/fkc

[13] Источник: https://habrahabr.ru/post/306034/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best