Modes de fonctionnement du chiffrement par bloc

Dans ce chapitre, nous aborderons les différents modes de fonctionnement d'un chiffrement par blocs. Ce sont des règles de procédure pour un chiffrement par bloc générique. Il est intéressant de noter que les différents modes aboutissent à des propriétés différentes qui ajoutent à la sécurité du chiffrement par bloc sous-jacent.

Un chiffrement par blocs traite les blocs de données de taille fixe. Habituellement, la taille d'un message est supérieure à la taille du bloc. Par conséquent, le message long est divisé en une série de blocs de messages séquentiels, et le chiffrement opère sur ces blocs un à la fois.

Mode de livre de codes électroniques (ECB)

Ce mode est le moyen le plus simple de traiter une série de blocs de messages listés séquentiellement.

Opération

  • L'utilisateur prend le premier bloc de texte en clair et le crypte avec la clé pour produire le premier bloc de texte chiffré.

  • Il prend ensuite le deuxième bloc de texte en clair et suit le même processus avec la même clé et ainsi de suite.

Le mode ECB est deterministic, c'est-à-dire que si les blocs de texte brut P1, P2,…, Pm sont chiffrés deux fois sous la même clé, les blocs de texte chiffré de sortie seront les mêmes.

En fait, pour une clé donnée, nous pouvons techniquement créer un livre de codes de textes chiffrés pour tous les blocs de texte en clair possibles. Le chiffrement impliquerait alors seulement de rechercher le texte en clair requis et de sélectionner le texte chiffré correspondant. Ainsi, l'opération est analogue à l'attribution de mots de code dans un livre de codes, et obtient donc un nom officiel - mode de fonctionnement du livre de codes électronique (ECB). Il est illustré comme suit -

Analyse du mode ECB

En réalité, toutes les données d'application ont généralement des informations partielles qui peuvent être devinées. Par exemple, la fourchette de salaire peut être devinée. Un texte chiffré d'ECB peut permettre à un attaquant de deviner le texte en clair par essais et erreurs si le message en clair est prévisible.

Par exemple, si un texte chiffré du mode ECB est connu pour chiffrer un chiffre de salaire, alors un petit nombre d'essais permettra à un attaquant de récupérer le chiffre. En général, nous ne souhaitons pas utiliser un chiffrement déterministe, et par conséquent le mode ECB ne devrait pas être utilisé dans la plupart des applications.

Mode de chaînage de blocs de chiffrement (CBC)

Le mode de fonctionnement CBC fournit une dépendance de message pour générer un texte chiffré et rend le système non déterministe.

Opération

Le fonctionnement du mode CBC est décrit dans l'illustration suivante. Les étapes sont les suivantes -

  • Chargez le vecteur d'initialisation (IV) de n bits dans le registre supérieur.

  • XOR le bloc de texte en clair de n bits avec la valeur de données dans le registre supérieur.

  • Cryptez le résultat de l'opération XOR avec le chiffrement par bloc sous-jacent avec la clé K.

  • Introduisez le bloc de texte chiffré dans le registre supérieur et continuez l'opération jusqu'à ce que tous les blocs de texte en clair soient traités.

  • Pour le décryptage, les données IV sont XORed avec le premier bloc de texte chiffré décrypté. Le premier bloc de texte chiffré est également introduit dans le registre remplaçant IV pour déchiffrer le bloc de texte chiffré suivant.

Analyse du mode CBC

En mode CBC, le bloc de texte clair actuel est ajouté au bloc de texte chiffré précédent, puis le résultat est chiffré avec la clé. Le déchiffrement est donc le processus inverse, qui consiste à déchiffrer le texte chiffré actuel, puis à ajouter le bloc de texte chiffré précédent au résultat.

L'avantage de CBC par rapport à ECB est que le changement de IV entraîne un texte chiffré différent pour un message identique. Du côté des inconvénients, l'erreur de transmission se propage à quelques blocs supplémentaires pendant le déchiffrement en raison de l'effet de chaînage.

Il convient de mentionner que le mode CBC constitue la base d'un mécanisme bien connu d'authentification de l'origine des données. Ainsi, il présente un avantage pour les applications qui nécessitent à la fois un cryptage symétrique et une authentification de l'origine des données.

Mode de retour de chiffrement (CFB)

Dans ce mode, chaque bloc de texte chiffré est «renvoyé» dans le processus de chiffrement afin de chiffrer le bloc de texte en clair suivant.

Opération

