Penso che stai sottovalutando il valore di contattare qualcuno con cui non hai mai parlato prima e stai sopravvalutando la complessità di un sistema a chiave pubblica.
Ogni volta che vuoi contattare qualcuno di nuovo utilizzando la crittografia simmetrica, devi " dirgli [la chiave condivisa] di persona, leggerlo per telefono, utilizzare One Time Secret ," ecc. Devi contattare la persona al telefono o di persona prima di poterli contattare online, il che sembra mettere seriamente in dubbio l'utilità della comunicazione crittografata. Per la crittografia a chiave pubblica, le chiavi possono essere pubblicate online in un repository pubblico (o, meglio ancora, molti repository online), eliminando questo svantaggio. (Analogamente, considera un mondo in cui è impossibile costruire un elenco telefonico pubblico o passare un numero di telefono ad un amico: per chiamare qualcuno, devi prima incontrarli di persona per aggiungerli alla tua rubrica privata.)
Si noti che, quando si utilizza la chiave crittografica a chiave pubblica, per collegare una chiave a un'identità personale, è ancora necessaria la comunicazione fuori banda (ad esempio, le parti che firmano le chiavi), ma il vantaggio principale è che è possibile creare un rete pubblica di fiducia. Se Alice vuole inviare un messaggio a Bob, può ispezionare il lavoro per dozzine di altri che hanno già incontrato Bob di persona. Non è necessario che lei chiami Bob al telefono prima di inviare le e-mail, perché ha accesso alla sua chiave pubblica e ha accesso a molti attestati crittografici pubblici sulla validità dell'abbinamento { key, identity }
trovato per Bob. (Si spera che alcune di queste attestazioni provengano da qualcuno di cui si fida, o qualcuno di cui si fida di qualcuno di cui si fida.)
Dici questo:
Symmetric encryption therefore is... simpler than asymmetric – one key instead of four for Alice and Bob.
Ma il numero di chiavi effettive non è strettamente pertinente: dovremmo invece considerare il numero di chiavi necessarie per ciascuna parte.
Ogni parte nella crittografia a chiave pubblica deve gestire
- la propria chiave privata,
- la propria chiave pubblica e
- una chiave pubblica per ogni persona che desidera contattare.
Supponiamo che ci siano n
di persone che comunicano tra loro. Nel tuo immaginario sistema simmetrico, il numero di chiavi detenute da ciascuna parte è n-1
(una chiave per ogni altra persona). In un sistema asimmetrico, il numero di chiavi detenute da ciascuna parte è (n-1)+2 => n+1
(una chiave per ogni altra persona, più la propria coppia di chiavi). Supponendo un numero elevato di partecipanti n
, questa non è una differenza significativa. (In termini ammortizzati, sono entrambi O(n)
.)