Краткий справочник по математике, на которой основана

реклама
1
Краткий справочник по математике, на которой основана криптография
Павел Исаев
Введение .........................................................................................................................................1
Теория вероятностей .....................................................................................................................3
Основные определения и факты ..............................................................................................3
Условные вероятности ..............................................................................................................5
Случайные переменные ............................................................................................................5
Биноминальное распределение ................................................................................................6
Задача про день рождения ........................................................................................................7
Случайные функции ..................................................................................................................9
Теория информации ....................................................................................................................12
Взаимная информация ............................................................................................................13
Теория сложности........................................................................................................................14
Базовые понятия ......................................................................................................................14
Асимптотическое приближение .............................................................................................16
Классы сложности ...................................................................................................................18
Случайные алгоритмы ............................................................................................................22
Теория чисел ................................................................................................................................24
Целые ........................................................................................................................................24
Алгоритмы в кольце целых чисел Z ......................................................................................26
Вычеты по модулю n ...............................................................................................................29
Алгоритмы в Z n ......................................................................................................................34
Введение
Наука, называемая криптографией, базируется на многочисленных
разделах математики. Цель данной публикации, ввести читателя в курс дела
и предоставить, может быть поверхностный, справочный материал для
дебютантов
общественной
криптографии,
получившей
широкое
распространение в последнее время.
В определениях и фактах теории вероятностей, информационной
теории, теории
алгебры
и
комплексного переменного, теории чисел, абстрактной
конечных
полей,
применяемых
в
криптографии,
использовать следующие обозначения.
Обозначения:
1.
 - множество целых чисел вида ...  2,1,0.1.2....;
2.
a

Q - множество рациональных дробей вида  a, b  Z , b  0 ;
b

будем
2
3.
R - множество действительных чисел;
4.
 - константа, причем   3,14159 ;
5.
e - основание натурального логарифма, причем e  2,71828 ;
6.
a, b - множество целых чисел
x , удовлетворяющих условию
a  x  b;
7.
x - ближайшее целое меньшее или равное x . Например, 5,2  5
и  5,2  6 ;
8.
x - ближайшее целое большее или равное x . Например, 5,2  6
и  5,2  5 ;
9.
Если А - конечное множество, то А обозначается количество
элементов
во
множестве
и
А
называется
мощностью
множества А ;
10.
a  A означает, что элемент a принадлежит множеству А ;
11.
A  B означает, что А является подмножеством B ;
12.
A  B означает, что А является составным подмножеством B , т.е.
A B и A B;
13.
Пересечение
множеств
А
и
B
обозначается
А
и
B
обозначается
A  B  x x  A _ and _ x  B;
14.
Объединение
множеств
A  B  x x  A _ or _ x  B;
15.
Разность множеств А и B обозначается A  B  x x  A _ and _ x  B;
16.
Декартовым произведением множеств
множество
пар
А
и
B
называется
A * B  (a, b) a  A _ and _ b  B,
например
a1 , a2 * b1 , b2 , b3   (a1 , b1 ), (a1 , b2 ), (a1 , b3 ), (a2 , b1 ), (a2 , b2 ), (a2 , b3 );
17.
Функцией или отображением f : A  B называется закон, по
которому каждому a  A соответствует точно один b  B . Если
a  A отображается на b  B , то говорят, что b - образ a , а a -
3
прообраз b и записывают это как f (a)  b . При этом множество
А входное для функции f , B - выходное множество для f .
18.
Функцией f : A  B называется «вложением» 1-1 (один в один)
или инъективной, если каждому элементу из множества B
соответствует строго один элемент из А . Иными словами
f (a1 )  f (a2 ) подразумевает a1  a2 .
19.
Функцией
f :AB
сюръекцией,
если
называется
каждому
«наложением» (onto) или
элементу
из
множества
B
соответствует элемент из А .
20.
Функцией f : A  B называется биекцией, если она одновременно
и инъекцией, и сюръекцией. Если существует биекция между
двумя конечными множествами А и B , то А  B . Если f биекция множества
А
самого в себя, то
f
называется
перестановкой на А .
21.
ln x - натуральный логарифм от переменной x , т.е. логарифм x
по основанию e .
22.
log x - логарифм от переменной x по основанию 2.
23.
exp( x ) - показательная функция e x .
24.

25.

26.
Для
n
i 1
ai - обозначает сумму a1  a2  ...  an
n
i 1
ai - обозначает произведение a1 * a2 * ... * an
положительных
целых
n функция
факториал
n! n * (n  1) * (n  2) * ... *1 . По соглашению 0! 1.
Теория вероятностей
Основные определения и факты
1.
Определение. Эксперимент - процедура, которая выдает один
результат из допустимого набора результатов. Индивидуальные возможные
результаты называются простыми событиями. Набор всех возможных
4
результатов называется
пространством событий. В криптографии
рассматриваются только дискретные
пространства событий, т.е. с
конечным числом возможных состояний (результатов). Простые события из
пространства событий S будем обозначать s1 , s 2 ,..., s n .
2.
событий
Определение. Вероятностным распределением P на пространстве
S
является последовательность вероятностей
положительных
чисел,
сумма
которых
равна
1.
p1 , p2 ,..., pn
-
Вероятность
pi
интерпретируется как-то, что простое событие s i будет являться выходным
результатом эксперимента.
3.
Определение.
Событие
E
-
подмножество
множества
пространства событий S . Вероятность того, что событие E произойдет,
будем обозначать P (E ) . Это число является суммой всех вероятностей p i
простых событий s i составляющих E . Если si  S , P({si }) , то для простоты
обозначается P( si ) .
4.
Определение. Если событие E состоит из дополнительных
событий, являющихся простыми событиями, не входящими в другое
множество E , это обозначается E .
5.
Факт. Пусть множества E  S оба события. Тогда:
i) 0  P( E )  1 , кроме того P ( S )  1 и P()  0 , где  - пустое
множество;
ii) P( E )  1  P( E ) ;
iii) Если результаты в S равновероятны, тогда P( E ) 
6.
Определение.
взаимоисключающими,
Два
если
события
E1
P( E1  E2 )  0 .
и
Т.е.
.
одновременное
Факт. Пусть множества E1 и E2 два события. Тогда:
i) Если E1  E2 , то P( E1 )  P( E2 ) ;
S
называются
E2
возникновение событий невозможно.
7.
E
5
ii) P( E1  E2 )  P( E1  E2 )  P( E1 )  P( E2 ) . Однако, если E1 и E2
взаимоисключающие события, тогда P(E1  E2 )  P(E1 )  P(E2 ) .
Условные вероятности
Определение. Пусть множества E1 и E2 два события с P( E1 )  0 и
1.
P( E2 )  0 , тогда условной вероятностью P( E1 E2 ) называется выражение вида
P( E1 E2 ) 
P( E1  E2 )
, которая оценивает вероятность того, что, произойдет
P( E 2 )
событие E1 при условии произошедшего события E2 .
2.
Определение. События E1 и E2 называются независимыми, если
P( E1  E2 )  P( E1 ) P( E2 ) .
3.
Факт. (Формула Байеса) Если
E1
вероятностями P( E1 )  0 и P(E2 )  0 , тогда P( E1 E 2 ) 
и
E2
два события с
P ( E1 ) P ( E 2 E1 )
P( E 2 )
.
Случайные переменные
Пусть S - пространство событий с вероятностным распределением P .
1.
Определение. Случайной переменной X является функция, по
которой из множества S выбирается действительный член этого множества.
Для каждого простого события si  S , X назначает реальное значение X ( si ) .
Так как S
- конечное множество, функция X может принимать конечное
число значений.
2.
Определение. Пусть X - случайная переменная из множества S .
Ожидаемое значение или математическое ожидание X вычисляется по
формуле E ( X )  s S X ( si ) P( si ) .
i
3.
Факт. Пусть X - случайная переменная из пространства событий
S , тогда E ( X )  xR xP( X  x) .
4.
Факт. Если X 1 , X 2 ,..., X m случайные переменные из множества S , а
a1 , a2 ,..., am реальные члены, то E (i 1 ai X i )  i 1 ai E ( X i ) .
m
m
6
Определение. Разницей случайных переменных X и средним
5.
положительным числом  называется Var ( X )  E (( X   ) 2 ) . Стандартным
отклонением от случайной переменной X
квадратный корень значения Var ( X ) .
маленькую
разницу,
большие
называется положительный
Если случайная переменная имеет
отклонения
от
среднего
значения
маловероятны. Это утверждение уточняется ниже.
6.
Факт. (Неравенство Чебышева). Пусть X случайная переменная
с средним положительным числом   E ( X ) и разницей  2  Var( X ) . Тогда
для любого t  0 , P( X    t ) 
2
t2
.
Биноминальное распределение
1.
Определение. Пусть n и k
- целые положительные числа.
n
Биноминальный коэффициент   - число различных путей выбора k
k 
различных объектов из n различных объектов, порядок выбора не важен.
2.
Факт. (Свойства биноминальных коэффициентов).
n
n!
i)   
;
 k  k!n  k !
