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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline KoGen  
#1 Оставлено : 17 февраля 2011 г. 19:14:42(UTC)
KoGen

Статус: Новичок

Группы: Участники
Зарегистрирован: 24.01.2011(UTC)
Сообщений: 6
Откуда: Пушкино

Доброго времени суток

Помогите разобраться в ситуации.

Наступил на следующую проблему:
дважды выполняю подпись одной и той же строки данных с использованием КриПро CSP и получаю разные значения подписи

действия по шагам
использую CryptoApi

1. Выбираю сертификат, проверяю на валидность по времени, считываю имя контейнера aContainer, где хранится закрытый ключ

2. Получаю контекст криптопровайдера
int GetAcquireContext(HCRYPTPROV* hProv, LPCTSTR aContainer) {
if(CryptAcquireContext(hProv, aContainer, NULL, PROV_GOST_2001_DH, 0))
return 1;
else
return -11;
}

3. Выполняю подпись хэша

static HCRYPTHASH hHash = 0;
CryptCreateHash(hProv, CALG_GR3411, 0, 0, &hHash);
CryptSetHashParam(hHash, HP_OID,(BYTE*)OID_HashVerbaO, 0);
CryptHashData(hHash, pbInput, dwInputLen, 0); // pbInput - байт массив с данными для подписи dwInputLen - длина массива

// сама подпись
CryptSignHash(hHash, AT_KEYEXCHANGE, NULL, 0, NULL, &dwSigLen); // AT_KEYEXCHANGE - закрытый ключ на RuTokene
//dwSigLen = 0

pbOutput = (BYTE *)malloc(dwSigLen); /// выделяю память под подпись

CryptSignHash(hHash, AT_KEYEXCHANGE, NULL, 0, pbOutput, &dwSigLen); // sign hash object function


если сравнить pbOutput (результат подписи) при двух вызовах с одинаковой строкой на подпись + выборе одного и тоже сертификата - то он разный
а должен быть одинаковый - в чём я не прав??? причем значения хэша совпадают!

или нужно использовать ЭЦП SDK для данной задачи?
Offline Максим Коллегин  
#2 Оставлено : 17 февраля 2011 г. 19:16:56(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,457
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 39 раз
Поблагодарили: 750 раз в 645 постах
По стандарту ГОСТ-подпись рандомизирована.
Знания в базе знаний, поддержка в центре поддержки
Offline KoGen  
#3 Оставлено : 17 февраля 2011 г. 19:25:31(UTC)
KoGen

Статус: Новичок

Группы: Участники
Зарегистрирован: 24.01.2011(UTC)
Сообщений: 6
Откуда: Пушкино

т.е. правильно ли я понял, что
1) если я возьму один и тот же набор данных, посчитаю хэш от него и подпишу этот хэш,
и сделаю эту процедуру еще раз (данные -> хэш -> подпись) то я получу два абсолютно разных значения ЭЦП даже при условии, что данные совпадают.
2) для верификации эцп нужен открытый ключ, значение эцп, контекст хэш фцнкцию - в обратку получаю true либо false валидна подпись или нет??

Отредактировано пользователем 17 февраля 2011 г. 19:27:13(UTC)  | Причина: Не указана

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