[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [openssl-gost] gostsums



Приветствую!

Провел тестирование по намеченному плану. Тестировал только корректность вычисления хэшей, весь прочий функционал не трогал. Считал хэши от следующих файлов:
M1 - сообщение из контрольного примера 1 к ГОСТу 2012 года
M2 - сообщение из контрольного примера 2 к ГОСТу 2012 года
M3 - сообщение нулевой длины
M4 - сообщение из 64 нулей
M5 - сообщение из 64 не нулей
М6 - сообщение из 192 не нулей (М5 повторенное 3 раза)
М7 - сообщение длины более 4Гб (состоит из сообщения M2, к которому 2^26 раз дописано сообщение M5)

Хэши считал следующими программами:
- утилита Дегтярева
- gostsum12 из ветки 1.0.2 (как я уже писал ранее, это единственный вариант, считающий хэши правильно)
- OpenSSL 1.0.2 с патчами от КриптоПакета и c ccgost  из ветки openssl_1_0_2 origin/openssl_1_0_2
- КриптоПакет 3.0
- утилита csptest из комплекта CryptoPro CSP 4r3
csptest запускал, понятно, под виндой, утилиту Дегтярева - под линуксом (xubuntu), gostsum12, OpenSSL и КриптоПакет как на линуксе, так и на спарке (дабы проверить корректность работы на big-endian архитектуре).
Считал хэши как 256, так и 512 бит.
Для csptest, КриптоПакета и OpenSSL дополнительно считал и сравнивал хэши по gost94.

Результаты:
1) КриптоПро неправильно считает хэши от файла больше 4Гб (приводит длину по модулю 4Гб и считает хэш от начальной части файла приведенной длины).
2) gostsum12 на спарке при попытке посчитать хэш от файла больше 4Гб выдает ошибку
M7: Value too large for defined data type
(на линуксе считает без проблем).
3) КриптоПакет/OpenSSL и csptest по разному считают хэш 94 года от файла нулевой длины, разбираться не вижу смысла.
4) В остальном всё везде всегда считается одинаково.

В аттаче:
M.zip - архив с сообщениями, от которых считались хэши (по понятным причинам туда не включено сообщение M7, вместо него включен скрипт make4Gb, которым это сообщение формировалось)
OpenSSL.hashes - значения хэш-векторов от этих файлов в формате вывода openssl dgst
GS12.hashes - значения хэш-векторов от этих файлов в формате вывода утилиты gostsum12


Дополнительно обнаружено, что OpenSSL ломается на попытке проверить CMS типа DigestedData, содержащее данные нулевой длины, выдается ошибка
Verification failure
139943902074520:error:2E06307F:CMS routines:CHECK_CONTENT:no content:cms_smime.c:120:
При этом командой dgst хэш от файла нулевой длины выдается ровно тот, что записан внутри CMS, так что проблема именно в разборе CМS, а не в реализации алгоритма хэширования.

С уважением,
Игорь Устинов,
Зам.ген.директора
ООО "Криптоком
08.08.2017 18:19, Igor Ustinov пишет:
08.08.2017 14:26, Dmitry Belyavsky пишет:

А интересует меня, правильно ли считает хеши gostsum12 

Вопрос о необходимом объеме тестирования "считалки хэшей" меня несколько озадачил. Понятно, что контрольные примеры из ГОСТа - это must.  Там их два: для сообщения из одного неполного блока и для сообщения из двух блоков, из которых второй неполный.
Возможно, имеет смысл дополнительно проверить
- сообщение нулевой длины;
- сообщение из одного полного блока;
- сообщение из нескольких полных блоков.
Не знаю, стоит ли делать проверку на очень длинных сообщениях. И что считать таковыми.
Отдельный вопрос, что использовать в качестве эталона.

С уважением,
Игорь Устинов,
Зам.ген.директора
ООО "Криптоком


Attachment: M.zip
Description: Zip archive

