Цепочка хешей

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Цепочка хешей — результат последовательного применения криптографической хеш-функции к некоторой строке. В компьютерной безопасности цепочка хешей используется для воспроизведения множества одноразовых паролей по одному ключу или паролю. Цепочки хешей используются для реализации неотказуемости[en] путём применения к данным для записи хронологии их существования.

Определение[править | править код]

Цепочка хешей — результат последовательного применения криптографической хеш-функции к строке .

Например,

дает цепочку хешей длины 4, что часто обозначается как

Применения[править | править код]

Лэмпорт[1] предложил использовать цепочки хешей в качестве схемы защиты пароля в небезопасном окружении. Сервер, которому нужно предоставлять аутентификацию, может хранить цепочку хешей вместо незашифрованного пароля, предотвращая таким образом кражу пароля во время передачи на сервер либо непосредственно с сервера. Например, сервер начинает с хранения записи , которая предоставляется пользователем. Когда пользователь желает аутентифицироваться, он посылает на сервер строку . Сервер вычисляет строку и убеждается в совпадении с сохраненной на сервере записью. После этого сервер сохраняет запись для последующей аутентификации.

Злоумышленник, перехвативший , при обращении к серверу не сможет воспроизвести и передать на сервер начало цепочки, поскольку теперь сервер ожидает . Благодаря свойству необратимости криптографических хеш-функций злоумышленник не сможет обратить хеш-функцию и получить начало цепочки. В этом примере пользователь может аутентифицироваться 1000 раз до того момента, когда цепочка будет исчерпана. Каждый раз значение передаваемого хеша разное, поэтому перехват одного хеша не позволит произвести повторную аутентификацию.

Бинарные цепочки хешей[править | править код]

Бинарные цепочки хешей обычно используются вместе с хеш-деревьями. Бинарная цепочка хешей принимает на вход значения пары хешей, склеивает их и применяет хеш-функцию к полученной строке, производя, таким образом, третий хеш.

Хеш-дерево и цепочка хешей

На диаграмме изображено хеш-дерево, состоящее из 8 листовых узлов и цепочки хешей для третьего листа. Для того, чтобы восстановить хеш-цепочку, в дополнение к самим хеш-значениям требуется знать порядок конкатенации (справа или слева, 1 или 0).

См. также[править | править код]

Примечания[править | править код]

  1. L. Lamport, «Password Authentication with Insecure Communication», Communications of the ACM 24.11 (November 1981), pp 770—772. [1] Архивная копия от 9 апреля 2016 на Wayback Machine [2] Архивная копия от 16 сентября 2006 на Wayback Machine