n
 n 
 

;
ii)    
k
nk

 n  1  n   n 
     
 .
 k  1  k   k  1
iii) 
3.
Факт (Биноминальная теорема). Для любых действительных a , b
n
k 
и положительного целого n справедливо (a  b) n  k 0  a k b nk .
n
4.
Определение. Испытания Бернулли – эксперимент с двумя
возможными исходами, которые называются успех и неудача.
7
5.
Факт. Предположим, что вероятность успеха в испытании
Бернулли p . Тогда вероятность k успехов в последовательности из n таких
n
испытаний   p k (1  p) nk , для каждого 0  k  n .
k
 
6.
Определение. Распределение вероятностей по вышеописанному
факту называется биноминальным распределением.
7.
Факт. Ожидаемое число успехов в последовательности из n
независимых испытаний Бернулли, причем каждое с вероятностью p ,
составляет np . Разница числа успехов составляет np (1  p ) .
8.
Факт (Закон больших чисел). Пусть X
- случайная переменная,
обозначающая число успехов в n независимых испытаниях Бернулли, с
вероятностью успеха p в каждом испытании, тогда для любого   0 ,
P( X  p   )  0 , когда n   . Другими словами, с ростом n количество
успехов стремится к p .
Задача про день рождения
1. Факт.
i) Для положительных m и n , причем m  n , число m (n )
определяется как m ( n)  m(m  1)(m  2)...(m  n  1) ;
ii) Для положительных m и n , причем m  n . Число Стирлинга
m 
n
m 
n
второго рода   определяется как   
0
   1 . Символ
0
n
1 n
(1) n  k  k m . С исключением

n! k 0
k 
m 
  подсчитывает число возможных способов деления
n
множества m на n не пустых подмножеств.
2.
Факт. (Классическая задача выборки с возвратом). Корзина имеет
m пронумерованных шаров от 1 до m . Предположим, что n шаров
вынимаются по одному, их номера заносятся в список, и они возвращаются в
корзину. Вероятность, что точно t различных шаров будут вытянуты,
8
n  m ( t )
, 1  t  n . Задача дней рождения –
(n)
t  m
вычисляется по формуле P1 (m, n, t )   
частный случай классической задачи выборки с возвратом.
Факт.
3.
(Задача
дней
рождения).
Корзина
содержит
m
пронумерованных шаров от 1 до m . Предположим, что n шаров вынимаются
по одному, их номера заносятся в список, и они возвращаются в корзину.
i) Вероятность по крайней мере одного совпадения, т.е. что один и тот
же
шар
будет
вытащен
P2 (m, n)  1  P1 (m, n, n)  1 
дважды,
вычисляется
m (n)
, 1  n  m . Если n  O(m)
mn
m   , тогда P2 (m, n)  1  exp( 
по
формуле
(см. п.2.55) и
n(n  1)
1
n2
 O( ))  1  exp( 
).
2m
2m
m
ii) При m   ожидаемое число совпадений в выборке составит
m
2
.
Вышеприведенные формулы называются задачей или парадоксом дней
рождений, так как вероятность, что у двух людей в комнате из 23 человек,
пришедших на день рождения, дни рождения совпадают, очень высока и
составляет P2 (365,23)  0,507 . Причем величина P2 (365, n) быстро увеличивается
с ростом n , например P2 (365,30)  0,706 . Различные виды этой задачи
рассматриваются в следующих пунктах. Предположим, что имеются две
корзины, одна содержащая m белых шаров от 1 до m , а другая содержащая
m красных шаров от 1 до m . Первые n1 шаров выбираются из первой
корзины и заносятся в свой список, затем n1 шаров выбирается из второй
корзины и заносится в другой список. Надо посчитать число совпадений
между двумя списками.
4
то
Факт. (Модель А). Если шары из обеих корзин брались с возвратом,
вероятность,
P3 (m, n1 , n2 )  1 
1
m
n1  n2
по
m
t1 ,t 2
t1 t 2
крайней
n1 n2 
   ,
 t1  t 2 
мере,
одного
совпадения
где суммирование ведется по всем
9
0  t1  n1 ,0  t 2  n2 .
Если
n2
P3 (m, n1 , n2 )  1  exp( 
m
5
и
n  n1  n2 , n  O(m)
m ,
1 
n2

1  O( m ))  1  exp(  m ) .
Факт. (Модель В). Если шары из обеих корзин брались без возврата,
то вероятность, по крайней мере, одного совпадения P4 (m, n1 , n2 )  1 
Если
и
n1  O(m), n2  O(m)
P4 (m, n1 , n2 )  1  exp( 
6
то
n1 n2
m
m ( n1  n2 )
.
m ( n1 ) m ( n2 )
m ,
то
1 
 n1  n2  1
 O( )  ) .
1 
2m
m 

Факт. (Модель С). Если n1 шаров из первой корзины брались с
возвратом, а n 2 шаров брались из второй корзины без возврата, то
вероятность,
по
P5 (m, n1 , n2 )  1  (1 
крайней
n2 n1
) .
m
P3 (m, n1 , n2 )  1  exp( 
n1 n2
m
Если
мере,
одного
совпадения
n1  O(m), n2  O(m)
и
в
списках
m ,
то
n1 n2
1 

1

O
(
)
)

1

exp(

).

m
m 

