КМЗИ_методичка_лаб_4

advertisement
РАЗДЕЛ 1. КЛЮЧЕВАЯ ИНФОРМАЦИЯ ..................................................... 2
1.1 Вероятностные тесты для криптосистем на основе задачи факторизации. .......................2
1.2 Доказуемо простые числа для криптосистем на основе задачи дискретного
логарифмирования. ........................................................................................................................3
1.3.1 Числа Блюма ..........................................................................................................................4
1.3.2 Порождающие элементы ......................................................................................................4
РАЗДЕЛ 2. ШИФРЫ С ОТКРЫТЫМ КЛЮЧОМ............................................ 5
2.1. Схема Меркла – Хеллмана. ....................................................................................................5
2.2. Криптосистема Диффи – Хеллмана.......................................................................................6
2.3. Шифр Шамира .........................................................................................................................6
2.4. Схема Эль – Гамаля ................................................................................................................7
2.5. Шифр RSA (Rivest-Shamir-Adleman).....................................................................................9
2.6. Схема Рабина .........................................................................................................................10
2.7. Поточный RSA – генератор ..................................................................................................11
2.8. Схема Блюма - Гольдвассер .................................................................................................12
Задания к разделу 2 ......................................................................................................................14
Данные для самопроверки к разделу 2 .......................................................................................14
РАЗДЕЛ 3. АЛГОРИТМЫ ЭЦП................................................................... 17
3.1. Подпись RSA .........................................................................................................................17
3.2. ЭЦП Рабина ...........................................................................................................................18
3.3. Подпись Онга-Шнорра-Шамира ..........................................................................................19
3.4. Подпись Эль-Гамаля .............................................................................................................20
3.5. Схема Шнорра .......................................................................................................................20
3.6. DSA .........................................................................................................................................21
3.7. ГОСТ Р34.10-94 .....................................................................................................................22
Задания к разделу 3 ......................................................................................................................24
Данные для самопроверки к разделу 3 .......................................................................................24
Список литературы .................................................................................... 26
РАЗДЕЛ 1. КЛЮЧЕВАЯ ИНФОРМАЦИЯ
1.1 Вероятностные тесты для криптосистем на основе задачи
факторизации.
Простые числа, построенные случайным поиском с проверкой
вероятностными тестами, используются в криптосистемах RSA, Рабина
(и других криптосистемах, основанных на проблеме факторизации). В
пособии [4], рассматриваются 3 вероятностных теста на простоту:
Ферма, Соловея – Штрассена и Миллера – Рабина.
Тест Ферма на простоту может принять составное число за простое,
но не наоборот. Стоит обратить внимание, что для теста Ферма
существуют числа Кармайкла, т.е. такие составные числа, которые
всегда принимаются тестом Ферма за простые, не смотря на количество
итераций. Вероятность ошибки составляет t, где t – число итераций
теста,  
 (n)
n
, где (n) – Функция Эйлера. Рекомендуется совершать
около 50 итераций.
Тест Соловея – Штрассена основан на различии между символами
Якоби и Лежандра. Данный тест так же как и тест Ферма, может принять
составное число за простое, но не наоборот. Вероятность ошибки
составляет t, где t – число итераций теста,  
 (n)
2n

1
.
2
Тест Миллера – Рабина также, как и предыдущие тесты, строит
вероятно простые числа, однако вероятность ошибки у теста Миллера –
Рабина гораздо ниже чем у первых двух тестов. Обычно для опознания
простого
числа
достаточно
одной
итерации
теста,
но
все
же
рекомендуемое количество итераций – пять. Вероятность ошибки теста
на одной итерации составляет  
 (n)
