3.2. Шаг младенца – шаг великана.
В открытой литературе этот метод впервые был описан Шенксом (Daniel Shanks), ссылки на него известны с 1973 года. Это был один из первых методов, более быстрый чем метод прямого перебора.
Общая схема алгоритма такова:
Берем два целых числа m и k, таких что mk>p (как правило, m=k=). Затем вычисляются два ряда чисел:
a, ga, g2a, … , gm—1a (mod p)
gm, g2m, g3m, … , gkm (mod p)
(все вычисления произведены по модулю p).
Найдем такие i и j, для которых gia=gjm. Тогда x=jm—i.
Справедливость последнего равенства подтверждается следующей цепочкой, все вычисления в которой произведены по модулю p:
gx=gjm-i=gjm(gi)-1=gjma(gia)-1=gjma(gjm)-1=a.
Заметим, что числа i и j непременно будут найдены, поскольку при i=,j=выполняетсяjm—i=, причемkm>p. То есть среди всех чисел вида jm—i обязательно содержится 0 < x ≤ p.
Замечание: Указанный метод можно применять для разыскания дискретных логарифмов в любой циклической группе порядка n.
Приведем этот метод в форме алгоритма.
Алгоритм «Шаг младенца-шаг великана»:
Вход: g - порождающий элемент конечной группы G порядка n; aG.
Ш.1. Вычислить m=.
Ш.2. Вычислить b=gm.
Ш.3. Вычислить последовательности ui=bi, vj=agj Для i,j=.
Ш.4. Найти i, j такие что ui=vj. x=mi—j mod n. Идти на Выход.
Выход: logga=x.
Одна из трудоемких частей этого алгоритма – это поиск на Шаге 4. Он может быть осуществлен несколькими способами:
Сначала построить таблицу (i, ui), отсортировать ее по второй компоненте а затем произволить сравнения по мере нахождения компонент vj.
Построить две таблицы (i, ui) и (j, vj), отсортировать каждую из них, а затем произвести поиск совпадений.
Объединить u, v в одну таблицу, снабдив их номером в соответствующей последовательности и битом принадлежности к одной из двух последовательностей, а затем применить совместную сортировку. И т. п.
Сложность данного алгоритма составляет O() умножений по модулю и O(log n) операций сравнения.
Пример.
Пусть n=229 (простое число), g=6, a=12.
Ш.1. m=16.
Ш.2. b=ga mod n =612 mod 229 = 183.
Ш.3. В этом примере вычислим сначала ряд ui, а затем будем вычислять компоненты vj до тех пор, пока не найдется совпадение.
i, j | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
ui | 183 | 55 | 218 | 48 | 82 | 121 | 159 | 14 | 43 | 83 |
vj | 72 | 203 | 73 | 209 | 109 | 196 |
|
|
|
|
-
11
12
13
14
15
16
75
214
3
91
165
196
i=16, j=6. x=mi—j mod n = 250 mod 228 = 22.
Проверка: 622 mod 229= 12.
Ответ: log612 mod 228 = 22.
3.3. Ро-метод Полларда для дискретного логарифмирования.
Этот алгоритм осуществляет случайный поиск дискретных логарифмов, как и метод «шаг ребенка – шаг великана», но он требует меньшего объема памяти для хранения данных, поэтому предпочтительней для практических целей. В основе данного метода лежит та же идея, что и в основе ро-метода для факторизации – строится псевдослучайная последовательность, в которой находятся совпадающие элементы при помощи метода Флойда, а затем на основании полученной величины вычисляется искомый дискретный логарифм.
Пусть требуется вычислить logga в конечной группе G порядка n.
Группа G разбивается на три непересекающихся подмножества примерно равной мощности: G=S1US2US3, так чтобы 1S2. Причем разбиение должно быть построено таким образом, чтобы проверка, к какому подмножеству принадлежит данный элемент x, была простой.
Например, если G=Zp, где p – простое число, то можно задать разбиение S1={1,…,}, S2={,…,}, S3={, … , p—1}, или разбиение может быть таким: если x mod 3=1, то xS1, если x mod 3=2, то xS2, если x mod 3=0, то xS3.
Далее на G задается последовательность x0, x1, x2, … , где x0=1, xi+1 вычисляется по xi посредством функции f для i≥0:
xi+1=f(xi)=
Вычисления проводятся в группе G, то есть если G=Zm, то вычисления следует производить по модулю m.
Такая последовательность групповых элементов может быть представлена двумя последовательностями u0, u1, u2,… и v0, v1, v2,… такими, что xi=,u0=v0=0,
ui+1=, vi+1=
Вычисления в последовательностях u и v производятся по модулю n.
В силу того, что группа G – конечная, при помощи метода Флойда можно найти такие xi и x2i, что xi = x2i. Тогда =. Логарифмируя по основаниюg обе части данного уравнения, получим
(vi—v2i)logga≡(u2i—ui) (mod n)
Решая это сравнение, получим искомый логарифм. (Заметим, что если G=Z*m, то n=φ(m)).
Сложность данного метода составляет O() , где n – порядок группы G.
Замечание. Метод может дать отказ в том случае, когда vi =v2i. Тогда следует назначить случайные значения от 0 до n—1 переменным u0, v0 , вычислить x0=и повторить все шаги алгоритма.
Замечание. В том случае, когда имеется достаточно места для хранения данных в процессе вычислений (например, когда G невелико или вычисления производятся вручную), можно обойтись без метода Флойда. Тогда следует хранить все члены последовательностей x, u и v до того, как xi = xj и дискретный логарифм находится из сравнения (vi—vj)logga≡(uj—ui) (mod n).
Пример.
G=Z*19, a=8, g=2.
Тогда n=φ(19)=18. Поскольку решение будем производить вручную, то не будем пользоваться методом Флойда.
Разбиение G на подмножества произведем следующим образом: если x mod 3=1, то xS1, если x mod 3=2, то xS2, если x mod 3=0, то xS3.
Вычисления будут производиться по формулам:
xi+1=f(xi)=
ui+1=, vi+1=
-
i
0
1
2
3
4
5
6
7
8
xi
1
8
7
18
17
4
13
9
18
ui
0
0
0
0
1
2
2
2
3
vi
0
1
2
3
3
6
7
8
8
S
S1
S2
S1
S3
S2
S1
S1
S3
S3
x3=x8. Логарифм найдем из сравнения (v3—v8)log28≡(u8—u3) (mod 18)
-5 log28≡3(mod 18)
13 log28≡3(mod 18)
log28≡3·7(mod 18)
log28≡3(mod 18).
Действительно, 23≡8 (mod 19).
Ответ: log28≡3(mod 18).
- Теоретико-числовые методы в криптографии
- Аннотация.
- Предисловие
- Введение
- Глава 1. Основы теории чисел. §1. Теория делимости.
- 1.1. Основные понятия и теоремы.
- 1.2. Наибольший общий делитель.
- 1.3 Нок (наименьшее общее кратное)
- 1.4. Простые числа
- Решето Эратосфена
- 1.5. Единственность разложения на простые сомножители.
- 1.6. Асимптотический закон распределения простых чисел.
- §2. Функция Эйлера.
- 2.1. Мультипликативные функции.
- 2.2. Функция Эйлера.
- §3. Теория сравнений
- 3.1. Свойства сравнений:
- 3.2. Полная система вычетов.
- 3.3. Приведенная система вычетов
- 3.4. Обратный элемент.
- 3.5. Алгебраические структуры на целых числах.
- 3.6. Теоремы Эйлера и Ферма. Тест Ферма на простоту.
- Тест Ферма на простоту
- 3.7. Применение теоремы Эйлера в rsa:
- §4. Сравнения с одним неизвестным
- 4.1. Сравнения первой степени.
- 4.2. Система сравнений первой степени. Китайская теорема об остатках.
- 4.3. Применения китайской теоремы об остатках.
- 4.4. Сравнения любой степени по простому модулю.
- 4.5. Сравнения любой степени по составному модулю.
- §5. Теория квадратичных вычетов
- 5.1. Квадратичные вычеты по простому модулю.
- 5.2. Символ Лежандра. Символ Якоби.
- Свойства символа Лежандра:
- Свойства символа Якоби:
- 5.3. Тест на простоту Соловея-Штрассена.
- Тест Соловея-Штрассена:
- 5.4. Решение квадратичных сравнений по простому модулю.
- 5.5. Квадратичные сравнения по составному модулю.
- 5.6. Тест на простоту Миллера-Рабина.
- 5.7. Связь задач извлечения квадратных корней и факторизации по модулю rsa. Криптосистема Рабина.
- 5.8. Квадраты и псевдоквадраты.
- 5.9. Числа Блюма.
- §6. Первообразные корни и индексы. Порождающий элемент и дискретный логарифм.
- 6.1. Основные понятия и теоремы.
- 6.2. Существование первообразных корней по модулю p.
- 6.3. Первообразные корни по модулям pα, 2pα.
- 6.4. Нахождение первообразных корней по простому модулю.
- 6.5. Существование и количество первообразных корней.
- 6.6. Дискретные логарифмы.
- 6.7. Проблема Диффи-Хеллмана.
- 6.8. Условная стойкость шифра Эль Гамаля.
- §7. Построение доказуемо простых чисел общего и специального вида.
- 7.1. Теорема Сэлфриджа и доказуемо простые числа общего вида на основании полного разложения (n—1).
- 7.2. Теорема Поклингтона и доказуемо простые числа общего вида на основании частичного разложения (n—1).
- 7.3. Числа Ферма. Теорема Пепина.
- 7.4. Числа Мерсенна.
- 7.5. Теорема Диемитко и процедура генерации простых чисел заданной длины гост р 34.10-94.
- Глава 2. Алгебраические основы теории чисел.
- §1. Основные понятия алгебры.
- 1.1. Начальные понятия.
- 1.2. Делимость в кольцах.
- 1.3. Деление с остатком.
- 1.4. Основная теорема арифметики.
- §2. Конечные поля и неприводимые многочлены.
- §3. Кольца многочленов.
- 3.1. Кольца многочленов.
- 3.2. Кольцо многочленов Zp[X].
- 3.3. Конечные поля многочленов.
- Глава 3. Алгоритмы в криптографии и криптоанализе. §1. Элементы теории сложности.
- §2. Алгоритмы факторизации.
- 2.1. Метод пробных делений.
- 2.2. Метод Ферма.
- 2.3. Метод квадратичного решета.
- 2.6. Методы случайных квадратов.
- §3. Алгоритмы дискретного логарифмирования.
- 3.1. Метод прямого поиска.
- 3.2. Шаг младенца – шаг великана.
- 3.4. Алгоритм Полига-Хеллмана.
- 3.5. Алгоритм исчисления порядка (index-calculus algorithm).
- Задачи и упражнения.
- Упражнения к Главе 2.
- Ответы к упражнениям.
- 1. Пояснительная записка
- 1.1. Цели и задачи дисциплины
- 1.2. Требования к уровню освоения содержания дисциплины
- 2. Объем дисциплины и виды учебной работы
- 3. Тематический план изучения дисциплины
- 4. Содержание разделов дисциплины
- 6. Вопросы к экзаменам
- 7.Литература основная:
- Дополнительная:
- Оглавление