it-swarm.com.de

Wenn "Sie dem Kunden niemals vertrauen können", warum verlassen sich Unternehmen wie Valve dann ausschließlich auf die clientseitige Überprüfung?

In Videospielen wird die meiste Anticheat-Software clientseitig ausgeführt (z. B. PunkBuster oder Valve Anti-Cheat) - aber ist dies nicht eine der ersten Sicherheitsregeln, die dem Client niemals vertrauen? Wenn ja, warum bieten diese Unternehmen dann keine serverseitige Überprüfung für Videospiele an, sondern bestehen weiterhin darauf, dem Kunden zu vertrauen?

36
user189790

Wenn ja, warum bieten diese Unternehmen dann keine serverseitige Überprüfung für Videospiele an, sondern bestehen weiterhin darauf, dem Kunden zu vertrauen?

Es geht weniger darum, darauf zu bestehen, dem Kunden zu vertrauen, als vielmehr darum, dass es kein anderes praktikables Anti-Cheat-Modell gibt. Wie DRM und in der Tat verwenden Anti-Cheat-Software wie PB eine Form von DRM, es gibt wenig, was getan werden kann.

In der DRM-Software sind Abhilfemaßnahmen vorhanden, um zu verhindern, dass der Client zu viel stochert. Sie muss jedoch auf den Client angewendet werden, um zu verhindern, dass der Client Dinge tut, die die Medienunternehmen nicht vom Kunden erwarten.

Die Anti-Cheat-Technologie basiert auf einer ähnlichen Methodik. Informationen über den Client werden gesammelt, an den Server gesendet. Wenn ein Client aufgrund einer Reihe von Überprüfungen für die jeweilige Software als fehlerhaft eingestuft wird, kann er auf dem Server gesperrt werden.

Letztendlich kommt es auf das Risikomanagement an. Ja, vertrauen Sie nicht, dass der Client einer der ersten Grundsätze der Sicherheit ist. Um die beim Kunden auftretenden Risiken zu mindern, gibt es eine Kosten-Nutzen-Analyse, die das Risikomanagement darstellt. Lohnt es sich, Kunden zu verlieren und zu betrügen, die ein faires und unterhaltsames Spiel wollen? Oder sollten einige Abhilfemaßnahmen getroffen werden? PB und andere Softwarepakete sind nicht dazu da, das Betrügen vollständig zu stoppen, sondern zielen darauf ab, das Betrügen teurer zu machen.

Es gibt auch eine andere subtilere Möglichkeit, die Kunden auf Betrug zu beschränken (Wall-Hacks, ...), die hauptsächlich durch Online-Spiele verursacht wird, aber nicht darauf beschränkt ist. Dies wird erreicht, indem der Client-Seite nicht alle Daten zugeführt werden. Zum Beispiel hat die unwirkliche Engine 3 Überprüfungen, ob sich ein Akteur in Ihrer Nähe befindet. Wenn diese Überprüfung positiv ist, sendet der Server Ihnen den genauen Standort sowie Ihren Gegner. Sozusagen kennt nur der Server alle Positionen, Aktionen und Bewegungen aller Akteure auf der Spielinstanz.

Dies kann in der Dokumentation der unwirklichen Engine 3/Client Server Model im Abschnitt Betrug gelesen werden, der hier zu finden ist: https://udn.epicgames.com/Three/ClientServerModel.html

So ist es bei erweiterten Engines/Netzwerkcode- und Client-Server-Modellen nicht unbedingt erforderlich, dem Client zu 100% zu vertrauen. Der Server kann im Voraus entscheiden, was der Client wissen soll, wodurch die Möglichkeiten von Hacks effektiv begrenzt werden. Um noch weiter zu gehen, kann der Server selbst entscheiden, was er wissen SOLLTE, um nicht von Clients abgelenkt oder verwirrt zu werden, die gefälschte Pakete senden.

47
h4ckNinja

Bei clientseitiger Anticheat-Software an und für sich geht es nicht um Sicherheit, sondern um das Gameplay (und das Kundenerlebnis).

Daher sind Sicherheitsregeln bei weitem nicht so anwendbar. Das Vertrauen in den Kunden "Pixel 1056 bis 1723 treffen" unterscheidet sich stark vom Vertrauen in den Kunden "kann 1000 US-Dollar nach Nigera überweisen" oder dass der Kunde "auf Bobs E-Mail zugreifen kann".

Beachten Sie, dass ich Finanztransaktionen ausdrücklich ausschließe, nur Gameplay-Cheats wie Aimbots, Big Head-Cheats usw.

21

