2012-10-06 11 views
7

Meine Situation: (!)Browser-basierte Verschlüsselung/Entschlüsselung mit einem privaten Schlüssel von Browser-Schlüsselspeicher

  1. Medizinisches Personal sensible Daten von Patienten, die in einen Web-Browser zu speichern, um es zu einem gewissen Datenbank eingeben will, und später wieder abrufen.

  2. Diese Daten dürfen von niemandem außer dem medizinischen Personal selbst gesehen werden. Dies bedeutet, dass es mit einem geheimen Token verschlüsselt werden muss, bevor es an den Server übertragen wird. Es bedeutet auch, dass weder IT-Mitarbeiter (Zugriff auf den Server/Datenbank) noch sonst jemand in der Lage sein sollte, sie ohne das geheime Token zu entschlüsseln. (Wenn das Token verloren geht, wären die Daten nie mehr zugänglich.)

  3. Es sollte keine zusätzliche Software auf dem Clientcomputer installiert werden, außer einem Token (z. B. einem privaten Schlüssel), den man einmal exportieren und importieren würde in alle Browser, aus denen Datenzugriff gewährt werden soll.

Also meine Frage ist:

Gibt es eine Möglichkeit zum Verschlüsseln/Entschlüsseln von Daten auf der Client-Seite (zB mit JavaScript) mit einiger Token-Geheimnis-Browser, der leicht zwischen den Browsern ausgetauscht werden kann (Dh exportiert/importiert ähnlich X.509-Zertifikaten)?

Wenn nicht, welche alternativen Lösungen wären möglich? Da die Bedingungen 1 und 2 obligatorisch sind, kann nur die Bedingung 3 geändert werden, falls erforderlich. Trotzdem sollte auf der Client-Seite noch so wenig Installationsaufwand wie möglich notwendig sein.

EDIT: SSL ist offensichtlich nur ein Teil der Antwort auf diese Frage!

+2

Ich habe drei Buchstaben für Sie: S, S und L. –

+1

Nein, bitte lesen Sie meine Frage carefeully. – Thomas

+0

Ich habe keine Antwort, aber wahrscheinlich, wie OAuth funktioniert, kann dir vielleicht Ideen geben. –

Antwort

5

Werfen Sie einen Blick auf Web-browser encryption of personal health information, deren "Zusammenfassung" Abschnitt scheint Ihr Problem zu beschreiben. Ihr "Passcode", der den Verschlüsselungsschlüssel generiert, muss jedoch geteilt werden, sodass Sie nicht zwischen den Mitarbeitern unterscheiden können.

Wir beschreiben ein System zur Ferndateneingabe, der die Daten ermöglicht, dass die Patienten identifizieren würde im Web-Browser der Person verschlüsselt werden, um die Eingabe von Daten. Diese Daten können nicht vom Personal im Rechenzentrum auf dem Server entschlüsselt werden, sondern können von der Person bei der Eingabe der Daten oder ihres Stellvertreters entschlüsselt werden. Wir entwickelten dieses System zu lösen ein Problem, das im Kontext der klinischen Forschung entstand, aber es ist in einer Reihe von Situationen, in denen sensible Informationen gespeichert und aktualisiert in einer Datenbank und es notwendig ist, sicherzustellen, dass es nicht sein kann angesehen werden, außer denen, denen absichtlich Zugang gewährt wurde.

+0

Danke für Ihren Vorschlag! Im Prinzip funktioniert es. Wir haben bereits eine ähnliche Implementierung gefunden, inspiriert von http://code.google.com/p/memwords, die dem gleichen Ansatz folgt. – Thomas

+0

@Thomas Eine Möglichkeit, um einen einzelnen Schlüssel zu erhalten, ist eine Methode, die ich fand, wird von, glaube ich, Boxcryptor verwendet. Wenn einige Daten erstellt werden, wird auf der Benutzerseite (in diesem Fall der Browser) ein symmetrischer Schlüssel erstellt, der dann mit dem asymmetrischen öffentlichen Schlüssel dieses Benutzers verschlüsselt und an den Server gesendet wird. Wenn dieser Benutzer diese Daten freigeben möchte, muss er diesen symmetrischen Schlüssel verwenden und ihn mit dem asymmetrischen öffentlichen Schlüssel des jeweiligen Mitarbeiters verschlüsseln und diesen zusätzlich zu seinen eigenen (und anderen) Verschlüsselungen des symmetrischen Schlüssels auf dem Server speichern. ... (Fortsetzung folgt) –

+0

Beim Zugriff lädt ein Benutzer den mit dem öffentlichen Schlüssel verschlüsselten Schlüssel herunter, entschlüsselt ihn und verwendet den symmetrischen Schlüssel zum Entschlüsseln der Hauptdaten. Dies erfordert immer noch, dass der symmetrische Schlüssel für jeden verfügbar ist, der Zugriff hat, aber alle können unterschiedliche asymmetrische Schlüsselpaare verwenden. Wenn ein Benutzer aus dem Zugriff entfernt wird, müssen die Daten daher mit einem neuen Schlüssel erneut verschlüsselt werden. –

3

Es gibt eine JavaScript-Implementierung der AES-Verschlüsselung, die den Klartext im Browser verschlüsselt. Wenn Sie etwas um diese Werkzeuge herum erstellen, würde die Serverseite nur den verschlüsselten Text speichern und hätte keine Passphrase.

http://www.fourmilab.ch/javascrypt/

Sollte keine zusätzliche Installation auf der Clientseite erfordert, aber wahrscheinlich wird einigen Entwicklungsaufwand erfordert die Benutzererfahrung richtig zu machen.