Pollards lambda-algoritme

Uit testwiki
Naar navigatie springen Naar zoeken springen

Pollards lambda-algoritme, ook bekend onder de naam Pollards kangoeroe-algoritme, is een algoritme om de discrete logaritme te vinden. De Britse wiskundige John Pollard beschreef deze methode in hetzelfde artikel als waarin hij Pollards rho-algoritme voor logaritmen beschreef.

Pollards lambda-algoritme is bruikbaar om de discrete logaritme te bepalen, als men weet dat deze tot een beperkt aantal waarden {a,,b} behoort.

Door a=0 en b=p1 te stellen is het mogelijk om het Pollard lambda-algoritme voor algemene n te gebruiken, maar Pollards lambda-algoritme gaat veel sneller als {a,,b} een relatief klein aantal waarden bevat.

Het algoritme

Kies een verzameling S met gehele getallen en definier een functie f(x) die de groep G afbeeldt op deze verzameling S.
Kies vervolgens een geheel getal N en bereken een rij groepselementen (x0,x1,,xN) als: x0=gb en xi+1=xigf(xi) voor i=0,1,,N1.
Berekenen daarna de som van alle afzonderlijke f(xi): d=i=0N1f(xi)
Er geldt nu dus:

xN=x0gf(x0)gf(x1)gf(xN1)=x0gd=gbgd=gb+d

Berekenen nu een tweede reeks groepselementen (y0,y1,,yN) als: y0=h,yi+1=yigf(yi) voor i=0,1,,N1
Bereken tegelijkertijd de rij (d0,d1, waarbij dk=i=0k1f(yi)
Dan geldt: yi=y0gf(y0)gf(y1)gf(yi)=hgdi voor i=0,1,,N1
Ga door met het berekenen van nieuwe termen yi en di totdat een van de volgende twee situaties optreedt:

i) yj=xN voor bepaalde j.
Dan geldt: xN=yjgb+d=hgdjh=gb+ddj waaruit de gezochte nb+ddj(modp) gevonden kan worden.
ii) di=ba+d
Wanneer dit gebeurt, kan n zo niet worden bepaald.

We kunnen de verzameling S en/of de functie f(x) veranderen en opnieuw de verschillende stappen van het algoritme doorlopen.

Zie ook

Referenties

  • J. M. Pollard, Monte Carlo methods for index computation mod p. Mathematics of Computation, Volume 32, Issue 143 (jul.1978), 918-924.
  • M. Pollard, Kangaroos, Monopoly and Discrete Logarithms. Journal of Cryptology, Volume 13, pp 437–447, 2000