Crypto pour les nuls

Sep 23, 2022

Hello

Avant de commencer, une petite devinette 

Nous sommes à une époque très lointaine. Les chiffres n'existent pas encore. 

Un éleveur de moutons gagne de l'argent en élevant les moutons des autres. Un investisseur apporte ses moutons à l'éleveur pourqu'il les fasse grandir.

Il les récupèrera plus tard. 

Comment les deux peuvent s'assurer que le contrat est respecté :

  • Que seuls les deux sont au courant des données de la transaction

  • Que le bon nombre de moutons sera rendu

  • Que l'éleveur ne pourra pas déclarer ne pas connaitre l'investisseur et garder tous les moutons pour lui

  • Que quelqu'un d'autre ne puisse pas se faire passer pour l'investisseur en venant récupérer les moutons 

Attention, ils ne savent pas compter, il n'y a pas d'état civil, c'est limite la préhistoire.

Petite PAUSE ici pour réfléchir 

C'est le début de la cryptographie.

Comment garantir l'intégrité, la confidentialité, l'authentification, la non-répudiation d'un échange :

  • Confidentialité : l'information est rendue illisible aux personnes non autorisées.

  • Intégrité : une donnée n'a pas été modifiée par une autre personne

  • Authenticité : la source de données est bien celle qu'elle prétend être

  • Non-répudiation :  l'émetteur du message ne pourra pas nier avoir émis le message dans le futur

Revenons à nos moutons (hihi, je suis fier de celle-ci 😬) :

Les certificats permettent exactement ça.

C'est un mécanisme de cryptographie asymétrique. 

Asymétrique, parce qu'on utilise deux "clés" : Quand on chiffre un message avec l'une, il n'y a que l'autre qui puisse la déchiffrer

Je vais rester light sur la notion de clé, mais pour faire simple

Il y a une clé publique. Elle est visibile et connue de tout le monde.

Il suffit de demander à quelqu'un et il te la montre.

Il y a une clé privée. Celle-ci n'est connue de que de son détenteur. Elle est souvent protégée par un mot de passe et gardée précieusement.

Si on reprend le principe des clés : 

  • Un message chiffré par la clé publique ne peut être déchiffré que par la clé privée

  • Un message chiffré par la clé privée ne peut être déchiffré que par la clé publique

Donc maintenant, voyons les usages : 

  • Confidentialité

    • Alice veut rendre confidentiel un message à destination de Bob

    • Alice utilise la clé publique de Bob pour chiffrer son message

    • Elle est assurée que seul le détenteur de la clé privée associée pourra lire le message

  • Authenticité 

    • Je signe un message avec ma clé privée. Et je l'envoie. Mon destinataire utilise ma clé publique pour déchiffrer la signature.

    • S'il y arrive, il a la garantie que c'est bien moi l'expéditeur que c'est bien ma signature.

    • Seule ma clé privée fonctionne avec ma clé publique. Donc il vérifie l'authenticité de mon message.

  • Intégrité

    • En chiffrant un message avec une clé, la modification du message chiffré rend le déchiffrement impossible.

    • Un message ainsi altéré est tout de suite détecté. Et on peut donc considérer qu'il n'est plus intègre.

  • Non-répudiation

    • En signant un message avec une clé privée, on ne peut plus dire que l'on n’est pas l'auteur. 

    • On a dû utiliser une clé privée pour le faire.

    • Et la clé privée c'est top confidentielle

On voit ici l'importance de bien protéger sa clé privée sous peine d'usurpation d'identité. 

On retrouve l'utilisation des clés partout : 

  • Les protocoles sécurisés (https, ...) 

  • SSH et SFTP

  • Signature d'email et document officiel d'état ...

Pour aller plus loin.

Lors d'échanges informatiques, chiffrer et déchiffrer avec des clés asymétriques coutent cher en calculs et en temps (il faut utiliser des principes mathématiques complexes pour garantir la sécurité).

On peut utiliser des clés symétriques (la même clé permet de chiffrer et déchiffrer). Dans ce cas, il est nécessaire que l'expéditeur et le destinataire aient préalablement échangé entre eux cette fameuse clé de façon sécurisée. 

Donc en mixant les deux, on établit une connexion sécurisée une première fois avec de l'asymétrique. Lors de cette connexion, on s'échange une clé symétrique qui a une durée de validité. Puis pour les échanges qui suivent, on utilise la clé symétrique pour aller plus vite.

Les certificats que l'on trouve sur les sites web sont aussi composés d'une clé publique (le certificat tel qu'on peut le voir sur le navigateur web), d'une clé privée (cachée sur le serveur web et protégée).

Il y a une 3eme composante : l'autorité de certification qui garantit que mon certificat est bien le mien

Sans cela, on pourrait gruger.

Je suis Imrane, je crée moi-même une paire clé publique et clé privée au nom de Bob. Maintenant que j'ai une paire, je peux signer des documents et me faire passer pour Bob. Personne n'a vérifié que j'ai le droit d'avoir une paire de clés au nom de Bob. C'est là qu'entrent en jeu les autorités de certifications qui se chargent de signer les "clés" attestant que ces clés appartiennent bien à la bonne personne.

Maintenant, tu n'as plus besoin de me faire confiance, tu fais confiance à une autorité tierce de plus grande ampleur. Cette autorité a fait tous les contrôles pour bien vérifier que je suis bien Bob et non quelqu'un d'autre. 

Bon là, on va très loin. Ça pourra faire l'objet d'un autre article si ça t'intéresse (dis-le-moi en commentaire)

La réponse à la devinette :

Maintenant que t'as tout compris, comment l'éleveur et l'investisseur pourraient faire ? 

Tu as besoin d'une paire de clés, d'un message ...

Je te donne pas totalement la réponse, mais des indices : 

  • Pot de terre

  • Petits cailloux

  • Poterie brisée

  • Objet personnel ...

Oula ! Bien compliqué tout ça ! Juste pour des moutons ! 

Conclusion  

La cryptographie, ça existe depuis longtemps, ça a un but clair et c'est pas pour faire joli. On parle d'usurpation d'identité, de corruption de données ... Des choses importantes ...

C'est utilisé partout et tout le temps maintenant.

Les principes mathématiques derrières sont aussi pas mal utilisés dans la Blockchain et les Crypto (Monnaie, NFT...)

Donc en tant que Dev, ça fait partie du job d'intégrer la sécurité dans les projets.

Voilà :)

Bon c'était dense, t'hésites pas à poser des questions. 

Imrane 🏖

La newsletter pour ne rien louper

Rejoins les 2500 lecteurs de  la newsletter pour obtenir des conseils, des stratégies et des ressources pour développer et monétiser tes compétences Tech.