4n
, то есть верхняя граница ошибки
на одной итерации для теста Миллера – Рабина в 2 раза меньше
2
аналогичной для теста Соловея – Штрассена и в 4 раза – для теста
Ферма. Таким образом, тест на простоту Миллера – Рабина, является
наиболее эффективным тестом.
1.2 Доказуемо простые числа для криптосистем на основе задачи
дискретного логарифмирования.
В
криптосистемах,
основанных
на
задаче
дискретного
логарифмирования, требуется построение доказуемо простых чисел, то
есть чисел, простота которых доказана. Для этого существует класс
тестов на простоту, которые могут принять просто число за составное,
но не наоборот. Для построения таких чисел не используется случайный
поиск.
С использованием таблицы простых чисел небольшого размера,
построенной
заранее,
строится
число
m
(равное
произведению
нескольких простых чисел, либо произведению простых чисел и
случайного числа), затем число n = 2m + 1 проверяется на простоту
одним из тестов. В пособии [4] выделяются 3 теста на простоту для
доказуемо
простых
чисел:
Миллера,
Поклингтона
и
Процедура
генерации простых чисел ГОСТ Р 34.10-94.
Тест Миллера пригоден для доказательства простоты любого
нечетного числа, если известно разложение на простые сомножители
числа, ему предстоящего. Однако этот тест достаточно трудоемок. В
данном тесте проверяемое число строится при помощи таблицы
простых чисел. Стоит заметить, что если проверяемое число было
предварительно
проверено
на
простоту
вероятностным
тестом
Миллера-Рабина, то в тесте Миллера достаточно выполнить 4-6
итераций.
Тест Поклингтона основан на теореме Поклингтона и позволяет
проверять простоту числа n, если каноническое разложение числа (n - 1)
3
известно лишь частично. Знание полного разложения числа (n - 1),
позволяет сократить число итераций.
Процедура генерации простых чисел ГОСТ Р 34.10-94 позволяет
генерировать доказуемо простые числа заданного размера.
1.3.1 Числа Блюма
Если p и q – два простых числа сравнимые с 3 по модулю 4, то
n=pq иногда называют целым числом Блюма. Если n – целое число
Блюма, у каждого квадратичного вычета есть ровно четыре квадратных
корня, один из которых тоже является квадратом – это главный
квадратный корень.
Числа p и q следует получать по формулам p  4k1  3 и q  4k 2  3
(где k1 и k2 – случайные целые числа, размер которых на 2 бита меньше
требуемого размера p и q), и только потом проверять их на простоту.
Числа Блюма в двоичном представлении имеют единицы в двух
последних битах.
1.3.2 Порождающие элементы
Если p – простое число и g меньше чем p, то g называется
образующей по модулю p, если для каждого числа b от 1 до p–1
существует такое число a, что ga  b (mod p).
В общем случае нелегко установить, является ли данное число
образующей. Однако задача упрощается, если известно разложение p-1
на множители. Пусть q1, q2,…,qn– это различные простые множители p-1.
Чтобы проверить, является ли число g образующей по модулю p,
необходимо вычислить: g(p-1)/q mod p, для всех значений q=q1, q2,…,qn.
4
Если это число равно 1 для некоторого значения q, то g не является
образующей. Если для всех значений q, рассчитанное значение не
равно 1, то g – образующая.
РАЗДЕЛ 2. ШИФРЫ С ОТКРЫТЫМ КЛЮЧОМ
2.1. Схема Меркла – Хеллмана.
Рюкзачная криптосистема, разработана Ральфом Мерклом и Мартином
Хеллманом в 1978 году. Все рюкзачные криптосистемы нестойки, и
изучаются только с точки зрения исторического интереса.
Параметры:
x  ( x1,..., x n )
-
булев
вектор,
открытый
текст
в
двоичном
представлении;
l – число элементов последовательности;
b = {b1,…,bn} - сверхрастущий вектор, bi 
i 1
 bi 1 ;
