descifrado de la imagen del lado del cliente Javascript, ¿esto agrega seguridad o es defectuoso?

4

Quiero almacenar copias de pasaportes de forma segura en una base de datos, la base de datos en sí misma es una base de datos MySQL normal y en un servidor web algo confiable. El usuario que posee la copia del pasaporte solo debe poder cargar su pasaporte y no verlo. El enfoque que quiero tomar consiste en los siguientes pasos.

Configuración:

  1. El administrador del sistema abre la página a través de https
  2. El administrador envía una clave pública generada al servidor y almacena la clave privada localmente (en una tarjeta inteligente o algo que no esté conectado permanentemente a la computadora)

Almacenamiento de pasaportes:

  1. El usuario abre la página a través de https
  2. El usuario selecciona la copia del pasaporte (imagen) en el navegador y la envía al servidor
  3. El servidor cifra la imagen con la clave RSA pública y la almacena en la columna de la base de datos
  4. El servidor sobrescribe cualquier copia sin cifrar en la memoria

Recuperación de pasaportes:

  1. El administrador abre la página a través de https
  2. El servidor carga la columna cifrada y envía la imagen cifrada a través de AJAX al navegador del administrador
  3. El navegador del administrador carga la clave privada de un archivo o smarcard y descifra la imagen usando la enlace biblioteca
  4. Los datos de la imagen sin cifrar se inyectan en el atributo src de una etiqueta de imagen.

(Todavía no he encontrado una buena forma de cargar la clave privada en el navegador)

Preguntas:

  • Si el servidor es pirateado y el atacante descarga la base de datos, ¿son seguras las copias del pasaporte?
  • ¿Hay una mejor manera de garantizar que las copias estén seguras?
pregunta Harry 05.05.2014 - 11:38
fuente

1 respuesta

4

SÍ puede agregar seguridad en la medida en que la clave privada no se encuentra en el servidor web. Dado que el servidor está abierto a Internet 24x7, tiene un potencial de ataque MUY grande.

Sin embargo, se asume que la PC del administrador está bien protegida & Esto puede no ser la realidad. El uso de una tienda segura extraíble, como una tarjeta inteligente, es potencialmente mejor como lo indica usted, suponiendo que la tienda se mantenga segura;)

La copia en el servidor web será tan segura como el método utilizado para cifrar los datos. Asumiendo las mejores prácticas, eso debería ser bastante bueno aunque si un atacante obtuviera toda la base de datos y si tuviera muchos miles de entradas encriptadas con la misma clave, la seguridad se debilitaría. La salada y el cifrado de varias pasadas probablemente ayuden con eso.

Sin embargo, existe una forma aún más segura y potencialmente más sencilla de proteger los datos. Sin embargo, depende de cómo estés usando la imagen. ¡Podrías simplemente no almacenar la imagen en el servidor web! En una configuración empresarial típica, mantendría un servidor de datos seguro dentro de su red (mientras que el servidor web estaría en la DMZ). El servidor de datos seguro tomaría periódicamente los datos del servidor web y eliminaría la imagen en el servidor web. Combinado con un proceso de encriptación razonable similar al descrito, pero donde la clave privada se mantuvo en la red interna, posiblemente en una tarjeta aceleradora de seguridad para la máxima seguridad, esto eliminaría la necesidad de la intervención del administrador y mantendría los datos confidenciales fuera de la vista.

    
respondido por el Julian Knight 19.05.2014 - 17:45
fuente

Lea otras preguntas en las etiquetas