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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Евгений2022  
#1 Оставлено : 23 июня 2022 г. 16:21:13(UTC)
Евгений2022

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день!
При реализации метода проверки подписи xades и СМЭВ, возникла следующая проблема:
провайдер JCP - отлично проверяет подпись xades, но подружить со СМЭВ у меня никак и не получилось, изначальная ошибка:
Цитата:
java.security.NoSuchAlgorithmException: urn://smev-gov-ru/xmldsig/transform algorithm and DOM mechanism not available; error codes: [101] 'Signature marshalling failed',
at ru.CryptoPro.XAdES.XAdESSignerBinaryImpl.b(Unknown Source)
at ru.CryptoPro.XAdES.XAdESSignerBinaryImpl.verify(Unknown Source)
at ru.CryptoPro.XAdES.XAdESSignerBinaryImpl.verify(Unknown Source)
at bars.rtn.crypto.services.CryptoService.xmlVerifyJCP(CryptoService.java:495)


Нашел статью где используется xades4j, плюс в дистрибутиве JCP есть samples-sources, где проверка делается xades4j, в результате обычный xades-bes со СМЭВ проходит проверку успешно, но когда пытаюсь проверить xades-T то возникает ошибка:
Цитата:
Caused by: java.lang.NoSuchMethodError: 'org.apache.xml.security.signature.XMLSignatureInput org.apache.xml.security.transforms.Transform.performTransform(org.apache.xml.security.signature.XMLSignatureInput, boolean)'
at xades4j.utils.TimeStampDigestInputImpl.addToDigestInput(TimeStampDigestInputImpl.java:89) ~[xades4j-2.0.0.jar:?]
at xades4j.utils.TimeStampDigestInputImpl.addNode(TimeStampDigestInputImpl.java:79) ~[xades4j-2.0.0.jar:?]
at xades4j.verification.SignatureTimeStampVerifier.addPropSpecificTimeStampInputAndCreateProperty(SignatureTimeStampVerifier.java:54) ~[xades4j-2.0.0.jar:?]
at xades4j.verification.SignatureTimeStampVerifier.addPropSpecificTimeStampInputAndCreateProperty(SignatureTimeStampVerifier.java:35) ~[xades4j-2.0.0.jar:?]
at xades4j.verification.TimeStampVerifierBase.verify(TimeStampVerifierBase.java:61) ~[xades4j-2.0.0.jar:?]
at xades4j.verification.TimeStampVerifierBase.verify(TimeStampVerifierBase.java:38) ~[xades4j-2.0.0.jar:?]
at xades4j.verification.QualifyingPropertiesVerifierImpl.verifyProperties(QualifyingPropertiesVerifierImpl.java:59) ~[xades4j-2.0.0.jar:?]
at xades4j.verification.XadesVerifierImpl.getValidationDate(XadesVerifierImpl.java:296) ~[xades4j-2.0.0.jar:?]
at xades4j.verification.XadesVerifierImpl.verify(XadesVerifierImpl.java:186) ~[xades4j-2.0.0.jar:?]
at bars.rtn.crypto.services.CryptoService.xmlVerify(CryptoService.java:460) ~[classes/:?]

Проблема в том, что в последних версиях xades4j используют org.apache.santuario » xmlsec 2.2.3, а в JCP 2.1.2, в итоге работает либо xades4j либо JCP
Отказаться от JCP не хотелось бы, но проверку xades необходимо с учетом СМЭВ.

Вопрос: Можно подружить JCP и СМЭВ ? или как-то еще решить текущую проблему ?
Online Евгений Афанасьев  
#2 Оставлено : 26 июня 2022 г. 12:09:32(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Цитата:

NoSuchAlgorithmException: urn://smev-gov-ru/xmldsig/transform algorithm and DOM mechanism not available; error codes: [101] 'Signature marshalling failed',

да, в xades в JCP нет поддержки указанного алгоритма. Его реализацию (если имеется) вроде можно зарегистрировать отдельно.
Да, в JCP версии А используется xmlsec-2.1.2.jar. Постараемся в будущем поднять версию xmlsec.
Попробуйте использовать xades4j более старой версии.
Offline Евгений2022  
#3 Оставлено : 27 июня 2022 г. 15:48:23(UTC)
Евгений2022

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день.

Цитата:
Его реализацию (если имеется) вроде можно зарегистрировать отдельно.

есть пример как можно зарегистрировать ? И возможно зарегистрировать без xades4j ?
Цитата:
Попробуйте использовать xades4j более старой версии.

