Рейтинг:0

Алгоритм вычисления дискретного логарифма в группе порядка $2^n$

флаг cn

На моем курсе криптографии наш учитель сказал, что решение задачи дискретного логарифмирования в группе порядка $2^e$ легко, и он дал нам следующий алгоритм:

Позволять $G$ быть циклической группой с $|G|=2^e$ и $г\в G$ генератор. Следующий алгоритм вычисляет $х$ такой, что $ч=г^х$:

  • Предварительный расчет: $г^{-1}=г^{n-1}$.

  • Инициализация: $х_0=0$, $b_0=ч$, $m_0=\log_2(орд(ч))$.

  • Итерации:
    пока $m_i> 0$:
    $x_{i+1}=x_i+2^{e-m_i}$
    $b_{i+1}=b_i(g^{-1})^{2^{e-m_i}}$
    $m_{i+1}=\log_2(\text{ord}(b_{i+1}))$

  • Вывод: $х=х_i$

Я хочу доказать, что алгоритм останавливается, что $х$ действительно является дискретным логарифмом и работает за полиномиальное время. Чтобы алгоритм остановился, нам нужно только проверить, что $m_{i+1}<m_i~\forall~i$, что эквивалентно тому, чтобы показать, что $\text{орд}(b_{i+1})<\text{орд}(b_i)$. Если $\text{орд}(b_i)=2^l$ тогда: $$b_{i+1}^{2^l}=(b_i(g^{-1})^{2^{e-m_i}})^{2^l}=b_i^{2^l} (г^{-1})^{2^{e-l}2^l}=1$$ что доказывает, что $\text{ord}(b_{i+1})\leq\text{ord}(b_i)$, но я не могу получить строгое неравенство. Что касается двух других частей, у меня нет хорошей идеи о том, как ее решить...

Я математик, новичок в криптографии, поэтому я не возражаю, если вы предполагаете математические знания, к которым я привык. Спасибо за вашу помощь.

Sam Jaques avatar
флаг us
1) Я думаю, вам также нужно предположить, что $G$ является циклическим (для корректного определения дискретного журнала $h$ должен находиться в циклической подгруппе, порожденной $g$, так что это не является реальным ограничением). Затем попытайтесь показать некоторые свойства элементов с порядком 2. (2) Попробуйте выразить $b_i$ через $h$, $g$ и $x_i$.
Marcos avatar
флаг cn
@SamJaques, ты прав, я забыл сказать, что $G$ циклическая, спасибо
Marcos avatar
флаг cn
@SamJaques По индукции мне удалось доказать, что $b_n=h(g^{-1})^{x_n}$, что, конечно же, означает, что если $m_n=0$, мы имеем $b_n=1$ и, следовательно, $g ^{x_n}=h$. Это доказывает, что действительно, когда алгоритм завершает работу, мы получаем дискретный логарифм. Спасибо :), можете ли вы помочь мне доказать, что алгоритм работает за полиномиальное время?
kelalaka avatar
флаг in
Определить размер ввода; что является общим по количеству битов. Затем определите количество операций. Вы уверены, что $\log_2$ не перегружен?
Marcos avatar
флаг cn
@kelalaka Да, это не напольно, так как мы находимся в группе порядка $2^e$, поэтому теорема Лагранжа говорит нам, что порядок каждого элемента является делителем $2^e$, и поэтому $\log_2(\text{ord }(\cdot))$ всегда будет целым числом.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.