Domanda:
Se "non puoi mai fidarti del cliente", allora perché aziende come Valve si affidano esclusivamente alla verifica lato client?
user189790
2016-02-22 06:39:10 UTC
view on stackexchange narkive permalink

Nei videogiochi, la maggior parte del software anti-cheat viene eseguito dal lato client (ad es. PunkBuster o Valve Anti-Cheat), ma non è una delle prime regole di sicurezza per non fidarsi mai del client? In tal caso, perché queste società non offrono la verifica lato server per i videogiochi, ma continuano invece a insistere nel fidarsi del cliente?

Come rilevi wallhack lato server?
Perché presumere che non ci sia convalida lato server?
@Agent_L: Non inviando al client alcuna informazione che il wallhack sarebbe in grado di utilizzare. Immagina di non eseguire assolutamente NESSUN codice di gioco sul client, ad esempio, il client invia l'input direttamente al server, il server esegue il rendering della scena lato server e invia un flusso MPEG del gioco al client. Allora sarebbe impossibile imbrogliare.
@sebastiannielsen in questo modo, i requisiti del server (e del client - non riesco a trasmettere 480p su Internet turco super veloce (.s)) andranno molto più in alto.
@sebastiannielsen è così che funziona, ad esempio, il servizio Playstation Now di Sony. Hanno comprato OnLive che aveva giochi per PC riproducibili in streaming sulla rete. Ha funzionato sorprendentemente bene, totalmente giocabile con una grafica completa.
C'è anche il problema della latenza. Qui in Nuova Zelanda, il tuo tempo di ping praticamente ovunque sarà di circa 300 ms. Divertiti a giocare a qualsiasi sparatutto veloce con 300 ms di input lag. (300 ms di ritardo con il rendering lato client possono essere abbastanza giocabili, a seconda degli algoritmi di compensazione del ritardo del gioco)
Nota anche che alcuni giochi (ad esempio quelli basati sulla sorgente) * provano * a inviare al client solo le informazioni su altri giocatori che possono vedere, ma non è perfetto.
@immibis CS:GO ha recentemente implementato specificamente un tipo di anti-wallhack che fa qualcosa con la linea di vista. All'inizio c'erano molti, * molti * bug di implementazione (specialmente con il suono) e anche ora abbiamo casi di persone che non si sono presentate o sembravano "teletrasportarsi" sullo schermo. SMAC è un'altra implementazione con problemi simili. Uno sparatutto competitivo non è divertente quando le persone iniziano a teletrasportarsi dietro gli angoli.
Il vero problema è che VAC sta cercando di trovare un input VALIDO che è stato fatto da un computer o da un essere umano assistito da computer. Il server ha già VALIDATO l'input. Stai applicando male la citazione.
@sebastiannielsen. OK. Ho scritto male la mia domanda. Dovrebbe essere: "Come fai ** praticamente ** a rilevare wallhack lato server?". Ricorda che stiamo parlando di giochi di livello professionale, in cui l'aggiornamento a 60 Hz è troppo lento per essere accettabile.
`dove si immagina che l'aggiornamento a 60Hz sia troppo lento per essere accettabile`
I clienti possono essere, in una certa misura, fidati del ** consenso **. Inoltre, se non * provassero * almeno a proteggere i client, vedresti molti più hacking e imbrogli e faresti il ​​contrario di questa domanda.
La tecnologia anti-frode non cerca cose casuali che fai. Cerca le variabili predefinite che potrebbero essere utilizzate per barare (salute, velocità, ecc.) E se superano un limite, il sistema entrerà in vigore. Questo non si applica a tutti i sistemi anti-cheat, ma la maggior parte di essi si basa su di esso.
Nove risposte:
h4ckNinja
2016-02-22 07:00:31 UTC
view on stackexchange narkive permalink

In tal caso, perché queste società non offrono la verifica lato server per i videogiochi, ma continuano piuttosto a insistere nel fidarsi del cliente?

