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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline SergeyTS  
#1 Оставлено : 29 сентября 2021 г. 17:21:31(UTC)
SergeyTS

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

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

Сказал(а) «Спасибо»: 6 раз
Добрый день, подскажите, пожалуйста, можно ли подписывать (тип подписи CAdES-BES) данные в потоке, не используя CAdESSignature или используя, но без проверки цепочки?

CAdESSignature требует передачи всей цепочки и установки корневого сертификата в cacerts. А при подписи хотелось бы избежать проверки цепочки, так как в приложении не будет подразумеваться установка сертификатов в корневые.
Пример из файла CMSSignExample падает при подписи больших файлов.

Отредактировано пользователем 29 сентября 2021 г. 17:43:33(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 29 сентября 2021 г. 22:54:48(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
1. CMSSignExample читает целиком файл в память, потому у него будут ограничения. Однако вы можете читать файл и хешировать его порциями (MessageDigest) для получения финального значения атрибута message-digest, который потом добавляется в подписанные атрибуты перед подписью.
2. Также для поточной подписи надо использовать CAdESSignature. В последних релизах можно создать BES/T подпись без проверки (но с построением!) цепочки сертификатов (см. комментарии в MainActivity в ACSPClientApp):
Код:

// В случае создания подписей формата BES или T можно отключить
// проверку цепочки сертификатов подписанта (и службы) с помощью
// параметра:
cAdESSignature.setOptions((new Options()).disableCertificateValidation()); // CAdES
// перед добавлением подписанта.
// По умолчанию проверка цепочки сертификатов подписанта всегда
// включена.

Отредактировано пользователем 29 сентября 2021 г. 22:55:57(UTC)  | Причина: Не указана

Offline SergeyTS  
#3 Оставлено : 30 сентября 2021 г. 9:58:24(UTC)
SergeyTS

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

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

Сказал(а) «Спасибо»: 6 раз
Спасибо за ответ.

Уточните, пожалуйста,
1) В примере CMSSignExample хеширование данных осуществляется порциями. Файл размером 100 мб подписывается успешно для отсоединенной подписи, но для присоединенной - падается с ошибкой OutOfMemoryError при вызове
Код:
final Asn1BerEncodeBuffer asnBuf = new Asn1BerEncodeBuffer();
contentInfo.encode(asnBuf, true);


2) При использовании CAdESSignature без добавления корневого в cacerts никак не обойтись? Т.е. передав только сертификат подписи в CAdESSignature не получить подпись?
Попытки подписать самоподписанным или сертификатом, выданным Вашим тестовым УЦ, без установки корневого, получаю ошибку построения цепочки

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

Offline Евгений Афанасьев  
#4 Оставлено : 30 сентября 2021 г. 10:34:55(UTC)
Евгений Афанасьев

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

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

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