Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная работа № 1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
82.94 Кб
Скачать

Контрольная (домашняя) работа №1 «Защита данных с помощью ассиметричных шифров»

1.1 Цель работы: изучить, освоить и программно реализовать алгоритм шифрования RSA

1.2 Теоретическое введение

Сис­те­мы с от­кры­тым клю­чом (СОК). Алгоритм RSA

Рассмотрим системы с от­кры­тым клю­чом. Суть их со­сто­ит в том, что ка­ж­дым ад­ре­са­том ИС ге­не­ри­ру­ют­ся два клю­ча, свя­зан­ные ме­ж­ду со­бой по оп­ре­де­лен­но­му пра­ви­лу. Один ключ объ­яв­ля­ет­ся от­кры­тым, а дру­гой за­кры­тым. От­кры­тый ключ пуб­ли­ку­ет­ся и дос­ту­пен лю­бо­му, кто же­ла­ет по­слать со­об­ще­ние ад­ре­са­ту. Секретный ключ сохраняется в тайне. Ис­ход­ный текст шиф­ру­ет­ся от­кры­тым клю­чом адресата и пе­ре­да­ет­ся ему. За­шиф­ро­ван­ный текст в прин­ци­пе не мо­жет быть рас­шиф­ро­ван тем же от­кры­тым клю­чом. Де­шиф­ро­ва­ние со­об­ще­ние воз­мож­но толь­ко с ис­поль­зо­ва­ни­ем за­кры­то­го клю­ча, ко­то­рый из­вес­тен толь­ко са­мо­му ад­ре­са­ту. Крип­то­гра­фи­че­ские сис­те­мы с от­кры­тым клю­чом ис­поль­зу­ют так называемые не­об­ра­ти­мые или од­но­сто­рон­ние функ­ции, ко­то­рые об­ла­да­ют сле­дую­щим свой­ст­вом: при за­дан­ном зна­че­нии x от­но­си­тель­но про­сто вы­чис­лить зна­че­ние f(x), од­на­ко ес­ли y=f(x), то нет про­сто­го пу­ти для вы­чис­ле­ния зна­че­ния x. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить обратное значение, используя современные вычислительные средства за обозримый интервал времени.

Ал­го­ритм RSA

Криптосистема RSA, разработанная в 1977 году и по­лу­чив­шая на­зва­ние в честь ее соз­да­те­лей: Рона Ри­ве­ста (Rivest), Ади Ша­ми­ра (Shamir) и Леонарда Эй­дель­ма­на (Adleman). В его основу положен тот фак­т, что на­хо­ж­де­ние боль­ших про­стых чи­сел в вы­чис­ли­тель­ном от­но­ше­нии осу­ще­ст­в­ля­ет­ся лег­ко, но раз­ло­же­ние на мно­жи­те­ли про­из­ве­де­ния двух та­ких чи­сел прак­ти­че­ски не­вы­пол­ни­мо. До­ка­за­но (тео­ре­ма Ра­би­на), что рас­кры­тие шиф­ра RSA эк­ви­ва­лент­но та­ко­му раз­ло­же­нию. По­это­му для лю­бой дли­ны клю­ча мож­но дать ниж­нюю оцен­ку чис­ла опе­ра­ций для рас­кры­тия шиф­ра. В настоящее время алгоритм RSA используется во многих стандартах, среди которых SSL, S-HHTP, S-MIME, S/WAN, STT и PCT.

Рас­смот­рим ма­те­ма­ти­че­ские ре­зуль­та­ты, по­ло­жен­ные в ос­но­ву это­го ал­го­рит­ма.

Теорема 1. (Малая теорема Ферма.)

Если р - простое число, то xp-1 = 1 (mod p) (1) для любого х, простого относительно р, и xp = х (mod p) (2) для любого х.

Доказательство. Достаточно доказать справедливость уравнений (1) и (2) для хZp. Проведем доказательство методом индукции.

