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

В Ы С Ш А Я М А Т Е М А Т И К А Б В Г Д

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

1

2

3

4

5

Используя перестановку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

æ

1

2

3

4

5

ö T0

 

 

 

 

 

 

 

 

 

 

 

 

σ = ç

2

4

1

3

5

¸

 

 

 

 

 

 

 

 

 

 

 

 

 

è

øTш ,

 

 

 

 

 

 

 

 

разбиваем открытый текст на блоки по 5 букв, последний блок дополняем до 5 букв произвольным образом и осуществляем внутри каждого блока перестановку σ :

Ы Ш В С А М Т Я А Е А И М Т К Б Г А В Д 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

Процесс расшифрования осуществляем с помощью перестановки:

Tш : σ 1 = æ1 2 3 4 5öTш çè3 1 4 2 5¸ø Tо

В Ы С Ш А Я М А Т Е М А Т И К А Б В Г Д

Криптоанализ: перестановочный шифр поддается взлому; если отправителю удается навязать известный нам открытый текст, тогда, получив от отправителя его шифрованную версию, удается определить перестановку σ .

3. МОДУЛЯРНАЯ АРИФМЕТИКА

Основой современной криптологии наряду с теорией вероятностей, математической статистикой, теорией чисел является алгебра остатков (модулярная арифметика). Обозначим множество всех натуральных чисел 1, 2, 3, 4 ….. через N , а множество целых чисел 0,±1,±2,±3,±4... – через Z. Пусть n N , а числа a,b Z .

Говорят, что a,b сравнимы по модулю n (конгруэнтны), если их разность (a b) делится на n нацело:

a n b = k,k Î Z Þ b = a - n ´k .

12

Этот факт записывается в виде

amod n = b.

Остаток b от деления a на n называется вычетом. Найти вычеты:

1) 19mod5 = 4 ; 2) 23mod7 = 2.

Замечание:

1) Если 0 a < n, то amod n = a ;

3mod5 = 3.

2) Если a < 0, то к этому числу можно добавить k ×n, так чтобы сумма a + k ×n стала положительной, а затем найти вычет:

3mod5 = (3 + 5×1)mod5 = 2mod5 = 2 ;

15mod7 = (15 + 7 ×3)mod7 = 6mod7 = 6 .

Необходимо отметить, что разные числа могут иметь одинаковые вычеты по одному и тому же модулю (свойство цикличности):

2mod7 = 9mod7 = −5mod7 = 2.

Набор целых чисел от 0 до n 1 называют полным набором вычетов по модулю n. Пусть n = 3, найти вычеты для 3, 4, 5, 6, 7, 8:

3mod3 = 0, 4mod3 = 1, 5mod3 = 2;

6mod3 = 0 , 7mod3 = 1, 8mod3 = 2.

Из приведенного примера видно, что полный набор вычетов для n = 3 составляет 0, 1, 2.

Операция приведения числа по модулю n обладает следующими свойствами:

1)(a ± b)mod n = ( amodn ± bmod n ) mod n ;

(5 + 8)mod3 = 13mod3 = 1,

13

или

(5 + 8)mod3 = (5mod3 + 8mod3 )mod3 = (2 + 2)mod3 = 1;

2)(a × b)mod n = ( amod n × bmod n ) mod n ;

(5× 8)mod3 = 40mod3 = 1,

или

(5× 8)mod3 = (5mod3 × 8mod3 )mod3 = (2× 2)mod3 = 1.

На основе последнего свойства реализуется алгоритм быстрого возведения числа а в степень x:

axmod n (x N),

который используется при работе с очень большими числами.

28mod3 = 256mod3 = 1,

или

28mod3 = (( 22mod3 ) 2mod3 )2mod3 = ((1) 2mod3 )2mod3 = 1.

Замечание: если число x не является числом 2m , то x необходимо записать в двоичной системе исчисления, а затем воспользоваться алгоритмом быстрого возведения в степень:

