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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline miser  
#11 Оставлено : 26 марта 2013 г. 14:31:46(UTC)
miser

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

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
Хотя бы потому, что сам провайдер, инициализированный на контейнере, не подсказывает тип ключа.

Метод CryptAcquireCertificatePrivateKey возвращает тип ключа. Но, для этого надо открыть хранилище, найти сертификат.
Лазить по хранилищу гораздо дороже, чем выполнить один if.
Offline Kirill Sobolev  
#12 Оставлено : 26 марта 2013 г. 14:44:46(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
Хотя бы потому, что сам провайдер, инициализированный на контейнере, не подсказывает тип ключа.

В контейнере может быть 0 ключей, а может быть 2 ключа - какой тип в этих случаях должен подсказать провайдер?
Цитата:
Метод CryptAcquireCertificatePrivateKey возвращает тип ключа.

Потому что у сертификата есть ссылка на ключ. Если ее нет - CryptAcquireCertificatePrivateKey вернет ошибку.
Цитата:
Лазить по хранилищу гораздо дороже, чем выполнить один if.

Если Вам все равно, каким ключем из контейнера подписывать и нет планов разворачивать PKI, то дороже.
Техническую поддержку оказываем тут
Наша база знаний
Offline miser  
#13 Оставлено : 26 марта 2013 г. 15:41:07(UTC)
miser

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

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
Цитата:

В контейнере может быть 0 ключей, а может быть 2 ключа - какой тип в этих случаях должен подсказать провайдер?

С каждым разом все интереснее и интереснее. Честное слово.
Каким способом можно перебрать ключи в контейнере? Нет функции CryptEnumKey. Есть только CryptGetUserKey. И последней надо указывать, либо AT_SIGNATURE, либо AT_KEYEXCHANGE.

Цитата:

Если Вам все равно, каким ключом из контейнера подписывать и нет планов разворачивать PKI, то дороже.

Интересно. При чем здесь PKI? Это проблема принимающей стороны - проверять мою подпись. Я же могу оказаться и тем злостным нарушителем, что перехватывает пакеты, меняет и подставляет некую подпись.
Я, наверное, что-то упустил в PKI. Там только идет построение цепочки сертификатов к моему сертификату. Наличие моего сертификата в хранилище не обязательно.

Теперь, по поводу ключей. В сертификате указано, что ключ используется для подписи и для обмена (верификации пользователя).
Программа csptest говорит, что ключа подписи в контейнере нет. Программа csptestf подписывает файл.
Сертификат можно получить из контейнера закрытого ключа. Это показывает программа certmgr.
Где вы обнаружили у меня ошибку?
Offline Kirill Sobolev  
#14 Оставлено : 26 марта 2013 г. 16:41:00(UTC)
Кирилл Соболев

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

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

Поблагодарили: 177 раз в 168 постах
Цитата:
Есть только CryptGetUserKey. И последней надо указывать, либо AT_SIGNATURE, либо AT_KEYEXCHANGE.

Совершенно верно, и этой функции достаточно - в контейнере не может быть больше одного ключа каждого типа. Перебирать не нужно.
Цитата:
Интересно. При чем здесь PKI? Это проблема принимающей стороны - проверять мою подпись. Я же могу оказаться и тем злостным нарушителем, что перехватывает пакеты, меняет и подставляет некую подпись.
Я, наверное, что-то упустил в PKI. Там только идет построение цепочки сертификатов к моему сертификату. Наличие моего сертификата в хранилище не обязательно.

PKI - это несколько более широкое понятие, чем проверка подписи и сертификата на отзыв.
Как пишет википедия
Цитата:
Инфраструктура открытых ключей (англ. PKI - Public Key Infrastructure) — набор средств (технических, материальных, людских и т. д.), распределенных служб и компонентов, в совокупности используемых для поддержки криптозадач на основе закрытого и открытого ключей.

Т.е. если у Вас единственный ключевой контейнер и Вы не планируете создавать подпись PKCS#7, то можно работать только с ключами, без сертификатов.
Цитата:
Теперь, по поводу ключей. В сертификате указано, что ключ используется для подписи и для обмена (верификации пользователя).
Программа csptest говорит, что ключа подписи в контейнере нет. Программа csptestf подписывает файл.
Сертификат можно получить из контейнера закрытого ключа. Это показывает программа certmgr.
Где вы обнаружили у меня ошибку?

Ошибки нет - ключем обмена можно подписывать, но не наоборот.
Техническую поддержку оказываем тут
Наша база знаний
Offline shuras  
#15 Оставлено : 27 ноября 2013 г. 15:32:48(UTC)
shuras

Статус: Новичок

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

Извиняюсь что влез в тему. Возник вопрос сродни обсуждавшемуся.
Автор: ahtoh Перейти к цитате
На Windows в CAPI есть метод CryptFindCertificateKeyProvInfo, на Linux я его не нашел, подскажите пожалуйста как мне его реализовать.

Автор: maxdm Перейти к цитате
Перечислить криптопровайдеры, в каждом криптопровайдере перечислить контейнеры и сравнить открытые ключи.


Стоит такая же проблема. Собственно и решил ее так же как и предлагалось но теперь повились шифрованные контейнеры и все стало интересней.
CryptExportPublicKeyInfo похоже желает получить пин от контейнера чтобы достать публичный ключ. Как в таком случае правильно поступать?
Можно конечно в лоб. Пробежаться по всем нешифрованным контейнерам и если публичный ключ не найден то запросить пин и еще раз по всем шифрованным с полученным пином.
Работать то будет но боюсь не самый лучший вариант пытаться ломиться во все подряд контейнеры с паролем от одного из них. Каждый раз будет попытка расшифровки затратная?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.