
- •Інформація. Основні властивості інформації. Безпека інформації.
- •Криптографія. Історія розвитку криптографії. Класичні техніки шифрування.
- •Симетричні алгоритми кодування інформації. Міжнародні стандарти шифрування даних.
- •Алгоритми des, гост 28147-89. Порівняльна характеристика.
- •Симетричні блокові алгоритми. Алгоритми tea, rc4/5/6.
- •Режими шифрування для випадку симетричних блокових алгоритмів.
- •Надійність криптографічних систем. Криптоаналіз. Основні методи криптоаналізу. Приклади застосування.
- •Асиметричні алгоритми шифрування даних. Математичні проблеми, що лежать в основі асиметричних криптоалгоритмів. Алгоритм rsa.
- •Електронні цифрові підписи та адміністрування ключами. Обмін ключами. Алгоритм Діффі – Хеллмана. Криптосистема Ель-Гамаля.
- •Кодування інформації. Архівація. Стеганографія.
Асиметричні алгоритми шифрування даних. Математичні проблеми, що лежать в основі асиметричних криптоалгоритмів. Алгоритм rsa.
Асиметричні алгоритми шифрування — алгоритми шифрування, які використовують різні (і такі які важко обчислити один з одного) ключі для шифрування та розшифрування даних. Асиметричні криптосистеми — ефективні системи криптографічного захисту даних, які також називають криптосистемами з відкритим ключем. В таких системах для зашифровування даних використовується один ключ, а для розшифровування — інший ключ (звідси і назва — асиметричні). Перший ключ є відкритим і може бути опублікованим для використання усіма користувачами системи, які шифрують дані. Розшифровування даних за допомогою відкритого ключа неможливе. Для розшифровування даних отримувач зашифрованої інформації використовує другий ключ, який є секретним. Зрозуміло, що ключ розшифровування не може бути визначеним з ключа зашифровування. Головне досягнення асиметричного шифрування в тому, що воно дозволяє людям, що не мають існуючої домовленості про безпеку, обмінюватися секретними повідомленнями. Необхідність відправникові й одержувачеві погоджувати таємний ключ по спеціальному захищеному каналі цілком відпала. Прикладами криптосистем з відкритим ключем є Elgamal (названа на честь автора, Тахіра Ельгамаля), RSA (названа на честь винахідників: Рона Рівеста, Аді Шаміра і Леонарда Адлмана), Diffie-Hellman і DSA, Digital Signature Algorithm (винайдений Девідом Кравіцом). В основі асиметричних алгоритмів лежать:
Факторизація великих чисел.
Знаходження дискретного логарифму за модулем.
RSA (абревіатура від прізвищ Rivest, Shamir і Adleman) - криптографічний алгоритм з відкритим ключем, що грунтується на обчислювальній складності завдання факторизації великих цілих чисел. Криптосистема RSA стала першою системою, придатної і для шифрування, і для цифрового підпису. Алгоритм використовується у великому числі криптографічних додатків, включаючи PGP, S / MIME, TLS / SSL, IPSEC / IKE та інших. Безпека алгоритму RSA побудована на принципі складності факторизації. Алгоритм використовує два ключі — відкритий (public) і секретний (private), разом відкритий і відповідний йому секретний ключі утворюють пари ключів (keypair). Відкритий ключ не потрібно зберігати в таємниці, він використовується для шифрування даних. Якщо повідомлення було зашифровано відкритим ключем, то розшифрувати його можна тільки відповідним секретним ключем.
Алгоритм шифрування RSA
Для початку необхідно згенерувати відкритий і секретні ключі:
1. Візьмемо два великих простих числа p and q.
2. Визначимо n, як результат множення p on q (n = p * q).
3. Виберемо випадкове число, яке назвемо d. Це число повинне бути взаємно простим (не мати жодного спільного дільника, крім 1) з результатом множення (p-1) * (q-1).
4. Визначимо таке число е, для якого є істинним наступне співвідношення (e * d) mod ((p-1) * (q-1)) = 1.
5.Hазовем відкритим ключем числа e і n, а секретним - d і n.
Для того, щоб зашифрувати дані по відкритому ключу {e, n}, необхідно наступне:
1. розбити текст, що шифрується, на блоки, кожний з яких може бути представлений у вигляді числа M (i) = 0,1,2 ..., n-1 (тобто тільки до n-1).
2. зашифрувати текст, що розглядається як послідовність чисел M (i) за формулою C (i) = (M (I) ^ e) mod n.
Щоб розшифрувати ці дані, використовуючи секретний ключ {d, n}, необхідно виконати наступні обчислення: M (i) = (C (i) ^ d) mod n. У результаті буде отримано безліч чисел M (i), які представляють собою вихідний текст.