Cosa significa "firmare con un certificato"? [duplicare]

2

Come parte dell'handshake SSL, il server risponde al browser con 2 cose -

  1. La chiave pubblica del server
  2. Alcuni metadati, come la versione di SSL in uso, l'algoritmo di cifratura utilizzato, ecc ...

Tutto questo è "firmato" da un certificato in modo che il browser possa verificare che gli elementi precedenti provengano dal server.

  1. Che cosa significa "firma" qui? L'intero pacchetto è crittografato sopra utilizzando la un'altra chiave privata del server, a cui la CA ha la chiave pubblica? O è solo un messaggio attaccato alla fine che dice qualcosa come "verifica con Verisign che sono legittimo"?

  2. Quando il browser riceve il pacchetto sopra e verifica il certificato, genera una chiave simmetrica che invia al server. Tutte le ulteriori comunicazioni avverranno utilizzando questa chiave simmetrica. Qual è questa chiave? È ancora una volta una coppia di chiavi pubblica / privata di nuova generazione o è qualcos'altro?

Grazie!

EDIT: Ottima risposta di CBHacking sulla seconda domanda. Per approfondire la prima, ho trovato il seguente esempio di certificato che un browser potrebbe ricevere da qui .

Vedo che il certificato include la chiave pubblica del server e un messaggio con hash crittografato con la chiave privata del server in fondo. Sto indovinando il browser controlla i messaggi con hash - ma qual è il messaggio hash esattamente? E qual è il blob dopo --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-----
    
posta user2490003 11.10.2015 - 00:20
fonte

1 risposta

3

Tecnicamente, è improprio dire che i dati sono "firmati con il certificato", ma è abbastanza vicino. Le firme digitali vengono create utilizzando una chiave privata . Un certificato contiene una corrispondente chiave pubblica che può essere utilizzata per verificare che la firma sia valida. Fondamentalmente, la firma dice "qualcuno che conosce una chiave privata ha verificato che questi dati sono come vogliono" e il certificato dice "questa firma è stata fatta da Server XYZ in modo che significhi Server XYZ conosce la chiave privata che corrisponde alla chiave pubblica in questo certificato. "

I certificati contengono una serie di dati, come hai mostrato nella tua modifica. I pezzi più importanti sono questi:

  • Il tasto pubblico dell'oggetto . Questa è una parte chiave asimmetrica che può essere utilizzata per crittografare elementi che invii al oggetto (server, in questo caso), o per verificare elementi che l'oggetto ha firmato.
  • Il Nome soggetto . Questo identifica l'oggetto (per host / nome di dominio, in questo caso).
  • La firma , solitamente proveniente da un'autorità di certificazione ( CA ). È fatto prendendo un hash crittografico dei dati del certificato (oltre alla firma, ovviamente) e firmando quell'hash con la chiave privata della CA. Questo dice al lettore del certificato "I, l'autorità di certificazione, garantire che questo Oggetto usi questa Chiave Pubblica, e puoi verificarlo controllando che questa Firma si verifichi con la mia chiave pubblica." I browser (e altri programmi) hanno un elenco precaricato di certificati CA (che includono le chiavi pubbliche) di cui si fidano. A proposito, l'esempio di certificato che hai aggiunto ha una firma basata su MD5, il che significa che non può essere considerato affidabile. MD5 è considerato danneggiato a fini di firma.

Per rispondere alla domanda modificata, quel blob -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- di Base64 è il certificato effettivo. I dati sopra sono estratti dal blob e decodificati.

Per la seconda domanda, la chiave di crittografia di massa è una chiave simmetrica (come hai detto tu), quindi non può essere una coppia di chiavi pubblica / privata, perché sono asimmetriche tasti (uno è utilizzato per la crittografia, l'altro per la decrittografia). La chiave simmetrica è utilizzata per algoritmi come AES, 3DES o RC4 (per favore non usare nessuno dei due in TLS!). Questi algoritmi sono molto, molto più veloci delle funzioni crittografiche asimmetriche come RSA. La chiave simmetrica può essere comunicata utilizzando la crittografia asimmetrica, poiché la chiave stessa non è troppo grande, ma tutte le comunicazioni future devono utilizzare la chiave simmetrica o richiedere troppo tempo.

    
risposta data 11.10.2015 - 00:47
fonte

Leggi altre domande sui tag