Index-Calculus-Algorithmus

Der Index-Calculus-Algorithmus ist ein Algorithmus zur Berechnung des diskreten Logarithmus. x = log α β {\displaystyle x=\log _{\alpha }\beta }

Vorgehensweise

Es sei G {\displaystyle G} eine endliche zyklische Gruppe der Ordnung n {\displaystyle n} , die durch α {\displaystyle \alpha } erzeugt wird.
Es sei S = { p 1 , p 2 , . . . , p t } {\displaystyle S=\{p_{1},p_{2},...,p_{t}\}} (die Faktorbasis) eine Untermenge von G {\displaystyle G} mit der Eigenschaft, dass ein bedeutender Teil der Gruppenelemente sich als Produkt der Elemente in S {\displaystyle S} schreiben lässt.

1. Schritt

Es wird eine Zufallszahl a {\displaystyle a} gewählt und versucht α a {\displaystyle \alpha ^{a}} als Produkt der Elemente aus der Faktorbasis S {\displaystyle S} zu schreiben:
α a = i = 1 n t p i λ i {\displaystyle \alpha ^{a}=\prod \limits _{i=1}^{n_{t}}p_{i}^{\lambda _{i}}}

Wenn eine entsprechende Darstellung gefunden wurde, kann eine lineare Kongruenz gebildet werden.
a i = 1 n t λ i log α p i mod n {\displaystyle a\equiv \sum \limits _{i=1}^{n_{t}}\lambda _{i}\log _{\alpha }p_{i}\mod n}

Wenn eine genügend große Anzahl ( n t > t {\displaystyle n_{t}>t} ) an Relationen gefunden wurde, kann erwartet werden, dass das zugehörige lineare Gleichungssystem eine eindeutige Lösung für die Unbekannten log α p i {\displaystyle \log _{\alpha }p_{i}} mit 1 i t {\displaystyle 1\leq i\leq t} besitzt.

2. Schritt

In diesem Schritt werden die individuellen Logarithmen in G {\displaystyle G} berechnet. β G {\displaystyle \beta \in G} ist gegeben. Es werden solange Zufallszahlen s {\displaystyle s} gewählt, bis α s β {\displaystyle \alpha ^{s}\beta } sich als Produkt von Elementen aus S {\displaystyle S} schreiben lässt:
α s β = i = 1 n t p i b i {\displaystyle \alpha ^{s}\beta =\prod \limits _{i=1}^{n_{t}}p_{i}^{b_{i}}}
Es gilt:
log α β = i = 1 n t b i log α p i s mod n {\displaystyle \log _{\alpha }\beta =\sum \limits _{i=1}^{n_{t}}b_{i}\log _{\alpha }p_{i}-s\mod n}