Frage

Ich suche nach sicheren Möglichkeiten, Daten zwischen einem Client, auf dem Flash ausgeführt wird, und einem Server zu übertragen.Die betreffenden Daten werden von der Flash-App generiert, in diesem Fall Ihr Punktestand nach Abschluss eines Spiels.Ich möchte überprüfen, ob die Daten auf dem Server unverfälscht sind.Welche guten Methoden gibt es, dies zu erreichen?

Eine einfache Möglichkeit besteht darin, einige Operationen an den Daten durchzuführen, beispielsweise einen Hash, und den Hash zusammen mit den Daten an den Server zurückzuleiten.Dies kann jedoch leicht von jemandem gebrochen werden, der Zugriff auf den Client-Quellcode hat.

Bearbeiten:Mir ist klar, dass nichts unhackbar sein wird, aber ich möchte es so schwierig wie möglich machen.Die Lösung von @jcnnghm, Daten mit einem öffentlichen Schlüssel zu verschlüsseln und optional Plausibilitätsprüfungen und/oder Neuberechnungen mit den Spielprotokollen durchzuführen, ist meiner Meinung nach die beste Option.Auch eine SSL-Verschlüsselung ist eine gute Idee, da es dadurch schwieriger wird, zu entschlüsseln, was tatsächlich an den Server zurückgesendet wird.

War es hilfreich?

Lösung

Verschlüsseln Sie die Daten mit einem öffentlichen Schlüssel, der in der Binärdatei gespeichert ist.Dadurch wird die Eintrittsbarriere für einen Angriff erhöht.Darüber hinaus überprüft Sanity die Daten, sobald sie auf dem Server ankommen.Dies kann so einfach sein wie die Berechnung der maximalen Punktezahl, die realistischerweise pro Spielzeiteinheit erreicht werden könnte, oder die Rückübertragung von Spielprotokollen an den Server, um sicherzustellen, dass die Punkte korrekt sind.

Nichts wird absolut hacksicher sein, ganz gleich, was Sie tun, aber dies wird alle außer den Entschlossensten aufhalten.

Aktualisieren: @markieren:Flash unterstützt SSL nativ.

Andere Tipps

Kann Code, der auf einer nicht vertrauenswürdigen Plattform läuft, seine Integrität behalten?Nein, jahrzehntelange kaputte Kopierschutzsysteme lassen mich vermuten, dass dies unmöglich ist.Der umgekehrte bösartige Code, der in einer vertrauenswürdigen Sandbox ausgeführt wird, ist machbar, aber das Beste, was Sie mit Ihrem Problem tun können, ist, es den Leuten unbequem zu machen, zu betrügen.

Schauen Sie sich das AS3Crypto-Paket an unter http://code.google.com/p/as3crypto/.Ich habe es nicht ausprobiert, aber dieses Paket behauptet, das TLS 1.0-Protokoll (teilweise) zu unterstützen.

TLS stellt einen sicheren Tunnel zwischen Ihrer Flash-Anwendung und dem Server bereit.http://en.wikipedia.org/wiki/Secure_Sockets_Layer

@jcnnghmm Sie möchten normalerweise keine öffentliche Schlüsselverschlüsselung (RSA, DSA) für die Bulk -Datenverschlüsselung aufgrund seiner großen Rechenzeit verwenden.Die Verschlüsselung mit öffentlichen Schlüsseln sollte in den Phasen des Handshakes und der Schlüsselvereinbarung in einem Sicherheitsprotokoll verwendet werden, die Massendatenverschlüsselung sollte jedoch durch eine symmetrische Verschlüsselung wie AES und TDES erfolgen.Die TLS- und SSL-Protokolle funktionieren auf diese Weise.

Solange die Leute an die ausführbare Datei gelangen können – was immer der Fall ist, es sei denn, Sie möchten das Spiel auf einem gesperrten Kiosk ausführen – gibt es hierfür keine absolut sichere Möglichkeit.

Die Musik- und Filmindustrie gab Dutzende Millionen für DRM aus, das von Hobbybastlern innerhalb weniger Tage/Wochen geknackt wurde.Wenn sie nicht schützen können ihre Sachen...

Ich stimme den Antworten zu „Nichts ist hackersicher“ zu.Denn sobald Sie es lesen können, können Sie es manipulieren/kopieren und somit dekompilieren.

Ein anderer Ansatz, den ich geplant habe, besteht darin, eindeutige Schlüssel zu generieren.Spielersitzung (einschließlich einer Art Uhrzeit/Datum als Salzwerte).

Dann führen Sie die Anwendung durch, unter Umständen in regelmäßigen Abständen die Statusbewertung einreichen/übermitteln und einen neuen gültigen Schlüssel erhalten.Wenn diese Synchronisierung fehlschlägt, brechen Sie die gesamte Sitzung ab.

Der Nachteil dabei könnte sein, dass zu viele gleichzeitige Spieler die Antwortgeschwindigkeit des Servers verringern und dadurch „falsche Timeouts“ verursachen und den Gameserver für DoS-Angriffe offen lassen.

Aber etwas mit der Erneuerung des „Sitzungsschlüssels“, während der Benutzer die Sitzung hat, erfordert etwas mehr Sitzungsverwaltung, aber wenn es die Betrüger etwas härter arbeiten lässt, werde ich es auf jeden Fall versuchen :o)

Andererseits ist NICHTS hackersicher, also vertrauen Sie ihm nicht zu 100 % – egal, wie clever die Lösung ist, die Sie sich ausdenken.

Ein letzter Hinweis wäre auch, Ihre Bewerbung in Module/Stufen usw. zu unterteilen.sodass Sie nicht auf jeden Teil des Codes zugreifen können, indem Sie ihn einfach starten.

Derzeit ist es mein Plan, eine große Welt mit mehreren Ebenen zu bauen, und der Client/Spieler erhält NUR die Dateien, die an den Teil angehängt sind, in dem sich der Spieler befindet.

Ich hoffe, das ist für Ihre Gedanken von Nutzen.

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