Установил минимально допустимую версию по xmlsec = xades4j 1.5.1, и теперь в момент создания xades подписи добавились теги:
Signature -> KeyInfo -> X509Data -> X509IssuerSerial и
Signature -> KeyInfo -> X509Data -> X509SubjectName
раньше был только
Signature -> KeyInfo -> X509Data -> X509Certificate
И теперь проверка не проходит, так как приоритет проверяемых тегов в KeyInfo сдвинулся на X509IssuerSerial (вместо X509Certificate), где в процессе сравнения issuer и cert.getIssuerX500Principal возникает ошибка Could not determine unique target subject.
Цитата:
2022-06-27 11:12:18.538 WARN 7744 --- [nio-8888-exec-1] b.r.c.c.h.CustomRestExceptionHandler : The available certificate selector didn't match any certificates
xades4j.providers.CannotSelectCertificateException: The available certificate selector didn't match any certificates
at xades4j.providers.impl.PKIXCertificateValidationProvider.validate(PKIXCertificateValidationProvider.java:263) ~[xades4j-1.5.1.jar:?]
at xades4j.verification.XadesVerifierImpl.verify(XadesVerifierImpl.java:186) ~[xades4j-1.5.1.jar:?]
at bars.rtn.crypto.services.CryptoService.xmlVerify(CryptoService.java:462) ~[classes/:?]
Caused by: java.security.InvalidAlgorithmParameterException: Could not determine unique target subject
at sun.security.provider.certpath.PKIX$BuilderParams.getTargetSubject(PKIX.java:289) ~[?:?]
at sun.security.provider.certpath.PKIX$BuilderParams.checkParams(PKIX.java:236) ~[?:?]
at sun.security.provider.certpath.PKIX$BuilderParams.<init>(PKIX.java:224) ~[?:?]
at sun.security.provider.certpath.PKIX.checkBuilderParams(PKIX.java:70) ~[?:?]
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:125) ~[?:?]
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297) ~[?:?]
at xades4j.providers.impl.PKIXCertificateValidationProvider.validate(PKIXCertificateValidationProvider.java:253) ~[xades4j-1.5.1.jar:?]


