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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Алексей Вдовин  
#1 Оставлено : 11 декабря 2024 г. 9:48:15(UTC)
Алексей Вдовин

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

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

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
На входе файл и откреплённая подпись - нужно проверить, является ли второй файл ЭЦП подписываемого файла


Проверку осуществляю таким кодом

Код:

            byte[] fileContent = file.getBytes();
            byte[] signatureContent = Base64.decode(signature.getBytes());

            CAdESSignature cadesToVerify = new CAdESSignature(signatureContent, fileContent, null);
            cadesToVerify.verify(null);


Отрабатывает очень долго - более 30 секунд ...
Можно ли как-то ускорить проверку?

PS
На PHP_Cades проверку реализовывал через другой класс - CPSignedData() и метод VerifyCades() - там всё быстро отрабатывало ...


Что интересно - файлы подписанные тестовым сертификатом проверяются моментально, а реальным ИФНС - тормозят.

Отредактировано пользователем 11 декабря 2024 г. 10:50:46(UTC)  | Причина: Не указана

Wanna join the discussion?! Login to your Форум КриптоПро forum account. Новые регистрации запрещены.

Offline Алексей Вдовин  
#2 Оставлено : 29 января 2025 г. 13:04:15(UTC)
Алексей Вдовин

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

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

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
вернулся к вопросу проверки отсоединенной подписи - на данный момент проверка локально 54 секунды ... это прям никуда не годится :(

с GUI проверка этиж же файлов моментально отрабатывает

допустим JCP куда то "ходит" за цепочкой сертификатов - какие то API дёргает и это медленно, вопрос - можно ли закешировать получаемые данные? чтоб второй раз уже пошустрее отрабатывало

или как нужно правильно реализовать проверку чтобы быстро проходила?
Offline Алексей Вдовин  
#3 Оставлено : 29 января 2025 г. 13:15:51(UTC)
Алексей Вдовин

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

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

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
Причем, я так понимаю на отозванность сертификата тут не проверяется, а так же что УЦ не является акредитованнным.

Подпихнул файл подписанный отозванным сертификатом - проверка прошла.
Подпихнул файл подписанный сертификатом сгенерированным тестовым УЦ - проверка прошла.


установлены опции
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");

System.setProperty("com.sun.security.enableAIAcaIssuers", "true");


я так понимаю долго отрабатывает из-за enableAIAcaIssuers
без этой опции проверка не пашет
"Error occurred during building the certification path for the target"

что странно - подпись я формировал этим же приложением, т.е. все необходимые сертификаты в keystore присутствуют


либо долго может работать из-за OCSP - в этом случае видимо надо CRL использовать

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

Offline Алексей Вдовин  
#4 Оставлено : 29 января 2025 г. 13:32:08(UTC)
Алексей Вдовин

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

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

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
подскажите с алгоритмом проверки в 2х словах?

1. получить из файла подписи цепочку сертификатов chain и передать её в verify()
2. получить где-то (скачать или как) список отозванных сертификатов crlList и тоже передать его в verify()

cadesSignature.verify(chain, crlList);


по идее это довольно штатный механизм ... есть где подглядеть реализацию? (пока смотрю в примерах tools/VerifyTool.java)
(имхо такое на уровне методов уже где то в библиотеках должно быть реализовано)


пункт 1 - я так понимаю из CAdESSignature перебрать подписантов, вытащить сертификаты и запихать всё в chain,
где chain инициировать таким образом
Set<X509Certificate> chain = new HashSet<X509Certificate>();

пункт 2 - вижу crlStorePath путь к хранилищу CRL
вопрос, где воообще можно качнуть файлики чтобы туда закинуть? в каком формате?

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

Offline Алексей Вдовин  
#5 Оставлено : 29 января 2025 г. 13:47:34(UTC)
Алексей Вдовин

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

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

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
ну и по проверке УЦ вопрос открыт - сейчас файлы подписанные тестовым УЦ спокойно проходят проверку
Offline Евгений Афанасьев  
#6 Оставлено : 30 января 2025 г. 12:22:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 725 раз в 684 постах
Добрый день.

Автор: Алексей Вдовин Перейти к цитате

Отрабатывает очень долго - более 30 секунд

Автор: Алексей Вдовин Перейти к цитате
вернулся к вопросу проверки отсоединенной подписи - на данный момент проверка локально 54 секунд

Какого формата подпись?
При проверке CAdES-BES/T происходят обращения в сеть за CRL, возможно обращение в сеть за сертификатами при enableAIAcaIssuers=true.

Автор: Алексей Вдовин Перейти к цитате

На PHP_Cades проверку реализовывал через другой класс - CPSignedData() и метод VerifyCades() - там всё быстро отрабатывало

Автор: Алексей Вдовин Перейти к цитате

с GUI проверка этиж же файлов моментально отрабатывает

Эта реализация - другая, здесь есть кэш в системе, системные хранилища с, возможно, уже установленными сертификатами.
Автор: Алексей Вдовин Перейти к цитате

можно ли закешировать получаемые данные?

Если вы сами заранее их сохраните и будете передавать.

Автор: Алексей Вдовин Перейти к цитате

без этой опции проверка не пашет
"Error occurred during building the certification path for the target"

Вероятно, потому что в цепочке нет промежуточного сертификата, который скачивается при enableAIAcaIssuers=true.

Автор: Алексей Вдовин Перейти к цитате

подскажите с алгоритмом проверки в 2х словах?

1. получить из файла подписи цепочку сертификатов chain и передать её в verify()
2. получить где-то (скачать или как) список отозванных сертификатов crlList и тоже передать его в verify()

cadesSignature.verify(chain, crlList);

1. Обычно сертификат подписи уже есть в самой подписи. Корневые должны быть установлены в cacerts. Промежуточные сертификаты можно установить туда же, или подавать их в verify (скачав заранее), или использовать enableAIAcaIssuers.
CRL будут скачиваться при проверке, они никуда не сохраняются. Иначе можно скачать их самостоятельно (иногда бывают CRL с большим сроком) и подавать в verify.

Автор: Алексей Вдовин Перейти к цитате

где воообще можно качнуть файлики чтобы туда закинуть? в каком формате?

Если имеются в виду сами CRL, то адреса к ним в самих сертификатах. Но сертификаты надо знать заранее. Получается, все-таки вариант с онлайн-проверкой - самый простой.
Если именно при enableAIAcaIssuers=true проверка выполняется очень долго, то попробуйте залогировать операции: https://support.cryptopr...nlirovnija-kriptopro-jcp и приложить лог
JCPLogger с уровнем ALL
Возможно, только один из адресов в сертификате - рабочий, а по остальным - ошибка по таймауту.

Автор: Алексей Вдовин Перейти к цитате

ну и по проверке УЦ вопрос открыт - сейчас файлы подписанные тестовым УЦ спокойно проходят проверку

Все верно. Проверки делаются согласно формату подписи CAdES. Подпись, сделанная в тестовом УЦ в соответствии с форматом, валидна.

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

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