Si tratta meno di insistere sulla fiducia il client e più che non esiste un altro modello anti-cheat praticabile. Come il DRM, e in effetti, il software anti-cheat come PB utilizza una forma di DRM, c'è poco che può essere fatto.

Il software DRM dispone di mitigazioni per impedire al client di spingere troppo, ma deve essere affidato al client per cercare di impedirgli di fare cose che le società di media non vogliono che il cliente faccia.

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

Alla fine della giornata, si tratta di gestione del rischio. Sì, non fidarti del cliente è uno dei primi principi della sicurezza. Ma per mitigare i rischi che si verificano presso il cliente, c'è un'analisi costi-benefici, che è ciò che è la gestione del rischio. Il costo per consentire ai clienti di continuare a bot e imbrogliare vale la pena perdere clienti che desiderano un gioco equo e divertente? O dovrebbero essere messe in atto alcune attenuazioni? PB e altri pacchetti software non sono lì per smettere del tutto di imbrogliare, ma mirano a renderlo più costoso.

Inoltre c'è un altro modo più sottile per limitare i client a imbrogliare (wall hack, .. .), per lo più implicato solo nei giochi online ma non limitato a. Ciò si ottiene non fornendo al client tutti i dati. Ad esempio, unreal engine 3 controlla se un attore è nelle tue vicinanze di visibilità, se questo controllo è positivo, il server ti invia la posizione esatta così come il tuo avversario. Per così dire, solo il server conosce tutte le posizioni, azioni e movimenti di tutti gli attori nell'istanza di gioco.

Questo può essere letto nella documentazione di unreal engine 3 / Client Server Model nel paragrafo cheating, che si trova qui: https://udn.epicgames.com/Three/ClientServerModel.html

Quindi, con motori / codice di rete avanzati e modelli Client Server, non è necessario fidarsi al 100% del client. Il Server può decidere in anticipo ciò che il client deve sapere, LIMITANDO efficacemente le possibilità di hack. Per andare ancora oltre, il server può decidere da solo cosa DOVREBBE sapere, per non essere distratto o confuso dai client che inviano pacchetti contraffatti.