1
n
m : m   b - большое целое число;
i1
Целое случайное число  : (, m)  1  1 mod m
ai    bi mod m; i  1, n ;
a – не сверхрастущий вектор;
Открытый ключ: a.
Секретный ключ: (b, m,  ).
Шифрование:
y  x  a  x1a1  x 2a2  ...  xnan - шифрованный текст.
Расшифрование:
1. Вычислить y  y  1 modm ;
5
2. Зная y  и b, и пользуясь тем, что b – гипервозрастающий или
сверхрастущий вектор, восстановить булев вектор x.
2.2. Криптосистема Диффи – Хеллмана
Криптосистема Диффи – Хеллмана предназначена для получения
общего секретного ключа по открытому каналу связи. Не требует
предварительной передачи секретных или открытых ключей.
Параметры:
A, B – абоненты;
p – большое простое число;
*
g – порождающий элемент группы Z p ;
p и g вычисляются согласно п. 1.2;
X A  {2,..., p  2} - секретный ключ абонента A, случайное целое;
XB  {2,..., p  2} - секретный ключ абонента B, случайное целое;
Вычисление общего секретного ключа производится в протоколе:
A  B : YA  gXA modp ;
B  A : YB  g XB modp ;
A : K AB  ( YB ) XA modp ;
B : K BA  ( YA ) XB modp ;
K AB  K BA  K
-
общий
секретный
ключ,
для
использования
в
симметричных шифрах.
Возведение в степень по модулю в этом протоколе осуществляется в
соответствии с дихотомическим алгоритмом (см. [4])
2.3. Шифр Шамира
Шифр Шамира используется для обмена секретными сообщениями по
открытому
каналу
для
лиц,
не
имеющих
секретных
ключей
и
защищенных каналов.
6
Параметры:
A – отправитель, обладает открытым ключом;
B – получатель, обладает секретным ключом;
x – открытый текст;
если
x  p , тогда x разбивается на блоки и каждый блок
шифруется отдельно;
p – большое простое число (генерацию следует производить в
соответствии с п.1.2);
Секретные ключи абонента A:
C A - случайное число от 2 до p – 2, (СA,p-1)=1;
1
DA  CA mod(p  1) .
Секретные ключи абонента B:
C B - случайное число от 2 до p – 2, (СA,p-1)=1;
1
DB  CB mod(p  1) .
Протокол Шамира:
A  B : X1  xC A modp ;
CB
B  A : X2  X1
modp ;
DA
A  B : X3  X2
B : X 4  X3
DB
modp ;
mod p ;
B получит на последнем шаге исходный текст. Действительно,
X 4  X 3DB mod p  ( X 2D A )DB mod p  ( X1CB )D ADB mod p 
( x C A )CB D A DB mod p  x C A D ACB DB mod p  x (C A D ACB DB ) mod( p 1) mod p  x
2.4. Схема Эль – Гамаля
Криптосистема, предложенная Тахером Эль-Гамалем в 1984 году.
Параметры:
7
p – большое простое число;
g – порождающий элемент группы Z p * (процесс получения g и p
описан в п 1.2);
С - случайное число, 1<C<(p-1);
D  gC mod p ;
x – открытый текст;
если
x  p , тогда m разбивается на блоки и каждый блок
шифруется отдельно.
Открытый ключ: D;
Секретный ключ: C.
Шифрование:
1. Выбрать k - случайное число, 1  k  p  2 ;
2. Вычислить r  gk mod p ;
3. Вычислить e  x  Dk mod p ;
4. Пара (r,e) – шифрованный текст.
Расшифрование:
Вычислить x   e  (r С )1 mod p .
Действительно, после расшифрования будет получен исходный
текст, т.к. x   x  D k  r p 1C mod p  x  (g C )k  (g k ) p 1C mod p 
 x  g Ck  k ( p 1)  kC mod p  x  g k ( p 1) mod p .
