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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Skarvon  
#1 Оставлено : 5 августа 2014 г. 11:36:47(UTC)
Skarvon

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

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

Сказал «Спасибо»: 3 раз
Сначала перебираю (инумерую) провайдеры CryptEnumProviders, потом для каждого выбранного провайдера перебираю его контейнеры CryptGetProvParam с параметром PP_ENUMCONTAINERS, так вод контейнеры перебираются ото всех провайдеров (с типами PROV_GOST_2001_DH, PROV_GOST_2012_256 и PROV_GOST_2012_512). В итоге беру контейнер с ключом ГОСТ 2012 для провайдера, к примеру PROV_GOST_2001_DH, и подписание не работает, возникает ошибка 0x80090008, "Указан неправильный алгоритм".
У вас почему-то отсутствует привязка типа провайдера с типом контейнера. Мне кажется это ошибка, с Microsoft RSA типами провайдеров такого не происходит, и в противном случае эту привязку придётся обеспечивать где-то в пользовательской программе, что тоже, на мой взгляд, не корректно.
Offline Станислав Смышляев  
#2 Оставлено : 5 августа 2014 г. 12:56:24(UTC)
Станислав Смышляев

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

Группы: Участники
Зарегистрирован: 10.04.2013(UTC)
Сообщений: 186
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 81 раз в 62 постах
Добрый день!

Не могли бы Вы более подробно описать производимые Вами действия? В частности, каким образом Вы формируете подпись - какой объект функции хэширования Вы подаете на вход?
С уважением,
Станислав Смышляев, к.ф.-м.н.,
Заместитель генерального директора ООО "КРИПТО-ПРО"
Техническую поддержку оказываем здесь.
Наша база знаний.
Offline Skarvon  
#3 Оставлено : 5 августа 2014 г. 13:54:54(UTC)
Skarvon

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

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

Сказал «Спасибо»: 3 раз
В том-то и дело, что функции хеширования я подаю хеш не того алгоритма, которому соответствуют найденный контейнер ключей.
Т.е., в вышеописанном примере, перебирая провайдеры и контейнеры, я выбираю (определённым образом) контейнер с ключом ГОСТ 2010, а провайдер при этом у меня PROV_GOST_2012_512 (т.е. тип провайдера соответствует алгоритму ГОСТ 2012-512 бит). Далее, исходя из типа провайдера, я предполагаю что у меня ключ ГОСТ 2012-512, и соответсвенно вычисляю хеш значение по алгоритму CALG_GR3411_2012_512 (а должен с CALG_GR3411) и соответственно получаю ошибку при формировании подписи.
Просто нет никакой возможности (в MS Crypto API) по имени контейнера ключей определить какому ГОСТ алгоритму они соответствуют (тип провайдера вернётся тот, с каторым был выполнен перебор контейнеров). Можно только, предварительно выбрав провайдер, перебрать контейнеры. А здесь, все првайдеры (PROV_GOST_2001_DH, PROV_GOST_2012_256 и PROV_GOST_2012_512) перебирают одни и те же контейнеры независимо от версии алгоритмов, с которыми они были созданы.
Offline Станислав Смышляев  
#4 Оставлено : 5 августа 2014 г. 14:45:23(UTC)
Станислав Смышляев

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

Группы: Участники
Зарегистрирован: 10.04.2013(UTC)
Сообщений: 186
Российская Федерация

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

Задача, о которой Вы говорите, наиболее естественно решается исходя из свойств ключа (ведь именно ключу приписываются правила работы с алгоритмами хэширования). Таким образом, следует получить дескриптор ключа (GetUserKey) и запросить его KP_ALGID, после чего определить порядок дальнейшей работы с ним (в частности, выбрать уместный алгоритм хэширования).

Без ввода пин-кода на ключ Вы можете не только запросить алгоритм открываемого ключа (KP_ALGID), но и, например, приписанный ключу оид хэша (KP_HASHOID), если Вам кажется это более логичным.
С уважением,
Станислав Смышляев, к.ф.-м.н.,
Заместитель генерального директора ООО "КРИПТО-ПРО"
Техническую поддержку оказываем здесь.
Наша база знаний.
thanks 1 пользователь поблагодарил Станислав Смышляев за этот пост.
Skarvon оставлено 06.08.2014(UTC)
Offline Skarvon  
#5 Оставлено : 6 августа 2014 г. 11:18:41(UTC)
Skarvon

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

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

Сказал «Спасибо»: 3 раз
Да, это поможет, спасибо большое
Offline Станислав Смышляев  
#6 Оставлено : 6 августа 2014 г. 11:20:49(UTC)
Станислав Смышляев

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

Группы: Участники
Зарегистрирован: 10.04.2013(UTC)
Сообщений: 186
Российская Федерация

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 81 раз в 62 постах
Пожалуйста, всегда рады помочь.
С уважением,
Станислав Смышляев, к.ф.-м.н.,
Заместитель генерального директора ООО "КРИПТО-ПРО"
Техническую поддержку оказываем здесь.
Наша база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.