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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Новожилова Елена  
#11 Оставлено : 5 июля 2013 г. 12:12:52(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
В BASE64 вы кодируете "подпись в hex" или все-таки приводите сначала к бинарному виду? Кстати в плагин добавлена поддержка XMLDSig. В скором времени появятся примеры создания сообщений для взаимодействия со СМЭВ. http://www.cryptopro.ru/...posts&t=1387&p=2
Offline dmishin  
#12 Оставлено : 5 июля 2013 г. 13:21:23(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
В BASE64 кодирую бинарную подпись. Спасибо, не видел обновления плагина, попробую воспользоваться CAdESCOM.SignedXML и проверить валидность такой подписи.
Но предпочтительнее разобраться с RawSignature, т.к. есть возможность получить значение подписи по хешу, а не документу целиком.
Offline Новожилова Елена  
#13 Оставлено : 5 июля 2013 г. 17:00:47(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Цитата:
Упоминание _utf8_encode натолкнуло меня на решение проблемы с хэшом.( у меня была ещё проблема в том что от одинаковых данных хэш c помощью плагина и на сервере с помощью c# получался разным. Но если перед вычислением хэша на клиенте закодировать данные в utf8 то проблем нет. Но мне непонятно зачем все таки это нужно т.к. сама страница в кодировке utf8. Причем если данные корректно отображаются при дебаге, то после применения _utf8_encode отображается нечитаемая таробарщина вместо русских символов но хэш от этих данных считается правильный.
С подписью в итоге все таки была проблема с некорректной канонизацией. В итоге получилось сформировать корректную подпись. Спасибо.


В таких случаях можно использовать кодировку BASE64 и свойство HashedData.DataEncoding
Offline Новожилова Елена  
#14 Оставлено : 5 июля 2013 г. 17:08:44(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Автор: dmishin Перейти к цитате

1. Беру хэш канонизированной XML. Вставляю его в шаблон в качестве DigestValue.
Например: e5bsMmsv+qWG1oY3mW9vbeBp1sbAH+Z9KtRKnm10ZzI=
...
6. Проверяю полученную XML утилитой xmlsec1.
...
Но предпочтительнее разобраться с RawSignature, т.к. есть возможность получить значение подписи по хешу, а не документу целиком.


А данные, от которых получен хэш, вы в проверяемую подпись добавляете?
Offline dmishin  
#15 Оставлено : 8 июля 2013 г. 5:50:36(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: Новожилова Елена Перейти к цитате
А данные, от которых получен хэш, вы в проверяемую подпись добавляете?


Не совсем понял вопрос.
Если имеется ввиду содержит ли xml те данные от которых брался хеш, то да.
Приведение к канонизированному виду и вычисление хеша происходит на сервере. У клиента генерится только значение подписи по хешу, которая впоследствии вставляется в SignatureValue.
Offline Павел Смирнов  
#16 Оставлено : 8 июля 2013 г. 7:19:43(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Автор: dmishin Перейти к цитате

1. Беру хэш канонизированной XML. Вставляю его в шаблон в качестве DigestValue.
Например: e5bsMmsv+qWG1oY3mW9vbeBp1sbAH+Z9KtRKnm10ZzI=
2. Использую полученный хеш для создания подписи (замечу что преобразований к UTF8 нигде не производится):

Вот здесь ошибка. Подпись надо делать не на это хэш-значение. Надо после заполнения элемента DigestValue привести к каноническому виду элемент SignedInfo, его похэшировать, и посчитать подпись на это хэш-значение.
Техническую поддержку оказываем тут.
Наша база знаний.
thanks 2 пользователей поблагодарили Павел Смирнов за этот пост.
dmishin оставлено 08.07.2013(UTC), cryptouser1989 оставлено 26.06.2018(UTC)
Offline dmishin  
#17 Оставлено : 8 июля 2013 г. 12:04:44(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: Смирнов Перейти к цитате
Вот здесь ошибка. Подпись надо делать не на это хэш-значение. Надо после заполнения элемента DigestValue привести к каноническому виду элемент SignedInfo, его похэшировать, и посчитать подпись на это хэш-значение.


Спасибо! на выходе получил валидную подпись.

Не подскажете - содержит ли CAdES-BES значение SignatureValue?
Суть в том чтобы пользователь создавал подпись CAdES-BES, потом на сервере ее проверять утилитой cryptcp и вытаскивать SignatureValue для встраивания в XML.

Отредактировано пользователем 8 июля 2013 г. 12:14:43(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#18 Оставлено : 8 июля 2013 г. 12:36:24(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Теоретически можно так сделать, если пользователь подписывал то, что нужно.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline dmishin  
#19 Оставлено : 11 июля 2013 г. 13:22:41(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: Смирнов Перейти к цитате
Теоретически можно так сделать, если пользователь подписывал то, что нужно.


В CadesBes подпись так же хранится в виде обратной последовательности байт?
Offline Новожилова Елена  
#20 Оставлено : 11 июля 2013 г. 16:12:22(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
CAdES-BES - это формат подписанного CMS-сообщения. И значение подписи в нем вычисляется не на сам документ, а на подписываемые атрибуты (среди которых обязательно присутствует хэш-значение документа).
Подписываемые атрибуты в сообщении CAdES-BES должны присутствовать обязательно.

В то же время подпись в сообщении XMLDSig вычисляется на приведенный к каноническому виду узел SignedInfo, который также содержит в своем составе хэш-значение документа.

Вывод - значение подписи в сообщениях CAdES-BES и XMLDSig вычисляется на _разные_ данные.

Теоретически, если бы не было подписанных атрибутов, то можно было бы просить пользователя подписывать заранее сформированный и приведенный к каноническому виду узел SignedInfo. Но поскольку наличие атрибутов является обязательным требованием, то описанный вами способ невозможен.
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
dmishin оставлено 12.07.2013(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.