Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

09.10.2013, 16:14

Falls die Prüfsumme eine digitale Signatur ist, brauchst du den privaten Schlüssel, um eine korrekt veränderte Signatur zu erzeugen. Das kannste knicken. Den wirst Du vom Hersteller nicht bekommen und Du kannst ihn auch nicht errechnen. Das ist das Prinzip von asymmetrischen Verschlüsselungsverfahren.
Du müsstest wie gesagt den public Key in der Executable austauschen. Schlecht wäre dann natürlich, wenn diese ebenfalls gegen Veränderungen geschützt ist oder den public Key von einem Server bezieht oder etwas ähnliches.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

12

09.10.2013, 17:31

Dass der Public-Key vom Server bezogen wird, ist im Übrigen auch ein effektives Mittel, das von Cheat Guards genutzt wird. Ich weiß nicht, ob das so gut passt, aber wenn du mehr zur Kryptographie erfahren willst, gibt es hier ein sehr, sehr gutes, und aktuelles Buch dazu.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »EuadeLuxe« (09.10.2013, 18:20)


Tobiking

1x Rätselkönig

  • Private Nachricht senden

13

09.10.2013, 17:50

Da gibt es dann ja eigentlich nur noch die Option die Prüfsummen der Dateien auf den Server zu verlegen
und das ganze dann Serverseitig zu überprüfen, weil so wie ich es bisher verstanden hab, die Prüfsumme sich
aus einer Komponente (Bits, Bytes, ...) * einen Faktor bildet und das Schema somit schnell geknackt werden kann.

Und bei einer Modell Datei, stelle ich mir das ganze erst recht "einfach" vor,
da jede Modell Datei irgendwo die vertices, indices, texturen etc. beinhaltet,
also immer eine gewisse Struktur hat, die man mit etwas Mühe sicher irgendwann erkannt und dann
auch bearbeiten kann. Dann müsste man ja nur noch das Schema knacken, wie die Prüfsumme generiert wird,
in der ausführbaren Datei die Prüfsumme ersetzen und fertig ist die Laube.

Oder stelle ich mir das viel zu einfach vor? :P

Hinter dem Begriff Prüfsumme steht eigentlich etwas ganz anderes als einem kryptographisch sicheren Hashwert. Für Prüfsummen werden einfache Hash-Funktionen verwendet, die möglichst viele kleine Änderungen an Dateien bemerken. Schönes Beispiel ist die Hashfunktion, die einfach die Anzahl der 1-Bits in einer Datei bestimmt. Erkennt jede ungerade Anzahl an Bitflips. Schutz vor Manipulation bringt die aber natürlich nicht.

Kryptographisch sichere Hash-Funktionen sind sowas wie MD5 und SHA. Bei Wikipedia steht zu SHA das es 2^69 (irgendwas mit 5 Trillionen) Berechnungen benötigt um zu einer Datei eine weitere mit gleichem Hashwert zu erzeugen. Und dann sind auch nur 25% der Daten selbst bestimmbar. Der Rest ist durch den Algorithmus berechnet und kann dafür sorgen das die Daten nicht mehr in das benötigte Format passen.


Und kann man wirklich ganz einfach die Modelle bearbeiten, sobald sie in den Speicher
geladen wurden? Wie muss man sich das vorstellen? Ich dachte immer die (Modell) Daten
werden in tausenden von Speicherblöcken mit verschiedensten Adressen
zusammenhanglos abgespeichert? Wie kann man denn dann speziell die
Modell Daten finden, wenn die Zahlen / Daten zusätzlich sogar konstant bleiben / sind?

Der Speicher ist in dem Fall nicht groß anders als eine Datei. Auch da lassen sich Datenstrukturen erkennen. Im Vergleich mit dem Chunk basierten Dateiformat hätte man hier Objekte statt Chunks und statt Offsets gibt es Pointer die auf andere Objekte verweisen.

Werbeanzeige