По теореме Ферма: g k ( p 1) mod p  1k mod p  1, таким образом x   x .
Для
ускорения
вычислений
при
расшифровании
можно
воспользоваться следующим приемом:
Если С<(p-1)/2, то вычислять m  e  (r С )1 mod p , т.е. сначала
возвести r в степень C по модулю p, а затем вычислить обратное
значение к полученному с помощью алгоритма Евклида (см. []).
Если же С≥(p-1)/2, то вычислять m=erp-1-Cmod p.
8
2.5. Шифр RSA (Rivest-Shamir-Adleman)
Шифр RSA назван по первым буквам фамилий своих разработчиков
(Ron Rivest, Adi Shamir, Leonard Adleman). В настоящее время, данная
криптосистема является широкоиспользуемой.
Параметры:
p, q – различные большие простые числа (генерацию чисел
производить согласно п.1.1);
При генерации p и q, необходимо выбрать случайное нечетное
число нужного размера и проверить его на простоту (проверка
вероятностным тестом);
n  p  q - модуль RSA, должен быть не менее 512 бит;
(n)  (p  1)(q  1) - функция Эйлера от n;
e : (e, (n))  1 - случайное число от 2 до n-2, открытый ключ;
d  e 1(mod (n)) - секретный ключ (обратный элемент вычисляется
с помощью расширенного алгоритма Евклида);
*
x  ZN - сообщение.
Открытый ключ: (e, n).
Секретный ключ: (p, q, d);
Шифрование:
y  x e mod n .
Расшифрование:
x  y d mod n .
Для ускорения вычислений при расшифровании можно воспользоваться
Китайской теоремой об остатках и малой теоремой Ферма [7].
Вычисляются
1. dp=d mod (p-1), dq=d mod (q-1), p1=p-1mod q, q1=q-1mod p;
d
d
2. xp  ( y modp) p modp , x q  ( y mod q) q mod q ;
9
3. x=(xppp1+xqqq1) mod n.
2.6. Схема Рабина
Безопасность схемы Рабина опирается на сложность поиска квадратных
корней по модулю составного числа. Эта проблема аналогична
разложению на множители.
Параметры:
p, q – большие простые числа, p  q ;
Для формирования числа Блюма, p и q должны быть сравнимы с
числом 3 по модулю 4, т.е. для них выполняются следующие
сравнения: p  3(mod 4) ; q  3(mod 4) .
Числа p и q следует получать по формулам p  4k1  3 и q  4k 2  3
(где k1 и k2 – случайные целые числа, размер которых на 2 бита
меньше требуемого размера p и q), и только потом проверять их на
простоту.
n  p  q - число Блюма;
x – открытый текст.
Открытый ключ: n.
Секретный ключ: (p, q).
Шифрование:
Преобразуем x для обнаружения правильного решения:
r – случайное число (4-8 бит);
x   x || r - конкатенация (склеивание);
Если x  - квадратичный вычет, то x  x , иначе берем другое r.
y  x 2 modn .
Расшифрование:
Для расшифрования необходимо решить квадратичное сравнение:
y  x 2 (modp  q) относительно x.
10
Такое сравнение имеет 4 решения, из них выбирается одно.
Так как n – число Блюма, то среди этих 4-х решений, только одно
является квадратичным вычетом.
Решение квадратичного сравнения yx2(mod pq):
z1 = y(p+1)/4 mod p;
z2 = (p - y(p+1)/4) mod p;
z3 = y(q+1)/4 mod q;
z4 = (q - y(q+1)/4) mod q;
a = q(q-1 mod p);
b = p(p-1 mod q);
Четыре возможных решения:
x1=(az1+bz3) mod n;
x2=(az1+bz4) mod n;
x3=(az2+bz3) mod n;
x4=(az2+bz4) mod n;
2.7. Поточный RSA – генератор
RSA – генератор, это генератор псевдослучайных последовательностей
на основе RSA.
Параметры:
p, q – большие простые числа;
m – открытый текст;
n  p  q;
e : 1  e  (n) , (e, (n))  1;
d=e-1 mod φ(n);
S 0 : 1  S 0  (n  1) - случайное число, синхропоссылка.
Открытый ключ: e,n.
Секретный ключ: d, p, q.
11
Выработка гаммы:
Цикл 1, L , где L – длина требуемой ПСП (в битах):
1. Sl  Sle1 modn
2. zi  Sl mod 2
Выход: z1,..., z L - ПСП, гамма шифра.
Шифрование:
y i  mi  z i , i  1, L .
Шифртекст: ( y, SL  1 ) .
Расшифрование:
По S L 1 и d, восстанавливаем: SL , SL 1,..., S1  z L , z L 1,..., z1:
SL  SLd1 modn ;
SL1  Sld modn ;
…
S1  Sd2 modn .
mi  y  z i .
2.8. Схема Блюма - Гольдвассер
В данной криптосистеме используется простейший и наиболее
эффективный генератор, использующий сложностно-теоретический
подход. В честь своих авторов называется Блюм-Блюма-Шуба (BBS).
Параметры:
p, q – большие простые числа;
Числа p и q следует генерировать так же, как это описано в 2.6.
n  p  q - число Блюма;
1  b  n - случайное число;
S0  b2 modn ;
Открытый ключ: n.
12
Секретный ключ: p,q.
Шифрование:
1) Выработка гаммы шифра:
В цикле i  1,L :
Si  Si21 modn ;
z i  Si mod 2 .
Выход: z1,..., z L .
Гаммирование: y i  x i  z i , i  1,L .
Шифртекст: ( y, SL  1 ) .
Расшифрование:
1) Восстановление гаммы: SL1  SL , SL 1,..., S1
В цикле решаются сравнения x 2  SL1(modn)
2) Гаммирование: x i  y i  z i , i  1,L
13
Задания к разделу 2
Реализовать:
Вариант 1: схему Меркла-Хеллмана.
Вариант 2: криптосистему Диффи-Хеллмана. Модуль должен быть
доказуемо простым.
Вариант 3: шифр Шамира. Модуль должен быть доказуемо простым.
Вариант 4: схему Эль-Гамаля. Модуль должен быть доказуемо простым.
Вариант 5: криптосистему RSA. Для генерации простых чисел
использовать вероятностный тест. Для ускорения расшифрования
использовать Китайскую теорему об остатках.
Вариант 6: схему Рабина. Для генерации простых чисел использовать
вероятностный тест. Использовать случайное дополнение исходного
текста, чтобы он являлся квадратом.
Вариант 7: поточный RSA-генератор. Для генерации простых чисел
использовать вероятностный тест. Для ускорения расшифрования
использовать Китайскую теорему об остатках.
Вариант 8: Схему Блюма-Гольвассер. . Для генерации простых чисел
использовать вероятностный тест.
Данные для самопроверки к разделу 2
Прежде,
чем
сдавать
программу,
необходимо
самостоятельно
проверить ее работоспособность на тестовых данных.
Данные следует использовать следующим образом:
 Выбрать в качестве входных параметров соответствующие данные
