Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы криптологии. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
570 Кб
Скачать

Замечание: величина а шифротекста 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 ´61 ) mod13 = çè x2 - x1 ¸ø

=4´11mod13 = 5.

Здесь 61 − мультипликативная инверсия к 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

P(x, y)

Найдем произведение

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´31 ) 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

(18) 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

= (

12×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 ´9mod131

= 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´91 )

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

= ( (

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