Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Demonix  
#1 Оставлено : 16 июля 2009 г. 16:18:59(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Из обсуждения в другой теме стало понятно, что поиск закрытого ключа по открытому сильно завязан на "файлы-ссылки", находящиеся в папке C:\Documents and Settings\логин пользователя\Application Data\Microsoft\SystemCertificates\My\Keys.
В результате обсуждения проблемы, которое можно почитать в указанной теме возникли вопросы, которые порекомендовали задать тут. Собственно, задаю:

Почему ссылка на старый контейнер остается даже после привязки сертификата к новому контейнеру?
В какой момент создаются файлы со ссылками в папке \keys и когда они обновляются?
Можно ли найти контейнер по открытом ключу, если нужный сертификат никогда не привязывался к контейнеру?
Offline Юрий  
#2 Оставлено : 16 июля 2009 г. 20:07:32(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Насчет поиска: если в сертификате есть идентификатор ключа субъекта (который по сути является хешем от публичного ключа), то можно перебирать все контейнеры для данного криптопровайдера, получать публичный ключ, создавать идентификатор данного ключа и сравнивать с идентификатором из сертификата. Насколько помню идентификатор создается путем использования CryptHashPublicKeyInfo.

Насчет этих файликов keys: как вам удалось первоначально связать сертификат с приватным ключом не сохраняя его в хранилище сертификатов? Это невозможно, данная связь является дополнительным свойством контекста сертификата. Контекст, конечно, можно получить и при импорте сертификата программно, но после связывания его же надо сохранить в хранилище, дабы все свойства сохранились. Вообщем на мой взгляд данные файлики keys это артефакты от более раннего связывания с приватным ключом контекста сертификата, у которого такой же идентификатор ключа субъекта, как и у того сертификата, который вы пытаетесь привязать к ключу без установки в хранилище. Возможно ранее установленный сертификат был как-то некорректно удален из хранилища, вот артефакты и остались.

Отредактировано пользователем 16 июля 2009 г. 20:14:26(UTC)  | Причина: Не указана

С уважением,
Юрий Строжевский
Offline Demonix  
#3 Оставлено : 17 июля 2009 г. 2:21:43(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Цитата:
можно перебирать все контейнеры для данного криптопровайдера, получать публичный ключ, создавать идентификатор данного ключа и сравнивать с идентификатором из сертификата. Насколько помню идентификатор создается путем использования CryptHashPublicKeyInfo.

Я не разработчик, я тоже техподдержка :) На сколько я знаю, поиск закрытого ключа у нас отдается полностью на откуп криптопровайдеру (могу уточнить) и поведение нашего кода (в части ошибок при поиске закрытого ключа) аналогично поведению cryptcp.

Цитата:
как вам удалось первоначально связать сертификат с приватным ключом не сохраняя его в хранилище сертификатов?

Вполне вероятно, все сертификаты, которым соответствуют файлики в \keys были когда то приявзаны к контейнеру.
Однако я проделал у себя следующее:
Установил сертификат с привязкой к контейнеру "А" (находится в реестре).
Скопировал "А", задав ему имя "Б" (тоже в реестр).
Установил сертификат с привязкой к контейнеру "Б" (ссылка в файле в папке my\keys осталась старая, а в папке my\certificates - обновилась).
Удалил контейнер "А".
Попробовал подписать файл с помощью cryptcp:
Код:

D:\download>cryptcp.exe -sign -f d:\cer.cer ms_windows.7.SKU.guide_ru.pdf ms_windows.7.SKU.guide_ru.pdf.sgn
CryptCP 3.16 (c) "Крипто-Про", 2002-2006.
Утилита командной строки для защиты данных.
 -sign      - Подписать данные и создать сообщение.

Будет использован следующий сертификат:
Субъект:Кармазин Дмитрий Иванович, 0000000000-000000000-000000000000, Karmazin D
mitry, ДПП УТП, ЗАО ПФ СКБ Контур, Екатеринбург, Свердловская, RU, email@here.ru
Действителен с 18.08.2008 07:43:00 по 18.08.2009 07:52:00

Цепочки сертификатов проверены.
Подпись данных...
Ошибка: Набор ключей не существует
 (0x80090016)


Вроде ничего криминального я не делал, и такой процесс вполне рабочий - многие пользователи копируют контейнеры с дискеты в реестр.


Цитата:
Вообщем на мой взгляд данные файлики keys это артефакты от более раннего связывания с приватным ключом контекста сертификата, у которого такой же идентификатор ключа субъекта, как и у того сертификата, который вы пытаетесь привязать к ключу без установки в хранилище.

В нашем случае, это один и тот же сертификат.

