Seguridad de ejecutar openpgp.js en un navegador con la clave privada en HTML5 localStorage

16

Si tuviera que escribir una aplicación web utilizando openpgp.js ( enlace ) para crear mensajes PGP encriptados / firmados y si almacené el usuario clave privada en localStorage, ¿sería esto vulnerable a las mismas quejas sobre la criptografía de JavaScript en la página web de Matasano ( enlace )?

Por lo que puedo decir, el resumen de puntos principales de Matasano es:

  • "La entrega segura de Javascript a los navegadores es un problema del huevo de gallina". (Esto podría solucionarse mediante el uso de HTTPS)
  • JavaScript no es adecuado para la criptografía
  • Los navegadores son demasiado complejos para la criptografía, ya que tienen el potencial de contener múltiples vectores de ataque.

Si localStorage no es el mejor lugar para almacenar algo sensible como una clave privada, ¿cuál sería un mejor lugar?

    
pregunta Souvik Banerjee 30.06.2013 - 18:41
fuente

2 respuestas

10

HTTPS sigue siendo un requisito absoluto, y el punto principal de Matasano es que JavaScript nunca puede reemplazar a HTTPS. Un ataque MITM podría entregar una carga útil de JavaScript personalizada que podría leer cualquier secreto en el almacenamiento local, y una carga útil XSS también podría comprometer estos datos.

Matasano está equivocado con respecto a los generadores de números aleatorios en JavaScript. La mayoría de los navegadores proporcionan un generador de números aleatorios muy seguro window.crypto.getRandomValues() . Supongo que Matasano no ha leído la API de criptografía w3c para JavaScript . Esta API contiene un generador de números aleatorios que utiliza el grupo de entropía del sistema operativo.

    
respondido por el rook 30.06.2013 - 18:49
fuente
0

Si decides almacenar el secreto en localStorage, querrás asegurarte de que nunca guardes la clave de sesión de cleartext allí. No estoy familiarizado con openpgpjs, pero probablemente facilita el almacenamiento seguro de claves (supongo que es una forma de clase de llavero).

    
respondido por el Tim Lamballais 01.07.2013 - 16:55
fuente

Lea otras preguntas en las etiquetas