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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Анастасия Чижикова  
#1 Оставлено : 23 апреля 2014 г. 15:18:25(UTC)
Анастасия Чижикова

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

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

Сказал(а) «Спасибо»: 6 раз
Добрый день!

Подскажите, пожалуйста!
Browser-plugin
Подписи (отсоединенные), полученные методами signHash и signCades для одного и того же файла могут/должны быть одинаковыми?
И можно ли проверить подпись signHash на сервере, используя CAdESSignature?
Offline Андрей Писарев  
#2 Оставлено : 23 апреля 2014 г. 15:39:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2054 раз в 1594 постах
Автор: Анастасия Чижикова Перейти к цитате
Добрый день!

Подскажите, пожалуйста!
Browser-plugin
Подписи (отсоединенные), полученные методами signHash и signCades для одного и того же файла могут/должны быть одинаковыми?
И можно ли проверить подпись signHash на сервере, используя CAdESSignature?


Различная подпись для одних и тех же данных.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Анастасия Чижикова оставлено 23.04.2014(UTC)
Offline Анастасия Чижикова  
#3 Оставлено : 23 апреля 2014 г. 15:42:43(UTC)
Анастасия Чижикова

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

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

Сказал(а) «Спасибо»: 6 раз
А проверить через CAdESSignature подпись, сделанную с помощью signHash, нет возможности?
Что вообще можно использовать для проверки такой подписи и извлечения данных о подписантах из нее на сервере?
Offline Новожилова Елена  
#4 Оставлено : 23 апреля 2014 г. 15:49:47(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Подпись проверить можно. Отделенную подпись можно проверить либо имея исходные данные, либо по хэш-значению.
Через "CAdESSignature" можно проверить только имея исходные данные (это те данные, для которых вы вычисляли хэш-значение).
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
salao оставлено 04.08.2016(UTC)
Offline Анастасия Чижикова  
#5 Оставлено : 23 апреля 2014 г. 16:01:30(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)  | Причина: Не указана

Offline Евгений Афанасьев  
#6 Оставлено : 23 апреля 2014 г. 17:02:08(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Исходные данные для подписи и проверки в одной кодировке?
Offline Анастасия Чижикова  
#7 Оставлено : 24 апреля 2014 г. 14:08:48(UTC)
Анастасия Чижикова

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

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

Сказал(а) «Спасибо»: 6 раз
В одной кодировке. Только исходными данными для подписания является хеш, а для проверки - сам файл см. http://www.cryptopro.ru/...ts&m=48248#post48248
Я все же не пойму, если верить ответу http://www.cryptopro.ru/...ts&m=48246#post48246
и подписи действительно разные, как возможна их проверка одним и тем же способом?

Код:
...
            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;
            }


Или я что-то недопонимаю, или посты Андрея http://www.cryptopro.ru/...ts&m=48246#post48246 и Елены http://www.cryptopro.ru/...ts&m=48248#post48248 друг другу противоречат.
Помогите, пожалуйста, разобраться.

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

Offline Новожилова Елена  
#8 Оставлено : 24 апреля 2014 г. 14:25:33(UTC)
Новожилова Елена

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

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

Поблагодарили: 99 раз в 95 постах
Если вы подпишете одни и те же данные одним и тем же способом, при помощи алгоритма ГОСТ Р 34.10 несколько раз - вы каждый раз получите разное значение подписи. Если интересно "как это работает" - читайте стандарт.
thanks 1 пользователь поблагодарил Новожилова Елена за этот пост.
Андрей * оставлено 24.04.2014(UTC)
Offline Анастасия Чижикова  
#9 Оставлено : 24 апреля 2014 г. 15:47:03(UTC)
Анастасия Чижикова

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

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

Сказал(а) «Спасибо»: 6 раз
Но я ведь спросила не об этом.

Ситуация 1. Мы подписали некий файл А.txt через браузерный плагин с помощью signCades.
Ситуация 2. Мы сгенерировали для того же самого исходного файла А.txt хеш при помощи алгоритма ГОСТ Р 34.10 (один единственный раз). И этот хеш подписали в браузерном плагине с помощью signHash.

В 1 и 2 ситуации у нас получились 2 разные подписи. Первая из них проверяется вышеприведенным кодом, а вторая нет.
Вопрос состоит из двух частей:

1. Действительно ли подписи из ситуаций 1 и 2 должны быть разными. Если верить ответу Андрея, ответ: ДА, ОНИ РАЗНЫЕ.
2. Можно ли, используя CAdESSignature работать с подписью, полученной во 2м случае - проверять и извлекать данные о подписантах

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

Offline Евгений Афанасьев  
#10 Оставлено : 24 апреля 2014 г. 16:03:36(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
С помощью CAdESSignature по хешу (в качестве данных) проверить не удастся.
thanks 2 пользователей поблагодарили Евгений Афанасьев за этот пост.
Анастасия Чижикова оставлено 24.04.2014(UTC), salao оставлено 04.08.2016(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.