
- •Московский технический университет связи и информатики
- •«Комплексное обеспечение информационной безопасности инфокоммуникационных сетей и систем»
- •210700 «Инфокоммуникационные технологии и системы связи»
- •Введение в современные криптографические алгоритмы Предисловие
- •Математические основы (теория чисел)
- •1.1 Простые числа
- •1.2 Наибольший общий делитель
- •1.3 Модулярная арифметика
- •2. Криптография с открытым ключом
- •2.1 Алгоритм rsa
- •2.2 Электронная цифровая подпись (эцп)
- •2.2.1 Алгоритм формирования подписи Эль-Гамаля
- •2.2.2 Алгоритм dsa (Digital Signature Algorithm)
- •2.3 Алгоритм формирования общего ключа по схеме Диффи-Хеллмана
- •3. Симметричная система шифрования
- •3.1 Потоковые шифры
- •3.2 Генераторы псевдослучайных чисел
- •3.3 Блочные шифры
- •3.4 Сети Файстеля
- •3.5 Режимы шифрования
- •3.5.1 Электронная кодовая книга (ecb)
- •3.5.2 Сцепление блоков по шифротексту (cbc)
- •3.5.3 Обратная загрузка шифротекста (cfb)
- •1. Задания по теории чисел
- •2.Задания по алгоритмам с открытыми ключами
- •3.Задания по симметричной системе шифрования генераторы псевдослучайных чисел
- •Задание по блочным шифрам
- •Задание по хэш-функциям
1.2 Наибольший общий делитель
Два числа называют взаимно простыми, если у них нет общих множителей, кроме 1. Иными словами, если наибольший общий делитель чисел a и n равен 1, эти числа называют взаимно простыми. Это записывается следующим образом:
НОД(a,n)=1
Например, числа 15 и 28 взаимно просты. Числа 15 и 27 не являются взаимно простыми, а числа 13 и 500 – являются. Простое число взаимно просто со всеми другими числами, кроме чисел, кратных данному простому числу.
Один из способов вычисления наибольшего общего делителя двух чисел – использование алгоритма Евклида.
Математически это записывается следующим образом:
Для любых целых n1 и n2 таких, что n2≠0,
НОД(n1,n2)=НОД(n2,Rn2(n1)) , где Rn2(n1)-остаток от деления n1 на n2 или по-другому n1 MOD n2.
Пример
НОД(54,30)= НОД(24,30)= НОД(6,24)= НОД(0,6)=6
НОД(156,117)= НОД(39,117)= НОД(0,39)=39
1.3 Модулярная арифметика
Пример арифметики по модулю 12
(10+13)MOD 12= 23 MOD 12=11 MOD12
Другой способ записать это, сказав, что 23 и 11 равны по модулю 12
23 ≡ 11 (MOD 12)
В общем случае, α ≡ β (MOD n)
если α = β +kn при некотором целом k.
Если α не отрицательно, а β находится между 0 и n, можно рассматривать β как остаток от деления α на n. Иногда β называется вычетом по модулю n.
Множество целых чисел от 0 до n-1 образуют так называемую полную систему вычетов по модулю n. Это означает, что для любого целого числа α его вычет по модулю n равен некоторому числу от 0 до n-1. Операция α MOD n обозначает вычет от α по модулю n.
Пример
5 MOD 3=2
Модулярная арифметика во многом подобна обычной арифметике. Так, она тоже коммутативна, ассоциативна и дистрибутивна. Приведение каждого промежуточного результата по модулю n дает тот же результат, что и выполнение всего вычисления с последующим приведением его по модулю n.
(a+b) MOD n =((a MOD n) + (b MOD n ))MOD n
(a-b) MOD n =((a MOD n) - (b MOD n ))MOD n
(a*b) MOD n =((a MOD n) *(b MOD n ))MOD n
(a*(b+c)) MOD n =((a*b MOD n) +(a*c MOD n ))MOD n
Обратные значения по модулю
Произведение таких чисел равно 1.
Если (a*a-1 ) MOD n =1 , тогда a-1 - обратное значение для a по модулю n.
В общем случае для a, если a и n взаимно простые числа, имеется одно обратное значение a-1 Если n простое число, то любое число от 1 до n-1 взаимно просто с n и имеет только одно обратное значение по модулю n.
Пример
Если a=3 , то a-1=5 по модулю 7 , т.к. (a*a-1 ) MOD n = (3*5 ) MOD 7=1
Образующая(или примитивный корень)
Если P простое число и G меньше чем P, то G называется образующей по модулю P, если для каждого числа β от 1 до P-1 существует такое число a, что (Ga) MOD P= β
Иногда G называют также примитивным корнем по модулю P.
Пример, если P=11, то 2 – это образующая по модулю 11.
(2 10) MOD 11 = (1024) MOD 11=1
(2 1) MOD 11 = (2) MOD 11=2
(2 8) MOD 11 = (256) MOD 11=3
(2 2) MOD 11 = (4) MOD 11=4
(2 4) MOD 11 = (16) MOD 11=5
(2 9) MOD 11 = (512) MOD 11=6
(2 7) MOD 11 = (128) MOD 11=7
(2 3) MOD 11 = (8) MOD 11=8
(2 6) MOD 11 = (64) MOD 11=9
(2 5) MOD 11 = (32) MOD 11=10
Каждое число от 1 до 10 может быть представлено как (2 a) MOD 11
Для значения P =11, образующими являются числа 2, 6, 7 и 8. Другие числа не являются образующими. Например, образующей не является число 3, поскольку не существует решения для (3 a) MOD 11=2
В общем случае, установить, является ли число образующей, нелегко. Задача упрощается, если известно разложение P-1 на множители. Пусть q1, q2, …qn- это различные простые множители P-1. Чтобы проверить, является ли число G образующей по модулю P, вычислите:
( G(P-1)/Q) MOD p
для всех значений Q = q1, q2, …qn
Если это число = 1 для некоторого значения Q, то G не является образующей. Если для всех значений q1, q2, …qn рассчитанное значение не = 1, то G образующая.
Пример
Пусть P=11. Простые множители P-1 т.е.10 равны 2 и 5. Чтобы определить, что число 2 – образующая, вычислим:
( 2(11-1)/5) MOD 11=4
( 2(11-1)/2) MOD 11=10
Ни один из ответов не равен 1, поэтому 2 – это образующая.
Теперь проверим, является ли образующей число 3:
( 3(11-1)/5) MOD 11=9
( 3(11-1)/2) MOD 11=1
Следовательно, 3 – это не образующая.
Для нахождения образующей – наугад выбирайте число от 1 до P-1 и проверяйте, не является ли оно образующей.