Validación del certificado [duplicado]

0

Lo siento si esto se ha preguntado antes, pero no pude encontrar una respuesta en ninguna parte. Tal vez pasé por alto algo, pero no puedo comprender cómo funciona la validación de certificados.

Esta publicación detalla cómo funciona SSL / TLS, pero cuando llega Para la validación de certificados, las cosas no son tan claras para mí.

Según tengo entendido, el objetivo de los certificados es garantizar que yo, como cliente, identifique correctamente el certificado (por ejemplo, Google, usaré Google como ejemplo a partir de ahora) y garantizar un intercambio de claves públicas.

Para simplificar las cosas, asumiré que no hay una cadena de certificados, es decir, el certificado que Google envía es un certificado raíz de confianza. Ahora, Google me envía este certificado (un flujo de bytes, llamémoslo B) que se firma con la clave privada de la CA. Al utilizar la clave pública de la CA, puedo verificar que, efectivamente, el certificado se firmó con la clave privada de la CA, por lo que se garantiza la confianza.

La pregunta que tengo es esta: ¿Es esta la secuencia de bytes (B) que Google me envía siempre la misma? ¿Envía Google lo mismo al crear una conexión segura? Si es así, ¿qué me impide tomar esto y usarlo para identificarme incorrectamente como Google? Si es único para cada solicitud, parece que Google siempre debe ponerse en contacto con la CA para cifrarla con su clave privada.

¿En qué me estoy equivocando?

    
pregunta Catalin Stefan Cernat 31.08.2016 - 00:57
fuente

2 respuestas

0

Una vez que haya validado el certificado es real y válido, puede usar la clave pública en el certificado para cifrar sus comunicaciones. Como el servidor es teóricamente la única parte con la clave privada, ellos son los únicos que pueden descifrar su mensaje. El mensaje que devuelve generalmente contiene información para configurar un canal cifrado bidireccional más permanente.

Entonces, si un atacante toma el flujo de bytes que es el certificado de Google y se lo presenta a usted, puede pensar que son Google. Sin embargo, el atacante no podrá seguir comunicándose con usted, no podrá entender su respuesta porque no tiene los medios para descifrarla.

La clave privada del servidor también se puede usar para firmar digitalmente el contenido que luego se puede verificar con su clave pública. Por lo tanto, puede estar seguro de que el contenido que recibe fue validado por un propietario del certificado (es decir, el servidor) en algún momento y para algún propósito: un atacante aún puede tomar todo el contenido firmado y presentárselo, pero no podrá para cambiar cualquier detalle o la firma no coincidirá. A menudo, el contenido firmado como este tiene fechas incluidas y / u otros métodos, como el destinatario deseado, para garantizar que se reduzca o elimine la efectividad de hacer lo anterior.

    
respondido por el Numeron 31.08.2016 - 02:16
fuente
0

Vamos a presentar algunas cosas, y también usaré Google. Google le envió su certificado en el saludo inicial de TLS. El certificado fue firmado por la Autoridad de Certificación, una parte confiable en la que todos aceptan tener valor. El certificado de Google afirma ser:

  • De la Corporación Google
  • De un dominio específico (ignorar comodines por ahora)
  • Desde una dirección específica (ignorar SNI por ahora)
  • Firmado por una parte de confianza
  • Válido entre un período determinado.
  • Alguna información adicional (DNS, extensiones y demás)

Cuando recibamos el certificado, podemos verificar la fecha, la dirección y el dominio. Si alguna de esta información no coincide con la situación actual, marque el certificado como no válido y salga. Esto nos deja con un reclamo de identidad organizacional no verificada. Por lo que sabemos, esto ni siquiera es un servidor propiedad de Google, o mejor aún, cualquier información de arriba podría haber sido falsificada. Esto es donde la cadena de confianza entra en juego.

Validación de firma

El certificado está firmado por la autoridad de certificación. Conocemos esta CA, porque tenemos su clave pública almacenada en nuestro almacén de certificados del sistema operativo. Ahora, proceda de la siguiente manera, busque el emisor del certificado (que figura en el certificado) que firmó este certificado, busque la clave pública en el almacén de claves y verifique la autenticidad del certificado. Si el certificado fue emitido por esta CA, entonces es válido, de lo contrario asumimos la manipulación y salimos.

Obviamente este es un ejemplo simplificado. En la PKI real pasa mucho más. Como respuesta a sus últimas preguntas, sí Google siempre enviará el mismo certificado, de lo contrario, lo volverían a emitir para cada solicitud. En SSL / TLS, el certificado se envía en el protocolo inicial.

Solicitud de firma

Tenemos que confiar en la CA, y para Google, para que se firme su certificado, deben demostrar que realmente son Google. Esto puede suceder de varias maneras, mediante verificación de dominio, correo electrónico o (para certificados EV) con documentos oficiales.

Si fuera a emitir un certificado por parte de alguna CA e intentara pasarlo como Google, alguien o algo notará que la reclamación no es válida y le queda un certificado autofirmado.

Issues

Este sistema no es sólido como una roca, por ejemplo; un gobierno que tenga permiso para firmar certificados podría firmar su propio certificado falso de Google, y lo aceptaríamos con gusto. Se avanza en hacer este registro público, para que podamos ver lo que sucede detrás de las puertas cerradas.

    
respondido por el Yorick de Wid 31.08.2016 - 01:42
fuente

Lea otras preguntas en las etiquetas