Eisbär: Verschlüsselung

Beitrag lesen

Hallo Kati

Vom Verfahren her eignet sich in diesem Fall nur eine asymetrische Verschlüsselung wie z.B. RSA.
D. h. im Client verschlüsselst Du das Passwort (oder andere Angaben) mit dem öffentlichen Schlüssel in Javascript und auf dem Server wird das Ganze mit dem privaten Schlüssel entschlüsselt.

Im Javascript-Code steht nur der öffentliche Schlüssel und das Produkt r = (p-1)(q-1) zur Verfügung. Mit diesen Angaben ist die Entschlüsselung ein mathematisch schwer lösbares Problem (Primfaktorzerlegung grosser Zahlen, NP-Problem).
Bei Schlüssellängen > 1000 Bit ist dies derart aufwendig, dass alle zur Verfügung stehende Rechenpower der Erde wahrscheinlich für Jahre in Anspruch genommen werden müsste, um den Klartext zu erhalten.

Das Problem des man-in-the-middle-Angriffs bleibt aber mit der reinen RSA-Verschlüsselung bestehen, es gibt dazu aber Identifizierungsverfahren auf Basis öffentlicher Schlüssel mit denen das Problem gelöst werden kann.

Das Problem in der konkreten Umsetzung liegt darin, dass man in Javascript ein Bibliothek für Langzahl-Arithmetik implementieren muss. Insbesondere benötigt man für RSA eine effiziente Implementation des Montgommery-Algorithmus, woran ich bis jetzt gescheitert bin.

Nicht zu unterschätzen ist auch der Rechenaufwand auf dem Client. Eine Multiplikation zweier Langzahlen in dieser Grössenordnung dauert 1-2 Sekunden bei einem P5 1,3 GHz. Die Divisionen ist sicher noch aufwendiger, diese wird aber für RSA nicht zwingend benötigt, sondern eben die modulare Multiplikation und Reduktion nach Montgommery. Leider weiss ich nicht wie effizient diese im Vergleich sind, noch wie ich diese geeignet in Javascript umsetze.

Falls jemand dazu konstruktive Ideen hätte, wäre ich dankbar.

Grüsse
Eisbär