Garantire che gli hiscores inviati non siano falsi

1

Ho un piccolo gioco che mi piacerebbe tenere traccia degli hiscores globali. La base è semplice: nome utente e punteggio vengono inviati a un server per la memorizzazione e il polling successivo. Tuttavia, come faccio a garantire che questi punteggi non siano falsi?

Ovviamente, solo accettare un utente + punteggio cieco consentirà alle persone di telnet nel punteggio desiderato. Per combattere questo, ho pensato due approcci:

  • Checksumming - Oltre al punteggio e al nome utente, l'applicazione invia un checksum dei due utilizzando un algoritmo oscuro e salt. Se lo stesso checksum non viene sommato, il server lo rifiuterà. Tuttavia, quanto è facile da decodificare il checksum utilizzato, considerando che si tratta di un'applicazione Android?

  • Invio dell'intero gioco - Oltre al punteggio utente +, vengono inviati anche i passaggi necessari per raggiungere il punteggio. Il server emula quindi il gioco per vedere se i passaggi generano lo stesso punteggio e, in caso contrario, lo respinge. Lo considero il più sicuro, ma per alcuni tipi di giochi questo può essere molto difficile da fare, poiché i fattori sono troppo numerosi.

C'è una via di mezzo? Ci sono altri metodi da prendere in considerazione? Non è che questo sia di vitale importanza per la sicurezza nazionale o altro, ma preferirei che gli utenti non rimangano con "HackedYourGame: 999999999 punti" in cima alla lista.

    
posta Jarmund 13.07.2014 - 18:19
fonte

1 risposta

1

Ricorda innanzitutto che tutto può essere rotto dando abbastanza accesso. Puoi renderlo solo costoso.

Puoi assicurarti che il protocollo on-wire non possa essere violato. È possibile crittografarlo con una password monouso (dal server) in modo che il semplice spionaggio del wire visualizzi solo parole senza senso, che cambiano ogni volta. E puoi includere l'installazione o i dati specifici dell'utente in modo che una semplice riproduzione non funzioni. Puoi anche includere statistiche specifiche del gioco (diverse dal punteggio più alto), solo per interesse e alzare ulteriormente il tiro.

Una volta raggiunto il punto in cui solo i disassemblatori e i reverse engineering possono fare progressi, sei nel vero cuore duro. Puoi ancora rendere la vita difficile distribuendo parti dei tuoi algoritmi nel tempo (mentre il gioco avanza) e lo spazio (bit di codice dappertutto).

Ma tieni presente che quello che sembra un punteggio elevato impossibile potrebbe in realtà essere un bug o un trucco nel tuo software. Nessun punto a guardia del protocollo se il gioco stesso può essere violato.

    
risposta data 14.07.2014 - 17:15
fonte

Leggi altre domande sui tag