¿Qué significa "firmar con un certificado"? [duplicar]

2

Como parte del protocolo de enlace SSL, el servidor responde al navegador con 2 cosas:

  1. La clave pública del servidor
  2. Algunos metadatos, como la versión de SSL que se está utilizando, el algoritmo de cifrado que se está utilizando, etc ...

Todo esto está "firmado" por un certificado para que el navegador pueda verificar que los elementos anteriores provienen del servidor.

  1. ¿Qué significa "firmar" aquí? ¿Está todo el paquete anterior encriptado usando otra clave privada del servidor, para la cual la CA tiene la clave pública? ¿O es solo un mensaje añadido al final que dice algo como "verifique con Verisign que soy legítimo"?

  2. Cuando el navegador recibe el paquete anterior y verifica el certificado, genera una clave simétrica que envía al servidor. Toda otra comunicación tendrá lugar utilizando esta clave simétrica. ¿Cuál es esta clave? ¿Es esto nuevamente un par de claves público / privado recién generado, o es otra cosa?

¡Gracias!

EDITAR: gran respuesta de CBHacking en la segunda pregunta. Para detallar el primero, encontré el siguiente ejemplo de un certificado que un navegador podría recibir de aquí .

Puedo ver que el certificado incluye la clave pública del servidor y un mensaje cifrado con la clave privada del servidor en la parte inferior. Supongo que el navegador comprueba los mensajes con hash, pero ¿cuál es exactamente el mensaje que se está haciendo? ¿Y qué es el blob después de --BEGIN CERTIFICATE-- ?

    Certificate: 
        Data: 
            Version: 3 (0x2) 
            Serial Number: 1 (0x1) 
            Signature Algorithm: md5WithRSAEncryption 
            Issuer: C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root CA/[email protected] 
            Validity 
                Not Before: Nov 20 05:47:44 2001 GMT 
                Not After : Nov 20 05:47:44 2002 GMT 
            Subject: C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=www.sopac.org/[email protected] 
            Subject Public Key Info: 
                Public Key Algorithm: rsaEncryption  
                RSA Public Key: (1024 bit) 
                    Modulus (1024 bit): 
                        00:ba:54:2c:ab:88:74:aa:6b:35:a5:a9:c1:d0:5a: 
                        9b:fb:6b:b5:71:bc:ef:d3:ab:15:cc:5b:75:73:36: 
                        b8:01:d1:59:3f:c1:88:c0:33:91:04:f1:bf:1a:b4: 
                        7a:c8:39:c2:89:1f:87:0f:91:19:81:09:46:0c:86: 
                        08:d8:75:c4:6f:5a:98:4a:f9:f8:f7:38:24:fc:bd: 
                        94:24:37:ab:f1:1c:d8:91:ee:fb:1b:9f:88:ba:25: 
                        da:f6:21:7f:04:32:35:17:3d:36:1c:fb:b7:32:9e: 
                        42:af:77:b6:25:1c:59:69:af:be:00:a1:f8:b0:1a: 
                        6c:14:e2:ae:62:e7:6b:30:e9 
                    Exponent: 65537 (0x10001) 
             X509v3 extensions: 
                 X509v3 Basic Constraints: 
                     CA:FALSE 
                 Netscape Comment: 
                     OpenSSL Generated Certificate
                 X509v3 Subject Key Identifier:
                     FE:04:46:ED:A0:15:BE:C1:4B:59:03:F8:2D:0D:ED:2A:E0:ED:F9:2F 
                 X509v3 Authority Key Identifier:
                     keyid:E6:12:7C:3D:A1:02:E5:BA:1F:DA:9E:37:BE:E3:45:3E:9B:AE:E5:A6 
                     DirName:/C=FJ/ST=Fiji/L=Suva/O=SOPAC/OU=ICT/CN=SOPAC Root CA/[email protected] 
                     serial:00
        Signature Algorithm: md5WithRSAEncryption
            34:8d:fb:65:0b:85:5b:e2:44:09:f0:55:31:3b:29:2b:f4:fd: 
            aa:5f:db:b8:11:1a:c6:ab:33:67:59:c1:04:de:34:df:08:57: 
            2e:c6:60:dc:f7:d4:e2:f1:73:97:57:23:50:02:63:fc:78:96: 
            34:b3:ca:c4:1b:c5:4c:c8:16:69:bb:9c:4a:7e:00:19:48:62: 
            e2:51:ab:3a:fa:fd:88:cd:e0:9d:ef:67:50:da:fe:4b:13:c5: 
            0c:8c:fc:ad:6e:b5:ee:40:e3:fd:34:10:9f:ad:34:bd:db:06: 
            ed:09:3d:f2:a6:81:22:63:16:dc:ae:33:0c:70:fd:0a:6c:af:
            bc:5a 
    -----BEGIN CERTIFICATE----- 
    MIIDoTCCAwqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBiTELMAkGA1UEBhMCRkox 
    DTALBgNVBAgTBEZpamkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQww 
    CgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0B 
    CQEWF2FkbWluaXN0cmF0b3JAc29wYWMub3JnMB4XDTAxMTEyMDA1NDc0NFoXDTAy 
    MTEyMDA1NDc0NFowgYkxCzAJBgNVBAYTAkZKMQ0wCwYDVQQIEwRGaWppMQ0wCwYD 
    VQQHEwRTdXZhMQ4wDAYDVQQKEwVTT1BBQzEMMAoGA1UECxMDSUNUMRYwFAYDVQQD 
    Ew13d3cuc29wYWMub3JnMSYwJAYJKoZIhvcNAQkBFhdhZG1pbmlzdHJhdG9yQHNv 
    cGFjLm9yZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAulQsq4h0qms1panB 
    0Fqb+2u1cbzv06sVzFt1cza4AdFZP8GIwDORBPG/GrR6yDnCiR+HD5EZgQlGDIYI 
    2HXEb1qYSvn49zgk/L2UJDer8RzYke77G5+IuiXa9iF/BDI1Fz02HPu3Mp5Cr3e2 
    JRxZaa++AKH4sBpsFOKuYudrMOkCAwEAAaOCARUwggERMAkGA1UdEwQCMAAwLAYJ 
    YIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1Ud
    DgQWBBT+BEbtoBW+wUtZA/gtDe0q4O35LzCBtgYDVR0jBIGuMIGrgBTmEnw9oQLl 
    uh/anje+40U+m67lpqGBj6SBjDCBiTELMAkGA1UEBhMCRkoxDTALBgNVBAgTBEZp 
    amkxDTALBgNVBAcTBFN1dmExDjAMBgNVBAoTBVNPUEFDMQwwCgYDVQQLEwNJQ1Qx 
    FjAUBgNVBAMTDVNPUEFDIFJvb3QgQ0ExJjAkBgkqhkiG9w0BCQEWF2FkbWluaXN0 
    cmF0b3JAc29wYWMub3JnggEAMA0GCSqGSIb3DQEBBAUAA4GBADSN+2ULhVviRAnw 
    VTE7KSv0/apf27gRGsarM2dZwQTeNN8IVy7GYNz31OLxc5dXI1ACY/x4ljSzysQb 
    xUzIFmm7nEp+ABlIYuJRqzr6/YjN4J3vZ1Da/ksTxQyM/K1ute5A4/00EJ+tNL3b 
    Bu0JPfKmgSJjFtyuMwxw/Qpsr7xa
    -----END CERTIFICATE-----
    
