La memorizzazione di un segreto nel client può essere considerata una sicurezza "abbastanza buona"?

1

Ho trascorso la maggior parte delle 2 settimane a guardare una soluzione per garantire il mio gioco. È un gioco per Android / iOS che ha il proprio server / database.

Finora, l'unica sicurezza che ho sono le password salt + hash. Ma chiunque può chiamare la mia API.

Quindi volevo cambiarlo, una soluzione che ho trovato è molto semplice fare hash alla mia query quando si chiama la mia API usando un segreto che è memorizzato sia nel client che nel server. Ovviamente questo significa che se qualcuno decompila la mia app, può accedere alla mia API.

Nel peggiore dei casi, possono darsi una versione premium gratuita del mio gioco ($ 4) e aumentare il proprio rank (che vedrei, e rimuovere solo l'utente). Sono d'accordo, sarebbe un problema se potessero farlo per qualsiasi utente, ma ciò dovrebbe essere impossibile.

Secondo me, la soluzione va bene per questo modello di minaccia, se vogliono affrontare tutti questi problemi solo per risparmiare $ 4, mi va bene.

Qualcuno con più esperienza vede un errore nel mio approccio? Se è abbastanza buono, qual è un buon modo per nascondere il segreto nel mio client?

Riferimento: Answer by speedplane Qui

    
posta Green_qaue 21.03.2017 - 14:14
fonte

2 risposte

1

La chiave per queste domande è avere un modello di minaccia. In un modello di minaccia, acquisisci le capacità della tua minaccia e quello che vogliono fare. Puoi quindi bilanciarlo con i tuoi costi.

Sembra che tu abbia percorso correttamente quel percorso. Hai identificato che l'autore dell'attacco potrebbe voler disassemblare il codice per ottenere un segreto condiviso. Hai identificato che il costo è di $ 4 o la possibilità che devi spendere un po 'di lavoro cancellando un account utente sul tuo server. Il saldo dipende da te.

Considera che, nel caso del DRM per console, incorporare il segreto è tutto ciò che possono fare. Sono diventati abbastanza intelligenti a riguardo. Un caso famoso fu Spiro il Drago che conteneva molti elementi di DRM. Alcuni erano facili da individuare e scoppiare immediatamente. Altri erano più sottili. Alcuni avrebbero appena impostato una bandiera da qualche parte che sarebbe stata controllata 3 livelli più tardi. Se la bandiera è stata impostata, la mappa non avrebbe uova (elemento essenziale per avanzare al livello successivo).

Spiro alla fine è stato completamente distrutto. Quando finalmente l'hanno fatto, i cracker in realtà hanno ringraziato il team di sviluppo per aver dato loro una sfida così interessante. Il DRM è stato considerato un successo completo. Perché? Ci sono voluti più di 2 mesi per i cracker per ottenere finalmente tutte le fessure sul posto. Per i giochi di console, la maggior parte degli acquisti del gioco si verifica nei primi 2 mesi, quindi la comunità di pirateria non ha avuto un impatto negativo sulle vendite durante quel periodo chiave.

    
risposta data 20.06.2017 - 06:31
fonte
0

Per la parte 1 della tua domanda, non conosco gran parte degli aspetti tecnici dello sviluppo di Android, ma molti giochi sono andati online per ridurre la pirateria. Se esiste una community online (ad esempio, i tuoi punteggi più alti vengono visualizzati), puoi vietare agli utenti della tua community la pirateria dei tuoi contenuti. I giochi offline a giocatore singolo sono ancora molto appetibili e di solito si basano su una certa quantità di buona fede.

Per la seconda parte della tua domanda, relativa alla protezione dei tuoi punteggi migliori: link

    
risposta data 21.03.2017 - 14:31
fonte

Leggi altre domande sui tag