Les communications, qu’elles soient entre humains, entre humains et machines, ou entre machines, peuvent être interceptées par différents moyens, parfois surprenants. Il est donc important de les protéger, que ce soit pour protéger sa vie privée ou pour éviter un piratage. Pour protéger ces communications, on chiffre les messages à l’aide d’une méthode de cryptographie, comportant une ou plusieurs clés secrètes. Les deux principes de chiffrement sont le chiffrement symétrique, où la même clé est utilisée pour le chiffrement et le déchiffrement du message, et le chiffrement asymétrique, où deux clés différentes sont utilisées. Reste à assurer que les clés ne soient pas piratées, ce qui est le problème de l’authenticité des utilisateurs. La sécurité des communications dépend à la fois des méthodes de chiffrement et des protocoles d’échange des clés.
Vocabulaire : chiffrer/déchiffrer s’utilise pour transformer un message clair en message codé à l’aide d’une clé. Décrypter, c’est casser le code sans connaître la clé. Crypter n’est pas du français mais du globbish.
Dans le chiffrement symétrique, la même clé permet à la fois de chiffrer et de déchiffrer le message. La clé secrète doit donc être connue préalablement par les deux entités communiquant. On peut remarquer que si la clé fait la taille du message (ou plus), alors le message ne peut pas être décrypté. Comme dit en introduction, il faut également échanger cette clé au préalable, sans qu’elles ne soient interceptées !
L’algorithme AES (Advanced Encryption Standard) est un standard de chiffrement symétrique. Il est peu coûteux en mémoire, facile à mettre en forme, et il n’existe pas actuellement de méthode plus efficace que la force brute pour le casser.
Lors du chiffrement asymétrique, deux clés sont utilisées, l’une privée (secrète) et l’autre publique. La clé publique permet de chiffrer le message, et la clé privée permet de le déchiffrer. Comme leur nom l’indique, la clé privée n’est pas transmise, contrairement à la clé publique.
Le principe a été imaginé en 1976 par Diffie et Hellman, mais sans algorithme correspondant. En 1978 Rivest, Shamir et Adleman inventent l’algorithme RSA. Les services secrets anglais avaient déjà imaginé des concepts semblables quelques années plus tôt, mais ont gardé ces recherches secrètes jusqu’en 1997.
Ces protocoles reposent sur l’asymétrie des fonctions utilisées (fonctions dites à sens unique). Par exemple, dans RSA on utilise le produit de deux nombres premiers. Autant il est facile d’effectuer une multiplication de deux nombres premiers, autant il est difficile d’obtenir la décomposition de ce produit en les deux nombres d’origine.
Une présentation des fondements mathémathiques de l'algorithme de chiffrement RSA (au programme de l'option mathématiques expertes) : ici
Alice souhaite recevoir un message secret de Bob, sur un canal susceptible d’être écouté par Ève.


Alice et Bob veulent échanger des données confidentielles, et Carole, jalouse, veut les intercepter. Ils possèdent chacun une clé privée (respectivement As, Bs et Cs) et une clé publique (respectivement Ap, Bp et Cp).
Cas normal
Attaque
Admettons maintenant que Carole soit en mesure de modifier les échanges entre Alice et Bob.
Ainsi, Alice et Bob sont chacun persuadés d'utiliser la clé de l'autre, alors qu'ils utilisent en réalité tous les deux la clé de Carole.
Une solution possible pour se prémunir contre cette attaque
On peut obtenir la clé publique de son interlocuteur par un tiers de confiance. Si les deux interlocuteurs possèdent un contact en commun (le tiers de confiance) alors ce dernier peut servir d'intermédiaire pour transmettre les clés. Les infrastructures à clés publiques sont des systèmes ou des organismes qui permettent de vérifier la validité des clés en se basant principalement sur des certificats. C'est notamment la méthode utilisée par le protocole HTTPS, où le certificat d'authentification du site web consulté est obtenu auprès d'une autorité de certification reconnue.
Les protocoles asymétriques sont difficiles à casser mais lents. Les protocoles symétriques sont rapides, mais nécessitent l’échange préalable des clés. Les protocoles hybrides utilisent les deux méthodes. RSA peut par exemple être utilisé pour échanger une clé de protocole symétrique.
Par exemple, TLS/SSL (le « https ») utilise en partie un chiffrement asymétrique, pour initialiser la connexion client/serveur, et créer une clé symétrique utilisée pour la suite de la session. Ce protocole mélange donc les deux types de chiffrement. Cette méthode est couplée avec un mécanisme d’authentification : l’utilisation des certificats de sécurité, confiés à un tiers de confiance.
Le protocole http permet d’échanger des données entre client et serveur. En première, on voit deux possibilités de http avec les méthodes GET et POST. Ce protocole n’est pas sécurisé, il n’est donc pas adapté à tous les échanges de données sur le web. https rajoute à http une couche de sécurité, la couche TLS (plus sûre que SSL).
Les protocoles de communication commencent par une mise en relation des entités. On appelle souvent cette mise en relation la « poignée de mains » (handshake).
