Estoy creando un juego móvil de ritmo rápido y actualmente estoy trabajando para iniciar sesión / registrarme / conectarme. Estoy tratando de hacerlo bien para que no se arruine en el futuro.
Por ahora, he leído varios artículos sobre qué método debo usar para realizar una "sesión de usuario segura" entre el cliente y un servidor.
Mi objetivo es usar RSA solo para intercambiar la clave AES
y enviar paquetes solo con AES
Debería verse así:
Almacene la misma clave RSA pública en todos los clientes
Almacene una clave RSA privada en el servidor
El cliente envía el ' AES initialization data
' al servidor cifrado con público RSA
. El servidor descifra los datos AES
con una clave privada RSA
, almacena los datos AES
, cifra los datos AES
con los datos AES
y envía al cliente.
El cliente recibe AES
de datos encriptados con el mismo AES
de datos, los descifra y, si todo está bien, se hace un saludo, podemos enviar mensajes de forma segura utilizando AES
de datos.
Estoy usando Java y he hecho el algoritmo RSA
, verifiqué los paquetes con Wireshark, los cifré y desencripté y funcionó. Lo que no puedo terminar es el cifrado AES porque me falta algo de conocimiento.
Sé que AES
usa IV parameter
que se usa como una 'sal' en SHA
.
Básicamente, sé cómo funciona la IV, leo un poco, pero no tengo idea de cuándo y cuántas veces debo enviarla.
¿Debería generarse IV
una y otra vez con cada paquete o solo debo generar uno con un SecretAESKey
, guardarlo y usar este par para cifrar datos y descifrarlos?
Realmente aprendo rápido, así que no me juzgues porque esta pregunta puede parecerte estúpida.
¡Gracias por cualquier ayuda!