Случайные функции
1.
Определение. Пусть
Fn обозначает коллекцию (множество) всех
функций (mappings), отображающих конечное множество размера n само на
себя. Модель, где рассматриваются случайные элементы из множества Fn ,
называется моделью со случайными функциями. Будем рассматривать только
случайные, равновероятные функции из множества Fn . Такие функции часто
применяются в криптографии. Отметим, что мощность множества Fn  n n ,
откуда вероятность выбора уникальной функции из множества Fn составит
1
nn
.
2.
Определение. Пусть f - функция из множества Fn с областью
возможных значений 1,2,..., n. Функциональный граф для функции f
- это
направленный граф с вершинами из множества возможных значений 1,2,..., n
и ребрами - упорядоченными парами ( x, f ( x)) для всех x  1,2,..., n.
10
3.
Пример.
(Функциональный
граф).
Определим
следующим
f : {1,2,...,13}  {1,2,...,13}
функцию
образом
f (1)  4, f (2)  11, f (3)  1, f (4)  6, f (5)  3, f (6)  9, f (7)  3,
f (8)  11, f (9)  1, f (10)  2, f (11)  10, f (12)  4, f (13)  7 . Функциональный граф для
этой функции
f
представлен на рис.№1. Из рисунка видно, что
функциональный граф может состоять из нескольких компонент (связанных
подграфов). Компонент в свою очередь состоит из замкнутого цикла и
некоторого количества подходов (деревьев), входящих в цикл.
4.
Факт. Если значение n имеет тенденцию к бесконечности, то
справедливы следующие утверждения относительно функционального графа
случайной функции:
13
12
4
6
7
3
9
1
5
10
11
8
2
рис.№1
i) Ожидаемое число компонент графа -
1
ln( n) .
2
ii) Ожидаемое число узлов, образующих цикл -
n
2
.
11
iii) Ожидаемое число терминальных узлов (узлов, не имеющих
входящих в них дуг) - n e .
iv) Ожидаемое число
повторяющихся узлов ( x
k -ых
-
k -ый
f ( f (... f ( y )...) для некоторого y ) есть (1   k )n ,
повторяющийся узел если x  


k _ раз
где  k вычисляется по рекурсии  0  0, k 1  e 1 для k  0 .
k
5.
Определение. Пусть f
1,2,..., n в себя, и пусть
следующим образом:
- случайная функция, отображающая
u  1,2,..., n. Определим последовательность u 0 , u1 , u 2 ,...
u0  u ,
ui  f (ui 1 )
для всех
i  0.
В терминах
функционального графа для функции f эта последовательность описывает
дорожку, соединяющуюся с циклом графа.
i) Число дуг в дорожке называется длиной хвоста для u и обозначается
 (u ) ;
ii) Число дуг в цикле называется длиной (периодом) цикла для u и
обозначается  (u ) ;
iii) Общая длина для u вычисляется по формуле  (u )   (u )   (u ) ;
iv) Размер дерева для u - число дуг в максимально большой дорожке,
подводящей к циклу среди всех компонентов, составляющих u ;
v) Компонентный размер для u - число дуг в компоненте, которая
содержит u ;
vi) Количество предшественников для u - число повторений в u .
6.
Факт. При условии, что n   ожидаются следующие значения
вышеопределенных параметров: (i) длина хвоста
(iii) общая длина
n
2
; (iv) размер дерева
(vi) количество предшественников
7.
n
8
n
8
; (ii) длина цикла
n
8
;
n
2n
; (v) компонентный размер
;
3
3
.
Факт. При условии, что n   , ожидаются максимальные
значения для длин хвоста, цикла, общая длина у случайных функций из
12
множества Fn , которые составляют c1  0,78248 , c2  1,73746 и c3  2,4149
соответственно.
Факты из п.6 и п.7 показывают, что графы функциональности для
случайных функций чаще всего сгруппированы в одном гигантском
компоненте и имеют небольшое количество деревьев, подводящих к циклу.
Также, чаще всего, циклы имеют большой период (размер), а
подъездные дорожки - нет.
Теория информации
1.
Энтропия. Пусть X
- случайная переменная, принимающая
значения из конечного множества x1 , x2 ,..., xn с вероятностями P( X  xi )  pi ,
где 0  pi  1 для каждого i из интервала 1  i  n и
аналогичные
случайные
переменные.

n
i 1
pi  1 . Пусть Y и Z -
Энтропией
X
называется
математическая мера количества информации, обеспеченной наблюдениями
за случайной переменной X . Или энтропия – мера неопределенности до
начала наблюдений. Энтропия также может быть полезна для оценки
среднего числа бит необходимых для кодировки случайной переменной X .
2.
Определение.
Энтропия
или
мера
неопределенности
случайной переменной X определяется как H ( X )  i 1 pi log pi  i 1 pi log
n
где по соглашению  pi log pi  pi log
3.
n
для
1
,
pi
1
 0 , если pi  0 .
