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!