Collegamento tra suite di crittografia e chiave del certificato

3

Sto cercando di capire il protocollo SSL / TLS e sono perso su un punto specifico.

Qual è il collegamento tra la chiave del server pubblico (ad esempio: "EC 256 bit" o "RSA 2048 bit") e le suite di crittografia?

Questo post fornisce una risposta: certificati SSL e corrispondenza delle suite di crittografia ma quando provo ad analizzare le suite di crittografia per link , c'è qualcosa di illogico per me. wikipedia.org ha una chiave EC a 256 bit e TLS_RSA_WITH_AES_128_CBC_SHA è una suite di crittografia accettata. Secondo questo post certificati SSL e corrispondenza delle suite di crittografia (se capisco correttamente) non dovrebbe essere possibile perché

" Per suite di crittografia TLS_RSA_ *, lo scambio di chiavi utilizza la crittografia di un valore casuale scelto dal client con la chiave pubblica RSA del server, pertanto la chiave pubblica del server deve essere di tipo RSA e deve essere appropriata per la crittografia (il certificato del server non deve includere una chiave Estensione di utilizzo che indica "solo firma"). "

Quindi, perché possiamo usare TLS_RSA_WITH_AES_128_CBC_SHA su wikipedia?

    
posta Secu Noob 09.08.2016 - 22:45
fonte

3 risposte

1

wikipedia.org has an EC 256 bits key and TLS_RSA_WITH_AES_128_CBC_SHA is an accepted cipher suite. According to this post SSL certificates and cipher suites correspondence (if I understand it correctly) it should not be possible

In realtà wikipedia.org ha certificati ECDSA e RSA e li usa in base a quali codici il client offre. Quando il client supporta i codici ECDSA ottieni il certificato EC256:

 $ openssl s_client -connect www.wikipedia.org:443 -cipher 'ECDSA' |\
     openssl x509 -text -noout
 ...
    Subject Public Key Info:
        Public Key Algorithm: id-ecPublicKey
            Public-Key: (256 bit)

Se invece stai applicando i codici con l'autenticazione RSA ottieni un certificato diverso che utilizza una chiave RSA 2048:

 $ openssl s_client -connect www.wikipedia.org:443 -cipher 'RSA' |\
     openssl x509 -text -noout
 ...
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (2048 bit)

Tale configurazione non è infrequente dal momento che ECDSA offre prestazioni migliori con la stessa sicurezza ma non tutti i client supportano ancora ECDSA. Una configurazione con certificati doppi non è supportata da tutti i server Web, ma hai supporto in server ampiamente usati come nginx e < a href="https://www.tbs-certificates.co.uk/FAQ/en/apache-dual-rsa-ecc.html"> apache .

    
risposta data 10.08.2016 - 04:48
fonte
2

Il TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite utilizza RSA sia per l'autenticazione che per lo scambio di chiavi. La lunghezza della chiave non è specificata, ma lo standard corrente è le chiavi RSA a 2048 bit, quindi è probabile che ciò sia usato in questo caso.

Per altri ciphersuites, potresti vedere componenti che distinguono tra l'algoritmo di scambio di chiavi e l'algoritmo di autenticazione. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 sarebbe un esempio di questo, dove ECDHE (Elliptic Curve Diffe Hellman Ephemeral) è l'algoritmo di scambio chiave, ma la chiave del certificato è per l'Algoritmo di firma digitale a curva ellittica.

Quindi, se il ciphersuite utilizzato per la tua sessione TLS era TLS_RSA_WITH_AES_128_CBC_SHA , era per un certificato RSA, non un certificato ECDSA. Avresti avuto bisogno di usare una ciphersuite diversa in quel caso.

    
risposta data 09.08.2016 - 23:46
fonte
1

Un commento troppo lungo per postare qui.

L'ho appena fatto, quindi non sono sicuro di ciò a cui ti riferisci:

$ openssl s_client -connect www.wikipedia.org:443

---                                                                                                                        │ SSL handshake has read 3278 bytes and written 441 bytes             

│In [12]: (1072759 + 626961)*8

--- │ New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-GCM-SHA256
│Out[12]: 13597760 Server public key is 256 bit
│ Secure Renegotiation IS supported
│In [13]: from marathon_test Compression: NONE
│marathon_test Expansion: NONE
│ No ALPN negotiated
│In [13]: SSL-Session:

Ricordare che il server può pubblicizzare la compatibilità con diversi protocolli (come RSA che si evidenzia). Il protocollo concordato è uno dei tanti supportati sia dal client che dal server.

    
risposta data 09.08.2016 - 23:49
fonte

Leggi altre domande sui tag