Frage

Viele meiner Kunden nutzen unsere software zur Erfassung der Daten in eine wissenschaftliche Grundlage.Aufgrund der Natur der Forschung im Allgemeinen, einige Kunden bitten, die Daten verschlüsselt, um Manipulationen zu verhindern -- es kann ernste Konsequenzen, wenn Sie Ihre Daten konnte gezeigt werden, gefälscht.

Einige unserer Binär - software verschlüsselt output-Dateien mit einem Kennwort gespeichert in die Quelle, der aussieht wie zufällige Zeichen.Auf der Ebene der software, sind wir in der Lage zu öffnen die verschlüsselt Dateien, die für nur-lese-Operationen.Wenn jemand wirklich wollte, um herauszufinden, das Passwort, so dass Sie Daten verändern, wäre es möglich, aber es wäre eine Menge Arbeit.

Ich bin auf der Suche in die Verwendung von Python für die schnelle Entwicklung von anderen Stück software.Duplizieren die Funktionalität der Verschlüsselung zu besiegen/entmutigen Manipulation von Daten, ist die beste Idee, die ich habe kommen mit so weit ist, benutzen Sie einfach ctypes mit einer DLL-Datei für Lesen/schreiben Operationen, so, dass die Methode der Verschlüsselung und Entschlüsselung ist "ausreichend" verschleiert.

Wir sind uns bewusst, dass eine "unknackbare" - Methode ist unerreichbar, aber zur gleichen Zeit bin ich natürlich nicht zufrieden, nur mit der Verschlüsselung/Entschlüsselung Ansätze, die sitzen dort im Klartext in die Python-source-code.Eine "sehr starke Entmutigung von Datenmanipulation" wäre gut genug, denke ich.

Was wäre der beste Ansatz, um zu erreichen, ein glückliches medium Verschlüsselung oder in sonstiger Nachweis der Integrität der Daten mithilfe von Python? Ich sah ein weiterer Beitrag diskutieren über die "tamper-proof-Signatur", aber wenn eine Signatur erzeugt wurde, in den reinen Python-dann wäre es trivial zu generieren einer Signatur für beliebige Daten.Wir könnte in der Lage sein, nach Hause telefonieren, um zu beweisen Integrität der Daten, aber das scheint wie eine große Unannehmlichkeiten für alle beteiligten.

War es hilfreich?

Lösung

Als ein Allgemeines Prinzip, Sie wollen nicht zu verwenden Verschlüsselung vor Manipulation zu schützen, statt Sie möchten eine digitale Signatur zu verwenden.Verschlüsselung gibt Ihnen Vertraulichkeit, aber Sie sind nach Integrität.

Berechnen Sie einen hash-Wert über Ihre Daten und entweder speichern den hash-Wert in einem Ort, wo Sie wissen, dass es nicht manipuliert oder Digital Unterschreiben.

In Ihrem Fall scheint es, wie Sie wollen, um sicherzustellen, dass nur Ihre software generiert haben, auf die Dateien?Wie Sie sagen, es nicht existieren kann einen wirklich sicheren Weg, dies zu tun, wenn Ihre Benutzer auf die software zugreifen, da Sie reißen können es auseinander, und es finden keine geheimen Schlüssel, die Sie enthalten.Angesichts dieser Einschränkung, ich denke, Ihre Idee, eine DLL ist ungefähr so gut wie Sie es tun können.

Andere Tipps

Wenn Sie Passwörter irgendwo einbetten, sind Sie bereits abgespritzt. Sie können für nichts garantieren.

Sie können jedoch mit öffentlicher Schlüssel / Private Key-Verschlüsselung verwenden, um sicherzustellen, dass die Daten nicht manipuliert wurden.

Die Funktionsweise ist folgende:

  1. Sie erzeugen einen öffentlichen Schlüssel / privaten Schlüsselpaar.
  2. Halten Sie den privaten Schlüssel zu sichern, verteilen den öffentlichen Schlüssel.
  3. Hash der Daten und melden Sie sich dann den Hash mit dem privaten Schlüssel.
  4. Verwenden Sie den öffentlichen Schlüssel des Hash zu überprüfen.

Dies macht effektiv die Daten schreibgeschützt außerhalb Ihres Unternehmens und stellt das Programm eine einfache Möglichkeit, um sicherzustellen, dass die Daten nicht geändert worden, ohne Verteilung von Passwörtern haben.

Hier ist ein anderes Thema. Vermutlich ist Ihre Datenerfassungs-Software Daten aus einer externen Quelle zu sammeln (wie eine Art Messgerät), dann tun, was notwendig wird verarbeitet auf den Rohdaten und die Ergebnisse zu speichern. Unabhängig davon, welche Methode Sie verwenden in Ihrem Programm, ein weiterer möglicher Angriffsvektor wäre in schlechten Daten, um das Programm zu ernähren, und das Programm hat sich keine Möglichkeit zu wissen, dass Sie in die aus Daten füttern, anstatt Daten, die von der Mess kam Gerät. Aber das ist vielleicht nicht fixierbar sein.

.

Ein weiterer möglicher Angriffsvektor (und wahrscheinlich diejenige, die Sie besorgt sind, mit den Daten auf dem Computer Manipulation, nachdem es gespeichert wurde, ist hier eine Idee, dieses Risiko zu mindern: Legen Sie einen separaten Server (dies könnte entweder etwas sein, Ihre Unternehmen laufen würden, oder, was wahrscheinlicher wäre es etwas sein, das Client einrichten würde) mit einem Passwort Web-Service geschützt, die ein Benutzer (aber nicht entfernen) Datensätze hinzufügen können. Dann wird Ihr Programm, wenn es Daten sammelt, senden sie es an der Server (Passwort / Verbindungszeichenfolge, die in dem Programm gespeichert ist). Lassen sie Ihr Programm nur die Daten auf den lokalen Computer schreiben, wenn es eine Bestätigung erhält, dass die Daten erfolgreich auf dem Server gespeichert wurden.

Nehmen wir nun an ein Angreifer versucht, mit den Daten auf dem Client zu manipulieren. Wenn er das Programm Reverse Engineering kann, dann kann er natürlich noch an den Server zur Speicherung senden, wie das Programm tat. Aber der Server immer noch die ursprünglichen Daten hat, so dass die Manipulation nachweisbar sein wird, weil der Server sowohl mit den ursprünglichen und modifizierten Daten am Ende - der Kunde nicht in der Lage, die Originaldaten zu löschen. (Das Client-Programm natürlich braucht nicht zu wissen, wie die Datensätze auf dem Server zu löschen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top