Keine zentrale Datenbank

31

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.

user2424495
quelle
2
Wenn Sie möchten, dass die Daten synchronisiert werden, müssen sie noch an einem beliebigen Ort verfügbar sein, damit sie in Ihre Anwendung abgerufen werden können. Sie könnten die Daten auf mehrere Datenbanken verteilen. Wenn also eine davon beschädigt wird, würden Sie nicht alle Ihre Daten verlieren. Wenn dies den Kunden zufriedenstellt, fügen Sie einfach weitere Datenbankverbindungen zu Ihrer Anwendung hinzu und rufen Sie Ihre Daten von ihnen ab.
Andy
2
Ist das ein Peer-to-Peer-Problem? oder nur 1 Desktop im Gespräch mit 1 Smartphone (für jeden Datenraum)?
Ebyrob
7
Sie können die Vertraulichkeit der Datenbank sicherstellen, indem Sie die Daten auf dem Server mit einem Schlüssel verschlüsseln, der nur dem Benutzer bekannt ist.
Philipp
26
Das klingt nach einem Schema, an das sich jemand, der die Sicherheit nicht versteht, Gedanken macht. Wer diese Anforderung hat, sollte eine Frage zur Datensicherung auf Security.SE formulieren .
jpmc26
4
@ user2424495: Wenn die Daten über eine Website verfügbar sein müssen, müssen sie dort verfügbar sein, wo Ihre Website bereitgestellt wird. Dies ist normalerweise ein zentraler Server. Oder Sie müssen ein Browser-Plugin schreiben, das die Daten clientseitig bereitstellt.
Bergi

Antworten:

60

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.

Justin Cave
quelle
24
@ user2424495 - Wenn das Ziel die tatsächliche Sicherheit ist, gewinnt es mit ziemlicher Sicherheit, dass die Daten zentral gespeichert werden. Vom Standpunkt des Marketings aus ist es möglicherweise nicht Ihre Schuld, wenn jemandes Telefon gehackt wird. Aber es wird sich sicherlich schlecht auf die App auswirken, wenn bekannt wird, dass es relativ leicht zu hacken ist (da die Systeme der meisten Leute sehr schlecht gesichert sind). Ich möchte den Leuten lieber erklären, dass ihre Daten mit militärischer Sicherheit verschlüsselt gespeichert werden, als zu hoffen, dass sie mir keine Vorwürfe machen, wenn ihr schlecht geschütztes Telefon gehackt wird.
Justin Cave
27
Dies ist die einzige Antwort, die die Frage wirklich beantwortet und das bestmögliche Sicherheitsergebnis liefert. Die Anforderungen, die an das OP gestellt wurden, sind lächerlich. Wenn die Daten so sensibel sind, dass die Idee, dass die Daten auch über ein öffentliches Netzwerk verfügbar sind, für die Benutzer anstößig ist, ist die App-Idee nicht realistisch. Punkt. Clientgeräte sind nicht sicher und können nicht als vertrauenswürdig eingestuft werden.
maple_shaft
2
@mharr Wenn die Datenbank nur verschlüsselte Daten speichert (die vor dem Verlassen des Geräts verschlüsselt wurden), spielt es keine Rolle, was ein Gerichtsbeschluss besagt, sie können physisch nicht ohne die Verschlüsselungsschlüssel entschlüsselt werden, die nur der Benutzer hat.
Richard Tingle
9
@RichardTingle <tinfoil> Sofern die Regierungsbehörde nicht bereits die Verschlüsselung gebrochen hat. </ Tinfoil>
Bob
3
Ich habe nie gesagt, dass das Problem nicht "interessant" ist, ich finde die Fragen und Antworten bisher sehr faszinierend und zum Nachdenken anregend. Dies ist genau die Art von Frage, die diese Seite großartig macht. Ich stelle die Anforderungen und einige der Annahmen, die möglicherweise zu den Daten gemacht werden, wirklich in Frage. Mein spidey sense schreit nur zu mir, dass diese Anforderungen und Annahmen über die Wichtigkeit der Daten die Überlegungen einer blovierten und selbstanbetenden Firma sind, die sich informiert und aufschlussreich
vorstellt,
38

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

  • Warum muss die App diese sensiblen Daten überhaupt speichern?
    • Kannst du es vermeiden, es überhaupt zu lagern?
    • Kann es nach kurzer Zeit weggeworfen werden?
    • Muss es wirklich für mehr als ein Gerät zugänglich sein?
    • Wenn es sein muss , zugänglich auf mehr als ein Gerät, braucht es wird gespeichert auf mehr als ein Gerät?
  • Wer sind die Personen, die die sensiblen Daten der einzelnen Benutzer einsehen dürfen?
    • Kann diese Liste verkürzt werden?
  • Wer sind die Personen, die möglicherweise mit den sensiblen Daten der einzelnen Benutzer in Kontakt kommen, wenn sie versuchen, ihre Arbeit zu erledigen, aber keine Notwendigkeit haben, dies zu wissen?
    • Kann diese Liste verkürzt werden?
    • Können die Daten für sie unzugänglich gemacht werden, ohne dass ihre Arbeitsfähigkeit beeinträchtigt wird?
    • Wenn es nicht unzugänglich sein kann, kann es zumindest unverständlich gemacht werden? (Genau das macht die Verschlüsselung im Abstract: Sie macht Daten unverständlich.)
  • Wer sind die Leute, die die sensiblen Daten sehen wollen, aber nicht erlaubt sind?
    • Welche Möglichkeiten haben sie, um an die Daten heranzukommen?
    • Was wollen sie mit den Daten machen, wenn sie sie haben?
    • Wie wütend werden sie sein, wenn sie nicht bekommen, was sie wollen?
    • Wie viel Geld, Zeit, CPU-Zyklen und menschlichen Aufwand sind sie bereit zu verbringen?
    • Interessiert es sie, wenn jemand weiß , dass er die Daten gesehen hat?
    • Möchten sie auf die sensiblen Daten bestimmter Benutzer zugreifen , oder wird dies jemand tun?
    • Was wissen sie schon?
    • Zu was haben sie bereits Zugang?

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.

