¿Qué es un certificado SSL que se pretende probar y cómo lo hace?

37

Si obtengo un certificado SSL de un proveedor conocido, ¿qué prueba eso de mi sitio y cómo?

Esto es lo que sé:

  • Supongamos que Alice y Bob tienen claves públicas y privadas
  • Si Alice cifra algo con la clave pública de Bob, se asegura de que solo Bob pueda descifrarlo (usando su clave privada)
  • Si Alice cifra algo con su propia clave privada, cualquiera puede descifrarlo (usando su clave pública), pero sabrán que fue cifrado por ella
  • Por lo tanto, si Alice encripta un mensaje primero con su propia clave privada, luego con la clave pública de Bob, se asegurará de que solo Bob pueda descifrarlo y que Bob sepa que el mensaje proviene de ella.

Con respecto a los certificados, esto es lo que creo que sucede (actualizado):

  • genero una solicitud de un certificado. En esa solicitud, puse mi clave pública y un montón de información sobre mí.
  • El emisor del certificado (en teoría) me revisa para asegurarse de que sepa quién soy: me habla en persona, ve mi licencia de conducir, escaneo de retina o lo que sea.
  • Si están satisfechos, el emisor del certificado codifica mi solicitud con su clave privada. Cualquiera que lo descifre con su clave pública sabe que confirma la información que contiene: está de acuerdo en que la clave pública es mía y que la información que se indica es cierta sobre mí. Este endoso cifrado es el certificado que me emiten.
  • Cuando te conectas a mi sitio a través de https, te envío el certificado.
  • Su navegador ya conoce la clave pública del emisor porque su navegador se instaló con esa información.
  • Su navegador usa la clave pública del emisor para descifrar lo que le envié. El hecho de que la clave pública del emisor funcione para descifrar demuestra que la clave privada del emisor se utilizó para cifrar y, por lo tanto, que el emisor realmente creó este certificado.
  • Dentro de la información desencriptada está mi clave pública, que ahora sabe que se ha avalado. Lo usas para cifrar algunos datos para enviarme.

¿Es eso correcto? Si no es así, ¿podría alguien presentar los pasos muy claramente?

    
pregunta Nathan Long 31.08.2011 - 16:49
fuente

3 respuestas

15

Su teoría clave: básicamente correcta, pero la autenticación generalmente se realiza cifrando un hash criptográficamente seguro de los datos en lugar de los datos en sí.

La firma de una CA en un certificado SSL debe indicar que la CA ha hecho cierta diligencia para garantizar que las credenciales del certificado coincidan con el propietario. Esa diligencia varía, pero el punto final es que dicen que el certificado que firmaron pertenece a la entidad nombrada en él.

Ver enlace

    
respondido por el Jeff Ferland 31.08.2011 - 17:02
fuente
7

Un certificado de clave pública es la combinación firmada entre una clave pública, identificadores y posiblemente otros atributos. Quienes firman este documento afirman efectivamente la autenticidad de la vinculación entre la clave pública y el identificador y estos atributos, de la misma manera que una autoridad emisora de pasaportes afirma la vinculación entre la imagen y el nombre en un pasaporte, como varias otras piezas de Información (nacionalidad, fecha de nacimiento, ...).

