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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline Максим Коллегин  
#11 Оставлено : 25 ноября 2011 г. 2:43:23(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,457
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 39 раз
Поблагодарили: 750 раз в 645 постах
detached - это тоже PKCS#7.
Знания в базе знаний, поддержка в центре поддержки
Offline Kure  
#12 Оставлено : 25 ноября 2011 г. 13:08:22(UTC)
Kure

Статус: Администратор

Группы: Администраторы, Участники
Зарегистрирован: 13.12.2007(UTC)
Сообщений: 111
Откуда: Крипто-Про

Поблагодарили: 33 раз в 10 постах
1. В моем ответе про atached не было слов
2. Проверка подписи в формате PKCS#7 (CMS) attached/detaced производится по общему алгоритму
3. Присланным "Стандартным" кодом вы не проверите PKCS#7
4. Хотите подробнее, смотрите http://www.ietf.org/rfc/rfc3852.txt


Offline Valky  
#13 Оставлено : 25 ноября 2011 г. 15:12:08(UTC)
Valky

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

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

1. Что тогда проверяется "Стандартным" кодом? Может быть попросить наших клиентов по-другому подписывать данные, чтобы можно было проверять стандартным кодом?
2. Как вы определяете формат подписи (PKCS#7)?
3. Я попытался проверить подпись кодом из samples_src.jar/CMS_samples/CMSVerify.java, но получил на коде

Цитата:

final Asn1BerDecodeBuffer asnBuf = new Asn1BerDecodeBuffer(buffer); //буффер - подпись byte[]
final ContentInfo all = new ContentInfo();
all.decode(asnBuf);


следующее

Цитата:

com.objsys.asn1j.runtime.Asn1TagMatchFailedException: ASN.1 decode error @ offset 0:
Tag match failed: expected [UNIVERSAL 16], parsed [APPLICATION 13]
at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:49)
at com.objsys.asn1j.runtime.Asn1Type.matchTag(Asn1Type.java:65)
at ru.CryptoPro.JCP.ASN.CryptographicMessageSyntax.ContentInfo.decode(ContentInfo.java:55)
at com.objsys.asn1j.runtime.Asn1Type.decode(Asn1Type.java:15)
at ru.rjd.ws.dsi.util.CriptoProUtils.CMSVerify(CriptoProUtils.java:165)
at ru.rjd.ws.dsi.util.CriptoProUtils.verifySignature(CriptoProUtils.java:64)
at ru.rjd.ws.dsi.endpoints.DsiEndpoint.processAttachment(DsiEndpoint.java:357)
at ru.rjd.ws.dsi.endpoints.DsiEndpoint.importDoc(DsiEndpoint.java:254)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.ws.server.endpoint.MethodEndpoint.invoke(MethodEndpoint.java:132)
at org.springframework.ws.server.endpoint.adapter.MarshallingMethodEndpointAdapter.invokeInternal(MarshallingMethodEndpointAdapter.java:140)
at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:53)
at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:230)
at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:172)
at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:57)
at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:222)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Offline Андрей Писарев  
#14 Оставлено : 25 ноября 2011 г. 15:43:43(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
сильно не вникал, но signature.sig - в base64, есть в коде обратное декодирование?

Цитата:

byte[] data = Array.readFile(document);
sig.update(data);

return sig.verify(Array.readFile(signature)); //возвращает false


