Client-side-Verschlüsselung über HTTP mit Diffie-Hellman Key Exchange und AES

Nachdem ich ein YouTube-video auf der Diffie-Hellman-Key-Exchange, ich wollte versuchen, eine Implementierung in JavaScript (Atwood ' s law).

Ich entwarf eine Chiffre auf Node.js mit den folgenden Regeln:

  • Schritt 1: Client und server einigen sich auf einen gemeinsamen Schlüssel:

    • Client & server starten mit einem 512bit prime öffentlichen Schlüssel pK

    • Client generiert einen 512bit prime private Schlüssel kC und sendet powMod(3, kC, pK)

    • Server generiert ein 512bit prime private Schlüssel kS und sendet powMod(3, kS, pK)

    • Client & Server verwenden powMod(Antwort, privatekey pK) als gemeinsamen Schlüssel

  • Schritt 2: Kommunikation

    • Bevor ein client Daten sendet, verschlüsselt mit dem gemeinsamen Schlüssel unter Verwendung des Stanford Javascript Crypto Library (256bit AES, HMAC-Authentifizierung, Passwort, PBKDF2 Stärkung und CCM-authenticated-encryption.)

    • Sobald der server entschlüsselt die Daten mit dem gemeinsamen Schlüssel, erzeugt es eine neue 512bit prime privaten Schlüssel und sendet es als SJCL die verschlüsselte Antwort.

    • Client und server wechseln zu einem neuen gemeinsamen Schlüssel mit powMod(3, prevSharedKey, newPrivKey)

Nun habe ich ein paar Fragen..

Wie sicher wäre ein solches system werden im Vergleich mit HTTPS oder andere algorithmen? Was sind die schwächsten Punkte von einem solchen system?

In Bezug auf die Sicherheit /Funktionalität, würde es besser sein, auf 1024-bit-Schlüsseln für mehr Sicherheit? Sind die HMAC/PBKDF2/CCM-Optionen-overkill? Lohnt es sich die Modulation der gemeinsame Schlüssel? Vielen Dank für das Lesen!

InformationsquelleAutor iRyanBell | 2012-03-23
Schreibe einen Kommentar