Erstens : Es gibt viele Spiele, die eine 100% ige serverseitige Validierung verwenden und dem Client nicht vertrauen. Ein Beispiel: Online Poker

Sie senden dem Kunden einfach keinen Wert von Karten, die er nicht kennen kann. Selbst wenn er den Kunden hackt und die Matrix liest, gibt es nichts Verborgenes, das er enthüllen kann, und keine Bewegungen, die er mit dem regulären Kunden nicht machen kann.

Aber viele moderne Spiele sind viel komplexer. Ein Ego-Shooter zum Beispiel. Hier ist es nicht so einfach zu entscheiden, ob und wie gut Sie einen anderen Spieler sehen können. Man könnte sagen, es ist einfach, wenn zwischen Ihnen beiden eine Mauer ist, können Sie ihn nicht sehen. Und in diesen einfachen Fällen können moderne Spiele den feindlichen Spieler bereits aus Ihrer Sicht ausmerzen, sodass Sie nicht die Position erhalten, an der er sich befindet. Sobald sich der Feind in einer dunklen Ecke befindet und kaum noch sichtbar ist, muss das Spiel seine Position noch an Sie senden, damit Ihr Grafikgerät ihn dort malen kann. Wenn Sie einen Cheat verwenden, der ihn in leuchtenden Farben malt, können Sie ihn leicht erkennen und betrügen. Dies ist schwer zu verhindern, da die Logik, die ihn in dunklen Farben im Schatten malt, für Spiele mit guter Grafik sehr komplex ist. Wenn Sie also das Bild auf dem Server rendern und nur das endgültige Bild senden, wird das Betrügen viel schwieriger, aber auch würde eine Menge Ressourcen auf dem Server erfordern und hätte das ernsthafte Problem der LAG.

DELAY oder LAG : Das zweite große Problem beim Streaming von Spielen ist die Verzögerung. Wenn Sie die Maus bewegen, können Sie sich in einem Ego-Shooter sehr schnell umsehen. Das Senden dieses Befehls über das Internet und das Empfangen des auf Ihrem Bildschirm angezeigten Ergebnisses dauert jedoch länger als das lokale Rendern. Wenn Sie eine schnelle Internetverbindung haben, können Sie mit einem Ping unter 20 ms Glück haben, aber die meisten Verbindungen können sehr instabil sein und die Verzögerung kann manchmal höher sein. Ein Spiel, das so langsam reagiert, wird schrecklich langsam spielen und fast keinen Spaß machen. Im Gegenteil, viele moderne Spiele wenden eine Menge Techniken wie Bewegungsvorhersage, Zeitverzerrung und andere an, damit Sie die wahrgenommene Verzögerung anderer Spieler verringern können, indem Sie Ihr Spiel dazu bringen, viel lokale Logik zu berechnen und die Bewegungen anderer Spieler vorherzusagen, also das Spiel fühlt sich flüssiger an als es tatsächlich ist.

Hardware/Out-of-the-Box-Betrug. Und es gibt immer eine Menge Möglichkeiten zum Betrügen, die von Software nicht einfach besiegt werden können. Was ist mit Doping? (eine echte Sache im Sport) Oder einen Roboter für Sie spielen lassen. Oder eine Webcam über der Schulter, die Feinde auf Ihrem Bildschirm erkennt und Ihnen sagt, wo sie sich befinden? Oder sogar Dinge wie DDoS-Angriffe von einem Botnetz auf Ihr feindliches Team, um deren Kommunikation zu stören?

Es gibt einige Möglichkeiten, serverunterstützte Überprüfungen durchzuführen. Der Server kann die Richtigkeit des Spielcodes/der Anti-Cheat-Software wie DRM-Schutz testen (kann aber natürlich gefälscht werden). Der Server kann auch die Spiellogik überprüfen, Ihre Bewegungen messen, Statistiken und Daten über Ihr Verhalten sammeln und diese mit anderen Spielern und bestimmten Limits vergleichen und versuchen, zu entscheiden, ob Sie abnormal spielen oder gegen Regeln verstoßen ... aber nichts davon ist perfekt.

18
Falco

Wenn ja, warum bieten diese Unternehmen dann keine serverseitige Überprüfung für Videospiele an, sondern bestehen weiterhin darauf, dem Kunden zu vertrauen?

Sie tun es!

Die meisten Online-Spiele haben ab und zu eine Konsistenzprüfung.

Player32517 hat 100 Einheiten in 3 Sekunden bewegt, ist das möglich?

Die Überprüfung, ob jede einzelne Bewegung gültig ist, ist jedoch eine enorme Menge an Berechnungen.

