View Full Version : [SSL] Chiave pubblica
Salve ragazzi,
ho un dubbio riguardanti la chiave pubblica presente in un certificato :
1)Quando la CA certifica un certificato, calcola l'hash MD5 di tale certificato e poi la firma è cifrata con la sua chiave privata. Ma per calcolare questa firma, cosa prende dal certificato? Prende anche la chiave pubblica?
2) Quando il server autentica il client, usa un certificato root della CA in questione per verificare la firma nel certificato. Come mai, se è il client ad essere autenticato, oltre a questi passaggi, è richiesto a monte la cifratura di alcuni dati casuali con la sua chiave privata? Le guide dicono che serve per autenticare la chiave pubblica del client. Ma per fare questo, non basta la solita procedura di autenticazione del server, solo applicata alc client? Perchè con il client è richiesto questo ulteriore passo?
la 1) non l'ho capita :fagiano: per quanto riguarda la 2) con SSL il server è sempre autenticato (il client deve possdere il certificato della CA che ha emesso quello del server, ovviamente), quando anche il client lo è si parla di mutua autenticazione.
in ogni caso dei dati random vengono mandati sia dal client che dal server all'inizio dell'handshake ssl anche in caso la client authentication non sia richiesta.
la 1) non l'ho capita :fagiano: per quanto riguarda la 2) con SSL il server è sempre autenticato (il client deve possdere il certificato della CA che ha emesso quello del server, ovviamente), quando anche il client lo è si parla di mutua autenticazione.
in ogni caso dei dati random vengono mandati sia dal client che dal server all'inizio dell'handshake ssl anche in caso la client authentication non sia richiesta.
Spiego la prima domanda. La firma di un certificato è generata da una funzione hash (md5 ad esempio) che prende in ingresso i dati presenti nel certificato giusto? Il mio dubbio è se questa funzione hash prende in ingresso anche la chiave pubblica .
in ogni caso dei dati random vengono mandati sia dal client che dal server all'inizio dell'handshake ssl anche in caso la client authentication non sia richiesta
Mm, non capisco però a cosa servano. La firma è autenticata verificando che il certificato sia emanato da una CA fidata no? Poi viene controllato l'hash del documento, decifrandolo con la chiave pubblica della CA. IO credo sia così: nel certificato viaggiano hash in chiaro e cifrato con la chiave privata della CA. Chi verifica, decifra l'hash e lo confronta con quello in chiaro. Penso sia così..
Spiego la prima domanda. La firma di un certificato è generata da una funzione hash (md5 ad esempio) che prende in ingresso i dati presenti nel certificato giusto? Il mio dubbio è se questa funzione hash prende in ingresso anche la chiave pubblica .
Assolutamente sì, altrimenti non servirebbe a niente.
il certificato assicura il "binding" tra la chiave pubblica e i dati.
Assolutamente sì, altrimenti non servirebbe a niente.
il certificato assicura il "binding" tra la chiave pubblica e i dati.
Ok, e questo mi torna. Ma allora come mai prima di questa fase, è richiesto che il client invii dati random e la loro cifratura con chiave privata? C'è un doppio controllo sulla chiave pubblica del client?
Ok, e questo mi torna. Ma allora come mai prima di questa fase, è richiesto che il client invii dati random e la loro cifratura con chiave privata? C'è un doppio controllo sulla chiave pubblica del client?
no, penso che i dati randomici che client e server si inviano sefvano per alcuni degli algoritmi che potrebbero usare per crittografare il canale.
Non penso abbiano un significato applicativo, lo scambio della chiave di sessione si dovrebbe poter effettuare in maniera sicura anche senza.
no, penso che i dati randomici che client e server si inviano sefvano per alcuni degli algoritmi che potrebbero usare per crittografare il canale.
Non penso abbiano un significato applicativo, lo scambio della chiave di sessione si dovrebbe poter effettuare in maniera sicura anche senza.
Ok, allora mi confermi che l'autenticazione del server e del client si compone degli stessi passi?
Ok, allora mi confermi che l'autenticazione del server e del client si compone degli stessi passi?
dal punta di vista crittografico sì, ma l'autenticazione del server avviene sempre, quella del client solo se richiesta dal server durante la creazione della sessione.
2) Quando il server autentica il client, usa un certificato root della CA in questione per verificare la firma nel certificato. Come mai, se è il client ad essere autenticato, oltre a questi passaggi, è richiesto a monte la cifratura di alcuni dati casuali con la sua chiave privata? Le guide dicono che serve per autenticare la chiave pubblica del client. Ma per fare questo, non basta la solita procedura di autenticazione del server, solo applicata alc client? Perchè con il client è richiesto questo ulteriore passo?
usa il certificato ROOT della CA per verificare che il certificato sia VERO, cioè realmente emesso da quella CA. Altrimenti chiunque potrebbe far il proprio certificato mettendo come CA una nota.
usa il certificato ROOT della CA per verificare che il certificato sia VERO, cioè realmente emesso da quella CA. Altrimenti chiunque potrebbe far il proprio certificato mettendo come CA una nota.
Beh, è quello che ho detto :) Se la firma non risulta contraffatta, il certificato è preso come autentico.
dal punta di vista crittografico sì, ma l'autenticazione del server avviene sempre, quella del client solo se richiesta dal server durante la creazione della sessione.
Si ok, perfetto. Grazie dell'aiuto! :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.