Se "non puoi mai fidarti del cliente", perché aziende come Valve si affidano esclusivamente alla verifica lato client?

36

Nei videogiochi, la maggior parte dei software anticheat viene eseguita su client (ad esempio PunkBuster o Valve Anti-Cheat) - ma non è una delle prime regole di sicurezza a non fidarsi mai del client? Se è così, allora perché queste aziende non offrono la verifica lato server per i videogiochi, ma piuttosto continuano a insistere per fidarsi del cliente?

    
posta user189790 22.02.2016 - 01:39
fonte

9 risposte

47

If so, then why do these companies not offer server side verification for video games, but rather continue to insist on trusting the client?

È meno di insistere per fidarsi del cliente e più che non c'è nessun altro modello anti-cheat attuabile. Come il DRM, e in effetti, i software anti-cheat come PB usano una forma di DRM, c'è poco che si può fare.

Il software DRM ha delle attenuazioni per impedire al client di incassare troppo, ma deve essere messo sul client per cercare di impedire al client di fare cose che le aziende dei media non vogliono che il client faccia.

La tecnologia anti-cheat si basa su una metodologia simile. Le informazioni sul client vengono raccolte, inviate al server e, se un cliente è visto come un comportamento anomalo, attraverso qualsiasi serie di controlli per il software specifico, può essere bannato sul server.

Alla fine della giornata, si tratta di gestione del rischio. Sì, non fidarti che il client è uno dei primi principi di sicurezza. Ma per mitigare i rischi che si presentano al cliente, c'è un'analisi costi-benefici, che è ciò che è la gestione del rischio. Il costo di lasciare che i clienti continuino a bot e cheat merita di perdere clienti che vogliono un gioco giusto e divertente? O dovrebbero essere messe delle attenuazioni? PB e altri pacchetti software non sono lì per fermare completamente la truffa, ma mirano a renderlo più costoso da imbrogliare.

C'è anche un altro modo più sottile di limitare i client a imbrogliare (hack da muro, ...), per lo più implicati dai giochi solo online ma non solo. Ciò si ottiene non fornendo al cliente tutti i dati. Ad esempio, il motore irreale 3 controlla se un attore è nelle vicinanze della visibilità, se questo controllo è positivo, il server ti invia la posizione esatta e il tuo avversario TUA. Per così dire, solo il server conosce tutte le posizioni, azioni e movimenti di tutti gli attori sull'istanza di gioco.

Questo può essere letto nella documentazione del motore irreale 3 / Client Server Model nel paragrafo cheating, per trovarlo qui: link

Per così dire, con motori avanzati / codice di rete e modelli Client Server, non è necessariamente necessario fidarsi del cliente al 100%. Il server può decidere in anticipo ciò che il client dovrebbe conoscere, limitando in modo efficace le possibilità degli hack. Per andare ancora oltre, il server può decidere cosa DOVREBBE sapere se stesso, non distrarsi o confondersi dai client che inviano pacchetti contraffatti.

    
risposta data 22.02.2016 - 02:00
fonte
21

Il software anticheat lato client non ha a che fare con la sicurezza, riguarda l'esperienza di gioco (e cliente).

Pertanto, le regole di sicurezza non sono quasi applicabili. Affidarsi al client "hit pixel 1056 by 1723" è molto diverso dal fidarsi del client "può trasferire $ 1000 a Nigera" o che il client "può accedere all'e-mail di Bob".

Nota che sto specificatamente escludendo le transazioni finanziarie, solo cheat di gioco come gli aimbot, i trucchi grandi teste, ecc.

    
risposta data 22.02.2016 - 03:51
fonte
18

Primo: ci sono molti giochi, che usano il 100% della convalida lato server e non si fidano del client. Un esempio: Poker online

Semplicemente non inviare il valore di alcuna carta al cliente che non può sapere. Quindi, anche se ha hackerato il client e ha letto la matrice, non c'è nulla di nascosto che possa rivelare e nessuna mossa che può fare, cosa che non potrebbe fare con il normale cliente.

Ma molti giochi moderni sono molto più complessi. Uno sparatutto in prima persona, per esempio. Qui non è così facile decidere se e quanto bene puoi vedere un altro giocatore. Potresti dire che è facile, se c'è un muro tra voi due non potete vederlo. E per questi semplici casi i giochi moderni possono già abbattere il giocatore nemico dal tuo punto di vista, in modo da non ottenere la posizione in cui si trova. Ma non appena il nemico è in un angolo buio e solo a malapena visibile il gioco deve ancora inviare la sua posizione a te, così il tuo dispositivo grafico può dipingerlo lì. Se usi un trucco, che lo dipinge con colori vivaci, puoi facilmente individuarlo e imbrogliare. Questo è difficile da prevenire, perché la logica che lo dipinge con i colori scuri nell'ombra è molto complessa per i giochi con una buona grafica - quindi strappare l'immagine sul server e solo mandarti l'immagine finale renderebbe l'inganno molto più difficile, ma anche richiederebbe un sacco di risorse sul server e avrebbe il grave problema del LAG.

