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

Уведомление

Icon
Error

4 Страницы«<234
Опции
К последнему сообщению К первому непрочитанному
Offline Влад Степанов  
#31 Оставлено : 16 июля 2012 г. 20:29:12(UTC)
Влад Степанов

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

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

>Наверно возможен такой путь.
Возможен [аналогично можно добавить/убрать сертификат].
Либо формировать PKCS#7 с помощью CryptEncodeObject, используя типы PKCS7_SIGNER_INFO, PKCS_CONTENT_INFO_SEQUENCE_OF_ANY (в том числе с нулем элементов), X509_OCTET_STRING, часть типов закодировать вручную (простейших - NULL, SET, массив, сопоставляя свой результат с нужным с помощью dumpasn1.exe). Сертификат потом можно добавить и высокоуровневыми функциями.
Offline Андрей Виноградов  
#32 Оставлено : 3 сентября 2012 г. 18:52:54(UTC)
Андрей Виноградов

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

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

В случае если мы хотим создать штамп времени на существующую подпись(продлить срок действия подписи), то мы можем взять хэш для этого из упомянутого выше атрибута szOID_RSA_messageDigest ?

или нужно самим считать хэш от файла подписи (через вызов CryptHashData) ?
Offline Новожилова Елена  
#33 Оставлено : 12 сентября 2012 г. 17:59:13(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
В атрибуте szOID_RSA_messageDigest хранится хэш-значение документа, а не подпись.
Offline Ахат  
#34 Оставлено : 27 августа 2013 г. 12:43:04(UTC)
Ахат

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

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

Сказал(а) «Спасибо»: 5 раз
Следующий вопрос был задан в другой теме http://www.cryptopro.ru/...p;m=41477&#post41477 ,
но он также очень близок текущей теме.

1. Формирую подпись с помощью CryptSignMessage("сертификатX"), где есть атрибуты rgAuthAttr (как минимум это szOID_RSA_signingTime).
2. Беру из нее хэш CryptMsgGetParam(CMSG_COMPUTED_HASH_PARAM).
3. hProv = CryptAcquireContext("ключевой контейнер, соответствующий сертификатуX")
4. CryptCreateHash(hProv)
5. и устанавливаю туда значение хэша CryptSetHashParam(HP_HASHVAL)
6. считаем значение "голой" подписи CryptSignHash()
7. получаем значение "голой" подписи (из подписи, полученной на шаге 1) CryptMsgGetParam(CMSG_ENCRYPTED_DIGEST)

Почему значения, полученные в пунктах 6 и 7 не совпадают, даже с точностью до переворачивания последовательности байтов?
Как же вычислять значение, получаемое на шаге 7?
Offline Андрей Писарев  
#35 Оставлено : 27 августа 2013 г. 13:08:31(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,342
Мужчина
Российская Федерация

Сказал «Спасибо»: 550 раз
Поблагодарили: 2212 раз в 1727 постах
Автор: Ахат Перейти к цитате
Следующий вопрос был задан в другой теме http://www.cryptopro.ru/...p;m=41477&#post41477 ,
но он также очень близок текущей теме.

1. Формирую подпись с помощью CryptSignMessage("сертификатX"), где есть атрибуты rgAuthAttr (как минимум это szOID_RSA_signingTime).
2. Беру из нее хэш CryptMsgGetParam(CMSG_COMPUTED_HASH_PARAM).
3. hProv = CryptAcquireContext("ключевой контейнер, соответствующий сертификатуX")
4. CryptCreateHash(hProv)
5. и устанавливаю туда значение хэша CryptSetHashParam(HP_HASHVAL)
6. считаем значение "голой" подписи CryptSignHash()
7. получаем значение "голой" подписи (из подписи, полученной на шаге 1) CryptMsgGetParam(CMSG_ENCRYPTED_DIGEST)

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


Все правильно.
Это специфика ГОСТ
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Ахат оставлено 27.08.2013(UTC)
Offline krasnov  
#36 Оставлено : 8 декабря 2014 г. 14:47:01(UTC)
krasnov

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

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

Сказал(а) «Спасибо»: 1 раз
Приветствую!

Возникла необходимость в таком функционале:
1) на сервере из большого файла сделать хэш
2) передать его удаленному клиенту
3) он его подписывает CryptSignHash
4) заворачивает подпись с сертифкатом в PKCS7 как отделенную подпись
5) возвращает PKCS7 на сервер

по сообщениям #30 - Смирнова и далее #31 - Влада Степанова сделал такой алгоритм
0) клиент передает серверу алгоритм хэша из сертификата
1) сервер делает хэш из файла по этому алгоритму
2) передает клиенту полученный хэш
3) клиент подписывает его методом CryptSignHash - получает simpleSig и переворачивает
4.1) затем подписывает служебную-константу(любую информацию, в приложенных файлах три байта 00, 11, 22) через CryptMsgOpenToEncode, CryptMsgUpdate - получается отделенная подпись PKCS7Sig
4.2) потом делает CryptMsgOpenToDecode берет из PKCS7Sig структуру cmsSignerInfo типа CMSG_CMS_SIGNER_INFO методом CryptMsgGetParam(,CMSG_CMS_SIGNER_INFO_PARAM,)
4.3) меняет cmsSignerInfo.EncryptedHash на simpleSig
4.4) через CryptMsgControl(,CMSG_CTRL_ADD_CMS_SIGNER_INFO,) кладется в PKCS7Sig структура cmsSignerInfo
4.5) через CryptMsgControl(,CMSG_CTRL_DEL_SIGNER,) удаляется старая подпись
4.6) получает PKCS7Sig методом CryptMsgGetParam(,CMSG_ENCODED_MESSAGE,)
5) возвращает полученные PKCS7Sig на сервер

Если подписывать sha1 ключем то проверяется хорошо, а вот если ГОСТ то говорит что подпись не верна. :(

Подскажите, где ошибся, что не доделал?
Вложение(я):
Archive.zip (3kb) загружен 12 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Новожилова Елена  
#37 Оставлено : 8 декабря 2014 г. 14:58:27(UTC)
Новожилова Елена

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

Группы: Администраторы, Участники
Зарегистрирован: 10.12.2008(UTC)
Сообщений: 924
Женщина
Откуда: Крипто-Про

Поблагодарили: 99 раз в 95 постах
В подписи ГОСТ у вас есть подписанные атрибуты, в "негост" - нет. Поэтому подпись и не сходится.
http://cpdn.cryptopro.ru...p39/html/cadesattrs.html
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
krasnov оставлено 10.12.2014(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
4 Страницы«<234
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.