- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ
- •2. ИСТОРИЧЕСКИЕ ШИФРЫ
- •3. МОДУЛЯРНАЯ АРИФМЕТИКА
- •4. АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA
- •5. ПРОСТЫЕ ЧИСЛА. ГЕНЕРАЦИЯ ПРОСТЫХ ЧИСЕЛ
- •6. АТАКА ВИНЕРА НА RSA
- •7. РЮКЗАЧНЫЙ МЕТОД ШИФРОВАНИЯ
- •9. КРИПТОСИСТЕМА НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
- •10. СИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ
- •11. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES
- •12. СТАНДАРТ КРИПТОСИСТЕМЫ РОССИИ ГОСТ 28147-89
- •13. ДЕЙСТВИЯ НАД ПОЛИНОМАМИ В ПОЛЕ
- •14. УСОВЕРШЕНСТВОВАННЫЙ СТАНДАРТ ШИФРОВАНИЯ AES
- •15. УСТАНОВЛЕНИЕ ПОДЛИННОСТИ ОБЪЕКТА
- •16. КРИПТОГРАФИЧЕСКИЕ ХЕШ-ФУНКЦИИ
- •СПИСОК ЛИТЕРАТУРЫ
Замечание: величина а шифротекста Tш необходима, чтобы
сообщить информацию о числе к, используемом при шифровании T0 . Используем алгоритм Эль-Гамаля для шифрования сообщения
T0 |
= 5 |
, |
если |
n = 11, p = 2,kc |
= 8,k = 9. |
Шифруем сообщение |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||
а = 29mod11 = 512mod11 |
= 6,b = ( |
39 × 5) |
mod11 |
= 9. T = (6,9). |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
ш |
|
|
|
|
Выполняем процедуру расшифрования: |
|
||||||||||
|
|
|
|
|
|
æ |
b |
ömod n = æ |
9 |
ömod11. |
|||
|
|
|
|
|
|
ç |
|
kc |
8 |
||||
|
|
|
|
|
|
|
¸ |
ç |
¸ |
|
|||
|
|
|
|
|
|
è a |
|
ø |
è |
6 |
ø |
|
|
|
|
Найдем для |
68mod11 = 4 обратную величину. Это можно сделать |
||||||||||
подбором |
4× 3mod11 = 12mod11 = 3. |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
Умножим числитель и знаменатель дроби на 3, получим |
|||||||||||
T = |
æ |
9× 3 |
ömod11 = æ |
27 |
ömod11 = 5. |
|
|
|
|||||
0 |
|
ç |
4´3 |
¸ |
ç |
1 |
¸ |
|
|
|
|
|
|
|
|
è |
ø |
è |
ø |
|
|
|
|
|
|||
9. КРИПТОСИСТЕМА НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
Рассмотренные ранее асимметричные криптосистемы RSA, Эль-Гамаля представляют примеры безопасных систем. Однако их безопасность обеспечивается ценой больших ключей (1024 бита ≈ 500 десятичных знаков). Одним из перспективных вариантов
криптосистем, обеспечивающих |
тот же уровень безопасности, но |
с меньшими размерами ключей |
(160 бит), является шифрование |
на основе метода эллиптических кривых.
Эллиптической кривой называется алгебраическая кривая вида y2 + b1xy + b2 y = x3 + a1x2 + a2 x + a3.
42
Будем рассматривать специальный класс эллиптических кривых
E(a,b) :
y2 = x3 + ax + b,
которые получаются из основного уравнения заменой переменной. В качестве примера рассмотрим кривую E(1,1) : y2 = x3 + x +1.
Определим абелеву (коммутативную) группу, использующую точки на эллиптической кривой.
Точка |
P(x , y ) E(a,b) y2 |
≡ x3 + ax + b. |
|||||
0 |
0 |
|
0 |
0 |
|
0 |
|
|
|
|
|||||
Например, |
точка |
P(0,1) E(1,1), |
т. к. ее координаты |
||||
|
|
|
|
||||
удовлетворяют уравнению |
y2 |
= x3 |
+ x +1 |
. Введем операцию сложения |
|||
|
|
|
|||||
двух точек по следующему правилу: три коллинеарные точки (лежащие на одной прямой L) дают нулевую сумму:
P(x1, y1) + Q(x2 , y2 ) + R1(x3 , y3 ) = 0.
Введенная операция сложения должна удовлетворять всем свойствам коммутативной группы:
–замкнутость;
–ассоциативность;
–коммутативность;
–существование нейтрального элемента;
–существование аддитивной инверсии.
В качестве аддитивной инверсии для точки R1(x3 , y3 ) выбирается точка такая, что
R1(x3 , y3 ) + R(x3,− y3 ) = 0.
Тогда, прибавляя точку R к левой и правой частям равенства
P(x1, y1) + Q(x2 , y2 ) + R1(x3, y3 ) + R(x3,− y3 ) = R(x3,− y3 ) ,
43
получим окончательное правило сложения двух точек эллиптической кривой
R(x3 ,− y3 ) = P(x1, y1 ) + Q(x2 , y2 ).
При этом возможны три случая.
1. Точки P,Q − различные (L – секущая). Запишем уравнение прямой, проходящей через две точки:
|
|
x − x1 |
= |
|
y − y1 |
Þ y = |
y2 − y1 |
(x - x ) + y = λ x + d, |
||||
|
|
|
|
|
|
|
||||||
|
|
x2 - x1 |
|
y2 - y1 |
1 |
1 |
||||||
|
|
|
x2 - x1 |
|
||||||||
|
λ = |
y2 |
− y1 |
|
, |
|
|
|
|
|
||
|
x |
- x |
|
d = y − λ x . |
|
|||||||
где |
|
|
|
а |
|
|||||||
2 |
1 |
|
1 |
1 |
|
|
||||||
Найдем точки пересечения прямой L с эллиптической кривой, для этого решим совместно систему уравнений:
ì y2 = x3 + ax + b;
í
î y = λ x + d;
λ2 x2 + 2λ xd + d 2 = x3 + ax + b ;
|
|
x3 − λ 2 x2 + (a − 2λd)x + b − d 2 = 0; |
|||
по теореме Виетта |
x + x + x = −(−λ 2 ) = λ 2 |
||||
1 |
2 3 |
, но так как координаты |
|||
x , x |
известны, то |
x = λ 2 |
- x - x |
||
1 2 |
|
3 |
1 |
2 . |
|
Зная x3 , найдем y3 = λ x3 + d = λ x3 + y1 − λ x1 = λ(x3 − x1) + y1 .
В итоге имеем следующие соотношения, позволяющие найти координаты точки R:
λ = ( y2 - y1 )
( x2 - x1 ) , x3 = λ − x2 − x1, − y3 = λ(x3 − x1) + y1,
тогда y3 = λ(x1 − x3 ) − y1.
2. Точки P,Q совпадают. В этом случае прямая L становится касательной к эллиптической кривой:
44
F(x, y) = y2 − x3 − ax − b = 0 .
Найдем производную от функции, заданной неявно. Эта величина будет угловым коэффициентом λ прямой L:
dy |
|
|
|
∂F ∂ |
|
|
|
3x2 − a |
|
|
|
|
3x2 |
+ a |
|
|
|
|
|
|
|
|
|
|
|
||||||
λ = dx |
|
|
= − |
|
x |
|
|
= − 2y |
|
|
|
= |
1 |
|
|
|
|
|
|
|
|
|
|
2y1 . |
|||||||
|
P( x1,y1 ) |
∂F |
∂y |
|
|
|
P(x ,y ) |
||||||||
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
P( x ,y ) |
|
1 |
1 |
|
|
|
|||
|
|
|
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
Окончательно имеем:
λ = |
3x2 + a |
, |
x = λ2 |
− 2x , y = λ(x − x ) − y . |
||||
2y |
||||||||
|
1 |
|
|
|
|
|
|
|
|
1 |
|
3 |
1 |
3 |
1 |
3 |
1 |
3. Прямая L пересекает кривую только в двух точках (L – вертикальная прямая). В этом случае говорят, что точка R находится в бесконечности, и принимают ее за нулевую точку, которая является нейтральным элементом группы. Аддитивная инверсия точки P(x1, y1) – это точка Q(x1,− y1) , т. е. P + Q = 0. Инверсия нейтрального элемента – он сам. Для выполнения свойства замкнутости операцию сложения будем проводить с вычислением по модулю п. В результате
получим эллиптическую |
кривую |
En (a,b) |
. |
В качестве |
примера |
|||||||
|
|
|
||||||||||
построим |
множество |
элементов |
E13 (1,1) |
эллиптической |
кривой |
|||||||
|
|
|
||||||||||
y2 = x3 + x +1 с модулем |
n = 13. Найдем аддитивную инверсию для |
|||||||||||
точки |
P(4,2) . |
|
Этим |
элементом |
является |
точка |
||||||
Q(x1,− y1) = Q(4,−2) = Q(4,−2 +13) = Q(4,11) |
. |
|
Аналогично находятся |
|||||||||
|
|
|
|
|
|
|
|
|||||
остальные инверсии. Результаты сведем в таблицу: |
|
|
||||||||||
P(x, y) |
(0,1) |
(1,4) |
(4,2) |
(5,1) |
(7,0) |
|
(8,1) |
(10,6) |
(11,2) |
(12,5) |
||
Q(x,− y) |
(0,12) |
(1,9) |
(4,11) |
(5,12) |
(7,0) |
|
(8,12) |
(10,7) |
(11,11) |
(12,8) |
||
45
Замечание: верно и обратное утверждение: аддитивной инверсией для точки Q(4,11) является точка P(4,2) .
Проверим принадлежность некоторых точек множеству E13 (1,1) . Например, точка P(10,6) E11(1,1), т. к.
62mod13 = (103 +10 +1) mod13 10 ≡ 10;
или точка P(12,5):
52mod13 = (123 +12 +1) mod13 12 ≡ 12 и т. д.
Замечание: так как числа x, y – целые, то для некоторых значений y = 3,10 нет целых соответствующих значений х, а для x = 2,3,6,9 нет соответствующих значений у. Поэтому точек P(x, y) с
соответствующими координатами нет во множестве E11 (1,1) . Операцию сложения будем осуществлять по приведенным ранее
формулам, но результаты будем приводить по модулю n = 13. Найдем сумму P(4,2) + Q(10,6) . Здесь x1 = 4, y1 = 2, x2 = 10, y2 = 6 . Вычислим
λ= æ y2 - y1 ömod n = (( 6 - 2) ´(10 - 4) −1 ) mod13 = ( 4 ´6−1 ) mod13 = çè x2 - x1 ¸ø
=4´11mod13 = 5.
Здесь 6−1 − мультипликативная инверсия к 6, равная 11.
x3 = ( λ 2 - x2 - x1 ) mod13 = ( 52 -10 - 4)mod13 =11.
y3 = ( λ ( x1 − x3 ) − y1 ) mod13 = ( 5(4 −11) − 2) mod13 = −37mod13 = 2.
Точка R(11,2) E13 (1,1).
Операция умножения точки Р на целое число k означает прибавление точки Р к самой себе k раз.
46
Найдем произведение
3×P(8,1) = P(8,1) + P(8,1) + P(8,1).
|
|
|
|
|
|
P(8,1) + P(8,1) = P1(11,2), |
|
|
||||||||||||
так как |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
æ 3x12 +1ö |
|
|
|
|
|
|
|
|
−1 |
) |
mod13 = (193´7) mod13 =12. |
|||||||||
λ = ç |
2y1 |
¸mod13 = (193´2 |
|
|||||||||||||||||
è |
ø |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
x = ( λ 2 - 2x ) |
mod13 |
= ( |
144 -16) |
mod13 |
= 11. |
||||||||||||
|
|
|
3 |
|
|
|
|
1 |
|
|
|
|
|
|
|
|||||
y3 = ( |
λ ( x1 − x3 ) |
− y1 ) mod13 = (12(8 −11) −1) mod13 = −37mod13 = 2. |
||||||||||||||||||
Осталось найти сумму P1 (11,2) + P(8,1). Вычисляем |
|
|||||||||||||||||||
λ = |
æ |
y2 |
- y1 |
ömod13 = |
æ |
2 -1 |
ö mod13 = (1´3−1 ) mod13 = |
|||||||||||||
|
|
ç |
|
|
|
|
||||||||||||||
|
ç |
|
¸ |
|
|
|
|
|
11- 8 |
¸ |
|
|
|
|
|
|||||
|
è x2 |
- x1 ø |
|
|
|
|
|
è |
ø |
|
|
|
|
|
||||||
= (1´9) mod13 = 9. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
x = ( |
λ 2 - x - x |
) |
mod13 |
= |
( |
81-11- 8) |
mod13 |
= 62 |
mod13 |
=10. |
||||||||||
3 |
|
|
2 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
||||
y3 = ( |
λ ( x1 - x3 ) |
- y1 ) mod13 = ( 9( |
8 -10) |
-1) mod13 = -19mod13 = 7. |
||||||||||||||||
В итоге имеем 3×P(8,1) = P2 (10,7) E13 (1,1).
Замечание: недостатком метода эллиптических кривых является сложность установления соответствия между символами исходного
текста и точками на эллиптической кривой. Это одна из основных проблем этой криптосистемы. Для ее решения должен быть разработан алгоритм, устанавливающий соответствие между символами открытого текста (буквы, цифры) и точками на кривой
En (a,b).
Криптосистема Эль-Гамаля на основе эллиптических кривых. Алгоритм Эль-Гамаля на основе эллиптических кривых содержит те же этапы, только возведение в степень k заменена на
умножение точки P(x, y) на эллиптической кривой на целое число k.
47
Рассмотрим работу этого алгоритма на примере: зашифровать сообщение T0 (8,1), используя кривую E13 (1,1) .
|
|
1. Выберем |
P(1,4) |
и секретный ключ |
kc = 4(n = 13). |
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
2. Вычислим |
|
k0 = kc |
× A = 4× P(1,4) |
|
(в |
алгоритме |
Эль-Гамаля |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
k0 |
= pmodkc n |
– открытый ключ). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
P(1,4) + P(1,4) = R(8,12) , |
|
|
|
|
||||||||||||||
т. к. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
æ |
3x12 +1ö |
|
|
æ 3´12 +1 |
ö |
|
|
|
|
|
= ( |
|
−1 |
) |
|
|
|||||||
|
|
λ = |
ç |
2y |
¸mod n = ç |
2 ´4 |
¸mod n |
4´8 |
|
mod13 = |
||||||||||||||||||
|
|
|
|
|
è |
|
1 |
ø |
|
|
è |
|
|
|
|
ø |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= ( 4 ´5) mod13 = 7. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
x = ( λ 2 |
− 2x ) |
mod13 |
= ( |
49 − 2 ×1) |
mod13 |
= 47 |
mod13 |
= 8. |
|
|
|
|||||||||||||||
|
|
3 |
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
y3 = ( λ ( |
x1 − x3 ) |
− y1 ) mod13 = ( |
7 |
(1− 8) − 4) mod13 = −53mod13 = 12. |
||||||||||||||||||||||
|
|
Точка |
|
R(8,12) E13 (1,1). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Далее находим |
|
R(8,12) + R(8,12) = R1(11,11). |
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
æ |
3x12 +1 |
ö |
|
|
|
æ |
3´82 +1ö |
|
|
|
|
|
|
|
|
−1 |
|
|
||||||||
|
|
λ = ç |
|
|
2y |
¸mod n = |
ç |
|
|
|
¸mod13 = |
(193´11 |
|
) mod13 = |
||||||||||||||
|
|
|
|
2 ´12 |
|
|
|
|||||||||||||||||||||
|
|
è |
|
|
|
1 |
ø |
|
|
|
è |
|
|
|
ø |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= (193´6) mod13 = 1. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
x = ( λ 2 |
− 2x ) |
mod13 |
= ( |
1− 2×8) |
mod13 |
= −15 |
mod13 |
= 11. |
|
|
|
|||||||||||||||
|
|
3 |
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
y3 = ( λ ( |
x1 − x3 ) |
− y1 ) mod13 = (1( 8 −11) |
−12) mod13 = −15mod13 = 11. |
|||||||||||||||||||||||
|
|
Величины k0 (11,11), P(1,4) |
− общедоступны. |
|
|
|
|
|||||||||||||||||||||
|
|
3. Шифруем сообщение T0 (8,1), выбрав k = 2, |
|
|
|
|
||||||||||||||||||||||
C1 = 2× P(1,4) = C1(8,12), вычислено ранее (аналог a = pmodk |
n ) |
|||||||||||||||||||||||||||
C |
|
= T + kk |
|
(аналог |
b = T ×kk |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
2 |
0 |
|
0 |
|
0 |
|
0 ). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
2 ×k0 (11,11) = k1(4,2),
48
так как
æ 3x2 +1ö |
|
|
æ 3´112 +1 |
ö |
|
|
( 364´9 |
− |
1 |
) mod13 |
|
|
|
||||||||||||
λ = ç |
1 |
|
¸mod n = ç |
|
|
|
|
¸mod13 = |
|
= |
|
|
|||||||||||||
2y |
|
2 ´11 |
|
|
|
|
|||||||||||||||||||
è |
1 |
ø |
|
|
è |
|
|
|
|
ø |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= 0 ´9mod13−1 |
= 0. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
x = |
( λ |
2 - 2x ) |
modn |
= ( -2´11) |
mod13 |
= 4. |
|
|
|
|
|
|
|
|
||||||||
|
|
|
3 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
y3 = ( λ ( x1 - x3 ) |
- y1 ) mod n = -11mod13 = 2. |
|
|
|
|
|
|
|
||||||||||||||
|
|
C2 = T0 (8,1) + k1(4,2) = C2 (10,6) E13 (1,1) . |
|
|
|
|
|
||||||||||||||||||
λ |
= æ |
y2 - y1 |
|
ömod n = |
æ |
2 -1 |
ö mod13 = |
(1´9−1 ) |
mod13 = |
|
|
|
|||||||||||||
|
|
ç |
|
|
|
|
|
||||||||||||||||||
2 |
ç |
|
|
¸ |
|
|
4 - 8 |
¸ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
è x2 - x1 |
ø |
|
|
è |
ø |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
= (1´3) mod13 = 3. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
x = |
( λ2 - x - x ) |
= ( |
9 - 8 - 4) |
mod13 |
= (-3) |
mod13 |
=10. |
|
|
|
|
|
|||||||||||||
3 |
|
|
2 |
1 |
modn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
y3 = ( λ ( x1 - x3 ) - y1 ) mod n |
= ( 3´( |
8 -10) |
-1) mod13 = -7mod13 = 6. |
|
|
||||||||||||||||||||
Шифротекст C1(8,12);C2 (10,6). |
|
|
|
|
|
|
|
|
|
|
æ b |
ö |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ç |
|
|
¸ |
|
|
|
|
|
|
|
|
|
|
|
T0 |
= C2 − (kc |
×C1) |
|
|
|
|
|
kc |
|
||||||
Процедура расшифрования |
(аналог |
è a |
|
ømod n |
). |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
Знак «-» означает аддитивную инверсию к элементу |
|
kc ×C1 . |
|||||||||||||||||||||||
Находим: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
4 ×C1 (8,12) = C4 (4,2) ;
C1(8,12) + C1(8,12) = C3 (11,11) − вычислено ранее;
C3 (11,11) + C3 (11,11) = C4 (4,2) − вычислено ранее. Аддитивная инверсия для C4 (4,2) − это C(4,11).
T0 = C2 (10,6) + C(4,11) = T0 (8,1),
так как
49
