¿Es posible detectar cambios de clave privada SSL?

5

Me pregunto si sería posible detectar un cambio de una clave privada SSL. Si cambia la clave, entonces creo que uno debe emitir un nuevo certificado, pero se podrían emitir nuevos certificados sin cambiar la clave, ¿no?

¿O es posible conservar el certificado y cambiar la clave? Supongo que no.

Por lo que yo sé, por ejemplo. cuando un certificado expira, uno debe generar una nueva clave y con esa clave una solicitud de firma de certificado, a partir de la cual se crea un nuevo certificado.

    
pregunta that guy from over there 06.10.2013 - 19:04
fuente

4 respuestas

7

Un certificado está firmado , lo que significa que no se puede cambiar un solo bit en él sin romper la firma. Los certificados son inmutables. Cuando desee "cambiar la clave" o "cambiar las fechas de validez", necesita un nuevo certificado. Renovación es un concepto de negocio; en el nivel X.509 hay un certificado, y luego hay otro, y ambos viven independientemente el uno del otro.

Un certificado contiene un nombre y una clave pública. La misma clave pública puede aparecer en varios certificados; no hay una regla técnica que obligue a una nueva generación de pares de claves cada vez que se emita un nuevo certificado. Sin embargo, puede haber reglas legales o empresariales : se supone que una CA debe seguir su política de certificación publicada, y esa política puede exigir un nuevo par de claves para la renovación de un certificado.

Podemos notar que cuando una CA quiere "renovar" un certificado sin cambiar la clave pública, entonces puede hacerlo por sí misma: la CA ya sabe todo lo que entra en el nuevo certificado. Por lo tanto, ese tipo de renovación se puede hacer automáticamente sin necesidad de hablar con el titular del certificado. No todos los CA hacen eso.

Para cada clave pública, hay una clave privada correspondiente. La clave privada, formalmente, es el conocimiento de los elementos matemáticos que permiten ejecutar las "operaciones de clave privada" (generación de firmas, descifrado asimétrico). Matemáticamente, este conocimiento puede ser codificado de varias maneras. En RSA, la clave pública es un par de grandes enteros:

  • el módulo n
  • el exponente público e

El módulo es un producto de dos enteros primos grandes p y q . La clave privada es, en realidad, el conocimiento de p y q . Sin embargo, en la práctica, la clave privada se codifica como varios enteros grandes:

  • el módulo n
  • el exponente público e
  • p
  • q
  • el exponente privado d
  • d p = d mod p-1
  • d q = d mod q-1
  • 1 / q mod p

El "exponente privado" es un valor d tal que e · d = 1 módulo tanto p-1 como q -1 . Sucede que hay varios (en realidad, infinitos) valores posibles para d , para una clave pública determinada (n, e) . Esto es lo que otros han señalado: puede tener "varias" claves privadas para la misma clave pública. Sin embargo, puedo argumentar que todas estas claves privadas son de hecho varias representaciones de una única clave privada "verdadera", que es el conocimiento de p y q . Todas estas llamadas claves privadas computarán las mismas cosas para las mismas entradas y producirán las mismas salidas. En realidad, solo hay una clave privada.

(Matemáticamente, buscando valores equivalentes para dp y dq se ha empleado para obtener algunos El rendimiento en algunas arquitecturas de bajo consumo, como las tarjetas inteligentes, es que hacer que dp sea un poco más largo puede implicar una mejora en el rendimiento si el valor más largo tiene un peso Hamming menor. )

Por lo tanto, diría que puede olvidar esta noción de "cambiar la clave privada sin cambiar la clave pública". Solo agrega confusión.

Finalmente, la clave pública de un servidor SSL está en el certificado del servidor, que es público y se envía al cliente. Si el cliente recuerda el último certificado utilizado por un servidor determinado, entonces puede informar cuándo se cambió ese certificado y qué ha cambiado exactamente. En particular, si la clave pública es la misma que la anterior u otra.

