Алгоритм обчислення хеш-функції MD5.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Електронні обчислювальні машини

Інформація про роботу

Рік:
2007
Тип роботи:
Лабораторна робота
Предмет:
Проектування комп’ютерних засобів захисту
Група:
СПР-5

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 1 з курсу: « Проектування комп’ютерних засобів захисту» на тему: “ Алгоритм обчислення хеш-функції MD5” Виконала: ст. гр. СПР-5 Львів 2007 Мета роботи: реалізувати демонстраційну програму обчислення значення сигнатури вхідного повідомлення за алгоритмом MD5. Теоретичні відомості: Алгоритм MD5 (Message Digest) – це алгоритм хешування, розроблений професором Рональдом Л.Рівестом з Массачусетського технологічного інституту (МТІ) в 1992 році. В якості вхідних даних береться повідомлення (потік даних) довільної довжини, і обчислюється 128 – розрядний хеш-код (сигнатура, дайджест). Припускається, що не існує двох повідомлень, які мають однакові сигнатури, або не можливо створити повідомлення з наперед заданою сигнатурою. Цей алгоритм застосовується в криптографії при формуванні цифрових підписів та генерації ключів шифрування. По суті, алгоритм хешування MD5 – це спосіб перевірки цілісності даних, набагато надійніший ніж контрольна сума або інші методи. Алгоритм під час розробки був оптимізований для 32 – розрядних систем і не потребує великих об’ємів пам’яті. MD5 є дещо повільніший, ніж MD4, але більш стійкий до криптографічних атак. Опис алгоритму Перед тим, як розглянути детально сам алгоритм, визначимо основні терміни та поняття, що ним використовуються. Під терміном “слово” будемо розуміти кількість інформації, яка представлена 32-ома розрядами (бітами), а під терміном “байт” – 8 розрядів (біт). Послідовність біт як послідовність байт, де кожна група із 8 – ми розрядів є окремим байтом, причому старший розряд байта іде першим. Аналогічно представляється послідовність байт, тільки молодший байт іде першим. В якості вхідного потоку будемо мати потік даних  EMBED Equation.3  розрядів.  EMBED Equation.3 - невід’ємне ціле число (можливо 0), не обов’язково кратне 8. На рис. 1 зображена схема логіки виконання MD5.  EMBED Visio.Drawing.6  Рис. 1. Логіка виконання MD5. Для обчислення MD5 хеш - функції необхідно виконати наступні 5 кроків: Крок 1: Вирівнювання потоку Повідомлення доповнюється таким чином, щоб його довжина була рівною 448 по модулю 512 (довжина ≡ 448 mod 512). Це означає, що довжина доданого повідомлення на 64 розряди менша ніж число, кратне 512. Додавання розрядів проводиться завжди, навіть тоді, коли повідомлення має потрібну довжину. Наприклад, якщо довжина повідомлення 448 розрядів, то воно доповнюється 512 розрядами до 960 розрядів. Отже число доданих розрядів знаходиться в межах від 1 до 512. Вирівнювання відбувається наступним чином: потік доповнюється одним бітом ‘1’, а за ним біти ‘0’ до тих пір, поки довжина потоку не буде рівною 448 по модулю 512. Крок 2: Додавання довжини 64 – розрядне представлення довжини вихідного (до добавлення) повідомлення в бітах приєднується до результату першого кроку. Якщо початкова довжина більша, ніж  EMBED Equation.3 , то використовуються молодші 64 розряди. Іншими словами поле містить довжину вихідного повідомлення по модулю  EMBED Equation.3 . В результаті перших двох кроків утворюється повідомлення, довжина якого кратна 512 розрядам. Це розширене повідомлення представляється, як послідовність 512 – бітних блоків  EMBED Equation.3 , при цьому загальна довжина розширеного повідомлення рівна  EMBED Equation.3  розрядам. Таким чином довжина отриманого розширеного повідомлення кратна шістнадцяти 32 – бітним словам.  EMBED Visio.Drawing.6  Рис. 2. Структура розширеного повідомлення. Крок 3: Ініціалізація MD-буфера Для збереження проміжних і кінцевих результатів хеш-функції використовується 128-розрядний буфер. Він представляється як чотири 32 – розрядні регістра ( EMBED Equation.3 ). В якості ініціалізуючих значень використовуються наступні шістнадцяткові числа:  EMBED Equation.3  Крок 4: Обробка послідовності 512 – розрядних (по 16 слів) блоків Основою алгоритму є блок, який складається із чотирьох циклів. Він позначається як  EMBED Equation.3 . Чотири цикли мають подібну структуру, але для кожного циклу застосовується своя елементарна логічна функція  EMBED Equation.3 і  EMBED Equation.3  відповідно.  EMBED Visio.Drawing.6  Рис. 3. Обробка чергового 512-розрядного блоку. Кожний цикл отримує в якості вхідних даних поточний 512 – розрядний блок  EMBED Equation.3  та 128 – розрядне значення буфера  EMBED Equation.3 , що є проміжним значенням хеш-функції, та змінює вмістиме цього буфера. Кожний цикл використовує четверту частину 64 – елементної таблиці  EMBED Equation.3 , побудованої на основі функції  EMBED Equation.3 ,  EMBED Equation.3 , де  EMBED Equation.3  - ціла частина. Наприклад:  EMBED Equation.3 ,  EMBED Equation.3 - ий елемент  EMBED Equation.3 , який позначається  EMBED Equation.3 , приймає значення рівне цілій частині від  EMBED Equation.3 , число  EMBED Equation.3  задається в радіанах. Оскільки функція  EMBED Equation.3  приймає значення, які знаходяться в проміжку від 0 до 1, то кожний елемент  EMBED Equation.3  є цілим, яке можна представити 32 розрядами. Для отримання  EMBED Equation.3  вихід чотирьох циклів додається по модулю  EMBED Equation.3  з  EMBED Equation.3 . Додавання виконується незалежно для кожного з чотирьох слів в буфері. Крок 5: Вихід Після обробки всіх  EMBED Equation.3 , 512 - розрядних блоків виходом  EMBED Equation.3 -ої стадії є 128 – розрядний дайджест повідомлення. Розглянемо детальніше логіку кожного із чотирьох циклів обробки одного 512 – розрядного блоку. Цикл обробки складається із 16 кроків, які оперують з буфером  EMBED Equation.3 . Кожний крок можна подати у вигляді:  EMBED Visio.Drawing.6  Рис. 4. Логіка виконання окремого кроку.  EMBED Equation.3  де В кожному з чотирьох циклів алгоритму застосовується одна з чотирьох елементарних логічних функцій. Кожна елементарна функція отримує три 32-розрядних слова на вході і на виході формує одне 32-розрядне слово. Елементарні функції мають наступний вигляд:  EMBED Equation.3  В цих формулах застосовуються такі логічні операції: логічне множення (&, порозрядне І), логічне додавання ( EMBED Equation.3 , порозрядне АБО), додавання по модулю 2 ( EMBED Equation.3 , порозрядне виключне АБО) та інверсія ( EMBED Equation.3 , побітове заперечення ). Масив з 32-ох розрядних слів  EMBED Equation.3  приймає значення поточного 512 – розрядного блоку Кожний цикл виконується 16 раз. Таким чином, оскільки кожен блок вхідного повідомлення обробляється в чотирьох циклах, то кожний блок вхідного повідомлення обробляється по схемі, яка зображена на рис.4, 64 рази. Якщо подати вхідний 512 – розрядний блок у вигляді шістнадцяти 32-розрядних слів, то кожне вхідне 32-розрядне слово використовується чотири рази, по одному разу в кожному циклі, і кожний елемент таблиці  EMBED Equation.3 , який складається з 64-ьох 32-розрядних слів використовується тільки один раз. Після кожного кроку циклу відбувається циклічний зсув вліво чотирьох слів  EMBED Equation.3  і  EMBED Equation.3 . На кожному кроці змінюється тільки одне з чотирьох слів буфера  EMBED Equation.3 . Відповідно кожне слово буфера змінюється 16 раз, 17-ий раз в кінці для отримання остаточного виходу поточного блоку. Результат обчислення (хеш) представлений за допомогою чотирьох 32-розрядних слів -  EMBED Equation.3  (молодші записуються в  EMBED Equation.3 , старші в  EMBED Equation.3 ). Результат виконання роботи: Дані для обробки беруться з текстового файлу, розбиваються на блоки та обробляються за вище описаним алгоритмом. Висновок: На даній лабораторній роботі я ознайомилася з алгоритмом (md5) та написала відповідну програму.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!