Full paper (pdf) - CDC
Full paper (pdf) - CDC
Full paper (pdf) - CDC
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
heimgehalten werden, da die Chiffre F nur der Randomisierung von p ′ gilt.<br />
Falls p ′ kein gültiger RSA-Klartext für die Recovery-Chiffre ist (es muß gelten<br />
p ′ < NR), so wird der Schlüssel K um eins weitergezählt (K ← K + 1) und<br />
p ′ wird erneut berechnet. Diese zweite Funktion der Chiffre F vermeidet das<br />
häufige Suchen nach geeigneten Primzahlen p und senkt so die Rechenzeit. Erst<br />
nach einer bestimmten Anzahl an Iterationen B1 wird abgebrochen und das<br />
Verfahren neu gestartet (mit der Suche nach einem neuen p).<br />
Sobald ein gültiges p ′ gefunden wurde, wird dieses mit dem Backup-Schlüssel<br />
verschlüsselt. Von dem entstehenden Schlüsseltext c = (p ′ ) eR (mod NR) wird<br />
nun erneut durch die symmetrische Chiffre F mit anfänglichem Schlüssel K<br />
eine Reihe von Kandidaten c ′ für die obere Hälfte von N erzeugt (jeweils durch<br />
Weiterzählen von K). Testweise wird jeder Kandidat c ′ durch Konkatenation<br />
mit zufälligen Bits auf die doppelte Länge gebracht. Die entstehende Zahl wird<br />
durch p geteilt (Ganzzahldivision ohne Rest), falls dabei eine Primzahl q entsteht,<br />
setzt man N = pq und hat damit einen RSA-Modulus erhalten, dessen<br />
obere Hälfte aus dem Chiffretext c ′ besteht (aufgrund von Übertragsbits und<br />
dem fehlenden Rest bei der Ganzzahldivision kann die obere Hälfte NL = c ′ (−1)<br />
auch um eine Einheit zu niedrig sein). Hierzu werden mehrere Versuche notwendig<br />
sein, allerdings aufgrund des Primzahltheorems nicht allzu viele. Die<br />
Chiffre F erzeugt ohne großen Rechnenaufwand eine gewisse Anzahl randomisierter<br />
Kandidaten. Auch hier muß das Verfahren erst bei einer vorgegebenen<br />
Iterationsschranke B2 neu gestartet werden (mit einem neuen p).<br />
Zur Verdeutlichung der Funktionsweise der Suche nach N wollen wir ein kleines<br />
und stark vereinfachtes Beispiel geben. Wir wollen einen RSA-Schlüssel mit<br />
6 Dezimalstellen erzeugen, wobei der Primfaktor p den umgekehrt gelesenen ersten<br />
drei Ziffern des Moduln N entspricht. Zufällig entnehmen wir aus der Primzahltabelle<br />
die Kandidaten p ∈ {271, 953, 647, 443, 751, 337, 607, 823, 523, 107}<br />
und ” verschlüsseln“ sie zu c ′ ∈ {172, 359, 746, 344, 157, 733, 706, 328, 325, 701}.<br />
Unser erster Versuch führt zu 172512 (die letzten drei Ziffern zufällig ergänzt),<br />
ganzzahlige Division durch 271 ergibt 636, keine Primzahl. Aber schon im dritten<br />
Versuch gelangen wir zu 746357, also p = 647, q = 1153 und N = 745991<br />
(wobei der angesprochene Übertragsfehler aufgetreten ist). Von den zehn Kandidaten<br />
führten drei zum Erfolg (davon zwei mit Übertragsfehler).<br />
Wenn auf diese Weise passende N, p und q gefunden wurden, kann man den<br />
öffentlichen Exponenten e frei wählen (solange ggT(e, (p − 1)(q − 1)) = 1 gilt)<br />
und den dazugehörigen privaten Exponenten d mit dem erweiterten Euklidschen<br />
Algorithmus berechnen.<br />
Um den Schlüssel wiederherzustellen, betrachtet der Recovery-Operator die<br />
obere Hälfte des Moduln N als Schlüsseltext c ′ der Chiffre F . Da er nicht genau<br />
wissen kann, welcher der Kandidaten c ′ zum Erfolg geführt hat (der symmetrische<br />
Schlüssel K wurde dabei jeweils weitergezählt), entschlüsselt er c ′ für<br />
jedes mögliche K (deren Zahl durch die Iterationsschranke B2 begrenzt ist)<br />
und erhält damit eine Reihe denkbarer RSA-Schlüsseltexte c, die er mit seinem<br />
Recovery-Schlüssel zu einer Menge von möglichen p ′ entschlüsseln kann.<br />
Auch hier muß er wieder die symmetrische Chiffre F mit den B1 möglichen<br />
Schlüsseln K anwenden, solange bis er einen Primfaktor p von N entschlüsseln<br />
konnte. Konnte kein p gefunden werden, muß er aufgrund des möglichen Übert-<br />
42