pi
Факт. (Свойства энтропии). Пусть X случайная переменная,
которая может принимать n значений.
i)
0  H ( X )  log n .
ii)
H ( X )  0 , если только pi  1 для некоторого i и
p j  0 для всех
j  i , то есть имеется некоторая не уверенность в результате.
iii)
H ( X )  log n , если только p i 
1
для всех значений i из диапазона
n
0  i  n , то есть имеется некоторая уверенность в результате.
13
4.
Определение.
переменных
Объединенная
и
X
Y
энтропия
вычисляется
для
случайных
по
формуле
H ( X , Y )   P( X  x, Y  y ) log( P( X  x, Y  y )) , где суммирование ведется по
x, y
всем возможным значениям X и Y . Формула расширяется до любого
количества объединяемых случайных переменных.
5.
Факт. Пусть H ( X , Y )  H ( X )  H (Y ) , причем равенство наступает
тогда и только тогда, когда переменные X и Y независимы.
6.
при
Определение. Условная энтропия для случайной переменной X
условии,
что
Yy
вычисляется
по
формуле
H ( X Y  y )   P( X  x Y  y ) log( P( X  x Y  y )) , где суммирование ведется по
x
всем возможным значениям X . Условная энтропия для переменной X при
данном Y также называется уклонением Y от X , которая вычисляется по
формуле H ( X Y )   P(Y  y) H ( X Y  y) , где суммирование ведется по всем
y
возможным значениям Y .
7.
Факт. (Свойства условной энтропии).
i)
Величина H ( X Y ) мера неопределенности в значении X после
наблюдений за Y .
ii)
H(X | Y)  0 и H(X | X )  0.
iii)
H ( X | Y )  H ( X )  H (Y | X )  H (Y )  H ( X | Y ) .
iv)
H ( X | Y )  H ( X ) , причем равенство наступает тогда и только тогда,
когда переменные X и Y независимы.
Взаимная информация
1.
Определение. Взаимной информацией или трансформацией
случайных переменных X и
Y называется I ( X ; Y )  H ( X )  H ( X | Y ) . Точно
также вычисляется взаимная информация для большего количества
случайных переменных I ( X ; Y , Z )  H ( X )  H ( X | Y , Z ) .
14
2.
Факт. (Свойства).
i) Взаимная информация I ( X ; Y ) характеризует количество информации
содержащейся в Y о X . Аналогично, взаимная информация I ( X ; Y , Z )
характеризует количество информации, содержащейся в Y , Z и X .
ii) I ( X ; Y )  0 .
iii) I ( X ; Y )  0 , если X и Y независимые случайные величины, т.е Y не
содержит никакой информации о X .
iv) I ( X ; Y )  I (Y : X ) .
3.
Определение. Условная трансформация X и Y при данном Z
называется I Z ( X ;Y )  H ( X | Z )  H ( X | Y , Z ) .
4.
Факт. (Свойства условной трансформации).
i).Условная взаимная информация I Z ( X ;Y ) может интерпретироваться
как количество информации в Y о X при условии уже произошедшего
Z.
ii) I ( X ;Y , Z )  I ( X ;Y )  I Y ( X ; Z ) .
iii) I Z ( X ;Y )  I Z (Y : X ) .
Теория сложности
Базовые понятия
Главная задача теории сложности состоит в том, чтобы предоставить
механизмы для классификации вычислительных алгоритмов согласно
имеющимся ресурсам, необходимым для их решения. Классификация не
должна зависеть от специфики вычислительной модели, и должна учитывать
трудность решения поставленной задачи. Оцениваемые ресурсы могут быть
разными (время, требуемая память, разрядность, необходимое число
процессоров, и т.д.), но обычно это все-таки время, и иногда память.
1. Определение.
Алгоритмом
называется
вычислительная
процедура, которая обрабатывает входные переменные, превращая их в
процессе работы алгоритма в выходные переменные.
15
Конечно, термин «вычислительная процедура» с точки зрения
математики некорректен. Это можно исправить,
используя формальные
вычислительные модели типа машин Тьюринга (машины со
случайным
доступом и булевскими циклами). Но проще, чтобы не связываться со
сложностью этих моделей, а относиться к алгоритму как к программе для
определенного компьютера, написанной на некотором определенном языке
программирования. Эта программа должна брать переменные, подаваемые на
вход, и прекращать свою работу с определенными выходными переменными.
Обычно представляет интерес найти наиболее эффективный (т. е.,
самый быстрый) алгоритм для решения вычислительной проблемы. Время,
которое требуется алгоритму до своего завершения, зависит от входных
данных, вытекающих из постановки задачи. Оценка используемого времени
должна быть точной, особенно когда сравнивается выполнение двух
алгоритмов.
2. Определение. Размер входных данных обычно измеряется в
битах,
необходимых,
чтобы
закодировать
входную
и
выходную
последовательность по соответствующим схемам кодировки. Иногда размер
входных данных измеряется числом входных объектов.
3. Пример. (Размеры некоторых объектов).
i) Число бит в двоичном представлении n положительных целых чисел
равно 1 log n . Для простоты, n будет занимать log n бит.
ii) Если функция
f
является полиномиальной с наибольшим
показателем k , каждый коэффициент которой является положительным
целым числом не больше n , то для своего представления функция f
потребует (1  k ) log n бит.
iii) Если А - матрица с r строками и s столбцами и элементами,
которые являются целыми положительными числами не больше чем n , то
для своего представления А потребует rs log n бит.
16
4. Определение. Время выполнения алгоритма с определенным
входом измеряется числом примитивных действий (операторов) или
выполненных «шагов».
Часто шагом считают среднее число необходимых операций. Для
некоторых алгоритмов более удобно брать за шаг среднее число чего-то еще
(например, операторы сравнения, машинные команды, машинные тики,
операции модульного умножения и т.п.).
5. Определение. Наихудшее время выполнения алгоритма – верхняя
граница выполнения алгоритма для любых входных данных, выраженная как
функция от размера входных данных.
6. Определение. Среднее время выполнения алгоритма – среднее
время выполнения алгоритма для любых входных данных, выраженная как
функция от размера входных данных.
Асимптотическое приближение
Часто трудно получить точную оценку времени выполнения
алгоритма. В таких случаях прибегают к приближенным оценкам. Как
правило, это бывает асимптотическая оценка продолжительности, т.е.
оценка, изменения времени выполнения алгоритма без линейной связи с
изменениями
размеров
входных
данных.
Отсюда
следует,
что
рассматриваются только функции, определенные для положительных целых
чисел и всегда принимающих действительные значения при любых
значениях аргументов. Пусть f и g - две такие функции.
1. Определение.
i) Асимптотическая верхняя граница f (n)  O( g (n)) существует, если
существует положительная константа c и положительное целое n 0
такие, что 0  f (n)  cg (n) для всех n  n0 .
ii) Асимптотическая нижняя граница f (n)  ( g (n)) существует, если
существует положительная константа c и положительное целое n 0
такие, что 0  cg (n)  f (n) для всех n  n0 .
17
iii) Асимптотическая средняя оценка f (n)  ( g (n)) существует, если
существует положительная константа c1 и c2 , а также положительное
целое n 0 такие, что c1 g (n)  f (n)  c2 g (n) для всех n  n0 .
iv) o – нотация (зависимость) f (n)  o( g (n)) существует, если для
любых положительных c  0 всегда существует положительное целое
n 0 такое, что 0  f (n)  cg (n) для всех n  n0 .
Другими словами, выражение f (n)  O( g (n)) означает, что функция f
растет асимптотически не быстрее, чем g (n) в пределах ее произведения на
константу. Выражение f (n)  ( g (n)) означает, что функция f (n) растет
асимптотически также быстро, как растет g (n) в пределах его произведения
на константу. Выражение f (n)  o( g (n)) означает, что функция g (n) является
верхней границей для функции f (n) . Или, другими словами, f (n) принимает
всегда меньшие значения по сравнению с g (n) для любых значений n .
Выражение o(1) часто используют для обозначения функции f (n) , чей предел
стремится к 0 при n стремящейся к  .
2. Факт. (Свойства для зависимостей). Для любых функций
f (n) , g (n ) , h(n) и l (n) справедливо следующее:
i) f (n)  O( g (n))  g (n)  ( f (n)) ;
ii) f (n)  ( g (n))  f (n)  O( g (n)) и f (n)  ( g (n)) ;
iii) Если f (n)  O(h(n)) и g (n)  O(h(n))  ( f  g )( n)  O(h(n)) ;
iv) Если f (n)  O(h(n)) и g (n)  O(l (n))  ( f * g )( n)  O(h(n)l (n)) ;
v) f (n)  O( f (n)) (рефлективность);
vi) Если f (n)  O( g (n)) и g (n)  O(h(n))  f (n)  O(h(n)) (транзитивность).
3. Факт. (Приближения некоторых часто встречающихся функций).
i) (Полиномиальная функция). Если
f (n)
полином степени k с
положительными коэффициентами, то f (n)  (n k ) ;
ii) Для любого c  0 log c n  (log n) ;
iii) (Формула Стирлинга). Для любых целых n  1,
18
n
n
n
2n   n! 2n 
e
e
n( 1
(12n )
)
.
n
n
1
Таким образом, n! 2n  1  ( )  и еще n! o(n n ) и n! (2 n ) .
n 
e 
iv) log( n!)  (n log n) .
4. Пример. (Сравнительные оценки роста некоторых функций).
Пусть  и с произвольные константы, такие что 0    1  c . Следующие
функции внесены в список в увеличивающемся порядке их асимптотического
роста:
1  ln ln n  ln n  exp( ln n ln ln n)  n  n c  n ln n  c n  n n  c c .
n
Классы сложности
1. Определение. Полиномиальный алгоритм – алгоритм в самом
плохом случае ограниченный асимптотической функцией O(n k ) , где n размерность,
а
k-
константа.
Любой
другой
алгоритм,
чья
продолжительность не может быть ограничена такой функцией, называется
экспоненциальным.
Приближенно полиномиальные алгоритмы можно приравнивать к
хорошим и эффективным алгоритмам, в то время как экспоненциальные
алгоритмы эквивалентны неэффективным. Имеются, однако, практические
ситуации,
когда
полиномиальной
эта
градация
сложности,
степень
нарушается.
полинома
При
рассмотрении
имеет
существенное
значение. Например, даже алгоритмы с оценкой O(n ln ln n ) , где n - размерность
входа, будет асимптотически медленнее алгоритма с оценкой O(n100 ) . Второй
алгоритм может быть быстрее на практике при маленьких значениях n ,
особенно, если оценка производится по большому O . Кроме того, в
криптографии сложность в среднем случае более важна, чем сложность в
самом плохом случае, так как необходимое условие для схемы шифрования в
смысле ее безопасности, это чтобы задача криптоанализа являлась трудной в
среднем (или, более точно, почти всегда трудной), а не только в каких-то
крайних случаях.
19
2. Определение. Подэкспоненциальный алгоритм – алгоритм с
самым плохим случаем ограниченным асимптотической функцией e o (n ) , где
n - размерность входа.
Этот алгоритм асимптотически быстрее, чем экспоненциальный
алгоритм, но медленнее полиномиального.
3. Пример.
(Подэкспоненциального
алгоритма).
Пусть
A
-
алгоритм, на вход которому подаются элементы из конечного поля Fq
(смотри далее) или целые
q.
Ожидаемое время работы алгоритма
вычисляется по формуле Lq  , c  O(exp( c  o(1)ln q  ln ln q 1 )) , где c и  положительные константы. Если 0    1, тогда A - подэкспоненциальный
алгоритм. Наблюдения за константой   0, Lq 0, c полиномиальные с ln q ,
пока   1, Lq 1, c полиномиальные с q и полностью экспоненциальные с ln q .
Для простоты, теория вычислительной сложности ограничивается
решением задачами выбора, то есть, задачами, которые имеют в качестве
ответа или ДА, или НЕ. Это не является серьезным практическим
ограничением,
поскольку
все
вычислительные
задачи,
с
которыми
сталкивается криптография, могут быть приведены к задаче выбора таким
образом, что эффективный алгоритм для решения задачи выбора является
эффективным алгоритмом для решения вычислительной задачи, и наоборот.
4. Определение. Класс сложности Р объединяет все задачи выбора,
решаемые за полиномиальное время.
5. Определение. Класс сложности NP объединяет все задачи
выбора, для которых ответ «ДА» можно получить за полиномиальное время
при наличии дополнительной информации, называемой свидетельством.
6. Определение. Класс сложности co-NP объединяет все задачи
выбора, для которых ответ «НЕТ» можно получить за полиномиальное время
при наличии свидетельства.
Необходимо подчеркнуть, что если задача выбора находится в классе
NP, это не означает, что при отсутствии свидетельства ответ «ДА» может
20
быть легко получен; также трудно вычислимой задачей является получение
этого свидетельства, если оно известно, то его можно использовать для
эффективного решения задачи. Все выше перечисленное справедливо по
отношению к co-NP классам сложности.
7. Пример. (NP-проблема). Рассмотрим следующую задачу выбора:
Факторизация.
Вход: положительное целое n .
Вопрос: n факторизуется? Есть ли целые числа такие a, b  1 , такие что
n  ab ?
Факторизация принадлежит к NP-классу, потому что, если n может
быть разложено на два сомножителя, этот факт может быть проверен за
полиномиальное время, достаточно поделить без остатка целое число n на
известное целое число a , где 1  a  n . Обратная задача принадлежит к классу
co-NP по аналогии. До сих пор не доказано, что факторизация принадлежит
классу Р.
8. Факт. P  NP и P  co  NP .
Следующие вопросы являются наиболее значимыми в теории сложности:
P  NP ?
NP  co  NP ?
P  NP  co  NP ?
Большинство экспертов имеют мнение, что ответ на каждый из этих
трех вопросов – нет, хотя строго это не доказано. Введенные понятия могут
оказаться полезными при относительном сравнении трудности решения
задач.
9. Определение. Пусть L1 и L2 - две решаемые задачи. Если
выполнение L1 занимает меньше времени чем L2, то будем писать L1  P L2 .
Если
выполнение L1
является
частью L2,
и
оно выполняется
за
полиномиальное время, то задача L2 может быть выполнена. Если L1  P L2 , то
L2 является столь же трудной (или не менее трудной), как и L1.
21
Определение. Если
10.
выполняются
L1 и L2 - две решаемые задачи и
два условия L1  P L2 , и L2  P L1 , то задачи эквивалентны в
вычислительном смысле.
11.
Факт. Пусть L1, L2 и L3 три решаемые задачи, то:
i)
Если L1  P L2 и L2  P L3 , то L1  P L3 (транзитивность).
ii)
Если L1  P L2 и L1  P , то L2  P .
12.
Определение. Задача L является NP сложной, если:
i)
L  NP ;
ii)
L1  P L для любого L1  NP .
Класс всех NP сложных задач обозначается NPC. Существуют
тысячи задач из различных областей математики таких как: комбинаторика;
числовая теория; логика и других, которые относятся к NP классу.
13.
Пример. Задача рюкзака. Дано множество a1 .a 2 ,...a n  и
положительное целое s , требуется определить, является ли s суммой
поднабора из a i . Эта задача - NP-сложная.
14.
Факт. Пусть L1 и L2 две решаемые задачи, то:
i)
Если L1 оказалась N- сложная и L1  P , то P=NP.
ii)
Если L1  NP , L2 – NP-сложная задача и L2  P L1 , то L1 тоже NPсложная.
iii)
Если L1 оказалась co-NP сложная и L1  NP , то NP=co-NP.
Факт (i) означает, что если некая задача, которая считалась
полиномиальной оказалась NP сложной, то и другие задачи, отнесенные к
этому классу должны быть подвергнуты сомнению в их полиномиальности.
Рис №2 представляет отношение рассмотренных выше классов.
22
NPC
Co-NP
NP
P
рис.№2
Доказательство NP сложности любой L1 задачи состоит из:
выбора другой L2 задачи, о которой известно, что она NP сложная и
доказательства факта L2  P L1 .
Определение. Задача NP – тяжёлая, если в классе
15.
существует NP сложная задача, которая полиноминально
уменьшает её
трудоёмкость.
Заметьте, что выявление NP тяжести не ограничивается только
необходимостью в решении задачи. Существуют NP сложные задачи,
которые одновременно является NP тяжёлыми.
16.
Пример. Выше упомянутая задача о рюкзаке NP тяжёлая,
если надо найти конкретное подмножество, состоящее из элементов a i ,
которые в сумме дают s .
Случайные алгоритмы
Рассмотренные выше алгоритмы являются детерминированными.
Для
таких
алгоритмов
характерно
выполнение
определенной
последовательности операций в случае получения на вход соответствующих
этой последовательности данных. Случайные алгоритмы – альтернатива
детерминированным алгоритмам. Вне зависимости от поступающих на вход
данных, могут выполняться различные последовательности операций.
23
Случайные
алгоритмы
основаны
на
генераторах
случайных
чисел.
Существует много предметных областей, для которых случайные алгоритмы
являются наилучшими в смысле времени выполнения или требуемой памяти,
чем лучшие известные детерминированные алгоритмы.
Случайные
алгоритмы
при
решении
задач
могут
быть
квалифицированны в соответствии с вероятностью, с которой они
возвращают правильный результат.
1. Определение. Пусть A – случайный алгоритм, применяемый для
решения задачи L и I – случайная величина для L, тогда:
i)
Алгоритм
«A»
имеет
0-стороннюю
ошибку,
если
P A _ outputs  YES I _ answer  YES   1 и P A _ outputs  YES I _ answer  NO  0 .
ii)
Алгоритм
«A»
P A _ outputs  YES I _ answer  YES  
iii)
Алгоритм
«A»
P A _ outputs  YES I _ answer  YES  
Граница
имеет
1-стороннюю
ошибку,
если
1
и P A _ outputs  YES I _ answer  NO  0 .
2
имеет
2-стороннюю
ошибку,
если
2
1
и P A _ outputs  YES I _ answer  NO   .
3
3
1
в пункте (ii) в некоторых случаях может быть заменена
2
положительной константой, а границы пункта (iii) могут быть заменены на
1
1
1
  и   соответственно, где 0    .
