Algorithme à clé symétrique - Symmetric-key algorithm

Les algorithmes à clé symétrique sont des algorithmes de cryptographie qui utilisent les mêmes clés cryptographiques pour le chiffrement du texte en clair et le déchiffrement du texte chiffré . Les clés peuvent être identiques, ou il peut y avoir une simple transformation pour passer entre les deux clés. Les clés, en pratique, représentent un secret partagé entre deux ou plusieurs parties qui peut être utilisé pour maintenir un lien d'information privé. L'exigence que les deux parties aient accès à la clé secrète est l'un des principaux inconvénients du cryptage à clé symétrique, par rapport au cryptage à clé publique (également connu sous le nom de cryptage à clé asymétrique).

Les types

Le chiffrement à clé symétrique peut utiliser des chiffrements de flux ou des chiffrements de bloc .

  • Les chiffrements de flux cryptent les chiffres (généralement des octets ) ou les lettres (en chiffrements de substitution) d'un message un par un. Un exemple est ChaCha20 .
  • Les chiffrements par bloc prennent un certain nombre de bits et les chiffrent en une seule unité, en remplissant le texte en clair de sorte qu'il soit un multiple de la taille du bloc. L' algorithme Advanced Encryption Standard (AES), approuvé par le NIST en décembre 2001, utilise des blocs de 128 bits.

Implémentations

Des exemples d'algorithmes à clé symétrique populaires incluent Twofish , Serpent , AES (Rijndael), Camellia , Salsa20 , ChaCha20 , Blowfish , CAST5 , Kuznyechik , RC4 , DES , 3DES , Skipjack , Safer et IDEA .

Utiliser comme primitive cryptographique

Les chiffrements symétriques sont couramment utilisés pour obtenir d'autres primitives cryptographiques que le simple chiffrement.

Le cryptage d'un message ne garantit pas qu'il restera inchangé pendant le cryptage. Par conséquent, un code d'authentification de message est souvent ajouté à un texte chiffré pour garantir que les modifications apportées au texte chiffré seront notées par le récepteur. Les codes d'authentification de message peuvent être construits à partir d'un chiffrement AEAD (par exemple AES-GCM ).

Cependant, les chiffrements symétriques ne peuvent pas être utilisés à des fins de non-répudiation , sauf en impliquant des parties supplémentaires. Voir la norme ISO/IEC 13888-2 .

Une autre application consiste à créer des fonctions de hachage à partir de chiffrements par blocs. Voir la fonction de compression unidirectionnelle pour les descriptions de plusieurs de ces méthodes.

Construction de chiffrements symétriques

De nombreux chiffrements par blocs modernes sont basés sur une construction proposée par Horst Feistel . La construction de Feistel permet de construire des fonctions inversibles à partir d'autres fonctions elles-mêmes non inversibles.

Sécurité des chiffrements symétriques

Chiffrement symétrique ont toujours été vulnérables aux attaques de texte en clair connu , attaques de texte en clair choisi , la cryptanalyse différentielle et la cryptanalyse linéaire . Une construction soignée des fonctions pour chaque tour peut réduire considérablement les chances d'une attaque réussie.

Gestion des clés

Établissement clé

Les algorithmes à clé symétrique exigent que l'expéditeur et le destinataire d'un message aient la même clé secrète. Tous les premiers systèmes cryptographiques exigeaient que l'expéditeur ou le destinataire reçoive d'une manière ou d'une autre une copie de cette clé secrète sur un canal physiquement sécurisé.

Presque tous les systèmes cryptographiques modernes utilisent encore des algorithmes à clé symétrique en interne pour crypter la majeure partie des messages, mais ils éliminent le besoin d'un canal physiquement sécurisé en utilisant l' échange de clés Diffie-Hellman ou un autre protocole à clé publique pour parvenir en toute sécurité à un accord sur une nouvelle clé secrète pour chaque session/conversation (forward secret).

Génération de clés

Lorsqu'ils sont utilisés avec des chiffrements asymétriques pour le transfert de clés, les générateurs de clés pseudo-aléatoires sont presque toujours utilisés pour générer les clés de session de chiffrement symétriques. Cependant, le manque d'aléatoire dans ces générateurs ou dans leurs vecteurs d'initialisation est désastreux et a conduit à des ruptures cryptanalytiques dans le passé. Par conséquent, il est essentiel qu'une implémentation utilise une source d' entropie élevée pour son initialisation.

Chiffre réciproque

Un chiffrement réciproque est un chiffrement où, tout comme on entre le texte en clair dans le système de cryptographie pour obtenir le texte chiffré , on pourrait entrer le texte chiffré au même endroit dans le système pour obtenir le texte en clair. Un chiffrement réciproque est aussi parfois appelé chiffrement auto-réciproque .

Pratiquement toutes les machines de chiffrement mécaniques implémentent un chiffrement réciproque, une involution mathématique sur chaque lettre tapée. Au lieu de concevoir deux types de machines, une pour le cryptage et l'autre pour le décryptage, toutes les machines peuvent être identiques et peuvent être configurées (saisies) de la même manière.

Voici des exemples de chiffrements réciproques :

La majorité de tous les chiffrements modernes peuvent être classés soit comme un chiffrement par flux , dont la plupart utilisent un combineur de chiffrement XOR réciproque , soit comme un chiffrement par bloc , dont la plupart utilisent un chiffrement de Feistel ou un schéma Lai-Massey avec une transformation réciproque à chaque tour.

Remarques

Les références