2016-05-12 7 views
0

Ich bin in den Anfangsphasen eines Web-Dev-Projekts und habe ein Problem festgestellt.So überprüfen Sie den Inhalt einer Datenbank öffentlich

Kontext: Das Projekt/Dienst wird Daten aus mehreren öffentlichen, offenen Quellen ernten und verarbeiten. Die Daten umfassen Statistiken und Aufzeichnungen über politische Aktivitäten, Abstimmungen und Ähnliches.

Problem: Während die Daten selbst auf ihre Quelle verwiesen werden kann, mache ich mir Sorgen, dass ein Datenbankadministrator die Daten in der Datenbank manipulieren könnte. Da die Daten von öffentlichem Interesse sind, benötige ich einige öffentliche Manipulationsnachweise in der Datenbank. Meine Frage ist dann, wie man das macht.

Ich habe mit Ideen gespielt, wie man das macht, wie dem Erntemacher einen Signierschlüssel zu geben, damit er seine eigenen Importe oder eine andere Methode der kryptografischen Verifikation unterschreiben kann. Administratoränderungen an der Datenbank würden eine Überprüfung durch eine vertrauenswürdige dritte Partei erfordern, und das Umgehen würde die Signaturen irgendwo ungültig machen, was beweist, dass eine Manipulation stattgefunden hat. Das Problem ist, dass diese Systeme irgendwie außerhalb der Reichweite des Serveradministrators (root) gehalten werden müssen, so dass kein Verdacht auf Datenmanipulation besteht.

Kurz gesagt, brauche ich ein System, das die öffentliche Verifizierung von Datenbankinhalten erlaubt und das auch von root nicht umgangen werden kann.

Die technischen Spezifikationen verwenden wahrscheinlich einen einfachen LAMP-Stack, daher sollte eine Lösung mit diesen Systemen funktionieren.

Antwort

0

Sind die Mähdrescher von Ihrem Service getrennt? Wenn dem so ist, stimme ich zu, dass eine Art der Verifizierung notwendig ist, da sowohl der Datenbankadministrator als auch der Erntehelfer selbst die Informationen manipulieren könnten.

Wenn die Erntemaschinen selbst Teil Ihres Service sind, dann bin ich nicht sicher, ob Sie einen "untampered" Stempel zur Verfügung stellen müssen. Dieser Fall läuft auf Vertrauen hinaus. Öffentlich zugängliche Daten mit Rückverweisen auf Quellen ermöglichen all Ihren Datenkonsumenten, die präsentierten Daten unabhängig zu verifizieren.

Zusätzlich ist ein solches Werkzeug, um die Integrität der Daten zu überprüfen, ob auch der öffentlichen Kontrolle unterzogen werden, nachdem das gesamte Werkzeug kann nur als solche realisiert werden:

fn(source, data) -> True -- An implementation, just not a good one... 

So in jedem Fall Sie sind entweder Stellen Sie sicher,

A. die Daten von der Quelle zu vergleichen, die alle Verbraucher der Lage B. sind Überprüfen Sie die Gültigkeit Ihrer Source-Code, der

technisches Know-how erfordert

Sin: Ihr Publikum bitten, ce B schließt A nicht aus und Sie sind entschlossen, B bereitzustellen. Ich würde vorschlagen, entweder eine Blockkette https://en.wikipedia.org/wiki/Block_chain_%28database%29 zu verwenden und jede Datenänderung als Transaktion zu betrachten. Oder schauen Sie sich IPFS und seine Vorgehensweise beim Hashing an.

PGP-Signierung kann auch angebracht sein.

+0

Die Erntemaschinen werden in der Tat Teil des Dienstes sein, der Open Source sein wird und daher öffentlich zugänglich sein wird. Wie auch jedes Verifizierungssystem. Ich stimme zu, dass es eine Frage des Vertrauens ist, und Rückverweise können ausreichend sein, aber ich möchte mehr oder weniger eine einzige, einfache Überprüfung haben, um die Gültigkeit der Daten zu überprüfen. Ich werde einen Block-Chain-Transaktionsansatz untersuchen. Das PGP-Signieren bereitet einige Schwierigkeiten, da es nicht nativ von PHP unterstützt wird, aber ich werde mich auch weiter damit befassen. – SLDR