Академический Документы
Профессиональный Документы
Культура Документы
строка состоит из двух частей длины r и с ,r + с=b . Здесь r – это длина блока, на
которые разбивается исходное сообщение, а с – длина дополнительной части,
необходимой, чтобы к хеш-функции нельзя было применить атаку удлинения
сообщения, которым были подвержены предыдущие функции SHA-1 и SHA-2.
Хеш-функции семейства SHA-3 построены на основе конструкции
криптографической губки, в которой данные сначала «впитываются» в губку,
при котором исходное сообщение M подвергается многораундовым
перестановкам f, затем результат Z «отжимается» из губки.
На этапе «впитывания» блоки сообщения суммируются по модулю 2 с
подмножеством состояния, после чего всё состояние преобразуется с
помощью функции перестановки f.
На этапе «отжимания» выходные блоки считываются из одного и того же
подмножества состояния, изменённого функцией перестановок f. Размер части
состояния, который записывается и считывается, называется «скоростью»
(англ. rate) и обозначается r, а размер части, которая нетронута вводом /
выводом, называется «ёмкостью» (англ. capacity) и обозначается c .
Будем предполагать далее, что b=1600. Строка S представляется матрицей
размером 5 х 5 х 64. Алгоритм получения значения хеш-функции можно
разделить на несколько этапов:
1. Исходное сообщение M дополняется до строки P длины, кратной r, с
помощью функции дополнения (pad-функции).
2. Строка P делится на n блоков длины r:
3. «Впитывание»: каждый блок Pi дополняется нулями до строки длины b
бит и суммируется по модулю 2 со строкой состояния S длины b. Перед
началом работы функции все S равны нулю. Для каждого следующего
блока состояние — строка, полученная применением функции
перестановок f к результату предыдущего шага. Эта операция повторяет
l раз, где l – количество раундов перемешивания (обычно l=24 ).
4. «Отжимание»: пока длина Z меньше d - количества бит в результате хеш-
функции), к Z добавляется r первых бит состояния S, после каждого
прибавления к S применяется функция перестановок f. Затем Z
обрезается до длины d бит. Строка Z длины d бит возвращается в
качестве результата.
5. Строки Z, полученные от разных блоков, переводятся в числа и
суммируются по модулю 2d .
Шаг ι
Введем дополнительную функцию rc(t), где вход — целое число t, а выход -
бит. Если t mod 255=0, то возвращается 1. Пусть R=[10000000]. Для i от 1 до t
mod 255:
R=0∨¿ R
R [ 0 ] =R [ 0 ] ⊕ R [8 ]}
R [ 4 ] =R [ 4 ] ⊕ R[8]
R [ 5 ] =R [ 5 ] ⊕ R[ 8]
R [ 6 ] =R [ 6 ] ⊕ R [8]
R=Trun c 8 [R ]
Возвращается R [0 ].
Литература.
1. Алгоритм SHA-3 https://habr.com/ru/post/534082/
2. Федеральный стандарт NIST (англ.)
https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
3. Ру-Википедия. Алгоритм SHA-3 https://ru.wikibrief.org/wiki/SHA-3
4. Ишмухаметов Ш.Т. Латыпов Р.Х., Столов Е.Л. Введение в теорию
кодирования и криптографию (часть 6).
5. https://kpfu.ru//staff_files/F_983962807/
Vvedenie_v_teoriyu_kodirovaniya_i_kriptorafiyu.pdf
6. Хеширование и SHA-256. Простыми словами и с примерами.
7. https://www.youtube.com/watch?v=xAVur2IV164&t=194s
8. https://keccak.team/files/Keccak-implementation-3.2.pdf
9. https://russianblogs.com/article/60561293587/
10. https://habr.com/ru/post/159073/
11. SHA-3 BitcoinWiki https://ru.bitcoinwiki.org/wiki/SHA-3
12. Алгоритм SHA-3 Хабр https://habr.com/ru/post/534082/
13. Новый стандарт шифрования SHA-3 – Keccak
14. https://russianblogs.com/article/60561293587/