Протоколы информационного обмена
.pdfПереводит числовое значение открытого текста M1 в строковое
значение. Для этого нужно воспользоваться формой «Перевод числа в строку» специализированного вычислителя. В поле «Число» указать значение 1953550 и нажать кнопку «Перевести». Результат появится в правой части экрана:
1953550 => оа
Строковое представление M1 = «oa» является бессмысленным
набором символов.
Следовательно, 1-й абонент не является автором сообщения, так как именно его открытый ключ использовался в процессе вычислений.
Повторяет процедуру получения исходного текста с применением открытого ключа 3-го абонента (злоумышленника) в процессе вычислений.
Снимает подпись с криптограммы C23 с использованием открытого ключа 3-го абонента и получает криптограмму:
C22 =C23e3 modn3
C22 = 1149353 953 mod 2566873 C22 = 1340734
Расшифровывает криптограмму C22 с применением своего секретного ключа d2 и получает числовое представление открытого текста:
M 2 =C22(d2 ) mod n2
M 2 = 1340734 1428929 mod 2199473
M 2 = 201119
Переводит числовое значение открытого текста M 2 в строковое значение:
201119 => РИС
Строковое представление M 2 является осмысленным словом.
Следовательно, именно 3-й абонент (злоумышленник) является автором сообщения, так как именно его открытый ключ использовался в процессе вычислений.
Очевидно, что полученный вывод относительно авторства исходного сообщения «РИС» является ошибочным. Таким образом,
99
рассмотренный протокол является несостоятельным, поскольку вводит 2-го абонента в заблуждение и позволяет злоумышленнику выдать себя за автора сообщения.
РАБОТА 6 Типовой пример протокола Диффи-Хеллмана
на эллиптической кривой с атакой «посередине»
Участники информационного обмена
•Абонент А
•Абонент B
•Злоумышленник C
Протокол
Участники информационного обмена используют общую эллиптическую кривую E: y 2 = x3 + x + 4 , определенную над полем
Галуа GF(23). Ранг кривой N = 29. В качестве общей точки выбрана точка Q(11, 9).
1.Абонент А
Выбирает секретное значение ka = 17.
Вычисляет значение KA = kaQ = 17*(11,9) = (15,17).
Посылает точку KA абоненту B.
2.Абонент B
Выбирает секретное значение kb = 13.
Вычисляет значение KB = kbQ = 13*(11,9) = (22,5).
Посылает точку KB абоненту A.
3.Злоумышленник C
Выбирает секретное значение kc = 5.
Перехватывает и блокирует дальнейшее продвижение значений
KA и KB.
Вычисляет общий с абонентом A секрет – точку KAC(xac, yac):
KAC(xac, yac) = kcKA = 5*(15,17) = (9,12)
xac = 9
Вычисляет общий с абонентом B секрет – точку KBC(xbc, ybc):
KBC(xbc, ybc) = kcKB = 5*(22,5) = (14,18) xbc = 14
Вычисляет значение KC = kcQ = 5*(11,9) = (18,14).
Посылает точку KC абонентам A и B.
4.Абонент А
100
Вычисляет общий со злоумышленником C секрет – точку
KAC(xac, yac):
KAC(xac, yac) = kaKC=17*(18,14) = (9,12)
xac = 9
5.Абонент B
Вычисляет общий со злоумышленником C секрет – точку
KBC(xbc, ybc):
KBC(xbc, ybc) = kbKC= 13*(18,14) = (14,18) xbc = 14
6.Абонент А
Выбирает точку Pm(1, 12) на эллиптической кривой, соответствующую некоторому сообщению m.
Зашифровывает точку Pm и получает криптограмму:
СAC = xacPm = 9*(1,12) = (15,6)
Посылает криптограмму CAC абоненту B.
7.Злоумышленник C
Перехватывает и блокирует дальнейшее прохождение криптограммы CAC.
Вычисляет число xac* , такое, что
xac xac* ≡1mod N
9 xac* ≡1mod 29
xac* =13
Дешифрует криптограмму CAC и узнает точку Pm, соответствующую секретному сообщению m:
Pm = xac* CCA =13 (15,6) = (1,12)
Перешифровывает точку Pm на секретном ключе xbc:
СBC=xbcPm= 14*(1,12) = (13,11)
Отправляет криптограмму абоненту B.
8.Абонент B
Вычисляет число xbc* , такое, что
xbc xbc* ≡1mod N
14 xbc* ≡1mod 29
x ac* = 27
Расшифровывает криптограмму CBC и узнает точку Pm, соответствующую секретному сообщению m:
101
Pm = xbc* CBC = 27 (13,11) = (1,12)
РАБОТА 7 Типовой пример протокола Месси-Омуры
Участники информационного обмена
•Абонент А
•Абонент B
Протокол
Участники информационного обмена используют общую эллиптическую кривую E: y2 = x3 + x +12 , определенную над конечным полем F331 . Коэффициенты эллиптической кривой: a =1 , b =12 . Модуль p = 331. Ранг кривой N = 361 считается автоматически.
1.Абонент А
Раскладывает на множители значение ранга кривой.
Для этого можно воспользоваться формой «Разложение на множители» специализированного вычислителя для эллиптических кривых. Нужно ввести значение ранга кривой 361 в поле «Число» и нажать кнопку «Разложить на множители». Результат появится в правой части экрана:
N = 361 =19 19
Выбирает секретное значение ea = 51 по принципу НОД(e, N) =1
Вычисляет второе секретное значение da из уравнения ea da + Ny =1
Для этого можно воспользоваться формой «Решение уравнения ax +by =1 » специализированного вычислителя. Нужно ввести
значение числа ea = 51 в поле «a:» и числа N = 361 в поле «b:».
Нажать кнопку «Найти решение». Результат появится в правой части экрана:
a = 51; b = 361; x = 269; y = −38 .
Значение x = 269 и есть искомое значение: da = 269 .
102
2.Абонент B
Вычисляет секретные значения e b и db аналогично абоненту А. Выбирает eb =118 .
Вычисляет значение db из уравнения eb db + Ny =1 :
db = 309 .
3.Абонент A
Выбирает в качестве сообщения M , которое будет отослано абоненту В, букву «G»:
M = «G»
Связывает выбранное сообщение с точкой, принадлежащей эллиптической кривой.
Для этого нужно воспользоваться формой «Перевод строки в числовую форму» специализированного вычислителя для эллиптических кривых. Нужно ввести букву «G» в поле «Строка:» и нажать кнопку «В точки». Результат появится в правой части экрана:
G => (59, 237)
Сообщению M = «G» соответствует точка Pm (59, 237) на эллип-
тической кривой E .
Вычисляет значение точки Q1 = ea Pm .
Для этого нужно воспользоваться формой «Математические операции с числами и точками» специализированного вычислителя для эллиптических кривых. Нужно ввести значение ea = 51 в по-
ле «x» и значение точки Pm (59, 237) в поле «y». Выбрать опера-
цию умножения «*» в выпадающем списке. После этого нажать кнопку «Вычислить». Результат появится в правой части экрана:
(59, 237) * 51 = (28, 133)
Значение точки Q1 = (28, 133).
Отсылает координаты точки Q1 абоненту В.
4.Абонент B
Вычисляет значение точки
Q2 = ebQ1 = 118*(28, 133) = (265, 168)
Отсылает координаты точки Q2 абоненту А.
5.Абонент A
Вычисляет значение точки
103
Q3 = daQ2 =269*(265, 168) = (4, 61)
Отсылает координаты точки Q3 абоненту B.
6.Абонент B
Вычисляет значение точки
Q4 = dbQ3 = 309*(4, 61) = (59, 237)
Переводит точку Q4 в открытый текст m .
Для этого нужно воспользоваться формой «Перевод точек в строку» специализированного вычислителя для эллиптических кривых. Нужно указать координаты точки (59, 237) в поле «Массив точек» и нажать кнопку «Перевести». Результат появится в правой части экрана:
(59, 237) => G
Сообщение M представляет собой букву «G».
Абонент В прочитал исходное сообщение, выбранное абонентом А.
РАБОТА 8 Типовой пример схемы электронной цифровой подписи
Генерация ключей
1.Выбор модуля эллиптической кривой
Открыть «Таблицу простых чисел», выбрать простое число.
Выбрали 1021, p = 1021.
2.Выбор эллиптической кривой
Выбрали (случайным образом) a = 1, b = 1.
Ввести данные в поля формы «Параметры эллиптической кривой» и нажать кнопку «Вывести точки кривой».
Получили список точек, принадлежащих эллиптической кривой.
3.Выбор точки P
Ранг точки q – простое число.
Выбираем любую точку. Для этого необходимо поставить курсор в поле «х» формы «Математические операции с числами и точками» и выбрать точку из имеющихся в выпадающем списке: выбранная точка будет вставлена автоматически в поля ввода формы. Выбрали точку P =(500, 587).
Выбрать оператор «rang(x)». Нажать кнопку «Вычислить»:
Ранг точки (500, 587) равен 1042.
104
1042 не является простым числом. По стандарту q – простое число. Необходимо выбрать другую точку.
Выбрали точку P =(752, 453). Нажать кнопку «Вычислить»:
Ранг точки (752, 453) равен 521.
521 – простое число.
P = (752, 453).
q= 521.
4.Выбор значения d
Выбрать случайным образом уникальное число d. Пусть d = 111.
5.Вычисление Q = dP
Воспользоваться формой «Математические операции с числами и точками», ввести координаты точки d, выбрать оператор и нажать кнопку «Вычислить»:
(752, 453) * 111 = (272, 824).
Открытый ключ:
a= 1, b = 1
p = 1021
P= (752, 453) q = 521
Q= (272, 824)
Секретный ключ d = 111
Подпись сообщения
6.Исходное сообщение
Подпишем слово «ГОСТ». При выборе подписываемого сообщения необходимо ограничится строкой, длина которой не более 9 символов. Это обусловлено работой функции хеширования:
M = «ГОСТ»
Использовать форму «Перевод строки в числовую форму». Ввести сообщение и нажать кнопку «В число»:
ГОСТ => 21201705
Получили числовую форму сообщения:
M = 21201705
7.Определение хэш-значения от сообщения
105
Вычислить хэш-код e сообщения M . Для этого воспользоваться формой «Перевод числа в строку и хеширование по Флетчеру»:
H(21201705) = 240.
e= 240.
8.Выбор k
Выбрать случайным образом число k из интервала (1, q) :
k= 211.
9.Вычислить C = kP
Использовать форму «Математические операции с числами и точками». Ввести точку и k = 211, выбрать оператор «*», нажать кнопку «Вычислить»:
(752, 453) * 211 = (787, 220) kP = (787, 220)
10.Определение r
Определить с помощью формы «Математические операции с чис-
лами и точками» r = xc mod q :
r = 787 mod 521= 266,
если r = 0, вернуться к шагу 3.
11.Определение s
Вычислить
s = (ek + dr) mod q = (240*211 + 111*266) mod 521 = 453.
Если s = 0, перейти к шагу 2.
Подпись для сообщения m: ( r = 266, s = 453).
Проверка подписи сообщения
12.Исходные данные
Сообщение M = 21201705.
Подпись для сообщения m: { r = 266, s = 453}. Открытый ключ:
a = 1, b = 1 p = 1021
P = (752, 453) q = 521
Q= (272, 824)
13.Определение хэш-значения от сообщения
Вычислить хэш-код сообщения m. Для этого воспользоваться формой «Перевод числа в строку и хеширование по Флетчеру»:
106
H(21201705) = 240.
e= 240.
14.Вычисление v
Вычислить с помощью формы «Математические операции с числами и точками»:
v= e−1 mod q
т.е. решить уравнение v = 1e mod q .
Ввести данные: 1, e , q в поля «x», «y» и «Модуль» соответст-
венно.
Выбрать оператор «/».
Нажать кнопку «Вычислить». Получили: (1/240) mod 521 = 432
v= e−1 mod q = 432
15.Вычисление остальных данных
При прохождении шагов 3-6 использовать форму «Математические операции с числами и точками».
Вычислить
z1 = sv mod q z1 = 453 * 432 mod 521 = 321.
Вычислить
z2 = −rv mod q z2 = ((0-266) mod q * 432) mod 521 = 229.
Вычислить
C= z1P + z2Q = (x0 , y0 ) = (683, 384) + (864, 236) = (787, 220).
16.Вычисление R
Вычислить R = xc mod q R = 787 mod 521 = 266.
R= 266 = r .
Процедура верификации прошла успешно. Подпись верна.
РАБОТА 9 Типовой пример схемы разделения секрета Шамира
Разделение секрета
1. Определение конечного поля Fp
107
Пусть всего в сети девять участников информационного обмена, один из которых выполняет роль дилера. Общее количество абонентов, среди которых будет разделен секрет, n = 8 .
Открыть «Таблицу простых чисел», выбрать простое число в интервале от 31 до 991, которое будет характеристикой конечного поля Fp .
Выбрали p = 41 .
2. Распределение элементов ri конечного поля
Среди восьми абонентов сети распределили элементы ri {1, 2, 3, 4, 5, 6, 7, 8} , i =[1, 8]
3.Выбор секрета S
Дилеру выбрать элемент S F41 , соответствующий некоторому секретному сообщению.
Выбрали S = 24 .
4.Выбор многочлена f (x)
Выбрать степень m многочлена f (x) , так чтобы m +1 было
кратно значению n .
Выбрали m = 3 . Это означает, что для восстановления секрета S необходимо будет объединение не менее четырех абонентов сети из восьми.
Выбрать коэффициенты a j , j =[0, 3] многочлена f (x) . При
этом S = a0 .
Выбрали коэффициенты a0 = 24 , a1 =19 , a2 =12 , a3 =35 .
Многочлен f (x) = 35x3 +12x2 +19x + 24 .
5. Разделение секрета
Вычислить значения частей секрета si = f (ri ) , i =[1, 8] :
s1 = f (r1) = f (1) = (35 13 +12 12 +19 1 + 24)mod 41 = 8 ,
s2 = f (r2 ) = f (2) = (35 23 +12 22 +19 2 + 24)mod 41 = 21,
s3 |
= |
f (r3 ) = f (3) = (35 33 +12 32 +19 3 + 24)mod 41 = 27 , |
s4 |
= f (r4 ) = f (4) = (35 43 +12 42 +19 4 + 24)mod 41 = 31, |
|
s5 |
= |
f (r5 ) = f (5) = (35 53 +12 52 +19 5 + 24)mod 41 = 38 , |
s6 |
= f (r6 ) = f (6) = (35 63 +12 62 +19 6 + 24)mod 41 =12 , |
|
|
|
108 |