DELAY o LAG: il secondo grosso problema di streaming dei giochi è il ritardo. Se muovi il mouse, puoi guardare in giro molto velocemente in uno sparatutto in prima persona. Tuttavia, l'invio di questo comando su Internet e la ricezione del risultato da mostrare sullo schermo richiedono più tempo del rendering locale. Se si dispone di una connessione Internet veloce, si può essere fortunati con un Ping inferiore a 20 ms, ma la maggior parte delle connessioni può essere molto instabile e il ritardo può aumentare a volte. Un gioco che reagisce lentamente che suonerà terribilmente lento e non sarà affatto divertente. Al contrario, molti giochi moderni applicano una tonnellata di tecniche come la previsione delle mosse, la distorsione temporale e altre in modo da ridurre il ritardo percepito degli altri giocatori, facendo in modo che il tuo gioco calcoli molte logiche locali e preveda le mosse di altri giocatori, quindi il gioco sembra più fluido di quanto sia in realtà.

Hardware / Imbrogliare fuori dagli schemi. E ci sono sempre un sacco di opportunità da imbrogliare che non possono essere facilmente sconfitte dal software. E il doping? (una cosa reale negli esports) O lasciare che un robot suoni per te. O avere una webcam in spalla, che individua i nemici sullo schermo e ti dice dove sono? O anche cose come attacchi DDoS da una rete bot sulla tua squadra nemica per disturbare le loro comunicazioni?

Ci sono alcune possibilità per effettuare convalide supportate dal server. Il server può testare la correttezza del codice di gioco / software anti cheat come la protezione DRM (ma può ovviamente essere falsificato). Il server può anche controllare la logica di gioco, misurare i tuoi movimenti, raccogliere statistiche e dati sul tuo comportamento e confrontarlo con altri giocatori e certi limiti e cercare di decidere se stai giocando in modo anomalo o se stai infrangendo qualche regola ... ma niente di questo è perfetto.

    
risposta data 22.02.2016 - 17:34
fonte
16

If so, then why do these companies not offer server side verification for video games, but rather continue to insist on trusting the client?

Lo fanno!

La maggior parte dei giochi online ha qualche controllo di coerenza di tanto in tanto.

Player32517 ha spostato 100 unità in 3 secondi, è possibile?

Tuttavia, controllare se ogni singola mossa è valida è un'enorme quantità di calcoli.

Prendi uno sparatutto ad esempio:

Il tuo pc di gioco medio inizia a soffrire se ci sono troppe granate / nemici sullo schermo. Questo carico è distribuito a 20 computer.

Ora immagina di dover calcolare tutto ciò che di nuovo su un server e controllare ogni mossa, ogni scorrimento del mouse, ogni innesco di fuoco per i modelli di cheating. In tempo reale.

A causa di tutto questo è molto più economico o addirittura possibile controllare ogni tanto se si è davvero potuto saltare così tanto, spostarlo velocemente o tenere il mouse esattamente sulla testa dei nemici per 3 secondi prima di poter persino guardalo dietro quel muro.

E se tutto ciò non funziona, hai ancora i rapporti della comunità con le riprese video.

Modifica

Grazie Num Lock per averlo indicato:

Il ritardo non è causato dalla logica ma piuttosto dal rendering. Calcolare tutti i vettori per la luce e le animazioni è molto più grande del calcolo se qualcosa è nel raggio d'azione per essere colpito.

    
risposta data 22.02.2016 - 08:03
fonte
5

Ci sono due elementi da affrontare qui.

In primo luogo, il cheat detection sul lato client è raramente l'unico elemento nella prevenzione del cheat. Dato che viene distribuito anche il software del server per alcuni giochi, il software di rilevamento cheat sul lato server potrebbe non essere completamente distribuito con esso per evitare di esporlo al reverse engineering. Non è possibile inferire una mancanza di rilevamento cheat sul lato server dal codice server che si può eseguire rispetto al codice server che possono essere eseguiti internamente. Inoltre, le aziende potrebbero essere riluttanti a discutere le loro soluzioni anti-cheat per ragioni simili: l'oscurità non è una cosa negativa da avere in cima a una soluzione solida.

Tuttavia, c'è anche una necessità per il rilevamento dei cheat sul lato client, poiché i giochi fanno affidamento sull'abilità del giocatore. Ciò significa che il cheating può accadere a molti livelli: hardware, input e software. Il software è semplicemente il più conveniente e preciso, c'è ben poco da fare per proteggersi da un robot abile. Per proteggersi dagli imbrogli basati sul software, devi avere un qualche tipo di monitor residente sul client per avere una possibilità di rilevarlo.