Ошибка возникает так как атрибуты в ИНН и ОГРН в сертификате указаны с типом NumericString (#12), а при получении атрибута из строки Signature -> KeyInfo -> X509Data -> X509IssuerSerial -> X509IssuerName (OID.1.2.643.100.1=1037700085444, OID.1.2.643.100.4=7717107991) используется тип PrintableString (#13)

Цитата:
cn=тестовый подчиненный уц ооо \"крипто-про\" гост 2012 (уц 2.0),o=ооо \"крипто-про\",street=ул. сущёвский вал д. 18,l=москва,st=77 москва,c=ru,1.2.643.100.1=#130d31303337373030303835343434,1.2.840.113549.1.9.1=#1611696e666f4063727970746f70726f2e7275,1.2.643.100.4=#130a37373137313037393931
cn=тестовый подчиненный уц ооо \"крипто-про\" гост 2012 (уц 2.0),o=ооо \"крипто-про\",street=ул. сущёвский вал д. 18,l=москва,st=77 москва,c=ru,1.2.643.100.1=#120d31303337373030303835343434,1.2.840.113549.1.9.1=#1611696e666f4063727970746f70726f2e7275,1.2.643.100.4=#120a37373137313037393931


Указать NumericString для проверки у меня не получилось.
При создании можно добавить в профиль не включать эти теги new XadesBesSigningProfile(keyingProvider).withBasicSignatureOptions(new BasicSignatureOptions().includeIssuerSerial(false).includeSubjectName(false))
и тогда всё работает, но есть риск, что поступит подпись, которую не мы создали и там будут эти теги.

Возможно, я не первый, кто столкнулся с этой проблемой, просьба написать возможные варианты решения.

Отредактировано пользователем 28 июня 2022 г. 8:32:26(UTC)  | Причина: Не указана

Online Евгений Афанасьев  
#4 Оставлено : 29 июня 2022 г. 10:40:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
1. Например, у xmlsec есть методы вроде
Цитата:

Transform.register(...)
Canonicalizer.register(...)

для регистрации алгоритмов.
2. Проверьте, может, есть версия xades4j с IssuerSerialV2, где используется asn1-представление IssuerSerial в виде base64, а не строковое.
Offline Евгений2022  
#5 Оставлено : 29 июня 2022 г. 11:02:34(UTC)
Евгений2022

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

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

Сказал(а) «Спасибо»: 3 раз
1. Регистрация трансформации у меня уже используется Transform.register("urn://smev-gov-ru/xmldsig/transform", SmevTransformSpi.class);
без неё xades4j не работал бы. Вопрос был по JCP, был у вас с ним уже успешный опыт со СМЭВ и может есть пример ?
2. Я сейчас отключил генерацию этих тегов, решение создавать их в виде base64, не решает проблему если поступит на проверку подпись в обычном представлении от другой системы
Offline two_oceans  
#6 Оставлено : 29 июня 2022 г. 13:31:38(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Автор: Евгений2022 Перейти к цитате
не решает проблему если поступит на проверку подпись в обычном представлении от другой системы
Добрый день. Signature -> KeyInfo -> X509Data для гост подписей содержит исключительно X509Certificate. Пока что я не видел другого заполнения ни в одной эталонной ЭП. Полагаю, указанная проблема несовпадения актуальна не только у Вас, но у других систем тоже, потому этими тегами никто не пользуется.

Следовательно, по моему мнению, просто можете отклонять любую подпись при наличии Signature -> KeyInfo -> X509Data -> X509IssuerSerial и Signature -> KeyInfo -> X509Data -> X509SubjectName, пояснив, что сертификат не найден (как и выдается в тексте ошибки). Насколько помню, Вы не обязаны иметь сертификаты от информационных систем всех участников СМЭВ. Правда я давненько не читал чего добавили в новых версиях формата СМЭВ и совсем не смотрел в сторону push-уведомлений.

К слову, мне очень интересно зачем гибрид Xades-T + СМЭВ, не припомню, чтобы СМЭВ требовал Xades-T, обычно XMLDSIG хватает, а метки времени на совести сервиса СМЭВ. Кроме того, приложенный файл содержал что-то постороннее, что на мой взгляд не является частью СМЭВ. Удовлетворите пожалуйста мое любопытство - что Вы делаете и по каким методическим рекомендациям.

Отредактировано пользователем 29 июня 2022 г. 13:32:18(UTC)  | Причина: Не указана

Offline Евгений2022  
#7 Оставлено : 29 июня 2022 г. 13:53:28(UTC)
Евгений2022

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

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

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

Цитата:
К слову, мне очень интересно зачем гибрид Xades-T + СМЭВ

В первом сообщении я прикладывал ссылку XAdES-T для взаимодействия с ГИС ГМП

На текущий момент реализуется универсальный сервис для работы с ЭЦП: подпись, усовершенствование, проверка и взаимодействие со СМЭВ, ГИС ЖКХ и другими системами.
Поэтому планируем реализацию доступных форматов, которые поддерживает КриптоПро
Offline two_oceans  
#8 Оставлено : 30 июня 2022 г. 11:04:44(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 395 раз в 366 постах
Автор: Евгений2022 Перейти к цитате
Цитата:
К слову, мне очень интересно зачем гибрид Xades-T + СМЭВ

В первом сообщении я прикладывал ссылку XAdES-T для взаимодействия с ГИС ГМП На текущий момент реализуется универсальный сервис для работы с ЭЦП: подпись, усовершенствование, проверка и взаимодействие со СМЭВ, ГИС ЖКХ и другими системами.
Поэтому планируем реализацию доступных форматов, которые поддерживает КриптоПро
Добрый день. Это конечно замечательно, что реализуется такой единый сервис с поддержкой широкого разнообразия форматов, однако Вам следовало бы посмотреть внимательнее на версии форматов. Формат ГИС ГМП 1.16.х, упомянутый в статье, предназначен для сервиса ГИС ГМП SID0003398, функционировавшего в СМЭВ 2. В СМЭВ 2 не используется упомянутый трансформ СМЭВ (трансформ обязателен только для СМЭВ 3), то есть связка широкой аудиторией явно не использовалась.

Более того, 20 июня 2022 года (10 дней назад) было опубликовано сообщение на smev3.gosuslugi.ru, что сервис ГИС ГМП SID0003398 выведен из эксплуатации (были там уже форматы 1.16.7 если правильно помню) и следует пользоваться видами сведений СМЭВ 3. Я бы сказал "наконец-то!!", потому что его вывод обещали еще в конце 2018 года, Потом необднократно переносили, вот ссылочка с сайта росказны
https://roskazna.gov.ru/...ck/cc7/GIS-GMP-v-SKP.pdf
Презентация конца 2020 года, там как раз хорошо видно какая версия форматов в какой СМЭВ. До того были форматы ГИС ГМП 2.0. С тех пор еще вышли версии форматов ГИС ГМП 2.3 и 2.4.

В СМЭВ 3 используется трансформ, но насколько я помню нет требования к использованию xades-T, то есть связка тоже мимо широкой аудитории. Специально открыл запросы от 24 мая 2022 года к гис гмп, которые мне доступны (по форматам ГИС ГМП 2.3), там одна ЭП-ОВ с только одним Reference, то есть это не xades, определенно.

С 20 июня 2022 года были отключены некоторые ВС ГИС ГМП форматов версии 2.3, актуальная версия форматов ВС ГИС ГМП сейчас 2.4.

thanks 1 пользователь поблагодарил two_oceans за этот пост.
Евгений2022 оставлено 30.06.2022(UTC)
Offline two_oceans  
#9 Оставлено : 30 июня 2022 г. 11:05:34(UTC)
two_oceans

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

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

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

Отредактировано пользователем 30 июня 2022 г. 11:09:35(UTC)  | Причина: Не указана

Offline Евгений2022  
#10 Оставлено : 30 июня 2022 г. 12:00:35(UTC)
Евгений2022

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

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

Сказал(а) «Спасибо»: 3 раз
Спасибо за подробное пояснение)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.