CRT (Chinese Remainder Theorem)

Werbung
CRT (Chinese Remainder Theorem)
Aussage: Gegeben k teilerfremde Zahlen n1 , . . . , nk ∈
Abbildung ein Ring-Isomorphismus:
φ:
Zñ → Zn
1
Z und ñ :=
Qk
i=1
ni , so ist die folgende
×. . .× Znk , x 7→ (x mod n1 , . . . , x mod nk )
Insbesondere existiert für jedes Tupel (a1 , . . . , ak ) ∈ Zn1 ×. . .×Znk ein eindeutiges x ∈ Zñ , sodass
x = ai mod ni für i = 1, . . . , k.
Berechnung: Gegeben seien die folgenden Kongruenzen mit unbekanntem x und paarweise
teilerfremden ni :
x = a1
mod n1
x = a2
..
.
mod n2
x = ak
mod nk
Mittels des erweiterten euklidischen Algorithmus berechnen wir (z1 , . . . , zk ) ∈
sodass gilt:
zi = (n1 · . . . · ni−1 · ni+1 · . . . · nk )−1 mod ni
Das gesuchte x berechnet sich daraus dann folgendermaßen:
Y
Y
Y
x = a1 · z1 ·
ni + a2 · z2 ·
ni + . . . + ak · zk ·
i6=1
i6=2
i6=k
ni
Zn
1
× . . . × Z nk ,
mod ñ
Alternative Berechnung (iterativ): Wir berechnen y1 , . . . , yk , sodass yj = ai mod ni für
1 ≤ i ≤ j and damit yk = x. Der Iterationsbeginn ist trivial; wir setzen einfach y1 := a1 . Danach
können wir yj folgendermaßen aus yj−1 und aj berechnen:
yj = rj · (n1 · . . . · nj−1 ) + yj
oder
yj = sj · nj + aj
mit
mit
rj = (aj − yj ) · (n1 · . . . · nj−1 )−1
sj = (yj − aj ) ·
n−1
j
mod nj
mod n1 · . . . · nj−1
Anwendung: Der chinesische Restsatz kann u. A. verwendet werden, um RSA-Verschlüsselungen
zu brechen, wenn hinreichend viele Empfänger derselben Nachricht m (z. B. bei einem Broadcast)
denselben öffentlichen Verschlüsselungsschlüssel e verwenden und dieser nicht zu groß ist.
Gegeben seien e öffentliche Schlüssel (e, n1 ), . . . , (e, ne ) und e entsprechende RSA-Chiffrate
derselben Nachricht m, also ci = me mod ni . Nach dem chinesischen Restsatz finden wir ein
eindeutiges x ∈ Z mit 0 ≤ x < n1 · . . . · ne , sodass gilt:
x = c1
mod n1
x = c2
..
.
x = ce
mod n2
mod ne
Aufgrund der Eindeutigkeit von x muss gelten:
x = me
mod n1 · . . . · ne
Wegen m ≤ min{n1 , . . . , ne } haben wir außerdem me ≤ n1 ·. . .·ne und können m =
berechnen.
√
e
x analytisch
Herunterladen