10.4 Modulare Quadratwurzeln

Werbung
10.4 Modulare Quadratwurzeln
a) Sei p eine ungerade Primzahl.
Die Menge Q = {y 2 : y ∈ Z∗p } ist eine Untergruppe von Z∗p . Da y und −y mod p
= p − y das gleiche Quadrat haben, aber y 6= p − y (p ungerade), ist genau die Hälfte
der Elemente in Z∗p ein Quadrat (mod p), d.h. |Q| = (p − 1)/2.
Das bedeutet, dass ein Element x ∈ Z∗p entweder keine oder zwei Quadratwurzeln
mod p besitzt.
Ist a ein Quadrat in Z∗p , so ist a|Q| = 1 (in Z∗p ), d.h. a(p−1)/2 mod p = 1.
Ist a kein Quadrat in Z∗p , so ist a(p−1)/2 mod p = p − 1.
(Der Grund hierfür ist folgender: Für jedes a ∈ Z∗p gilt nach dem kleinen Satz von
Fermat ap−1 = 1 (in Z∗p ). Also kann a(p−1)/2 als Nullstelle des Polynoms t2 −1 ∈ Zp [t]
nur die Werte 1 bzw. −1 mod p = p − 1 annehmen. Sämtliche (p − 1)/2 Elemente a ∈ Q erfüllen a(p−1)/2 = 1 in Z∗p , sind also Nullstellen des Polynoms
t(p−1)/2 − 1 ∈ Zp [t]. Da dieses Polynom nicht mehr als (p − 1)/2 Nullstellen besitzt, muss für alle übrigen Elemente a ∈ Z∗p , also die Nichtquadrate, a(p−1)/2 mod
p = p − 1 gelten.)
Man kann also leicht entscheiden, ob ein a ∈ Z∗p ein Quadrat ist oder nicht.
Zur Berechnung von Quadratwurzeln in Z∗p gibt es schnelle (probabilistische) Algorithmen (siehe z.B. Wätjen, Kap. 9.2).
Ganz einfach ist die Quadratwurzelbestimmung, wenn p ≡ 3 (mod 4). Ist nämlich
a ein Quadrat, so ist (a(p+1)/4 )2 ≡ a(p+1)/2 ≡ a · a(p−1)/2 ≡ a (mod p).
b) Sei nun n = p · q, wobei p 6= q ungerade Primzahlen sind.
Dann gilt: Ist a ∈ Z∗n (d.h. ggT(a, n) = 1), so hat a entweder keine Quadratwurzel
in Z∗n oder genau vier:
Hat a eine Quadratwurzel mod n, so auch mod p und mod q. Seien x1 , p − x1 die
Quadratwurzeln von a in Z∗p und x2 , q − x2 die in Z∗q .
Nach dem Chinesischen Restsatz gibt es dann zu jeder Kombination x ∈ {x1 , p−x1 },
x0 ∈ {x2 , q − x2 } ein y ∈ Z∗n mit y ≡ x (mod p) und y ≡ x0 (mod q).
Damit erhält man vier verschiedene y mit y 2 ≡ a (mod p) und y 2 ≡ a (mod q), d.h.
y 2 ≡ a (mod n).
Beispiel:
n = 21, p = 3, q = 7.
Gesucht: Quadratwurzeln aus 16 in Z∗n .
4|p + 1, 4|q + 1.
x1 = 16(3+1)/4 mod 3 = 1, 3 − x1 = 2.
x2 = 16(7+1)/4 mod 7 = 4, 7 − x2 = 3.
Viermalige Anwendung des Chinesischen Restsatzes liefert die folgenden vier Quadratwurzeln von 16 in Z∗21 :
y1 = 4
(zu x1 = 1 und x2 = 4)
y2 = 17 (zu 3 − x1 = 2 und 7 − x2 = 3)
y3 = 11 (zu 3 − x1 = 2 und x2 = 4)
y4 = 10 (zu x1 = 1 und 7 − x2 = 3).
(Beachte: y2 = n − y1 , y4 = n − y3 )
c) Sei wieder n = p · q, wobei p 6= q ungerade Primzahlen sind.
Dann ist die Berechnung von Quadratwurzeln mod n genauso schwierig, wie die
Bestimmung der Faktorisierung von n:
Kennt man p und q, so kann man nach a) und b) Quadratwurzeln modulo n effizient
berechnen.
Umgekehrt:
Wähle x ∈ Z∗n zufällig und berechne a = x2 mod n.
Bestimme Quadratwurzel y aus a. Ist y = x oder y = n − x, so wähle neues x.
Da es vier Quadratwurzeln von a gibt, ist y 6= x, n − x mit Wahrscheinlichkeit 1/2.
Durch Iterieren erhält man also mit beliebig hoher Wahrscheinlichkeit zu einem x
und a = x2 mod n eine Quadratwurzel y von a mit y 6= x, n − x.
Mit einem solchen y kann man die Faktorisierung von n schnell bestimmen:
Es ist x2 − y 2 ≡ 0 (mod n), d.h. n = p · q|(x − y) · (x + y).
n teilt nicht x + y, da wegen x + y < 2n sonst x + y = n folgte, also y = n − x, im
Widerspruch zur Annahme über y.
n teilt auch nicht x − y, da sonst x = y, ebenfalls im Widerspruch zur Annahme
über y.
Also ist ggT(x+y, n) = p oder q. Da der ggT mit Hilfe des Euklidischen Algorithmus
schnell zu berechnen ist, erhält man somit die Faktorisierung von n.
Herunterladen