Лабораторна работа № 2. ПРОГРАМНА РЕАЛІЗАЦІЯ ШИФРУВАННЯ ДАНИХ ЗА ДОПОМОГОЮ НЕСИМЕТРИЧНОГО КРИПТОАЛГОРИТМУ RSA



Мета роботи

Освоїти методику роботи асиметричних алгоритмів шифрування. Реалізувати програмно (на будь-якій мові програмування) роботу алгоритму RSA.

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

В основу криптографічної системи з відкритим ключем RSA покладена задача множення і розкладання складних чисел на прості співмножники, яка є обчислювально односпрямованим завданням [2, 168-210].

У криптографічної системи з відкритим ключем кожен учасник має як відкритий ключ (англ. public key), так і закритий ключ (англ. private key). Кожен ключ - це частина інформації. У системі RSA кожен ключ складається з пари цілих чисел. Кожен учасник створює свій відкритий і закритий ключ самостійно. Закритий ключ кожен з них тримає в секреті, а відкриті ключі можна повідомляти кому завгодно або навіть публікувати їх. Відкритий і закритий ключі кожного учасника обміну повідомленнями утворюють «узгоджену пару» в тому сенсі, що вони є взаємно зворотними.

Алгоритм створення відкритого і секретного ключів

RSA-ключі генеруються наступним чином:

1. Обираються два випадкових простих числа P и Q заданого розміру (наприклад, 1024 біта кожне).

2. Обчислюється їх добуток N = P*Q, який називається модулем.

3. Обчислюється значення функції Ейлера від числа N:

 

φ(N) = (P-1)(Q-1)

 

4. Обирається ціле число Е (1<Е<φ(N)), взаємно просте зі значенням функції. Зазвичай в якості Е беруть прості числа, які містять невелику кількість одиничних бітів в двійковому запису, наприклад, прості числа Ферма 17, 257 або 65 537.

5. Обчислюється число 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)

 

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

1.5 Створити програмну реалізацію алгоритму* шифрування RSA.

* завдання узгодити з викладачем лабораторних робіт

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

Реалізувати функції кодування для web-интерфейсу, які (1) сформують ключі для відправлення даних на сервер, (2) відправлять дані та отримають відповідь.

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

Зміст звіту

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

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

3. Висновки.

 

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

1. Які криптографічні шифри називають несиметричними?

2. На якій складній задачі засновано алгоритм RSA?

3. Як генеруються відкритий та секретний ключі?

4. Як проходить шифрування та розшифрування по алгоритму RSA?

5. Які є недоліки у алгоритмів з відкритим ключем?

6. Що мається на увазі під поняттям незворотної функції?

Лабораторна работа № 3. ПРОГРАМНА РЕАЛІЗАЦІЯ ХЕШ-Функцій

Мета роботи

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

Порядок роботи

Последовательно, в течение отведенного расписанием занятий времени, отработать следующие вопросы:

- изучить теоретический материал;

- выполнить упражнения из практической части работы для своего варианта;

- оформить отчет по лабораторной работе и защитить его.

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

1.3.1. Понятие Хеш-функции

Хеш-функция – это вычислительно эффективная функция, отображающая двоичную строку произвольной длины l в двоичную строку некоторой фиксированной длины m (обычно m<<l), называемую сверткой (хеш-значением, дайджестом).

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

Криптографическая хеш-функция называется ключевой, если значение свертки зависит не только от хешируемого сообщения, но и от секретного ключа. Значение ключевой хеш-функции обычно называется кодом аутентификации (MAC - Message Autentification Code) или имитовставкой.

1.3.2. Криптографические хеш-функции на основе симметричных блочных алгоритмов

Криптографическую хеш-функцию можно построить, используя симметричный блочный алгоритм. Наиболее очевидный подход состоит в том, чтобы шифровать сообщение M посредством блочного алгоритма в режиме CBC или CFB с помощью фиксированного ключа и некоторого вектора инициализации V. Последний блок шифртекста можно рассматривать в качестве хеш-значения сообщения M. При таком подходе не всегда возможно построить безопасную однонаправленную хеш-функцию, но всегда можно получить код аутентификации сообщения MAC.

Более безопасный вариант хеш-функции можно получить, используя блок сообщения в качестве ключа, предыдущее хеш-значение – в качестве входа, а текущее хеш-значение – в качестве выхода. Реальные хеш-функции проектируются еще более сложными. Длина блока обычно определяется длиной ключа, а длина хеш-значения совпадает с длиной блока. Поскольку большинство блочных алгоритмов являются 64-битовыми, некоторые схемы хеширования проектируют так, чтобы хеш-значение имело длину, равную двойной длине блока.

Если принять, что получаемая хеш-функция корректна, безопасность схемы хеширования базируется на безопасности лежащего в ее основе блочного алгоритма. Схема хеширования, у которой длина хеш-значения равна длине блока, показана на рисунке 1. Ее работа описывается выражениями:

H0 = IH,

Hi = EA(B) Å C,

где IH – некоторое случайное начальное значение; A, B и C могут принимать значения Mi, Hi–1, (Mi Å Hi–1) или быть константами.

Рисунок 1 - Обобщенная схема формирования хеш-функции

Сообщение M разбивается на блоки Mi принятой длины, которые обрабатываются поочередно.

Три различные переменные A, B и C могут принимать одно из четырех возможных значений, поэтому в принципе можно получить 64 варианта общей схемы этого типа.

1.3.3. Проблема контроля целостности

Целостность – это свойство информации, заключающееся в ее существовании в неискаженном виде (неизменном по отношению к некоторому фиксированному ее состоянию).

Каким способом можно обеспечить целостность информации? Можно, конечно же, поступить очень просто, записав эту информацию на некоторый физически неизменяемый носитель (например, CD-R). Но решит ли это проблему? Носитель может быть подменен, и, значит, мы просто подменим проблему обеспечения целостности информации проблемой обеспечения целостности носителя. Более того, в большинстве случаев информация, для которой должно быть соблюдена целостность, хранится на сетевых дисках, должна быть общедоступной и открытой для изменения пользователем, имеющем соответствующие права.

Криптография предоставляет универсальное средство контроля целостности сообщений – хеш-функции.

Хеш-функции могут быть использованы для обеспечения целостности данных следующим образом. В определенный момент времени вычисляется свертка h(M), соответствующая конкретным входным данным M. Будем называть h(M) эталонным хеш-значением. При помощи организационных и/или инженерно-технических мер обеспечивается целостность h(M). В дальнейшем для контроля целостности M вычисляется свертка проверяемой информации M’ – h(M’) и сравнивается с эталонным хеш-значением h(M). Если h(M) = h(M’), информация целостна, иначе целостность нарушена. Конкретным применением такой технологии является контроль целостности программного обеспечения.

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

Следует отметить, что контроль целостности с помощью криптографических хеш-функций по определению не является абсолютно достоверным, однако может быть выполнен с требуемой точностью.


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

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






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