Faktorisierung

Ferienakademie 2001:
Kryptographie und Sicherheit offener Systeme
Faktorisierung
Stefan Büttcher
<[email protected]>
1
Definition. (RSA-Problem)
Gegeben:
n pq, ein RSA-Modul mit unbekannten Primfaktoren p und q,
ein dazugehöriger Public Key b.
=
Gesucht:
der zu b passende Private Key a: a b 1 (mod
(n)).
Definition. (Faktorisierungsproblem)
Gegeben:
eine (zusammengesetzte) Zahl n mit unbekannten Primfaktoren
Gesucht:
Primzahlpotenzen pei i und eine endliche Indexmenge I :
Y
ei
(p
iI
2
) =
n:
Satz. Das RSA-Problem lässt sich in polynomialer Zeit auf das Faktorisierungsproblem reduzieren:
RSA-Problem
P Faktorierungsproblem.
Begründung:
Es sei A ein Algorithmus, der die Primfaktorzerlegung
P n fpe11 ; :::; pekk g in O jnjj , j N , berechnet.
Wegen a b mod n lässt sich sich der Private Key a mit dem
erweiterten Euklidischen Algorithmus in O jnj 2 berechnen.
(
) =
(
1 (
(
)
))
(
)
) Wenn das Faktorisierungsproblem effizient l ösbar ist, dann ist RSA unsicher!
3
Ein erster Versuch: Trial Division
Idee:
p
Für alle natürlichen Zahlen p b nc teste, ob p j n.
p j n:
p 6 j n:
Teiler gefunden: STOP.
Kein Teiler: CONTINUE.
p jnj
.
Aufwand: O jnj Division: O jnj2 .
p jnj
p
Anzahl Schleifendurchläufe (worst case): n .
(
(
2
2
)
)
2
Verbesserung: Teste nur Primzahlen p.
P
:=
fp bpnc
Gesamtaufwand:
:
g jPj p ist Primzahl .
p jnj
O jnj .
(
2
)
4
pn
p .
ln( n)
Number trialDivision(Number n) f
p
Number s := b nc;
boolean isPrime[] := new boolean[s];
for (i := 2; i <= s; i++) isPrime[i] := true;
p
for (i = 2; i <= b sc); i++)
if (isPrime[i]) f
j := i * i;
while (j <= s) f
isPrime[j] := false;
j := j + i;
g
g
g
for (i = 2; i <= s; i++)
if ((isPrime[i]) && (n % i == 0)) return i;
return -1;
5
Methode von Fermat
Idee:
Finde Zahlen x; y
:
n
=
x2
y2
= (x
y)
(x +
p
x := d ne;
y := 0;
do f
while (x2 - y2 > n)
y := y + 1;
if (x2 - y2 < n)
x := x + 1;
g while (x2 - y2 6= n);
p
p
Entgegengesetzte Laufrichtung: d ne, (d ne
1),
..., 1.
Gut geeignet zum Finden von Faktoren in der N ähe von pn.
6
y ).
Pollards Rho-Algorithmus
Sei n zusammengesetzt und p ein nicht-trivaler Teiler von n. Sei ferner
f (x)
:=
x2
+ 1.
Betrachte die Folge
x0
Sei nun yi
:=
:= 1;
xi
:=
f (xi
1)
mod n;
i
1:
xi mod p. Wegen
xi
f
(xi
yi
f
(yi
folgt dann
mod n)
1) (
mod p):
1) (
Da es nur p verschiedene Kongruenzklassen modulo p gibt, ergibt sich
irgendwann eine Kollision:
yi
=
yj ; i
und somit ein Zyklus:
yi+k
=
yj +k
7
6
=
j;
8 k N:
Der Namensgeber:
yi+1
yi+2
y=y
i j
yj-1
y1
y0
Aus yi
=
yj folgt nun:
xi
Falls xi
6
=
xj
(
) pj
mod p)
xj , ist mit ggT (n; xi
(xi
xj ):
xj ) ein echter Teiler von n gefunden.
Problem: Wie findet man die Indizes i und j ?
Speichern aller Werte bei Weitem zu teuer!
8
Ausweg: Verfahren von Brent oder Floyd’s Cycle Trick
Floyd’s Cycle Trick
Konstruiere eine Folge (xi ; yi )
(x1 ;
:= (f (xi );
f (f (yi ))):
x2 ); (x2 ; x4 ); (x3 ; x6 ); (x4 ; x8 ); :::
Ist ein Paar (x; y ) mit ggT (n; x
y ) gefunden: STOP.
Verfahren von Brent
Betrachte die Differenzen
x1
x3
x7
x12 ; x7
Und deren Produkte, z.B. m
x3 ;
x6 ; x2
x13 ; x7
:= (x 3
x6 )
x7 ;
x14 ; x7
(x2
mit ggT (n; m) gefunden: STOP. (Bei ggT (n; m)
9
x15
x7 ). Ist ein Produkt m
=
n evtl. Backtracking.)
Pollards (p-1) - Algorithmus
Definition. Sei B eine natürliche Zahl. Eine ganze Zahl b heiße
B-glatt, falls für alle Primfaktoren pi j b gilt: pi B ,
B-potenzglatt, falls für alle Primpotenzen pei i j b gilt: pei i B .
Pollards Idee
Sei n eine zusammengesetzte Zahl und ein p Primfaktor. Sei k beliebig, so dass
(p
jk. Wegen
1)
p 1
a
mod p) (kleiner Fermatscher Satz)
1 (
ist auch
k
)
a
p
j
mod p) (kleiner Fermatscher Satz)
1 (
k
(a
1):
10
Wenn n
6 j ak
(
1),
dann ist wie beim Rho-Verfahren ggT (n; a k
1)
echter Teiler von n.
Problem: Wie findet man ein geeignetes k ?
Sei (p
1)
B -potenzglatt. Dann ist k
for (j := 2; j
a := aˆj mod
if (j % 5 ==
g := gcd(a
if (g > 1)
}
}
Platzbedarf:
O jnj .
(
)
:=
B ! Vielfaches von p
<= B; j++) {
n;
0) {
- 1, n);
return g;
Zeitbedarf:
O Blnj(Bn)j
(
11
).
1.
ein
Finde x, y , so dass
Fermats Idee:
2
x
Variation:
y
2
=
n:
(von Kraitchik oder Legendre)
x
y2
n
(x
2
)
)
Wenn nun n
6j
(x
j
nj
mod n)
(
2
y
(x +
y ), dann ist mit g
y)
:=
2
)
(x
y ):
ggT (n; x
y ) ein nicht-trivialer
Faktor gefunden.
Problem:
Wie findet man Paare (x; y )
:
12
x2
y2
mod n) ?
(
Methode von Dixon
Sei f (s)
:=
s mod n und B
s; f s , so dass s 6
s
Suche Paare (
( ))
eine Menge von Primzahlen (,,Faktorbasis”).
=
zerlegbar ist:
p ist prim
f (s) und f (s) über der Faktorbasis
) pjf
(
(s)
)pB :
)
Bilde Produkte
S0
S
:=
:=
s1 sj ;
f s1 f
s0
f (s0 )
(
)
(sj );
so dass alle Primfaktorpotenzen von S 0 geraden Exponenten haben.
Es gilt
2
si
f
mod n)
(si ) (
8iI )
Die gesuchte Form ist erreicht:
x
:=
S; y
13
:=
S
2
p 0
S :
S0
mod n):
(
Beispiel. Sei n
:= 187
ein RSA-Modul und
B
:=
f
g die
3; 5; 31
Faktorbasis. Es seien bereits folgende Kongruenzen gefunden:
2
23
2
24
2
29
5
3
3
31 (mod
5 (mod
n);
n);
31 (mod
n):
Dann folgt:
(23
24
2
29)
2
113
) ggT
Ist
C
(113
91; 187) = 11
(3
5
2
91
2
31)
(mod
(mod
n);
n):
ist ein Teiler von n.
jBj die Größe der Faktorbasis, dann müssen h öchstens
jBj Kongruenzen gefunden werden, damit die quadratische Form
:=
+1
hergestellt werden kann.
14
Herstellen der quadratischen Form durch Gauß’sche Elimination.
Beispiel. Sei n
:= 187
und
B
:=
f
g. Folgende
2; 3; 5; 7; 11; 17; 31
Kongruenzen sind bereits gefunden:
2
2
2
20
2
17;
24
3
5;
29
3
31
;
2
3 ;
und 2 2
22
27
2
2
33
5
11
3
7
2
7
2
2
23
28
2
5
2
31;
2
3
;
11:
Es resultiert die Matrix:
2
1
1
0
0
3
2
0
1
3
0
0
0
1
1
2
1
0
5
0
1
1
1
0
0
0
0
7 11 17 31
0 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 1
1 1 0 0
|
|
|
|
|
|
|
|
|
15
20 22 23 24 27 28 29 33
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
Die Matrix wird modulo 2 reduziert und dann mit Gauß transformiert:
2
1
1
0
0
1
0
0
1
3
0
0
0
1
1
0
1
0
5
0
1
1
1
0
0
0
0
7 11 17 31
0 0 1 0
0 1 0 0
0 0 0 1
0 0 0 0
1 0 0 0
0 0 0 0
0 0 0 1
1 1 0 0
|
|
|
|
|
|
|
|
|
20 22 23 24 27 28 29 33
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1
2
1
0
0
0
0
0
0
0
3
0
1
0
0
0
0
0
0
5
0
1
1
0
0
0
0
0
7 11 17 31
0 1 0 0
0 0 0 0
1 0 1 0
1 0 1 1
0 1 1 1
0 0 1 0
0 0 0 0
0 0 0 0
|
|
|
|
|
|
|
|
|
20 22 23 24 27 28 29 33
1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
1 0 0 1 1 0 0 0
1 0 0 0 0 0 1 0
1 1 0 1 1 0 1 0
1 1 0 1 1 0 0 1
0 0 1 1 0 0 1 0
0 0 0 0 0 1 0 0
16
Es ergibt sich, dass
ggT (113
19; 187) = 11
und
ggT (28
6; 187) = 11:
Frage: Wie viele Kongruenzen müssen faktorisiert werden?
Annahmen:
Die Zeilen B B -Matrix sind linear unabhängig.
Ist ein perfektes Quadrat gefunden, gilt in 50% aller F älle:
x y
n ) gcd x
y; n
(
)
(mod
)
(
) =
n:
Dann ist die Wahrscheinlichkeit, einen nicht-trivialen Teiler zu finden
P
B
= 1
2
17
C
:
Optimale Wahl der Faktorbasis
Welche Primzahlen sollten aufgenommen werden?
Gesucht ist nach Primzahlen p i , so dass
j rr n
) n r2 mod n ;
p
(
)
(
)
also n quadratischer Rest modulo p ist.
) das Legendre-Symbol
(n=p)
muss +1 sein.
! Reduktion der Faktorbasis um ungef ähr die Hälfte!
18
Das Quadratische Sieb
Wenn n quadratischer Rest modulo p ist, also
n
s2
(mod
p)
oder
n
(
2
s)
(mod
p)
gilt, dann ist wegen
(s
auch
kp 2
=
2
s
2skp +
2 2
k p
8 r s
p :
Das heißt: Wenn es muss für jedes p B nur einmal der Wert von s berechnet
n
r2
)
(mod
p)
(mod
)
werden. Danach steht genau fest, welche f (r ) durch ein bestimmtes p teilbar
sind.
!
Es fallen keine erfolglosen Probedivisionen mehr an!
19
Beispiel. Sei n
:= 391.
Aufbau einer Faktorbasis
(n=2) = +1; 12
(n=7) =
n
(mod 2);
22 12 42 (n=3) = +1; 12
(n=5) = +1;
n
(mod 3);
n
(mod 5);
1; (n=11) =
(n=13) = +1; 12
B mit jBj
122 n
1
(mod 13):
Aufbau des Siebintervalls:
135 172 102 182 67
192 10 202 +19 212 +50
222 +93 232 +138 242 +185
162
;
;
;
;
;
;
Ohne Probedivision ist sofort erkennbar:
f
f
(17),
f (19), f (21) und f (23) sind durch 2 teilbar,
(16),
f (19), f (21) und f (24) sind durch 5 teilbar.
20
;
;
:
= 4:
Dividieren ohne Division
Y
Angenommen, eine Zahl m k önne komplett üeber der Basis zerlegt werden:
9 !p
k
:= (p1 ;
p2 ; :::; pk )
m
:
=
pi
i=1
)
!
X
k
log (m)
=
log (pi ):
i=1
Beim Sieben sind keine Divisionen mehr n ötig!
Zusammenfassung: Quadratisches Sieb
Aufbau einer Faktorbasis mit Primzahlen p n=p
Lösen der Kongruenzen t2 n
p ,
Finden von genügend vielen zerlegbaren Kongruenzen,
Konstruktion der quadratischen Form.
: (
(mod
21
)
) = +1,
Continued Fractions (CFRAC)
Selbes Prinzip wie beim Quadratischen Sieb, aber Geschwindigkeit nicht durch
pn.
Siebverfahren, sondern durch spezielle Reihenentwicklung, so dass
f (r ) <
2
Asymptotische Laufzeiten
pln(n)ln(ln(n))
Continued Fractions: O e
,
p
Quadratic Sieve: O e(1+o(1)) ln(n)ln(ln(n)) ,
p
Elliptic Curve Method: O e(1+o(1)) 2ln(p)ln(ln(p)) ,
Number Field Sieve: O e(1:92+o(1))(ln(n))1=3(ln(ln(n)))2=3
2
(
)
)
(
(
)
(
22
).