Nous allons voir un système intéressant combinant cryptographie symétrique et cryptographie asymétrique utilisant les avantages offerts par chacun.
Protocole
La sécurité sur le Web est mise en oeuvre par le protocole HTTPS. Celui-ci utilise à son tour un autre protocole appelé TLS qui est celui qui effectivement fournit la securité.
Fonctionnement
TLS est un protocole complexe comprenant plusieurs sous-protocoles. Nous allons voir brièvement les deux phases principales effectuées par TLS. La Figure 7.1 schématise son fonctionnement.
- L’utilisateur entre une URL utilisant HTTPS dans son navigateur web, par exemple https://www.wikipedia.org/.
- Le serveur envoie à l’ordinateur de l’utilisateur son certificat numérique.
- Le navigateur web vérifie si l’autorité de certification est fiable avec sa liste interne ainsi que l’intégrité du certificat. Si tout est ok, alors le navigateur web génère une clé, appelée clé de session.
- La clé de session est chiffrée avec la clé publique du serveur et est transmise à ce dernier.
- Le serveur déchiffre le message du navigateur web avec sa clé privé et obtient la clé de session.
- Enfin, la communication à proprement parler peut démarrer. Désormais toute la communication est chiffrée et déchiffrée avec la clé de session en utilisant la cryptographie symétrique. L’algorithme de chiffrement symétrique résulte d’une négociation entre le navigateur et la serveur qui a eu lieu précédemment.
Standard
TLS est la continuité de SSL. TLS est un standard IETF depuis 2001. Il a fait l’objet de nombreuses corrections suite aux failles qui lui ont été découvertes au cours du temps (BREACH, BEAST, CRIME, TIME, Lucky 13, POODLE, etc.). Toutefois, la façon dont il combine cryptographie symétrique et asymétrique le rend efficient et flexible.
Limites
Le système dans son ensemble a montré ses limites lorsque plusieurs autorités de certification ont été compromises par le passé (Comodo, DigiNotar, Turktrust).
Suite à ces compromissions, certains navigateurs web désormais limitent la confiance accordées aux autorités de certification en vérifiant si le certificat enovoyé par un site web donné est le certificat attendu. Cette technique est connue sous le nom de certificate pinning.