SHA-1 и CryptHashData
От: aktz Беларусь  
Дата: 10.11.04 14:15
Оценка:
В стандарте по SHA-1 написано, что хэшируемые данные должны дополняться до длины кратной 512. Нужно ли это делать, если размер данных итак кратен 512? Если да, то как разрешается след. ситуация —
— есть данные длиной например N*512
— вызовем N раз CryptHashData (нам никто это не запрещает)
Как CSP узнает, что последний блок надо дополнять?
Re: SHA-1 и CryptHashData
От: Andir Россия
Дата: 11.11.04 11:25
Оценка:
Здравствуйте, aktz, Вы писали:

A>В стандарте по SHA-1 написано, что хэшируемые данные должны дополняться до длины кратной 512. Нужно ли это делать, если размер данных итак кратен 512?


Да, обязательно нужно. Согласно стандарту конечно Эта операция называется MD усиление и предназначена, чтобы хэш-значение ещё учитывало и длину сообщения.

A>Если да, то как разрешается след. ситуация -

A>- есть данные длиной например N*512
A>- вызовем N раз CryptHashData (нам никто это не запрещает)
A>Как CSP узнает, что последний блок надо дополнять?

Я так полагаю, последний блок дополняет CryptGetHashParam с флагом HP_HASHVAL

C Уважением, Andir!
using(RSDN@Home 1.1.4 beta 3){/* Работаем! */}
Re: SHA-1 и CryptHashData
От: mkopachev  
Дата: 15.11.04 07:29
Оценка:
Здравствуйте, aktz, Вы писали:

A>В стандарте по SHA-1 написано, что хэшируемые данные должны дополняться до длины кратной 512. Нужно ли это делать, если размер данных итак кратен 512? Если да, то как разрешается след. ситуация -

A>- есть данные длиной например N*512
A>- вызовем N раз CryptHashData (нам никто это не запрещает)
A>Как CSP узнает, что последний блок надо дополнять?

Ага, в стандарте даже написано КАК это дополнение производиться.
Насчет ситуации — ИМХО будет дополняться каждый хэшируемый блок (а не последний).
... << RSDN@Home 1.1.4 @@subversion >>
Re[2]: SHA-1 и CryptHashData
От: Andir Россия
Дата: 15.11.04 07:38
Оценка:
Здравствуйте, mkopachev, Вы писали:

M>Насчет ситуации — ИМХО будет дополняться каждый хэшируемый блок (а не последний).


Неверно.

C Уважением, Andir!
Re[3]: SHA-1 и CryptHashData
От: mkopachev  
Дата: 15.11.04 10:20
Оценка:
Здравствуйте, Andir, Вы писали:

M>>Насчет ситуации — ИМХО будет дополняться каждый хэшируемый блок (а не последний).


A>Неверно.


Один умный человек (не я ) сказал: "Для серьезного исследователя не достаточно сказать "неправильно" — нужно указать как будет правильно".
Так вот, как правильно? По Вашему предыдущему ответу я понял, что дополнение производиться в момент получения собсвенно значения хэша? А не будет ли это зависеть от реализации провайдера?

ЗЫ Хеширование блоков с дополнением каждого, ИМХО не ухудшает свойст хэша, или я не прав? Если ухудшает, то с чем это связано?

С уважением Михаил Копачев
... << RSDN@Home 1.1.4 @@subversion >>
Re[4]: SHA-1 и CryptHashData
От: Andir Россия
Дата: 15.11.04 10:33
Оценка:
Здравствуйте, mkopachev, Вы писали:

A>>Неверно.


M>Один умный человек (не я ) сказал: "Для серьезного исследователя не достаточно сказать "неправильно" — нужно указать как будет правильно".


Достаточно прочитать SHA-1 стандарт.

M>Так вот, как правильно? По Вашему предыдущему ответу я понял, что дополнение производиться в момент получения собсвенно значения хэша? А не будет ли это зависеть от реализации провайдера?


Каким образом? Для SHA-1 есть вполне ожидаемые от него значения, неожиданные действия приведут к неожиданному результату.

M>ЗЫ Хеширование блоков с дополнением каждого, ИМХО не ухудшает свойст хэша, или я не прав? Если ухудшает, то с чем это связано?


А что с блоками происходит? Складываются по модулю 2^[длина хэша в битах]?

Представим что я захешировал файл объёмом 1 Gb (не CryptoAPI) и выложил хеш этого файла на всеобщее обозрение, чтобы любой мог проверить, то что файл не изменён. Теперь с помощью навороченного CryptoAPI попробует проверить этот хеш, почти наверняка гигабайта оперативной памяти у него не найдётся, и поэтому хешировать он будет блоками ... соответственно результат в случае дополнения каждого блока будет другой. Достаточно очевидно, что это не так?

С Уважением, Andir!
Re[5]: SHA-1 и CryptHashData
От: Andir Россия
Дата: 15.11.04 10:38
Оценка:
Здравствуйте, Andir, Вы писали:

M>>Так вот, как правильно? По Вашему предыдущему ответу я понял, что дополнение производиться в момент получения собсвенно значения хэша? А не будет ли это зависеть от реализации провайдера?


P.S. Я к сожалению с CryptoAPI не работал, но смотрел реализацию для .Net и проверял.
Всё что сказано насчёт CryptoAPI почерпнуто из MSDN. Как реализуются криптопровайдеры и что это вообще такое я достаточно плохо осведомлён Если есть другие сведения, то просьба приводить их со ссылками на соответсвующие источники.

C Уважением, Andir!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.