Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_tzis!113.doc
Скачиваний:
64
Добавлен:
09.11.2019
Размер:
2 Мб
Скачать
☆

Вычисление хеш-функций

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

Одним из простейших примеров хеш-функции является побитный XOR каждого блока:

Сi = bi1 bi2 . . . bik

Где

Сi - i-ый бит хеш-кода, 1 i n.

k - число n-битных блоков входа.

bij - i-ый бит в j-ом блоке.

- операция XOR.

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

Часто при использовании подобного продольного избыточного контроля для каждого блока выполняется однобитный циклический сдвиг после вычисления хеш-кода. Это можно описать следующим образом.

  • Установить n-битный хеш-код в ноль.

  • Для каждого n-битного блока данных выполнить следующие операции:

    • сдвинуть циклически текущий хеш-код влево на один бит;

    • выполнить операцию XOR для очередного блока и хеш-кода.

Это даст эффект "случайности" входа и уничтожит любую регулярность, которая присутствует во входных значениях.

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

Хотя простого XOR или ротационного XOR (RXOR) недостаточно, если целостность обеспечивается только зашифрованным хеш-кодом, а само сообщение не шифруется, подобная простая функция может использоваться, когда все сообщение и присоединенный к нему хеш-код шифруются. Но и в этом случае следует помнить о том, что подобная хеш-функция не может проследить за тем, чтобы при передаче последовательность блоков не изменилась. Это происходит в силу того, что данная хеш-функция определяется следующим образом: для сообщения, состоящего из последовательности 64-битных блоков Х1, Х2,..., ХN, определяется хеш-код С как поблочный XOR всех блоков, который присоединяется в качестве последнего блока:

С = ХN+1 = X1 X2 . . . XN

Затем все сообщение шифруется, включая хеш-код, в режиме СВС для создания зашифрованных блоков Y1, Y2, ..., YN+1. По определению СВС имеем:

Х1 = IV DK [Y1]

Хi = Yi-1 DK [Yi]

ХN+1 = YN DK [YN+1]

Но XN+1 является хеш-кодом:

ХN+1 = X1 X2 . . . XN =

(IV DK [Y1]) (Y1 DK [Y2]) . . .

(YN-1 DK [YN])

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

Первоначальный стандарт, предложенный NIST, использовал простой XOR, который применялся к 64-битным блокам сообщения, затем все сообщение шифровалось, используя режим СВС.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]