Comment permettre à Alice et Bob de communiquer de manière *sûre* sur un canal *non sûr* ? Notion centrale en sécurité/crypto : le **modèle d'attaque**.
* Chaque acteur a une paire de clés publique/privée reliées mathématiquement
* Chiffrer = utiliser la clé publique de l'interlocuteur, déchiffrer = utiliser sa propre clé privée (tout le monde peut nous parler, nous seuls pouvons comprendre)
* Signer = utiliser sa propre clé privée, vérifier = utiliser la clé publique de l'interlocuteur (nous seuls pouvons signer, tout le monde peut vérifier)
* Objectif : un tunnel chiffré entre le client (navigateur) et le serveur
* Pour cela il nous faut :
* Un protocole : TLS
* La (bonne) clé publique du serveur : Certificat
* Un certificat = (clé publique, nom) signé par un tiers. Ici :
* clé publique = celle du serveur, il a la clé privée qui va avec
* nom = nom d'hôte DNS (par exemple www.univ-ubs.fr)
* tiers = une autorité de certification (par exemple Let's Encrypt)
* => On a bien une association entre un nom et une clé, ici certifiée par un tiers
* Le client doit valider la signature de la CA, et ainsi vérifier l'association (clé publique, nom) :
* Il lui faut donc vérifier avec la clé publique de la CA
* Les clés publiques des CA reconnues par les clients sont pré-installées dans les navigateurs, pas de magie, il faut une *ancre de confiance* dans le logiciel