pregunta user2490003 11.10.2015 - 00:20
fuente

1 respuesta

2

Técnicamente, es un nombre inapropiado decir que los datos están "firmados con el certificado", pero están lo suficientemente cerca. Las firmas digitales se crean mediante una clave privada . Un certificado contiene una clave pública correspondiente que se puede usar para verificar que la firma es válida. Básicamente, la firma dice "alguien que conoce una clave privada ha verificado que estos datos son como quieren que sean" y el certificado dice "esta firma fue hecha por Server XYZ , por lo que significa El servidor XYZ conoce la clave privada que corresponde a la clave pública en este certificado ".

Los certificados contienen una serie de datos, como mostró en su edición. Las piezas más importantes son estas:

  • La clave pública del sujeto . Esta es una parte clave asimétrica que se puede usar para cifrar las cosas que envía al asunto (servidor, en este caso), o para verificar las cosas que el sujeto ha firmado.
  • El Nombre del sujeto . Esto identifica al sujeto (por nombre de host / dominio, en este caso).
  • La Firma , generalmente de una autoridad de certificación ( CA ). Se realiza tomando un hash criptográfico de los datos del certificado (aparte de la firma, obviamente) y firmando ese hash con la clave privada de la AC. Esto le dice al lector del certificado "Yo, la autoridad de certificación, doy fe de que este Sujeto usa esta Clave Pública, y usted puede verificarla al verificar que esta Firma verifique con mi clave pública". Los navegadores (y otros programas) tienen una lista precargada de certificados de CA (que incluyen claves públicas) en las que confían. Por cierto, el ejemplo de certificado que agregó tiene una firma basada en MD5, lo que significa que no se puede confiar. MD5 se considera roto para fines de firma.

Para responder a su pregunta editada, ese -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- blob de Base64 es el certificado real. Los datos anteriores se extraen del blob y se descodifican.

Para su segunda pregunta, la clave de encriptación masiva es una clave simétrica (como usted dijo), por lo que no puede ser un par de claves pública / privada, porque son asimétricas claves (una se usa para el cifrado, la otra para el descifrado). La clave simétrica se usa para algoritmos como AES, 3DES o RC4 (¡no use ninguno de estos últimos en TLS!). Estos algoritmos son mucho, mucho más rápidos que las funciones criptográficas asimétricas como RSA. La clave simétrica se puede comunicar utilizando un cifrado asimétrico, ya que la clave en sí no es demasiado grande, pero todas las comunicaciones futuras tienen que usar la clave simétrica o tomaría demasiado tiempo.

    
respondido por el CBHacking 11.10.2015 - 00:47
fuente

Lea otras preguntas en las etiquetas