
- •Содержание
- •2.8. Домашнее задание 22
- •2.Исследование методики криптоанализа шифров на основе регистров сдвига с линейными обратными связями.
- •Цель: Исследовать методику криптоанализа шифров на основе рслос. Применить метод для криптоанализа неизвестного поточного шифра.
- •Ключевые положения
- •Домашнее задание
- •Содержание протокола
- •Лабораторное задание
- •Ключевые вопросы
- •Лабораторное задание
- •3.Исследование эффективности алгоритмов факторизации на примере (p – 1) метода Полларда
- •Цель: Исследовать эффективность применения (р-1) метода Полларда для факторизации, сложность метода, применимость для криптоанализа криптосистем rsa и Рабина.
- •Ключевые положения
- •Пробное деление
- •Гладкие числа
- •Например, число
- •Домашнее задание
- •Содержание протокола
- •Лабораторное задание
- •Ключевые вопросы
- •Лабораторное задание
- •4.Исследование эффективности алгоритмов факторизации на примере -метода Полларда
- •Цель: Исследовать эффективность применения -метода Полларда для факторизации, сложность метода применимость для криптоанализа криптосистем rsa и Рабина.
- •Современные методы факторизации
- •Метод решета в числовом поле
- •Линейное решето
- •Домашнее задание
- •Содержание протокола
- •Лабораторное задание
- •Ключевые вопросы
- •Лабораторное задание
- •Решето в числовом поле
Метод решета в числовом поле
Квадратичное решето в числовом поле — самый быстрый из известных алгоритмов разложения на множители. Основная его идея состоит в поиске целых чисел х и у, разность квадратов которых делится на N. Как уже было сказано, после этого можно надеяться, что НОД (x – у, N) — нетривиальный делитель числа N.
Чтобы объяснить работу этого метода, мы начнем с линейного решета и покажем, как оно может быть обобщено до решета в числовом поле. Линейное решето — не очень хороший алгоритм, на котором, однако, демонстрируются основные идеи эффективных алгоритмов.
Линейное решето
Предположим, что мы собираемся разложить на множители В-гладкое число N с некоторой границей В. Для этого надо сформировать факторбазу «малых» простых чисел
F = {р| р < В}.
Идея линейного решета состоит в поиске таких чисел и , для которых комбинация b = + N, является В-гладкой. Причем тоже нужно выбирать среди В-гладких чисел. Тогда будут иметь место разложения
и
из которых получаются следующие соотношения на факторбазе:
Таким образом, основной вопрос линейного решета звучит так: как найти нужные значения и ? Их поиск осуществляют по следующей схеме:
- фиксируют произвольное значение ;
- заводят просеивающий массив с А + 1 нулевыми элементами, пронумерованными от 0 до А:
- для каждого простого числа р F прибавляют log2p к каждому значению ячейки массива, чей номер сравним с –N по модулю р;
- выбирают как номер ячейки, значение которой превышает определенную пороговую величину, например, является максимальным элементом массива.
Дело в том, что при удачном выборе пороговой величины взятый номер ячейки, будучи сложенным с N, имеет хорошие шансы оказаться B-гладким и, одновременно, делиться на большое количество простых чисел из F.
Разберем пример. Пусть N = 1159 и F = {2,3,5,7,11}. Выберем = —2. Наша цель — найти гладкое число вида — N. Вводим массив:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
0,0 |
Берем первое простое число из F, а именно, р = 2. и вычисляем -N (mod p) = 0. Прибавляем теперь log22 = 1 к содержимому ячеек с четными номерами.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1.0 |
0,0 |
1,0 |
0.0 |
1,0 |
0,0 |
1,0 |
0,0 |
1,0 |
0,0 |
Переходим к р = 3 и находим ->N (mod3) = 2. Добавляем log2 3 = 1,6 к ячейкам с номерами, равными 2 по модулю 3:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1,0 |
0,0 |
2,6 |
0,0 |
1,0 |
1.6 |
1.0 |
0,0 |
2,6 |
0,0 |
Продолжая процесс для простых р = 5, 7 и 11, заполняем массив полностью:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
1,0 |
2,8 |
2,6 |
2,3 |
1,0 |
1,6 |
1,0 |
0,0 |
11,2 |
0,0 |
Содержимое восьмой ячейки максимально. Поэтому мы подозреваем, что значению = 8 соответствует гладкое и подходящее для наших целей число, в чем несложно убедиться, поскольку
b = a – N=8 – 21159 = –2310 = –2 3 5 7 11.
Итак, с помощью линейного решета мы получим большую коллекцию чисел а и b, удовлетворяющих соотношениям вида
Имея по крайней мере |B| + 1 таких соотношений, можно сформировать матрицу со строками
(ai,1…ai,t, bi,1,…, bi,t)(mod 2).
Затем найдем аннулирующий эту матрицу вектор Z, который подскажет, как перемножить соотношения, чтобы получить равенство вида
х2 =у2 (mod N).
Используя его, можно попытаться найти делитель числа N. Если попытка окажется неудачной, нужно найти новый аннулирующий вектор и сформировать другую разность квадратов.
Основной вариант линейного решета дает слишком бедный урожай соотношений. Существует его разновидность, называемая вариацией больших простых чисел, которая ослабляет условия линейного решета, позволяя парам a и b быть почти B-гладкими. допуская по одному «большому» простому делителю этих чисел. При этом «большие» простые числа комбинируются таким образом, что аппарат линейной алгебры, привлекаемый к линейному решету, работает без изменения. Это делается с помощью построения графов и алгоритмов. вычисляющих базисы в множестве циклов графа. Вариация больших простых чисел появилась в квадратичном решете, но работает в любых просеивающих алгоритмах, раскладывающих числа на множители.
Ясно, что просеивание можно осуществлять параллельно. Поэтому такой алгоритм можно распределить между большим числом компьютеров по всему миру. Подчиненные компьютеры сообщают все найденные ими соотношения на главный сервер, который осуществляет заключительную стадию алгоритма, связанную с линейной алгеброй. Таким образом, интернет можно превратить в «один большой» вычислительный центр, занимающийся задачей факторизации. Заключительный этап с линейной алгеброй часто требует специального оснащения и большого объема памяти. Поэтому последний этап невозможно распределить между дочерними компьютерами.
Линейное решето — простейший, но не слишком хороший метод факторизации больших чисел. И действительно, линейное решето никогда не предлагалось как практический алгоритм разложения на множители. Однако его работа поучительна для восприятия других просеивающих алгоритмов. Решето в числовом поле использует для построения соотношений между элементами факторбазы арифметику конечных полей. Собственно, это единственная модификация по сравнению с линейным решетом. Этап линейной алгебры, вариация больших простых чисел и распределение задачи между разными компьютерами, — все остается практически без изменения в алгоритме решета в числовом поле.