Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik_1_0.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.93 Mб
Скачать

2.2. Прості функції хешування

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

Однією з найпростіших функцій хешування є зв'язування всіх блоків операцією порозрядного виключного "АБО" (XOR). Це можна записати в наступному вигляді:

де

Сi — i-й біт хеш-кода, 1 < i < п,

т — число n-бітових блоків введення,

bij — i-й біт в j-ому блоці,

— операція XOR.

Ця процедура показана на рис. 12.2. Вона здійснює простий побітовий контроль парності і зазвичай називається поздовжнім контролем парності. Така процедура досить ефективна при контролі цілісності даних у разі даних довільного виду. Тоді будь-яке га-бітове значення функції хешування виявляється однаково імовірним. Значить, ймовірність того, що при появі помилки в даних значення функції хешування залишиться колишнім, дорівнює 2-n. Якщо ж мова йде про більш прогнозовані форматовані дані, така функція менш ефективна. Наприклад, в текстових файлах із звичайним англійським текстом старший розряд кожного байта завжди дорівнює нулю. Тому якщо використовувати 128-бітове значення функції хешування, то замість ефективності 2-128 функція хешування для цього типу даних покаже ефективність, рівну 2-112.

Найпростіше удосконалити таку схему, розглянувши можливість виконання однобітового циклічного зсуву або повороту значення функції хешування після завершення обробки кожного чергового блоку. Така процедура складається з наступних етапів.

1. Початкова ініціалізація n-бітового значення функції хешування нульовим значенням.

2. Послідовна обробка n-бітових блоків даних за наступним правилом.

• Виконання циклічного зсуву поточного значення функції хешування вліво на один біт.

• Додавання поточного блоку до значення функції хешування за допомогою операції XOR.

Ця процедура демонструє ефект "рандомізаціі" даних, що вводяться і руйнування регулярностей, які спостерігаються для вводимих даних. Ці два типи функцій хешування ілюструються для 16-бітових значень на рис. 12.3.

Біт 1

Біт 2

. . .

Біт n

Блок 1

b11

b21

bn1

Блок 2

b12

b22

bn2

...

...

.

.

.

.

.

.

Блок m

b1m

b2m

bnm

Хеш-код

C1

C2

Cn

Рис. 12.2. Проста функція хешування, що виконує операцію XOR

Рис.12.3. Дві прості функції хешування

Хоча друга з вищезазначених процедур і забезпечує хорошу можливість контролю цілісності даних, вона практично марна для захисту даних, коли з відкритим повідомленням передається шифрований хеш-код, як це має місце у випадках, показаних на рис. 11.5 (6) і (в). Маючи деяке повідомлення, зовсім неважко створити нове повідомлення, якому буде відповідати той же самий хеш-код: просто підготуйте будь-яке необхідне альтернативне повідомлення і приєднайте до нього відповідний n-бітовий блок, який разом з новим повідомленням сформує бажаний хеш-код.

Хоча просте виконання операції XOR або тієї ж операції з циклічним зрушенням (RXOR) у разі шифрування тільки хеш-коду виявляється недостатнім, ви можете переконатися, що така проста функція може бути корисна, коли шифруються і хеш-код, і повідомлення (див. рис . 11.5 (a)). Але тут потрібне бути уважним. Технологія, оригінально запропонована Національним бюро стандартів (National Bureau of Standards), передбачає виконання простої операції XOR стосовно 64-бітових блоків повідомлення і подальше шифрування всього повідомлення в режим зчеплення блоків (СВС). Така схема може бути описана таким чином. Маючи повідомлення, що складається з послідовності 64-бітових блоків Х1, Х2, ..., XN, спочатку слід обчислити хеш-код С, рівний результату зв'язування всіх блоків за допомогою операції XOR, а потім приєднати отриманий хеш-код до кінця повідомлення в якості ще одного блоку:

Після цього всі повідомлення разом з приєднаним хеш-кодом шифрується в режимі СВС, в результаті чого виходить шифрування повідомлення . В [JUEN85] було зазначено кілька способів, за допомогою яких шифрований текст такого повідомлення можна реорганізувати таким чином, щоб це не вплинуло на хеш-код. Наприклад, за визначенням режиму СВС (див. рис. 3.12 в розділі 3), ми маємо

Але значення XN+1 є значенням хеш-коду:

Зважаючи на те що доданки попереднього рівняння можуть зв'язуватися операцією XOR в будь-якому порядку, хеш-код не повинен змінюватися при зміні порядку проходження блоків шифрованого тексту.

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