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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline geka22  
#1 Оставлено : 13 апреля 2015 г. 10:18:04(UTC)
geka22

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

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

Согласно
http://cpdn.cryptopro.ru..._SignData_2_a50a8ed6.htm

реализуется алгоритм подписи Гост 34.10 (в комментариях к примеру на C# указан ГОСТ 34.10-2001),
согласно

http://cpdn.cryptopro.ru...stSignatureFormatter.htm
реализуется подпись по ГОСТ 34.10-2001

согласно http://cpdn.cryptopro.ru..._SignHash_1_a3d79294.htm
подписывается по ГОСТ 34.10-2001

Ниже код, который формирует 3 разных подписи!! Все из них из cpdn.
byte[] dataToEncrypt = new UnicodeEncoding().GetBytes("qwertyuiopasdfghjklzxcvbnm");
byte[] encryptedData;

var gost = new Gost3410CryptoServiceProvider();
var hashAlg = new Gost3411CryptoServiceProvider();

var hashData = hashAlg.ComputeHash(dataToEncrypt);

//=================================================================================

encryptedData = gost.SignHash(hashData);
textBox1.Text = Convert.ToBase64String(encryptedData);

//=================================================================================

encryptedData = gost.SignData(dataToEncrypt, hashAlg);
textBox2.Text = Convert.ToBase64String(encryptedData);

//=================================================================================

GostSignatureFormatter sign = new GostSignatureFormatter(gost);
encryptedData = sign.CreateSignature(hashData);
textBox3.Text = Convert.ToBase64String(encryptedData);

Таким образом, приведенный код генрирует 3 разные подписи с помощью трех примеров из cpdn


Все же какой из методов правильный и формирует верную ЭЦП по ГОСТ?





Offline Андрей Писарев  
#2 Оставлено : 13 апреля 2015 г. 10:25:54(UTC)
Андрей *

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

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

Сказал «Спасибо»: 615 раз
Поблагодарили: 2381 раз в 1873 постах
Все.
Вы с выходным форматом определились (чисто значение подписи\cms\base64(cms))?
Техническую поддержку оказываем тут
Наша база знаний
Offline geka22  
#3 Оставлено : 13 апреля 2015 г. 10:42:19(UTC)
geka22

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

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

Ну а Convert.ToBase64String(encryptedData) разве не конвертирует в base64 encryptedData. И каждый раз по-разному.
Чем отличаются функции? В cpdn ничего про это не прописано.
Offline Андрей Писарев  
#4 Оставлено : 13 апреля 2015 г. 10:49:48(UTC)
Андрей *

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

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

Сказал «Спасибо»: 615 раз
Поблагодарили: 2381 раз в 1873 постах
Автор: geka22 Перейти к цитате
Ну а Convert.ToBase64String(encryptedData) разве не конвертирует в base64 encryptedData. И каждый раз по-разному.
Чем отличаются функции? В cpdn ничего про это не прописано.


Так нет никакой проблемы, переменная encryptedData (странное название) - каждый раз имеет разный контент.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#5 Оставлено : 13 апреля 2015 г. 10:50:44(UTC)
Андрей *

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

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

Сказал «Спасибо»: 615 раз
Поблагодарили: 2381 раз в 1873 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline geka22  
#6 Оставлено : 13 апреля 2015 г. 10:57:32(UTC)
geka22

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

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

В этом и заключался вопрос. У нас просто год назад проблема возникла при использовании ЕСИА. Оказалось, что нужно было использовать код, тот же что и у разработчиков.

Тогда вопрос: почему тогда работает сравнение хэшей при использовании на госуслугах, если используется якобы случайное число? Но при этом код проверки и формирования хэша должен быть одинаковый и на стороне проверяющей, и на стороне подписывающей?
Offline Андрей Писарев  
#7 Оставлено : 13 апреля 2015 г. 11:11:52(UTC)
Андрей *

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

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

Сказал «Спасибо»: 615 раз
Поблагодарили: 2381 раз в 1873 постах
Автор: geka22 Перейти к цитате
В этом и заключался вопрос. У нас просто год назад проблема возникла при использовании ЕСИА. Оказалось, что нужно было использовать код, тот же что и у разработчиков.

Тогда вопрос: почему тогда работает сравнение хэшей при использовании на госуслугах, если используется якобы случайное число? Но при этом код проверки и формирования хэша должен быть одинаковый и на стороне проверяющей, и на стороне подписывающей?


Хеширование и подпись (случайное число) - разные вещи.
При хешировании - может быть разный порядок байтов.
http://cpdn.cryptopro.ru...984ebeb224da0922318.html
Техническую поддержку оказываем тут
Наша база знаний
Offline geka22  
#8 Оставлено : 13 апреля 2015 г. 11:23:03(UTC)
geka22

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

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

Я понимаю, что разные. Это общее описание проблемы. Т.е. например, я использую для хэша/подписи код
var hashData = hashAlg.ComputeHash(dataToEncrypt);
encryptedData = gost.SignHash(hashData);

а на стороне ЕСИА
var hashAlg = new Gost3411CryptoServiceProvider();
encryptedData = gost.SignData(dataToEncrypt, hashAlg);


То мы будем получать разный результат и ничего не будет работать. Это и беспокоит. Ибо я, например, не знаю какой метод разработчики ЕСИА реализовали у себя. Это недокументировано никак. Чтоб заработало нужно переибирать доступные методы из cpdn?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.