Отредактировано пользователем 25 ноября 2011 г. 15:46:37(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Valky  
#15 Оставлено : 25 ноября 2011 г. 15:44:01(UTC)
Valky

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

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

Последнюю проблему я решил, декодировав подпись из BASE64.

Подпись с грехом пополам мне верифицировать удалось с помощью примеров из CMS. Но напрашивается вопрос, может это как-то описать в руководстве программиста? Да и комментарии не помешали бы в примерах...

Остались у меня всё-таки два вопроса:
1. Что тогда проверяется "Стандартным" кодом? Может быть попросить наших клиентов по-другому подписывать данные, чтобы можно было проверять стандартным кодом?
2. Как вы определяете формат подписи (PKCS#7)? Как в рантайме определить формат подписи и от этого отталкиваться при верификации? Или необходимо выставить клиентам жесткие требования по формату подписи и никаких рантаймов?

Андрей * написал:
сильно не вникал, но signature.sig - в base64, есть в коде обратное декодирование?

Спасибо, как раз сам это сделал

Отредактировано пользователем 25 ноября 2011 г. 15:46:28(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#16 Оставлено : 25 ноября 2011 г. 15:49:23(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Valky написал:
Последнюю проблему я решил, декодировав подпись из BASE64.

Подпись с грехом пополам мне верифицировать удалось с помощью примеров из CMS. Но напрашивается вопрос, может это как-то описать в руководстве программиста? Да и комментарии не помешали бы в примерах...

Остались у меня всё-таки два вопроса:
1. Что тогда проверяется "Стандартным" кодом? Может быть попросить наших клиентов по-другому подписывать данные, чтобы можно было проверять стандартным кодом?
2. Как вы определяете формат подписи (PKCS#7)? Как в рантайме определить формат подписи и от этого отталкиваться при верификации? Или необходимо выставить клиентам жесткие требования по формату подписи и никаких рантаймов?

Андрей * написал:
сильно не вникал, но signature.sig - в base64, есть в коде обратное декодирование?

Спасибо, как раз сам это сделал



имхо:
Цитата:
необходимо выставить клиентам жесткие требования по формату подписи и никаких рантаймов?


или реализовать проверку на тип подписи + определять "наличие base64-кодирования"
:)




Техническую поддержку оказываем тут
Наша база знаний
Offline Kure  
#17 Оставлено : 25 ноября 2011 г. 21:56:56(UTC)
Kure

Статус: Администратор

Группы: Администраторы, Участники
Зарегистрирован: 13.12.2007(UTC)
Сообщений: 111
Откуда: Крипто-Про

Поблагодарили: 33 раз в 10 постах
>>> 1. Что тогда проверяется "Стандартным" кодом? Может быть попросить наших клиентов по-другому подписывать данные, чтобы можно было проверять стандартным кодом?

Проверятется значение ЭЦП, представленоое в виде 64 байт с использование открытого ключа, выдранного из сертификата в соответствии с ГОСТ Р34.10-2001
Можно попросить, но CMS (PKCS#7) это тоже стандарт на формат ЭЦП и именно он используется для подписи, т.к. из "обычной" подписи у вас нет никаой другой информации, кроме как "целостность данных не изменена", а в другом варианте вы получаете, целостность, кто подписал, когда подписал, действителен ли сертификат, не отозван ли он, кем выдан (доверенным УЦ или нет).

2. Как вы определяете формат подписи (PKCS#7)? Как в рантайме определить формат подписи и от этого отталкиваться при верификации? Или необходимо выставить клиентам жесткие требования по формату
подписи и никаких рантаймов?

Необходимо выставлять требования, вам в любом случае на вход могут подать что угодно.
Offline Valky  
#18 Оставлено : 26 ноября 2011 г. 6:33:31(UTC)
Valky

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

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

Ок, тогда последний вопрос наверное. Достаточно ли выдвинуть следующее требование: "предоставить цифровую подпись в формате PKCS#7 detached, кодированную в BASE64"? Или следует еще что-то указать?
Offline Андрей Писарев  
#19 Оставлено : 26 ноября 2011 г. 6:45:59(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,190
Мужчина
Российская Федерация

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Valky написал:
Ок, тогда последний вопрос наверное. Достаточно ли выдвинуть следующее требование: "предоставить цифровую подпись в формате PKCS#7 detached, кодированную в BASE64"? Или следует еще что-то указать?


достаточно ;)


p.s.
+ цепочка сертификации (сертификат автора, ЦС\УЦ)









Отредактировано пользователем 26 ноября 2011 г. 6:48:06(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Valky  
#20 Оставлено : 28 ноября 2011 г. 22:29:07(UTC)
Valky

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

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

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