¿Cuáles son las mejores prácticas de administración de claves de cifrado / descifrado?

1

Estoy desarrollando una aplicación basada en web que será empleada por numerosas organizaciones de terceros en numerosos países del mundo.

El cliente basado en navegador introducirá datos confidenciales en una base de datos de back-end compartida.

Todas las organizaciones en todos los países leerán / escribirán datos en la misma base de datos.

Deseo cifrar los datos ingresados en el navegador para que estén seguros durante el tránsito a la base de datos de back-end. p.ej. cifrado del lado del cliente.

También deseo cifrar los datos mientras estoy en reposo en mi base de datos.

Esta aplicación se desarrollará utilizando Java, Javascript (REACT.js) y Scala.

La base de datos de back-end será MongoDB.

No puedo encontrar un buen ejemplo / descripción de administración de claves, p. ej. cómo una clave se genera correctamente, distribuido, almacenado, reemplazado, eliminado y recuperado durante su vida útil.

Tengo que hacer las siguientes elecciones / decisiones: -

Sabor de cifrado, por ejemplo, TripleDES, RSA, Blowfish, Twofish, AES, etc. Tecla (s) simétrica / asimétrica y su / su longitud ¿Cómo debo distribuir de forma segura las claves a mis clientes? Cómo mantener mis claves seguras en mis servidores back-end.

Si las claves deben tener un ciclo de vida de generado, distribuido, almacenado, reemplazado, eliminado. ¿Cómo descifro los datos que se cifraron con Key0 cuando ahora estoy usando Key1 o Key2?

¿Cómo debo almacenar mis múltiples claves para que mis múltiples clientes me permitan cifrar / descifrar? Datos de cada cliente.

    
pregunta Hector 06.12.2016 - 12:14
fuente

1 respuesta

0

Esa es una pregunta muy, muy amplia. Deberías dividirlo en varias preguntas. Tal como está, llenaría un artículo.

Cifrado general

Para datos en reposo, use cifrado simétrico. De todos modos, la asimetría es demasiado lenta (la mayoría del llamado cifrado asimétrico es en realidad híbrido).

Usa AES. Debido a que es el estándar, tiene la mayoría de los ojos que lo miraron, nunca tendrá que explicar por qué eligió AES y no otra cosa, y los avances en el desempeño, etc., es poco probable que aparezcan en su aplicación de manera significativa. manera.

También, MongoDB es compatible con AES fuera de la caja.

Teclas

Sus claves DB son las cruciales. Manténgalos en un lugar seguro y guarde algunas copias de respaldo almacenadas de manera segura (es decir, encriptadas). La generación de claves es su propio tema, pero probablemente MongoDB se encarga de eso, compruébalo.

TLS

Para la comunicación, use TLS, también conocido como HTTPS. Es el estándar, todos los navegadores lo admiten y todos los servidores web lo admiten.

Certificados

Si desea utilizar certificados del lado del cliente, como lo indica su pregunta sobre la distribución de claves, consulte PKI. Eso es demasiado de un tema para poner en un campo de área de texto en SE. :-)

Eso debería hacer que comiences en la dirección correcta. Para más detalles, le aconsejo que haga más preguntas con un enfoque más estrecho.

    
respondido por el Tom 06.12.2016 - 17:11
fuente

Lea otras preguntas en las etiquetas