Transferencia de clave pública entre dos aplicaciones

0

Tengo un servicio escrito en c # que utiliza cifrado asimétrico para cifrar datos, y una aplicación cliente que desencripta los datos cifrados recibidos del servicio.

¿Cómo puedo hacer las siguientes cosas?

  1. Necesito guardar la clave privada de manera segura para que nadie pueda leerla (preferiblemente en DB).
  2. Transfiera la clave pública de forma segura a la aplicación cliente.
  3. ¿Cómo puedo asegurarme de que la aplicación de cliente solo puede usar la clave y no otras aplicaciones?
pregunta alban 11.09.2014 - 16:35
fuente

2 respuestas

0

1: Hay una variedad de preguntas y respuestas aquí sobre cómo asegurar una clave privada para una aplicación / base de datos.

2: No es necesario transferir de forma segura una clave pública. Lo que supongo que está buscando es un medio seguro para transmitir un secreto compartido (vea a continuación)

3: para garantizar que solo dos nodos en particular puedan ver una comunicación, necesita algún tipo de doble cifrado. Por lo general, se usa un secreto compartido para cifrar un mensaje y luego se vuelve a cifrar con la clave privada del remitente. Esto es lo básico de cómo se crea un túnel encriptado. De esa manera, solo aquellos con el secreto compartido pueden finalmente leer el mensaje. Lea los conceptos básicos de la configuración de HTTPS y VPN para obtener sugerencias.

    
respondido por el schroeder 11.09.2014 - 20:20
fuente
1

Para el # 1, la respuesta habitual sería almacenar la clave en un HSM (módulo de seguridad de hardware). Esta es la única forma verdaderamente segura de almacenar una clave privada, ya que cualquier clave que esté simplemente almacenada en el disco duro se verá comprometida si su máquina está comprometida.

La pregunta # 2 es la que normalmente resuelve una PKI (infraestructura de clave pública). Otros han dicho que no es necesario transferir de forma segura una clave pública, pero esto no es del todo cierto; Si alguien realizara un ataque de hombre en el medio e insertara su clave pública en su lugar, entonces podrían descifrar todas las comunicaciones futuras. La clave en sí misma no es sensible y no necesita ser protegida, pero sí necesita alguna forma de asegurarse de que sea auténtica. No se requiere confidencialidad, pero sí la autenticidad.

Cuando usa una PKI, la clave pública está firmada por otra clave más arriba en la jerarquía para producir un certificado, y esta firma verifica que la clave sea auténtica. Por supuesto, entonces tiene el problema de distribuir la clave pública de la siguiente clave en la jerarquía y así sucesivamente. Por lo general, esto se resuelve distribuyendo la clave pública raíz junto con su aplicación, como una CA de confianza (autoridad de certificación), luego se puede usar para verificar la autenticidad de cualquier cadena de certificados con esta CA en su raíz.

La pregunta # 3 es de nuevo algo que se puede lograr si está utilizando un HSM para proteger sus claves.

    
respondido por el Sean Burton 06.11.2014 - 17:57
fuente

Lea otras preguntas en las etiquetas