1) 46mod7. 610 = 1102 = 4 + 2,

тогда предварительно вычисляются:

42mod7 = 16mod7 = 2 ;

44mod7 = ( 42mod7 )2mod7 = ( 2) 2mod7 = 4,

тогда

46mod7 = (44+2 )mod7 = ( 44mod7 ×42mod7 )mod7 = ( 4 ×2) mod7 = 1.

14

2)311mod7. 1110 = 10112 = 8 + 2 +1;

32mod7 = 2;

34mod7 = ( ( 32 )mod7 )2mod7 = 22mod7 = 4;

38mod7 = ( 34 ) 2mod7 = 42mod7 = 2;

311mod7 = ( 38mod7 ×32mod7 ×3 mod7 )mod 7 = ( 2 ×2 ×3) mod7 = 5.

Наибольший общий делитель. Алгоритм Евклида. Целое число b делит без остатка число а тогда и только тогда, когда a = k × b, где k – целое число. В этом случае b называют делителем числа а. Число а называют простым, если его единственными делителями будут 1 и само число а, в противном случае число а называют составным.

Наибольшим общим делителем чисел а и b (НОД(а, b)) называют наибольшее целое, делящее одновременно а и b. Если НОД(а, b)=1, то а и b – взаимно простые числа. Наибольший общий делитель может быть вычислен с помощью алгоритма Евклида, в основу которого положена следующая лемма.

 

Лемма: Если

a = b ×q + r , то НОД(а, b)= НОД(b, r ), где r –

остаток от деления.

 

 

 

Пусть a > b . Применим эту лемму несколько раз:

a = b ×q1 + r1

НОД(a, b) = НОД(b,r1)

b = r1 ×q2 + r2

НОД(b,r1)=НОД(r1,r2 )

r1 = r2 ×q3 + r3

НОД(r1,r2 )=НОД(r2 ,r3 )

………………………………………………………………….

rk2

= rk1 ×qk + rk

НОД(rk2 ,rk -1)=НОД(rk -1,rk )

r

= r ×q +

НОД(r

,r )=r

k 1

k k 1

k 1

k k

15

Отсюда НОД(а, b)= НОД(rk ). Отсюда НОД(3576, 244).

3576 = 244×14 +160

244 = 160×1+ 84

160 = 84×1+ 76

84 = 76×1+ 8

76 = 8× 9 + 4

8 = 4× 2

НОД(3576, 244)=4.

Расширенный алгоритм Евклида. Преобразуем алгоритм Евклида:

rk2 = rk1 ×qk + rk k =

 

 

r0 = a,r1 = b.

2,m

,

 

 

 

Выразим все остатки через а, b:

 

 

rk = rk2 rk1 ×qk

 

 

k = 2 r2 = r0 r1 ×q2 = a b ×q2

 

 

k= 3 r3 = r1 r2 ×q3 = b q3 (a b ×q2 ) = −q3a + b(1+ q2 ×q3 )

ит. д.

В итоге имеем

rm = sm ×a + tm ×b.

Расширенный алгоритм Евклида по заданным числам a, b находит такие числа r, s, t, что

r= НОД(a,b) = s ×a + t ×b.

Вчастности, если a, b взаимно простые (r=1),

1 = s ×a + t ×b.

16

Расширенный алгоритм Евклида будет использоваться в дальнейшем при нахождении обратных величин.

Приведенный набор вычетов. Функция Эйлера. Как уже отмечалось ранее, для числа n полный набор вычетов по модулю n состоит из целых чисел от 0 до n−1. Выделим из этого набора подмножество вычетов взаимно простых с n. Такое подмножество называют приведенным набором вычетов. Так, для n=13 полный набор вычетов состоит из чисел 0, 1, 2, …, 12. При формировании приведенного набора из полного набора удаляется только один элемент 0. Поэтому для чисел n=13 приведенный набор: 1, 2, 3, …, 12.