Gli imbrogli POSSONO essere prevenuti facendo tutto sul server, incluso il rendering. Se vuoi creare il gioco in modo che il giocatore invii l'input al server, il server esegue TUTTO il codice del gioco e rende la scena sul lato server, quindi invia un flusso MPEG al client, quindi è praticamente impossibile imbrogliare. Sì, potresti creare un bot in riproduzione, ma quel bot affronterebbe lo stesso problema della decodifica dei captcha, perché gli oggetti sullo schermo non avrebbero metadati, sarebbe semplicemente un'immagine piatta con frame MPEG.
@sebastiannielsen La mia ipotesi è che il tuo approccio non rientri nell'insieme degli approcci "praticabili". Ciò richiede molta più potenza di elaborazione per il servizio di gioco (ora deve eseguire ogni singolo client, oltre al server). Valve ha deciso, immagino, che sia più facile scrivere codice anti-cheat e tollerare qualche cheat piuttosto che fornire la potenza di elaborazione aggiuntiva per eseguire il client di gioco per ogni singolo giocatore contemporaneamente.
Onlive ha fatto proprio questo, con il rendering sul server. Quindi non è davvero "inattuabile". Penso che man mano che i server diventeranno più potenti, forse il gioco lato server diventerà il metodo migliore per combattere gli imbrogli.
@sebastiannielsen Certo, ci sono servizi che lo fanno; Valve semplicemente non è uno di loro. Forse "fattibile" non è la parola giusta, o almeno dovrebbe essere inteso come "fattibile nel contesto dei vincoli di un particolare fornitore". Poiché i costi per la potenza di elaborazione diventano globalmente meno gravosi, questo approccio diventa sempre più praticabile per più persone.
@sebastiannielsen: Ovviamente potresti ancora imbrogliare con il rendering lato server, ma cose come gli attacchi mirati dovrebbero fare analisi visiva invece di leggere le posizioni dei giocatori dalla memoria. Dove c'è volontà c'è un modo.
Anche onlive è morto da quasi un anno a causa della mancanza di persone che volevano usarlo, in parte a causa di problemi inevitabili con i giochi in streaming come input e ritardo di visualizzazione. (Anche perché è molto costoso ospitare così tanta potenza di rendering e capacità di streaming)
@sebastiannielsen Non tutti hanno connessioni multi-megabit in grado di gestire tale streaming con una latenza accettabile. Ci sono ancora molte persone negli Stati Uniti con connessioni DSL da 3 Mbit o più lente, per non parlare del resto del mondo. Questa non è una soluzione accettabile e non lo sarà a meno che qualche azienda altruista non inizi a distribuire magicamente la fibra agli utenti di tutto il mondo.
@DoktorJ: Il problema principale con i giochi in streaming è la latenza, non la larghezza di banda. Puoi eseguire lo streaming HD con solo 5 Mbps _ (lo streaming 1080p più alto di Netflix è di soli 8 Mbps) _, quindi anche "solo" 3 Mbps va bene. Il vero problema è la latenza, che è delimitata da limiti fisici. L'unica soluzione è che un'azienda distribuisca spazialmente i propri server.
Questa è un'ottima risposta. Aggiungiamo a questo un altro punto: non tutti i cheat sono trucchi in stile wall-hack o ESP. Ci sono anche hack in stile bot di mira, alcuni script di movimento ecc. Che sono considerati barare in molti giochi. E questi non possono essere rilevati lato server. Anche se avessimo deciso di andare fino in fondo con quell'irrealistico "Renderizza tutto sul server, invia visualizzazione via cavo". path, il client sarà ancora in grado di utilizzare questo tipo di hack e tutto ciò che il server vedrà saranno i comandi di azione emessi dall'hack. Ciò significa che anche in questo caso avremo bisogno di un servizio di rilevamento cheat in esecuzione sul client.
Anti-weakpasswords
2016-02-22 08:51:49 UTC
view on stackexchange narkive permalink

Il software anticheat lato client in sé e per sé non riguarda la sicurezza, ma riguarda l'esperienza di gioco (e del cliente).

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

Tieni presente che sto specificatamente escludendo finanziaria transazioni, solo trucchi di gioco come aimbots, cheat big head, ecc.

