- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ
- •2. ИСТОРИЧЕСКИЕ ШИФРЫ
- •3. МОДУЛЯРНАЯ АРИФМЕТИКА
- •4. АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA
- •5. ПРОСТЫЕ ЧИСЛА. ГЕНЕРАЦИЯ ПРОСТЫХ ЧИСЕЛ
- •6. АТАКА ВИНЕРА НА RSA
- •7. РЮКЗАЧНЫЙ МЕТОД ШИФРОВАНИЯ
- •9. КРИПТОСИСТЕМА НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
- •10. СИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ
- •11. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES
- •12. СТАНДАРТ КРИПТОСИСТЕМЫ РОССИИ ГОСТ 28147-89
- •13. ДЕЙСТВИЯ НАД ПОЛИНОМАМИ В ПОЛЕ
- •14. УСОВЕРШЕНСТВОВАННЫЙ СТАНДАРТ ШИФРОВАНИЯ AES
- •15. УСТАНОВЛЕНИЕ ПОДЛИННОСТИ ОБЪЕКТА
- •16. КРИПТОГРАФИЧЕСКИЕ ХЕШ-ФУНКЦИИ
- •СПИСОК ЛИТЕРАТУРЫ
В Ы С Ш А Я М А Т Е М А Т И К А Б В Г Д
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 ) |
||
…………………………………………………………………. |
|||
rk−2 |
= rk−1 ×qk + rk |
НОД(rk−2 ,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.
Расширенный алгоритм Евклида. Преобразуем алгоритм Евклида:
rk−2 = rk−1 ×qk + rk k = |
|
|
r0 = a,r1 = b. |
2,m |
, |
||
|
|
|
|
Выразим все остатки через а, b: |
|
|
|
rk = rk−2 − rk−1 ×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 – простое число) число
элементов в приведенном наборе составит |
pk−1( p −1). |
|
|
||
Функция Эйлера ϕ(n) задает число элементов в приведенном |
||
наборе вычетов |
по модулю п. Для простого числа p ее значение |
|
определяется по |
следующему правилу: |
|
n= p ϕ(n) = p −1
n= p2 ϕ(n) = p( p −1)
17
………………………
n= pk ϕ(n) = pk−1 ( 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.
Вычисление обратных величин. В арифметике действительных чисел задача нахождения обратной величины a−1 для ненулевого числа а (a ×a−1 = 1) проста и однозначна. Например, для
|
a−1 = |
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. Умножая левую и правую части равенства на a−1 , имеем
a−1 = aϕ (n)−1mod n .
19