из таблицы.
 Закомментировать генератор случайных чисел в шифре (если он
есть).
Случайные
числа,
использующиеся
в
алгоритмах,
необходимо брать из таблицы.
14
 Взять из таблицы входные параметры алгоритма и осуществить
шифрование с ними. Сверить промежуточные выходы и результат
с данными из таблицы.
 Осуществить расшифрование. Сверить исходный (нешифрованный) текст с расшифрованным.
Схема Меркла-Хеллмана:
x
3563
729
314
811
592
l
4
6
4
5
5
b
{7,9,19,43}
{2,3,7,14,28,59}
{3,5,11,24}
{4,9,15,31,72}
{2,4,9,20,42}

29
44
28
45
61
m
78
113
43
131
77
a
{47,27,5,77}
{88,19,82,51,102,110}
{41,11,7,27}
{49,12,20,85,96}
{45,13,10,65,21}
y
{151,79,129}
{294,211}
{27,34,48}
{157,193}
{110,45}
y
{59,35,69}
{94,69}
{24,35,14}
{85,112}
{22,2}
Криптосистема Диффи-Хеллмана:
p
373063189
20945261
4323257
24785021
6892159
g
3
7
5
2
5
xa
35
1934
56
99
183
xb
21
751
22
161
143
ya
158322106
4764222
32837
9000925
3755488
yb
14583911
15187673
2375322
6251473
3823286
k
160588074
12404349
4176228
11587559
6734476
Шифр Шамира:
x
167
329
509
872
633
p
571111
740711
678211
469031
200513
ca
97
57
59
33
67
da
329713
298883
540269
454817
179563
cb
37
63
23
57
21
db
493933
623137
147437
41143
47741
x1
354748
197110
390608
158478
110628
x2
179074
1637
189885
423886
136899
x3
226013
386955
95363
282488
70035
Схема Эль-Гамаля:
x
10
962
122
354
68
p
248043791
347095657
583207
965249
3605257
g
3
7
3
5
5
c
29
71
69
22
35
d
133008257
299540628
532821
440133
3162749
k
7
94
26
97
48
r
2187
66933900
109733
114271
2538517
e
231312558
281737382
371468
117465
1874384
Криптосистема RSA:
x
35
73
22
69
99
p
267829
12889
7283
6653
1549
q
35897
97841
2657
3343
2237
n
9614257613
1261072649
19350931
22240979
3465113
(n)
9613953888
1260961920
19340992
22230984
3461328
e
59
43
67
83
29
d
162948371
791766787
12701547
2946275
835493
y
7027336249
200924136
12739148
15360832
1304987
15
Схема Рабина:
x
12
48
55
68
97
p
8999
5791
1823
6967
5119
q
1571
2351
3359
2803
7723
n
14137429
13614641
6123457
19528501
39534037
y
144
2304
3025
4624
9409
x1
12
9751996
6123402
7691500
16913273
x2
7217186
48
4265875
68
39533940
x3
6920243
13614593
1857582
19528433
97
x4
14137417
3862645
55
11837001
22620764
RSA-генератор:
x
29
38
98
71
14
p
211
101
307
401
397
q
661
547
373
907
673
n
139471
55247
114511
363707
267181
(n)
138600
54600
113832
362400
266112
e
67
23
71
29
53
d
72403
28487
89783
112469
5021
s0
67294
98326
25403
75004
98623
l
3
4
5
6
7
s1
7159
36217
11816
47287
184998
sL
72147
5641
53982
222647
159073
z
[111]2
[1001]2
[01000]2
[101111]2
[0110101]2
y
34
191
362
2984
59
s1
4475395
2249306
3832149
2873451
1091188
sL
502832
1272755
1088924
1020151
158352
z
[110]2
[0110]2
[10110]2
[10001]2
[01100]2
y
3
123
766
639
433
Схема Блюма-Гольдвассер:
x
53
29
44
78
61
p
92083
5683
9227
6871
6323
q
751
719
683
431
547
n
6915433
4086077
6302041
2961401
3458681
b
421
687
901
547
301
s0
177241
471969
811801
299209
90601
l
3
4
5
5
4
16
РАЗДЕЛ 3. АЛГОРИТМЫ ЭЦП
Алгоритмы электронной цифровой подписи основаны на принципах
ассиметричных криптосистем.
Свойства ЭЦП:
1. Указание на автора;
2. Невозможность подделки без обнаружения;
3. Невозможность перенести подпись на другой документ;
4. Невозможность изменить подписанный документ;
5. Невозможность отказа от авторства;
6. Проверяемость.
3.1. Подпись RSA
Параметры:
p, q – различные большие простые числа (генерацию чисел
производить согласно п.1.1);
При генерации p и q, необходимо выбрать случайное нечетное
число нужного размера и проверить его на простоту (проверка
вероятностным тестом);
n  p  q - модуль RSA, должен быть не менее 512 бит;
(n)  (p  1)(q  1) - функция Эйлера от n;
e : (e, (n))  1 - случайное число от 2 до n-2, открытый ключ;
d  e 1(mod (n)) - секретный ключ (обратный элемент вычисляется
с помощью расширенного алгоритма Евклида);
*
x  ZN - сообщение.
Ключ подписания: (p, q, d).
Ключ верификации: (n, e);
Подписание:
h = h(x1,…,xn) – хэш-функция от текста;
17
s = hd mod n – цифровая подпись, добавляемая к сообщению.
Для ускорения вычислений при подписании можно воспользоваться
Китайской теоремой об остатках и малой теоремой Ферма [7].
Вычисляются
1. dp=d mod (p-1), dq=d mod (q-1), p1=p-1mod q, q1=q-1mod p;
d
d
2. xp  ( y modp) p modp , x q  ( y mod q) q mod q ;
3. x=(xppp1+xqqq1) mod n.
Подпись: (x, s).
Верификация:
Проверить сравнение x ≡ se (mod n).
3.2. ЭЦП Рабина
Параметры:
n  p  q - число Блюма (генерация числа Блюма описана в п.1.3.1);
a a
a:       1 – квадратичный вычет по модулю n.
p  q
(a, n) = 1;
x – текст.
Ключ подписания: (p, q).
Ключ верификации: (n).
Алгоритм подписания:
p 1
x = x||r, r – случайное число, чтобы выполнялось x 2  1modp ,
q1
x 2  1mod q , если хоть одно из этих условий не выполняется, то
генерируется новое значение r;
s2  x(modn) , в результате решения сравнения, получается 4
корня, в качестве подписи можно брать любой из них.
Подпись: (r, s).
18
Верификация:
Вычисляется значение: b=s2 mod n; b - интерпретируется как
двоичный вектор x||r;Если x=x и r=r, то подпись признается подлинной.
3.3. Подпись Онга-Шнорра-Шамира
Данная
схема
построения
системы
ЭЦП
является
наиболее
быстродействующей, однако было показано, что она не является
безопасной, в результате чего она не нашла применения на практике.
Параметры:
p, q – большие простые числа;
n  p  q - модуль RSA;
k1  Zn* – случайное число, (k1, n)=1;
k 2  k12 modn .
Ключ подписания: (k1, p, q).
Ключ верификации: (k2, n).
Подписание:
r – случайное число, (r, n) = 1;
s1 = (2-1(xr-1 + r)) mod n;
s2 = (2-1k1(xr-1 - r)) mod n;
Подпись: (x, s1, s2).
Верификация:
Проверить сравнение x  (s12  k 2s22 ) modn . Если сравнение верно,
то подпись принимается, иначе – отвергается.
19
3.4. Подпись Эль-Гамаля
Схема
Эль-Гамаля,
одна
из
немногих
схем,
которые
могут
использоваться как для шифрования, так и для построения цифровых
подписей.
Параметры:
p – большое простое число;
*
g – порождающий элемент группы Z p ;
k  Zp* - случайное число;
d  gk mod p - вычисление открытого ключа;
h = h(x) – значение хэш-функции от текста;
Ключ подписания: (k).
Ключ верификации: (p, g, d).
Подписание:
a – случайное число, (a, p-1) = 1;
s = ga mod p;
r = (h - sk)a-1mod (p - 1);
Подпись: (x; s, r).
Верификация:
Проверить сравнение dssr  gh modp . Если сравнение верно, то
подпись принимается, иначе – отвергается.
3.5. Схема Шнорра
Схема Шнорра аналогична системам, основанным на сложности
дискретного логарифмирования. Достоинством схемы подписи Шнорра
является возможность выбора такого конкретного варианта реализации,
при котором обеспечивается сравнительно малая длина подписи.
20
Параметры:
p, q – большие простые числа, такие что q делит p - 1;
*
g – порождающий элемент группы Z p ;
a – случайное число, 1< a< q;
d = ga mod p – формирование открытого ключа;
x – текст.
Ключ подписания: (d, p, q, g).
Ключ верификации: (a).
Подписание:
k – случайное число, 1 < k < q;
r = gk mod p;
e = h(x||r) – вычисление первой части подписи;
s = k – ae mod q – вычисление второй части подписи.
Подпись: (e, s).
Верификация:
r   gsde mod p ;
e = h(x||r);
Если e=e, значит подпись верна.
3.6. DSA
Данный алгоритм является частью Американского стандарта DSS.
В алгоритме используется однонаправленная хэш-функция H(x).
Стандарт определяет использование алгоритма SHA-1.
Параметры:
p – простое число L битов, где L принимает значение кратное 64 в
диапазоне от 512 до 1024;
q – 160 – битовый множитель p – 1;
a = g(p-1)/q mod p, где g < p – 1, для которого g(p-1)/q mod p > 1 ;
y = ax mod p, где x < q;
21
m – текст.
Ключ подписания: (y, p, q, a).
Ключ верификации: (x).
Подписание:
k – случайное число, k < q;
r = (ak mod p) mod q – вычисление первой части подписи;
s = (k-1(H(m) + xr)) mod q – вычисление второй части подписи.
Подпись: (r , s).
Верификация:
w = s-1 mod q;
u1 = (H(m)w) mod q;
u2 = (rw) mod q;
v  ((au1  yu2 ) mod p) mod q , если v = r – то подпись подлинная.
3.7. ГОСТ Р34.10-94
Данный алгоритм является Российским стандартом цифровой подписи.
Этот
алгоритм
использует
однонаправленную
хэш-функцию
H(x).
Стандарт определяет использование хэш-функции ГОСТ Р34.11-94,
основанной на симметричном алгоритме ГОСТ 28147-89.
Параметры:
p – простое число, длина которого лежит в диапазоне 509-512
битов, либо 1020-1024 битов;
q – простое число, множитель p – 1, длиной от 254 до 256 битов;
a – случайное число, a < p-1, aq mod p = 1;
y = ax mod p, где x < q;
Ключ подписания: (p, q, a, y).
Ключ верификации: (x).
Подписание:
k – случайное число, k < q;
22
r = (ak mod p) mod q – вычисление первой части подписи;
s = (xr + k(H(m))) mod q – вычисление второй части подписи;
Если H(m) mod q = 0, необходимо установить его в 1.
Если r = 0 (или s=0), то необходимо выбрать другое значение K и начать
снова.
Подпись: (r mod 2256, s mod 2256).
Верификация:
v = H(m)q-2 mod q;
z1 = (sv) mod q;
z2 = ((q - r)  v) mod q;
u  ((az1  y z 2 ) mod p) mod q
Если u = r, то подпись подлинная.
23
Задания к разделу 3
Вариант 1: Подпись RSA
Вариант 2: Подпись Рабина
Вариант 3: Подпись Онга-Шнорра-Шамира
Вариант 4: Подпись Эль-Гамаля
Вариант 5: Подпись Шнорра
Вариант 6: Подпись DSA
Вариант 7: Подпись ГОСТ Р34.10-94
Данные для самопроверки к разделу 3
Данные следует использовать следующим образом:
 Выбрать в качестве входных параметров соответствующие данные