Primero, un par de aclaraciones sobre la terminología:

  • Estrictamente hablando, no existe tal cosa como un "certificado SSL". La mayoría de las veces, esta es una expresión corta para el "Certificado X.509 utilizado para SSL / TLS". (SSL / TLS también es capaz de usar otros tipos de certificados, como certificados OpenPGP , aunque esto es menos común). / p>

  • Su uso de "cifrado" y "descifrado" es incorrecto aquí. En criptografía de clave pública:

    • La clave privada se usa para firmar y descifrar / descifrar .
    • La clave pública se utiliza para verificar firmas y cifrar / encriptar .

    Consulte el glosario de especificación TLS :

      

    criptografía de clave pública: una clase de técnicas criptográficas que emplean cifrados de dos claves. Los mensajes cifrados con la clave pública pueden   Solo se descifra con la clave privada asociada. A la inversa,   Los mensajes firmados con la clave privada se pueden verificar con el público.   llave.

    Puede parecer que no importa esta distinción en terminología, porque estas operaciones son aproximadamente las mismas en lo que respecta a RSA (de hecho, encontrará rutinas subyacentes llamadas RSA_private_encrypt en OpenSSL), pero (a) esto no No trabaje para DSA y (b) no entender esta diferencia fundamental puede llevarlo a cometer errores en lo que respecta a su esquema de seguridad general.

    En particular, el propósito del cifrado es ocultar algo. Cuando se habla de "cifrar con una clave privada" aquí, no tiene ningún sentido ya que nadie conoce la clave pública. Además, no se requiere que la clave pública del emisor mire dentro de un certificado que este emisor haya firmado, porque todo (vea TBSCertificate structure ) está claro para que cualquiera pueda verlo de todos modos. Aquí no hay nada oculto.

    (Lo que se hace para firmar con RSA es, de hecho, más o menos la misma operación que el cifrado, pero con la clave privada, aplicada a un resumen criptográfico del mensaje a firmar, que normalmente se realiza con SHA-1 para certificados en la actualidad).

Lo que su certificado de servidor pretende probar es que la CA ha verificado de alguna manera el enlace entre su nombre de host y su solicitud de certificado (más específicamente, la clave pública en su solicitud de certificado). Como mínimo, tendría un correo electrónico con el propietario del nombre de dominio (para los certificados de dominio validados). (Consulte las distinciones entre los modos de validación aquí .)

El contenido del certificado emitido debe cumplir con RFC 3280 / RFC 5280, que define cómo los clientes deben verificar y validar el certificado. Esto definirá qué atributos se pueden usar, en particular los atributos de uso clave (extendido) por lo general, por ejemplo. "Servidor TLS".

Como resultado, su certificado de servidor X.509 se unirá:

  • Una clave pública (para la cual tiene la clave privada).
  • Un nombre de emisor (el DN del sujeto del certificado de CA).
  • Un nombre de servidor (de acuerdo con RFC 2818 Sección 3.1 o RFC 6125), en la extensión del Nombre Alternativo del Asunto o en el Nombre Común del Nombre Distinguido del Asunto.
  • Extensiones de uso.
  • Posiblemente otras extensiones (críticas o no), por ejemplo. Políticas de certificados EV.

Todo esto se encuentra en la TBSCertificate structure del certificado X.509. Luego esto la estructura se digiere con un algoritmo de hash criptográfico (por ejemplo, SHA-1) y se firma con la clave privada de la AC para formar la firma ( signatureValue en el Certificate resultante).

Cuando se usa el certificado, el cliente puede verificar esta firma (usando la clave pública de la CA que conoce, o construyendo una ruta de certificación usando múltiples certificados de CA para uno de los anclajes de confianza que conoce), verifique que los atributos de uso son compatible con el uso de SSL / TLS y verifique que el nombre de host que solicitó coincida con el nombre para el que se emitió.

    
respondido por el Bruno 16.06.2012 - 16:10
fuente
3

Debe señalarse, junto con todas las demás respuestas, que su clave privada no siempre es solo una clave que se usa para descifrar y firmar mensajes. Estas deben ser dos llaves separadas. Esto crearía 4 claves para cada persona:

Clave de cifrado pública : se utiliza para cifrar los datos que se me envían.

Clave de descifrado privada : se utiliza para descifrar los mensajes que se cifraron con mi clave de cifrado pública.

Clave de firma privada : se utiliza para firmar los mensajes que envío a otras personas.

Clave de verificación pública : se usó para verificar que, de hecho, un mensaje fue firmado por mí.

Hay algunas razones para usar claves separadas para esto. Consulte esta discusión para más detalles.

    
respondido por el Oleksi 16.06.2012 - 16:53
fuente

Lea otras preguntas en las etiquetas