Cómo asegurar la comunicación entre la aplicación del servidor y la aplicación móvil del cliente a través de HSM

0

Estamos planeando implementar HSM con nuestra aplicación. La solución que estamos pensando es:

  • Las aplicaciones móviles se comunican con la aplicación del servidor,
  • La aplicación del servidor se comunica con HSM para las autenticaciones, el cifrado y el descifrado

Los clientes son aplicaciones móviles (Android, J2ME, etc.) que se comunican con la aplicación del servidor. Todas las transacciones, desde la aplicación móvil al servidor y viceversa, deben protegerse mediante el cifrado. Actualmente, lo que hacemos es (sin HSM), en el registro del cliente generamos una clave simétrica y almacenamos permanentemente en el dispositivo móvil, el servidor y luego la conversación encriptada continúa.

Ahora, queremos emplear claves de sesión. No hay llave simétrica permanente. El flujo que hemos pensado para la generación de claves y distribuciones:

  1. En el registro del cliente, la aplicación móvil genera un par de claves público-privadas y envía el CSR (solicitud de certificado) al servidor
  2. El HSM a través del servidor firma el certificado con su clave privada raíz, envía el certificado firmado y su propio certificado al cliente. Aquí, podemos considerar el almacenamiento de claves públicas para cada cliente en HSM.
  3. Al comienzo de cada sesión, al cliente se le daría una clave de sesión envuelta en su clave pública. Estaríamos almacenando la clave de sesión temporal en HSM contra cada cliente para el cifrado de cifrado.

¿Se ve bien? ¿Alguien puede sugerir cuál es el estándar para este tipo de escenario?

    
pregunta Ravi Khakhkhar 08.03.2014 - 12:42
fuente

2 respuestas

2

No entiendo la ventaja de usar certificados aquí. Creo que una solución para su problema es entregar su aplicación móvil con la clave pública de su servidor. El cliente y el servidor pueden establecer una clave de sesión de la siguiente manera:

  1. El cliente cifra un nonce aleatorio con la clave pública del servidor.
  2. El servidor puede descifrar este nonce con su clave privada.
  3. El cliente y el servidor ahora pueden derivar una clave de sesión del nonce.

No olvide utilizar algo como un MAC para garantizar la integridad de los textos cifrados. Sin él, un atacante podría manipular el texto cifrado que podría ser descifrado a un texto plano plausible.

    
respondido por el DanielE 12.03.2014 - 22:39
fuente
2

No está claro qué es lo que realmente desea proteger mediante el uso de HSM. No solo los uses por el simple hecho de usarlos.

La generación de certificados de cliente a pedido no proporciona realmente seguridad en su flujo. Si desea garantizar la confiabilidad de un cliente, necesita tener certificados preinstalados en los clientes que pueda verificar en una conexión.

En un escenario típico, generalmente le gustaría usar HSM para proteger las claves privadas del servidor. Creo que para sus necesidades, cualquier conexión SSL entre el cliente y el servidor, con las claves privadas del servidor almacenadas en HSM servirá para este propósito. Puede agregar la autenticación del cliente y lo que no, según sus necesidades.

No hay ninguna ventaja de seguridad en el almacenamiento de claves públicas en HSM, son claves PÚBLICAS . No hay una gran ventaja al tratar de asegurar las claves de sesión en HSM. Existen solo para una sesión.

    
respondido por el esmeagol 18.02.2015 - 22:11
fuente

Lea otras preguntas en las etiquetas