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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline two_oceans  
#11 Оставлено : 19 ноября 2019 г. 13:40:03(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Цитата:
Попробуйте подпись enveloped сделать
В данном случае, это похоже проблематично: enveloped также входит в SignedInfo (как и ссылка на документ, идентификатор узла), то есть его добавление в готовую подпись вызовет ошибку проверки SignatureValue. Таким образом, надо перечисленное добавить при формировании подписи (в идеале) либо сначала проверить SignatureValue, потом добавить enveloped трансформ в проверенный SignedInfo, потом продолжить проверку Reference в SignedInfo с измененным содержимым. Штатными средствами такое сложно провернуть, не обращаясь к низкоуровневым функциям. Лучше наверно найти функцию принимающую подпись и документ раздельно и связывающую их безусловно, игнорируя пустой адрес документа. По моему мнению, меньше урон самой идее проверки подписи при игнорировании адреса, чем при изменении текста готовой подписи.

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

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

Offline elizaveta96  
#12 Оставлено : 20 ноября 2019 г. 7:01:46(UTC)
elizaveta96

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: two_oceans Перейти к цитате
Цитата:
Попробуйте подпись enveloped сделать
В данном случае, это похоже проблематично: enveloped также входит в SignedInfo (как и ссылка на документ, идентификатор узла), то есть его добавление в готовую подпись вызовет ошибку проверки SignatureValue. Таким образом, надо перечисленное добавить при формировании подписи (в идеале) либо сначала проверить SignatureValue, потом добавить enveloped трансформ в проверенный SignedInfo, потом продолжить проверку Reference в SignedInfo с измененным содержимым. Штатными средствами такое сложно провернуть, не обращаясь к низкоуровневым функциям. Лучше наверно найти функцию принимающую подпись и документ раздельно и связывающую их безусловно, игнорируя пустой адрес документа. По моему мнению, меньше урон самой идее проверки подписи при игнорировании адреса, чем при изменении текста готовой подписи.

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


Да согласна, что проще найти функцию,которая принимала бы на вход документ и подпись, но я такой не нашла. Может вы подскажете? Для работы с подписью xmldsig нашла только пакеты crypto и xmlsec
Offline Евгений Афанасьев  
#13 Оставлено : 20 ноября 2019 г. 7:47:27(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Автор: two_oceans Перейти к цитате
Цитата:
Попробуйте подпись enveloped сделать
В данном случае, это похоже проблематично: enveloped также входит в SignedInfo (как и ссылка на документ, идентификатор узла), то есть его добавление в готовую подпись вызовет ошибку проверки SignatureValue. Таким образом, надо перечисленное добавить при формировании подписи (в идеале) либо сначала проверить SignatureValue, потом добавить enveloped трансформ в проверенный SignedInfo, потом продолжить проверку Reference в SignedInfo с измененным содержимым. Штатными средствами такое сложно провернуть, не обращаясь к низкоуровневым функциям. Лучше наверно найти функцию принимающую подпись и документ раздельно и связывающую их безусловно, игнорируя пустой адрес документа. По моему мнению, меньше урон самой идее проверки подписи при игнорировании адреса, чем при изменении текста готовой подписи.

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

Про изменение текста речи не были, предполагалось, что разработчик управляет созданием подписи.
Отсутствие пустого uri равнозначно подписи всего документа.
Автор: elizaveta96 Перейти к цитате

Да согласна, что проще найти функцию,которая принимала бы на вход документ и подпись, но я такой не нашла. Может вы подскажете? Для работы с подписью xmldsig нашла только пакеты crypto и xmlsec

Посмотрите в сторону поточной подписи xmlsec, возможно, что-то есть там, правда, у нас нет таких примеров с гостом.

Отредактировано пользователем 20 ноября 2019 г. 7:51:04(UTC)  | Причина: Не указана

Offline two_oceans  
#14 Оставлено : 20 ноября 2019 г. 8:06:16(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Если в рамках Java, то мне сложно подсказать - пишу на другой среде.

Теоретически, в моей самопальной библиотеке такое (подача документа отдельно, подписи отдельно в stdcall конвенции) было предусмотрено, но не тестировалось уже более года. За это время код изменился и вероятно раздельная подача (как и обработка пустого URI="", CDATA с документом) на данный момент не работает. В какую сторону исправлять надо подумать, например, добавить в структуру для представления референса отдельный указатель на xml документ и это обрабатывать.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.