md_gost12_512(M1)= 1b54d01a4af5b9d5cc3d86d68d285462b19abc2475222f35c085122be4ba1ffa00ad30f8767b3a82384c6574f024c311e2a481332b08ef7f41797891c1646f48
md_gost12_512(M2)= 1e88e62226bfca6f9994f1f2d51569e0daf8475a3b0fe61a5300eee46d961376035fe83549ada2b8620fcd7c496ce5b33f0cb9dddc2b6460143b03dabac9fb28
md_gost12_512(M3)= 8e945da209aa869f0455928529bcae4679e9873ab707b55315f56ceb98bef0a7362f715528356ee83cda5f2aac4c6ad2ba3a715c1bcd81cb8e9f90bf4c1c1a8a
md_gost12_512(M4)= b0fd29ac1b0df441769ff3fdb8dc564df67721d6ac06fb28ceffb7bbaa7948c6c014ac999235b58cb26fb60fb112a145d7b4ade9ae566bf2611402c552d20db7
md_gost12_512(M5)= 363b449ec81ae40b3a407b125c3b1c2b768b50496bcb5f690b89e9007b06e4084182ed45d4072a67fec9d3421dab013da2aabc1d6528e8e775aec7b3457ac675
md_gost12_512(M6)= 8781dfc81d2db6a41d1857f3230b3ffe2bda574273ea1947189aaa5468470df1c4b374b1a2b56e59d11d213fea57e3514543b0ced9b20e553ae66425ec909cfd
md_gost12_512(M7)= 03e12ae816c7f794929b7550781d22efc7bc724fd70e295f3123d157c4d577fdc325943ef2b999cc43205dc323fa930bddc60d44663d76844b779fd36aa89de3
md_gost12_256(M1)= 9d151eefd8590b89daa6ba6cb74af9275dd051026bb149a452fd84e5e57b5500
md_gost12_256(M2)= 9dd2fe4e90409e5da87f53976d7405b0c0cac628fc669a741d50063c557e8f50
md_gost12_256(M3)= 3f539a213e97c802cc229d474c6aa32a825a360b2a933a949fd925208d9ce1bb
md_gost12_256(M4)= df1fda9ce83191390537358031db2ecaa6aa54cd0eda241dc107105e13636b95
md_gost12_256(M5)= f0a557f6a04a90ab1811c1b6e9b078e4163b74037c6cf59f52444a37f48e11d8
md_gost12_256(M6)= 2f4f651fe88fea46ec6f2223728d8dff3968893558ef00a310c23e7d1923ba0c
md_gost12_256(M7)= 633b567983d60243837715e56cc52443ffff9824170ad60b613b2dd6fabf2f40
1b54d01a4af5b9d5cc3d86d68d285462b19abc2475222f35c085122be4ba1ffa00ad30f8767b3a82384c6574f024c311e2a481332b08ef7f41797891c1646f48 M1
1e88e62226bfca6f9994f1f2d51569e0daf8475a3b0fe61a5300eee46d961376035fe83549ada2b8620fcd7c496ce5b33f0cb9dddc2b6460143b03dabac9fb28 M2
8e945da209aa869f0455928529bcae4679e9873ab707b55315f56ceb98bef0a7362f715528356ee83cda5f2aac4c6ad2ba3a715c1bcd81cb8e9f90bf4c1c1a8a M3
b0fd29ac1b0df441769ff3fdb8dc564df67721d6ac06fb28ceffb7bbaa7948c6c014ac999235b58cb26fb60fb112a145d7b4ade9ae566bf2611402c552d20db7 M4
363b449ec81ae40b3a407b125c3b1c2b768b50496bcb5f690b89e9007b06e4084182ed45d4072a67fec9d3421dab013da2aabc1d6528e8e775aec7b3457ac675 M5
8781dfc81d2db6a41d1857f3230b3ffe2bda574273ea1947189aaa5468470df1c4b374b1a2b56e59d11d213fea57e3514543b0ced9b20e553ae66425ec909cfd M6
03e12ae816c7f794929b7550781d22efc7bc724fd70e295f3123d157c4d577fdc325943ef2b999cc43205dc323fa930bddc60d44663d76844b779fd36aa89de3 M7
9d151eefd8590b89daa6ba6cb74af9275dd051026bb149a452fd84e5e57b5500 M1
9dd2fe4e90409e5da87f53976d7405b0c0cac628fc669a741d50063c557e8f50 M2
3f539a213e97c802cc229d474c6aa32a825a360b2a933a949fd925208d9ce1bb M3
df1fda9ce83191390537358031db2ecaa6aa54cd0eda241dc107105e13636b95 M4
f0a557f6a04a90ab1811c1b6e9b078e4163b74037c6cf59f52444a37f48e11d8 M5
2f4f651fe88fea46ec6f2223728d8dff3968893558ef00a310c23e7d1923ba0c M6
633b567983d60243837715e56cc52443ffff9824170ad60b613b2dd6fabf2f40 M7