2
2
2
2. Определение. Верхняя граница ожидаемой продолжительности
случайного алгоритма связана с ожидаемой продолжительностью каждого
входа (получаемых от генератора случайных чисел), выраженная как
функция размера входа.
3. Определение. Случайные классы сложности.
i)
Класс сложности ZPP (0-стороннюю ошибка с полиномиальным
временем в вероятностном смысле) для задач, у которых случайный
алгоритм с 0-сторонней ошибкой выполняется за полиномиальное временя.
24
Класс сложности RP (случайное полиномиальное время) для
ii)
задач, у которых случайный алгоритм с 1-сторонней ошибкой выполняется (в
самом плохом случае) за полиномиальное время.
Класс сложности BPP (ограниченное ошибками случайное
iii)
полиномиальное временя) для задач, у которых случайный алгоритм с 2сторонней
ошибкой
выполняется
(в
самом
плохом
случае)
за
полиномиальное временя.
4. Факт. P  ZPP  RP  BPP и RP  NP .
Теория чисел
Целые
Множество целых чисел ...,3,2,1,0,1,2,3,... обозначается  .
1. Определение. Пусть а и в целые. Тогда а делит в (эквивалентно:
а делитель в или а фактор в ), если существует такое целое с , что в  ас .
Если а делитель в , это обозначается а в .
2. Пример. i)  318 означает, что 18  (3)( 6) . i)  173 0 означает, что
0  (173)(0) .
3. Факт. Для всех a, b, c  Z справедливо следующее:
i)
aa.
ii)
Если a b , а b c , то a c .
iii)
Если a b , а a c , то a bx  cy  для  x, y  Z .
iv)
Если a b , а b a , то a  b .
4. Определение. Если а и в целые с b  1 , то в результате деления с
остатком получаем частное (фактор) q и остаток r такие, что a  qb  r , где
0  r  b . q и r уникальны. Остаток от деления обозначается a mod b , а
частное a div b .
5. Факт.
a mod b  a  b a / b .
Пусть
a, b  Z и
b  0,
тогда
a div b  a / b ,
а
25
6. Пример. Если a  73 , а b  17 , то q  4 , r  5 и 73 mod 17  5 ,
73div17  4 .
7. Определение. Целое c - общий делитель а и в , если c a и c b .
8. Определение. Неотрицательное целое d называется наибольшим
общим делителем (НОД) для целых а и в , если
i) d - общий делитель а и в , и
ii) всякий раз, когда c a и c b , то c d .
Этот факт обозначается - gcd( a, b) , принимается gcd( 0,0)  0 .
9. Пример. Общими делителями 12 и 18 являются числа  1,2,3,6
и gcd(12,18)  6 .
10. Определение. Не отрицательное целое d называется наименьшее
общее кратное для целых а и в , если
i) a d и b d , и
ii) всякий раз, когда a c и b c , то d c .
Этот факт обозначается - lcm (a, b) .
11. Факт. Если а и в положительные целые, то lcm (a, b)  ab / gcd( a, b) .
12. Пример. Если gcd(12,18)  6 , то lcm (12,18)  12 *18 / 6  36 .
13. Определение. Два целых а и в называются взаимно простыми,
если gcd( a, b)  1 .
14. Определение. Целое p  2 называется простым, если оно делится
только на 1 и на само себя.
15. Факт. Если p простое и делит произведение целых чисел p ab ,
то оно делит каждое в отдельности p a и p b .
16. Факт. Множество простых чисел бесконечно.
17. Факт. Пусть  x обозначает число, которое является простым по
отношению ко всем  x , тогда lim
x  
 ( x)
