A quanto ho capito, se Alice e Bob vogliono comunicare in modo sicuro, devono prima concordare i protocolli che verranno utilizzati. Quindi devono confermare che stanno effettivamente comunicando tra loro. Questo viene fatto tramite certificati firmati da terze parti fidate. La chiave pubblica e l'algoritmo di hashing utilizzati dalla terza parte sono già memorizzati sul tuo computer. Alice quindi invia a Bob il suo certificato e Bob invia ad Alice il suo certificato. Entrambi verificano la firma del certificato utilizzando la chiave pubblica della terza parte. Se è valido, iniziano il loro scambio di chiavi e così via. Tuttavia, cosa c'è in quei certificati che confermano la loro identità? Immagino non possa essere solo "Ciao, questo è totalmente Bob / Alice, credimi". Immagino che il certificato di Bob debba contenere la chiave pubblica di Bob, ma non sarebbe pericoloso se Bob usasse la stessa chiave pubblica ogni volta? Non sarebbe meglio se potesse usare una chiave pubblica diversa per ogni cliente?
Inoltre, un sito web (come Amazon) ha un solo certificato che invia a tutti i client o è un nuovo certificato firmato da terzi per ogni cliente che si connette al sito web?
Apprezzerei anche alcune fonti sulle basi dell'applicazione della crittografia asimmetrica se qualcuno ha alcune fonti semplici (sono comunque un maniaco).