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

Уведомление

Icon
Error

6 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline fomenko  
#1 Оставлено : 17 июля 2013 г. 10:50:30(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Есть следующая задача :на сервере хранятся xml-файлы и надо пользователям подписывать их.
Вариант в лоб: скачать файл, подписать его и снова отправить на сервер, но размер файлов большой, а каналы у заказчика узкие и от
этого варианта хотелось бы уйти. Можно ли как-то сделать следующим образом:
клиент отправляет запрос на сервер и подписывает его своим сертификатом,
на сервере есть возможность слазить в удостоверяющий центр и получить информация по сертификату.
Хватит ли этой информации, чтобы сервер смог осуществить подписывание файла за клиента?
И есть ли какое-либо альтернативное решение для данной задачи?
Offline Fomich  
#2 Оставлено : 17 июля 2013 г. 11:16:25(UTC)
Fomich

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

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

Поблагодарили: 2 раз в 2 постах
Если я правильно разобрался в dsig, то на сервере можно собрать signedinfo, на клиенте подписать и отправить обрато
Offline fomenko  
#3 Оставлено : 17 июля 2013 г. 11:54:03(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Не совсем понимаю, как именно его собрать.

<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411"/>
<Reference>
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<XPath xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::Object)</XPath>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411"/>
<DigestValue>hs5YvifvECIAhLokXHXScGnAxLaLekOSRoWV8HERtvY=</DigestValue>
</Reference>
</SignedInfo>


Как сгенерить DigestValue на основе содержимого файла, и что именно и как подписывать на клиенте ?
Offline Fomich  
#4 Оставлено : 17 июля 2013 г. 12:18:02(UTC)
Fomich

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

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

Поблагодарили: 2 раз в 2 постах
Советую почитать http://www.di-mgt.com.au/xmldsig.html Очень хорошо расписано, что, как и, главное, от чего берутся хэши.

На сервере можешь собрать так:
Цитата:

<?xml version="1.0" encoding="UTF-8"?>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="#object">
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue></DigestValue>
</Reference>
</SignedInfo>
<SignatureValue></SignatureValue>
<KeyInfo>
<KeyValue>
<X509Data><X509Certificate></X509Certificate></X509Data>
</KeyInfo>
<Object Id="object">
<твой xml/>
</Object>
</Signature>


На севере подсчитываешь хэш от канонизированной xml
Цитата:
<Object Id="object" xmlns="http://www.w3.org/2000/09/xmldsig#">
<твой xml/>
</Object>


Вставляешь в diestvalue полученный хэш и отправляешь клиенту ноду SignedInfo на подпись. Подписываешь, отправляешь обратно на сервер SignatureValue и сертификат
Как то так
thanks 1 пользователь поблагодарил Fomich за этот пост.
fomenko оставлено 17.07.2013(UTC)
Offline Новожилова Елена  
#5 Оставлено : 17 июля 2013 г. 12:20:44(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
DigestValue - это хэш-значение. Его нужно вычислить по алгоритму, указанному в элементе DigestMethod. Предварительно (до вычисления хэш-значения) подписываемый документ нужно привести к каноническому виду. А вообще, лучше начать с чтения стандарта, там все достаточно подробно расписано. http://www.w3.org/TR/xmldsig-core/
Offline dmishin  
#6 Оставлено : 17 июля 2013 г. 12:53:22(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Решал такую же задачу: http://www.cryptopro.ru/...aspx?g=posts&m=40098
Offline fomenko  
#7 Оставлено : 17 июля 2013 г. 13:05:58(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Цитата:

Решал такую же задачу: http://www.cryptopro.ru/...aspx?g=posts&m=40098


Получилось у вас получать валидное SignatureValue на клиенте от,так понимаю, канонизированного SignedInfo?
Offline dmishin  
#8 Оставлено : 17 июля 2013 г. 13:11:16(UTC)
dmishin

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

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

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

Решал такую же задачу: http://www.cryptopro.ru/...aspx?g=posts&m=40098


Получилось у вас получать валидное SignatureValue на клиенте от,так понимаю, канонизированного SignedInfo?


Да
Offline dmishin  
#9 Оставлено : 17 июля 2013 г. 13:21:56(UTC)
dmishin

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Точнее даже не от канонизированного SignedInfo, а от хеша канонизированного SignedInfo
Offline fomenko  
#10 Оставлено : 17 июля 2013 г. 13:36:57(UTC)
fomenko

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

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

Сказал(а) «Спасибо»: 9 раз
Можете предоставить пример Javascript-кода? или хотя бы указать,какими методами пользовались для получения хэша канонизированного SignedInfo
и для получения SignatureValue?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
6 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.