Spiegazione dell'handshake SSL con certificato

3

Ho letto molti articoli.

The client uses the information sent by the server to authenticate the server. If the server cannot be authenticated, the user is warned of the problem that an encrypted and authenticated connection cannot be established. If the server can be successfully authenticated, the client proceeds.

Tuttavia, non ho trovato una risposta alla mia domanda successiva.

Quando il browser di un cliente accede a un sito Web della banca e ottiene il certificato bancario, cosa fa il sistema operativo per approvare che si tratti della banca?

Penso che sia come segue, ma per favore correggimi se ho torto:

  1. Il banco invia certificate e public key al client. Questo certificato ha anche un hashed info che è stato crittografato con il certificato del server private key .

  2. Il client cerca se è una CA valida + decrittografa le informazioni con hash con CA public key .

  3. Il client crittografa il PK del server e ottiene anche un valore hash per vedere se entrambi gli hash sono uguali.

È giusto?

    
posta Royi Namir 23.02.2012 - 22:15
fonte

1 risposta

5

In primo luogo, un promemoria, in crittografia a chiave pubblica:

  • La chiave privata viene utilizzata per firma e decifratura / decrittografia .
  • La chiave pubblica viene utilizzata per verifica delle firme e codifica / crittografia .

Vedi il glossario delle specifiche TLS :

public key cryptography: A class of cryptographic techniques employing two-key ciphers. Messages encrypted with the public key can only be decrypted with the associated private key. Conversely, messages signed with the private key can be verified with the public key.

Nella tua domanda:

1) the bank sends it's certificate and its public key to the client.

this certificate has also a hashed info which was encrypted with servers certificate private key

Questo non ha senso (non crittografare con una chiave privata).

Il certificato del server è firmato utilizzando una chiave privata (e sì, è un hash del contenuto del certificato che è effettivamente firmato). Tuttavia, non viene fatto utilizzando la chiave privata del server (a meno che il certificato non sia autofirmato). Questo viene fatto usando le chiavi private dell'emittente del certificato (la CA): quella nominata nel certificato Issuer DN .

Il tuo browser o sistema operativo è dotato di un set predefinito di certificati CA. Queste CA sono quelle in grado di emettere un certificato, ovvero di firmare il loro contenuto con le proprie chiavi private (e inserire il proprio DN soggetto come DN dell'emittente del certificato che rilasciano). Quando si verifica un determinato certificato (a priori sconosciuto), si cerca uno dei certificati CA noti il cui DN oggetto corrisponde al DN emittente del certificato del server. Se la chiave pubblica di tale certificato CA consente di verificare il certificato del server (ad esempio se la CA ha effettivamente firmato il contenuto di tale certificato), è una corrispondenza.

(È anche possibile creare una catena quando ci sono certificati CA intermedi: il server può inviare una catena, che potrebbe essere necessario collegare ai certificati CA conosciuti.)

Non c'è nessuna crittografia in tutto questo: è tutta la firma digitale.

    
risposta data 24.02.2012 - 00:43
fonte

Leggi altre domande sui tag