Ho sentito che alcune persone spendono somme considerevoli di denaro all'interno dei giochi ...
@Mehrdad - e le transazioni monetarie stesse non sono correlate al software anti-cheat che è al centro della domanda dell'OP. Tali transazioni monetarie saranno soggette a controlli lato server e istituto finanziario.
Quello che volevo dire era che se le persone perdono soldi a causa di imbrogli di altri giocatori, verranno rimosse; non sembrerebbe molto diverso da una vera frode monetaria per loro, quindi anti-cheat ha effettivamente un ruolo di sicurezza.
Inoltre non ho davvero capito perché questo non è applicabile qui. Ancora di più, soprattutto qui è applicabile. è uno schema. quindi il campo "client" è irrilevante
@Mehrdad: A meno che tu non stia giocando a giochi d'azzardo o giochi competitivi con premi in denaro, quei soldi vengono pagati alla società di gioco, quindi in realtà non perdi più soldi di quelli che avresti quando qualcun altro sta barando. L'inganno potrebbe degradare il valore soggettivo del gioco, ma il denaro è comunque l'importo che hai già speso.
@LieRyan: Tranne che * è * denaro. [* "Articoli in giochi come Team Fortress 2 e Counter-Strike: GO possono valere un sacco di soldi veri sul mercato secondario, per non parlare delle inspiegabilmente popolari figurine virtuali che fluttuano nel social network Steam." *] (Http : //arstechnica.com/gaming/2015/12/steam-tightens-trading-security-amid-77000-monthly-account-hijackings/)
@Mehrdad: se un imbroglione che usa aimbot continua a ucciderti in un server pubblico, hai perso il cappello? Se scommetti il ​​tuo cappello in una partita, allora questo è il gioco d'azzardo e ho toccato brevemente che i giochi d'azzardo sono una specie di eccezione. Tuttavia, ottenuto il gioco specifico, per quanto ne so, non puoi effettivamente essere costretto a separarti dai tuoi cappelli in TF2, quindi se sospetti che qualcuno contro cui stai scommettendo il tuo cappello stia barando, non puoi dare il tuo cappello a loro quando la partita è finita.
@Mehrdad: nella maggior parte dei giochi, giocare con gli imbroglioni rovinerebbe la tua esperienza di gioco e, se hai una brutta esperienza in un gioco, diventi meno propenso a spendere soldi in esso. Ecco perché prevenire la frode è importante per gli sviluppatori di giochi. Ma mentre gli imbroglioni che usano gli aimbot probabilmente rovinerebbero la tua giornata, in realtà non ti renderebbe finanziariamente più povero. Credo che questo sia il motivo per cui la maggior parte dei giochi non deve essere progettata per eliminare completamente gli imbrogli. OTOH, i giochi d'azzardo con soldi veri ** sono generalmente progettati per eliminare la possibilità di imbrogliare dal lato del cliente e i giochi competitivi di valore vengono solitamente giocati di persona.
Questa risposta è una sciocchezza: dicendo "Fidarsi del client" ha colpito il pixel 1056 entro il 1723 ", si sta ammettendo una preoccupazione per l'integrità del messaggio. E l'integrità è una delle proprietà che la sicurezza mira a fornire. Il fatto che l'anticheat migliori l'esperienza dell'utente non si esclude a vicenda con il fatto di avere un ambito di sicurezza
Sono in disaccordo con te. La sicurezza di un sistema ha poco a che fare con ciò che il sistema sta proteggendo. Ad esempio: una sicurezza del mio conto bancario terziario, che non detiene mai più di $ 100, è molto meno importante dell'integrità delle qualifiche di Starcraft World Tournament, del valore di oltre $ 1 milione di premi. Il client della banca e il client di gioco richiedono praticamente la stessa sicurezza, la vera differenza qui è che il server della banca PU verificare tutto, mentre il server di gioco non può.
Falco
2016-02-22 22:34:42 UTC
view on stackexchange narkive permalink

Primo: esistono molti giochi che utilizzano la convalida lato server al 100% e non si fidano del client. Un esempio: poker online

Semplicemente non invii il valore di nessuna carta al cliente che non può conoscere. Quindi, anche se hackera il client e legge la matrice, non c'è nulla di nascosto che possa rivelare e non può fare nessuna mossa che non potrebbe fare con il client normale.

Ma molti giochi moderni sono un molto più complesso. Uno sparatutto in prima persona per esempio. Qui non è così facile decidere se e quanto è bravo vedere un altro giocatore. Potresti dire che è facile, se c'è un muro tra voi due non lo potete vedere. E per questi semplici casi i giochi moderni possono già eliminare il giocatore nemico dal tuo punto di vista, quindi non otterrai la posizione in cui si trova. Ma non appena il nemico è in un angolo buio e solo appena visibile, il gioco deve ancora inviarti la sua posizione, quindi 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 colori scuri nell'ombra è molto complessa per i giochi con una buona grafica, quindi strappare l'immagine sul server e inviarti solo l'immagine finale renderebbe molto più difficile imbrogliare, ma anche richiederebbe un sacco di risorse sul server e avrebbe il grave problema del LAG.

RITARDO o LAG: il secondo grande problema dei giochi in streaming è il ritardo. Se muovi il mouse, puoi guardarti intorno molto velocemente in uno sparatutto in prima persona. Ma l'invio di questo comando su Internet e la ricezione del risultato da mostrare sullo schermo richiederà più tempo rispetto al rendering in locale. Se disponi di una connessione Internet veloce, puoi essere fortunato 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 che lentamente giocherà orribilmente lento e quasi non sarà affatto divertente. Al contrario, molti giochi moderni applicano un sacco di tecniche come la previsione delle mosse, la distorsione temporale e altre in modo da poter ridurre il ritardo percepito degli altri giocatori facendo in modo che il gioco calcoli molta logica locale e prevedendo le mosse degli altri giocatori, quindi il gioco sembra più fluido di quanto non sia in realtà.

Hardware / barare fuori dagli schemi. E ci sono sempre un sacco di opportunità per imbrogliare che non possono essere facilmente sconfitte dal software. E il doping? (una cosa reale negli eSport) O lasciare che un robot giochi per te. O avere una webcam sulle spalle, che individua i nemici sullo schermo e ti dice dove si trovano? O anche cose come attacchi DDoS da una botnet alla 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 del gioco, misurare i tuoi movimenti, raccogliere statistiche e dati sul tuo comportamento e confrontarli con altri giocatori e determinati limiti e provare a decidere se stai giocando in modo anomalo o se stai infrangendo qualche regola ... ma niente di questo è perfetto.

Nota a margine: il suono stereo richiede una posizione 3D della sorgente. Per riprodurre il suono di un passo, il tuo cliente deve sapere esattamente da dove proviene il passo; potresti potenzialmente convertirlo in un wallhack.
buon punto! i giochi moderni offrono solo audio e immagini troppo buoni per renderlo fattibile ;-)
La compensazione della latenza +1 per creare un'esperienza di gioco fluida è forse la ragione principale per cui il server ha fiducia nel client. In questo modo, in un gioco come un FPS in cui hai la testa di qualcuno nel mirino e gli spari, il server accetta che hai un colpo alla testa piuttosto che dire al cliente "scusa, la testa di quella persona era lì 200 ms fa, quindi ti sei perso". Il costo del rendering sul server può essere superato, ma la latenza no.
+1 L'unica risposta che definisce il vero problema. Vorrei sottolineare tuttavia che _ è_ possibile con un hardware server davvero buono controllare molti più casi di frode in giochi come CS, ma il costo renderebbe quasi impossibile l'esecuzione di server gratuiti.
N. Nowak
2016-02-22 13:03:52 UTC
view on stackexchange narkive permalink

