Проверка участников/Ahasheni 2
- 1 year ago
- 0
- 0
N-Hash — криптографическая хеш-функция на основе циклической функции FEAL . В настоящее время считается небезопасной .
Была разработана в 1990 году фирмой Nippon Telegraph and Telephone (также разработавшей FEAL).
Изначально, функция N-Hash была предназначена для того, чтобы решить проблему подмены информации на пути между двумя пользователями телефонной связи (Nippon Telegraph and Telephone — телекоммуникационная компания) и ускорить поиск данных. Например, если человек посылает смс -сообщение, то перед доставкой оно будет проверено на подлинность с помощью хеш-функции. А если пользователю продукции Nippon Telegraph and Telephone надо быстро найти в телефоне чей-либо контакт, то с помощью N-Hash можно упростить процесс поиска имени в списке. Это осуществляется благодаря тому, что хеш-кодом (маленькой по объёму определяющей частью контакта) имени объявляется первая буква контакта.
В основе алгоритма N-Hash лежит блочный алгоритм шифрования FEAL. Крупнейшая телекоммуникационная компания Nippon Telegraph and Telephone создала FEAL на основе DES . Но хотя этот алгоритм и выигрывает в быстродействии у DES, он является очень ненадежным и легко уязвимым: криптоаналитику требовалось очень мало информации, чтобы взломать алгоритм. Именно взлом алгоритма FEAL повлек за собой появление хеш-функции N-Hash в 1990 году. N-Hash также выигрывает в скорости у DES: по сравнению с 9 Кбит/сек у DES, N-Hash работает со скоростью 24 Кбит/сек для 15-раундовой схемы и со скоростью 29 Кбит/сек для 12-раундовой. При этом Nippon Telegraph and Telephone добилась повышения надёжности по сравнению с FEAL .
В течение некоторого времени алгоритм N-Hash использовался фирмой Nippon Telegraph and Telephone в соответствии с целями данной функции, но через некоторое время был разработан метод дней рождения , который с лёгкостью взламывал этот алгоритм. В связи со взломом отказались не только от N-Hash, но и почти от всех функций, основанных на блочных шифрах, так как для всех них характерна одна и та же проблема: они легко уязвимы методом дней рождения. Вместо них теперь используют более надежные функции, основанные на MD — технологиях: MD5 , SHA-1 и другие, приведенные в списке функций, которые на данный момент считаются надежными (согласно стандарту ISO/IEC 10118).
Функция N-Hash использовалась в течение недолгого времени в начале 1990-х годов, пока не была взломана методом дней рождения.
Определение: Пусть — сообщение некоторой длины.
Функция называется однонаправленной , если из равенства
легко:
очень трудоёмко:
Проще определение можно записать так:
Однонаправленность — это « отпечаток пальца »:
Однонаправленность решает очень важную проблему. Рассмотрим её на примере.
Алиса и Боб традиционно обозначают субъектов передачи информации.
Чтобы предотвратить возможность Алисы использовать метод «дней рождения» для обмана Боба, очень удобно ввести ещё более сильное условие, чем условие однонаправленности. H такова, что трудно найти сообщения и , такие что их хеш-коды совпадают. То есть невозможно найти двух человек с одинаковыми отпечатками пальцев.
Данное условие называется устойчивостью к столкновениям и для хеш-функции N-Hash оно не выполняется.
По причине неустойчивости к столкновениям Алиса может обмануть Боба таким образом (метод «дней рождения»):
Для того, чтобы избежать подобной проблемы, достаточно вносить косметические изменения в подписываемый контракт. И хотя это действие никак не изменяет хеш-функцию H, а, значит, никак не влияет на её устойчивость к столкновениям, но человек этим действием получит новую версию контракта, хеш-код которого не совпадает с хеш-кодом версии контракта злоумышленника. То есть, если Боб в 5-й строке поставит в каком-нибудь месте запятую, или поставит две точки вместо одной, то Алиса не сможет доказать, что он подписал другой контракт (так как его хеш-код уже не совпадает с хеш-кодом контракта Алисы).
Можно рассмотреть жизненный пример: когда нотариус ставит печать в подписываемый контракт, он вносит туда косметические изменения.
Для того, чтобы понять как работает функция N-Hash, необходимо перейти на более научную речь. Ниже приведены цели данной функции не на примерах, а в соответствии с тем, как они осуществляются и с соответствующей терминологией .
Данное свойство необходимо для того, чтобы исключить возможность злоумышленника внедрить некоторую ложную информацию в исходное сообщение. Для обеспечения целостности должна быть возможность обнаружить любые изменения в тексте сообщения (замена, вставка, удаление). Целостность обеспечивается путём внедрения в исходное сообщение избыточной информации, которая будет являться проверочной комбинацией. Такая комбинация называется контрольной суммой и её можно вычислить с помощью специального алгоритма. Так как этот алгоритм зависит от секретного ключа , то внедрение ложной информации в сообщение маловероятно .
, где salt — избыточная информация, M — сообщение - контрольная сумма;
Из формулы следует, что если меняется salt, то меняется и S (контрольная сумма), а значит изменялось и и .
То есть можно сделать вывод, что была добавлена ложная информация.
Функция N-Hash работает с сообщениями M произвольной длины. При этом на выходе получается хеш-код фиксированной длины в 128 бит. Это получается за счет того, что сообщение делится на блоки , размером 128 бит, и алгоритм работает последовательно с каждым из блоков.
Данное свойство выполняется для однонаправленных функций, какой и является N-Hash. Достоверность сообщения M проверяется путём нахождения конечного хеш-кода (дайджеста сообщения) дважды (отсылающая и принимающая стороны). Результаты сравниваются и, если они совпадают, то информация достоверна. Целостность не гарантирует достоверность .
на сайтах, где нужно вводить логин и пароль , пароль после ввода переводится в хеш-код. То есть изначально пользователь вводит пароль M, но для входа в защищённую область используется хеш-код . По известному хеш-коду h и функции H вычислить M очень трудно, чем и обеспечивается конфиденциальность пароля.
Аутентификация — это процедура проверки подлинности пользователя или данных при помощи некоторого критерия.
Возникает вопрос, как хеш-функция обеспечивает правдивость аутентификации. Это легко показать на примере.
Когда пользователь вводит логин и пароль на каком-либо сайте , его пароль преобразуется в хеш-код и передается по сети для аутентификации. Очевидно, что для того чтобы войти под чужую учётную запись достаточно выяснить хеш-код пароля, а затем по формуле (h-хеш-код, M — пароль) найти пароль. Но N-Hash, являющаяся однонаправленной функцией, обеспечивает сохранность пароля, так как это уравнение для однонаправленных функций решается очень трудоёмко (не с помощью персонального компьютера).
Алгоритм N-Hash основан на циклическом повторении (12 или 15 раз — число раундов) операций. На входе имеется хеш-код и он может быть произвольным, на выходе получается хеш-код h сообщения M , которое необходимо хешировать. При этом размер выходящего хеш-кода фиксирован и равен 128 бит, тогда как размер M произволен .
На схеме справа представлены схематические обозначения операций, которые присутствуют на нижеследующих схемах.
Ниже представлен один цикл работы алгоритма N-Hash.
Оставшееся пока неизвестным нечто находится после прохождения каскада из восьми преобразующих функций. Его получение может быть описано таким образом:
.
Возникает вопрос, как действует преобразующая функция .
Рассмотрим верхнюю часть схемы до перекрестья.
Исходное сообщение разбивается на блоки по бита.
Будем считать промежуточными выходами входы в нижнюю часть схемы. и подаются на промежуточные выходы , а на два других выхода подаются операции и . Теперь можно результаты на промежуточных выходах переобозначить и через них, аналогично верхней части, найти результаты на выходе нижней части, то есть и всей схемы в целом.
Сделав все необходимые вычисления, получим, что при подаче на вход сообщение на выходе можно представить как конкатенацию сообщений
Так как функция f работает с аргументами, длина которых составляет 32 бит, то из схемы поиска функции f(x, P) имеем:
Аргументами функции (первая стрелка слева) являются и .
Аргументами функции (вторая стрелка слева) являются и .
То есть две составляющие части из сообщения на выходе уже известны и равны
Далее будем пользоваться уже полученными оставляющими частями сообщения на выходе для удобства записи:
Хеш-функция является безопасной в случае, когда криптоаналитику требуется очень много информации, для того чтобы взломать данную хеш-функцию (что делает взлом маловероятным) и если хеш-функция не взломана к данному времени .
Для того, чтобы хеш-функция была безопасной, необходимо, чтобы выполнялись условия:
Иначе человек, который вводит свои логин и пароль для входа в Википедию , мог бы попасть на страницу другого участника.
Если данное условие не выполняется, то это делает возможным нахождение паролей пользователей Википедии.
Иначе, можно было бы найти два пароля с одинаковыми хеш-кодами.
N-Hash не является безопасной функцией, так как для неё не выполнено последнее условие.
В настоящее время N-Hash считается небезопасной функцией. На данном рисунке указаны все безопасные однонаправленные функции на данный момент согласно стандарту ISO/IEC 10118 :
Из алгоритмов, построенных как и N-Hash на основе блочных шифров, безопасными считаются только MDC-2 и MDC-4.
Для N-Hash характерна следующая проблема:
На данном рисунке приведена классификация атак на все алгоритмы хеширования в целом.
Атаки, зависящие от алгоритма, являются атаками, основанными на свойствах конкретного алгоритма.
Например, N-Hash успешно атакуют с помощью дифференциального метода , атакой с фиксированной точкой и встречей посередине .
Атаки, не зависящие от алгоритма, можно применить к любой функции хеширования, однако это не исключает того, что для некоторых алгоритмов они очень трудоёмки из-за большого объёма информации или быстродействия кода.
Ден Бур предложил способ построения коллизии для однораундовой схемы N-Hash.
Бихам и Шамир успешно применили метод дифференциального криптоанализа для компрометации 6-раундовой схемы N-Hash. Предложенный ими способ построения коллизии срабатывает для любого значения N кратного трём и при этом для N ≤ 12 он оказывается эффективнее подхода, основанного на парадоксе дней рождения .
Для 12-раундовой схемы сложность построения коллизий предложенным методом оценивается величиной 256 операций (трудоёмкость метода, основанного на парадоксе дней рождения — 264 операций).
Увеличение длины хеш-кода и секретного ключа усложнит работу криптоаналитика. Можно попытаться сделать вычисления слишком трудоёмкими для персонального компьютера и требующими больших ресурсов. Тогда криптоаналитику надо будет или искать суперкомпьютер, или написать вирус, который на основе распараллеливания процесса взлома хеш-функции будет использовать сразу несколько персональных компьютеров для решения проблемы .
Также действенны такие методы защиты хеш-функции :
Алгоритм | Длина хеш-значения | Скорость шифрования (Кбайт/сек) |
---|---|---|
Одновременная схема Davies-Meyer (c IDEA ) | 128 | 22 |
Davies-Meyer (с DES) | 64 | 9 |
Хеш-функция ГОСТ | 256 | 11 |
HAVAL (3 подхода) | переменная | 168 |
HAVAL (4 подхода) | переменная | 118 |
HAVAL (5 подходов) | переменная | 98 |
MD2 | 128 | 23 |
MD4 | 128 | 236 |
MD5 | 128 | 174 |
N-Hash (12 этапов) | 128 | 29 |
N-Hash (15 этапов) | 128 | 24 |
RIPE-MD | 128 | 182 |
SHA-1 | 160 | 75 |
Snefru (4 прохода) | 128 | 48 |
Snefru (8 подходов) | 128 | 23 |