Per crittografare le comunicazioni dal nostro client (personalizzato) ai nostri server (personalizzati) il nostro schema attuale è un po 'come questo:
- Il client utilizza la chiave pubblica raggruppata A per crittografare il materiale di una chiave casuale.
- Il server della lobby lo decrittografa con la chiave privata, utilizza il materiale della chiave crittografato per configurare un canale crittografato con crittografia simmetrica.
- Il client riceve un'altra chiave pubblica B1 dal server della lobby per accedere al server di gioco 1, sul canale crittografato. (Il Game Server 2 dovrebbe avere la chiave pubblica B2 ecc., Ognuno di questi viene generato al riavvio del server)
- Il client si connette al server di gioco e segue lo stesso schema di 1-2 per proteggere le comunicazioni.
Tralasciando il modo in cui il materiale chiave viene generato e utilizzato, eventuali cambiamenti nella sicurezza lo cambiamo in:
- Il client utilizza la chiave pubblica in bundle A per crittografare il materiale chiave
- Il server della lobby decodifica con la chiave privata, utilizza il materiale della chiave crittografato per configurare un canale crittografato con crittografia simmetrica.
- Il client si connette al server di gioco e segue lo stesso schema di 1-2 per proteggere le comunicazioni con THE SAME PUBLIC KEY "A" utilizzato dalla lobby (quindi entrambi i server di lobby e di gioco utilizzano la stessa chiave privata)
In altre parole, otteniamo una maggiore sicurezza solo utilizzando la chiave pubblica in bundle per l'accesso alla lobby?
Un'alternativa finale sarebbe con un server di login separato:
- Creiamo un server di login al quale il client si connette nel modo 1-2
- Il client riceve quindi una nuova chiave simmetrica C e un numero identificativo D
- Il client si connette al server della lobby, presenta il numero D in testo normale.
- La lobby e il client ora continuano a comunicare usando la chiave (supponiamo che C sia in un db condiviso o simile) C
- Il client si connette al server di gioco, di nuovo segue 3-4 per configurare un canale crittografato.
Alcuni di questi schemi sono significativamente peggiori o migliori degli altri? Non vedo alcuna differenza enorme.