In tal caso, perché queste società non offrono la verifica lato server per i videogiochi, ma continuano piuttosto a insistere nel fidarsi del cliente?

Lo fanno!

La maggior parte dei giochi online ogni tanto controlla la coerenza.

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

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

Prendi qualsiasi tiratore per esempio:

Il tuo PC da gioco medio inizia a lottare se ci sono troppe granate / nemici sullo schermo. Questo carico viene distribuito su 20 computer.

Ora immagina di dover calcolare tutto quello di nuovo su un server e controllare ogni mossa , ogni colpo di mouse, ogni innesco di fuoco per schemi di imbroglio. In tempo reale.

A causa di tutto ciò è molto più economico o addirittura possibile controllare ogni tanto se potevi davvero fare un salto così lontano, spostarlo rapidamente o tenere il mouse esattamente sui nemici testa per 3 secondi prima che tu possa persino vederlo dietro quel muro.

E se tutto ciò fallisce, hai ancora i rapporti della community con filmati.

Modifica:

Grazie Num Lock per averlo sottolineato:

Il ritardo non è causato dalla logica ma piuttosto dal rendering. Calcolare tutti i vettori per la luce e le animazioni è di gran lunga più grande che calcolare se qualcosa fosse nel raggio d'azione per essere colpito.

Anche se sono per lo più d'accordo, penso ancora che questo sia per metà un mito e per metà un fatto. Anche se hai ragione sul fatto che il _pc da gioco medio_ inizia a lottare con molte azioni in corso, questo di solito non è causato dalla logica del gioco in sé, ma piuttosto dal rendering di tutto (sì a una grafica carina), che (nella maggior parte dei casi) non non accade sul server. E ci sono stati giochi su larga scala (MMO per essere precisi) che gestivano _tutto_ sul server per ogni giocatore (10k +) con _every_ tick, ma il tuo PC avrebbe difficoltà se ne vedessi solo 100. (LineageII per esempio) Questi non erano così critici in termini di tempo, però.
Il motore Source, la base di codice di Valve per un buon numero di consegne, dispone di funzionalità che consentono allo sviluppatore di compensare la latenza, interpolare una previsione e verificare ogni aggiornamento inviato dal client rispetto a una soglia. Questo viene fatto per impostazione predefinita per ogni movimento e trigger pull e aiuta il gameplay sul client (i giocatori non devono prevedere quasi altrettanto lag) ma previene anche pacchetti dannosi.
Wow, le risposte alla domanda sono semplicemente terribili. Questa risposta è la risposta più vicina alla correzione _ (i server ** fanno ** la verifica lato server) _, ma il ragionamento è completamente inventato, non ha nulla a che fare con il fare "un'enorme quantità di calcoli". Se tra due pacchetti l'utente afferma di essersi mosso due volte più velocemente del solito, è perché stanno hackerando la velocità o perché il primo pacchetto è arrivato molto lentamente? E come potresti rilevare wall-hack o aimbot lato server, anche con una potenza di calcolo illimitata?
Danikov
2016-02-22 17:00:43 UTC
view on stackexchange narkive permalink

