2009-07-04 7 views
1

Ich habe kürzlich ein wenig über Verschlüsselung gelesen und bin daran interessiert, eine Lizenzdatei vor Manipulationen zu schützen. Nun, das ist vielleicht nicht der beste Weg, um dies zu tun, in diesem Fall bin ich offen für Vorschläge. Aber eine Art, wie ich daran dachte, es zu schützen, besteht darin, es einfach zu verschlüsseln.Verschlüsselung, um Dateien vor Änderungen zu schützen

Wenn ich jedoch Verschlüsselung verwenden würde, müsste ich symmetrischen Schlüssel verwenden, aber das wirft die Frage auf. Wenn ich einen Schlüssel im Quellcode mit Werkzeugen wie Reflektor speichere, ist es das wirklich wert? Es scheint eine ziemlich triviale Aufgabe zu sein, den Initialisierungsvektor, Salz, Schlüssel usw. zu erhalten und daher die Verschlüsselung zu unterbrechen. Gibt es eine Möglichkeit, einen Schlüssel in der Quelle zu schützen? Oder ist das der völlig falsche Ansatz?

+1

Ich denke, Sie müssen die Frage klären und uns sagen, wer daran interessiert ist, die Dateien zu manipulieren. I.e. Marc anwser nimmt eine dritte Partei an, die Dateien manipuliert. Die meisten anderen Antworten gehen davon aus, dass der Client selbst daran interessiert ist, Dateien zu manipulieren, z. B. um Einschränkungen zu umgehen. Wenn Sie ein klares Angriffsmodell beschreiben würden, würde dies helfen, die richtige Antwort zu finden. – Accipitridae

Antwort

8

Wenn Sie Manipulationen verhindern möchten, möchten Sie Signieren/Hashing, nicht Verschlüsselung. Ähnliche Theorie - aber es bedeutet, Sie können validieren die Datei mit dem öffentlichen Schlüssel in der App, ohne den privaten Schlüssel, den Sie auf Ihrem Server (und verwenden, um Lizenzen ausstellen).

Suche nach kryptographischem Hashing/Signieren.

+0

Die digitale Signatur wird anhand eines vertrauenswürdigen öffentlichen Zertifikats überprüft. Wenn jemand den Reflektor startet, um Schlüssel aus dem Programm zu ziehen, können sie genauso einfach den vertrauenswürdigen öffentlichen Schlüssel austauschen. – clemahieu

+0

Danke Marc, ich dachte kurz, Hashing könnte ein anderer Weg sein. Etwas, von dem ich nicht viel weiß. Ich dachte eigentlich, dass dies unter einem ähnlichen Problem leiden könnte, denke darüber nach und finde heraus, wie die Datei gehashed wird, damit jemand Änderungen nach Belieben vornehmen kann. Wenn es aber wie eine Verschlüsselung funktioniert, ist wahrscheinlich ein assymetrischer Ansatz genau das, was ich brauche. Ich werde es mir ansehen. Danke. – Ian

+0

Wie Marc erwähnt, möchten Sie grundsätzlich öffentliche/private Schlüsselverschlüsselung wie GPG verwenden und die Lizenz mit Ihrem privaten Schlüssel signieren. Das Programm überprüft die Signatur mit dem entsprechenden öffentlichen Schlüssel, um sicherzustellen, dass sie nach der Unterzeichnung nicht manipuliert wurde. – Noah

1

Alles auf der Client-Seite des Systems kann kompromittiert werden.

Wenn Sie Ihre Datei verschlüsseln, müssen Sie den Entschlüsselungsschlüssel auch irgendwie in Ihrem Programm platzieren. Jeder mit einem Hex-Editor wird in der Lage sein, durch Ihren Code zu gehen, um diesen Schlüssel zu finden und dann Ihre Lizenzdatei zu entschlüsseln und auch Schlüssel für Ihr System zu erstellen.

Internet-Aktivierung wäre ein guter Weg zu gehen, aber ich würde sehen, ob Sie Dritte finden können, um dies für Sie zu tun, wie sie zuvor diese Straßen gewesen sein werden.

Das sagte, dass das Ausführen Ihrer Lizenzdatei durch einige AES 256 Verschlüsselung kann nicht schaden :).

+0

Danke, ich dachte, das könnte der Fall sein. – Ian

1

Wenn Sie über MS/.NET-Umgebung sprechen, empfehle ich Ihnen die DPAPI. Es ist eine API zum Speichern Ihrer Daten mit einem Passwort geschützt. Dann können Sie mich fragen "aber dann habe ich das gleiche Problem", die Antwort ist nein, weil Sie in diesem Szenario ein Benutzerkennwort verwenden, um Ihre Daten zu schützen. Was Sie also tun müssen, um auf Ihre Daten zuzugreifen, führt Ihre Anwendung unter bestimmten Anmeldeinformationen aus. In MS-Umgebung ist es die beste Lösung.

aus der Dokumentation:

DPAPI fokussiert ist für die Benutzer des Datenschutzes auf die Bereitstellung. Da zum Schutz ein Kennwort erforderlich ist, besteht der logische Schritt darin, dass DPAPI das Anmeldekennwort eines Benutzers verwendet, was in gewisser Weise geschieht. DPAPI verwendet tatsächlich die Anmeldeinformationen des Benutzers. In einem typischen System, in dem sich der Benutzer mit einem Kennwort anmeldet, ist der Anmeldeberechtigungsnachweis einfach ein Hash des Benutzerkennworts. In einem System, in dem sich der Benutzer mit einer Smartcard anmeldet, würden die Anmeldeinformationen jedoch unterschiedlich sein. Um die Dinge einfach zu halten, verwenden wir die Begriffe Benutzerpasswort, Anmeldepasswort oder einfach nur Passwort, um auf diese Berechtigung zu verweisen.

1

Was Sie versuchen, ist DRM; Es gibt keine 100% Möglichkeit, dies auf der aktuellen PC-Hardware zu tun. Es gibt viele Maßnahmen, die Sie ergreifen können, um Teile Ihres Programms zu verschleiern. Es ist ein Kompromiss zwischen dem, was Sie verschleiern möchten und wie viele Hürden Sie Ihren zahlenden Kunden machen möchten.

+0

Danke für die Antwort, ich dachte, dass die Verschleierung helfen könnte, aber es ist wahrscheinlich ein ziemlich einfacher Teil eines Programms, selbst mit Verschleierung zu isolieren. – Ian

Verwandte Themen