Einzelnen Beitrag anzeigen

Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#13
  Alt 10. Dez 2002, 14:12
Hallo Leute,

ich poste einfach mal zur Information, wie der RSA-Algo ungefähr funktioniert:

---
Man erstelle drei zufällig erzeugte (je weniger Pseudo-Zufall, umso besser) Primzahlen z1, z2 und z3, für die gilt: die Schnittmenge von T(z3) und T((z1 -1)(z2 - 1)) ist leer (T() steht für die Teilermenge). Als nächstes bilde man ein Produkt p = z1 * z2.

Jetzt kommt die Erstellung des öffentlichen Schlüssels, mit dem nur verschlüsselt werden kann. Der öffentliche Schlüssel besteht aus den Zahlen z3 und p. Für die Klarziffer K und die verschlüsselte Botschaft B gilt nun: B = (K ^ z3) mod p.

Der geheime Schlüssel, mit dem entschlüsselt wird, besteht aus z1, z2 (und damit auch p) und z3. es wird nun ein geheimer Exponent g berechnet, für den gilt: G = 1 / z3 mod (z1 - 1)(z2 - 1). Nun kann min die Klarziffer K wie folgt berechnen K = (B ^ g) mod p.

Ein Beispiel: Es sei z1 = 13, z2 = 19 und z3 = 5. Daher gilt p = 247. der geheime Exponent g ist g = 0,2 mod 216 = 173. Will man nun die Klarzffer K = 12 verschlüsseln, so erhält man B = (K ^ z3) mod p = (12 ^ 5) mod 247 = 103. Mit dem geheimen Exponenten g ann man nun wieder K berechnen: K = (B ^ g) mod P = (103 ^ 173) mod 247 = 12.
---

Normalerweise wird RSA benutzt, um nachrichten zu verschlüsseln. Der Sender besitzt den öffentlichen Schlüssel de Empfängers, verschlüsselt die Nachricht damit und übergibt sie an den Empfänger. Der kann die Nachricht dann mit dem geheimen Schlüssel wieder entschlüsseln. Ein Cracker hat dann z3 und p aus dem öffenlichen schlüssel, braucht aber für den geheimen Exponenten g noch z1 und z2. Also muss er alle Möglichkeiten für z1 und z2 durchprobieren (er kennt schließlich das Produkt der beiden, p). Da diese beiden Zahlen sich normalerweise in der Größenordnung 10^200 aufhalten, dauert das zumindest mit heutigen Systemen Jahrhunderte.

Wenn jetzt diese DLL aus ein paar Zeichen Passwort einen Schlüssel generiert, dann kann es passieren, dass mehrere Passwörter den gleichen Schlüssel erzeugen, sehr unpraktisch.

Außerdem, und das ist es was Motzi meint, kann man bei Zahlen, die gerade mal 64 Bit groß sind, sich also in der Größenordnung 10^19 befinden, in erheblich kürzerer Zeit als Jahrhunderte faktorisieren, damit tendiert die Sicherheit schon sehr gegen null.

Was mich auch verwundert, ist: wo werden die Schlüssel gespeichert? Wenn das in der verschlüsselten Datei selber geschieht, dann liefert man dem Cracker sämtliche Instrumente auf dem Silbertablett, er wird danken. Damit wäre die Sicherheit genau null.

MfG,
d3g

PS. Wenn man den Algorithmus nachbauen will, wird man über die Modulo-Operation mit Fließkommazahlen stolpern. Die Standard-C-Bibliotheken beinhalten eine Funktion fmod(), die das beherrscht, leider habe ich sowas für Pascal noch nicht gesehen .
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat