Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2013(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
Добрый день!
Подскажите, пожалуйста! Browser-plugin Подписи (отсоединенные), полученные методами signHash и signCades для одного и того же файла могут/должны быть одинаковыми? И можно ли проверить подпись signHash на сервере, используя CAdESSignature?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: Анастасия Чижикова Добрый день!
Подскажите, пожалуйста! Browser-plugin Подписи (отсоединенные), полученные методами signHash и signCades для одного и того же файла могут/должны быть одинаковыми? И можно ли проверить подпись signHash на сервере, используя CAdESSignature? Различная подпись для одних и тех же данных. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2013(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
А проверить через CAdESSignature подпись, сделанную с помощью signHash, нет возможности? Что вообще можно использовать для проверки такой подписи и извлечения данных о подписантах из нее на сервере?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Подпись проверить можно. Отделенную подпись можно проверить либо имея исходные данные, либо по хэш-значению. Через "CAdESSignature" можно проверить только имея исходные данные (это те данные, для которых вы вычисляли хэш-значение).
|
1 пользователь поблагодарил Новожилова Елена за этот пост.
|
salao оставлено 04.08.2016(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2013(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
Спасибо! Все-таки не понимаю, если signCades и signHash создают разные подписи, как они могут быть проверены одной и той же процедурой cadesSignature.verify(chain)... Или я что-то путаю? Я пытаюсь проверять так: Код:...
CAdESSignature cadesSignature = new CAdESSignature(signature, data, CAdESType.CAdES_BES);
try {
cadesSignature.verify(chain);
} catch (Throwable e) {
logger.error("Failed to verify data", e);
return null;
}
signature - byte[] - подпись, сгенерированная через signHash data - byte[] - исходные данные (данные, для которых вычислялось хэш-значение по ГОСТ 34.11) Падает с ошибкой org.bouncycastle.cms.CMSSignerDigestMismatchException: message-digest attribute value does not match calculated value Подпись создается так: Код:/**
* Создать CADES-подпись по хеш-значению
* certSubjectName - имя сертификата, которым подписываем
* dataToSign - хеш подписываемых данных
* */
function SignCreate(certSubjectName, dataToSign) {
var timeStart = Date.now();
if (console) console.log("Процедура создания первичной цифровой подписи.");
var oStore = CreateObject("CAPICOM.Store");
oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var oCertificates = oStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);
if (oCertificates.Count == 0) {
alert("Certificate not found");
return;
}
var oCertificate = oCertificates.Item(1);
var oSigningTimeAttr = CreateObject("CADESCOM.CPAttribute");
oSigningTimeAttr.Name = CADESCOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
var oTimeNow = new Date();
oSigningTimeAttr.Value = ConvertDate(oTimeNow);
var oSigner = CreateObject("CAdESCOM.CPSigner");
oSigner.Certificate = oCertificate;
oSigner.TSAAddress = TSA_ADDRESS;
oSigner.Options = CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;
var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
var sSignedMessage = "";
if (console) console.log("Тип подписи: отсоединенная");
var oHashedData = CreateObject("CAdESCOM.HashedData");
oHashedData.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
oHashedData.SetHashValue(dataToSign);
try {
sSignedMessage = oSignedData.SignHash(oHashedData, oSigner, CADESCOM_CADES_BES);
} catch (err) {
alert("Не удалось подписать файл. Ошибка: " + GetErrorMessage(err));
return null;
}
oStore.Close();
if (console)
console.log("файл подписан за " + (Date.now() - timeStart).toString() + " ms");
return sSignedMessage;
}
Отредактировано пользователем 23 апреля 2014 г. 16:14:43(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Исходные данные для подписи и проверки в одной кодировке? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2013(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Если вы подпишете одни и те же данные одним и тем же способом, при помощи алгоритма ГОСТ Р 34.10 несколько раз - вы каждый раз получите разное значение подписи. Если интересно "как это работает" - читайте стандарт.
|
1 пользователь поблагодарил Новожилова Елена за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2013(UTC) Сообщений: 14 Откуда: Москва Сказал(а) «Спасибо»: 6 раз
|
Но я ведь спросила не об этом. Ситуация 1. Мы подписали некий файл А.txt через браузерный плагин с помощью sign Cades. Ситуация 2. Мы сгенерировали для того же самого исходного файла А.txt хеш при помощи алгоритма ГОСТ Р 34.10 (один единственный раз). И этот хеш подписали в браузерном плагине с помощью sign Hash. В 1 и 2 ситуации у нас получились 2 разные подписи. Первая из них проверяется вышеприведенным кодом, а вторая нет. Вопрос состоит из двух частей: 1. Действительно ли подписи из ситуаций 1 и 2 должны быть разными. Если верить ответу Андрея, ответ: ДА, ОНИ РАЗНЫЕ. 2. Можно ли, используя CAdESSignature работать с подписью, полученной во 2м случае - проверять и извлекать данные о подписантах Отредактировано пользователем 24 апреля 2014 г. 16:00:48(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
С помощью CAdESSignature по хешу (в качестве данных) проверить не удастся. |
|
2 пользователей поблагодарили Евгений Афанасьев за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close