x / ln x
 1.
26
Этот факт означает, что для больших значений x ,  x стремится к
значению
x
.
ln x
И
действительно,
когда
x  1010
 x  455052511 ,
а
x
 434294481 . При больших значениях эта разница еще меньше.
ln x
18. Факт. Когда x  17  x  
x
x
и для x  1  x   1.25506
.
ln x
ln x
19. Факт. Каждое целое n  2 может быть представлено как
произведение степеней простых n  p1e p 2e ... p ke , где p i простые уникальные
1
k
2
числа, а ei положительные целые. Кроме того, произведение является
уникальным с точностью до перестановки сомножителей.
20. Факт. Если a  p1e p 2e ... p ke и b  p1f p 2f ... p kf , где ei  0 и f i  0 , то
1
2
k
1
2
k
gcd a, b   p1min e1 , f1  p 2min e2 , f 2  ... p kmin ek , f k  и lcma, b   p1max e1 , f1  p 2max e2 , f 2  ... p kmax ek , f k  .
21.Пример.
b  3458  2 * 7 *13 *19 ,
a  4864  2 8 *19 ,
тогда
gcd( 4864,3458)  2 *19  38 и lcm(4864,3458)  28 * 7 *13 *19  442624 .
22. Определение.  n , где n  1, обозначает количество целых в
интервале 1, n , которые взаимно простых по отношению к n . Функция 
называется функцией Эйлера.
23. Факт. Свойства функции Эйлера:
i)
Если p простое, то   p  p  1 .
ii)
Функция Эйлера мультипликативная. Если
gcd( mn)  1 ,
то
 (mn)   (m) *  (n) .
iii)

Если n  p1e p 2e ... p ke , то  (n)  n1 
1
2
k
24. Факт. Для всех n  5  (n) 

