Cifrado del lado del cliente usando una clave pública

3

Mi situación:

  1. La contraseña de inicio de sesión de una solicitud POST se deja en la memoria del navegador en texto claro siempre que no se borre la memoria caché (manualmente / cierre del navegador).

  2. La conexión es HTTPS.

Posible solución:

  1. Genere una clave pública y una clave privada en el servidor para cada solicitud de inicio de sesión.
  2. Enviar una clave pública al navegador.
  3. Use JavaScript para cifrar la contraseña con la clave pública y enviarla al servidor.
  4. Descifre utilizando la clave privada y valide.
  5. Eliminar claves después de iniciar sesión.

Mi pregunta es, ¿es esto factible? ¿Pros y contras? ¿Hay alguna consideración de seguridad vs. rendimiento?

He repasado algunas preguntas como:

  1. Hashing lado del cliente
  2. Webcrypto
  3. javascript crypto

El primero realmente no responde a mi pregunta, ya que sugiero generar un nuevo par de claves en cada solicitud (lo que, sinceramente, es mi mayor preocupación en cuanto a la viabilidad y el rendimiento). Los otros dos enlaces parecen sugerir que javascript crypto es básicamente inútil mientras tengas una conexión HTTPS. ¿Pensamientos?

    
pregunta user2300868 22.04.2016 - 22:57
fuente

1 respuesta

1

Generar otra clave público-privada sería una exageración para este senario.

Si estás realmente preocupado por el malware que lee la memoria caché del navegador, puedes indicar al navegador que no guarde nada en la memoria caché.

<meta http-equiv=”Cache-Control” content=”no-cache” />
<meta http-equiv=”Cache-Control” content=”no-store” />

Si le preocupa que alguien esté leyendo la memoria para encontrar el texto simple del nombre de usuario y / o la contraseña, entonces puede implementar una solución similar a la definida en el senario # 2 aquí ( enlace )

Tenga en cuenta que tiene que desplazarse un poco hacia abajo en esa página para ver el contenido, hay un anuncio gigante que aparece primero.

    
respondido por el Daisetsu 23.04.2016 - 19:43
fuente

Lea otras preguntas en las etiquetas