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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline defomin  
#1 Оставлено : 25 марта 2016 г. 20:40:00(UTC)
defomin

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

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

Здравствуйте.
Используем JCP 2.0 38481 для проверки валидности отсоединенной подписи. Есть подпись, в которой не передаются сертификаты (имею ввиду, что обьект certificates отстутствует, и после contentInfo следует обьект SET (согласно RFC-2315)). В обычном случае, для проверки подписи используется класс java.security.Signature, куда мы через initVerify передаем сертификат. В данном случае, насколько я понимаю, проверить валидность можно только используя публичный ключ. Вопрос в том как его получить имея файл подписи?

Для примера есть так же КриптоПро АРМ 5.2, и через нее получается проверить валидиность этой же пары файл-подпись. Как в данном случае АРМ осуществляет проверку, и возможна ли аналогичная реализация на JCP (собственно, как это можно реализовать)?
Offline miser  
#2 Оставлено : 30 марта 2016 г. 11:25:53(UTC)
miser

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

Группы: Участники
Зарегистрирован: 14.03.2011(UTC)
Сообщений: 153
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
Вообще-то, JCP реализует стандарт JCA. Подпись - это значение некоторой функции. Размер выходных данных от 8 до 32 байт.
Есть хеш функции - messageDigest, есть функции подписи - signer.

В КрипоПро CSP, чаще всего используется контейнер PKCS#7. В JCP есть набор компонентов для обслуживания контейнера. Некоторые разработчики используют оснастку от BouncyCastle Java.
При создании контейнера подписи, чаще всего добавляют сертификат подписанта. Реже применяются параметры, определяющие сертификат подписанта. В качестве примера - сведения об издателе и серийный номер сертификата.

Средствами оснастки надо вытащить раздел "подписанные атрибуты". Там, обычно, хранится значение хеш функции и время подписания.
Теперь, вам достаточно сравнить значение хеш функции от открепленного документа со значением, взятым из контейнера.
Дату вы используете для проверки действия сертификата подписанта на момент создания подписи.


Почему у вас получилось проверить в АРМ? При работе с CSP API Lite, надо указывать сертификат и передавать блок контейнера подписи. Сертификат вы задаете отдельно.

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