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

21

18.03.2015, 21:43

Versuch's mit der Taktik, dass die User selbst etwas zu verlieren haben (z.B. Fortschritte, Daten usw.), wenn sie eine ID weitergeben. Am besten wäre es also die Aktionen an einen dem Benutzer wichtigen Account zu knüpfen, dessen Daten verloren gehen/kompromittiert werden, wenn die Daten weitergegeben werden.

Folgendes Verfahren klappt auch ohne explizites Registrieren durch den Benutzer:
1. Bei Installation generiert die Anwendung eine Zufallszahl und merkt sich diese.
2. Die Anwendung schickt bei einer Aktionen die Zufallszahl, eine GerätID und eine einfache Anwendungskennung an den Server (über eine verschlüsselte Verbindung).
3. Der Server hasht die GerätID und protokolliert die entsprechenden auszuführenden Aktionen mit den Daten inkl. einer ebenfalls gehashten IP-Adresse (vorher ggf. noch Region ermitteln und ebenfalls speichern).

Auf diese Weise kannst Du anonymisiert anhand des Nutzungsverhaltens, IP-Wechsel etc. Missbrauch feststellen. Bei Missbrauch kannst Du dann einzelne Installationen sperren und ggf. dazugehörige Daten aus der Datenbank über das Protokoll entfernen.

Wenn Du das ganze auf einem Smartphone machst, dann nutze die entsprechenden APIs dort. Damit kannst Du Aktionen dann ziemlich "sicher" einzelnen Usern zuordnen. Nur von der jew. Smartphone-OS-API authentifizierte Nutzer dürfen dann überhaupt Aktionen auf dem Server auslösen. Selbst wenn die Benutzerdaten gar nicht benötigt und nur anonymisiert gespeichert werden, kannst Du so viele Möglichkeiten des Missbrauchs eindämmen.

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »Chromanoid« (18.03.2015, 22:11)


22

18.03.2015, 23:32

Ich möchte lediglich Möglichkeiten kennen lernen, wie man eine Manipulation von außen am Besten verhindert.


Natürlich stimmt es generell, dass wie die meisten es hier sagen, eine sichere Variante ausgeschlossen ist. Allerdings gibt es denke ich praktikable Antworten, die simpel umzusetzen sind.

Man kann natürlich annonymisiert den Spielverlauf (bzw. Spielercommandos oder was auch immer) an den Server schicken. Da hat man aber evtl. Datenschutzbedenken, braucht ständig eine Internetverbindung und der Server wird sehr, sehr kompliziert.

Ich würde dir empfehlen, einfach den gesamten Netzwerkverkehr, mit einem simplen, eigenen, symmetrischen Verschlüsselungsverfahren zu verschlüsseln. Irgendeine simple Kette bijektiver Abbildungen auf Byte-Blöcken. Ein paar XOR-S mit verschiedenen Zufallszahlen. Ein paar Additionen und Subtraktionen mit Überlauf (damit es bijektiv bleibt). Irgendetwas halt. Hauptsache es ist so komplex, dass der Compiler es nicht kurz und klein optimiert.
Damit zwingst du potentielle Angreifer, den Assembler-Code zu analysieren. Weil du ein eigenes Verfahren benutzt, können sie keine DLL-Aufrufe abfangen oder nach bekannten Funktionen suchen. Auf die Sicherheit hat es jedoch keine Auswirkungen, denn wer ein simples Verfahren rauskopieren kann, kann auch ein komplexes Verfahren rauskopieren. Hauptsache, man muss den Assembler-Code anfassen und kann nicht einfach nur den Netzwerkverkehr analysieren (natürlich könnte man ein simples Verfahren durch analysieren von Traffic knacken - aber das ist schwerer als den Assembler-Code zu lesen und damit unpraktikabel).

Zur Implementierung magst du vielleicht auch noch das hier lesen: https://de.wikipedia.org/wiki/Betriebsmo…ryptographie%29 (damit verhinderst du ein paar ansonsten arg triviale Angriffe auf den Traffic).

Insgesamt hast du so eine Funktion in vielleicht 30 Minuten implementiert. Und es ist vermutlich ungefähr so sicher, wie du mit vertretbarem Aufwand werden kannst. Und Aufhalten tust du damit vermutlich alle hier im Forum. Nicht das es unglaublich schwer wäre, aber man braucht doch so viel Einarbeitungszeit, dass es die allermeisten abschrecken sollte.
Lieber dumm fragen, als dumm bleiben!