Hay un complemento de Firefox para eso.

Tenga en cuenta que los certificados que cambian son una ocurrencia normal en la Web, no solo para renovaciones (a CA, que vende certificados les gusta mucho cuando pueden vender más certificados, y ese es un controlador principal para los cortos plazos de vida de los certificados de servidores existentes ), pero también para múltiples interfaces: cuando un servidor está alojado en varias máquinas con equilibrio de carga, cada máquina puede tener su propio certificado, distinto de los certificados de otras interfaces.

    
respondido por el Tom Leek 07.10.2013 - 21:47
fuente
2

Vamos a tratar de desglosar esto. La forma en que has preguntado esto ha creado varias preguntas:

Primero, si cambia la clave privada, debe emitir un nuevo certificado. Se genera un certificado al firmar una solicitud de firma de certificado. Una solicitud de firma de certificado contiene la clave pública del solicitante. Dado que la clave pública y la clave privada están relacionadas matemáticamente y el certificado es, en su forma más básica, la firma de la parte de la clave pública de ese sistema, el cambio de la clave privada requerirá un cambio del certificado.

Por lo tanto, no es posible conservar el certificado y cambiar la clave. Sin embargo, usted tiene algunas preguntas más allí. Aquí está el siguiente que veo:

"¿Debo generar un nuevo par de claves para realizar una solicitud de firma de certificado?" La respuesta a esta pregunta es "No." Si bien muchas personas tomarán la CSR como una oportunidad para cambiar la clave pública / privada, no es un requisito. ¡Puede generar fácilmente una nueva CSR con la misma clave y hacerla firmar por un nuevo período de tiempo o incluso por un nuevo proveedor de confianza!

Por último, tu primera pregunta. "¿Es posible detectar el cambio de una clave privada SSL?" La respuesta es sí. Cuando la clave pública cambia, se le garantiza que la clave privada cambió. Recuerde que el certificado contiene una copia firmada de la clave pública. Como este es el caso, puede verificar fácilmente si la clave pública del certificado actual coincide con la clave pública anterior. Si no coinciden, la clave privada ha cambiado.

Espero que esto ayude!

    
respondido por el David Hoelzer 06.10.2013 - 22:36
fuente
2

No, no siempre.

Pero es muy improbable que alguien siga el proceso a continuación, a menos que subvertir las condiciones previas de su aplicación fuera más importante para mantener la seguridad de su par de claves:

  1. Crea un par de claves RSA.
  2. Elija un valor aleatorio M > 1
  3. Multiplica el exponente privado (a / k / una clave privada) por M * Phi (N) donde Phi (N) es Función totient de Euler *.
  4. Ahora tiene dos claves privadas que generan la misma clave pública.

Vea esto pregunta / respuesta sobre intercambio de pila de cifrado para información más detallada; como tener dos claves para compartir exponentes privados relacionados es profundamente inseguro.

* Creo. He olvidado la mayoría de las matemáticas avanzadas que una vez conocí.

    
respondido por el LateralFractal 07.10.2013 - 00:31
fuente
0

Como regla general, sí. Cambiar la clave privada significa cambiar la clave pública, lo que significa emitir un nuevo certificado. Usted puede obtener un nuevo certificado con la misma clave pública que antes, pero puede comparar fácilmente el certificado antiguo y el nuevo para ver si la clave es la misma.

No, no puede conservar el mismo certificado mientras cambia la clave. Dado que la clave pública está incorporada en el certificado, una clave diferente significa un certificado diferente. Sería como intentar cambiar el número de su pasaporte manteniendo el mismo pasaporte.

@LateralFractal tiene razón en que es posible crear dos claves privadas RSA que comparten la misma clave pública, pero como regla, esto no sucede. Tendría que hacer los cálculos usted mismo, ya que ninguna biblioteca criptográfica implementa esta función.

    
respondido por el tylerl 07.10.2013 - 20:41
fuente

Lea otras preguntas en las etiquetas