Понятие коллизии и причины ее существования. Парадокс дней рождения. Длина кода аутентификации сообщения (имитовставки)
Коллизия – это ситуация, когда разные блоки исходного текста имеют одинаковый хэш. ( но ). Причина существования коллизий очевидна – хэш функция отображает большое множество исходных текстов на меньшее множество хэшей – следовательно поскольку хэшей меньше, чем сообщений, но каждому сообщению соответствует хэш, то один или более хэшей соответствуют сразу нескольким сообщениям. Единственный способ избавиться от коллизий совсем – взять мощность множества хэшей не меньше, чем мощность множества сообщений. Парадо́кс дней рожде́ния — это кажущееся парадоксальным утверждение, что вероятность совпадения дней рождения (числа и месяца) хотя бы у двух членов группы из 23 и более человек, превышает 50 %. С практической точки зрения это означает, что если, например, в вашем классе более 22 учеников, то более вероятно, что у кого-то из одноклассников дни рождения придутся на один день, чем что у каждого будет свой собственный день рождения. Аналогично число значений которые нужно перебрать, чтобы с высокой вероятностью найти коллизию значительно меньше, чем мощность пространства значений хэш функции. Это приводит к необходимости значительно большей длины имитовставки, чем кажется на первый взгляд (512 бит уже недостаточно), для того, чтобы поиск коллизий стал бы по-настоящему вычислительно невыполнимой задачей.
39. Алгоритм хеширования MD5: параметры, алгоритм забивки, алгоритм изменения переменных сцепления, раунды и операции, функции раундов. Стойкость к поиску коллизий.
Параметры:
Алгоритм забивки:
Алгоритм изменения переменных сцепления:
А = 01 23 45 67; В = 89 AB CD EF; С = FE DC BA 98; D = 76 54 32 10.
Схема оператора:
Ф-ции раундов: 1 раунд . 2 раунд . 3 раунд . 4 раунд .
Коллизии MD5 В 2004 году китайские исследователи Ван Сяоюнь (Wang Xiaoyun), Фэн Дэнго (Feng Dengguo), Лай Сюэцзя (Lai Xuejia) и Юй Хунбо (Yu Hongbo) объявили об обнаруженной ими уязвимости в алгоритме, позволяющей за небольшое время (1 час на кластере IBM p690) находить коллизии. В 2005 году Ван Сяоюнь и Юй Хунбо из университета Шаньдуна в Китае опубликовали алгоритм, который может найти две различные последовательности в 128 байт, которые дают одинаковый MD5-хеш. Таким образом, на данный момент MD5 официально неустойчив к поиску коллизий.
40. Алгоритм хеширования MD4 как средство решения задачи безопасного хранения паролей в ОС Windows: NT hash. Задача безопасного хранения паролей подразумевает, что даже если криптоаналитик получил доступ к ОС и таблице хранимых проверочных значений паролей, он не может восстановить по ней настоящие «секретные» пароли. Одни из решений этой задачи является использования хэшей в качестве проверочных значений паролей, поскольку по хэшу невозможно восстановить секретный пароль. Однако, в таком случае остается возможно атаки на алгоритм хэширования с целью подобрать входное значение имеющее заданный хэш(проверочное значение искомого пароля). Эта атака в частности может быть осуществлена полным перебором. NT хэш:
41. Алгоритм хеширования MD4 как средство решения задачи безопасного хранения паролей в ОС Windows: LM hash. LM-хеш вычисляется следующим образом:
Несмотря на то что LM-хеш основан на качественном блочном шифре DES, он может быть легко атакован для подбора пароля из-за двух уязвимостей в его реализации. Во-первых, пароли длиннее 7 символов разделяются на две части и каждая часть хешируется отдельно. Во-вторых, все символы нижнего регистра приводятся к верхнему до хеширования пароля. Первая уязвимость позволяет атаковать каждую часть пароля по отдельности. Хотя и существует различных паролей составленных из видимых ASCII-символов, но можно составить только различных 7-байтовых частей пароля используя одну кодовую таблицу. Ограничение набора символов из-за преобразования к верхнему регистру также сокращает количество вариантов до . Применив brute force атаку отдельно к каждой половине, современные персональные компьютеры могут подобрать буквенно-цифровой LM-хеш за несколько часов. 42. Решение задачи безопасного хранения паролей в ОС UNIX/Linux, понятие «соли», используемые алгоритмы хеширования. В системе UNIX каждый пользователь имеет свой пароль и его знает только пользователь. Для защиты паролей используется хеширование. Предполагалось, что получить настоящий пароль можно только полным перебором. При появлении UNIX единственным способом хеширования был DES (Data Encryption Standard), но им могли пользоваться только жители США, потому что исходные коды DES нельзя было вывозить из страны. Во FreeBSD решили эту проблему. Пользователи США могли использовать библиотеку DES, а остальные пользователи имеют метод, разрешённый для экспорта. Поэтому в FreeBSD стали использовать MD5 по умолчанию. Некоторые Linux-системы также используют MD5 для хранения паролей. Соль – уникальное значение для каждого пользователя, использующееся для того, чтобы при одинаковых паролях их хэши не совпадали. Таблицы паролей хранятся либо в /etc/shadow, либо в /etc/master.password Формат записей в таблице: login:salt$hash Кроме упомянутых выше MD5 и DES для хэширования также иногда применяется SHA.
43. Алгоритм хеширования SHA-1: параметры, алгоритм забивки, алгоритм изменения переменных сцепления, раунды и операции, функции раундов.
Параметры:
Алгоритм забивки(идентичен алгоритму забивки MD5):
Алгоритм изменения переменных сцепления:
A = a = 0x67452301 B = b = 0xEFCDAB89 C = c = 0x98BADCFE D = d = 0x10325476 E = e = 0xC3D2E1F0
Схема раунда:
44. Антивирусное ПО: сигнатурные базы и алгоритмы хеширования. Утверждение Cohen о невозможности создать идеальный антивирус и проблема остановки в теории вычислимости.
45. Функции хеширования, основанные на симметричных шифрах. Алгоритм ГОСТ Р34.11-94: параметры, сжимающая функция и ее результат (имитовставка), генерация ключей, шифрующее преобразование, перемешивающее преобразование.
В качестве сжимающей функции можно использовать симметричный блочный алгоритм шифрования. Для обеспечения большей безопасности можно использовать в качестве ключа блок данных предназначенный к хешированию на данной итерации, а результат предыдущей сжимающей функции в качестве входа. Тогда результатом последней итерации будет выход алгоритма. В таком случае безопасность хеш-функции базируется на безопасности используемого алгоритма. Основным недостатком хеш-функций, спроектированных на основе блочных алгоритмов, является низкая скорость работы.
Алгоритм ГОСТ Р34.11-94:
Параметры:
Основой описываемой хеш-функции является шаговая функция хеширования где , , — блоки длины 256 бит. Основной алгоритм
, где L — Длина сообщения M в битах по модулю , где K — Контрольная сумма сообщения M:
Шаговая функция хэширования – сжимающая функция: преобразует два 256-битных значения в одно 256-битное значение состоит из трех частей:
Генерация ключей: Алгоритм: 1. 2. Для j = 2,3,4 выполняем следующее:
Где: C2 = 0 C3 = 0xff00ffff000000ffff0000ff00ffff0000ff00ff00ff00ffff00ff00ff00ff00 C4 = 0 Преобразование , где — подблоки блока Y длины 64 бит. Преобразование , где , а — подблоки блока Y длины 8 бит.
Шифрующее преобразование: После генерирования ключей происходит шифрование по ГОСТ 28147—89 в режиме простой замены на ключах (для ), процедуру шифрования обозначим через E (Примечание: функция шифрования E по ГОСТ 28147 шифрует 64 битные данные 256 битным ключом). Для шифрования разделяют на четыре блока по 64 бита: и зашифровывают каждый из блоков: После чего блоки собирают в 256 битный блок:
Перемешивающее преобразование:
:
46. Алгоритм хеширования Keccak: параметры, алгоритм забивки, sponge-конструкция и фазы работы алгоритма, функция псевдослучайной перестановки. Использование алгоритма Keccak в качестве поточного шифра.
|