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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ozi  
#1 Оставлено : 19 декабря 2014 г. 12:30:59(UTC)
ozi

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

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

Добрый день.
Подскажите пожалуйста, т.к. не имею большого опыта работы с ЭЦП.
задача:
1. есть некий сайт, который будет работать с использованием Криптопро ЭЦП. А именно:
а) при регистрации можно взять данные с сертификата.
б) все сообщения и прикрепленные файлы пользователя должны подписываться ЭЦП.
Будет использоваться ЭЦП browser plug-in.

Необходим совет, или алгоритм действий, т.е. не до конца представляю очередность действий.
Если с первой задачей более-менее понятно. с помощью JS и плагина выбираем сертификат, получаем из него данные и заполняем ими форму, то
со второй не все понятно.
1. пользователь заполняет форму, прикрепляет файлы.
2. выбирает сертификат и нажимает кнопку "подписать"
Что дальше? на сайте http://cpdn.cryptopro.ru...ontent/cades/plugin.html есть пример создания и проверки подписи.
Текстовые поля подписывают и проверяются. Как подписываются файлы? что отправляется на сервер? подписанные данные или нет? если подписанные, то как они
на сервере проверяются, ключи же не передаются. Или же плагин просто проверяет действительность подписи? т.е. подписывает некое поле и потом проверяет
действительность подписи? и если все пучком, то отправляет фаорму на сервер? как тогда потом доказать, что это именно тот файл, который прислал пользователь,
если в нем нет подписи...

В общем хотелось бы услышать хоть что-то, что помогло бы мне начать двигаться в правильном направлении...
Offline Андрей Писарев  
#2 Оставлено : 19 декабря 2014 г. 13:06:46(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2251 раз в 1756 постах
Вместе с файлом отправляйте электронную подпись созданную через плагин для этого файла.
На стороне сервера можно выполнить проверку этой подписи, извлечь сертификаты и т.п.
Техническую поддержку оказываем тут
Наша база знаний
Offline ozi  
#3 Оставлено : 20 декабря 2014 г. 9:59:18(UTC)
ozi

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

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

по сути получается, что я создаю форму, пользователь ее заполняет, прикрепляет файлы и отправляет форму. Также скрытым полем отправляется ЭЦП. Или ЭЦП формируется для каждого поля?
На стороне сервера эта(и) ЭЦП проверяется. И если она действительна, то данные обрабатываются.
Обязательно ли делать проверку на стороне сервера? Ведь плагин позволяет проверить подпись? Можно ли на стороне клиента делать проверку подвписи?
если подпись действительна, то отправлять форму, если нет, то сообщать об ошибке?

Отредактировано пользователем 20 декабря 2014 г. 11:23:42(UTC)  | Причина: Не указана

Offline Андрей Писарев  
#4 Оставлено : 20 декабря 2014 г. 12:05:30(UTC)
Андрей *

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

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

Сказал «Спасибо»: 554 раз
Поблагодарили: 2251 раз в 1756 постах
Автор: ozi Перейти к цитате
по сути получается, что я создаю форму, пользователь ее заполняет, прикрепляет файлы и отправляет форму. Также скрытым полем отправляется ЭЦП. Или ЭЦП формируется для каждого поля?

Как запрограммируете, так и будет.

Автор: ozi Перейти к цитате

На стороне сервера эта(и) ЭЦП проверяется. И если она действительна, то данные обрабатываются.
Обязательно ли делать проверку на стороне сервера?

А цель какая у разрабатываемого сервиса?
Принять что-то и сохранить на сервере?

Если есть возможность проверки ЭП на стороне сервера - она должна быть.
Никогда не доверяйте клиентской части (с)

Автор: ozi Перейти к цитате

Ведь плагин позволяет проверить подпись? Можно ли на стороне клиента делать проверку подвписи?
если подпись действительна, то отправлять форму, если нет, то сообщать об ошибке?


Не помешает.
Техническую поддержку оказываем тут
Наша база знаний
Offline ozi  
#5 Оставлено : 20 декабря 2014 г. 15:21:38(UTC)
ozi

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

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

1. наличие ЭЦП у сервиса сделано для того, чтоб решать спорные вопросы, касаемые авторства. Чтоб исключить заявления типа: "... я этого не отправлял...".
2. сохраняться будт как данные полей формы, так и файлы, прикрепленные к фарме. Причем полей может быть очень много в форме (различные wizard-ы добавления информации).
Поэтому я и пытаюсь понять, как правильно сделать. Если, папример, я все поля (или парочку значимых) складываю в одну строковую переменую, но основе этой строки формирую подпись,
подпись вкладываю в hidden поле и отправляю. На сервере проверяю подпись. Как с файлами быть? подпись как-то встраивается в файлы? или на сервере придется создавать таблицу и в ней хранить уже соответствие определенной подписи определенному файлу? Везде информация как то размыто данна.

с другой стороны, чтоб на стороне сервера проверить подпись, то надо иметь открытые ключи всех пользователей...
или как-то из подписи можно выдернуть открытый ключ?

Отредактировано пользователем 21 декабря 2014 г. 15:07:48(UTC)  | Причина: Не указана

Offline ozi  
#6 Оставлено : 17 февраля 2015 г. 22:30:23(UTC)
ozi

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

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

как происходит подпись нескольких файлов?
подписывается почему то только один файл, а потом ошибка?

сейчас подписываю следующим способом:

$('#file').on('change', function(e){
var files = this.files;
var sCertName = $('#certList').val();
for(var i = 0, f; f = files[i]; i++)
{
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile){
return function(e){
var header = ";base64,";
var sFileData = e.target.result;
var sBase64Data = sFileData.substr(sFileData.indexOf(header) + header.length);
var signedMessage = SignCreate(sCertName, sBase64Data);
var verifyResult = Verify(signedMessage, sBase64Data);
if(verifyResult){
$('<textarea />', {name: 'signedFiles[' + theFile.name + ']'}).val(signedMessage).appendTo('#ecpFiles');
}

};
})(f);
reader.readAsDataURL(f);
}
});

функции SignCreate и Verify взяты из примера.
если выбираю один файл, то все хорошо, поле добавляется... если несколько, то добавляется одно поле и затем плагин отваливается с сообщением uncaught exception: Key does not exist. (0x8009000D), а затем uncaught exception: Invalid algorithm specified. (0x80090008) и приходится перезапускать браузер
Offline ozi  
#7 Оставлено : 17 февраля 2015 г. 22:31:09(UTC)
ozi

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

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

подскажите хоть алгоритм просто. и вообще стоит ли подписывать файлы так? или может их проще через КриптоАРм подписать да отправить и файл, и подпись?
Offline ozi  
#8 Оставлено : 2 марта 2015 г. 11:39:31(UTC)
ozi

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

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

со всеми вопросами вроде бы разобрался, кроме одного.
подписание файлов с помощью ЭЦП-плагина происходит при помощи FileReader API, а он в свою очередь не работает с форматами офиса 2007 и выше, т.е. с форматами .docx, .xlsx и т.д.
как тут быть?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.