Chiffrement symétrique

Objectifs

  • Découvrir le chiffrement symétrique ;

  • Utiliser un algorithme de chiffrement symétrique.

Mise en situation

Lorsque deux personnes qui communiquent entre elles partagent exactement la même technique de chiffrement, on parle de chiffrement symétrique. C'est en général une méthode insuffisante pour les communications entre plusieurs personnes. Il est possible d'utiliser une clé symétrique pour communiquer avec quelqu'un, mais dans ce cas la clé sera changée à chaque nouvelle communication.

Le chiffrement symétrique est aussi utilisé lorsque l'on souhaite chiffrer des données sans les partager. C'est le cas lorsque l'on chiffre son disque dur pour que, même en cas de vol, seul le propriétaire puisse accéder aux données. Ainsi, le but n'est plus de sécuriser une communication mais le stockage lui-même.

DéfinitionLe chiffrement symétrique

Le chiffrement symétrique est un chiffrement dans lequel la clé de chiffrement sert également à déchiffrer. On parle alors de clé secrète.

ExempleSchéma d'utilisation classique

Bob souhaite chiffrer son disque dur pour qu'il soit le seul à pouvoir accéder à ses fichiers.

  1. Lors de l'installation de son système d'exploitation Bob décide de chiffrer son disque dur, il choisit un mot de passe P.

  2. La totalité du disque est chiffré avec une clé K générée par le système, cette clé est stockée sur le disque dur.

  3. La clé K est à son tour chiffrée grâce au mot de passe P (elle ne doit pas être accessible en clair sur le disque).

  4. À chaque déverrouillage de son ordinateur Bob entre le mot de passe qui permet de déchiffrer la clé K ; elle est alors chargée en mémoire afin d'être disponible rapidement.

  5. À chaque fois qu'un fichier est accédé en lecture il est déchiffré avec K ; à chaque accès en écriture il est chiffré avec K.

Ainsi, Bob est certain que tant que son mot de passe reste secret, ses données sont sécurisées même si quelqu'un accède au disque de son ordinateur.

AttentionLe partage de clés

Il arrive parfois que la clé soit connue par plusieurs personnes ou soit présente sur plusieurs serveurs du propriétaire. Le transfert de la clé doit absolument être sécurisé pour que le chiffrement ne soit pas compromis. Plusieurs stratégies existent et une des plus efficaces est d'utiliser un autre type de chiffrement pour chiffrer la clé secrète et d'envoyer ce message au destinataire qui pourra récupérer la clé secrète en toute sécurité. Transférer la clé au travers d'une connexion SSH est une stratégie commune.

FondamentalLe chiffrement AES

L'Advanced Encryption System est un standard très répandu pour réaliser du chiffrement symétrique. Il possède énormément de bonnes propriétés : facile à calculer, implémentation possible au niveau logiciel comme au niveau matériel (implémentation câblée). Ce type de chiffrement est utilisé notamment pour des protocoles tels que SSL (sécurisant les connexions HTTP) ou encore pour chiffrer son disque dur (VeraCrypt).

MéthodeGénérer sa propre clé secrète

Voici une commande basique pour générer une clé secrète. Il existe des implémentations plus complexes et sécurisées. Ici, la clé est simplement une suite aléatoire de 32 octets. Pour une utilisation réelle, il est conseillé d'utiliser des implémentations robustes et de confiance pour générer sa clé secrète.

1
openssl rand 32 > cle_secrete.pem

On obtient ici la clé de chiffrement dans le fichier cle_secrete.pem.

ConseilUtiliser une phrase secrète ou un mot de passe

Il est possible de sécuriser sa clé secrète en spécifiant un mot de passe lors de la génération de la clé. Une telle pratique permet de conserver la sécurité même si un attaquant réussit à récupérer la clé. Il est tout de même fortement conseillé de générer une nouvelle clé dès lors qu'une clé est compromise.

MéthodeChiffrer et déchiffrer

On peut utiliser les commandes dans un repl Bash ou un terminal, pour chiffrer et déchiffrer un message.

Pour chiffrer un fichier msg.txt en un nouveau fichier msg.txt.enc avec AES et une clé secrète générée cle_secrete.pem on utilise :

1
openssl aes-256-cbc -pbkdf2 -iter 100000 -in msg.txt -out msg.txt.enc -pass file:cle_secrete.pem

Pour déchiffrer un fichier msg.txt.enc chiffré avec AES en un fichier msg.txt et une clé secrète générée cle_secrete.pem on utilise :

1
openssl aes-256-cbc -pbkdf2 -iter 100000 -d -in msg.txt.enc -out msg.txt -pass file:cle_secrete.pem

À retenir

  • Le chiffrement symétrique permet de sécuriser ses propres données avec une unique clé.

  • Le chiffrement symétrique permet d'échanger des données avec des pairs s'ils disposent eux aussi de la clé.

  • Le partage de clé est très complexe et doit rester exceptionnel pour conserver sa confidentialité.

  • L'algorithme AES permet de réaliser un chiffrement symétrique.

Stéphane Crozat, Marc Damie Paternité - Partage des Conditions Initiales à l'Identique