Ci sono due elementi da affrontare qui.

In primo luogo, il rilevamento dei cheat lato client è raramente l'unico elemento nella prevenzione dei cheat. Dato che è distribuito anche il software server per alcuni giochi, il software di rilevamento cheat lato server potrebbe non essere completamente distribuito con esso per evitare di esporlo a reverse engineering. Non puoi dedurre una mancanza di rilevamento dei cheat lato server dal codice del server che potresti essere in esecuzione rispetto al codice del server che potrebbero essere eseguiti internamente. Inoltre, le aziende potrebbero essere riluttanti a discutere le loro soluzioni anti-cheat per ragioni simili: l'oscurità non è una brutta cosa da avere in cima a una soluzione robusta.

Tuttavia c'è anche la necessità di imbrogliare dal lato client rilevamento dovuto al fatto che i giochi si basano sull'abilità del giocatore. Ciò significa che la frode può avvenire a molti livelli: hardware, input e software. Il software è semplicemente il più comodo e preciso, si può fare ben poco per proteggersi da un robot esperto. Per proteggerti dalle truffe basate sul software, devi avere una sorta di monitor residente sul client per avere la possibilità di rilevarlo.

Inoltre, una simulazione di gioco è complessa. Come hai giustamente affermato, poco impedisce a qualcuno di costruire un client simulato che copi correttamente tutti i protocolli che il gioco utilizza e possa generare arbitrariamente input al momento giusto per imbrogliare. Solo che farlo è un'impresa enorme; è molto più facile tentare di rompere il client esistente. Lo stesso vale per la creazione di un falso client anti-cheat. In quanto tale, la sicurezza lato client è più un caso per rendere le cose il più difficili possibile piuttosto che essere infallibili al 100%. Valve in particolare aggiorna regolarmente VAC per competere in una battaglia continua con gli sviluppatori di cheat.

Cephalopod
2016-02-24 01:50:24 UTC
view on stackexchange narkive permalink

La maggior parte delle altre risposte si concentra sugli aspetti tecnici della prevenzione dei cheat, vorrei aggiungere che VAC previene i cheat rendendoli economicamente non redditizi:

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

