Qual è il ruolo di RSA ed ECC in TLS 1.2? [duplicare]

1

Sto cercando di capire che cosa sono utilizzati RSA ed ECC nelle suite di crittografia TLS 1.2.

Prendiamo ad esempio TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 , la comunicazione tra server e client sarebbe simile a questa (riveduta in base alla risposta di seguito) -

C        S 
|<<------| 1.   [PlainText] signed certificate
|------>>| 1.1. [RSA] Authentication: encrypted message using the public key in certificate
|<<------| 1.2. [RSA] Authentication: session key to be used as "master" for DHE
|        |
|<<---->>| 2.   [ECC] Key exchange: using DHE protocol
|        |
|<<---->>| 3.   [ChaCha20+Poly1305] Encrypted data

Immagino che qualcosa in questo diagramma sia sbagliato, dove viene utilizzato RSA?

Secondo altre domande simili e la risposta seguente, RSA viene utilizzato per l'autenticazione del server.

Se ho capito bene, durante questo processo di autenticazione un ID di sessione viene creato dal server (o dal client?) e verrà utilizzato in seguito come master secret per DHE. Corretto?

Quindi, a cosa serve l'ECC? Per crittografare il processo di scambio delle chiavi?

    
posta Kof 01.07.2015 - 21:08
fonte

1 risposta

1

Stai combinando alcuni componenti. TLS / SSL è piuttosto complesso perché ci sono così tanti singoli pezzi che si adattano insieme.

La chiave pubblica fa parte del certificato e lo scambio di chiavi e l'autenticazione del server sono due fasi indipendenti che (possono) utilizzare algoritmi diversi.

Il server deve prima essere autenticato perché DH e le varianti sono vulnerabili agli attacchi MITM. Non puoi scambiare le chiavi in modo sicuro finché non sai che stai parlando con la giusta entità altrimenti tutto ciò che hai fatto è "sicuro" scambiare le chiavi con un utente malintenzionato.

Quindi il server si autenticherà firmando un messaggio utilizzando la chiave privata del server. Il messaggio, la firma e il certificato vengono inviati insieme al cliente. Il client verifica la firma per autenticare il server è chi dice di essere. Se ho intenzione di link il browser si aspetta un certificato con un nome host di example.com ma un certificato è un'informazione pubblica. Solo il server con la chiave privata può generare una firma valida

L'RSA nel tuo esempio significa che l'algoritmo nella verifica della firma digitale è RSA. L'algoritmo utilizzato sarà determinato dal tipo di chiave pubblica che il certificato contiene. Se si dispone di una coppia di chiavi ECC (ECDSA), l'autenticazione utilizzerà ECDSA. Se è una coppia di chiavi RSA, l'autenticazione utilizzerà RSA. Anche DSA è un'opzione valida, ma non sono sicuro che CA stia ancora emettendo certificati DSA.

Allo stesso tempo il browser verificherà che il certificato del sito sia stato firmato da un certificato di fiducia. Funziona all'indietro per quanto necessario fino a quando non raggiunge un certificato radice che ha già fiducia (perché è incorporato nel sistema operativo) o esaurisce la catena e segnala "il certificato non è attendibile".

Una volta che è tutto ciò che è completo, il client sa che non può essere falsificato dal MITM e sta effettivamente parlando al server in questione in modo che possa usare un protocollo di scambio chiavi come RSA, DH, DHE, ECDH o ECDHE per scambiare in modo sicuro le chiavi con il server. Sì RSA può essere utilizzato per lo scambio di chiavi e firme digitali.

DH_DSS = Key exchange using DH. Authentication using DSA.
DH_RSA = Key exchange using DH. Authentication using RSA.
ECDHE_RSA = Key Exchange using ECDHE Authentication using RSA
ECDHE_ECDSA = Key Exchange using ECDHE Authentication using ECDSA
RSA = Key Exchange and Authentication are both done using RSA
    
risposta data 01.07.2015 - 21:47
fonte

Leggi altre domande sui tag