1 
1  
1 
.
1 
...1 
p1 
p2  
p k 
n
.
6 ln ln n
Алгоритмы в кольце целых чисел Z
Пусть а и в неотрицательные целые, каждое из которых меньше или равно
n . Как показано в пункте 3 раздела теория сложности, подраздела базовые
понятия, число бит в бинарном представлении n равно log n  1 и эта
27
оценка стремится к log n . Число битовых операций для основных операций
(сложения, вычитания, умножения и деления) над целыми числами
представлено в таблице 1.
Таблица 1.
Название операции
Число битовых операций
Сложение
ab
O(log a  log b)  O(log n)
Вычитание
a b
O(log a  log b)  O(log n)
Умножение
a *b
O((log a)(log b))  O((log n) 2 )
a  qb  r
O((log a)(log b))  O((log n) 2 )
Деление
В пункте 20 раздела теория чисел, подраздела целые, приведена
формула для вычисления НОД двух целых чисел. Однако, вычисление НОД
- это одна из задач факторизации, которая на данный момент считается
трудной. Алгоритм Эвклида – эффективный алгоритм вычисления НОД без
факторизации. Он основан на следующем факте.
1. Факт. Если а и в неотрицательные целые и a  b , тогда
gcd( a, b)  gcd( b, a mod b) .
2. Алгоритм Эвклида.
ВХОДНЫЕ ДАННЫЕ: а и в неотрицательные целые и a  b .
ВЫХОДНЫЕ ДАННЫЕ: НОД а и в .
1. Пока b  0 делаем следующее.
1.1.
Устанавливаем r  a mod b , a  b , b  r .
2. Возвращаем ( a ).
2. Факт. Алгоритм Эвклида выполняется за O((log n) 2 ) битовых
операций.
3. Пример. Вычислим по шагам gcd( 4864,3458)  38
4864 = 1*3458 + 1406
3458 = 2*1406 + 646
28
1406 = 2*646 + 114
646 = 5*114 + 76
114 = 1*76
+ 38
76
+0
= 2*38
Алгоритм может быть расширен, так чтобы он вычислял не только
НОД d двух целых чисел a и b , но также x и y такие, что ax  by  d .
4. Расширенный алгоритм Эвклида.
ВХОДНЫЕ ДАННЫЕ: а и в неотрицательные целые и a  b .
ВЫХОДНЫЕ
ДАННЫЕ:
d  gcd( a, b)
и
целые
x
и
y,
удовлетворяющие условию ax  by  d .
1. Если b  0 , установить d  a, x  1, y  0 и вернуть( d , x, y ).
2. Установить x2  1, x1  0, y2  0, y1  1 .
3. Пока b  0 делаем следующее:
3.1. q  a b , r  a  qb , x  x2  qx1 , y  y2  qy1 .
3.2. a  b , b  r , x2  x1 , x1  x , y 2  y1 , y1  y .
4. Установить d  a , x  x2 , y  y2 и вернуть( d , x, y ).
5. Факт. Расширенный алгоритм Эвклида выполняется за O((log n) 2 )
битовых операций.
6. Пример.
Вычислим
по
шагам
и
gcd( 4864,3458)  38
(4864)(32)  (3458)( 45)  38 .
Таблица 2
q
r
x
y
a
b
x2
x1
y2
y1
-
-
-
-
4864
3458
1
0
0
1
1
1406
1
-1
3458
1406
0
1
1
-1
2
646
-2
3
1406
646
1
-2
-1
3
2
114
5
-7
646
114
-2
5
3
-7
5
76
-27
38
114
76
5
-27
-7
38
1
38
32
-45
76
38
-27
32
38
-45
29
2
0
-91
128
38
0
32
-91
-45
128
Вычеты по модулю n
Пусть n - положительное целое.
1. Определение. Для целых
а
и
в
говорят, что
а
равно
(конгруэнтно) в по модулю n , когда n делит a  b . Факт обозначается
выражением a  bmod n , где n - называется модулем.
2. Пример. i) 24  9mod 5 означает, что 24  5  3 * 5
ii)  11  17mod 7 означает, что  11  17  4 * 7
3. Факт. Для всех
a, a1 , b, b1 , c  Z справедливо:
i) a  bmod n тогда и только тогда, когда а и в дают
одинаковый остаток при делении на n ;
ii) (рефлективность) a  amod n ;
iv)(симметричность) Если a  bmod n , то b  amod n ;
v) (транзитивность) Если a  bmod n и b  cmod n , то
a  cmod n ;
vi) Если a  a1 mod n и b  b1 mod n, то a  a1  b  b1 mod n
и a * a1  b * b1 mod n .
Все целые числа делятся на классы эквивалентности с признаком
делимости по модулю некоего целого числа а на фиксированный модуль n .
Если a  qn  r , где 0  r  n , то a  r mod n . Откуда следует, что каждое равное
а по модулю n уникально в интервале от 0 до n  1 , называется наименьшим
остатком а по модулю n . Таким образом, а и r представляют некоторый
класс эквивалентности.
4. Определение. Вычет целых чисел n обозначается как Z n и
определяет класс эквивалентности для целых 0,1,2,..., n  1. Операции
сложения, вычитания и умножения по модулю n определены в Z n .
30
5. Пример.
Z 25  0,1,2,...,24,
13  16  4
в
Z 25 ,
так
как
13  16  29  4(mod 25) , 13 *18  8 в Z 25 .
6. Определение. Пусть a  Z n . Мультипликативной инверсией а по
модулю n называется целое x  Z n такое, что ax  1mod n. Если такое x
уникально, то про
а
говорят, что оно имеет обратный элемент
(инвертируемое). Обратное к а обозначается а 1 .
7. Определение. Пусть a, b  Z n . Делением а на b по модулю n
называется вычет а и b 1 по тому же модулю. Операция возможна, если b
имеет обратный элемент.
8. Факт. Пусть a  Z n . Оно имеет обратный, если gcd( a, n)  1 .
9. Пример. Z 9  0,1,2,3,4,5,6,7, 4 1  7 так как 4 * 7  1(mod 9) , что
подтверждает предыдущий факт.
10.
Факт. Пусть d  gcd( a, n) . Уравнение ax  bmod n имеет
решение тогда и только тогда, когда d делит b , в некоторых случаях
получается точно d решений в интервале от 0 до n  1 , которые являются
вычетами по модулю n / d .
11.
Факт. Китайская теорема об остатках (Chinese remainder
theorem – CRT). Если n1 , n2 ,..., nk взаимно простые числа, тогда выполняются
следующие уравнения,
x  a1 (mod n1 )
x  a2 (mod n2 )
.
.
.
x  ak (mod nk )
которые имеют единственное решение n  n1n2 ...nk .
31
12.
теоремы
может
Алгоритм Гаусса. Решение уравнений из китайской
быть
получено
как
k
x   ai N i M i ,
где
N i  n / ni ,
i 1
M i  N i1 (mod ni ) .
Сложность вычислений составляет
O((ln n) 2 )
а
битовых
операций.
13.
Пример. Пара соотношений
x  3(mod 7)
и
x  7(mod 13)
эквивалентна x  59(mod 91) .
14.
Факт. Если gcd( n1 , n2 )  1 пара соотношений x  a(mod n1 ) и
x  a(mod n2 ) эквивалентна x  a(mod n1n2 ) .
15.
Определение.
Мультипликативной
группой
из
Zn
называются такие вычеты, что Z n*  a  Z n gcd( a, n)  1. Если n простое число,
то Z n*  a 1  a  n  1.
16.
Определение. Порядком Z n* называется число элементов в
Z n* , обозначается Z n* . Как следует из определения функции Эйлера (раздел
теория чисел, подраздел целые, п.22) Z n*   (n) .
17.
Факт. Пусть целые n  2 .
i) (теорема Эйлера) Если a  Z n* , тогда a  ( n)  1(mod n) .
ii) Если
n
непростое
и
r  s(mod  (n)) ,
тогда
a r  a s (mod  (n)) для всех целых a . Другими словами, модуль n может быть
уменьшен до модуля  (n) . Специальным случаем теоремы Эйлера является
малая теорема Ферма.
18.
Факт. Пусть p простое число.
i) (малая теорема Ферма) Если
gcd( a, p)  1 , тогда
a p 1  1(mod p) .
ii) Если r  s(mod p  1) , тогда a r  a s (mod p) для всех
целых a . Другими словами, модуль p может быть уменьшен до модуля p  1 .
iii) В частности, a p  a(mod p) для всех целых a .
32
Определение. Пусть a  Z n* . Тогда порядок a обозначается
19.
ord (a ) и равен положительному целому t такому, что a t  1(mod n) .
Факт. Если порядок a  Z n* равен t и a s  1(mod n) , то t делит
20.
s или иными словами t  (n) .
Пример. n  21 . Z 21*  1,2,4,5,8,10,11,13,16,17,19,20. Заметьте, что
21.
*
 (21)   (7) (3)  12  Z 21