p.s.
Я еще развил тему: удалил соответствующий файл из \Keys - подписание работает (в той теме у меня была ошибка "Не удается найти сертификат и закрытый ключ для расшифровки.", но и версия криптопро у меня выше - 3.6.5371)
Удалил файл из \Certificates - и все равно подпись создается.
Скопировал контейнер, задав имя "В" и сразу удалил "Б". Подписалось (сертификат я не привязывал с "В").
Т.е. получается при использовании 3.6.5371, закрытый ключ находится и без предварительной привязки. Я еще повторю подобный сценарий на той машине, про которую писал в теме, на которую ссылаюсь в первом сообщении, чтобы убедиться, что там точно не работал подобный сценарий.
Offline Юрий  
#4 Оставлено : 17 июля 2009 г. 13:23:42(UTC)
Юрий

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Цитата:
Я не разработчик, я тоже техподдержка :)

Я разработчик, и я не работаю в Крипто-ПРО.
Цитата:
На сколько я знаю, поиск закрытого ключа у нас отдается полностью на откуп криптопровайдеру

Криптопровайдер сам ничего не ищет.
Цитата:
Скопировал "А", задав ему имя "Б" (тоже в реестр).

Завязывайте с подобными экспериментами: контейнеры ключей это сугубо внутренние структуры, с которыми работает только криптопровайдер. Имя файлика совершенно ничего не значит: возможно существование дополнительных идентификационных параметров внутри самого файла ключей, указание на место хранения контейнера, возможны дополнительные записи в реестре для правильного нахождения контейнера и так далее.
С уважением,
Юрий Строжевский
Offline Demonix  
#5 Оставлено : 17 июля 2009 г. 14:01:52(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Цитата:
Завязывайте с подобными экспериментами

Вы называете копирование контейнера с дискеты в реестр - экспериментами? Очень смешно.
Цитата:
контейнеры ключей это сугубо внутренние структуры, с которыми работает только криптопровайдер.

И пусть работает - я пользуюсь функцией "Скопировать контейнер" из панели управления КриптоПро.

Цитата:
и я не работаю в Крипто-ПРО.

Мне интересно мнение сотрудников КриптоПро насчет всего этого.
Есть факт - некоторые функции в некоторых случаях не работают. Я написал шаги для воспроизведения проблемы. Мне интересно ее решение.

Отредактировано пользователем 17 июля 2009 г. 14:07:50(UTC)  | Причина: Не указана

Offline Demonix  
#6 Оставлено : 17 июля 2009 г. 17:01:39(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Цитата:
Я еще повторю подобный сценарий на той машине, про которую писал в теме, на которую ссылаюсь в первом сообщении, чтобы убедиться, что там точно не работал подобный сценарий.


Попробовал - воспроизводится.
Берем контейнер "А" на дискете.
Устанавливаем сертификат с привязкой к контейнеру "А".
Копируем "А" в реестр, задав ему имя "Б".
Устанавливаем сертификат с привязкой к контейнеру "Б".
Вытаскиваем дискету из дисковода
Пробуем подписать файл: cryptcp.exe -sign -f d:\cer.cer ms_windows.7.SKU.guide_ru.pdf ms_windows.7.SKU.guide_ru.pdf.sgn
Выскакивает окно с просьбой вставить дискету в контейнером "А".


Либо так:

Берем контейнер "А" в реестре.
Устанавливаем сертификат с привязкой к контейнеру "А".
Копируем "А" снова в реестр, задав ему имя "Б".
Устанавливаем сертификат с привязкой к контейнеру "Б".
Удаляем контейнер "А".
Пробуем подписать файл: cryptcp.exe -sign -f d:\cer.cer ms_windows.7.SKU.guide_ru.pdf ms_windows.7.SKU.guide_ru.pdf.sgn
Получаем ошибку "Набор ключей не существует"

Ну и, как я уже писал, если просто убираю соответствующий файл из \keys - получаю "Не удается найти сертификат и закрытый ключ для расшифровки."

Это все на win xp + csp 3.6.5141.

Про 3.6.5371 (на win 2008 server x64) я уже написал.

Попробуем обновить КриптоПро на win xp.
Offline Demonix  
#7 Оставлено : 21 июля 2009 г. 12:25:14(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Demonix написал:

Это все на win xp + csp 3.6.5141.
Про 3.6.5371 (на win 2008 server x64) я уже написал.
Попробуем обновить КриптоПро на win xp.


Обновление до 3.6.5371 не помогло - поведение не изменилось.
Offline Demonix  
#8 Оставлено : 28 июля 2009 г. 1:19:32(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
up
Offline Максим Коллегин  
#9 Оставлено : 28 июля 2009 г. 5:38:53(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,377
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 706 раз в 614 постах
Предлагаю переместить обсуждение в ПМ - проблематика не очень понятна.
PS. В 3.6 по кнопке "удалить запомненные пароли" появилась возможность удалять информацию об используемых ключевых носителях.

Отредактировано пользователем 28 июля 2009 г. 5:46:46(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Demonix  
#10 Оставлено : 28 июля 2009 г. 12:44:13(UTC)
Demonix

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2007(UTC)
Сообщений: 152
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Ок, соберу все воедино и напишу в ПМ.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.