Le fonctionnement du mode CFB est décrit dans l'illustration suivante. Par exemple, dans le système actuel, un bloc de message a une taille de bits où 1 <s <n. Le mode CFB nécessite un vecteur d'initialisation (IV) comme bloc d'entrée aléatoire initial de n bits. La IV n'a pas besoin d'être secrète. Les étapes de fonctionnement sont -

  • Chargez l'IV dans le registre supérieur.

  • Cryptez la valeur des données dans le registre supérieur avec le chiffrement par bloc sous-jacent avec la clé K.

  • Prenez seulement le nombre 's' de bits les plus significatifs (bits de gauche) de la sortie du processus de chiffrement et effectuez un XOR avec le bloc de message en clair 's' bit pour générer un bloc de texte chiffré.

  • Introduisez le bloc de texte chiffré dans le registre supérieur en décalant les données déjà présentes vers la gauche et continuez l'opération jusqu'à ce que tous les blocs de texte en clair soient traités.

  • Essentiellement, le bloc de texte chiffré précédent est chiffré avec la clé, puis le résultat est XORed au bloc de texte brut actuel.

  • Des étapes similaires sont suivies pour le décryptage. L'IV prédéterminé est initialement chargé au début du décryptage.

Analyse du mode CFB

Le mode CFB diffère considérablement du mode ECB, le texte chiffré correspondant à un bloc de texte en clair donné dépend non seulement de ce bloc de texte en clair et de la clé, mais également du bloc de texte chiffré précédent. En d'autres termes, le bloc de texte chiffré dépend du message.

CFB a une caractéristique très étrange. Dans ce mode, l'utilisateur déchiffre le texte chiffré en utilisant uniquement le processus de chiffrement du chiffrement par blocs. L'algorithme de déchiffrement du chiffrement par bloc sous-jacent n'est jamais utilisé.

Apparemment, le mode CFB convertit un chiffrement par bloc en un type de chiffrement de flux. L'algorithme de chiffrement est utilisé comme générateur de flux de clés pour produire un flux de clés qui est placé dans le registre inférieur. Ce flux de clé est ensuite XORed avec le texte en clair comme dans le cas du chiffrement de flux.

En convertissant un chiffrement par bloc en un chiffrement par flux, le mode CFB fournit certaines des propriétés avantageuses d'un chiffrement par flux tout en conservant les propriétés avantageuses d'un chiffrement par bloc.

D'un autre côté, l'erreur de transmission se propage en raison du changement de blocs.

Mode de retour de sortie (OFB)

Cela implique de renvoyer les blocs de sortie successifs du chiffrement de bloc sous-jacent. Ces blocs de rétroaction fournissent une chaîne de bits pour alimenter l'algorithme de chiffrement qui agit comme générateur de flux de clés comme dans le cas du mode CFB.

Le flux de clé généré est XOR-ed avec les blocs de texte brut. Le mode OFB nécessite un IV comme bloc d'entrée aléatoire initial de n bits. La IV n'a pas besoin d'être secrète.

L'opération est illustrée dans l'illustration suivante -

Mode compteur (CTR)

Il peut être considéré comme une version basée sur un compteur du mode CFB sans retour. Dans ce mode, l'expéditeur et le destinataire doivent tous deux accéder à un compteur fiable, qui calcule une nouvelle valeur partagée chaque fois qu'un bloc de texte chiffré est échangé. Ce compteur partagé n'est pas nécessairement une valeur secrète, mais le défi est que les deux parties doivent maintenir le compteur synchronisé.

Opération

Le cryptage et le décryptage en mode CTR sont représentés dans l'illustration suivante. Les étapes de fonctionnement sont -

  • Charger la valeur initiale du compteur dans le registre supérieur est la même pour l'expéditeur et le destinataire. Il joue le même rôle que l'IV en mode CFB (et CBC).

  • Cryptez le contenu du compteur avec la clé et placez le résultat dans le registre inférieur.

  • Prenez le premier bloc de texte clair P1 et effectuez un XOR vers le contenu du registre inférieur. Le résultat est C1. Envoyez C1 au récepteur et mettez à jour le compteur. La mise à jour du compteur remplace le retour de texte chiffré en mode CFB.

  • Continuez de cette manière jusqu'à ce que le dernier bloc de texte en clair ait été chiffré.

  • Le décryptage est le processus inverse. Le bloc de texte chiffré est XOR avec la sortie du contenu chiffré de la valeur du compteur. Après le décryptage de chaque compteur de blocs de texte chiffré est mis à jour comme dans le cas du cryptage.

Analyse du mode compteur

Il n'a pas de dépendance de message et, par conséquent, un bloc de texte chiffré ne dépend pas des blocs de texte en clair précédents.

Comme le mode CFB, le mode CTR n'implique pas le processus de décryptage du chiffrement par blocs. En effet, le mode CTR utilise réellement le chiffrement par bloc pour générer un flux de clés, qui est chiffré à l'aide de la fonction XOR. En d'autres termes, le mode CTR convertit également un chiffrement par bloc en un chiffrement de flux.

Le grave inconvénient du mode CTR est qu'il nécessite un compteur synchrone au niveau de l'émetteur et du récepteur. La perte de synchronisation entraîne une récupération incorrecte du texte en clair.

Cependant, le mode CTR présente presque tous les avantages du mode CFB. De plus, il ne propage pas du tout d'erreur de transmission.