Domanda

Ho una piccola confusione handshake SSL tra browser e server in uno scenario tipico https web:

Quello che ho capito finora è che nel processo di handshake SSL, client (browser, in questo caso) cripta una chiave simmetrica scelto a caso con la chiave pubblica (certificato ricevuto dal server). Questo viene inviato al server, il server decifra (chiave simmetrica) con la chiave privata. Questa chiave simmetrica è ora utilizzato durante resto della sessione per cifrare / decifrare i messaggi a entrambe le estremità. Uno dei motivi principali per farlo è dato come crittografia più veloce utilizzando chiavi simmetriche.

Domande

1) Come si fa a raccogliere il browser e genera questa chiave "a caso" selezionato simmetrica?

2) gli sviluppatori di fare (o / e gli utenti del browser) hanno il controllo su questo meccanismo di generazione di chiavi simmetriche?

È stato utile?

Soluzione

Qui è una buona descrizione di come HTTPS lavori realizzazione del collegamento. Mi impegno a fornire sintesi come chiave di sessione viene acquisita da entrambe le parti (client e server), questo processo è noto come "un protocollo d'intesa chiave", ecco come funziona:

  1. Il client genera il 48 byte “pre-master segreto” valore casuale.
  2. Le pastiglie client questi byte con dati casuali per rendere l'ingresso pari a 128 byte.
  3. Il client crittografa con la chiave pubblica del server e lo invia al server.
  4. Poi chiave master è prodotto da entrambe le parti in modo seguente:

    master_secret = PRF(
       pre_master_secret, 
       "master secret", 
       ClientHello.random + ServerHello.random
    )
    
  

La PRF è la “pseudo-casuale funzione” che è anche definito nel   spec ed è abbastanza intelligente. Esso combina il segreto, l'etichetta ASCII, e   i dati di semi che gli si danno utilizzando il digitata Hash Message   Codice di autenticazione (HMAC) versioni sia MD5 e SHA-1 hash   funzioni. Metà dell'ingresso viene inviato a ciascuna funzione hash. Suo   intelligente perché è abbastanza resistente agli attacchi, anche a fronte di   debolezze in MD5 e SHA-1. Questo processo può feedback su se stessa e   iterare sempre per generare il maggior numero di byte di cui abbiamo bisogno.

     

A seguito di questa procedura, si ottiene un 48 byte “master segreto”.

Altri suggerimenti

Citando un questo grande video su video di rete, minuto 01:18:07

  

Bene, dove si fa a ottenere la casualità del computer perché il vostro   computer è un dispositivo deterministico?

     

Bene raccoglie entropie come i movimenti del mouse ictus, la chiave   movimenti di corsa e la tempistica del disco rigido, si cerca di raccogliere   tutto ciò che casualità dall'universo in un tiro in modo che possa generare chiavi casuali solo per una connessione [questa sessione] . E se questo casualità è rotto e il suo successo molte volte   negli ultimi 30 anni, allora nessuno di questi lavori. Se l'avversario può   capire che cosa il vostro casualità può essere allora possono intuire le chiavi. Quindi, usare il buon casualità.

Nota: le chiavi vengono create per sessione .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top