SecOpsJan Kahmen5 min Lesezeit

Ende-zu-Ende-Verschlüsselung im Browser

Moderne Software-as-a-Service-Lösungen nutzen moderne Cloud-Technologien und sind nicht als On-premises-Software installierbar. Aufgrund von Vorschriften und Anforderungen der Compliance dürfen viele Unternehmen diese Softwarelösungen nicht benutzen, obwohl dadurch ein großer Mehrwert für die Prozess-Effizienz und Qualität erzeugt wird.

e2e_verschluesselung.jpg

Inhaltsverzeichnis

Um unseren Kunden und Partner trotz dieser Vorschriften das bestmöglichste Produkt anbieten zu können, haben wir ein Framework entwickelt, welches Daten im Browser verschlüsselt und entschlüsselt. Somit sind die Daten nur von autorisierten Nutzern einsehbar. Die Plattform kann somit genutzt werden, ohne dass die Entwickler oder der Betreiber, in dem Fall wir, die Daten einsehen kann!

Der technische Aufbau unserer Lösung

Die folgen Programmablaufpläne zeigen den technischen Aufbau zur Validierung unseres Systems. Die gelb markierten Aktivitäten stellen eine Interaktion mit AWS Cognito und der Dynamo DB dar. Die anderen Aktivität werden lokal im Browser ausgeführt.

PAP:

certa.jpg

Account erstellen

Als Erstes wählt der Nutzer sein Username und Password zu den spezifischen Userdaten. Nachdem das Passwort gehashed wurde, wir dieses zusammen mit dem userseitigen und zufällig generierten Key Pair verschlüsselt. Das gehashte Passwort sowie das verschlüsselte Key Pair wird dann zusammen mit den Userdaten im AWS Cognito gespeichert. Das öffentliche Key Pair wird unverschlüsselt in der Dynamo DB gespeichert.

Einloggen

Um sich an der Plattform anzumelden, muss der Nutzer von AWS Cognito autorisiert werden. Das verschlüsselte Key Pair zum Entschlüsseln von Daten wird mit dem Passwort entschlüsselt. Danach können die Daten von der Plattform entschlüsselt und gelesen werden. Das öffentliche Key Pair kann über den Usernamen über die Dynamo DB abgefragt werden.

Verschlüsselung

Ein Datensatz wird mit einem zufällig generierten Key verschlüsselt. Dieser Key wird dann mit dem öffentlichen Key der Zielbenutzer verschlüsselt. Zusammen mit den verschlüsselten Daten wird dieser zufällig generierte Key verschlüsselt in der Dynamo DB gespeichert.

Entschlüsselung

Um einen Datensatz zu entschlüsseln, benötigt der Nutzer seinen privaten Key und die ItemId. Erst wird der verschlüsselte zufällig generierte Key mit seinem privaten Key entschlüsselt, danach wird mit diesem Key der Datensatz entschlüsselt.

Verwendete Kryptografie

AWS Cognito

AWS Cognito benutzt das Secure-Remote-Password-Protokoll (SRP) als erweitertes Passwort-authentifiziertes Schlüsselaustauschprotokoll (PAKE), das speziell entwickelt wurde, um bestehende Patente zu umgehen.

Eine wichtige Eigenschaft ist, dass ein Mittelsmann nicht genügend Informationen erhalten kann, um ein Passwort mit roher Gewalt zu erraten, ohne dass bei jedem (wenigen) Versuch weitere Interaktionen mit den Parteien stattfinden. Dies bedeutet, dass eine hohe Sicherheit auch mit schwachen Passwörtern erreicht werden kann.

Verwendete Library

Die verwendete Kryptografie kommt aus der Libary modernen JavaScript Libary ttweetnacl (https://tweetnacl.js.org/#/). Diese wurde bereits einem Audit unterzogen, indem keine Sicherheitsprobleme zu finden waren und aktiv betreut wird. (https://cure53.de/tweetnacl.pdf)

Curve25519

Die Curve25519 ist eine elliptische Kurve, die für unser asymmetrische Kryptosystem genutzt wird. Sie ist besonders schnell und von der IETF als RFC 7748 standardisiert.

Die Kurve wird von ProtonMail, Signal-App, Threema, WhatsApp, Element, dem Tor- und I2P-Netzwerk verwendet. Die Kurve ist in allen gängigen Librarys zu finden und kann frei verwendet werden.

Salsa20

Salsa20 ist eine Stromverschlüsselung, die 2005 von Daniel J. Bernstein entwickelt wurde und ist frei von Patenten. Salsa20 bietet normalerweise eine bessere Leistung als der gängigere AES-Algorithmus ( Advanced Encryption Standard ) auf Systemen, auf denen die CPU keine AES-Beschleunigung aufweist

Poly1305

Poly1305 ist ein kryptographischer Nachrichtenauthentifizierungscode (MAC), der von Daniel J. Bernstein entwickelt wurde. Er kann verwendet werden, um die Datenintegrität und die Authentizität einer Nachricht zu überprüfen. Eine Variante von Bernsteins Poly1305, die kein AES erfordert, wurde von der Internet Engineering Task Force in RFC 8439 standardisiert.

SHA-512

SHA-512 ist eine kryptologische Hashfunktion, die unter dem Oberbegriff SHA-2 bekannt ist. Als Hashfunktion dient sie dazu, digitale Dateien (z.B.: Nachrichten) mit einem Hash-Wert (digitale Signatur) zu versehen. Die Zahl 512 steht hierbei für die Länge des Hash-Wertes in bit. Die Funktion ist in allen gängigen Libraries vorhanden vorhanden und kann Patentfrei verwendet werden

Neugierig? Überzeugt? Interessiert?

Vereinbaren Sie noch heute ein unverbindliches Gespräch mit einem unserer Produktexperten.