Autorizzazione sicura per giochi o servizi basati su abbonamento

2

Supponiamo che stia sviluppando un gioco desktop basato su abbonamento: il giocatore paga una quota per poter accedere a determinati livelli del gioco per un certo periodo di tempo. Ad esempio, il giocatore paga $ 1 per accedere a un livello speciale del gioco per un mese.

Ogni volta che il gioco viene caricato, invia una richiesta all'API di back-end per verificare a quali livelli può accedere il giocatore, e quindi abilita i livelli corrispondenti per il giocatore. Tuttavia, il giocatore può usare un attacco MITM (man-in-the-middle) per intercettare e modificare la risposta del server in modo da indicare al gioco che il giocatore ha accesso a tutti i livelli del gioco.

Come dovrebbe essere implementata la procedura di autorizzazione in questa situazione per evitare che il giocatore riceva accesso non autorizzato ai livelli?

Assumiamo due profili giocatore per due diversi scenari:

  • Scenario 1: il giocatore può annusare la rete.
  • Scenario 2: il giocatore può fiutare la rete e ha accesso al codice sorgente del gioco (non del server).
posta Racso 07.10.2018 - 02:53
fonte

2 risposte

1

È difficile impedire che un gioco venga violato. Ci sono molti se gli hobbiest là fuori che creino giochi solo per divertimento.

Direi che la soluzione migliore sarebbe avere gli asset di download del gioco necessari per il gioco da eseguire quando l'utente raggiunge quel livello. Una sorta di controllo "just in time". In questo modo non possono aggiustare il gioco semplicemente ignorando o controllando.

Un'altra cosa che puoi fare è assicurarti che la connessione vada oltre https e usi il blocco dei certificati per assicurarti di utilizzare il certificato corretto.

Lo scambio di stack di reverse engineering può essere in grado di darti ulteriori suggerimenti su come impedire l'inversione del binario (cracking / patching)

Quindi per rispondere alla domanda Scenario 1: utilizzare https con pinning del certificato Scenario 2: la sorgente non è tutto ciò che è necessario, un inversore può invertire da un binario (che è come è fatto normalmente). Evita il controllo di una singola variabile, scarica le risorse e verifica il cambio dello stack di inversione.

    
risposta data 07.10.2018 - 05:01
fonte
4

Scenario 1: the player can sniff the network.

Questo può essere prevenuto con HTTPS.
Solo, se il giocatore ha il pieno controllo del cliente, potrebbe aggiustare il cliente al fine di fornire e magari modificare le informazioni di testo in chiaro direttamente nell'applicazione (ad esempio il gioco). Ma questo non è coperto dalle tue ipotesi nello scenario 1.

Scenario 2: ... and has access to the source code of the game (not of the server).

Assicurati che il codice sorgente del client non sia sufficiente per giocare al gioco, cioè implementa parti rilevanti della logica di gioco fuori dalla portata del client: sul server. Come questo può essere fatto dipende molto da come funziona il gioco.

A parte questo puoi provare a offuscare il codice per rendere più difficile la retroingegnerizzazione, firmare digitalmente tutti i messaggi dal server in modo che un utente malintenzionato non possa falsificarli (anche se potrebbe semplicemente cambiare il codice per disabilitare il controllo della firma) ... Ma alla fine puoi renderlo solo più difficile e non impossibile. Ad esempio, i giocatori esperti possono provare a scrivere il proprio server che implementa una logica di gioco simile per non dipendere più dai server.

Questo significa che deve essere più facile e più attraente pagarti invece di provare a hackerare il gioco. Può essere d'aiuto per questo se il gioco è abbastanza economico per cominciare. O se ci sono interessanti oggetti fuori dal gioco che ne valgono la pena.

Per rendere l'hacking più difficile potrebbe essere utile avere diverse versioni del gioco con diversi tipi di protezioni in modo che gli hack "generici" coprano solo alcune delle versioni del gioco che lo rendono di nuovo più economico solo per comprare di hackerare il gioco. Oppure crea parti della comunicazione specifiche per ogni installazione di gioco, ad esempio in base all'utente dell'utente id per l'autenticazione. Un altro modo contro la diffusione degli hack generici consiste nel rilasciare regolarmente nuove versioni che interagiscono in modo diverso con il server e che richiederebbero lo sviluppo di un nuovo hack, frustrando così gli utenti che si affidano agli hack invece di pagare.

    
risposta data 07.10.2018 - 08:40
fonte

Leggi altre domande sui tag