====== https ======
===== Man In The Middle =====
Alice communique avec Bob. Mais Eve s'est placé quelque part sur la chaîne de transmission. C'est la situation **Man in the middle**.
{{ :nsi:terminales:securite:man_in_the_middle_1.svg |}}
===== Différence avec http =====
Le protocole **http** permet à un client -- //Firefox//, //Chrome//, //Oracle//, //Edge// -- de recevoir des pages web depuis un serveur.
Les échanges ne sont **pas chiffrés**. Eve peut capter les échanges et les lire en clair.
**https** est la version **sécurisée** de http, c'est à dire chiffrée.
===== Le chiffrement ne suffit pas =====
{{ :nsi:terminales:securite:man_in_the_middle_2.svg |}}
Alice ne peut donc pas se contenter de demander la clé de Bob. Elle a besoin d'avoir la certitude que son interlocuteur est bien Bob. C'est la raison d'être du certificat.
===== Certificat =====
**À faire :** chargez [[https://exercices.goupill.fr|cette page]] puis cliquez sur le cadenas, dans la barre d'adresse pour afficher les informations concernant le certificat.
Vous pouvez constater que la sécurité utilise un **certificat**.
Le certificat est un document numérique qui a plusieurs objectifs :
* fournir les informations sur le site visité,
* fournir la **clé publique** de chiffrement du site,
* assurer l'**authenticité** du site.
==== Tiers de confiance ====
Le certificat est généré par une autorité de certification.
En gros, le navigateur de Alice contient des informations sur les tiers de confiance. Elle peut donc se tourner vers eux pour être certaine que le certificat est en règle.
{{ :nsi:terminales:securite:man_in_the_middle_3.svg |}}
==== Signature ====
On pourrait imaginer que Eve ayant volé le certificat de Bob, réponde à la place de Bob. Pour être sûr que c'est bien Bob qui répond, celui-ci ajoute une signature au certificat. Il s'agit d'une **signature numérique**.
* Une fonction de hachage est une fonction ''h'' que l'on ne sait pas inverser. ''h(M)'' produit un résultat ''z''. Connaissant ''z'' on n'est pas capable de retrouver ''M''.
* Plus important, la moindre modification sur ''M'' entraîne un grand changement sur ''z''.
* ''M'' n'est pas limité en taille alors que ''z'' si. Il y a donc plus de ''M'' différents que de ''z''. Donc, deux ''M'' différents peuvent produire le même ''z''. Mais pour un ''M'' donné, il est impossible de trouver un ''M2'' tel que ''h(M2) = h(M) = z''. Et il est surtout impossible de trouver ce ''M2'' avec une modification intéressante pour un pirate éventuel.
* ''z'' est appelé **empreinte** de ''M''.
Soit ''C'' les informations du certificat.
* Bob calcule l'empreinte de ''C'' : ''z = h(C)''.
* Bob publie de façon non sécurisée sa clé ''Kpu'' et la fonction de hachage utilisée.
* Bob chiffre ''z'' en utilisant sa clé privée ''Kpr''. Le résultat est la signature ''S''
* Bob envoie le message composé de ''C'' et ''S''
Alice reçoit le message.
* Elle utilise ''Kpu'' pour déchiffrer ''S'' et obtient ainsi ''z''.
* En utilisant ''h'' et connaissant ''C'', Alice calcule ''h(C)''.
* Elle compare ''z'' et ''h(C)'', la signature correspond bien.
La signature numérique permet de garantir que le document est bien tel qu'écrit par le possesseur de la clé ''Kpr'' lié à ''Kpu''.