Quale ruolo giocano gli hash nella convalida dei certificati TLS / SSL?

7

Dopo aver trovato questa domanda nel Domande sulla rete calda sezione e lettura del relativo post di blog di Google , sto iniziando a diventare curioso di sapere quale ruolo svolgono queste funzioni hash nella convalida dei certificati TLS / SSL.

Avevo l'impressione che un certificato SSL fosse solo un collegamento tra un insieme di nomi di dominio e una chiave pubblica (la chiave pubblica del proprietario del sito per essere precisi), firmata crittograficamente dalla chiave privata di un'autorità di certificazione. Perché è necessaria una funzione hash per convalidarlo?

    
posta Ajedi32 16.09.2014 - 23:30
fonte

2 risposte

13

Fondamentalmente, le funzioni di hash sono una parte necessaria del processo di creazione di una firma digitale.

La maggior parte degli algoritmi di firma non sono progettati per essere in grado di firmare direttamente e / o in modo efficiente messaggi lunghi, quindi il primo passo di ogni algoritmo è di solito l'hash del messaggio firmato, riducendolo a una lunghezza fissa che il resto del messaggio l'algoritmo della firma è in grado di elaborare in modo efficace. Allo stesso modo, gli algoritmi di verifica delle firme coinvolgono l'hashing del messaggio in fase di verifica, quindi eseguono alcune serie di operazioni sulla firma per verificare se corrispondono a tale hash.

Ad esempio, con le firme RSA la firma può essere considerata come un hash dei dati firmati, "crittografata" con la chiave privata del firmatario:

Immagine da Wikimedia Commons

Il processo di verifica implica la "decodifica" della firma (utilizzando la chiave pubblica del firmatario) e il confronto dell'hash risultante con l'hash dei dati a cui si applica la firma. Nel caso dei certificati SSL, i dati sono il certificato SSL stesso.

Nota: ho scritto "crittografato" e "decrittografato" tra virgolette perché in realtà le operazioni utilizzate nell'algoritmo di firma RSA non sono esattamente le stesse utilizzate per la crittografia RSA. Sono abbastanza vicini anche se per fare un'analogia efficace qui. Con altri algoritmi di firma come ECDSA, gli algoritmi di firma e verifica sono totalmente diversi, non coinvolgono "crittografia" o qualcosa di veramente simile al processo precedente, ma il messaggio è ancora sottoposto a hash come parte del processo di firma e verifica.

Per informazioni più dettagliate sull'uso dell'hash in specifici algoritmi di firma, vedi:

Questa risposta è stata ricavata dalla lettura delle domande collegate in dave_thompson_085 's < a href="https://security.stackexchange.com/questions/67512/what-role-do-hashes-play-in-tls-ssl-certificate-validation#comment110330_67512"> commento .

    
risposta data 17.09.2014 - 16:04
fonte
2

Di solito, le firme digitali non vengono effettivamente applicate ai dati completi. Invece, i dati (nel caso del certificato x.509) vengono sottoposti a hash e solo l'hash risultante è firmato.

Se così non fosse, le firme digitali finirebbero per essere grandi almeno quanto il messaggio stesso, e firmare / verificare i file sarebbe meno efficiente.

Ciò significa, tuttavia, che se un utente malintenzionato può generare un certificato falso utilizzando la propria coppia di chiavi pubblica / privata con lo stesso hash del certificato legittimo, il certificato falsificato può superare i controlli di convalida e può essere utilizzato per eseguire un uomo -in-the-middle attack.

    
risposta data 16.09.2014 - 23:54
fonte

Leggi altre domande sui tag