Base crypto

De knowledge
Aller à la navigation Aller à la recherche
Alice & Bob : Source Wikipedia

Le but de la cryptographie (le chiffrement) est de permettre d'envoyer un message de... Alice à Bob par exemple sans que Mallory ne puisse ni la lire ni la modifier.

Alice et Bob doivent partager un "secret commun" qui leur permettra de coder et décoder le message.

Dans le cas qui nous préoccupe on cherche a chiffrer une suite de bits affin de les rendre intelligibles. Le secret partagé est aussi une série de bits appelé la clé.

Si la clé à une taille égale ou supérieure au message et si algorithme est correct (un simple XOR peut faire l'affaire) seule une attaque par brut force (ou un vol de la clé) peut assurer le déchiffrage.

Mais aux dernières nouvelles l'usage d'une telle clé virtuellement infinie est interdite.

Comment peut-on, tout de même réaliser un chiffrage correct sans enfreindre la loi.

Chiffrement symétrique

Le secret partagé est une clé dont la longueur varie de 128 bit a quelques milliers.

On s'échange la clé entre source et destination. La clé NE DOIT PAS entrer en contact avec un "méchant" (le Mallory).

On a un exemple avec openssl et AES sur la page openSSL et AES.

Chiffrement asymétrique

Pour résumé le principe est de chiffrer et de déchiffrer avec deux clés différentes.

Mécanisme clés asymétriques.png

On garde une clé pour sois tout seul, se sera la clé privée et on diffuse sa clé publique à tout le monde.

Ces clés peuvent êtres utilisés pour:

  • Chiffrer et déchiffrer une message
  • Signer ou vérifier une signature.

Si on signe avec l'une on ne peut vérifier la signature qu'avec l'autre et de la même façon pour le chiffrement.

La forme la plus simple de communication entre deux individus (c'est là qu'interviennent Alice et Bob!) est le as ou chacun a sa "paire de clés".

Alice et bob private public.png

Alice a sa paire ce clés bien rangées dans son coffre et à rendu sa clé publique… publique (oui elle est rose). D'autre part, comme elle à l'intention de communiquer avec Bob, elle à récupéré sa clé publique.

Bob a fait la même chose qu'Alice. Il garde sa clé privée bien au chaud dans son coffre, diffuse sa clé publique et récupère la clé publique d'Alice.

Maintenant ils peuvent faire plein de choses avec cette infrastructure.

Alice envoie un message à Bob (sans signature)

Alice veut envoyer un message a Bob. Elle veut que seul lui puisse le déchiffrer.

Elle utilise la clé publique de Bob, chiffre son message, et le lui envoie. De son côté BOB est le seul à pouvoir le déchiffrer. Pour n'importe quel "méchant" (le Mallory décrit plus haut) qui intercepterait le message impossible de le lire et impossible de le modifier. Il est en revanche possible au "méchant" d'envoyer un message a Bob en utilisant sa clé publique. BOB n'a aucune méthode de vérifier que le message vienne bien d'Alice.

Envoi message.png

Alice envoie un message à Bob (avec signature)

On a vu qu'une clé peut servir a chiffrer un message mais aussi a signer un message.

Voyons la méthode suivante:

  1. Alice signe son message avec sa clé privée
  2. Alice chiffre le message signé avec la clé publique de BOB
  3. Elle envoie le message

Sur le chemin personne ne peut lire le message (seul Bob a sa clé privée) mais personne en peut générer un faux message à mettre à la place car il ne pourra pas le signer (seule Alice peut le faire avec sa clé privée)

Envoi message chiffré et signé.png

A l'arrivée Bob pourra déchiffrer et lire le message d'Alice. Il pourra également s'assurer que le massage soit bien d'elle en utilisant la clé publique d'Alice pour vérifier la signature.

On a bien une méthode sûre pour communiquer entre Alice et Bob et cela sans échange de secret partagé. L'un et l'autre ne possède que la clé publique de l'autre .

Les échanges de clés publiques peuvent se faire de grès à grès ou en passant par un dépôt de clés.

L'exemple typique est RSA. Avec openssl: openSSL et RSA.

Certificats

Les échanges de clés publiques sont un merveilleux mécanisme tant qu'on fait des échanges entre deux personnes. Si on veut généraliser cela il est plus simple de confier la vérification des identités et des clés publiques a un organisme tiers. Celui-ci utilise sa clé privée pour signer les information d'un individu. Il en assure l'authenticité.

Une norme existe pour cela : Les certificats X.509.