¿Cómo determinar si un certificado X.509 es una renovación de otro certificado conocido?

3

En mi aplicación, el usuario humano acepta el certificado servidor X.509, verificando la huella digital durante la primera conexión. La huella digital se almacena en el software de cliente . En las conexiones posteriores, solo ese certificado particular es aceptado por el cliente .

Si el servidor renueva su propio certificado, la huella digital naturalmente no coincide más y el usuario tiene que verificar y aceptar la nueva huella digital nuevamente.

Quiero relajar esta restricción y aceptar este certificado, y también cualquier renovación (tal vez incluso cambiar ) de la misma.

El certificado de servidor es emitido por una CA, en la que confía el software del cliente. Así que mi nuevo cheque en el lado del cliente será como:

  1. Verifique que la huella digital coincida con la registrada. Aceptar la conexión en caso afirmativo.
  2. Verifique que el certificado sea emitido por una CA de confianza. Rechazar la conexión si no.
  3. Compruebe si se trata de un certificado anterior renovado, acepte la conexión en caso afirmativo, rechace lo contrario.

Pregunta: ¿Cómo se puede implementar la última comprobación? ¿Cómo puedo saber que un certificado C2 es de hecho una renovación (o cambio de clave) de otro certificado C1?

    
pregunta Konstantin Shemyak 02.01.2015 - 11:28
fuente

3 respuestas

2

Entonces necesita que la CA o el cliente le digan que el certificado fue renovado. Puedo adivinar que hay algunas maneras de abordar esto ...

Renovación + mismo tema

Un cliente que posea el certificado antiguo y el nuevo certificado podría usar la clave privada de cada certificado y firmar el nuevo certificado, lo que demuestra que tienen conocimiento de ambas claves.

Un servidor que revoca un certificado debe marcarlo en la CRL como superseded . No estoy seguro de si tanto los RFC como el software (Microsoft FIM o AD CS) admiten varios motivos de revocación y cómo esto puede confundir su software.

Renovación + Nombre del sujeto diferente

Si una clave renovada puede cambiar el nombre del sujeto (por ejemplo, un cambio de nombre de un usuario por matrimonio) o SAN, entonces necesitará un campo personalizado en el certificado para vincular el certificado anterior. Espero que este tipo de campo esté estandarizado en un RFC en algún lugar ... ??

Si esto es compatible, entonces cuestionaría la necesidad de una PKI o CA, ya que una solución más simple podría basarse únicamente en las huellas digitales (SSH)

Theft

Si la clave anterior se revoca, se pone un poco peludo, donde un ladrón podría reemplazar el certificado antiguo por uno nuevo. Además de la lógica de revocación, necesitará lógica para solucionar una interrupción de un servidor de revocación, y quizás tenga una nueva ventana de clave que manejaría la situación en la que un ladrón roba una clave, cambia la clave de autenticación primaria y el usuario necesita comunicarse con la vieja llave "no renovada".

Microsoft tiene renovación basada en claves , donde un ladrón podría renovar y bloquee al usuario, así que no debe suponer que un certificado renovado siempre tiene más seguridad que la identidad que está utilizando actualmente.

    
respondido por el random65537 05.03.2015 - 04:59
fuente
1

Configura tu propia CA. Codifique esta CA en su aplicación. Compruebe si el certificado es emitido por esta CA. Deshazte de la verificación de huellas dactilares. Las renovaciones no son un problema en este escenario.

O: alternativamente: haga que el antiguo certificado / clave firme el nuevo certificado / clave para renovaciones. Envíe esa firma cuando necesite renovar.

    
respondido por el StackzOfZtuff 04.01.2015 - 03:10
fuente
0

No creo que esto sea seguro, me temo. Sin más interacción con el usuario, ¿cómo sabría si el nuevo certificado es válido & ¿Que no fue un ataque de hombre en el medio?

Si continúa aceptando certificados actualizados sin comprobación manual, obtendrá menos y menos seguridad con el tiempo.

Por cierto, si desea seguridad real, necesitará un control adicional que se debe realizar con bastante frecuencia y que consiste en verificar la Lista de revocación de certificados para la autoridad autorizadora. La frecuencia con la que verifique la revocación dependerá del tipo de aplicación y de la seguridad que necesite.

Consulte el RFC ( RFC5280 ) para obtener más información.

    
respondido por el Julian Knight 03.01.2015 - 00:55
fuente

Lea otras preguntas en las etiquetas