Rutoken-S Подписывается документ при отсутствии ключа...

rutoken-S 32k
клиент - windows 7 x64 sp1 ru
сервер Домен'а и сервер CA на W2k12 en

на клиенте драйвера ruToken
сертификат на основе Smartcard User (экспортируемый)

опыт 1:
последовательность действий:
создал сертификат на пользователя по вышезаданнаму шаблону. экспортировал сертификат с ключом в PFX12
удалил из локального профиля сертификат.
через Rutoken Control Panel отформатировал рутокен (новыми паролями).
импортировал PFX в рутокен (галочку разрешить экспорт ключа не ставил).
итог: аутентификация работает на ура....

опыт 2:
подписание документа: XPS
печатаем XPS. открываем XPS и говорим добавить подпись - выбираем нашего пользователя и получаем Aktiv ruToken CSP v1.0 сообщение о введении PIN для подписи.
итог: документ подписан.

ОПЫТ 3:
извлекаем ruToken (если заблокировалась windows аутентифицируемся по паролю)
открываем XPS и говорим добавить подпись - выбираем нашего пользователя и вуаля !!! документ подписан !!!
итог: документ подписан. ???????  почему ?????

зачищаем персональное хранилище сертификатов у пользователя.
естественно ничего не подписывается в связи с отсутствием сертификатов.
вставляем rutoken, и тут же его извлекаем.... в реестре у нас появляется сертификат с закрытым ключом!!! и подпись проходит на ура. без наличия rutoken'а.

Плиз объясните данное поведение, когда закрытый ключ доступен без отчуждаемого носителя, и как предотвратить подобное кэширование закрытого ключа?

(при создании ключа есть возможность выбрать криптопровайдера, но в моем CA нет ruToken'овского как его установить если это возможно).

с Уважением.
Дмитрий,
MCSA:Security

Re: Rutoken-S Подписывается документ при отсутствии ключа...

Вдогонку:
данный глюк или фитча происходит только если ключ и сертификат соответственно принадлежат текущему пользователю.
при попытке подписи с "чужого" рутокена все проходит "штатно" при установленном рутокене запрашивает пин и подписывает. при отсутствии, возникает "неадекватная ошибка о сохранении документа" (это на совести XPS viewer'а оставим) и документ не подписывается.

Re: Rutoken-S Подписывается документ при отсутствии ключа...

govard236 пишет:

Вдогонку:
данный глюк или фитча происходит только если ключ и сертификат соответственно принадлежат текущему пользователю.
при попытке подписи с "чужого" рутокена все проходит "штатно" при установленном рутокене запрашивает пин и подписывает. при отсутствии, возникает "неадекватная ошибка о сохранении документа" (это на совести XPS viewer'а оставим) и документ не подписывается.

Судя по описанию Вы каким-то образом импортировали pfx вместе с сертификатом и закрытым ключом в локальное хранилище текущего пользователя.
См. также: https://msdn.microsoft.com/en-us/librar … s.85).aspx


govard236 пишет:

(при создании ключа есть возможность выбрать криптопровайдера, но в моем CA нет ruToken'овского как его установить если это возможно).

Aktiv Rutoken CSP устанавливается вместе с драйвером токена. Так что для установки нужно просто установить драйвер. Еще надо обратить внимание на версию шаблона сертификата.
При копировании шаблона автоматически задается версия шаблона сертификатов. При этом, если минимально поддерживаемым центром сертификации (minimum supported CAs) выбирается Windows Server 2003 Enterprise - то создается шаблон сертификата версии 2. Если Windows Server 2008 Enterprise - то создается шаблон сертификата версии 3. Основное отличие применительно к  этой проблеме следующее: шаблон версии 2 ожидает установленный CSP (cryptographic service provider), а шаблон версии 3 ожидает CNG (cryptography next generation) provider. В Windows Server 2012 появилась новая версия шаблонов сертификатов - версия 4. Диалог "Свойства нового шаблона" при копировании снова был переделан.
Теперь во вкладке "Шифрование" можно выбрать категорию поставщика: Устаревший поставщик служб шифрования (CSP) или Поставщик хранилища ключей (KSP). Соответственно, если выбрать первый вариант, то Aktiv ruToken CSP v1.0 становится виден и использование шаблона можно ограничить только этим CSP.
Версия шаблонов сертификатов (версия схемы) определяется во вкладке "Совместимость" - в зависимости от выбранных ОС Центра сертификации и ОС Получателя сертификата назначается и версия шаблона сертификатов. Таким образом, можно использовать Aktiv ruToken CSP v1.0 и четвертую версию шаблонов сертификатов.

Re: Rutoken-S Подписывается документ при отсутствии ключа...

В продолжение по третьему опыту.

Не могли бы Вы уточнить, с помощью какого CSP (или CNG + KSP) выписываете сертификат в Личное хранилище?

Рабочей версией является следующая:
При удалении сертификата из личного хранилища не удаляется из ОС закрытый ключ. При подключении токена срабатывает служба распространения сертификатов и сертификат с токена попадает в Личное хранилище. При подписании документа при подключенном токене используется закрытый ключ на токене, при отсутствии токена отрабатывает Microsoft'овский CSP и закрытый ключ не удаленный ранее.

Таким образом, как написал выше мой коллега, проблема решается выписыванием сертификата сразу на токен с помощью Aktiv ruToken CSP v1.0, а непосредственно третий опыт требует дополнительного исследования.

Заранее спасибо за помощь.

Re: Rutoken-S Подписывается документ при отсутствии ключа...

Стрелец Данил пишет:

В продолжение по третьему опыту.
Не могли бы Вы уточнить, с помощью какого CSP (или CNG + KSP) выписываете сертификат в Личное хранилище?

специально не задавал CSP оставлял все по умолчанию. т.е. как понимаю Microsoft'овский какой-то.

Огромное спасибо.
установил на CA драйвера рутокен и дополнительно огромное спасибо за расписание особенностей версий сертификатов. самый новый не обязательно самый полезный ))). при выборе версии 2003 появился CSP Rotoken. после чего получилось выписать сертификат непосредственно на token.
после чего все стало работать штатно - не подписывает при отсутствии token'а.
не знал, что закрытые ключи сохраняются в системе после удаления сертификата (((.

p.s.
сертификацию проходил уже лет 10 назад и все подзабылось....