Эта статья посвящена модульному арифметическому безопасному хешированию. Для гена MASH-1 см.
ASCL1 .
Эта статья поднимает множество проблем. Пожалуйста, помогите
улучшить его или обсудите эти проблемы на
странице обсуждения .
( Узнайте, как и когда удалить эти сообщения-шаблоны ) Эта статья
требует дополнительных ссылок для проверки .
Пожалуйста, помогите улучшить эту статью , добавив цитаты из надежных источников . Материал, не полученный от источника, может быть оспорен и удален. Найти источники: «МАШ-1» - новости · газеты · книги · ученый · JSTOR ( апрель 2011 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения )
Эта статья включает в себя список общих
ссылок , но он остается в значительной степени непроверенным, поскольку в
нем отсутствует достаточное количество соответствующих встроенных ссылок .
Пожалуйста, помогите улучшить эту статью, добавив более точные цитаты. ( Апрель 2011 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения )
Эта статья
предоставляет недостаточный контекст для тех, кто не знаком с предметом .
Пожалуйста, помогите улучшить статью , предоставив читателю больше контекста . ( Октябрь 2009 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения )
( Узнайте, как и когда удалить этот шаблон сообщения )
MASH-1 ( Modular Arithmetic Secure Hash ) - это хеш-функция, основанная на модульной арифметике .
Несмотря на множество предложений, немногие хэш-функции, основанные на модульной арифметике, выдержали атаки, и большинство из них, как правило, были относительно неэффективными. MASH-1 вырос из длинной череды связанных предложений, которые последовательно ломались и ремонтировались.
Проект комитета ISO / IEC 10118-4 (ноя 95)
MASH-1 предполагает использование модуля , подобного RSA , длина битов которого влияет на безопасность. представляет собой произведение двух простых чисел, и его должно быть трудно разложить на множители , а для неизвестной факторизации безопасность частично основана на сложности извлечения модульных корней. N {\ displaystyle N} N {\ displaystyle N} N {\ displaystyle N}
Позвольте быть длиной блока сообщения в битах . выбирается так, чтобы двоичное представление было на несколько бит длиннее, чем обычно . L {\ displaystyle L} N {\ displaystyle N} L {\ displaystyle L} L < | N | ≤ L + 16 {\ Displaystyle L <| N | \ Leq L + 16}
Сообщение дополняется добавлением длины сообщения и разделяется на блоки длины . Из каждого из этих блоков создается блок увеличенной длины путем размещения четырех битов from в нижней половине каждого байта и четырех битов со значением 1 в верхней половине. Эти блоки итеративно обрабатываются функцией сжатия: D 1 , ⋯ , D q {\ Displaystyle D_ {1}, \ cdots, D_ {q}} L / 2 {\ displaystyle L / 2} D я {\ displaystyle D_ {i}} B я {\ displaystyle B_ {i}} L {\ displaystyle L} D я {\ displaystyle D_ {i}}
ЧАС 0 знак равно я V {\ displaystyle H_ {0} = IV} ЧАС я знак равно ж ( B я , ЧАС я - 1 ) знак равно ( ( ( ( B я ⊕ ЧАС я - 1 ) ∨ E ) е мод N ) мод 2 L ) ⊕ ЧАС я - 1 ; я знак равно 1 , ⋯ , q {\ Displaystyle H_ {я} = е (B_ {i}, H_ {i-1}) = ((((B_ {i} \ oplus H_ {i-1}) \ vee E) ^ {e} {\ bmod {N}}) {\ bmod {2}} ^ {L}) \ oplus H_ {i-1}; \ quad i = 1, \ cdots, q} Где и . обозначает побитовое ИЛИ и побитовое исключающее ИЛИ . E знак равно 15 ⋅ 2 L - 4 {\ Displaystyle E = 15 \ cdot 2 ^ {L-4}} е знак равно 2 {\ displaystyle e = 2} ∨ {\ displaystyle \ vee} ⊕ {\ displaystyle \ oplus}
Из теперь вычисляются дополнительные блоки данных линейными операциями (где означает конкатенацию): ЧАС q {\displaystyle H_{q}} D q + 1 , ⋯ , D q + 8 {\displaystyle D_{q+1},\cdots ,D_{q+8}} ‖ {\displaystyle \|}
H q = Y 1 ‖ Y 3 ‖ Y 0 ‖ Y 2 ; | Y i | = L / 4 {\displaystyle H_{q}=Y_{1}\,\|\,Y_{3}\,\|\,Y_{0}\,\|\,Y_{2};\quad |Y_{i}|=L/4} Y i = Y i − 1 ⊕ Y i − 4 ; i = 4 , ⋯ , 15 {\displaystyle Y_{i}=Y_{i-1}\oplus Y_{i-4};\quad i=4,\cdots ,15} D q + i = Y 2 i − 2 ‖ Y 2 i − 1 ; i = 1 , ⋯ , 8 {\displaystyle D_{q+i}=Y_{2i-2}\,\|\,Y_{2i-1};\quad i=1,\cdots ,8} Эти блоки данных теперь увеличены, как указано выше, и с ними процесс сжатия продолжается еще восемью этапами: B q + 1 , ⋯ , B q + 8 {\displaystyle B_{q+1},\cdots ,B_{q+8}}
H i = f ( B i , H i − 1 ) ; i = q + 1 , ⋯ , q + 8 {\displaystyle H_{i}=f(B_{i},H_{i-1});\quad i=q+1,\cdots ,q+8} Наконец, хеш-значение , где - простое число с . [1] H q + 8 mod p {\displaystyle H_{q+8}{\bmod {p}}} p {\displaystyle p} 7 ⋅ 2 L / 2 − 3 < p < 2 L / 2 {\displaystyle 7\cdot 2^{L/2-3}<p<2^{L/2}}
МАШ-2 [ править ] Существует более новая версия алгоритма MASH-2 с другим показателем степени. Оригинал заменен на . Это единственное различие между этими версиями. e = 2 {\displaystyle e=2} e = 2 8 + 1 {\displaystyle e=2^{8}+1}
Ссылки [ править ] ^ Smashing МАШ-1, Владимир Антипкин А. Менезес , П. ван Оршот, С. Ванстон , Справочник по прикладной криптографии , ISBN 0-8493-8523-7