Estoy creando un servicio de mensajería para una aplicación que estoy desarrollando y ahora el flujo de datos es el siguiente:
Enviar :
mensaje enviado al servidor = > mensaje cifrado según la clave pública del usuario y firmado usando clave secreta = > mensaje cifrado guardado en la base de datos
Recibir :
el servidor recibe un mensaje de la base de datos = > el servidor verifica la firma usando una clave pública y descifra el mensaje usando una clave secreta = > mensaje descifrado enviado al cliente
Todo el cifrado / descifrado en el servidor depende de que el token JWT del usuario esté autenticado.
Tengo dos preguntas principales:
-
¿Se puede cifrar en el servidor ya que la comunicación entre él y el cliente está utilizando TLS?
-
¿Deben almacenarse las claves en el servidor o en la base de datos?