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

Уведомление

Icon
Error

8 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline alegul  
#1 Оставлено : 27 сентября 2012 г. 18:55:47(UTC)
alegul

Статус: Участник

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

Добрый день. Подскажите пожалуйста, реализуема ли следующая задача средствами КриптоПро CSP 3.6:

Имеем массив байт и электронную подпись этого массива байт в формате CMS.
Необходимо написать сервис проверки этой электронной подписи. Но на вход сервису подаётся подпись в формате CMS и гостовый хеш от данных (т.е. не сами данные, а именно хеш).

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

Не нашёл в WinCryptoApi функции, позволяющей это сделать.
Есть ли способы?
Как мне видится если CMS не содержит подписываемых атрибутов, это может быть реализуемо.
А если подписываемые атрибуты есть, тут могут быть трудности.. Есть ли варианты в этом случае?

Пролейте свет пожалуйста.
Offline Максим Коллегин  
#2 Оставлено : 27 сентября 2012 г. 19:04:09(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Придется вручную разбирать CMS сообщение. Если в подписи есть подписанные аттрибуты - то хэш лежит прямо в подписи, если нет (что бывает редко) придется чуть сложнее разбираться.
Знания в базе знаний, поддержка в техподдержке
Offline alegul  
#3 Оставлено : 20 октября 2012 г. 19:42:10(UTC)
alegul

Статус: Участник

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

Максим, спасибо за ответ. Но поясните пожалуйста ещё.
Я не понял, почему если есть подписываемые атрибуты, будет проще.

Да, в случае когда есть подписываемые атрибуты, то хеш содержится в одном их них, и проверить соответствие этого хеша значению хеша, которое прислали, просто.
Но остаётся же ещё операция проверки значения подписи. И она требуется в обоих случаях - и когда есть подписываемые атрибуты и когда нет.

Я внимательно прочитал rfc3852 (много узнал :-)), и насколько я понимаю, в моём случае (когда при проверке нет данных, а есть только хеш данных), алгоритм должен быть следующий:
1. Расшифровать значение подписи открытым ключом
2. Если подписываемых атрибутов нет, сравнить имеющийся хеш с результатом пункта 1, конец проверки.
3. Если подписываемые атрибуты есть, сравнить имеющийся хеш с хешом из подписываемых атрибутов, посчитать хеш от подписываемых атрибутов, сравнить с результатом пункта 1

Т.е. схема вроде как понятна, но в случае когда есть подписываемые атрибуты, она немного сложней.

Насколько правильный на ваш взгляд приведённый алгоритм проверки подписи?
Offline Максим Коллегин  
#4 Оставлено : 21 октября 2012 г. 21:10:04(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
В случае ГОСТ понятие шифрование к подписи неприменимо. Ее лишь можно проверять. Так что алгоритм неверен)
Знания в базе знаний, поддержка в техподдержке
Offline alegul  
#5 Оставлено : 6 декабря 2012 г. 2:22:18(UTC)
alegul

Статус: Участник

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

Максим, для подписей, содержащих подписываемые атрибуты всё получилось, спасибо.

Прошу вас подсказать, как быть с подписями, не содержащими подписываемые атрибуты.
Проблема в следующем:
Для проверки подписи по хешу используется функция CryptVerifySignature.
Первым параметром в неё передаётся объект функции хеширования HCRYPTHASH. Этот параметр создаётся (функцией CryptCreateHash) для вычисления хеша исходных подписанных данных. Я не нашёл в описании CryptoAPI способа создать HCRYPTHASH, имея не исходные данные, а готовый хеш. Таким образом мне неоткуда взять HCRYPTHASH, чтобы передать его в CryptVerifySignature, и не могу проверить подпись по хешу.
Посоветуйте, что можно сделать, в какую сторону копать?
Offline Максим Коллегин  
#6 Оставлено : 6 декабря 2012 г. 13:45:44(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
CryptSetHashParam HP_HASHVAL
Знания в базе знаний, поддержка в техподдержке
Offline alegul  
#7 Оставлено : 6 декабря 2012 г. 14:38:50(UTC)
alegul

Статус: Участник

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

Спасибо!
Offline dmishin  
#8 Оставлено : 22 октября 2013 г. 7:30:49(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Кто-нибудь может поделиться полным примером кода на Java для проверки подписи по хешу?
Offline dmishin  
#9 Оставлено : 23 октября 2013 г. 12:32:54(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
По документации не смог найти такую функциональность в Cryptopro JCP...
Offline Юрий  
#10 Оставлено : 23 октября 2013 г. 12:39:12(UTC)
Юрий

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
По документации не смог найти такую функциональность в Cryptopro JCP...

А что функции типа "CryptSignHash" в JCP нет?
С уважением,
Юрий Строжевский
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
8 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.