Aquí está el contexto:
Estoy usando PGP
para cifrar mensajes en una aplicación web de chat. Después de leer algunos artículos, tengo una breve idea de cómo funciona PGP y aquí es cómo lo estoy haciendo con openPGPJs :
-
Client
(navegador web) genera elpublic/private key-pairs
y envía una clave pública al servidor para almacenarlo. - El remitente usa
public key
del receptor para cifrar los datos y enviarlos. - El receptor usa su propio
private key
para descifrar el mensaje.
Como una aplicación de chat, necesito almacenar todos los mensajes y descifrarlos cuando el usuario quiera ver un mensaje antiguo. El descifrado de mensajes necesita la clave privada. Aquí el cliente es un navegador web que no puede almacenar las claves privadas por mucho tiempo ni puede mantenerlas seguras. Así que decidí guardar la clave privada en el servidor web. Ahora el cliente (navegador web) solicita al servidor la clave privada siempre que sea necesario descifrar el mensaje.
Considerando PGP como un protocolo de extremo a extremo, el almacenamiento de la clave privada en el servidor es vulnerable. mi pregunta es:
-
¿Cómo funciona el cifrado PGP para aplicaciones basadas en la web donde el cliente no puede mantener
private key
seguro y confidencial? -
¿Está bien almacenar
private key
en el servidor? - ¿Hay alguna manera mejor de hacer esto?
Gracias por cualquier sugerencia.