Вывод: для простого числа p приведенный набор вычетов состоит из p-1 элемента.

Рассмотрим составное число n = 15 = 3× 5. Для этого числа приведенный набор вычетов состоит из чисел 1, 2, 4, 7, 8, 11, 13. 14. Число элементов 8 = 2× 4.

Вывод:

Если

число n = p × q (p,

q – простые

числа), то

приведенный

набор

вычетов состоит из

( p 1)× (q 1)

элементов.

Если n = 9 = 32 , то приведенный набор вычетов: 1, 2, 4, 5, 7, 9 и состоит из 6 элементов, поэтому при n = pk (p – простое число) число

элементов в приведенном наборе составит

pk1( p 1).

 

Функция Эйлера ϕ(n) задает число элементов в приведенном

наборе вычетов

по модулю п. Для простого числа p ее значение

определяется по

следующему правилу:

 

n= p ϕ(n) = p 1

n= p2 ϕ(n) = p( p 1)

17

………………………

n= pk ϕ(n) = pk1 ( p 1)

n= p ×q ϕ(n) = ( p 1)(q 1) , q – простое число,

m

m

( p 1),

n = pki ,ϕ(n) = pki 1

i

i

i

i=1

i=1

 

m

где i=1 произведение m сомножителей.

Замечание. Функция Эйлера играет важную роль в асимметричном шифровании.

Теорема Эйлера. Пусть a, n – взаимно простые числа (НОД(n, a)=1), тогда

amodϕ (n)n = 1.

Пример: n=5, a=3 НОД(5,3)=1.

ϕ(5) = 5 1 = 4;

aϕ (n)mod n = 34mod5 = 81mod5 = 1.

Вычисление обратных величин. В арифметике действительных чисел задача нахождения обратной величины a1 для ненулевого числа а (a ×a1 = 1) проста и однозначна. Например, для

 

a1 =

1

=

1

a = 5

обратная величина

a

 

5 .

В модулярной арифметике нахождение обратной величины х для а

(a ×x)modn = 1

является очень сложной и неоднозначной задачей. При решении этой задачи возможны следующие случаи:

18

1. Если а и n взаимно простые числа, то решение существует.

Действительно (a ×x)mod n является перестановками элементов полного набора вычетов 0, 1, 2 … n-1. Поясним этот факт на примере: n=5,

а=3. Вычислим (3×x)mod5 для х=0, 1, 2, 3, 4:

(3×0)mod5 = 0, (3×1)mod5 = 3,

(3×2)mod5 = 1, (3×3)mod5 = 4,

(3×4)mod5 = 2,

т. е. имеет место перестановка 0, 3, 1, 4, 2 из приведенного набора вычетов 0, 1, 2, 3, 4. Среди элементов этой перестановки обязательно найдется число, равное 1, а соответствующий этой 1 множитель х=2 и является обратной величиной к а=3 по модулю 5.

2. Если НОД(n, a)≠1, то решения нет. Пусть например n=4, а=2.

НОД(4, 2)=2≠1. Вычислим (2 ×x)mod 4 для х=0, 1, 2, 3:

(2×0)mod 4 = 0, (2 ×1)mod4 = 2, (2×2)mod4 = 0, (2 ×3)mod 4 = 2,

(3×4)mod5 = 2.

Из приведенного примера видно, что нет такого значения х:

(a ×x)mod n = 1.

Обратную величину можно найти различными способами:

1. Проверить поочередно значения х=2, 3, …, n-1, пока не будет

найдено а:

(a ×x)mod n = 1.

 

Замечание: Если n велико (сто пятьдесят десятичных цифр), то перебор значений х невозможен.

2. Использование теоремы Эйлера aϕ (n)mod n = 1. Умножая левую и правую части равенства на a1 , имеем

a1 = aϕ (n)1mod n .

19