5 Stimmen

Unveränderbare Dateien erstellen

Ich möchte eine Datei erstellen und sie an einen Endbenutzer weitergeben, ihn aber daran hindern, Änderungen an der Datei vorzunehmen.

Natürlich kann ich niemanden daran hindern, die Datei zu ändern. Mein Ansatz besteht also darin, die Datei zu erkennen und zurückzuweisen, wenn sie geändert wurde.

Meine Absicht ist es, einen gesalzenen Hash des Dateiinhalts zu generieren und ihn an die Datei anzuhängen. Beim Lesen wird der Hash überprüft, bevor der Rest der Datei gelesen wird. Der Nachteil dabei ist, dass ich das feste "Salz" in der ausführbaren Datei, die die Datei liest, verteilen muss. Natürlich kann ich es bis zu einem gewissen Grad verschleiern, aber das ist immer noch eine Schwachstelle.

Gibt es bessere Ansätze, um diese Art von Problem zu lösen?

1voto

Brian Punkte 24901

Selbst wenn Benutzer ihre eigenen Binärdateien patchen, um sicherzustellen, dass ihre geänderte Kopie der Datei ordnungsgemäß funktioniert, wird die geänderte Kopie der Datei auf ungepatchten Rechnern immer noch nicht funktionieren. Welchen Sinn hat es, diese Bearbeitung zu verhindern?

Nebenbei bemerkt sind die Benutzer weniger geneigt, Binärdateien zu bearbeiten als reine Textdateien. Außerdem fühlen sich Benutzer weniger verärgert, wenn man ihnen eine Binärdatei aushändigt, als wenn man ihnen eine Textdatei mit einer Prüfsumme aushändigt, vorausgesetzt, sie haben einen legitimen Grund, sie bearbeiten zu wollen, und können anhand der Datei erkennen, dass es einfach gewesen wäre, dies zu tun, wenn man keine Prüfsumme oder ähnliches hinzugefügt hätte.

0voto

Je nachdem, welche Art von Datei Sie schützen möchten, können Sie ein Dokumentenmanagement-Tool verwenden. Adobe PDF verfügt über entsprechende Werkzeuge. Wenn Sie Ihre Anwendung auf einem Anwendungsserver oder Webserver hosten, können die Benutzer außerdem nicht auf den Code zugreifen und ihn ändern. Auf diese Weise könnten Sie auf der Serverseite eine Datenbank mit Hashes der zu schützenden Dateien einrichten.

Natürlich ist der Schutz nur so gut, wie viel Zeit und Mühe Ihre Benutzer investieren wollen (oder können), um den Schutz zu überwinden.

0voto

Robert Gould Punkte 66858

Dafür sind md5-Hashes und CRCs da, und deshalb überprüft man aus dem Internet heruntergeladene Dateien anhand ihrer md5-Datei, um sicherzugehen, dass sie nicht unterwegs gestohlen wurden.

Wie auch immer, ich glaube, Roddy verwendet C++, so kann ich empfehlen, Boost::CRC seine sehr schnell und wenig Overhead, Sie auch nicht brauchen, um die Datei auf diese Weise zu verschlüsseln

0voto

Patrick Punkte 7763

Wer sind Ihre Benutzer und wie stark werden sie versuchen, die Datei zu ändern. Wenn Ihre Benutzer in der Lage sind, das Salz zu finden, das Sie zu Ihrem Hash hinzufügen, können sie wahrscheinlich einen öffentlichen Schlüssel in Ihrem Code finden, ihn in einen öffentlichen Schlüssel ändern, den sie selbst erzeugt haben, und die Signatur der geänderten Datei mit ihrem privaten Schlüssel berechnen. Ich würde mich für eine Verschleierung des Salzes entscheiden.

Die Alternative ist ein Online-System, das sehr kompliziert ist und in der Regel ohnehin zu knacken ist.

Werfen Sie einen Blick auf HMACs für eine kodifizierte Methode zur Verwendung eines "Salzes", wie Sie denken (wobei das Salz stattdessen als Schlüssel bezeichnet wird).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X