Задание для лабораторной работы. 1. Разработать свою хеш-функцию, которая в качестве результата получает значение 2, 4, 8 бит, которая при изменении любого байта в тексте



1. Разработать свою хеш-функцию, которая в качестве результата получает значение 2, 4, 8 бит, которая при изменении любого байта в тексте, приводит к изменению не менее 30% результата.

2. Создать три документа (документ word, исходный текста на любом языке программирования source, изображение)

3. Вычислить дайджест сообщение для каждого из файлов

4. Внести необходимые изменения в документы, так, чтобы дайджест сообщение нового документа совпало со старым.

5. (*) Реализовать веб-интерфейс, который позволит загружать файлы и проверять дайджест сообщение.

6. (*) На основе RSA реализовать цифровую подпись дайджест сообщения.

(*) дополнительно

Практическая часть

1.Создать отдельную папку Lab03. В ней создать следующие папки:

- Source – для исходных тестовых файлов;

- oneChange – для файлов, с измененным одним битом;

- someChanges – для файлов, с множественными изменениями (10);

2.Скопировать три файла в папку Source, в качестве которых взять следующие:

- документ Microsoft Word, размером больше 100Кб;

- изображение, размером больше 50Кб;

- исходный код программы, на любом языке программирования;

- откомпилированный исполняемый файл EXE;

- html документ, размером более 100Кб.

Имена файлов занести в первый столбец таблицы (будет 4 столбца).

3.Найти хеш всех файлов (sha) и полученные значения занести в таблицу.

4.Скопировать все файлы в остальные папки.

5.С помощью HEX-редактора (например, в Far’e) сделать одно изменение (1-бит или байт) у файлов из папки oneChange.

6.Найти хеш измененных файлов и полученные значения занести во второй столбец таблицы.

7.В папке someChanges у файлов сделать несколько изменений.

Найти хеш измененных файлов и полученные значения занести в третий столбец таблицы.

Контрольные вопросы

1. Понятие хеш-функции

2. Понятие криптографической хеш-функции

3. Понятие коллизии

4. Понятие ключевой хеш-функции

5. Свойства однонаправленности и полного перемешивания

6. Возможности построения хеш-функций на основе симметричных блочных алгоритмов

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

Лабораторна работа № 4. Алгоритм обмІнУ ключаМИ ДІффІ-Хеллмана

Мета роботи

Освоїти спосіб безпечного обміну ключами по каналу зв'язку, які надалі можуть бути використані в якомусь алгоритмі шифрування. Реалізувати програмно (на будь-якій мові програмування) роботу алгоритму ДІффІ-Хеллмана [5].

Теоретичні відомості

Сам алгоритм Діффі-Хеллмана може застосовуватися тільки для обміну ключами.

Алгоритм заснований на труднощі обчислень дискретних логарифмів. Дискретний логарифм визначається наступним чином. Вводиться поняття примітивного кореня простого числа Q як числа, чиї ступені створюють всі цілі від 1 до Q - 1. Це означає, що якщо А є примітивним коренем простого числа Q, тоді числа A mod Q, A2 mod Q, . . . , AQ - 1 mod Q є різними і складаються з цілих від 1 до Q - 1 з деякими перестановками. У цьому випадку для будь-якого цілого Y <Q і примітивного кореня A простого числа Q можна знайти єдину експоненту Х, таку, що Y = AХ mod Q, где 0  X  (Q — 1)

Експонента X називається дискретним логарифмом, або індексом Y, на підставі A mod Q. Це позначається як

 

indA, Q (Y).

 

3.2.1 Алгоритм обміну ключами Діффі-Хеллмана

 

Загальновідомі елементи:

Q - просте число

А - примітивний корінь Q, A<Q

 

Створення пари ключів користувачем В:

- вибір випадкового числа ХВ (закритий ключ),      ХВ<Q

- знаходження числа YB (відкритий ключ),                   YBХв mod Q

 

Створення пари ключів користувачем C:

- вибір випадкового числа ХC (закритий ключ),      ХC<Q

- знаходження числа YC (відкритий ключ),                   YCХc mod Q

 

Створення загального секретного ключа користувачем В:

К=( YC) Хв mod Q

Створення загального секретного ключа користувачем С:

К=( YB) Хc mod Q

Передбачається, що існують два відомі всім числа: просте число Q і ціле A, яке є примітивним коренем Q. Припустимо, що користувачі В і С хочуть обмінятися ключем для алгоритму симетричного шифрування. Користувач В вибирає випадкове число ХВ<Q і обчислює YВ = A mod Q. Аналогічно користувач С незалежно вибирає випадкове ціле число ХС<Q і обчислює YС=A mod Q. Кожна сторона тримає значення Х в секреті і робить значення Y доступним для іншої сторони. Тепер користувач В обчислює ключ як К=(YC)Хвmod Q, і користувач С обчислює ключ як К=( YB)Хc mod Q. В результаті обидва отримають одне і те ж значення.

Таким чином, дві сторони обмінялися секретним ключем. Так як ХВ і ХC є закритими, противник може отримати тільки наступні значення: Q, A, YB і YC. Для обчислення ключа атакуючий повинен зламати дискретний логарифм, тобто обчислити ХC = ind a, q (YC).

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

Слід зауважити, що даний алгоритм уразливий для атак типу "man-in-the-middle". Якщо противник може здійснити активну атаку, тобто має можливість не тільки перехоплювати повідомлення, а й замінювати їх іншими, він може перехопити відкриті ключі учасників YB і YC, створити свою пару відкритого та закритого ключа і послати кожному з учасників свій відкритий ключ. Після цього кожен учасник обчислить ключ, який буде спільним з противником, а не з іншим учасником. Якщо немає контролю цілісності, то учасники не зможуть виявити подібну підміну.

Завдання до виконання роботи

1. Створити програмну реалізацію алгоритму обміну ключами Діффі-Хеллмана.

2. Створити приємний та зрозумілий інтерфейс для перевірки зробленої роботи.

3. Сформувати звіт в електронному вигляді.

Зміст звіту

1. Тексти розроблених програм.

2. Копії екранних форм з результатами.

3. Висновки.

Контрольні запитання

1. Для чого створені алгоритми обміну ключами?

2. Що мається на увазі під поняттям примітивного кореня простого числа?

3. Як створюються пари ключем для обох сторін?

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

5. Що таке атака типа "man-in-the-middle"?


Дата добавления: 2018-02-18; просмотров: 988; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!