Esistono numerosi protocolli di accordi chiave utilizzati per stabilire un segreto condiviso, ad es. Diffie-Hellman. Il vero problema è: un segreto condiviso, sì, ma con chi?
Nel mondo dei computer, l'identità è conoscenza. Vuoi condividere un segreto con Bob ma non con nessuno che si atteggia a Bob: quindi, Bob deve essere in grado di "fare qualcosa" che Charlie non può; altrimenti, non li distinguerai in modo affidabile. Tutti hanno gli stessi computer, quindi "essere in grado di fare qualcosa" equivale a "conoscere alcune informazioni riservate".
Con SSL, vengono utilizzati i certificati, il che significa che esiste una crittografia asimmetrica. Bob è distinto da Charlie (dal tuo punto di vista) perché Bob conosce la chiave privata corrispondente alla chiave pubblica che è nel certificato (e Charlie non conosce quella chiave segreta).
Per riassumere: se tu e Bob conoscete un segreto condiviso, potete usarlo per autenticarsi l'uno con l'altro. Altrimenti, se Bob conosce un segreto non condiviso, questo segreto è una chiave privata in una coppia di chiavi pubblica / privata; quindi il problema diventa: come fai a sapere che la chiave pubblica che stai per usare è davvero quella di Bob? PKI è un modo per farlo, con l'aiuto di una "autorità" che esegue il collegamento tra l'identità di Bob (che non fa parte del mondo dei computer) e la chiave pubblica di Bob (che è nel mondo dei computer).
"PKI" è un termine ampio e copre una situazione degenerata, in cui tu sei la tua PKI. Cioè, conosci Bob una volta, e ti dà la sua chiave pubblica (o un suo hash); in seguito, usi questa conoscenza per assicurarti di utilizzare la chiave "giusta" di Bob. Ecco come funziona SSH .