Лабораторна робота 4

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 3

Лабораторна робота № 4

Тема: Односпрямовані хеш-функції.


Мета: Ознайомитися з різними алгоритмами
формування хеш-функцій. Вивчити їх сфери застосування та
основні властивості. Розглянути класи атак, спрямованих на
аналіз хеш-функцій. Розглянути прості хеш-функції.
Завдання:
1. Вивчити основні теоретичні положення стосовно
використання і формування односпрямованих хеш-функциій.
2. Реалізувати програмно просту функцію хешування,
основану навикористанні операції XOR із застосуванням
рандомізації:
- початкове повідомлення М береться з текстового
файлу "text.txt";
- розрядність хеша вибрати рівною 16-ти бітам;
- значення хеш-функції зберегти у файлі "hash.txt".
Теоретичні відомості
Функції хешування
Значення функції хешування генерується функцією виду

де – повідомлення довільної довжини,


– значення функції хешування фіксованої довжини.
Значення функції хешування приєднується до повідомлення в
системі відправника. Одержувач встановлює автентичність
повідомлення шляхом повторного обчислення значення функції
хешування. Оскільки сама функція хешування секретною не
вважається, необхідні засоби захисту самого значення функції
хешування.
Вимоги, що пред'являються до функції хешування
Функція хешування повинна мати наступні властивості.
1. Можливість застосування до блоку даних будь-якої
довжини.
2. Давати на виході значення фіксованої довжини.
3. Значення повинне обчислюватися відносно легко
для будь-якого , а алгоритм обчислення має бути практичним з
точки зору як апаратної, так і програмної реалізації.
4. Для будь-якого коду повинно бути практично
неможливо обчислити , для якого (односпрямованість).
5. Для будь-якого блоку повинно бути практично
неможливо обчислити , для якого (слабка
стійкість до колізій).
6. Повинно бути практично неможливо обчислити будь-яку
пару різних значень х і у, для яких (сильна стійкість
до колізій).
Прості функції хешування
Усі функції хешування побудовані на наступних загальних
принципах. Вхідне значення (повідомлення, файл і т.д.)
розглядається як послідовність -бітових блоків. Дані, що
вводяться, обробляються послідовно блок за блоком, в результаті
отримується -бітове значення функції хешування.
Однією з простих функцій хешування є зв'язування усіх бло-
ков операцією ХОR. Це можна записати в наступному виді:
,
де - -й біт хеш-коду, ,
т - число -бітових блоків,
- -й біт в -му блоці.
Таким чином здійснюється простий побітовий контроль
парності – подовжній контроль парності. Така функція хешування
досить ефективна при контролі цілісності у разі даних довільного
виду. Тоді будь-яке -бітове значення функції хешування
виявляється однаково ймовірним. Якщо ж йдеться про більш
прогнозований формат даних, така функція неефективна.
Наприклад, в текстових файлах з англійським текстом старший
розряд кожного байта завжди дорівнює нулю. Тому якщо
використовувати 128-бітове значення функції хешування, то
замість ефективності 2128 функція хешування для цього типу даних
матиме ефективність, рівну 2112.
Можно удосконалити таку схему, використавши однобітовий
циклічний зсув або повороту значення функції хешування після

2
завершення обробки кожного чергового блоку. Така процедура
складається з наступних етапів.
1. Початкова ініціалізація -бітового значення функції
хешування нульовим значенням.
2. Послідовна обробка -битовых блоків даних за наступним
правилом:
- виконання циклічного зсуву поточного значення функції
хешування вліво на один біт;
- додавання поточного блоку до значення функції
хешування з допомогою операції XOR.
Ця процедура демонструє ефект "рандомізації" даних, що
вводяться, й усунення регулярностей, які спостерігаються для
даних, що вводяться.
Хоча друга з вищезгаданих процедур і забезпечує хорошу
можливість контролю цілісності даних, вона неефективна для
захисту даних, коли з відкритим повідомленням передається
шифрований хеш-код. Маючи деяке повідомлення, зовсім неважко
створити нове повідомлення, якому відповідатиме той же самий
хеш-код: просто підготуйте будь-яке необхідне альтернативне
повідомлення і приєднаєте до нього відповідний -бітовий блок,
який разом з новим повідомленням сформує бажаний хеш-код.
Контрольні питання
1. Що таке хеш-функція? Для чого вона призначена?
2. Яки вимоги висуваються до хеш-функцій?
3. Що таке односпямованість?
4. Що таке сильна та слабка стійкість до колізій?
5. Опишіть принцип формування хеш-коду зо допомогою операції
ХOR. В чому недолік та перваги цього підходу?
6. Опишіть алгоритм формування хеш-коду з використанням
операції ХOR з ефектом рандомізації.

You might also like