из таблицы.
 Случайные числа, использующиеся в алгоритмах, необходимо
брать из таблицы.
 Значения хэш-функции подставлять из таблицы.
 Для
некоторых
алгоритмов
не
приведен
последний
этап
вычислений (расшифрование), потому что он подразумевает собой
получение исходного сообщения x.
Подпись RSA:
h(x)
103
8008
802
22
153
p
q
39503
6197
24907
4721
65809
71983
3491
9049
37963
3767
n
2843544449
21633727
225383443
179223323
247902503
(n)
2843432964
21624040
225349488
179180640
247832928
e
37
93
47
83
65
d
537946777
13718477
115072079
79875707
68630657
s
934219078
21294134
66278188
164775041
43942564
s3
10998035
5580772
28799198
8763032
25585145
s4
2094816
12967801
42034064
1157907
4598690
s1
4084013293
s2
5179723215
Подпись Рабина:
x
14
17
15
22
30
r
[1100]2
[0010]2
[0100]2
[0000]2
[0010]2
x
236
274
244
352
482
p
5003
5791
8011
2591
8191
q
4999
3323
9467
5531
4079
n
25009997
19243493
75840137
14330821
33411089
s1
22915181
6275692
33806073
13172914
28812399
s2
14011962
13662721
47040939
5567789
7825944
Подпись Онга-Шнорра-Шамира:
x
15
p
72787
q
93059
n
6773485433
k1
56
k2
3751767920
r
34
24
23
56
99
150
23789
7369
15053
99241
88321
98327
33791
2459
2101068269
724571663
508655923
244033619
96
72
81
30
1161104676
570124964
452448707
129880115
72
21
48
31
1123487930
603809731
79477513
177121193
700352649
724571003
333803589
188928861
Подпись Эль-Гамаля:
h
18
56
92
77
42
p
67853
37831
56039
94009
18257
g
2
5
5
3
5
k
15
22
45
98
77
d
32768
37351
47259
53209
8041
a
55
73
27
47
29
s
19537
22030
4066
27858
17852
r
51421
36892
20208
85927
14294
Схема Шнорра:
p
48311
59207
55541
67217
57221
q
4831
4229
2777
4201
2861
g
1024
19837
48838
27841
18598
a
69
98
51
59
73
d
32853
1402
17408
33575
25854
k
15
68
40
67
94
r
34541
18854
33975
274
24597
e
54
66
98
32
58
s
1120
2058
596
2380
1582
r
34541
18854
33975
274
24597
DSA:
q
p
g
a
x
y
k
r
s
h(m)
w
u1
u2
v
1831
3697
4987
1721
449
40283
88729
49871
55073
86209
2
2
2
2
2
4872
7435
1024
44318
32450
26
23
89
77
15
9746
85870
43015
17684
47905
34
36
44
58
76
422
3469
1687
1298
302
217
163
3526
893
309
68
21
14
36
96
1696
2631
2799
609
93
1806
3493
4277
1272
397
1622
2743
4211
543
248
422
3469
1687
1298
302
a
2989
16
256
1024
39371
x
22
37
12
51
67
y
3991
31987
32426
45611
55494
z2
1227
1393
59
873
249
u
966
2653
3560
2756
862
ГОСТ Р34.10-94
q
1303
8647
5861
6679
1297
p
20849
34589
46889
66791
70039
g
2
2
2
2
2
k
32
14
16
33
87
r
966
2653
3560
2756
862
s
605
4234
2317
2970
963
h(m)
47
85
39
81
33
v
804
3764
1052
2886
904
z1
401
355
5169
2263
265
25
Список литературы
1. Баричев С.Г., Гончаров В.В., Серов Р.Е. Основы современной
криптографии. Учебное пособие для ВУЗов – М.: Горячая линия –
Телеком, 2002 – 175с.
2. Мао Венбо, Современная криптография. Теория и практика.: Пер.
с англ. – М.: Издательский дом “Вильямс”, 2005. - 768 с.: ил.
3. Молдовян Н.А., Молдовян А.А. Введение в криптосистемы с
открытым ключом. – СПб.: БХВ-Петербург, 2005. 288 с.: ил.
4. Ниссенбаум О.В., Овсянко А.Г. Криптографические методы
защиты информации. Генерация больших простых чисел в
криптосистемах
с
открытым
ключом:
Учебно-методическое
пособие. – Тюмень: Издательство Тюменского государственного
университета, 2009. – 41 с.
5. Рябко Б.Я., Фионов А.Н. Основы современной криптографии для
специалистов в информационных технологиях. – М.: Научный мир,
2004. – 173с.
6. Саломаа А., Криптография с открытым ключом.- М.:Мир, 1995
7. Шнайер Б. Прикладная криптография: Протоколы, алгоритмы,
исходные тексты на языке Cи. – М.: Издательство ТРИУМФ, 2003 –
816 с., ил.
8. Menezes A., van Oorschot P., Vanstone S. Handbook of Applied
Cryptography. – CRC Press, 1996. – 661 p.
26
Download