Una firma digitale , come tutti gli algoritmi crittografici, non risolve i problemi, ma li sposta semplicemente.
Fai attenzione che le firme NON siano crittografate. Se qualcuno ha cercato di spiegare le firme come una sorta di crittografia, allora vai a cercarle e colpirle nei denti con una chiave inglese, ripetutamente. Di 'loro che sono indegni e sono deluso da loro. Questa spiegazione imperfetta non funziona, non ha mai funzionato e diffonde solo confusione.
In un sistema di firma, c'è un messaggio m , una chiave pubblica k p , un privato tasto k s e una firma s . L'algoritmo generazione firma calcola s da m e k s . L'algoritmo verifica firma richiede m , s e k p e restituisce "true" o "false". Quando restituisce "true", ciò significa che chiunque possiede la chiave pubblica (cioè conosce la chiave privata corrispondente) è stato coinvolto nella generazione della firma s sullo specifico messaggio m .
Il punto importante è nella proprietà della chiave: l'algoritmo di verifica della firma non ti dice "sì, questo è firmato da Bob"; ti dice solo "sì, questo è firmato da chiunque possieda quella chiave pubblica". Questo garantisce che il firmatario è davvero Bob solo se hai un modo per assicurarti che la chiave pubblica che vedi sia davvero la chiave pubblica di Bob. Se Bob ha semplicemente inviato la sua chiave pubblica insieme al messaggio firmato, sarebbe facile impersonare Bob semplicemente dicendo "ciao, io sono Bob, ecco la mia chiave pubblica, ed ecco il mio messaggio firmato". Non proverebbe assolutamente nulla. L'attacco qui è semplice, si chiama "mentire".
Mentre le firme sono utili (anzi, riducono il problema di verificare la provenienza di diversi messaggi al problema di associare una singola chiave pubblica con il suo proprietario), non garantiscono magicamente la proprietà fuori di aria sottile. È qui che entrano in gioco Autorità di certificazione . La CA è un organismo il cui compito è assicurarsi che Bob possieda davvero la sua presunta chiave pubblica; presumibilmente, la CA lo fa incontrando Bob di persona o qualche altro meccanismo di questo tipo. Quando la CA ha debitamente verificato la proprietà di Bob della sua chiave, la CA mette l'identità di Bob (il suo nome) e la sua chiave pubblica in un certificato . La CA quindi firma il certificato.
La macchina di Alice può quindi verificare la firma sul certificato, assicurandosi in tal modo che i contenuti del certificato siano realmente dalla CA attesa. A quel punto Alice ha qualche garanzia sul fatto che la chiave pubblica che vede nel certificato sia davvero la chiave di Bob, e può usarla per verificare le firme che sono state presumibilmente calcolate da Bob.
A questo punto dovresti dire: "Ma come può Alice verificare la firma sul certificato dalla CA? Dovrebbe conoscere la chiave pubblica della CA!" E, in effetti, il problema è stato spostato nuovamente alla questione della proprietà delle chiavi CA. Possiamo spostarlo ancora un'altra volta, con un'altra CA. E così via. Ma deve fermarsi da qualche parte. Quella "da qualche parte" è la CA principale . Una CA radice è una CA la cui chiave pubblica è già nota, assolutamente. Questa è la parte magica. In pratica, il computer è dotato di un sistema operativo che già include la chiave pubblica di un centinaio di CA radice, che ha creato un deal con Microsoft in base al fatto che le loro chiavi pubbliche sono intrinsecamente conosciute (e attendibili) da tutti i sistemi Windows.