2012-04-11 7 views
4

Ich werde AES_ENCRYPT() und AES_DECRYPT verwenden, um Patientendaten in einem EMR-System zu speichern, und ich habe mich gefragt, wie ich den Schlüssel speichern soll. Ich muss in der Lage sein, autorisierten Benutzern Zugriff auf diesen Schlüssel zu gewähren, um die Daten zu entschlüsseln und zu lesen, die in den Patientenakten gespeichert sind. Wie kann ich einen Schlüssel problemlos für viele Benutzer freigeben, aber diesen Schlüssel sicher aufbewahren? Alle Gedanken oder Beispiele sind willkommen.Verschlüsseln von Patientendaten

+0

bitte beschreiben, was der Zugriff auf Ihre app aussieht. ist es webbasiert? geschlossenes System? Welcher Aspekt der Sicherheit? Daten oder autorisierter Zugang? (Btw eine gute Option wäre, den AES-Schlüssel für jeden Patienten auf einer persönlichen ID-Chipkarte zu speichern) – Michal

+0

Es ist eine webbasierte Anwendung, die es Benutzern ermöglicht, sich am System anzumelden. Ärzte können detaillierte (verschlüsselte) Patienteninformationen anzeigen und der Rezeptionist kann nur grundlegende (unverschlüsselte) Patienteninformationen anzeigen. Ich muss in der Lage sein, dass bestimmte Ärzte bestimmte Patienten sehen können. –

+0

Haben Sie untersucht, was HIPAA mit sich zu tun hat? Keine kleine Aufgabe ... – ceejayoz

Antwort

6

Die standardmäßige Vorgehensweise besteht darin, für jeden Patienten einen "System" -Schlüssel zu erstellen und diesen Schlüssel zum Verschlüsseln der Patientendaten zu verwenden. Geben Sie diesen Schlüssel nicht an den Patienten oder an einen der Benutzer weiter.

Wenn sich ein Benutzer im System anmeldet, verwenden Sie das Kennwort, um einen "Benutzer" -Schlüssel für diesen Benutzer zu erstellen. (Nehmen Sie zum Beispiel den SHA-256-Hash des Benutzerpassworts.) Speichern Sie das Benutzerpasswort nicht auf dem System.

Wenn der Benutzer dann berechtigt ist, auf die Patientendaten zuzugreifen, verschlüsseln Sie den Systemschlüssel dieses Patienten mit dem Schlüssel des berechtigten Benutzers und speichern Sie den verschlüsselten Schlüssel im Benutzerkonto. Wenn der Benutzer berechtigt ist, auf zusätzliche Patientendaten zuzugreifen, wiederholen Sie diesen Vorgang für jeden Systemschlüssel des Patienten. Wenn ein autorisierter Benutzer auf die Daten des Patienten zugreifen möchte, gibt er schließlich sein eigenes Passwort ein, das zum Entschlüsseln des Systemschlüssels des Patienten dient, der wiederum zur Entschlüsselung der Patientendaten verwendet wird.

Wenn ein Benutzer sein Kennwort ändern möchte, müssen Sie alle Systemschlüssel, die diesem Konto zugeordnet sind, entschlüsseln und sie dann mit dem neuen Kennwort erneut verschlüsseln.


Haftungsausschluss: Sicherheit ist hart * und ich bin kein Kryptologen. Darüber hinaus kann das Gesetz verlangen, dass Patientendaten nach bestimmten Standards verschlüsselt und anderweitig geschützt werden. Bevor Sie irgendein Sicherheitssystem implementieren, konsultieren Sie einen Experten, und nie unter keinen Umständen erstellen Sie Ihr eigenes Sicherheitsschema, vor allem, wenn finanzielle, medizinische oder andere wichtige Informationen betrifft.

*Bruce Schneier, Chief Security Technology Officer, BT

+0

Wo wird der Systemschlüssel des Patienten gespeichert? wenn wir es in der Datenbank speichern wollen, schlägt es den Zweck, wenn auf die Datenbank zugegriffen werden kann. – iWantSimpleLife

+1

@iWantSimpleLife: Richtig. Genau aus diesem Grund ist die Sicherheit schwer, und deshalb sollten Sie die Sicherheit Ihres Systems niemandem in StackOverflow anvertrauen.:-) Sie könnten den Systemschlüssel mit einem "Master" -Schlüssel verschlüsseln, auf den nur die Anwendung selbst zugreifen kann, aber früher oder später muss es einen "ultimativen" Schlüssel geben, der geschützt werden muss. Schlüsselmanagement ist oft der schwierigste und schwächste Teil einer Sicherheitsimplementierung. Konsultieren Sie die Experten. –