Nehmen Sie zum Beispiel einen beliebigen Schützen:

Ihr durchschnittlicher Gaming-PC beginnt zu kämpfen, wenn sich zu viele Granaden/Feinde auf Ihrem Bildschirm befinden. Diese Last wird auf 20 Computer verteilt.

Stellen Sie sich nun vor, Sie müssten all das erneut auf einem Server berechnen und jede Bewegung, jeden Mausschlag, jeden Feuerauslöser auf Betrugsmuster überprüfen. In Echtzeit.

Aus diesem Grund ist es viel billiger oder sogar möglich, von Zeit zu Zeit zu überprüfen, ob Sie wirklich so weit gesprungen sind, sich so schnell bewegt haben oder Ihre Maus 3 Sekunden lang genau auf dem Kopf des Feindes gehalten haben, bevor Sie ihn überhaupt hinter sich sehen konnten diese Wand.

Und wenn all dies fehlschlägt, haben Sie immer noch die Community-Berichte mit Videomaterial.

Edit :

Vielen Dank an Num Lock für den Hinweis:

Die Verzögerung wird nicht durch die Logik verursacht, sondern durch das Rendern. Die Berechnung aller Vektoren für das Licht und die Animationen ist weitaus größer als die Berechnung, ob sich etwas in Reichweite befand, um getroffen zu werden.

16
N. Nowak

Hier müssen zwei Elemente angesprochen werden.

Erstens ist die clientseitige Cheat-Erkennung selten das einzige Element bei der Cheat-Prävention. Da die Serversoftware für einige Spiele ebenfalls verteilt ist, wird die serverseitige Cheat-Erkennungssoftware möglicherweise nicht vollständig mit ihr verteilt, um zu verhindern, dass sie Reverse Engineering ausgesetzt wird. Sie können aus dem Servercode, den Sie möglicherweise ausführen, und dem Servercode, den sie möglicherweise intern ausführen, keinen Mangel an serverseitiger Cheat-Erkennung ableiten. Aus ähnlichen Gründen zögern Unternehmen möglicherweise auch, ihre Anti-Cheat-Lösungen zu diskutieren: Dunkelheit ist keine schlechte Sache, die man neben einer robusten Lösung haben sollte.

Es besteht jedoch auch die Notwendigkeit einer clientseitigen Cheat-Erkennung, da Spiele von den Fähigkeiten der Spieler abhängen. Dies bedeutet, dass Betrug auf vielen Ebenen auftreten kann: Hardware, Eingabe und Software. Software ist nur die bequemste und präziseste, es kann sehr wenig getan werden, um sich vor einem kompetenten Roboter zu schützen. Um sich vor softwarebasiertem Betrug zu schützen, muss auf dem Client eine Art residenter Monitor vorhanden sein, damit er erkannt werden kann.

Darüber hinaus ist eine Spielsimulation komplex. Wie Sie zu Recht festgestellt haben, hindert wenig jemand daran, einen simulierten Client zu erstellen, der alle vom Spiel verwendeten Protokolle korrekt kopiert und zum richtigen Zeitpunkt willkürlich Eingaben generiert, um zu betrügen. Nur das ist ein großes Unterfangen; Es ist viel einfacher zu versuchen, den vorhandenen Client zu brechen. Gleiches gilt für den Aufbau eines gefälschten Anti-Cheat-Clients. Daher bedeutet clientseitige Sicherheit eher, die Dinge so schwierig wie möglich zu machen, als 100% narrensicher zu sein. Insbesondere Valve aktualisiert regelmäßig VAC, um in einem anhaltenden Kampf mit Cheat-Entwicklern zu bestehen.

5
Danikov

Die meisten anderen Antworten konzentrieren sich auf die technischen Aspekte der Betrugsprävention. Ich möchte hinzufügen, dass VAC Betrug verhindert, indem er wirtschaftlich unrentabel gemacht wird:

TL; DR: Der clientseitige Cheat-Schutz funktioniert, weil der Aufwand und die Fähigkeiten, die erforderlich sind, um ihn auszutricksen, hoch sind und die Bestrafung für Fehler schwerwiegend ist.

Das Hacken ist mit viel Versuch und Irrtum verbunden, und selbst wenn Sie vollen Zugriff auf die Quelle haben, ist ein erheblicher Arbeitsaufwand erforderlich, um herauszufinden, wie ein Client geändert werden kann, während er vorgibt, dies nicht zu tun. Und all diese Arbeiten werden jedes Mal, wenn der Client aktualisiert wird, in Frage gestellt.

