A deterministic algorithm for the discrete logarithm problem in a semigroup

Abstract The discrete logarithm problem (DLP) in a finite group is the basis for many protocols in cryptography. The best general algorithms which solve this problem have a time complexity of <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>O</m:mi> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:msqrt> <m:mrow> <m:mi>N</m:mi> </m:mrow> </m:msqrt> <m:mi>log</m:mi> <m:mi>N</m:mi> </m:mrow> <m:mo>)</m:mo> </m:mrow> </m:math> O\left(\sqrt{N}\log N) and a space complexity of <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>O</m:mi> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:msqrt> <m:mrow> <m:mi>N</m:mi> </m:mrow> </m:msqrt> </m:mrow> <m:mo>)</m:mo> </m:mrow> </m:math> O\left(\sqrt{N}) , where <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>N</m:mi> </m:math> N is the order of the group. (If <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>N</m:mi> </m:math> N is unknown, a simple modification would achieve a time complexity of <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>O</m:mi> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:msqrt> <m:mrow> <m:mi>N</m:mi> </m:mrow> </m:msqrt> <m:msup> <m:mrow> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:mi>log</m:mi> <m:mi>N</m:mi> </m:mrow> <m:mo>)</m:mo> </m:mrow> </m:mrow> <m:mrow> <m:mn>2</m:mn> </m:mrow> </m:msup> </m:mrow> <m:mo>)</m:mo> </m:mrow> </m:math> O\left(\sqrt{N}{\left(\log N)}^{2}) .) These algorithms require the inversion of some group elements or rely on finding collisions and the existence of inverses, and thus do not adapt to work in the general semigroup setting. For semigroups, probabilistic algorithms with similar time complexity have been proposed. The main result of this article is a deterministic algorithm for solving the DLP in a semigroup. Specifically, let <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>x</m:mi> </m:math> x be an element in a semigroup having finite order <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:msub> <m:mrow> <m:mi>N</m:mi> </m:mrow> <m:mrow> <m:mi>x</m:mi> </m:mrow> </m:msub> </m:math> {N}_{x} . The article provides an algorithm, which, given any element <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>y</m:mi> <m:mo>∈</m:mo> <m:mrow> <m:mo>⟨</m:mo> <m:mrow> <m:mi>x</m:mi> </m:mrow> <m:mo>⟩</m:mo> </m:mrow> </m:math> y\in \langle x\rangle , provides all natural numbers <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>m</m:mi> </m:math> m with <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:msup> <m:mrow> <m:mi>x</m:mi> </m:mrow> <m:mrow> <m:mi>m</m:mi> </m:mrow> </m:msup> <m:mo>=</m:mo> <m:mi>y</m:mi> </m:math> {x}^{m}=y , and has time complexity <m:math xmlns:m="http://www.w3.org/1998/Math/MathML"> <m:mi>O</m:mi> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:msqrt> <m:mrow> <m:msub> <m:mrow> <m:mi>N</m:mi> </m:mrow> <m:mrow> <m:mi>x</m:mi> </m:mrow> </m:msub> </m:mrow> </m:msqrt> <m:msup> <m:mrow> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:mi>log</m:mi> <m:msub> <m:mrow> <m:mi>N</m:mi> </m:mrow> <m:mrow> <m:mi>x</m:mi> </m:mrow> </m:msub> </m:mrow> <m:mo>)</m:mo> </m:mrow> </m:mrow> <m:mrow> <m:mn>2</m:mn> </m:mrow> </m:msup> </m:mrow> <m:mo>)</m:mo> </m:mrow> </m:math> O\left(\sqrt{{N}_{x}}{\left(\log {N}_{x})}^{2}) steps. The article also gives an analysis of the success rates of the existing probabilistic algorithms, which were so far only conjectured or stated loosely.