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

Уведомление

Icon
Error

19 Страницы«<1314151617>»
Опции
К последнему сообщению К первому непрочитанному
Offline two_oceans  
#141 Оставлено : 4 декабря 2019 г. 5:55:15(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: Dmitriy_Zh Перейти к цитате
Служебный данные из трейса SignedXml
Преобразованный контент ссылки:
У этого фрагмента хэш совпадает с указанным в Reference, но у меня получилось другое значение с хэшем YEwZ+QB5G+8QrPaN1AqOXcyey1ky5dYNNyJX+XFJ+0w=.
Навскидку отличается тем что сам SenderProvidedRequestData у меня попал под смэвовский трансформ, а в Вашем примере не попал под трансформ.
Автор: Dmitriy_Zh Перейти к цитате
Выходные данные преобразования канонизации:
SignedInfo совпадает при проверке SignatureValue и с тем что получилось у меня.
Автор: Dmitriy_Zh Перейти к цитате
Данные которые сформировал клиент WCF для отправки:
Тут вообще невалидный xml - нет объявления префикса для Body (или просто Envelope куда-то делся, хотя вроде не нужны Body с Envelope). В целом, после добавления объявления, SignatureValue сошлось, а DigestValue нет.

Отредактировано пользователем 4 декабря 2019 г. 6:07:34(UTC)  | Причина: Не указана

Offline Dmitriy_Zh  
#142 Оставлено : 4 декабря 2019 г. 8:55:22(UTC)
Dmitriy_Zh

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

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

Автор: two_oceans Перейти к цитате
Автор: Dmitriy_Zh Перейти к цитате
Служебный данные из трейса SignedXml
Преобразованный контент ссылки:
У этого фрагмента хэш совпадает с указанным в Reference, но у меня получилось другое значение с хэшем YEwZ+QB5G+8QrPaN1AqOXcyey1ky5dYNNyJX+XFJ+0w=.
Навскидку отличается тем что сам SenderProvidedRequestData у меня попал под смэвовский трансформ, а в Вашем примере не попал под трансформ.
Автор: Dmitriy_Zh Перейти к цитате
Выходные данные преобразования канонизации:
SignedInfo совпадает при проверке SignatureValue и с тем что получилось у меня.
Автор: Dmitriy_Zh Перейти к цитате
Данные которые сформировал клиент WCF для отправки:
Тут вообще невалидный xml - нет объявления префикса для Body (или просто Envelope куда-то делся, хотя вроде не нужны Body с Envelope). В целом, после добавления объявления, SignatureValue сошлось, а DigestValue нет.


Данные от WCF клиента я выбирал из трейса, там есть обёртка Envelope и Body. Просто их не стал добавлять.
По поводу трансформации не очень понятно, т.к передаю SenderProvidedRequestData на подпись.
Так же не понятно, по какой причине DigestValue может отличаться...
Сегодня сделаю формирование запроса в файл, чтобы WCF не влиял на конечный результат. Т.к пока не могу понять на этапе формирования данных ошибка или на этапе отправки данных.
По результатам отпишусь.

Offline two_oceans  
#143 Оставлено : 4 декабря 2019 г. 10:06:34(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Автор: Dmitriy_Zh Перейти к цитате
По поводу трансформации не очень понятно, т.к передаю SenderProvidedRequestData на подпись.
Так же не понятно, по какой причине DigestValue может отличаться...
Хэш в Reference в итоговом файле совпадает с хэшем результата трансформации из SignedXml, то есть похоже после трансформации был верно посчитан хэш (но от другого результата трансформации и потому отличается) и без критических искажений как SignedInfo, так и подписанный фрагмент перешел в итоговый файл. Полагаю, это указывает именно на неправильный трансформ, далее сборка без искажений.

Отредактировано пользователем 4 декабря 2019 г. 10:18:08(UTC)  | Причина: P.S. приходится сохранять пустое сообщение и править чтобы форум не вылетал каждые несколько секунд

