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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline dencat  
#1 Оставлено : 26 ноября 2014 г. 20:13:34(UTC)
dencat

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

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

Здравствуйте.
При снятии хэша с файла c содержимым "012345678901234567890123456789012345678901234567890123456789012" (пример из ГОСТа) по алгоритму ГОСТ Р 3411-2012 cpverify.exe выдает:
B1450DA1A45F9B5DCCD3686DD88245261BA9CB425722F2530C5821B24EABF1AF00DA038F67B7A32883C456470F423C112E4A1833B280FEF7149787191C46F684

что есть перевернутый результат из ГОСТа:
486F64C1917879417FEF082B3381A4E211C324F074654C38823A7B76F830AD00FA1FBAE42B1285C0352F227524BC9AB16254288DD6863DCCD5B9F54A1AD0541B

Я так понимаю, что используется младший порядок байтов, но разве в этом случае результат должен быть не таким:
1B54D01A4AF5B9D5CC3D86D68D285462B19ABC2475222F35C085122BE4BA1FFA00AD30F8767B3A82384C6574F024C311E2A481332B08EF7F41797891C1646F48
?
Offline Максим Коллегин  
#2 Оставлено : 27 ноября 2014 г. 0:53:48(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Таким. в новой версии изменили, выложим в ближайшее время.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#3 Оставлено : 4 февраля 2015 г. 10:46:05(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
версия CSP 4.0.9106

контрольное значение хеша
GOST("abc") = B285056DBF18D7392D7677369524DD14747459ED8143997E163B2986F92FD42C (википедия)
хэш, вычисленный CryptCreateHash+CryptHashData+CryptGetHashParam, возвращает точно такое же значение...

вычисление хэша с помощью утилиты cpverify (содержимое файла 1.txt = 'abc'):
C:\Program Files (x86)\Crypto Pro\CSP>cpverify.exe -mk c:\sxe7\1.txt -alg GR3411

2B5850D6FB817D93D26777635942DD41474795DE183499E761B392689FF24DC2

почему старшие и младшие биты в байтах оказались поменены местами..? 2B вместо B2, 58 вместо 85, и т.д.
Offline Максим Коллегин  
#4 Оставлено : 4 февраля 2015 г. 14:21:15(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Используйте последнюю версию.
Но cpverify возвращает перевернутый хэш для 94 года по историческим причинам, для 2012 должно быть в нормальном виде.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#5 Оставлено : 4 февраля 2015 г. 14:45:34(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
C:\Program Files (x86)\Crypto Pro\CSP>cpverify -mk c:\sxe7\1.txt -alg GR3411_2012_256
E49291FC31E74DE14CBF26076C8162CCF4FF6B0643E1A03F86C80D26D6324B18

вот что выдает для GR3411_2012_256... т.е. совсем что то другое (1.txt = 'abc')

ну как так то..? а..? ну как так..?
Offline slavw  
#6 Оставлено : 4 февраля 2015 г. 14:55:18(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
а какая последняя версия CSP..? не вижу на сайте...
Offline Максим Коллегин  
#7 Оставлено : 4 февраля 2015 г. 15:08:14(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Предварительная версия КриптоПро CSP 4.0.9461 (Euler) от 7.12.2014.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#8 Оставлено : 4 февраля 2015 г. 16:07:49(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
константа OID_HashVerbaO = '1.2.643.2.2.30.1' ? (или нет... я уже не уверен...)
а для алгоритма GR3411_2012_256 ...? какая..? не скажете..?
Offline Максим Коллегин  
#9 Оставлено : 4 февраля 2015 г. 16:42:00(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Никакой, у хэша 2012 года один набор параметров.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#10 Оставлено : 4 февраля 2015 г. 16:58:16(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
вот где здесь можно ошибиться? я две недели уже с ума схожу:
все считает, но смэв ни в какую не хочет принимать подпись (участок кода с подписью хеша опущен, если надо приведу полностью...)

var
OID_HashVerbaO:ansistring='1.2.643.2.2.30.2';
const
CALG_GR3411 = 32798;

procedure GetHashStream2(Container: WideString; DataStream: TStream; HashStream: TStream);
var
hProv: HCRYPTPROV;
DataLen: DWORD;
hHash: HCRYPTHASH;
InStream, OutStream: TBytesStream;
dwKeySpec: DWORD;
begin
dwKeySpec:=AT_KEYEXCHANGE; //}AT_SIGNATURE;
InStream:=TBytesStream.Create;
OutStream:=TBytesStream.Create;
try

InStream.CopyFrom(DataStream,DataStream.Size);