L'hacking richiede molti tentativi ed errori e anche se hai pieno accesso alla fonte, è necessaria una notevole quantità di lavoro per scoprire come modificare un cliente facendolo fingere che non lo fosse. E tutto questo lavoro viene messo in discussione ogni volta che il client viene aggiornato.

D'altra parte, se commetti anche il minimo errore rischi di essere bandito per sempre da tutti i server VAC.

Inoltre, non ha senso distribuire il tuo hack, poiché Valve sa anche come cercare su Google i cheat e una volta trovato il tuo hack aggiungerà una logica di rilevamento in più per trovare tutti coloro che lo usano. Questo scoraggia ancora una volta gli utenti dall'usare strumenti cheat disponibili pubblicamente.

Non sono davvero d'accordo qui. La punizione severa è la politica di Valve e non ha nulla a che fare con i cheat rilevati dal lato client. Tuttavia, rovinare il lavoro di un imbroglione con ogni aggiornamento è davvero un punto importante, dal momento che doversi impegnare molto per tenere a bada i ragazzi "script kiddies" e "ho appena provato" (teoricamente).
Cort Ammon
2016-02-23 09:45:41 UTC
view on stackexchange narkive permalink

La sfida con una sicurezza come questa è che devi fare il calcolo dove si trovano le informazioni. È necessario eseguire i calcoli anti-cheat lato client 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. Inviare tutte queste informazioni al server per eseguire l'analisi è troppo, quindi il calcolo viene inviato al client.

Questo non vuol dire che sia la fine. Molti giochi implementano sia test lato client e lato server. Alcuni test possono essere effettuati sulla base di informazioni già inviate al server. Potrebbe non essere in grado di rilevare tutti gli attacchi di velocità mentre qualcuno zig e zag, ma potrebbe catturare qualcuno che riesce a spostarsi dal punto A al punto B molto più velocemente di quanto consentano le regole del gioco.

C'è anche un intrigante opzione: 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 modello viene utilizzato in alcuni giochi distribuiti che non hanno server per mantenere i giocatori onesti. I clienti sono obbligati a impegnarsi per le azioni che hanno compiuto in passato prima che altri clienti inviino i dati correnti. Ciò impedisce a un client di riscrivere la propria cronologia.

Aron
2016-02-23 12:24:50 UTC
view on stackexchange narkive permalink

Valve esegue la VALIDAZIONE lato server per tutto.

Tutto l'input del client è perfettamente VALIDO.

Valve esegue già il controllo dei dati utente validi. Ad esempio, il client non può dire al server: "Ho sparato a Sparkles dallo spawn CT, quando era nello spawn T".

Controlla anche che quando acquisti qualcosa, non lo sei Non sto cercando di comprare quella pistola a credito. Se il server non lo facesse, l'imbroglione acquisterà AWP su colpi di pistola.

Barare è VALIDO

Il problema è che barare (su CSGO per esempio) azione perfettamente valida (i cheat che eseguono azioni non valide, come il glitch di Spawn Teleport, possono essere risolti facilmente). Il problema è che gli imbroglioni usano una varietà di metodi per inserire un input valido che è migliorato o fatto da un computer.

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

xaxxon
2016-02-24 07:53:45 UTC
view on stackexchange narkive permalink

I controlli lato server servono per assicurarsi che le operazioni richieste dal client siano legali. Fondamentalmente in modo da non provare a eseguire il doppio della velocità consentita.

I controlli lato client servono a verificare che la decisione di apportare tale modifica sia presa da un essere umano, non dal computer - ad es aimbot che rendono i comandi client legali (e quindi non rilevabili dal server) ma non sono ancora consentiti.

Inoltre, lato server puoi eseguire la post-elaborazione di grandi set di dati per cercare di determinare se il giocatore è un inganno, ma è qualcosa che dovresti considerare dopo il fatto ed è sempre una scienza imperfetta.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...