Weiß jemand, was der Trend ist, wenn MMORPG-Entwickler heutzutage ihre Client / Server-Protokolle verschlüsseln?
Die Vor- und Nachteile sind wie folgt.
Verschlüsselungs-Protokoll:
Regulärer einfacher Text:
@ Samuel & amp; Coxymla:
Das stimmt nicht ganz. Wenn das Protokoll eine asynchrone Verschlüsselung verwendet, bei der der private Schlüssel des Servers dem Client unbekannt ist, kann der Bot den Austritt des Clients nicht entschlüsseln. Das bedeutet, dass der Bot, um die ausgehenden Daten zu modifizieren, den Spielprozess anhängen und die Daten abfangen muss, bevor sie verschlüsselt werden.
In der Theorie ist das einfach genug, aber es kann technisch anspruchsvoll sein. Zumindest hebst du die Messlatte für Angreifer höher.
@Zombies: Abgesehen vom anfänglichen Schlüsselaustausch erfordern die meisten Verschlüsselungsschemata keinen zusätzlichen Datentransfer. Während bei der Verschlüsselung noch zusätzliche Arbeit erforderlich ist, wird die Datenübertragung sicherlich durch das Netzwerk und nicht durch den Prozessor eingeschränkt.
Einfach ausgedrückt, führt die Verschlüsselung nicht zu einer langsameren / mehr Datenübertragung.
Vorsicht: Diese Wikipedia-Seite enthält eine Geschichte über einen häufigen Verschlüsselungsfehler, der von den Entwicklern von Phantasy Star Online gemacht wurde. Es ist eine Lektüre wert.
Das Hinzufügen von Verschlüsselung zu Ihren Paketen verlangsamt die Person, die einen Bot schreibt, nur um ein paar Sekunden. Ihr Client müsste wissen, wie er verschlüsselt werden muss, um Daten an den Server zu senden und wie er Daten vom Server entschlüsseln kann. Dies gilt auch für den Bot.
Um Verwerfungen durch Wände zu vermeiden, sollten Sie diese Kontrollen immer durchführen. Traue niemals der Eingabe des Benutzers, selbst wenn du den Client selbst geschrieben hast.
Als fastcall erwähnt, sollten Sie dennoch die Verschlüsselung einiger Daten implementieren. Insbesondere diejenigen, die sensible Daten enthalten, wie Logins und Chat.
Zumindest sollte das Login-Protokoll des MMOs verschlüsselt sein, damit Leute im Netzwerk des Players ihre Account-Informationen nicht per Päckchen lesen können.
Dieser Grund kann leicht auf andere Daten erweitert werden, die der Spieler sendet. Zum Beispiel kann der Chat mit anderen Spielern vertrauliche Informationen enthalten. Wenn das Spiel bereits die Einrichtung eines Verschlüsselungsprotokolls für den Anmeldevorgang durchläuft, gibt es wahrscheinlich keinen Grund, es abzuschalten, nachdem Sie fertig sind.
Es ist ziemlich irrelevant. Ich stelle mir vor, die Metadaten wie die Login-Informationen und Session-Informationen zu verschlüsseln, aber dann die Spielmechanik-Daten im Klartext zu senden. Schließlich kann der Server dem Client sowieso nicht vertrauen (nicht gehackt worden sein).
Die meisten Hackbots werden sich in den laufenden Spielprozess einklinken und trotzdem mit ihrem Speicher herumstochern, was absolut nicht feststellbar ist - sie setzen oft eine Signaturerkennung ein, die versucht, bekannte Hackbots zu erkennen, aber im Grunde nutzlos.
Eine andere mögliche Technik, um Hackbots zu entdecken, besteht darin, Gameplay-Muster von bekannten zu erkennen.
Verschlüsseln der Daten tut nichts, da Hackbots den Client im Speicher angreifen.
Wenn Sie Zeit haben, hat dieses 1-stündige Video über netcode einen Teil über die Verschlüsselung (unter anderem Client-Synchronisation und Paket) Kompression).
Das entsprechende Zitat aus dem Video lautet: CPU ist billig. Verschlüsseln Sie es einfach, Sie haben genug CPU-Zeit zum Verschlüsseln und der Vorteil der Verschlüsselung ist hoch (Clients sehen die Befehle Ihres Clients nicht, erhöhen die Leiste für Hacking, usw.).
Der Hauptgrund, warum Entwickler ihre Protokolle verschlüsseln sollten, sind Marketinggründe. Sie müssen einfach nur sicherstellen, dass ihr Server nur einer ist (zum Beispiel wenn sie (oder schon) eine kostenpflichtige Mitgliedschaft machen wollen und niemand wird nur seinen eigenen Emulator des Servers nach der Entdeckung des Protokolls schreiben und wird es kostenlos anbieten .
Tags und Links encryption bots client-server