Очевидно, что уравнение (2) выполняется при х=0 и 1. Далее xp=(x-1+1)p=  C(p,j)(x-1)j=(x-1)p+1 (mod p), 0jp, так как C(p,j)=0(mod p) при 0<j<p. С учетом этого неравенства и предложений метода доказательства по индукции теорема доказана.

Определение. Функцией Эйлера (n) называется число положительных целых, меньших n и простых относительно n.

N

2

3

4

5

6

7

8

9

10

11

12

(n)

1

2

2

3

2

6

4

6

4

10

4

Теорема 2. Если n=pq, (p и q – отличные друг от друга простые числа), то (n)=(p-1)(q-1).

Теорема 3. Если n=pq, (p и q – отличные друг от друга простые числа) и х - простое относительно р и q, то x(n) = 1 (mod n).

Следствие. Если n=pq, (p и q – отличные друг от друга простые числа) и е простое относительно (n), то отображение Еe,n: xxe (mod n) является взаимно однозначным на Zn.

Очевиден и тот факт, что если е – простое относительно (n), то существует целое d, такое,

ed = 1 (mod (n)) (3) (3)

В криптосистеме RSA открытый ключ e, секретный ключ d, сообщение M и криптограмма C принадлежат множеству целых чисел: ZN={0, 1, 2, …, N-1}, где N – модуль: N=P*Q. Здесь P и Q – случайные большие простые числа.

В качестве открытого ключа e выбирают число, взаимно простое с (N) так, чтобы выполнялось условие

1 < e  (N) (4)

Далее с помощью формулы (3) вычисляется закрытый (секретный) ключ d.

Открытый ключ e используют для шифрования данных, закрытый ключ d – для расшифрования.

Шифрование определяет криптограмму C в соответствии со следующей формулой:

C=Me (mod N) (5)

Обращение этой функции, т.е. определение значения M по известным значениям C, e и N, практически не осуществимо при N2512.

Однако, обратную задачу, т.е. задачу расшифрования криптограммы C, можно решить по следующей формуле:

M=Cd (mod N) (6)

Такой результат следует из приведенных выше теорем и формулы (3).

{e,N} образует открытый ключ, а {d,N} – закрытый (хотя можно взять и наоборот).

Получатель, который создает криптосистему, защищает два параметра: закрытый ключ d, пару чисел (P,Q), произведение которых дает значение модуля N. С другой стороны, получатель открывает значение модуля N и открытый ключ e.

Описание последовательности действий алгоритма RSA.

Предположим, что пользователь А хочет передать пользователю В сообщение в зашифрованном виде, используя криптосистему RSA. В таком случае пользователь А выступает в роли отправителя сообщения, а пользователь В – в роли получателя. Рассмотрим последовательность действий пользователя В и пользователя А.

  1. Пользователь В выбирает два произвольных больших простых числа P и Q.

  2. Пользователь В вычисляет значение модуля N=P*Q.

  3. Пользователь В вычисляет функцию Эйлера (N) и выбирает случайным образом значение открытого ключа е, взаимно простого с (N), с учетом условия (4).

  4. Пользователь В вычисляет значение секретного ключа d, используя формулу (3).

  5. Пользователь В пересылает пользователю А пару чисел (е,N) по незащищенному каналу.

  6. Если пользователь А хочет передать пользователю В сообщение М, он выполняет следующие шаги.

  7. Пользователь А разбивает исходный открытый текст М на блоки, каждый из которых может быть представлен в виде числа Mi = 0, 1, …, N–1.

  8. Пользователь А шифрует текст, представленный в виде последовательности чисел Mi по формуле Ci=Mie (mod N) и отправляет криптограмму {Ci} пользователю В (где mod – сложение по модулю 2).

  9. Пользователь В расшифровывает принятую криптограмму {Ci}, используя закрытый ключ d по формуле Mi=Cid (mod N) (где mod – сложение по модулю 2).

В результате будет получена последовательность чисел {Mi}, которые представляют собой исходное сообщение М. Чтобы алгоритм RSA имел практическую ценность, необходимо иметь возможность без существенных затрат генерировать большие простые числа, уметь оперативно вычислять значения ключей e и d.