Опубликован: 19.09.2011 | Уровень: специалист | Доступ: платный | ВУЗ: Тульский государственный университет
Лекция 11:

Основные положения теории чисел, используемые в криптографии с открытым ключом

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

Инверсия по модулю m

Во многих задачах криптографии для заданных чисел с, m требуется находить такое число d < m, что

cd mod m = 1

Такое d существует тогда и только тогда, когда числа с и m взаимно простые. Число d, удовлетворяющее равенству cd mod m = 1, называется инверсией с по модулю m и часто обозначается с-1 mod m. Данное обозначение для инверсии связано с тем, что равенство cd mod m = 1 можно переписать в виде

-1 mod m = 1.

Таким образом, умножение на с-1 соответствует делению на с при вычислениях по модулю m.

Инверсию по модулю m также можно вычислять с помощью обобщенного алгоритма Евклида.

Покажем, как это делается. Равенство, приведенное ниже означает, что для некоторого целого k имеет место равенство cd – km = 1. Учитывая, что с и d взаимно просты, можно преобразовать это равенство следующим образом:

m(-k) + cd = НОД(m,c).

Значит, мы можем вычислить с-1 mod m (или найти число d ) с помощью обобщенного алгоритма Евклида. При этом значение переменной k нас не интересует. Если число d получается отрицательным, то нужно прибавить к нему m, так как по определению число a mod m берется из множества {0,1,..., m - 1}.

Рассмотрим пример. Пусть m=9, c=5. Найдем 5-1 mod 9. Будем выполнять вычисления по обобщенному алгоритму Евклида, записывая все вычисления по шагам.

q U V T
u1 u2 u3 v1 v2 v3 t1 t2 t3
9 div 5 = 1 9 1 0 5 0 1 9 mod 5 = 4 1 - 1*0 = 1 0-1*1 = -1
5 div 4 =1 5 0 1 4 1 -1 5 mod 4=1 0-1*1=-1 1-1*(-1)=2
4 div 1 =4 4 1 -1 1 -1 2 4 mod 1=0 1-4*(-1)=5 -1-4*2=-9
1 -1 2 0 1 7

Таким образом, получили, что 5-1 mod 9 = 2. Проверим: 5*2 mod 9 =10 mod 9 = 1.

Ключевые термины

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

Взаимно простые числа – числа, не имеющие общих делителей (кроме единицы).

Задача факторизации – нахождение двух или более натуральных чисел, дающих при перемножении заданное число.

Инверсия по модулю – такое натуральное число, которое при умножении по модулю на данное число дает в результате единицу.

Каноническое разложение на множители – такое разложение на множители, при котором все множители являются простыми и записаны в порядке возрастания.

Малая теорема Ферма – известная теорема, сформулированная П. Ферма, лежащая в основе алгоритма шифрования по системе RSA

Наибольший общий делитель чисел а и b – наибольшее число с, которое делит и а и b: с = НОД(a, b).

Основная теорема арифметики – теорема утверждающая, что любое натуральное число большее единицы либо само является простым, либо может быть разложено на произведение простых делителей, причем единственным способом (если не обращать внимания на порядок следования сомножителей).

Простое числонатуральное число, которое не имеет делителей, кроме самого себя и единицы.

Составное числонатуральное число, которое делится, помимо самого себя и единицы, еще хотя бы на одно число.

Функция Эйлера позволяет подсчитать число натуральных чисел, не превосходящих n и, взаимно простых с n. Обозначается

\phi(n).

Краткие итоги

Криптографические методы с открытым ключом, в большинстве своем, основаны на операциях с большими целыми числами.

Каждое натуральное число, большее единицы, делится по крайней мере на два числа: на 1 и на само себя. Если число не имеет делителей, кроме самого себя и единицы, то оно называется простым, а если у числа есть еще делители, то составным. Единица же не считается ни простым числом, ни составным. Для больших чисел задача проверки на простоту может быть достаточно сложной. Также вычислительно сложной является задача факторизации – нахождение двух или более натуральных чисел, дающих при перемножении заданное число.

Два числа называются взаимно простыми, если они не имеют ни одного общего делителя кроме единицы.

Наибольший общий делитель чисел а и b – наибольшее число с, которое делит и а и b. Для нахождения наибольшего общего делителя можно использовать алгоритм Евклида.

Инверсия по модулю – такое натуральное число, которое при умножении по модулю на данное число дает в результате единицу. Инверсию по модулю m можно вычислять с помощью так называемого обобщенного алгоритма Евклида.

Набор для практики

Вопросы для самопроверки

  1. Дайте определение простого и составного числа. Приведите по три примера простых и составных чисел.
  2. Дать определение понятия "взаимно простые числа". Привести примеры взаимно простых чисел и чисел, не являющихся взаимно простыми.
  3. Сформулируйте основную теорему арифметики.
  4. В чем заключается задача факторизации?
  5. Дайте определение наибольшего общего делителя.
  6. Сформулируйте алгоритм Евклида для нахождения наибольшего общего делителя двух чисел.
  7. Сформулируйте малую теорему Ферма.
  8. Сформулируйте теорема Ферма-Эйлера (для случая системы RSA).
  9. Сформулируйте обобщенный (расширенный) алгоритм Евклида.
  10. Сформулировать принципы выполнения "операции взятия по модулю". Приведите примеры выполнения этой операции и поясните их.
  11. Что такое инверсия по модулю n?

Упражнения для самопроверки

  1. Являются ли простыми числа 37, 59, 67, 93, 101, 111, 231?
  2. Являются ли взаимно простыми числа:
    • 16 и 37
    • 16, 37 и 38
    • 5, 9, 27 и 54
    • 2. 4, 7, 15, 59
  3. Определите число натуральных чисел, не превосходящих 59 и, взаимно простых с 59.
  4. Определите число натуральных чисел, не превосходящих 143 и, взаимно простых с 143.
  5. Определите наибольший общий делитель чисел 187 и 153.
  6. Вычислите
    • 38 по модулю 10
    • 38 * 57 по модулю 11.
  7. С помощью обобщенного алгоритма Евклида найдите числа х и у, удовлетворяющие уравнению 33х + 16y = НОД(33,16).
  8. Вычислите
    • 7-1 mod 10
    • 3-1 mod 11
< Лекция 10 || Лекция 11: 123 || Лекция 12 >
Антон Свистельников
Антон Свистельников

С помощью обобщенного алгоритма Евклида найдите числа х и у, удовлетворяющие уравнению 30х +12y = НОД(30,12).

х=1, у=-2, НОД = 6. Где ошибка?

Шамиль Байрамов
Шамиль Байрамов

z = x + k (mod N)