Inoltre, una simulazione di gioco è complessa. Come hai giustamente affermato, c'è poco da impedire a qualcuno di creare un client simulato che copi correttamente tutti i protocolli che il gioco utilizza e possa generare arbitrariamente input al momento giusto per imbrogliare. Solo così facendo è una grande impresa; è molto più facile tentare di rompere il client esistente. Lo stesso vale per la costruzione di un falso client anti-cheat. In quanto tale, la sicurezza lato client è più un caso di rendere le cose più difficili possibili piuttosto che essere sicure al 100%. In particolare, Valve fa regolarmente aggiornamenti su VAC per competere in una continua battaglia con gli sviluppatori di cheat.

    
risposta data 22.02.2016 - 12:00
fonte
1

La maggior parte delle altre risposte si concentra sugli aspetti tecnici della prevenzione del cheat, vorrei aggiungere che VAC previene il cheating rendendolo economicamente non redditizio:

TL; DR: la protezione cheat lato client funziona perché lo sforzo e l'abilità richieste per ingannarlo sono elevati e la punizione per gli errori è grave.

L'hacking comporta un sacco di tentativi ed errori e, anche se si ha pieno accesso alla fonte, richiede una notevole quantità di lavoro per scoprire come modificare un client facendo finta che non lo fosse. E tutto questo lavoro viene reso valido ogni volta che il client viene aggiornato.

D'altro canto, se commetti anche il minimo errore rischi di essere bannato per sempre da tutti i server VAC.

Inoltre non ha senso distribuire il tuo hack, dato che Valve sa anche come google per i cheat e una volta trovato il tuo hack aggiungerà qualche logica di rilevamento extra per trovare tutti quelli che la usano. Questo di nuovo scoraggia gli utenti dall'utilizzare strumenti cheat disponibili pubblicamente.

    
risposta data 23.02.2016 - 20:50
fonte
0

La sfida con sicurezza come questa è che devi fare il calcolo dove sono le informazioni. È necessario fare il lato client del calcolo anti-cheat o spostare il lato server delle informazioni in modo che i calcoli possano essere eseguiti lì. Per molti giochi, passare tutte le informazioni al server può essere esorbitante. Per fare ciò, il cliente dovrebbe salvare tutte le interazioni dell'utente e l'ora in cui si sono verificate. Spedire tutte queste informazioni al server per fare analisi è troppo, quindi il calcolo viene inviato al client.

Questo non significa che sia la fine. Molti giochi implementano entrambi test lato client e server side. Alcuni test possono essere fatti sulla base di informazioni già inviate al server. Potrebbe non essere in grado di catturare tutti gli hack di velocità come zig e zag di qualcuno, ma potrebbe catturare qualcuno che riesce a spostarsi dal punto A al punto B molto più velocemente di quanto permesso dalle regole del gioco.

C'è anche un'opzione intrigante: gli impegni. Un client potrebbe offrire un impegno crittografico che descrive tutte le interazioni dell'utente, come un hash SHA-1. Su un comando dal server, potrebbero essere obbligati a fornire i dati che hanno generato quell'hash. Questo pattern è utilizzato in alcuni giochi distribuiti che non hanno server per mantenere i giocatori onesti. I clienti sono obbligati a impegnarsi in azioni che hanno fatto in passato prima che altri clienti inviino i dati attuali. Ciò impedisce a un cliente di riscrivere la sua cronologia.

    
risposta data 23.02.2016 - 04:45
fonte
0

Valve fa VALIDAZIONE lato server per tutto.

Tutti gli input dei client sono perfettamente VALIDI.

Valve già controlla su dati utente validi. Ad esempio, il cliente non può dire al server: "Ho sparato a Sparkles dalla spawn CT, quando era nella spawn T".

Controlla anche che quando acquisti qualcosa, non stai cercando di acquistare quella pistola a credito. Se il server non lo ha fatto, allora l'imbroglione comprerebbe gli AWP sul giro di pistola.

L'inganno è VALIDO

Il problema è che il cheating (su CSGO ad esempio) sta facendo un'azione perfettamente valida (i trucchi che eseguono azioni non valide, come il problema del spawn Teleport, possono essere risolti facilmente). Il problema è che i cheaters usano una varietà di metodi per inserire input validi che sono migliorati o creati da un computer.

In effetti VAC sta provando ad applicare il Test di Turing su un giocatore. Anche un server non può verificare l'identità dell'agente che prende le decisioni.

    
risposta data 23.02.2016 - 07:24
fonte
0

I controlli lato server servono a garantire che le operazioni richieste dal client siano legali. Fondamentalmente in modo che tu non provi a eseguire il doppio più velocemente che puoi.

I controlli sul lato client sono per provare a verificare che la decisione di effettuare tale modifica sia fatta da un essere umano, non dal computer - ad es. aimbots che eseguono comandi client legali (e quindi non rilevabili dal server) ma non sono ancora consentiti.

Inoltre, sul lato server puoi eseguire la post-elaborazione di set di dati di grandi dimensioni per cercare di determinare se il giocatore stia tradendo, ma è qualcosa che avresti bisogno di guardare dopo il fatto ed è sempre una scienza imperfetta.

    
risposta data 24.02.2016 - 02:53
fonte

Leggi altre domande sui tag