- •Введение
- •Задание № 1 Задача 1. Несимметричное шифрование – дешифрование.
- •Методические указания к решению задания 1.1
- •Задача 2. Хеширование и цифровая подпись документов.
- •Задание №2 Задача 1. Система с открытым ключом Диффи-Хелмана
- •Задача 2. Шифрование по алгоритму Шамира
- •Задача 3. Шифрование по алгоритму Эль- Гамаля
- •Т а б л и ц а 5.1 – Ключи пользователей в системе Эль – Гамаля
- •Заключение
- •Список литературы:
Задание №2 Задача 1. Система с открытым ключом Диффи-Хелмана
Сгенерировать секретные ключи для пяти абонентов по методу Диффи-Хеллмана (DH). Для этого взять значение секретного ключа x из таблицы 1. Соответствующие значения открытого ключа вычислить и результаты внести в таблицу. Вариант задания определяется по номеру i (предпоследняя цифра) и j (последняя цифра зачетной книжки)– требуемая для реализации этого алгоритма число x . Число j – начальный номер для второго абонента при выборе числа x. Для выбора x для связи с пятью абонентами необходимо по циклической процедуре выбрать x по последней цифре зачетки.
Значения согласно варианту:
I |
j |
29 |
39 |
Xa=39
Xb=41
Xc=7
Xd=11
Xe=13
Число р выбирается таким, чтобы выполнялось равенство
р=2q+1 (где q- также простое число)
и были справедливы неравенства
1 < g < р - 1 и gq mod р 1.
Так как g=29, пусть q=1783, тогда p=3567.
Проверим выполнение условий данных в методических указаниях:
1<g<p-1 и gqmodp≠1
1<29<3566 и 291783 mod 3567=1769≠1
Решение:
Вычислим открытые числа Y для пяти абонентов по следующей формуле:
Ya = gXa mod р =2939mod 3567 = 1247
Yb = gXb mod р =2941mod 3567 = 29
Yc = gXc mod р = 297mod 3567 = 3422
Yd = gXd mod р= 2911mod 3567 = 2639
Ye = gXe mod р = 2913mod 3567 = 725
Таблица1.3 Ключи пользователей в системе Диффи-Хеллмана
Абонент |
Секретный ключ |
Открытый ключ |
A |
39 |
1247 |
B |
41 |
29 |
C |
7 |
3422 |
D |
11 |
2639 |
E |
13 |
725 |
Приведем пример работы алгоритма Диффи-Хеллмана. Покажем как абонент A и B смогут вычислить секретные ключи, благодаря открытым числам Ya и Yb. Вычислим следующие величины:
ZAB = (YB)XAmodp = (29)39 mod 3567 = 1247
ZBA = (YA)XBmodp = (1247)41 mod 3567 =1247
Z = Zab=Zва
Таким образом, любая пара абонентов может вычислить свой секретный ключ, который в нашем примере является Z.
Задача 2. Шифрование по алгоритму Шамира
Зашифровать сообщение по алгоритму Шамира для трех абонентов, взяв значение сообщения m и значение p из таблицы 2. По номеру i (предпоследняя цифра) студент выбирает сообщение для зашифровывания, по j – требуемые для реализации этого алгоритма число р. Выбор данных для других абонентов произвести циклически согласно процедуре (i + 1) и g .
Таблица 2 Исходные данные для выбора сообщений (m) и p=53
I |
5 |
6 |
7 |
Сообщение |
22 |
24 |
26 |
J |
8 |
9 |
0 |
p |
53 |
57 |
29 |
Решение:
Перейдем к описанию системы. Пусть есть два абонента А и В, соединенные линией связи. А хочет передать сообщение m абоненту Б так, чтобы никто не узнал его содержание. А выбирает случайное большое простое число р и открыто передает его В. Затем А выбирает два числа сА и dA , такие, что
сАdA mod (р - 1) = 1. (2.1)
Эти числа А держит в секрете и передавать не будет. В тоже выбирает два числа св dв, такие, что
св<dв mod (p - 1) = 1, (2.2)
и держит их в секрете.
После этого А передает свое сообщение m, используя трехступенчатый протокол. Если m < р (m рассматривается как число), то сообщение т передается сразу , если же т р, то сообщение представляется в виде m1, m2,..., mt, где все mi < р, и затем передаются последовательно m1, m2,..., mt. При этом для кодирования каждого mi лучше выбирать случайно новые пары (cA,dA) и (cB,dB) — в противном случае надежность системы понижается. В настоящее время такой шифр, как правило, используется для передачи чисел, например, секретных ключей, значения которых меньше р. Таким образом, мы будем рассматривать только случай m < р.
Описание протокола.
Шаг 1. А вычисляет число: Х1 =mСА modp (2.3), где m — исходное сообщение, и пересылает х1 к В.
Шаг 2. В, получив х1, вычисляет число: X2 = х1CB mod p (2.4),
и передает х2 к А.
Шаг 3. А вычисляет число: X3 = х2dA mod p (2.5),
и передает его В.
Шаг 4. В, получив х3, вычисляет число X4 = x3dB mod p (2.6).
Утверждение (свойства протокола Шамира).
1) х4 = m, т.е. в результате реализации протокола от А к В действительно передается исходное сообщение;
2) злоумышленник не может, узнать, какое сообщение было передано.
Доказательство. Вначале заметим, что любое целое число е 0 может быть представлено в виде е = k(р-1)+r, где r = е mod (p-1). Поэтому на основании теоремы Ферма: (2.7).
Справедливость первого пункта утверждения вытекает из следующей цепочки равенств:
(предпоследнее равенство следует из (2.7), а последнее выполняется в силу (2.1) и (2.2)).
Доказательство второго пункта утверждения основано на предположении, что для злоумышленника, пытающегося определить m, не существует стратегии более эффективной, чем следующая. Вначале он вычисляет CB из (2.4), затем находит dB и, наконец, вычисляет Х4 = m по (2.6). Но для осуществления этой стратегии злоумышленник должен решить задачу дискретного логарифмирования (2.4), что практически невозможно при больших р.
Опишем метод нахождения пар cA,dA и сB,dB, удовлетворяющих (2.1) и (2.2). Достаточно описать только действия для абонента А. так как действия для В совершенно аналогичны. Число сA выбираем случайно так, чтобы оно было взаимно простым с р-1 (поиск целесообразно вести среди нечетных чисел, так как р - 1 четно), Затем вычисляем dA с помощью обобщенного алгоритма Евклида.
Теорема Пусть a и b – два целых положительных числа. Тогда существуют целые (не обязательно положительные) числа x и y, такие, что
ax + by = gcd(a, b). (1)
Обобщенный алгоритм Евклида служит для отыскания gcd(a,b) и x,y, удовлетворяющих (1). Введем три строки U=(u1, u2, u3), V=(v1, v2, v3) и Т=(t1, t2, t3). Тогда алгоритм записывается следующим образом.
Решение:
Пусть А хочет передать В сообщение m = 22. А выбирает р = 53,
сАdA mod (р - 1) = 1.
сА = 101 , dA = 173.
Аналогично, В выбирает параметры
свdв mod (p - 1) = 1
cB = 127 и dB = 199 . Переходим к протоколу Шамира.
Шаг 1. x1 = 22101mod 53 =21.
Шаг 2. х2 = 21127 mod 53 = 19.
ШагЗ. x3= 19173 mod 53 = 32.
Шаг 4. х4 = 32199 mod 53 = 22.
Таким образом, В получил передаваемое сообщение m = 22.
Пусть B хочет передать C сообщение m = 24. B выбирает р = 57,
СBdB mod (р - 1) = 1.
СB =13, dB = 13.
Аналогично. C выбирает параметры
Сcdc mod (p - 1) = 1
Cc = 101 и dc = 173. Переходим к протоколу Шамира.
Шаг 1. x1 = 2413mod 57 = 36.
Шаг 2. х2 = 36101 mod 57 = 42.
ШагЗ. x3= 4213 mod 57 = 9.
Шаг 4. х4 = 9173 mod 57 =24.
Таким образом, C получил передаваемое сообщение m = 24.
Пусть С хочет передать A сообщение m = 26. C выбирает р = 29,
СRdR mod (р - 1) = 1.
СR = 3, dR = 19.
Аналогично. В выбирает параметры
СAdA mod (p - 1) = 1
CA = 3 и dA = 47. Переходим к протоколу Шамира.
Шаг 1. x1 = 263mod29 = 2.
Шаг 2. х2 = 23 mod 29 = 8
ШагЗ. x3= 819 mod 29 = 2.
Шаг 4. х4 = 247 mod 29 = 26.
Таким образом, A получил передаваемое сообщение m = 26.