zwol
quelle
4
Dies versucht nicht wirklich, die Frage zu beantworten oder zu widerlegen, aber es ist wirklich eine großartige Antwort auf eine Frage, die nicht gestellt wurde.
maple_shaft
11
@maple_shaft: Nun, es beantwortet die Frage, die das OP stellen wollte. Da die Frage offensichtlich unter einem XY-Problem leidet , scheint dies eine gute Antwort zu sein.
sleske
8

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.

Philipp
quelle
1
Klingt nach einem Versionsverwaltungsschema, um zu vermeiden, dass alle Daten ständig zwischen den beiden Geräten hin und her
gesendet
Der p2p-Austausch wäre eine großartige Lösung, wenn nicht unnötige Einstellungen für den Endbenutzer erforderlich wären, was meiner Meinung nach die Verwendung der Anwendung weniger benutzerfreundlich machen würde. Dann stellt sich die Frage, ob der Kunde beim Einrichten der App zwischen Datenverwundbarkeit und ein wenig Ärger wählen möchte, was sehr davon abhängt, wie genau die Daten vertraulich sind und wie sehr sich die Benutzer darum kümmern.
Andy
1
@DavidPacker Angenommen, Sie richten den ersten Server ein und warten ihn. Was sind die zusätzlichen Einrichtungsschritte?
Ebyrob
@ebyrob Ich könnte falsch verstanden werden, aber ich verstehe, dass der vom App-Ersteller bereitgestellte Server nur die Prozedur für die P2P-Synchronisation enthält. Aber die Daten müssen von einem der Geräte des Clients über diesen Server abgerufen werden - und der Client muss sich selbst oder seine Daten zugänglich machen - das ist das Setup, über das ich gesprochen habe.
Andy
1
@David, Philipp schlägt vor, die sensiblen Daten Peer-to-Peer auszutauschen, also nicht an oder über den zentralen Server zu senden. Der zentrale Server dient nur dazu, einem Peer das Auffinden eines anderen Peers zu erleichtern. dann geht es aus dem Weg.
Erik Eidt
5

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.

James Mason
quelle
1

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?

Michael Shaw
quelle