3 Stimmen

Wie kann ich eine Nachricht in einem verteilten Programm, von dem ich weiß, dass es zurückentwickelt werden kann, digital signieren und ihr vertrauen?

Das Problem in Kürze: Ich entwickle eine Anwendung (z.B. ein Spiel), die in binärer Form verteilt wird. Das Spiel ruft zu Hause an und sendet den Highscore des Benutzers als Nachricht an einen Online-Spieleserver.

Ich möchte die Nachricht digital verschlüsseln und signieren, damit ich sicher sein kann, dass sie nicht manipuliert wurde.

Die Kryptographie mit öffentlichem Schlüssel beruht darauf, dass beide Gesprächspartner ein Geheimnis haben, aber ich kann mich nicht darauf verlassen, dass meine Software nicht zurückentwickelt und der private Schlüssel entdeckt wird.

Gibt es einen sicheren oder ausreichend sicheren Weg, eine Nachricht aus meiner verteilten Binäranwendung digital zu signieren (der Verschlüsselungsteil ist in diesem Fall nicht notwendig), wenn ich weiß, dass sie zurückentwickelt werden kann?

0voto

russau Punkte 8479

Gute Frage! Viele Leute hier haben es bereits gesagt - Sie müssen einen Schlüssel in Ihre Anwendung einbauen, der möglicherweise durch Reverse Engineering abrufbar ist.

Informieren Sie sich über Vertrauenswürdige Datenverarbeitung . Dabei handelt es sich um einen öffentlichen/privaten Schlüssel, der in Ihrem PC eingebaut ist und auf den Sie niemals Zugriff haben werden. Speichervorhänge / versiegelter Speicher würden es einem Angreifer erschweren, einen an Ihre Anwendung gelieferten Schlüssel zu entdecken.

0voto

Nein, nicht im Allgemeinen. Sie stehen vor den Problemen, die in den anderen Kommentaren genannt wurden.

Die Frage ist nun eine Frage der Kosten. Sind die Kosten für das Knacken eines Schutzsystems höher als der Wert, den es schützt? Und wie hoch sind die Kosten für die Wiederherstellung nach einem erfolgreichen Einbruch?

Da eine Highscore-Tabelle im Allgemeinen kein hochwertiges Ziel darstellt, sollten Sie eine dieser Möglichkeiten ausprobieren:

  1. Senden Sie zusammen mit dem Highscore einige Informationen über den Spielstatus: Spielzeit, Level, gesammelte Boni usw. Verschlüsseln/verschleiern Sie diese Daten. So kann der Server feststellen, ob der Highscore theoretisch gültig sein könnte. Ignorieren Sie alle Highscores, die offensichtlich gefälscht sind.

  2. Senden Sie den Highscore verschlüsselt mit einem gemeinsamen Geheimnis, das Sie nicht als Klartext in Ihrer App speichern. Verwenden Sie vorzugsweise einen Algorithmus, um es in Echtzeit zu berechnen.

  3. Verschleiern Sie Ihren Client-Code.

  4. Speichern Sie hohe Punktzahlen mit Client-IP-Adressen und einem Zeitstempel.

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