Sto creando un gioco dal ritmo frenetico mobile e attualmente sto lavorando all'accesso / registrazione / connessione. Sto cercando di renderlo corretto in modo che non guasteri in futuro.
Per ora, ho letto più articoli su quale metodo dovrei usare per creare una 'sessione utente sicura' tra client e server.
Il mio obiettivo è utilizzare RSA solo per scambiare AES
key e inviare pacchetti con AES
solo
Dovrebbe apparire così:
Archivia la stessa chiave RSA pubblica su tutti i client
Archivia una chiave RSA privata sul server
Il client invia il ' AES initialization data
' al server crittografato con public RSA
. Il server decrittografa AES
dati con una chiave privata RSA
, memorizza AES
dati, crittografa AES
dati con AES
dati e restituisce al client.
Il cliente riceve AES
dati crittografati con lo stesso AES
di dati, decodifica e se tutto va bene, l'handshake è fatto, possiamo inviare messaggi in modo sicuro utilizzando AES
di dati.
Sto usando Java e ho eseguito l'algoritmo RSA
, ho controllato i pacchetti con Wireshark, crittografato e decrittografato e funziona. La cosa che non riesco a completare è la crittografia AES perché mi manca qualche conoscenza.
So che AES
usa IV parameter
che viene usato come un 'sale' in SHA
.
Fondamentalmente so come funziona IV, ne leggo alcuni, ma non ho idea di quando e quante volte dovrei inviarlo.
Dovrebbe essere generato IV
ancora e ancora con ogni pacchetto o dovrei solo generarne uno con SecretAESKey
, salvarlo e usare questa coppia per crittografare i dati e decrittografarli?
Imparo davvero in fretta quindi per favore non giudicarmi perché questa domanda potrebbe sembrarti stupida.
Grazie per l'aiuto!