Читайте также:
|
|
SHA-1
В стандарте США на хэш-функцию SHS (Secure Hash Standard) [8], утвержденном в 1995 г., представлена модифицированная версия SHA-1 алгоритма SHA (Secure Hash Algorithm). Этот алгоритм сопоставляет сообщению длиной до 264 бит сжатый 160-битный образ, который используется, в частности, для генерации и проверки цифровой подписи в стандарте DSS. Алгоритм SHA-1 основан на тех же принципах, что и семейство алгоритмов MD, и создан по образцу MD4. Основные операции этого алгоритма — сложение по модулю 232 и по модулю 2, циклический сдвиг.t-битная строка битов исходного сообщения m=m1m2…mt дополняется до длины, кратной 512. В случае, если t³264, используются только младшие 64 бита числа t. Дополнение сообщения выполняется так же, как и для MD-функций, то есть сначала к m присоединяется одна «1», затем необходимое количество нулей и, наконец, 64-битное представление числа t — длины исходного сообщения.
Таким образом, дополненное сообщение состоит из n 512-битных блоков, т.е. имеет вид М = М1М2 … Мn, где каждый блок М, содержит шестнадцать 32-битных слов. Стартовый вектор хэширования SHA0 имеет длину 160 бит и представляет собой конкатенацию пяти 32-битных слов sha0||sha1||sha2||sha3||sha4, где
sha0 = 67452301, sha1 = efcdab89, sha2 = 98badcfe, sha3 = 10325476,
sha4 = c3d2e1f0.
В алгоритме SHA-1 используется последовательность функций f0, f1,…,f79, каждая из которых сопоставляет трем 32-битным словам X, Y и Z одно 32-битное слово fj(X, Y, Z), 0 <= j <= 79.
Вычисление хэш-функции h:
Вход: М = М1М2…Мn (n блоков по 512 бит).
Алгоритм: Для всех i = 1,…, n SHAi ß g(SHAi-1, Mi).
Выход: h(M)=SHAn.
Стандарт SHS предусматривает два альтернативных способа вычисления шаговой функции хеширования g, дающих в результате один и тот же сжатый образ сообщения.
При вычислении используется последовательность 32-битных слов {Wi}, 0 £ i £ 79, и два накопителя F и Н, содержащие по пять 32-битных слов. Слова в первом накопителе обозначены как А, В, С, D, Е, во втором – H0,…, H4. Исходным заполнением накопителя Н являются слова стартового вектора хэширования SHA0.
Обработка каждого из 512-битных блоков М1, М2, …, Мn осуществляется по следующему алгоритму:
1. Блок Mi разбивается на 16 слов W0, W1,…, W15, no 32 бита.
2. Для j = 16, …. 79 Wj ß S1(Wj-3 +2 Wj-8 +2 Wj-14 +2 Wj-16), где операция циклического сдвига Sn(Х), 0 <= n <= 32, определяется как Sn(X) = (X <<<n) Ú (Х >>> 32 — n).
3. Содержимое второго накопителя H переписывается в первый F.
4.Для j= 0,.., 79
{TEMP ß S5(A) +fj(B, С, D) + Е + Wj + Kj;
E ß D; D ß C; C ßS30(B); B ß A; A ßTEMP
}
где Kj, 0 £ j £ 79 — фиксированные константы, значения которых определяются параметром j, TEMP - временная переменная, «+» — сложение по модулю 232.
5. Содержимое первого накопителя F суммируется по модулю 232 с содержимым второго накопителя Н и записывается в H.
Для каждой итерации SHAi представляет собой конкатенацию текущих значений пяти слов накопителя H. После обработки блока Мn итоговым сжатым образом сообщения будет 160-битная строка из пяти слов SHAn=H0||H1||H2||H3||H4.
Дата добавления: 2015-12-01; просмотров: 31 | Нарушение авторских прав