- •Темплан 2014г., п. 28
- •Предисловие
- •1. Арифметика остатков. Элементарные шифры
- •1.1. Шифр Цезаря
- •1.2. Аффинный шифр
- •1.3. Обобщенный алгоритм Евклида
- •1.4. Вскрытие аффинного шифра по двум паросочетаниям
- •1.5. Исходные данные для решения задач
- •2. Базовые теоретико-числовые алгоритмы
- •2.1. Китайская теорема об остатках
- •2.2. Возведение в квадрат
- •2.3. Символы Лежандра и Якоби, извлечение квадратного корня
- •2.4. Возведение в степень и нахождение порождающего элемента группы
- •2.5. Генерация простых чисел
- •2.6. Исходные данные для решения задач
- •3. Асимметричные криптографические протоколы и системы шифрования с открытым ключом
- •3.1. Протокол Диффи-Хеллмана
- •3.2. Трехпроходный протокол Шамира
- •3.3. Криптосистема rsa
- •3.4. Криптосистема Эль-Гамаля
- •3.5. Криптосистема Рабина
- •3.6. Исходные данные для решения задач
- •4. Асимметричные схемы электронно-цифровой подписи
- •4.1. Цифровая подпись rsa
- •4.2. Цифровая подпись Эль-Гамаля
- •4.3 Генерация сильно простого числа и порождающего элемента
- •4.4. Цифровая подпись dsa
- •4.5. Исходные данные для решения задач
- •5. Эллиптические кривые над конечным полем
- •5.1. Протокол Диффи-Хеллмана на эллиптических кривых
- •5.2. Цифровая подпись ec-dsa
- •5.3. Исходные данные для решения задач
- •Заключение
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •Список использованной и рекомендуемой литературы
2.4. Возведение в степень и нахождение порождающего элемента группы
Приведенный шаблон реализует так называемое «наивное» модульное возведение в степень в конечном поле. Для примера взято поле F19. Заносим его элементы в первую строку таблицы, а в ячейку A2 вводим формулу (рис. 7).
Рис. 7. Исходная формула
Распространяем формулу на диапазон ячеек A2:R18
Рис. 8. Таблица Кэли с выделенными примитивными элементами
В результате получилась таблица Кэли для возведения в степень по модулю 19. Особое внимание обратим на столбцы, выделенные серым цветом. В них многократное применение операции умножения к заглавным элементам столбцов образует полную перестановку элементов поля. Такие элементы называют порождающими или примитивными. Кроме того, следует обратить внимание на последнюю строку таблицы (все единицы). Она хорошо иллюстрирует малую теорему Ферма:
На практике наивное возведение в степень оказывается неэффективным. Приведем алгоритм бинарного модульного возведения в степень. В основе алгоритма лежит схема Горнера. Проиллюстрируем ее на конкретном примере [8]:
что в итоге вместо 26 умножений дает 4 возведения в квадрат и 3 умножения. Для больших чисел экономия становится еще более значительной. Заметим, что последовательность возведений в квадрат и удвоений соотносится с двоичным представлением показателя степени:
Начиная со второго старшего двоичного разряда, при 1 возвести в квадрат и домножить, при 0 возвести в квадрат.
Алгоритм
бинарного модульного экспоненцирования
[1].
Представить показатель степени в двоичном виде:
.
Присвоить
Для
i
от 1
до r:
;
Задача 2.3. Возвести число x в степень y по модулю числа N, используя метод бинарного модульного экспоненцирования.
Пример решения.
Дано: x = 134 y = 344 N = 365 |
Решение: |
||
|
|||
|
yi |
|
|
Найти: |
|
0 |
|
xy mod N |
|
1 |
|
|
|
0 |
|
|
|
1 |
|
|
|
1 |
|
|
|
0 |
|
|
|
0 |
|
|
|
0 |
|
2.5. Генерация простых чисел
Детерминированной зависимости распределения простых чисел не существует. Также не существует детерминированного алгоритма их генерации. Наилучшие результаты дают вероятностные тесты числа на простоту, из которых на практике наиболее применим тест Рабина-Миллера [13]:
Выбрать для тестирования число p. Вычислить b – число делений p – 1 на 2 (то есть 2b – это наибольшая степень числа 2, на которую делится p – 1). Затем вычислить m, такое, что p = 1 + 2b · m.
Далее для генерации простого p:
Выбрать случайное число a, меньшее p.
Установить j = 0 и z = am mod p.
Если z = 1 или если z = p – 1, то p проходит тест и может быть простым числом.
Если j > 0 и z = 1, то p не относится к простым числам.
Установить j = j + 1. Если j < b и z (p – 1), установить
z = z2 mod p и вернуться к шагу 4. Если z = p – 1, то p проходит тестирование и может быть простым числом.
Если j = b и z (p – 1), то p не относится к простым числам.
Считается, что число, положительно прошедшее тест пять раз, является простым с вероятностью более 95%.
Задача 2.4. Провести тест простоты Рабина-Миллера для числа p при помощи заданного числа a.
Пример решения.
Дано: p = 241 a = 99 |
Решение:
|
Повести тест простоты |
|
|
|
