
- •6.050103 – Програмна інженерія
- •1.2.2 Перетворення мережею Фейстеля
- •1.2.3 Алгоритм des
- •1.3Завдання до виконання роботи
- •1.5Контрольні запитання та завдання
- •2Програмна реалізація шифрування даних за допомогою несиметричного криптоалгоритму rsa
- •3Мета роботи
- •4Теоретичні відомості
- •Алгоритм створення відкритого і секретного ключів
- •Шифрування і розшифрування
- •Алгоритм обміну ключами Діффі-Хеллмана
- •4.2.1 Еліптичні криві над простим полем
- •4.2.2 Правила додавання, подвоєння і скалярного множення для еліптичних кривих над простим полем
- •4.2.3 Алгоритм асиметричного шифрування на базі еліптичних кривих eces
- •12.1Завдання до виконання роботи
- •12.2Контрольні запитання та завдання
- •13Створення програмного засобу для цифрового підпису інформації з використанням стандартів гост 34.10 та dss
- •14Мета роботи
- •15Теоретичні відомості
- •5.2.1 Стандарт цифрового підпису dss
- •5.2.2 Стандарт цифрового підпису гост 34.10
- •16Завдання до виконання роботи
- •18Контрольні запитання та завдання
- •Перелік посилань
1.3Завдання до виконання роботи
Створити програмну реалізацію алгоритму шифрування DES (без використання готових функцій).
Зробити перевірку на виключення слабких ключів.
Створити приємний і зрозумілий інтерфейс для перевірки зробленої роботи.
Сформувати звіт в електронному вигляді.
1.4Зміст звіту
1. Тексти розроблених програм.
2. Копії екранних форм з результатами.
3. Висновки.
1.5Контрольні запитання та завдання
Які криптографічні шифри називають симетричними?
Зобразіть схематично роботу алгоритму DES.
Що розуміється під поняттям блоковий шифр?
Що являє собою мережа Фейстеля?
Назвіть головні параметри шифру DES (довжина блоків, довжина ключа, кількість раундів роботи мережі Фейстеля).
Як генеруються ключі в раундах?
Які перестановки існують у даному алгоритмі?
Що являють собою S-блоки?
Які ви знаєте слабкі ключі?
Як проходить розшифрування за алгоритмом DES?
2Програмна реалізація шифрування даних за допомогою несиметричного криптоалгоритму rsa
3Мета роботи
Засвоїти методику роботи асиметричних алгоритмів шифрування. Реалізувати програмно (будь-якою мовою програмування) роботу алгоритму RSA.
4Теоретичні відомості
В основу криптографічної системи з відкритим ключем RSA покладена задача множення і розкладання складних чисел на прості співмножники, яка є обчислювально односпрямованим завданням [2, 168-210].
У криптографічної системи з відкритим ключем кожен учасник має як відкритий ключ (англ. public key), так і закритий ключ (англ. private key). Кожен ключ – це частина інформації. У системі RSA кожен ключ складається з пари цілих чисел. Кожен учасник створює свій відкритий і закритий ключ самостійно. Закритий ключ кожен з них тримає в секреті, а відкриті ключі можна повідомляти кому завгодно або навіть публікувати їх. Відкритий і закритий ключі кожного учасника обміну повідомленнями утворюють «узгоджену пару» в тому сенсі, що вони є взаємно зворотними.
Алгоритм створення відкритого і секретного ключів
RSA-ключі генеруються так:
Обираються два випадкових простих числа P і Q заданого розміру (наприклад, 1024 біта кожне).
Обчислюється їх добуток N = P*Q, який називається модулем.
Обчислюється значення функції Ейлера від числа N:
φ(N) = (P-1)(Q-1).
Обирається ціле число Е (1<Е<φ(N)), взаємно просте зі значенням функції. Зазвичай як Е беруть прості числа, які містять невелику кількість одиничних бітів у двійковому записі, наприклад, прості числа Ферма 17, 257 або 65 537.
Обчислюється число D, мультиплікативно зворотне до числа E за модулем, тобто число, що задовольняє умові:
D*E ≡ 1 (mod φ(N))
або:
D*E = 1+k*φ(N),
де k – деяке ціле число.
Пара P = (E, N) публікується як відкритий ключ RSA.
Пара S = (D, N) відіграє роль секретного ключа RSA і тримається в секреті.
Шифрування і розшифрування
Щоб зашифрувати повідомлення за відкритими даними (E і N), необхідно розбити текст, що шифруватимемо, на блоки, кожен з яких може бути поданий у вигляді числа Mi, (i=1…n-1); зашифрувати текст, що розглядається як послідовність чисел Mi за формулою:
Ci = Mi E (mod N).
Щоб розшифрувати повідомлення, необхідно виконати такі обчислення, використовуючи секретний ключ:
Mi = Ci D (mod N).
5Завдання до виконання роботи
6Створити програмну реалізацію алгоритму шифрування RSA.
7Створити приємний і зрозумілий інтерфейс для перевірки зробленої роботи.
8Сформувати звіт в електронному вигляді.
9Зміст звіту
1. Тексти розроблених програм.
2. Копії екранних форм з результатами.
3. Висновки.
10Контрольні запитання
Які криптографічні шифри називають несиметричними?
На якій складній задачі засновано алгоритм RSA?
Як генеруються відкритий та секретний ключі?
Як проходить шифрування та розшифрування за алгоритмом RSA?
Які є недоліки у алгоритмів з відкритим ключем?
Що розуміється під поняттям незворотної функції?
11Алгоритм обмІнУ ключаМИ ДІффІ-Хеллмана
11.1Мета роботи
Засвоїти спосіб безпечного обміну ключами каналом зв'язку, які в подальшому можуть бути використані в якомусь алгоритмі шифрування. Реалізувати програмно (будь-якою мовою програмування) роботу алгоритму ДІффІ-Хеллмана [5].
11.2Теоретичні відомості
Сам алгоритм Діффі-Хеллмана може застосовуватися тільки для обміну ключами.
Алгоритм
заснований на труднощі обчислень
дискретних логарифмів. Дискретний
логарифм визначається так. Вводиться
поняття примітивного кореня простого
числа 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).