¿Cómo cambiamos la clave pública en nuestra aplicación comercial?

3

Tenemos una biblioteca comercial que utiliza una clave pública para firmar una solicitud XML que sube a nuestro servidor de licencias. La respuesta que se devuelve es XML que se ha firmado con nuestra clave privada, y la biblioteca luego usa la clave pública para verificar la respuesta.

¿Cómo manejamos la situación en la que se comprometió la clave privada (intencionalmente o por un error)? Ahora necesitamos una nueva clave pública / privada. Sin embargo, las personas no estarán dispuestas a actualizar su biblioteca para este caso.

¿Deberíamos tener una propiedad para la biblioteca que, si está configurada, se utilizará la nueva clave pública? ¿Y luego enviar eso pidiéndole a la gente que actualice esa configuración?

La biblioteca se ejecuta en Java o .NET y el extremo del servidor es .NET en Azure si eso importa (probablemente no).

    
pregunta David Thielen 02.03.2018 - 23:23
fuente

2 respuestas

1

Cuando la clave privada está comprometida, hay varias cosas que debe hacer:

  • Deje de usar la clave privada (obviamente): dado que otras partes ahora pueden hacerse pasar por usted utilizando la clave filtrada, debe perder la clave por completo.

  • Informe a otras partes (es decir, a todos sus clientes y usuarios de su biblioteca) que la clave se vio comprometida: deben dejar de usar la clave pública correspondiente. La forma en que lo haga depende de cómo propagó la clave pública en primer lugar. Si usó un KDC (Centro de distribución de claves) de cualquier forma, debe notificarlo de la fuga y posiblemente revocarlo si lo permite.

  • Genere un nuevo par y distribuya la clave pública de reemplazo a sus corresponsales y / o al KDC.

Por su pregunta, parece que tiene un problema clave distribución : da la impresión de que su clave pública se distribuye como una incrustación dentro de su biblioteca, por lo que no puede evitar fácilmente el uso de una parte pública de una clave comprometida por parte de sus clientes (además de decirles que dejen de usar su biblioteca, que probablemente sea un no-no).

Si su pregunta es anticipada a cualquier fuga (con suerte), debe rediseñar su biblioteca para adquirir la clave pública relevante por separado de ser codificada. Un esquema simple sigue estas líneas:

  • Puede distribuir la clave pública como un archivo (por ejemplo, certificado X.509 firmado) dentro del instalador de su biblioteca. El instalador debe ser responsable de instalar el archivo y la biblioteca dentro del sistema operativo invitado y configurar la biblioteca para usarlo.

  • Puede distribuir instaladores independientes para un archivo de clave pública y, de manera similar, hacer que instale (reemplace) el archivo dentro del sistema operativo invitado y configure la biblioteca para usarlo.

De esa manera, en caso de una fuga, sus clientes pueden recibir un parche no funcional, que suele ser mucho más fácil de aprobar (mucho menos riesgo para la producción) que una reinstalación completa.

Si tiene el lujo de usar un KDC, haga que su biblioteca verifique periódicamente que usa la clave pública válida en la actualidad. Los KDC generalmente pueden decirle a los clientes que la clave que están usando es válida o revocada, y también exponer la actual.

Recuerde que al filtrar su clave privada, sufrirá un golpe en la confianza de sus clientes. Ser capaz de corregir la situación de manera rápida y eficiente será fundamental para mantenerlo en su lado positivo.

    
respondido por el korrigan 03.03.2018 - 13:03
fuente
1

Opción simple: use dos claves públicas incrustadas en la biblioteca. Uno de ellos se usa día a día y el segundo está en almacenamiento en frío fuera de línea. Si el compromiso clave requiere una rotación, puede volver a conectar la clave fuera de línea. Luego actualiza la biblioteca antes del siguiente compromiso.

Opción más compleja: incrustar una clave de autoridad de certificación. Mantenlo desconectado. Además de las respuestas firmadas, incluya la clave pública (al igual que una solicitud HTTPS). Verificar la cadena de CA. (Esto no necesita ser una CA comercial, puede ejecutar su propio fácilmente).

Más complejo y más flexible: combina ambos. Dos CA, almacenamiento en frío fuera de línea en HSM / Tarjetas inteligentes para claves CA.

    
respondido por el David 03.03.2018 - 05:34
fuente

Lea otras preguntas en las etiquetas