
- •Хэш функции
- •29. Протоколы аутентификации. Понятия идентификации и аутентификации. Криптографический протокол односторонней аутентификации Шнора. Типичные атаки на протоколы аутентификации.
- •Атака с повторной передачей сообщений
- •Атака «человек посередине»
- •Атака с помощью параллельного сеанса
- •Атака с помощью отражения сообщений
- •Атака с помощью чередования сообщений
- •Атака на основе неправильной интерпретации данных
- •Атака на основе безымянных сообщений
- •Атака на основе неправильного выполнения криптографических операций
- •Атака вследствие отсутствия защиты целостности данных
- •Атака вследствие отсутствия «семантической стойкости»
- •30. Электронная подпись. Понятие эп. Эп Фиата – Шамира. Эп Эль-Гамаля;
-
Хэш функции
а) стандарт Хэш-функции SHS - Secure Hash Standard;
Хэш-функция h принимает в качестве аргумента сообщение М произвольной длины и возвращает хэш-значение h(М)=Н фиксированной длины. Следует отметить, что значение хэш-функции h(М) сложным образом зависит от документа М и не позволяет восстановить сам документ М.
Хэш-функция должна удовлетворять следующим условиям:
-
хэш-функция должна быть чувствительна к всевозможным изменениям в тексте М, таким как вставки, перестановки и т.п.;
-
хэш-функция должна обладать свойством необратимости, то есть задача подбора документа М', который обладал бы требуемым значением хэш-функции, должна быть вычислительно неразрешима;
-
вероятность того, что значения хэш-функций двух различных документов (вне зависимости от их длин) совпадут, должна быть ничтожно мала.
На примере рассмотрим алгоритм безопасного хэширования SНА (входит в стандарт SHS).
Алгоритм безопасного хэширования SНА (Secure Hash Algorithm) разработан НИСТ и АНБ США в рамках стандарта безопасного хэширования SHS (Secure Hash Standard) в 1992 г.
Для входного сообщения произвольной длины (максимум 264 − 1 бит) алгоритм генерирует 160-битное хэш-значение.
Исходное сообщение разбивается на блоки по 512 бит в каждом. Последний блок дополняется до длины, кратной 512 бит. Сообщение добавляется таким образом, чтобы его длина была кратна 448 по модулю 512 (длина ≡ 448 mod 512). Добавление осуществляется всегда, даже если сообщение уже имеет нужную длину. Добавление состоит из единицы, за которой следует необходимое количество нулей. В оставшиеся 64 бита записывается длина исходного сообщения в битах. Таким образом, число добавляемых битов находится в диапазоне от 1 до 512.
Инициализируются пять 32-битовых переменных.
A = a = 0x67452301 B = b = 0xEFCDAB89 C = c = 0x98BADCFE
D = d = 0x10325476 E = e = 0xС3D2E1F0
Основой алгоритма является итерация, состоящая из 80 циклических обработок, которые производятся для каждого 512-битного блока. Каждый из 80 циклов получает на входе текущий 512-битный обрабатываемый блок и 160-битное значение буфера ABCDE, и изменяет содержимое этого буфера. В каждом цикле используется дополнительная константа Кt и элементарная логическая функция Ft.
Функция |
константа |
№ цикла |
|
Kt = 0x5A827999 |
0≤t≤19 |
|
Kt = 0x6ED9EBA1 |
20≤t≤39 |
|
Kt = 0x8F1BBCDC |
40≤t≤59 |
|
Kt = 0xCA62C1D6 |
60≤t≤79 |
512-битный блок сообщения преобразуется из 16 32-битных слов Mi в 80 32-битовых слов Wj по следующему правилу:
т. е. в первых 16 циклах вход состоит из 32-битного слова данного блока. Для оставшихся 64 циклов вход состоит из XOR нескольких слов из блока сообщения.
Итерация алгоритма для t от 0 до 79 temp = (a<<5) + Ft(b,c,d) + e + Wt + Kt e = d d = c c = b<<30 b = a a = temp
После этого a, b, c, d, e прибавляются к A, B, C , D , E соответственно. Начинается следующая итерация. Итоговым значением будет объединение пяти 32-битовых слов в одно 160-битное хеш-значение.
б) стойкость хэш-функций, коллизии хэш-функций
-
Стойкость к коллизиям первого рода: для заданного сообщения
должно быть практически невозможно подобрать другое сообщение
, имеющее такой же хэш. Это свойство также называется необратимостью хеш-функции.
-
Стойкость к коллизиям второго рода: должно быть практически невозможно подобрать пару сообщений
, имеющих одинаковый хэш.
Согласно парадоксу о днях рождения, нахождение коллизии для хеш-функции с длиной значений n бит требует в среднем перебора около 2n / 2 операций. Поэтому n-битная хеш-функция считается криптостойкой, если вычислительная сложность нахождения коллизий для нее близка к 2n / 2.
Простейшим (хотя и не всегда приемлемым) способом усложнения поиска коллизий является увеличение разрядности хэша, например, путем параллельного использования двух или более различных хэш-функций.
Для криптографических хэш-функций также важно, чтобы при малейшем изменении аргумента значение функции сильно изменялось. В частности, значение хэша не должно давать утечки информации даже об отдельных битах аргумента. Это требование является залогом криптостойкости алгоритмов шифрования, хэширующих пользовательский пароль для получения ключа.
Также ключевым свойством хэш-функций является их необратимость:
Под необратимостью понимается вычислительная невозможность нахождения исходного блока данных X по известному значению хеш-функции от этого блока H(X).