Бэби-шаг, гигантский шаг
В теории групп , разделе математики, «гигантский шаг ребенка» — это «встреча посередине» алгоритм для вычисления дискретного логарифма или порядка элемента в конечной абелевой группе, автор Дэниел Шэнкс . [1] Проблема дискретного журнала имеет фундаментальное значение для области криптографии с открытым ключом .
Многие из наиболее часто используемых систем криптографии основаны на предположении, что дискретный журнал чрезвычайно сложно вычислить; чем сложнее, тем большую безопасность обеспечивает передача данных. Один из способов повысить сложность проблемы дискретного журнала — построить криптосистему на основе более крупной группы.
Теория
[ редактировать ]Алгоритм основан на компромиссе пространства и времени . Это довольно простая модификация пробного умножения, наивного метода нахождения дискретных логарифмов.
Учитывая циклическую группу порядка , генератор группы и элемента группы , проблема в том, чтобы найти целое число такой, что
Алгоритм «маленький шаг — гигантский шаг» основан на переписывании :
Таким образом, мы имеем:
Алгоритм предварительно вычисляет для нескольких значений . Затем он исправляет и пробует значения в правой части приведенного выше сравнения, в порядке пробного умножения. Он проверяет, выполняется ли сравнение для любого значения , используя заранее вычисленные значения .
Алгоритм
[ редактировать ]Входные данные : циклическая группа G порядка n , имеющая генератор α и элемент β .
Выход : значение x, удовлетворяющее .
- м ← Потолок( √ n )
- Для всех j , где 0 ≤ j < m :
- Вычислить α дж и сохраним пару ( j , α дж ) в таблице. (См. § На практике )
- Вычислить α − м .
- в ← б . (установить γ = β )
- Для всех i , где 0 ≤ i < m :
- Проверьте, является ли γ вторым компонентом ( α дж ) любой пары в таблице.
- Если да, верните im + j .
- Если нет, c ← c • a − м .
На практике
[ редактировать ]Лучший способ ускорить алгоритм «маленький шаг — гигантский шаг» — использовать эффективную схему поиска в таблице. Лучшее в этом случае — хеш-таблица . Хеширование выполняется для второго компонента, и для выполнения проверки на шаге 1 основного цикла хешируется γ и проверяется полученный адрес памяти. Поскольку хеш-таблицы могут извлекать и добавлять элементы в время (постоянное время), это не замедляет общий алгоритм гигантского шага ребенка.
Пространственная сложность алгоритма равна , а временная сложность алгоритма равна . Это время работы лучше, чем время выполнения наивного грубого расчета.
Алгоритм гигантского шага Baby-step может быть использован перехватчиком для получения закрытого ключа, сгенерированного при обмене ключами Диффи-Хеллмана , когда модуль представляет собой простое число, которое не слишком велико. Если модуль не является простым, алгоритм Полига – Хеллмана имеет меньшую алгоритмическую сложность и потенциально решает ту же проблему. [2]
Примечания
[ редактировать ]- Алгоритм «маленький шаг — гигантский шаг» — это универсальный алгоритм. Это работает для любой конечной циклической группы.
- Нет необходимости знать точный порядок группы G. заранее Алгоритм по-прежнему работает, если n — это просто верхняя граница порядка группы.
- Обычно алгоритм «маленького шага» и «гигантского шага» используется для групп, порядок которых является простым. Если порядок группы составной, то алгоритм Полига – Хеллмана более эффективен.
- Алгоритм требует O ( m ) памяти. Можно использовать меньше памяти, выбрав меньшее m на первом этапе алгоритма. Это увеличивает время работы, которое тогда равно O ( n / m ). В качестве альтернативы можно использовать ро-алгоритм Полларда для логарифмов , который имеет примерно то же время работы, что и алгоритм гигантского шага ребенка, но требует лишь небольшого объема памяти.
- Хотя авторство этого алгоритма принадлежит Дэниелу Шэнксу, опубликовавшему в 1971 году статью, в которой он впервые появился, статья Нечаева 1994 года [3] утверждает, что он был известен Гельфонду в 1962 году.
- Существуют оптимизированные версии исходного алгоритма, например, с использованием усеченных справочных таблиц без коллизий [4] или карты отрицания и одновременную модульную инверсию Монтгомери, как предложено в . [5]
Дальнейшее чтение
[ редактировать ]- Х. Коэн , Курс вычислительной алгебраической теории чисел, Springer, 1996.
- Д. Шэнкс , Число классов, теория факторизации и родов. В Proc. Симп. Чистая математика. 20, страницы 415–440. AMS, Провиденс, Род-Айленд, 1971 г.
- А. Штейн и Э. Теске, Оптимизированные методы детского шага и гигантского шага, Журнал Математического общества Рамануджана 20 (2005), вып. 1, 1–32.
- А.В. Сазерленд , Порядковые вычисления в генерических группах , Кандидатская диссертация, Массачусетский технологический институт, 2007.
- Д.С. Терр, Модификация алгоритма «гигантский шаг» Шанкса, Mathematics of Computation 69 (2000), 767–773. два : 10.1090/S0025-5718-99-01141-2
Ссылки
[ редактировать ]- ^ Дэниел Шэнкс (1971), «Число классов, теория факторизации и родов», В Proc. Симп. Чистая математика. , том. 20, Провиденс, Род-Айленд: Американское математическое общество, стр. 415–440.
- ^ Маурер, Ули М.; Вольф, Стефан (2000), «Протокол Диффи-Хеллмана», Designs, Codes and Cryptography , 19 (2–3): 147–171, doi : 10.1023/A:1008302122286 , MR 1759615
- ^ В. И. Нечаев, Сложность детерминированного алгоритма дискретного логарифма, Математические заметки, вып. 55, нет. 2 1994 (165–172)
- ^ Панайотис Хацигианнис, Константинос Халкиас и Валерия Николаенко (30 июня 2021 г.). Гомоморфное дешифрование в блокчейнах с помощью сжатых справочных таблиц с дискретным журналом . CBT Workshop 2021 (ESORICS) . Проверено 7 сентября 2021 г.
- ^ Стивен Д. Гэлбрейт, Пин Ван и Фангго Чжан (10 февраля 2016 г.). Вычисление дискретных логарифмов по эллиптической кривой с помощью улучшенного алгоритма «маленького шага» и «гигантского шага» . Достижения в области математики связи . Проверено 7 сентября 2021 г.