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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline moroz  
#1 Оставлено : 6 октября 2014 г. 15:21:04(UTC)
moroz

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

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

Сказал(а) «Спасибо»: 6 раз
Ситуация: беру файл на бэкэнде, считаю его хэш, вставляю во вьюху, отправляю вьюху в браузер.
Там скриптами (при помощи CAdESCOM.CadesSignedData, CAdESCOM.HashedData, SignHash(...) и т.п.) подписываю этот хэш. Т.е. формата CMS я не получаю, но подпись есть, верно?

Далее проверяю подпись так же на клиенте (VerifyHash(...)) - все ок. Одновременно отправляю этот хэш и подпись на сервер.
На серваке нахожу файл, который соответствует данному хэшу. Передаю byte[] файла и byte[] подписи в старый, проверенный метод проверки подписи (наш самописный, через CryptVerifyDetachedMessageSignature(...)). Этот метод говорит, что подпись верна.

Вопросы:
1. Натыкался на форуме, что получить хэш на сервере, передать клиенту и там (с помощью CAdESCOM) получить подпись нельзя. Но описанное выше работает. Где подвох или что я неправильно понял?
2. Для подписи нужен закрытый ключ, который берется с токена. Порядок действий: ставлю сертификат в систему (с помощью crypropro csp), вытаскиваю токен из компа, тыкаю кнопку подписи в браузере, выбираю установленный сертификат. Меня просят вставить токен - ок, вставляю; подпись создается, проверяется - все ок.
Теперь обновляю страничку, вытаскиваю токен, тыкаю подписать - все ок?О_О Вопроса о токене больше нет и не появится?! Только если снести и заново установить сертификат в систему - тогда вопрос будет. 1 раз.
Получается закрытый ключ кэшируется где-то или вроде того?
Offline Новожилова Елена  
#2 Оставлено : 6 октября 2014 г. 15:46:44(UTC)
Новожилова Елена

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

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

Поблагодарили: 116 раз в 105 постах
1. Скорее всего обсуждаемая ситуация не совпадала с вашей.
2. У вас создается подпись на ключе с токена при вытащенном токене? Или после обновления страницы вы выбираете другой сертификат?
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
moroz оставлено 09.10.2014(UTC)
Offline moroz  
#3 Оставлено : 6 октября 2014 г. 16:13:27(UTC)
moroz

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Новожилова Елена Перейти к цитате
1. Скорее всего обсуждаемая ситуация не совпадала с вашей.
2. У вас создается подпись на ключе с токена при вытащенном токене? Или после обновления страницы вы выбираете другой сертификат?

1. Т.е. описанное мной работает как надо? В смысле, звучит рационально?)

2. Дело происходит в IE.
Код:

//выбираю сертификат
var oStore = ObjCreator("CAPICOM.store");
var oCert = oStore.Certificates.Select("...", "...", false);

//данные для подписи
var txtDataToSign = $('#' + dataID + ' li.selected [name*="Hash"]').val();
var sHashValue = InitializeHashedData(txtDataToSign);

//пошла подпись
var oSigner = ObjCreator("CAdESCOM.CPSigner");
oSigner.Certificate = oCert.Item(1);

var oSignedData = ObjCreator("CAdESCOM.CadesSignedData");
var CADES_BES = 1;
var sSignedData = oSignedData.SignHash(sHashValue, oSigner, CADES_BES);

Опустил всякие проверки. "oStore.Certificates.Select" <-- вот тут вот появляется список с сертификатами.
Порядок: удаляю сертификат из системы, с помощью csp заново ставлю его. Вынимаю токен, обновляю страничку браузера, тыкаю подписать, в списке выбираю только что установленный сертификат - появляется окошко стандартное "Insert key carrier media". Вставляю токен - оно пропадает, подпись создается. Опять вынимаю токен, обновляю страничку, тыкаю подписать - подпись создается... Больше никто "key carrier media" у меня не спрашивает. И подпись корректная.

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

Offline Новожилова Елена  
#4 Оставлено : 6 октября 2014 г. 16:24:40(UTC)
Новожилова Елена

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

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

Поблагодарили: 116 раз в 105 постах
1. Да, все работает как и должно.
2. "Опять вынимаю токен, обновляю страничку, тыкаю подписать - подпись создается... "

После "обновляю страничку" и "тыкаю подписать" должен быть выбор сертификата. Вы тот же сертификат выбираете?

Отредактировано пользователем 6 октября 2014 г. 16:29:13(UTC)  | Причина: Не указана

Offline moroz  
#5 Оставлено : 6 октября 2014 г. 16:29:32(UTC)
moroz

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Новожилова Елена Перейти к цитате
1. Да, все работает как и должно.
2. "Опять вынимаю токен, обновляю страничку, тыкаю подписать - подпись создается... "

Между "обновляю страничку" и "тыкаю подписать" должен быть выбор сертификата. Вы тот же сертификат выбираете?

1. Ура.
2. Да, пропустил этот шаг. Тот же сертификат конечно.
Offline Новожилова Елена  
#6 Оставлено : 6 октября 2014 г. 16:45:27(UTC)
Новожилова Елена

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

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

Поблагодарили: 116 раз в 105 постах
Какой криптопровайдер вы используете?

Кстати, а почему вы считаете, что не получаете CMS? Судя по вашему коду - это не так.
Offline moroz  
#7 Оставлено : 6 октября 2014 г. 17:00:28(UTC)
moroz

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Новожилова Елена Перейти к цитате
Какой криптопровайдер вы используете?

CryptoPro CSP 3.9.8000

Автор: Новожилова Елена Перейти к цитате
Кстати, а почему вы считаете, что не получаете CMS? Судя по вашему коду - это не так.

IRawSignature
Там внизу пояснение.
По поводу подписи хэша.
Этим постом и был вызван самый первый вопрос топика о подписи хэша на клиенте.
Offline Новожилова Елена  
#8 Оставлено : 6 октября 2014 г. 17:35:33(UTC)
Новожилова Елена

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

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

Поблагодарили: 116 раз в 105 постах
В вашем коде:

var sSignedData = oSignedData.SignHash(sHashValue, oSigner, CADES_BES);

При чем здесь IRawSignature?
Ветка, на которую вы ссылаетесь, была создана 3 года назад. До появления метода CadesSignedData.SignHash
Offline moroz  
#9 Оставлено : 6 октября 2014 г. 17:40:47(UTC)
moroz

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Новожилова Елена Перейти к цитате
В вашем коде:
var sSignedData = oSignedData.SignHash(sHashValue, oSigner, CADES_BES);
При чем здесь IRawSignature?

Согласен, ошибся тут. Спасибо.

Автор: Новожилова Елена Перейти к цитате
Ветка, на которую вы ссылаетесь, была создана 3 года назад. До появления метода CadesSignedData.SignHash

~ так и думал. Поэтому не стал сразу ссылку кидать на те посты, ограничился "Ура"=)

Второй вопрос остался: откуда берется ключ для подписи, если токен вытащен физически из компьютера?
Offline Новожилова Елена  
#10 Оставлено : 6 октября 2014 г. 17:44:57(UTC)
Новожилова Елена

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

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

Поблагодарили: 116 раз в 105 постах
У вас случайно не включено кэширование ключей?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.