CryptCheck(CryptAcquireContext(@hProv, @Container[1], nil, 75, 0), 'CryptAcquireContext');
try

CryptCheck(CryptCreateHash(hProv, CALG_GR3411, 0, 0, @hHash), 'CryptCreateHash');
try
CryptCheck(CryptSetHashParam(hHash, HP_OID, @OID_HashVerbaO[1], 0),'CryptSetHashParam');
CryptCheck(CryptHashData(hHash, InStream.Memory, InStream.Size, 0), 'CryptHashData');
CryptCheck(CryptGetHashParam(hHash, HP_HASHVAL, nil, @DataLen, 0), 'CryptGetHashParam');
OutStream.Position:=0;
OutStream.Size:=DataLen;
CryptCheck(CryptGetHashParam(hHash, HP_HASHVAL, OutStream.Memory, @DataLen, 0), 'CryptGetHashParam');
HashStream.CopyFrom(OutStream,OutStream.Size);
finally
CryptCheck(CryptDestroyHash(hHash), 'CryptDestroyHash');
end;

finally
CryptCheck(CryptReleaseContext(hProv, 0), 'CryptReleaseContext');
end;

finally
InStream.Free;
OutStream.Free;
end;

end;
Offline Максим Коллегин  
#11 Оставлено : 4 февраля 2015 г. 17:50:58(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
именно хэш не сходится? в подписи xml сама подпись перевернута.
Знания в базе знаний, поддержка в техподдержке
Online Андрей Писарев  
#12 Оставлено : 4 февраля 2015 г. 18:38:49(UTC)
Андрей *

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

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

Сказал «Спасибо»: 403 раз
Поблагодарили: 1645 раз в 1261 постах
Автор: slavw Перейти к цитате
вот где здесь можно ошибиться? я две недели уже с ума схожу:
все считает, но смэв ни в какую не хочет принимать подпись (участок кода с подписью хеша опущен, если надо приведу полностью...)


Техническую поддержку оказываем тут
Наша база знаний
Offline slavw  
#13 Оставлено : 5 февраля 2015 г. 8:18:15(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
есть пример файла (во вложении), который проходит проверку ЭП на
http://smev.gosuslugi.ru/portal/services-tools.jsp
один из этапов проверки ЭП это вычисление хеша <Body> который находится в <DigestValue>
и равен (base64) acivl1p/l/aEtQoHJlkezFywapOcAipW90WvTnaac3A=
если я не могу посчитать этот хеш, то о подписи думать рановато...

так как я пишу на delphi, то с канонизацией возникают проблемы: ее просто нет в delphi.
а привести к каноническому виду надо именно в такой форме, в какой ее "видит" смэв..
приходится строить xml уже в каконической форме... а это видимо не так просто...
я сперва совсем не придал значения этому пункту алгоритма, но видимо зря, похоже в этом все и дело...
попробую еще убрать из xml все упоминания об c14n, может быть смэв примет такой xml и не будет его
канонизировать перед вычислением хеша и проверки подписи...

очень буду благодарен, если вы покажете мне как выглядит канонизированная форма <Body> из примера!!!!
Вложение(я):
Правильная подпись.txt (5kb) загружен 9 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline slavw  
#14 Оставлено : 5 февраля 2015 г. 8:35:57(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
про переворачивание подписи читаю уже не в первый раз, но в алгоритме подписания xml у смэв упоминания об этом нет,
я думал это байки, буду иметь ввиду... но сначала научусь получать хэш <Body>...
Offline Максим Коллегин  
#15 Оставлено : 5 февраля 2015 г. 9:09:43(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
погугил 20 секунд, попробуйте
Delhi, TXMLDocument, xmlns
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#16 Оставлено : 5 февраля 2015 г. 9:22:33(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
ок.. ща попробую...
всетаки, если не трудно, можете показать как выглядит канонизированный <Body> из вложения сообщения выше...
а если еще у вас и расчитанный хеш совпадет с acivl1p/l/aEtQoHJlkezFywapOcAipW90WvTnaac3A=
это совсем будет фантастика.....
Offline Максим Коллегин  
#17 Оставлено : 5 февраля 2015 г. 9:28:50(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 20 раз
Поблагодарили: 619 раз в 551 постах
Попробуйте на .NET это сделать. У меня нет для экспериментов свободного времени.
Знания в базе знаний, поддержка в техподдержке
Offline slavw  
#18 Оставлено : 5 февраля 2015 г. 9:41:12(UTC)
slavw

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

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

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 21 раз в 12 постах
ok ok понял понял...
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.