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

Уведомление

Icon
Error

4 Страницы<1234>
Опции
К последнему сообщению К первому непрочитанному
Offline Анатолий Колкочев  
#11 Оставлено : 29 декабря 2020 г. 16:49:30(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: Андрей * Перейти к цитате
в RFC нужно посмотреть..


Подскажите, что следует посмотреть ?
Offline Санчир Момолдаев  
#12 Оставлено : 29 декабря 2020 г. 21:13:20(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
Добрый день!
попробуйте перевернуть подпись побайтово:
63<->0, 62<->1 ...
и проверить
Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Колкочев  
#13 Оставлено : 29 декабря 2020 г. 21:31:38(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: Санчир Момолдаев Перейти к цитате
Добрый день!
попробуйте перевернуть подпись побайтово:
63<->0, 62<->1 ...
и проверить


Сделал array.reverse()

PS. Не помогло...( Опять неправильная подпись

Сделал:
Код:
$rev_sig = $signers[0].GetSignature()
[array]::Reverse($rev_sig)
[System.IO.File]::WriteAllBytes((gci .\1.sig),$rev_sig)

csptest -keyset -verify GOST12_256 -in .\1.hash -signature .\1.sig -cert .\1.cer

Отредактировано пользователем 29 декабря 2020 г. 21:42:34(UTC)  | Причина: Не указана

Offline Санчир Момолдаев  
#14 Оставлено : 29 декабря 2020 г. 21:51:28(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
в -in надо передать имя исходного файла, а не хэша
Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Колкочев  
#15 Оставлено : 29 декабря 2020 г. 21:54:20(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: Санчир Момолдаев Перейти к цитате
в -in надо передать имя исходного файла, а не хэша


Так тоже попробовал. Не получилось ... Опять неправильная подпись.

PS. Попробовал и развернуть байты подписи array.reverse(). Неправильная подпись.

PPS. Скорее всего проблема в методе GetContentDigest(). Т.к. передавая его PrivateKey.VerifyHash() тоже получается false на выходе

Отредактировано пользователем 29 декабря 2020 г. 22:00:31(UTC)  | Причина: Не указана

Offline Санчир Момолдаев  
#16 Оставлено : 29 декабря 2020 г. 22:00:58(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
так у вас же cades-bes подпись.
в ней хэшируются подписанные аттрибуты и затем подписываются. и это значение подписи от хэша подписанных аттрибутов, а не исходных данных
может обойтись без cms подписей?
Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Колкочев  
#17 Оставлено : 29 декабря 2020 г. 22:03:12(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: Санчир Момолдаев Перейти к цитате
так у вас же cades-bes подпись.
в ней хэшируются подписанные аттрибуты и затем подписываются. и это значение подписи от хэша подписанных аттрибутов, а не исходных данных
может обойтись без cms подписей?


Как раз сегодня об этом спрашивал тут

PS. Я пытаюсь найти метод, с помощью которого можно посчитать этот хеш-код. Видимо, метод GetContentDigest() в итоге выдает messageDigest, а не то, что нужно.

PSS. Нет, messageDigest в файле Example1.docx.sig:
Код:
22 04 06 6c 70 22 33 34  31 6f 4d c6 f7 eb a6 11
9b 5e 64 91 ae df 2b 9a  85 87 e9 bb 17 d6 bb 33


Вычисленный хеш-код для подписываемого файла Example1.docx:
Код:
cpverify.exe -mk .\Example1.docx -alg GR3411_2012_256
Вывод: 2204066C70223334316F4DC6F7EBA6119B5E6491AEDF2B9A8587E9BB17D6BB33

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

Offline Санчир Момолдаев  
#18 Оставлено : 29 декабря 2020 г. 22:12:58(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
а КриптоПро .NET установлен?
если через него то
Код:
// Создаем объект для хэширования.
Gost3411_2012_256CryptoServiceProvider gost3411 = new Gost3411_2012_256CryptoServiceProvider();
// Вычисляем хэш от всех прочитанных данных.
byte[] hashValue = gost3411.ComputeHash(data);
gost3411.Clear();

X509Certificate2 signerCert = GetSignerCert("Test");
Console.WriteLine("Сертификат: {0}",signerCert.Subject);
// первый способ
Gost2012_256SignatureFormatter gost = new Gost2012_256SignatureFormatter();
gost.SetKey(signerCert.PrivateKey);
byte[] sign = gost.CreateSignature(hashValue);

File.WriteAllBytes(sigFileName1,sign.Reverse().ToArray());

//еще одна подпись
Gost3410_2012_256CryptoServiceProvider cert_key = signerCert.PrivateKey as Gost3410_2012_256CryptoServiceProvider;
sign = cert_key.CreateSignature(hashValue);
File.WriteAllBytes(sigFileName2, sign);

Отредактировано пользователем 29 декабря 2020 г. 22:15:06(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Анатолий Колкочев  
#19 Оставлено : 29 декабря 2020 г. 22:14:23(UTC)
TolikTipaTut1

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

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: Санчир Момолдаев Перейти к цитате
а КриптоПро .NET установлен?
если через него то
Код:
// Создаем объект для хэширования.
            Gost3411_2012_256CryptoServiceProvider gost3411 = new Gost3411_2012_256CryptoServiceProvider();
            // Вычисляем хэш от всех прочитанных данных.
            byte[] hashValue = gost3411.ComputeHash(data);
            gost3411.Clear();

            X509Certificate2 signerCert = GetSignerCert("Test");
            Console.WriteLine("Сертификат: {0}",signerCert.Subject);
            // первый способ
            Gost2012_256SignatureFormatter gost = new Gost2012_256SignatureFormatter();
            gost.SetKey(signerCert.PrivateKey);
            byte[] sign = gost.CreateSignature(hashValue);

            File.WriteAllBytes(sigFileName1,sign.Reverse().ToArray());

            //еще одна подпись
            Gost3410_2012_256CryptoServiceProvider cert_key = signerCert.PrivateKey as Gost3410_2012_256CryptoServiceProvider;
            sign = cert_key.CreateSignature(hashValue);
            File.WriteAllBytes(sigFileName2, sign);


Да, КриптоПро .Net стоит.
Но идея не в том, чтобы посчитать хеш-код для файла, а понять, что подписывается в CMS

Отредактировано пользователем 29 декабря 2020 г. 22:15:10(UTC)  | Причина: Не указана

Offline Санчир Момолдаев  
#20 Оставлено : 29 декабря 2020 г. 22:22:56(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
в кадес хэшируются аттрибуты. этот хэш подписывается.
в pkcs7 без подписанных аттрибутов http://cpdn.cryptopro.ru...p40/html/cadesattrs.html
подписывается хэш от данных
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
4 Страницы<1234>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.