Offline Dmitriy_Zh  
#144 Оставлено : 4 декабря 2019 г. 10:44:29(UTC)
Dmitriy_Zh

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

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

Автор: two_oceans Перейти к цитате
Автор: Dmitriy_Zh Перейти к цитате
По поводу трансформации не очень понятно, т.к передаю SenderProvidedRequestData на подпись.
Так же не понятно, по какой причине DigestValue может отличаться...
Хэш в Reference в итоговом файле совпадает с хэшем результата трансформации из SignedXml, то есть похоже после трансформации был верно посчитан хэш (но от другого результата трансформации и потому отличается) и без критических искажений как SignedInfo, так и подписанный фрагмент перешел в итоговый файл. Полагаю, это указывает именно на неправильный трансформ, далее сборка без искажений.


Мне удалось добиться прохождения проверки. Для этого полностью отказался от использования сгенерированных классов и написал всё руками.
Буду делать свою библиотеку для решения взаимодействия со СМЭВ. Из коробки не работает :(
Offline two_oceans  
#145 Оставлено : 4 декабря 2019 г. 11:23:42(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
В этой теме пару страниц назад вроде бы скидывали ссылку на один из проектов.

В целом да, вручную наше все, я в другой среде, но тоже пишу сам - сейчас вот думаю свой генератор сделать, чтобы не выписывать для каждой схемы элементы вручную. Один раз прочитать схему, сделать дамп в своем формате и по нему работать.
Offline Dmitriy_Zh  
#146 Оставлено : 4 декабря 2019 г. 12:13:54(UTC)
Dmitriy_Zh

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

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

Автор: two_oceans Перейти к цитате
В этой теме пару страниц назад вроде бы скидывали ссылку на один из проектов.

В целом да, вручную наше все, я в другой среде, но тоже пишу сам - сейчас вот думаю свой генератор сделать, чтобы не выписывать для каждой схемы элементы вручную. Один раз прочитать схему, сделать дамп в своем формате и по нему работать.


У меня получилось выполнить в итоге эталонные запросы. Тестовый проект смотрел))) Но он реализован очень запутанно. Я для наших проектов буду делать библиотеку свою.
Самое сложное - подписать данные в правильном виде. Сейчас сделал это с помощью костылей. Хочу в ближайшие дни заставить работать автосгенерированный код
Offline two_oceans  
#147 Оставлено : 4 декабря 2019 г. 12:41:16(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах

Отредактировано пользователем 4 декабря 2019 г. 13:02:57(UTC)  | Причина: Не указана

Offline HF_HF  
#148 Оставлено : 3 февраля 2020 г. 11:55:40(UTC)
HF_HF

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

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

Сказал «Спасибо»: 5 раз
Поблагодарили: 1 раз в 1 постах
Автор: Dmitriy_Zh Перейти к цитате
Автор: two_oceans Перейти к цитате
В этой теме пару страниц назад вроде бы скидывали ссылку на один из проектов.

В целом да, вручную наше все, я в другой среде, но тоже пишу сам - сейчас вот думаю свой генератор сделать, чтобы не выписывать для каждой схемы элементы вручную. Один раз прочитать схему, сделать дамп в своем формате и по нему работать.


У меня получилось выполнить в итоге эталонные запросы. Тестовый проект смотрел))) Но он реализован очень запутанно. Я для наших проектов буду делать библиотеку свою.
Самое сложное - подписать данные в правильном виде. Сейчас сделал это с помощью костылей. Хочу в ближайшие дни заставить работать автосгенерированный код


