Ho pensato a un modo per autenticare gli utenti in modo tale da scegliere gli utenti che utilizzano versioni di cracking del mio gioco dalle persone che lo hanno effettivamente acquistato. Mi è venuta in mente questa idea:
Il client chiede al server di login il suo bl_hash
, che viene aggiornato ogni 12 ore. (Ha bisogno di essere un intervallo di tempo più piccolo? Sto usando Threefish-512 per aggiornare i blocchi, la chiave sarebbe un output di CSPRNG.)
Il client quindi crittografa bl_hash
con l'hash della sua password (il u_hash
), questo è noto come l_hash
.
Il client invia il suo l_hash
al server dei giochi insieme al suo nome utente. Questo è packet_login
.
Il server di gioco invia i dati di% co_de ricevuti al server di login.
Il server di login decrittografa packet_login
con l_hash
e risponde al server se questo è il ragazzo che dice di essere o no.
Il server di gioco rifiuta o accetta il lettore in base a quanto ricevuto dal server di login.
Capisco che questo potrebbe essere suscettibile a un attacco man-in-the-middle per il server, ma questo probabilmente sarebbe impossibile da fare poiché i server di giochi saranno probabilmente all'interno di un data center. Sono possibili miglioramenti che posso apportare?
Grazie per il vostro tempo, e mi scuso profondamente se questo è nel sito sbagliato!