. Порядок элементов в Z 21* представлен в таблице 3.
Таблица 3
a  Z n*
1
2
4
5
8
10
11
13
16
17
19
20
ord (a )
1
6
3
6
2
6
6
2
3
6
6
2
22.
Определение. Пусть
a  Z n* .
Если
ord (a)   (n) ,
то
a
называется генератором или примитивным элементом. Если Z n* имеет
генератор, то группа называется циклической.
23.
Факт. Свойства генератора из Z n* .
i) Z n* имеет примитивный элемент тогда и только тогда,
когда n  2,4, p k или 2 p k , где p - нечетное и k  1. Другими словами, если p простое, то у Z *p есть примитивный элемент.
ii) Если a генератор Z n* , то Z n*  a i mod n 0  i   (n)  1.
iv)
Предположим, что a генератор Z n* , тогда b  a i mod n
тоже генератор Z n* тогда и только тогда, когда gcd( i,  (n))  1 . Из чего следует,
что если Z n* циклическая, то число генераторов равно  (n) .
v)
a  Z n* генератор Z n*
 a ( n)
p
 1(mod n) для каждого
простого делителя p из  (n) .
24.
Пример. Z 21* не циклическая, так как не содержит элемента
порядка  (21)  12 (смотри табл. 3). Заметьте, что число 21 не удовлетворяет
33
предыдущим условиям. С другой стороны, Z 25* циклическая и имеет
примитивный элемент a  2 .
Определение. Пусть a  Z n* . Говорят, что a
25.
- остаток
квадрата модуля, если существует x  Z n* такое, что x 2  a(mod n) . Если такого
x не находится, то a называется целым квадратом модуля. Все остатки
квадрата модуля
обозначаются
n
Qn ,
все целые квадрата модуля
обозначаются Qn .
Заметьте, что 0  Z n* обозначает, что 0  Qn и 0  Qn .
Факт. Пусть p большое простое и  примитивный элемент
26.
Z n* , тогда a  Z n* остаток квадрата по модулю p , если a   i (mod p) , где i тоже
целое. Из этого следует, что Qn  ( p  1) / 2 и Qn  ( p  1) / 2 по половине
элементов из Z *p .
27.
Пример.   6 примитивный элемент Z 13* . В таблице 4
представлены остатки квадратов модуля.
Таблица 4
i
0
1
2
3
4
5
6
7
8
9
10
11
 i (mod 13)
1
6
10
8
9
2
12
7
3
5
4
11
Где Qn  1,3,4,9,10,12, а Qn  2,5,6,7,8,11 .
28.
Факт. Пусть n
- результат произведения двух больших
простых чисел n  pq . Тогда a  Z n* остаток квадрата модуля n , если только
a  Qp
и
a  Qq .
Из
чего
следует,
что
Q p Qq  ( p  1)( q  1) / 4
и
тогда
Q21  1,4,16,
а
Q p Qq  3( p  1)( q  1) / 4 .
29.
Пример.
n  21 ,
Q21  2,5,8,10,11,13,17,19,20.
30.
Факт. Пусть a  Qn , если x  Z n* удовлетворяет x 2  a(mod n) ,
тогда x называется квадратным корнем для a по модулю n .
34
Факт. (число квадратных корней)
31.
i) Если p большое простое и a  Q p , то оно имеет два квадратных
корня по модулю p .
ii) В общем виде. Если n  p1e p 2e p3e ... p ke , где p i - большие простые
1
2
3
k
числа и ei  1 . Если a  Qn , то a имеет точно 2 k квадратных корней по
модулю n .
Пример. Квадратный корень из 12 по модулю 37 есть 7 и
32.
30. Квадратный корень из 121 по модулю 315 есть 11, 74, 101, 151, 164, 214,
241 и 304.
Алгоритмы в Z n
Пусть n
- положительное целое. Как и прежде, элементы Z n
являются множеством целых чисел 0,1,2,..., n  1.
Замечено, что если a, b  Z n , то
 a  b, если _ a  b  n,
(a  b) mod n  
a  b  n, если _ a  b  n.
То есть модульное сложение (и вычитание) может быть выполнено
без трудоемкой операции деления. Умножение по модулю двух чисел a и b
может быть выполнено как умножение двух простых целых и взятия остатка
от результата по модулю n . Инверсии в кольце Z n могут быть вычислены
при помощи расширенного алгоритма Эвклида, как описано ниже.
1. Алгоритм. (Вычисление мультипликативных инверсий в Z n )
ВХОДНЫЕ ДАННЫЕ: a  Z n .
ВЫХОДНЫЕ
ДАННЫЕ:
a 1 mod n
при
условии,
что
вычет
существует.
1.1 При помощи расширенного алгоритма Эвклида находим
целые x и y такие, что
ax  ny  d , где d  gcd( a, n) .
35
1.2 Если d  1 , тогда a 1 mod n не существует, иначе возвращаем
x.
Модульная
экспонента
может
быть
вычислена
более
эффективно при помощи алгоритма определения квадратного корня,
описанного ниже. Этот алгоритм используется во многих криптографических
протоколах. Одна из версий этого алгоритма основана на наблюдении, что
бинарным
представлением
k
является
t
k 2 ,
i
i 0
t
  a  ...a 
a k   a ki 2  a 2
i
i 0
0
k0
21
k1
2t
kt
i
k i  0,1 .
где
Тогда
.
2. Алгоритм. (Извлечения квадратного корня)
ВХОДНЫЕ ДАННЫЕ: a  Z n и 0  k  n с двоичным представлением
t
k   ki 2i .
i 0
ВЫХОДНЫЕ ДАННЫЕ: a k mod n .
2.1 Пусть b  1, если k  0 , алгоритм возвращает b .
2.2 Пусть A  a .
2.3 Если k 0  1 , тогда b  a .
2.4 Для i от 1 до t делаем следующее
2.4.1 A  A 2 mod n
2.4.2 Если k i  1 , то b  Ab mod n .
2.5 Алгоритм возвращает b .
3. Пример
Вычисления
модульной
экспоненты
для
5 596 mod 1234  1013 приведены в таблице 5. Трудоемкости основных операций
в кольце Z n приведены в таблице 6.
Таблица 5.
i
0
1
2
3
4
5
6
7
8
9
ki
0
0
1
0
1
0
1
0
0
1
A
5
25
625
681
1011
369
421
779
947
925
b
1
1
625
625
67
67
1059
1059
1059
1013
36
Таблица 6.
Операция
Трудоемкость
Сложение по модулю (a  b) mod n
O (ln n)
Вычитание по модулю (a  b) mod n
O (ln n)
Умножение по модулю (ab) mod n
O((ln n) 2 )
Обратный элемент по модулю a 1 mod n
O((ln n) 2 )
Экспонента по модулю a k mod n, k  n
O((ln n) 3 )
Заключение
В настоящей статье мы рассмотрели некоторые разделы математики,
использующиеся современной крипторафической наукой.
Скачать