Можно конечно было по проще написать, но тема сама по себе не простая. Рад если кому то помог пример кода. Ели бы еще где брали код поставили лайк. Было бы приятно и видно что код кому то помог)
Offline migel  
#149 Оставлено : 4 февраля 2020 г. 16:22:56(UTC)
migel

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 5 раз в 5 постах
Добрый день.
Продолжается наше хождение по граблям XML signing.
На днях при работе со СМЭВ 3 на некоторых документах начали получать ошибку проверки ЭОП.
Разбирательство с данными вывело нас на следующее.
1. В документе присутствует атрибут в значении которого есть символы < 0x20 (всеми любимые символы возврата каретки и перевода строки)
2. Доступные нам онлайн сервисы проверки GOST XmlDSig работают все по разному
а) КриптоПро - вставляет в смэв трансформеры бинарные символы 0x0d 0x0а (согласно поведению MS.NET XmlWriter) документ валидируется.
б) Тестовый контур GisGMP (https://smev3.gosuslugi.ru/portal/checkxmlform.jsp)занимается непонятно чем и не валидирует документ.
в) Реализация https://www.securitycode.ru/products/jinn-server/ при трансформации вставляет XML Entity reference (&#xD;&#xA;) и при соответствующих правках нашего трансформера документ тоже валидирует.

Возникает вопрос как поступать в этом случае. Как мне кажется правильный вариант - в по крайней мере каноникализация по C14N работает именно так.
Пример ИСХОДНОГО документа
SendRequestRequestNoAttach.xml (2kb) загружен 9 раз(а).
Пример подписанного документа со вставкой XmlEntity.
signed.xml (4kb) загружен 12 раз(а).
С уважением
Offline two_oceans  
#150 Оставлено : 5 февраля 2020 г. 7:38:00(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Добрый день!
Немного странно, что форму проверки для СМЭВ 3 назвали как форму гис гмп. Все зависит от того, какие стандарты применены к документу. Общая мысль: C14N почти нигде не применяется в чистом виде, везде с дополнительными оговорками, подготовками или постобработками.

Для справки: из символов с кодом ниже пробела (32 или 0x20) в XML в принципе разрешены только символы с кодами 9, 10, 13 и никакие более. Если речь идет о нормализованном (в плане переводов строк) документе/фрагменте, то только символы 10 остаются в роли переводов строки. Сочетание 13+10 заменяется на 10, потом одиночные 13 заменяются на 10. Стандарт проверки электронной подписи подчеркивает, что фрагмент документа должен быть нормализован по переводам строк до передачи в C14N. Чистый алгоритм C14N действительно выдает &#xD; как каноническую форму символа с кодом 13, однако в случае электронной подписи 13 убираются в документе до C14N. Это совершенно точно касается всех текстовых узлов: кодов 13 нет ни в каком виде; коды 9,10, лишние пробелы - их обработка зависит от параметра PreserveWhitespace (причем не фигурирующего в подписи, только подбирать нужное значение методом тыка). Про значения атрибутов надо перечитать (там вообще головоломная система нормализации whitespace, возможно представление как &#x9; и так далее), все места кроме значений атрибутов и текстовых узлов "оптимизируются" в C14N - символов 9,10,13 не остается ни в каком представлении.

Аналогично стандарту подписи стандарт SOAP также отменяет часть возможностей XML и упрощает документ, поэтому соответствующие выкинутым возможностям пункты C14N даже теоретически не применяются. Переводов строк они не касаются, расписывать не буду.

Далее, в СМЭВ 3 создателям надоело маяться с 9,10,13 и после C14N введен обязательный дополнительный трансформ до вычисления хэша. Один из пунктов обязательного трансформа: любые текстовые узлы состоящие только из символов 9,10,13 удаляются, то есть неопределенность с PreserveWhitespace почти обнулена. Почти - потому что любое значение можно обрамить 9,10,13, но это можно окончательно запретить благонамеренной схемой пространства имен. Другой пункт требований СМЭВ 3 гласит, что в самом фрагменте документа соответствующем SignedInfo и его потомкам переводы строк запрещены. Поэтому конечно без выполнения трансформа и требований проверить подпись не получится.

Отредактировано пользователем 5 февраля 2020 г. 8:58:06(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
migel оставлено 05.02.2020(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
19 Страницы«<1314151617>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.