Ich habe einen Kunden, der eine Website / mobile Apps / Desktop-Apps erstellen möchte, die sich mit sehr sensiblen Daten befassen (sensibler als Bank- / Kartendaten). Aufgrund des sensiblen Charakters der Daten möchten sie diese nicht in einer zentralen Datenbank speichern, aber dennoch synchronisieren (Angenommen, ich füge meiner mobilen App einige Daten hinzu, dann möchte ich in der Lage sein, auf meine zuzugreifen Desktop-App und sehen die gleichen Daten).
Ich kann mir keine nette, verlässliche Art vorstellen, und ich bin mir nicht sicher, ob es eine gibt. Deshalb bin ich hier. Weiß jemand, wie ich mit diesen Daten umgehen könnte?
Eine Lösung, über die ich nachgedacht habe, war, für jede App eine clientseitige Datenbank zu haben, die sich irgendwie zwischen Apps synchronisieren lässt.
quelle
Antworten:
Viele vertrauliche Informationen werden in Datenbanken gespeichert. In der Tat ist eine zentrale Datenbank wahrscheinlich die sicherste Art, diese Daten zu speichern. Große Unternehmensdatenbanken verfügen über eine Vielzahl von Funktionen, um beispielsweise vertrauliche Informationen zu verschlüsseln, zu prüfen, wer auf sie zugreift, die Anzeige der Daten durch Personen, einschließlich Datenbankadministratoren, einzuschränken oder zu verhindern dass Sie keine Daten verlieren. Es wäre mit ziemlicher Sicherheit viel einfacher, auf dem mobilen Gerät oder Laptop eines zufälligen Benutzers gespeicherte Daten zu manipulieren, als in eine gut konzipierte Sicherheitsinfrastruktur einzudringen und eine ordnungsgemäße zentrale Datenbank zu manipulieren.
Sie könnten das System mit einer zentralen Datenbank ausstatten, in der nur verschlüsselte Daten gespeichert werden und der private Schlüssel des Benutzers auf dem Gerät des Benutzers gespeichert wird. Auf diese Weise können die Daten auch dann nur vom Benutzer verwendet werden, wenn die zentrale Datenbank vollständig gefährdet ist. Das bedeutet natürlich, dass Sie die Benutzerdaten nicht wiederherstellen können, wenn sie ihren Schlüssel verlieren (sagen wir, die einzige Kopie befand sich auf ihrem Telefon und ihr Telefon war beschädigt). Und wenn jemand den Schlüssel und vermutlich seine Anmeldeinformationen kompromittiert, kann er die Daten sehen.
quelle
Sie müssen ein paar Schritte sichern und in Absprache mit Ihrem Kunden ein Bedrohungsmodell ausarbeiten . (Ja, das ist ein Link zu einem 600-seitigen Buch. Ja, ich empfehle Ihnen ernsthaft, das Ganze zu lesen.)
Ein Bedrohungsmodell beginnt mit Fragen wie
Sobald Sie die Antworten auf diese Fragen kennen, sind Sie an einem viel besseren Ort, um herauszufinden, was zu tun ist.
Denken Sie daran, dass es zu jeder Gruppe von Fragen mehr als eine Antwort geben kann, insbesondere zu den Fragen, die sich mit den Angreifern befassen (den Personen, die sensible Daten haben möchten, diese aber nicht haben dürfen). Wenn Sie nicht an mindestens ein halbes Dutzend verschiedene archetypische Angreifer mit unterschiedlichen Motivationen, Zielen und Ressourcen denken können, haben Sie wahrscheinlich etwas verpasst.
Denken Sie auch daran, dass die Angreifer, die Ihnen (und / oder dem Kunden) die meisten Probleme bereiten, im Falle eines erfolgreichen Angriffs mit größter Wahrscheinlichkeit einen Riesenschaden in den Medien verursachen oder den größten Gesamtschaden verursachen Nicht die Angreifer, die den einzelnen Benutzern den größten Schaden zufügen können, wenn ihr Angriff erfolgreich ist. Das Unternehmen Ihres Kunden kümmert sich vernünftigerweise mehr um den Gesamtschaden, aber die Benutzer kümmern sich vernünftigerweise mehr um den Schaden für sich.
quelle
Eine Option für die Synchronisierung wäre Peer-to-Peer. Hierfür ist weiterhin ein zentraler Server erforderlich, der jedoch keine Daten verarbeitet.
Wenn ein Gerät online geht, erhält ein zentraler Server eine Benachrichtigung mit der Benutzer-ID. Wenn ein zweites Gerät desselben Benutzers online geht, sendet der Server beiden Geräten die IP-Adressen des anderen. Die Geräte können dann direkt Daten austauschen. Vorsichtsmaßnahme: Ein Gerät muss als Server fungieren, sodass sich mindestens eines nicht hinter einem NAT-Router befinden kann.
Vergessen Sie nicht, dass Sie sowohl für den Benachrichtigungsmechanismus als auch für den Peer-to-Peer-Austausch eine starke Authentifizierung und Verschlüsselung benötigen.
quelle
Mach es einem anderen zum Problem.
Speichern Sie die Daten lokal in jeder App und geben Sie den Benutzern die Möglichkeit, die Synchronisierung mithilfe ihres eigenen Kontos mit einem Drittanbieter-Service (Dropbox, Google Drive usw.) zu aktivieren. Denken Sie auch daran, alle Daten zu verschlüsseln, die auf den Dienst eines Drittanbieters hochgeladen wurden (dies hat Vor- und Nachteile).
Dies gibt den Anschein, dass Benutzer ihre eigenen Daten besitzen, da sie sich für die Datensynchronisation entscheiden müssen. Dadurch sind die Apps für Personen nützlich, die keine Freigabe wünschen. Und es macht eine andere Person (technisch und möglicherweise rechtlich) für die fortdauernden Probleme verantwortlich, die mit der Sicherheit der gemeinsam genutzten Daten verbunden sind.
quelle
Das Anliegen Ihres Kunden scheint die Sichtbarkeit dieser Daten zu sein. Die erste Frage, die Sie Ihrem Kunden stellen müssen, ist, ob die Daten verschlüsselt wurden. Wo können sie gespeichert werden? Fragen Sie dann Ihren Kunden, welche Arten von Zugriffskontrollen er wünscht, bevor die Daten entschlüsselt und verarbeitet werden können. Wo kann der Entschlüsselungsschlüssel gespeichert werden? ist ein separater Schlüssel pro Benutzer? etc...
Wenn Ihr Kunde nicht möchte, dass die Daten irgendwo gespeichert werden, möchte er, dass der Benutzer sie jedes Mal in meine Hand gibt?
quelle