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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline nosferatum  
#11 Оставлено : 31 октября 2013 г. 16:51:27(UTC)
nosferatum

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Из detached подписи можно как-то извлечь сертификат (объект java.security.cert.Certificate)?

В примере CMS.java сертификат передается в функцию CMSVerify, а не извлекается из самой подписи (считанной из Array.readFile(CMS_FILE_D_PATH)).
Но ведь сертификат должен передаваться вместе с подписью. Насколько я понимаю, detached подпись должна содержать этот сертификат.



UPDATE:
Судя по коду функции CMSVerify, массив сертификатов находится в cms.certificates. Как правильно выбрать из этого массива тот сертификат, который использовался для подписи? Будет ли он первым или последним в этом массиве?

Отредактировано пользователем 31 октября 2013 г. 17:17:56(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#12 Оставлено : 31 октября 2013 г. 20:12:46(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
В CMSVerify происходит проверка ЭЦП всеми сертификатами в подписи. Сертификатом подписи признается тот, на котором проверка ЭЦП успешна. Кроме того, в подпись можно поместить sid сертификата подписи, в подписанные атрибуты (см. CAdES-BES) - тогда точно можно будет узнать, на каком сертификате осуществлять проверку.
Offline miser  
#13 Оставлено : 14 ноября 2013 г. 23:15:59(UTC)
miser

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

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

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах
Вот, честно, не понимаю я логики работы с PKCS#7 в JCP. Может, сейчас, в новых версиях что-то изменилось. Как-то очень тяжеловесно проводить замес на уровне ASN1.

Берем Bouncy Castle.
Открываем статью "Add signed/authenticated attributes to CMS signature using BouncyCastle" на stackoverflow.

Там есть пример создание строителя хеш функции - JcaDigestCalculatorProviderBuilder.
Он создает объект DigestCalculatorProvider.
Создаем его чуточку раньше. У него есть поток записи данных. Туда скармливаем любого размера данные, хоть терабайт.
Запрашивает у него getDigest(). Это будет значение параметра digestBytes, в 3-й строке рассматриваемого примера.

Ну, да, еще надо везде вместо "BC" указать название нужного провайдера.

Да, можно найти пример и по легче.

Удачи.
Offline nosferatum  
#14 Оставлено : 21 ноября 2013 г. 17:13:49(UTC)
nosferatum

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Возможно ли (и если да, то как?) положить в CMS-подпись всю цепочку сертификатов от корневого до того, которым выполняется подпись?

Если нельзя положить цепочку, то как проверить валидность сертификата из CMS-подписи, не имея цепочки сертификатов?
Offline Евгений Афанасьев  
#15 Оставлено : 21 ноября 2013 г. 17:25:18(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Автор: nosferatum Перейти к цитате
Возможно ли (и если да, то как?) положить в CMS-подпись всю цепочку сертификатов от корневого до того, которым выполняется подпись?

Если нельзя положить цепочку, то как проверить валидность сертификата из CMS-подписи, не имея цепочки сертификатов?


Да, можно. Как - зависит от того, как вы реализовываете. И в samples.jar, и в CAdES.jar есть функции для помещения сертификатов в подпись.
Если нельзя положить, то как минимум нужно иметь доступ к сертификату подписи для проверки подписи. Восстановить цепочку можно, проверяя ссылку на центр сертификации (если он есть) в расширениях и загружая сертификаты его из сети.

Offline nosferatum  
#16 Оставлено : 21 ноября 2013 г. 17:42:45(UTC)
nosferatum

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате

Если нельзя положить, то как минимум нужно иметь доступ к сертификату подписи для проверки подписи. Восстановить цепочку можно, проверяя ссылку на центр сертификации (если он есть) в расширениях и загружая сертификаты его из сети.



Можно подробнее, как «загружать сертификаты из его сети»?


В расширениях, например, имею:

Идентификатор ключа субъекта
aa ee c9 bd 04 65 dc 2f df 15 75 3d 4b aa f4 e5 cf 87 dc c9

Идентификатор ключа центра сертификации:
Идентификатор ключа=11 3e 58 f0 97 cf 1e 41 4e e3 01 70 81 1a ef 76 9d 8c 11 d8
Поставщик сертификата:
Адрес каталога:
CN=RUC_SO_2
C=RU
S=63 Самарская область
L=Самара
O=ГКУ СО РЦУП
ОГРН=1096315003080
ИНН=006315856325
Серийный номер сертификата=7a 2f 2e 72 88 41 6d 9f 4e 53 10 76 1a 00 cd 52

Точки распространения списков отзыва
[1]Точка распределения списка отзыва (CRL)
Имя точки распространения:
Полное имя:
URL=http://10.0.40.59/cryptopro_2012_coc.crl
[2]Точка распределения списка отзыва (CRL)
Имя точки распространения:
Полное имя:
URL=http://ruc.samregion.ru/cryptopro_2012_coc.crl


Доступ к информации о центрах сертификации
[1]Доступ к сведениям центра сертификации
Метод доступа=Протокол определения состояния сертификата через сеть (1.3.6.1.5.5.7.48.1)
Дополнительное имя:
URL=http://ca.samregion.ru/ocsp/ocsp.srf


Этих данных будет достаточно для восстановления пути сертификации от сертификата подписи до корневого сертификата и валидации сертификата подписи?

Отредактировано пользователем 21 ноября 2013 г. 17:47:38(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#17 Оставлено : 21 ноября 2013 г. 18:03:48(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Автор: nosferatum Перейти к цитате

Доступ к информации о центрах сертификации

Здесь может присутствовать информация вида (но необязательно):

[3]Доступ к сведениям центра сертификации
Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2)
Дополнительное имя:
URL=http://www.cryptopro.ru/certenroll/pki-site_Test%20Center%20CRYPTO-PRO(2).crt

Offline nosferatum  
#18 Оставлено : 21 ноября 2013 г. 18:10:35(UTC)
nosferatum

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 1 раз в 1 постах
Автор: afev Перейти к цитате

Здесь может присутствовать информация вида (но необязательно):

[3]Доступ к сведениям центра сертификации
Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2)
Дополнительное имя:
URL=http://www.cryptopro.ru/certenroll/pki-site_Test%20Center%20CRYPTO-PRO(2).crt



