Nachträgliche End-2-End-Verschlüsselung für PHP Webanwendung

Job ID: 32135079

Budget: €1,500 – €3,000 EUR

Es geht um eine PHP-Anwendung basierend auf dem MVC-Muster. Darin können Patienten angelegt werden und diese via Termin einem Arzt zugewiesen werden. Außerdem können Dokumente hochgeladen werden. Die ganze Anwendnung besteht bereits, jedoch muss jetzt der Datenaustausch wie folgt (oder gerne auch Ähnlich sicher) verschlüsselt werden.

Folgendes müsste umgesetzt werden und falls ja für was für ein Budget ca.?

Ziel ist gegebenenfalls eine PGP-basierte End-To-End-Verschlüsselung, die vollständig im Browser abläuft und bei der PGP quasi nur als Mittel zum Zweck eingesetzt wird, um eine asytremische Verschlüsselung zu haben. Die Sicherheit wird nur durch das Passwort des Arztes, welches er bei der Registrierung (und Schlüsselgenierung angegeben hat) gegeben.

D.h. das vollständige Schlüsselpaar wird bei der Registrierung clientseitig via Javascript erzeugt. Das Passwort des Arztes dient hierbei als Passwort auf dem Privatkey. Das Schlüsselpaar wird vollständig auf dem Server gespeichert. [Nötige Änderung am Bestandsprogramm: das Passwort darf dann gar nicht im Klartext auf dem Server landen, d.h. das passwort hashen muss von den PHP-Passwort-Funktionen getrennt und bereits per Javascript im Browser des Users gehasht werden]

Müsste ein Arzt nun eine Seite aufrufen, auf der Patientendaten sind, so werden die verschlüsselten Datensätze per PHP ausgegeben, der Private Key via Javascript abgerufen und durch Eingabe des Passworts bei jedem Seitenzugriff[1] clientseitig per Javascript entschlüsselt. Das geht natürlich dann auch problemlos für mehrere Datensätze, da ja alle mit dem selben Private Key des Arztes entschlüsselt werden - so kann das vorhandene Konzept auch mit den Tabellen erhalten bleiben.

Beim Speichern von Dateien oder Patienten muss für jeden Arzt, der Zugriff hat eine eigene Entität in der Datenbank existieren mit den entsprechend per Public Key des Arztes verschlüsselten Daten. Bei jeder Änderung müssen diese natürlich neu erzeugt werden, so dass jeder Arzt den richtigen Stand hat. Wenn ein Termin angelegt wird, wird entsprechend dafür natürlich dann auch der Patient als Datensatz für diesen Arzt erzeugt, bei dem der Termin ist. Nach zurücküberweisen oder als erledigt markieren eines Termins sollen diese Datensätze wieder gelöscht werden, so dass dieser Arzt keinen Zugriff mehr hat.

[1] Ein clientseitiges Speichern des Passworts via Javascript wäre alternativ auch möglich. Ein Speichern per PHP-Session natürlich nicht, weil es hierfür im Klartext auf dem Server wäre.

Projekt soll ASAP umgesetzt werden.

Ich bitte um eine Kontaktaufnahme über diese Plattform.
Bei Kontaktaufnahme gebe ich dann die [Removed by Freelancer.com Admin for offsiting - please see Section 13 of our Terms and Conditions].
Related categories: PHP JavaScript Cryptography MySQL Coding