- •Індивідуальне завдання
- •Анотація
- •Розробка криптопротоколу
- •Узагальнений опис криптопротоколу
- •Алгоритм блокового шифрування rc6
- •Алгоритм формування підключів
- •Алгоритм зашифрування даних
- •Розробка детального алгоритму реалізації криптопротоколу
- •Аналіз криптопротоколу
- •Постулати і правила ban-логіки
- •Аналіз криптопротоколу з використанням ban-логіки
- •РoЗробка структури спеціалізованого процесора
- •Визначення набору функцій, що реалізує спеціалізований процесор
- •Розробка структурної схеми спеціалізованого процесора
- •Визначення технічних характеристик спеціалізованого процесора
- •Розробка програми
- •Розробка структури програми
- •Результати тестування програми
- •Висновки
- •Список використаних джерел
- •Функція зашифрування
- •Функція розшифрування
- •Функція зняття мітки часу
-
Розробка криптопротоколу
-
Узагальнений опис криптопротоколу
-
Розглянемо протокол односторонньої автентифікації з мітками часу та боковим шифром RC6.
Для представлення протоколу введемо наступні позначення:
А, В – суб’єкти, що встановлюють зв’язок;
, – мітки часу сторін А та В відповідно;
– функція шифрування.
Для роботи протоколу необхідне виконання умови, згідно до яких ідентифікатори сторін А і В відомі обом учасникам криптопротоколу.
Ініціатором встановлення зв’язку будемо вважати суб’єкта А. Процес автентифікації починається з формування стороною А своєї мітки часу .
Суб’єкт А виконує зашифрування мітки часу і ідентифікатора сторони В блоковим шифром та надсилає стороні В наступне повідомлення:
A→B (, IВ).
Суб’єкт В розшифровує отримане повідомлення та порівнює отримані значення мітки часу сторони А і власної мітки часу та власного ідентифікатора з його реальним значенням. На підставі цього порівняння суб’єкт може зробити висновки щодо результатів проведення автентифікації.
Отже процес автентифікації потребує двох кроків, а саме зашифрування та розшифрування даних.
-
Алгоритм блокового шифрування rc6
Алгоритм симетричного блокового шифрування RC6 - це параметризований алгоритм, побудований згідно з модифікованою схемою Фей стеля [2]. Коректно його позначають як RC6 – //, де - довжина півблока в бітах; - кількість раундів; - довжина ключа шифрування в байтах. Розглянемо варіант алгоритму для . В описі алгоритму використані такі позначення:
+ – додавання за модулем ;
– – віднімання за модулем ;
– побітове додавання за модулем та ;
– множення за модулем ;
– циклічний зсув ліворуч – бітового на кількість бітів, задану молодшими бітами .
-
Алгоритм формування підключів
Якщо довжина -байтового ключа шифрування не ділиться на без остачі, то ключ шифрування доповнюють нулями так, щоб ця умова виконувалася. Ключ шифрування записують у масив 32-бітових слів . Для раундів формують -бітових підключів, які записують у масив . Також використовують дві константи: та .
На вхід подається -байтовий ключ, записаний у масиві 32-бітових слів , з кількість раундів .
На виході отримуємо масив із 32-бітових раундових підключів . Алгоритм формування підключів складається з наступних кроків:
-
;
-
для ;
-
;
-
для
-
;
-
вихід.
В алгоритмі RC6 використовують попередньо обчислені раундові підключі й один блок відкритого тексту, який записують у чотири 32-бітові регістри А, В, С, D. Блок шифротексту записують на те саме місце.
-
Алгоритм зашифрування даних
На вхід подається відкритий тест у чотирьох 32-бітових регістрах А, В, С, D, кількість раундів , масив із 32-бітових підключів .
На виході отримуємо шифротекст у чотирьох 32-бітових регістрах А, В, С, D. Алгоритм зашифрування даних складається з наступних кроків (рис. 1):
-
;
-
;
-
для
-
;
-
;
-
;
-
вихід.
Рисунок 1 – Алгоритм зашифрування даних RC6
-
Розробка детального алгоритму реалізації криптопротоколу
Розглянемо детально реалізацію протоколу односторонньої автентифікації з використанням мітки часу і блокового шифру RC6. Для цього необхідно мати на увазі, що при отриманні одним суб’єктом зашифрованого повідомлення, він має виконати операцію розшифрування повідомлення та після цього виконати необхідні перевірки.
Суб’єкт A формує власну мітку часу . Суб’єкт A, використовуючи власну мітку часу, а також ідентифікатор сторони B створює відкрите повідомлення M. Після цього, використовуючи алгоритм блокового шифрування RC6 та спільний секретний ключ k він зашифровує повідомлення M та отримує закрите повідомлення C, яке він відсилає суб’єкту B:
A М=(tА, B);
C=(М);
A→B C.
Суб’єкт В після отримання цього повідомлення виконує операцію розшифрування, використовуючи для цього той самий спільний секретний ключ k. Після розшифрування суб’єкт В отримує два 64-бітних числа, одне з яких має бути його власним ідентифікатором, а інше – міткою часу сторони А.
B М=(, IВ)= (C).
Отримавши ці дані суб’єкт В розраховує різницю між своєю міткою часу і міткою часу сторони А.
B .
Якщо не більше часу для зашифрування, передачі та розшифрування, то суб’єкт В формує позитивний результат виконання процесу автентифікації. У протилежному випадку автентифікація вважається завершеною помилково.
Отже при реалізації криптопротоколу потрібно виконати одне зашифрування та одне розшифрування даних.