Во всех доступных мне примерах используемых у нас сертификатов, таких данных нет:
Метод доступа=Поставщик центра сертификации (1.3.6.1.5.5.7.48.2)

Есть только как приведенные мной выше:
Метод доступа=Протокол определения состояния сертификата через сеть (1.3.6.1.5.5.7.48.1)


В таком случае, достать цепочку сертификатов и проверить валидность сертификата невозможно?

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

Offline Евгений Афанасьев  
#19 Оставлено : 21 ноября 2013 г. 18:16:26(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Думаю, нет.
Offline nosferatum  
#20 Оставлено : 21 ноября 2013 г. 18:30:52(UTC)
nosferatum

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

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

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

Стало быть, остается только обязательно класть всю цепочку сертификатов при формировании CMS-подписи.
Автор: afev Перейти к цитате

Да, можно. Как - зависит от того, как вы реализовываете. И в samples.jar, и в CAdES.jar есть функции для помещения сертификатов в подпись.


Создание CMS-подписи я взял из примера CMS.java (в CMS_Samples из samples_src.jar), метода createCMS(byte[] buffer, byte[] sign, Certificate cert, boolean detached),

Прошу подсказать по следующим пунктам:
- Где именно смотреть примеры в samples.jar и CAdES.jar добавление дополнительных сертификатов в CMS-подпись?

- Как, собственно, получить все сертификаты из цепочки «от корневого сертификата УЦ до сертификата подписи», имея сертификат подписи, на этапе подписи (в Java)? Как-то достать из KeyStore, видимо?

- Как на этапе проверки подписи сформировать из сертификатов цепочку в правильном порядке сертификатов? Нужно ли для этого специально сохранять порядок сертификатов в цепочке?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.