ЛЕКЦИЯ 7 ПЕРВООБРАЗНЫЕ КОРНИ Определение. Класс [a], где (a, n) = 1, называется первообразным корнем по модулю n, если показатель числа a по модулю n равен φ(n) – значению функции Эйлера для модуля n. Известно, что любой показатель k числа a по модулю n делит φ(n). Поэтому, чтобы убедиться, что число a является первообразным корнем по модулю n, надо проверить, что для любого числа k делителя φ(n) ak ≠ 1 mod n. Пример. Рассмотрим модуль n = 54. Тогда φ(54) = φ(2 × 27) = φ(2 × 33) = = (2 – 1) × 33 – 1(3 – 1) = 18 = 2 × 3 × 3. Делителями числа 18 являются числа 1, 2, 6, 9, 18. Рассмотрим число 5. Проверяем, будут ли числа 1, 2, 6, 9 показателями для числа 5 по модулю 54. Имеем 51 mod 54 ≡ 5 mod 54, 52 mod 54 ≡ 25 mod 54, 53 mod 54 ≡ 125 mod 54 ≡ 17 mod 54, 56 mod 54 ≡ (17 × 17) mod 54 ≡ ≡ 289 mod 54 ≡ 19 mod 54, 59 mod 54 ≡ (56 mod 54)(53 mod 54) ≡ ≡ 17 × 19 ≡ 323 mod 54 ≡ 53 mod 54, 59 mod 54 ≡ (59 mod 54)2 ≡ ≡ 53 × 53 ≡ 280 9 mod 54 ≡ 1 mod 54. Из приведенных вычислений ясно, что показатель, которому принадлежит число 5 по модулю 54, равен 18, т. е. значению φ(54). Отсюда следует, что класс [5] является первообразным корнем по модулю 54. Заметим, что первообразных корней по модулю n может и не быть. Напомним, что для модуля n = 20, рассматривая все классы взаимно простые с модулем, мы получили такие результаты: для класса [1] показатель равен 1; для классов [9], [11], [19] показатель равен 2; для классов [3], [7], [13], [17] показатель равен 4. Нет ни одного класса взаимно простого с модулем, у которого показатель равен φ(20) = 8. Отсюда следует вывод, что для модуля 20 первообразный корень отсутствует. Теорема. По любому простому модулю p существует φ(p–1) классов первообразных корней. ИНДЕКСЫ Определение. Пусть числа a и b взаимно просты с n, т. е. (a, n) = 1, (b, n) = 1. Число s называется индексом b по модулю n и основанию a, если as ≡ b mod n. При фиксированном модуле n для индекса s принята такая форма записи s = inda b. Для данной формы из определения индекса получается следующее тождество ainda b ≡ b mod n. Заметим, что если s индекс числа b по основанию a, т. е. s = inda b, то s является индексом для любого числа β из класса [b] по любому основанию α из класса чисел [a]. Понятие индекса представляет собой аналогию понятия логарифма. Пример. Пусть даны модуль n = 13 и основание a = 2. Тогда имеем 21 ≡ 2 mod 13, т. е. ind2 2 = 1; 22 ≡ 4 mod 13, т. е. ind2 4 = 2; 23 ≡ 8 mod 13, т. е. ind2 8 = 3; 24 ≡ 16 mod 13 ≡ 3 mod 13, т. е. ind2 3 = 4; 25 ≡ 32 mod 13 ≡ 6 mod 13, т. е. ind2 6 = 5; 26 ≡ 64 mod 13 ≡ 12 mod 13, т. е. ind2 12 = 6; 213 ≡ (26262) mod 13 ≡ ≡ 288 mod 13 ≡ 2 mod 13, т. е. ind2 2 = 13; Обратим внимание на два соотношения: ind2 2 = 1 и ind2 2 = 13, которые показывают, что одно число может иметь разные индексы. Пример. Дано: модуль n = 21, основание a = 5, тогда имеем 52 ≡ 25 mod 21 ≡ 4 mod 21, т. е. ind5 4 = 2; 54 ≡ 625 mod 21 ≡ 16 mod 21, т. е. ind5 16 = 4; 56 ≡ 5452 mod 21 ≡ 64 mod 21 ≡ ≡ 1 mod 21, т. е. ind5 1 = 6; Обратим внимание, что для модуля 21 не существует индекса для числа 2 по основанию 5, т. е. значения ind 5 2. Действительно, не существует числа s, для которого сравнение 5s ≡ 2 mod 21 справедливо. На основании приведенного примера возникает вопрос – при каких условиях индекс числа b по основанию a существует для данного модуля n? Для решения этого вопроса напомним, что если число g = φ(n), где φ(n) – значение функции Эйлера для модуля n, является наименьшим из всех чисел, при котором справедливо сравнение ag ≡ 1 mod n, то g называется первообразным корнем. В этом случае справедливо следующее утверждение. Теорема. Пусть число g есть любой первообразный корень по модулю n. Для каждого числа b, взаимно простого с модулем n существуют индексы по основанию g, т. е. найдутся такие числа s, что выполняется сравнение gs ≡ b mod n. Множество всех таких индексов s для данного фиксированного b совпадает с неотрицательными числами некоторого класса по модулю φ(n). Теорема. Пусть g – первообразный корень по модулю n и b – число взаимно простое с модулем n. Тогда сравнение с ≡ b mod n справедливо тогда и только тогда, когда indg c ≡ indg b mod φ(n). Теорема. Пусть g – первообразный корень по модулю n, a и b – числа, взаимно простые с модулем n, т. е. (a, n) = 1, (b, n) = 1. Тогда indg (a, b) ≡ (indg a + indg b) mod φ(n). Теорема. Пусть g – первообразный корень по модулю n и a – число взаимно простое с модулем n, т. е. (a, n) = 1. Тогда indg ak ≡ (k × indg a) mod φ(n). Определение. Если a b ≡ k mod n, n > 1 и (b, n) = 1, ( a / b) где число b – взаимно простое с n, то за ind g принимается значение indgk. Теорема. Пусть g – первообразный корень по модулю n и b – число взаимно простое с модулем n, n > 1, т. е. (b, n) = 1. Тогда a ind b ≡ (indg a – indg b) mod φ(n). g Рассмотрим случай, когда модуль простое число. В этом случае известно, что по любому простому p существуют φ(p – 1) классов первообразных корней. Если взять за основание какое-либо g из любого класса первообразных корней, то для любого числа b, которое не делится на p, существует индексы. Будем рассматривать наименьший из всех возможных индексов числа b по основанию a для простого модуля p. При этих условиях для простых модулей p иногда вычисляют таблицу индексов для всех целых чисел из интервала [1, p – 1]. Кроме того, известно, если число p, p > 2 – простое, то для составных модулей вида pt и 2pt существуют первообразные корни. Поэтому для чисел взаимно простых с модулями pt и 2pt существуют индексы. Пример. Пусть дан модуль n = 27 = 33 = p3, где p – простое число. Вычислим φ(n) = φ(27) = φ(33) = 33 – 1(3 – 1) = 9 × 2 = 18. Известно, что показатели k, для которых ak ≡ 1 mod n должны быть делителями φ(n). Делителями числа 18 являются числа 1, 2, 3, 6, 9. Однако существует теорема, которая утверждает, что первообразные корни по модулю p2 будут первообразными корнями и по модулю pt, t ≥ 2. По этой логике для того, чтобы найти показатели для некоторого числа a, для которого выполняется сравнение ak ≡ 1 mod n по модулю n = 27, достаточно рассмотреть только показатели, которые являются делителями значения функции Эйлера для числа 32 = 9. Имеем, φ(9) = φ(32) = 32 – 1 × (3 – 1) = 3 × 2 = 6. Итак, среди показателей k < φ(9) числа a, для которых выполняется сравнение ak ≡ 1 mod 9, могут быть только делители числа φ(9) = 6. Отсюда следует, что для любого числа a показатель k < φ(9), для которого выполняется сравнение ak ≡ 1 mod n, могут быть только числа 1, 2, 3. Рассмотрим число g = 5. Проверим, является ли число g первообразным корнем по модулю n = 27. Для этого вычислим g1, g2 и g3: 51 mod 9 ≡ 5 mod 9, 52 mod 9 ≡ 25 mod 9 ≡ ≡ (2 × 9 + 7) mod 9 ≡ 7 mod 9, 53 mod 9 ≡ 125 mod 9 ≡ ≡ (13 × 9 + 8) mod 9 ≡ 8 mod 9. По теории в условиях данной задачи существует такое k, для которого 5k mod 9 ≡ 1 mod 9, причем показатель k является делителем φ(9). Из выкладок следует, что таким показателем может быть только число φ(9) = 6. Проверим данный вывод: 56 mod 9 ≡ (53 × 53) mod 9 ≡ (8 × 8) mod 9 ≡ ≡ 64 mod 9 ≡ (7 × 9 + 1) mod 9 ≡ 1 mod 9. Из вычисления 56 mod 9 следует, что 5 есть первообразный корень по модулю 9, а значит, число g = 5 является первообразным корнем и по модулю n = 27. Убедившись, что g = 5 первообразный корень по модулю n = 27, т. е. 5ϕ (27) mod 27 ≡ 518 mod 27 ≡ 1 mod 27, перейдем к вычислению индексов по модулю 27 с основанием g = 5. Имеем следующие индексы чисел по основанию g = 5 по модулю 27 50 mod 27 ≡ 1 mod 27, 51 mod 27 ≡ 5 mod 27, 52 mod 27 ≡ 25 mod 27, 53 mod 27 ≡ 125 mod 27 ≡ ≡ (4 × 27 + 17) mod 27 ≡ 17 mod 27, 54 mod 27 ≡ 625 mod 27 ≡ ≡ (23 × 27 + 4) mod 27 ≡ 4 mod 27, 55 mod 27 ≡ (54 × 5) mod 27 ≡ ≡ (4 × 5) mod 27 ≡ 20 mod 27, 56 mod 27≡(55 × 5) mod 27≡ ≡ (20 × 5) mod 27≡100 mod 27≡ 19 mod 27, 57 mod 27 ≡ (55 × 52) mod 27 ≡ ≡ (20 × 25) mod 27 ≡ 500 mod 27 ≡ 14 mod 27, 58 mod 27 ≡ (54 × 54) mod 27 ≡ ≡ (4 × 4) mod 27 ≡ 16 mod 27, 59 mod 27 ≡ (58 × 5) mod 27 ≡ ≡ (16 × 5) mod 27 ≡ 80 mod 27 ≡ 26 mod 27, 510 mod 27 ≡ (59 × 5) mod 27 ≡ ≡ (26 × 5) mod 27 ≡ 130 mod 27 ≡ 22 mod 27, 511 mod 27 ≡ (510 × 5) mod 27 ≡ ≡ (22 × 5) mod 27 ≡ 110 mod 27 ≡ 2 mod 27, 512 mod 27 ≡ (511 × 5) mod 27 ≡ ≡ (2 × 5) mod 27 ≡ 10 mod 27, 513 mod 27 ≡ (512 × 5) mod 27 ≡ ≡ (10 × 5) mod 27 ≡ 50 mod 27 ≡ 23 mod 27, 514 mod 27 ≡ (512 × 52) mod 27 ≡ ≡ (10 × 25) mod 27 ≡ 250 mod 27 ≡ 7 mod 27, 515 mod 27 ≡ (514 × 5) mod 27 ≡ ≡ (7 × 5) mod 27 ≡ 35 mod 27 ≡ 8 mod 27, 516 mod 27 ≡ (515 × 5) mod 27 ≡ ≡ (8 × 5) mod 27 ≡ 40 mod 27 ≡ 13 mod 27, 517 mod 27 ≡ (516 × 5) mod 27 ≡ ≡ (13 × 5) mod 27 ≡ 65 mod 27 ≡ 11 mod 27, 518 mod 27 ≡ (517 × 5) mod 27 ≡ ≡ (11 × 5) mod 27 ≡ 55 mod 27 ≡ 1 mod 27. В итоге проделанных вычислений получаем следующие значения дискретных логарифмов по модулю 27 при основании 5: для для для для для для для для для числа числа числа числа числа числа числа числа числа 1 ind5 1 = 0, для числа 2 ind5 2 = 11, 4 ind5 4 = 4, для числа 5 ind5 5 = 1, 7 ind5 7 = 14, для числа 8 ind5 8 = 15, 10 ind5 10 = 12, для числа 11 ind5 11= 17, 13 ind5 13 = 16, для числа 14 ind5 14 = 7, 16 ind5 16 = 8, для числа 17 ind5 17 = 3, 19 ind5 19 = 6, для числа 20 ind5 20 = 5, 22 ind5 22 = 10, для числа 23 ind5 23 = 13, 25 ind5 25 = 2, для числа 26 ind5 26 = 9. В заключении рассмотрим сравнение y ≡ gx mod p. Вычислить y при заданных значениях p, g и x не представляет труда. Обратная задача – по значениям p, g и y вычислить x, т. е. определить индекс или дискретный логарифм – трудная задача с точки зрения числа арифметических операций. Сложность этой задачи для реально используемых значений модуля p находится за пределами возможностей современных вычислительных систем. Поэтому некоторые современные криптографические системы с открытыми ключами создаются на базе задачи дискретного логарифмирования. К подобным системам можно отнести схему Эль – Гамаля и схему Шнорра. Данные схемы используются для решения некоторых криптографических задач.