Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЕК. Алгоритмізація. Конспект лекцій.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.89 Mб
Скачать
    1. Шифрування за допомогою випадкових чисел

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

Отримані таким чином псевдовипадкові числа за допомогою оператора XOR застосовуються над даними. Після передачі в процесі розшифрування слід заново перегенерувати числа і повторити операцію XOR.

У такому разі система є захищеною до тих пір, доки зловмиснику невідомий алгоритм генерації чисел і початкове число.

    1. Створення таємного ключа по Діффі-Хеллману

Алгоритм Діффі-Хеллмана використовується для створення (передачі) таємного ключа для шифрування незахищеними каналами зв’язку

    1. Система rsa

Безпека алгоритму RSA побудована на принципі складності факторизації. Алгоритм використовує два ключі — відкритий (public) і секретний (private), разом відкритий і відповідний йому секретний ключі утворюють пари ключів (keypair). Відкритий ключ не потрібно зберігати в таємниці, він використовується для шифрування даних. Якщо повідомлення було зашифровано відкритим ключем, то розшифрувати його можна тільки відповідним секретним ключем.

    1. Алгоритми цифрового підпису

    1. Введення до хешування

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

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

Розрахунок контрольної суми повідомлення – окремий випадок хеш-функції.

Колізії – ситуації, коли для різних вхідних даних формуються однакові хеш-коди. Для якісної функції хешування ймовірність колізій має бути мінімальною.

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

    1. Функції хешування

Алфавітні вказівники, функції розрахунку контрольних кодів є окремими випадками функцій хешування

Поширені функції хешування: CRC, MD2, MD4, MD5, SHA, HAVAL, Whirlpool, ГОСТ Р 34.11-94, Adler-32, N-Hash, RIPEMD-160, Snefru, TTH, PJW-32…

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

Розглянемо наступний приклад хешування

Обмеження результуючого діапазону

Проблема – висока ймовірність колізій

Покращення розподілу хеш-кодів

Приклад реалізації функції на C#

    1. Хеш-таблиці

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

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

В ідеальному варіанті пошук з використанням хеш-таблиці може бути здійснений всього за один крок – для шуканого елементу розраховується хеш-код, за яким з таблиці обирається необхідний елемент, чи визначається його відсутність

Для більшості поширених алгоритмів хешування розмір хеш-таблиці має бути простим числом

Приклад реалізації функції хешування для заповнення хеш-таблиці