Wenn Sie jedoch auch nur den geringsten Fehler machen, besteht die Gefahr, dass Sie für immer von allen VAC Servern) gesperrt werden.

Es macht auch keinen Sinn, Ihren Hack zu verteilen, da Valve auch weiß, wie man nach Cheats googelt, und sobald sie Ihren Hack gefunden haben, fügen sie eine zusätzliche Erkennungslogik hinzu, um alle zu finden, die ihn verwenden. Dies hält Benutzer wiederum davon ab, öffentlich verfügbare Cheat-Tools zu verwenden.

1
Cephalopod

Valve führt für alles eine serverseitige Validierung durch.

Alle Client-Eingaben sind vollkommen GÜLTIG.

Valve überprüft bereits gültige Benutzerdaten. Zum Beispiel kann der Client dem Server nicht sagen: "Ich habe Sparkles aus dem CT-Spawn geschossen, als er im T-Spawn war.".

Es wird auch überprüft, ob Sie beim Kauf von etwas nicht versuchen, diese Waffe auf Kredit zu kaufen. Wenn der Server das nicht tun würde, würde der Betrüger AWPs auf Pistolengeschossen kaufen.

Betrug ist GÜLTIG

Das Problem ist, dass Betrug (zum Beispiel bei CSGO) eine absolut gültige Aktion ausführt (die Cheats, die ungültige Aktionen ausführen, wie der Spawn Teleport-Fehler, können leicht behoben werden). Das Problem ist, dass Betrüger verschiedene Methoden verwenden, um gültige Eingaben einzugeben, die entweder verbessert oder von einem Computer vorgenommen werden.

Tatsächlich versucht VAC), den Turing-Test auf einen Spieler anzuwenden. Selbst ein Server kann die Identität des Agenten, der die Entscheidungen trifft, nicht überprüfen.

0
Aron

Serverseitige Überprüfungen sollen sicherstellen, dass die vom Client angeforderten Vorgänge legal sind. Grundsätzlich, damit Sie nicht versuchen, doppelt so schnell zu laufen, wie Sie dürfen.

Clientseitige Überprüfungen sollen versuchen, zu überprüfen, ob die Entscheidung, diese Änderung vorzunehmen, von einem Menschen getroffen wird, nicht vom Computer - z. Aimbots, die legale Client-Befehle ausführen (und daher vom Server nicht erkannt werden können), aber dennoch nicht zulässig sind.

Auf der Serverseite können Sie auch große Datenmengen nachbearbeiten, um festzustellen, ob der Player betrügt. Dies ist jedoch etwas, das Sie nachträglich prüfen müssen und das immer eine unvollständige Wissenschaft ist.

0
xaxxon

Die Herausforderung bei einer solchen Sicherheit besteht darin, dass Sie die Berechnung dort durchführen müssen, wo sich die Informationen befinden. Sie müssen entweder die Anti-Cheat-Berechnungen clientseitig ausführen oder die Informationsserverseite verschieben, damit die Berechnungen dort durchgeführt werden können. Bei vielen Spielen kann es extrem teuer sein, alle Informationen an den Server weiterzugeben. Dazu müsste der Client alle Benutzerinteraktionen und die Zeit, zu der sie aufgetreten sind, speichern. Der Versand all dieser Informationen an den Server zur Analyse ist zu umfangreich. Stattdessen wird die Berechnung an den Client gesendet.

Das heißt nicht, dass das das Ende ist. Viele Spiele implementieren beide clientseitige und serverseitige Tests. Einige Tests können basierend auf Informationen durchgeführt werden, die bereits an den Server gesendet wurden. Es ist möglicherweise nicht in der Lage, alle Speed-Hacks zu fangen, wenn jemand zickzack und zackig ist, aber es könnte jemanden fangen, der es schafft, sich viel schneller von Punkt A nach Punkt B zu bewegen, als es die Spielregeln erlauben.

Es gibt auch eine faszinierende Option: Verpflichtungen. Ein Client kann eine kryptografische Verpflichtung anbieten, die alle Benutzerinteraktionen beschreibt, z. B. einen SHA-1-Hash. Auf Befehl des Servers müssen sie möglicherweise die Daten angeben, die diesen Hash generiert haben. Dieses Muster wird in einigen verteilten Spielen verwendet, die keinen Server haben, um die Spieler ehrlich zu halten. Kunden sind verpflichtet, sich zu Maßnahmen zu verpflichten, die sie in der Vergangenheit ergriffen haben, bevor andere Kunden dann die aktuellen Daten senden. Dies verhindert, dass ein Client seinen Verlauf neu schreibt.

0
Cort Ammon