Symmetric Ciphers Corrections
Ce laboratoire porte sur les chiffrements symétriques et leurs différents modes de fonctionnement : ECB, CBC, CFB et OFB. Il permet de comprendre le principe de chaque mode, leurs avantages, inconvénients et la manière de chiffrer et déchiffrer des messages binaires.
D'après le document Symmetric Ciphers Corrections
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Cryptography, Symmetric Key Encryption · PDF · 4 pages
Afficher l'aperçu du document
Ce laboratoire porte sur les chiffrements symétriques et leurs différents modes de fonctionnement : ECB, CBC, CFB et OFB. Il permet de comprendre le principe de chaque mode, leurs avantages, inconvénients et la manière de chiffrer et déchiffrer des messages binaires. Pour réaliser ce TP, il est nécessaire de connaître les opérations de chiffrement et déchiffrement de blocs, ainsi que les opérations logiques comme le XOR (¯).
Objectifs
- Comprendre le fonctionnement des modes ECB, CBC, CFB et OFB.
- Appliquer les opérations de chiffrement et déchiffrement sur des blocs binaires.
- Analyser la propagation d’erreurs et la sécurité relative de chaque mode.
- Évaluer la résistance des clés symétriques face à une attaque par recherche exhaustive.
Prérequis et installation
- Connaissances en cryptographie symétrique, notamment sur les blocs, clés, vecteurs d'initialisation (IV).
- Maîtrise des opérations binaires (XOR, concaténation, décalage).
- Outils pour manipuler des données binaires et exécuter des fonctions de chiffrement E() et déchiffrement D().
- Pas de matériel spécifique requis, mais un environnement informatique pour simuler les opérations est conseillé.
Chiffrement en mode ECB
Le mode ECB (Electronic Codebook) chiffre chaque bloc de message indépendamment. Ce mode est simple mais présente des faiblesses en termes de sécurité.
- Diviser le message m en blocs de taille n=4 bits. Si nécessaire, ajouter un bourrage avec un seul 0 pour compléter le dernier bloc.
- Exemple : m = 1011 0001 0100 1010, découpé en m1=1011, m2=0001, m3=0100, m4=1010.
- Chiffrer chaque bloc séparément : c1=E(m1)=0111, c2=E(m2)=0010, c3=E(m3)=1000, c4=E(m4)=0101.
- Concaténer les blocs chiffrés pour obtenir le ciphertext final : C=0111 0010 1000 0101.
- Déchiffrer en appliquant D() à chaque bloc chiffré : D(0111 0010 1000 0101) = 1011 0001 0100 1010.
- Observer que la redondance dans le message est propagée dans le ciphertext, par exemple : E(1010 1010 1010 1010) = 0101 0101 0101 0101.
- Noter que l’ordre des blocs dans ECB n’affecte pas le chiffrement ou déchiffrement des blocs.
- Conclusion : ECB n’est pas sécurisé pour des messages longs, il est adapté uniquement pour des messages très courts comme les IV ou clés dans d’autres modes.
Chiffrement en mode CBC
Le mode CBC (Cipher Block Chaining) introduit une dépendance entre les blocs, améliorant la sécurité et empêchant la propagation de redondance.
- Initialiser avec un vecteur d'initialisation C0 = IV.
- Pour chaque bloc j, calculer cj = E(cj-1 ¯ mj).
- Exemple avec c0=1010 et m1=0001, m2=0011, m3=0010, m4=1110 :
- c1=E(c0 ¯ m1)=E(1010 ¯ 0001)=E(0001)=0010
- c2=E(c1 ¯ m2)=E(0010 ¯ 0011)=E(0011)=0110
- c3=E(c2 ¯ m3)=E(0110 ¯ 0010)=E(0010)=0100
- c4=E(c3 ¯ m4)=E(0100 ¯ 1110)=E(1010)=1101
- Le ciphertext final est c=0010 0110 0100 1101.
- Déchiffrer chaque bloc avec mj = cj-1 ¯ D(cj) :
- m1 = c0 ¯ D(c1) = 1010 ¯ D(0010) = 1010 ¯ 1010 = 0001
- m2 = c1 ¯ D(c2) = 0010 ¯ D(0110) = 0010 ¯ 0010 = 0011
- m3 = c2 ¯ D(c3) = 0110 ¯ D(0100) = 0110 ¯ 0110 = 0010
- m4 = c3 ¯ D(c4) = 0100 ¯ D(1101) = 0100 ¯ 0100 = 1110
- La redondance dans le message n’est pas propagée dans le ciphertext, par exemple :
- Si l’ordre des blocs de ciphertext est modifié ou remplacé, le déchiffrement devient impossible, ce qui est un avantage de CBC par rapport à ECB.
- La sécurité est améliorée grâce à une plus grande confusion.
- Propagation d’erreur : si un bloc cj est erroné, alors les plaintexts mj et mj+1 peuvent être erronés, mais les blocs suivants mj+2, mj+3, etc., restent corrects.
- Le mode CBC est adapté pour le chiffrement de longs messages.
E(1011 1011 1011 1011) = 0010 0011 0001 0101.
Chiffrement en mode CFB
Le mode CFB (Cipher Feedback) permet de chiffrer des messages de longueur variable en utilisant un registre d’état et un décalage.
- Pour chaque bloc j (1 ≤ j ≤ u), Alice effectue :
- Calculer Oj = E(Ij).
- Extraire tj, les r premiers bits de Oj.
- Calculer cj = mj ¯ tj.
- Mettre à jour Ij+1 = (2^r × Ij + cj) mod 2^n, ce qui revient à supprimer les r premiers bits de Ij et ajouter cj à la fin.
- Le ciphertext est la concaténation c = c1 c2 c3 ... cu.
- Le déchiffrement est similaire :
- Calculer Oj = E(Ij).
- Extraire tj, les r premiers bits de Oj.
- Calculer mj = cj ¯ tj.
- Mettre à jour Ij+1 = (2^r × Ij + cj) mod 2^n.
- Exemple de message : m1=101, m2=100, m3=010, m4=100, m5=101.
- Propagation d’erreur : une erreur dans un bit du ciphertext affecte Ij et donc peut influencer plusieurs blocs de plaintext.
- CFB ne peut pas être utilisé dans des cryptosystèmes à clé publique comme RSA, car la fonction E() est utilisée par l’émetteur et le récepteur avec la même clé publique.
- Alice et Bob peuvent calculer simultanément tj+1 dès qu’ils connaissent cj, ce qui rend CFB plus rapide que CBC et adapté aux longs messages.
Chiffrement en mode OFB
Le mode OFB (Output Feedback) génère une séquence de bits pseudo-aléatoires indépendante du plaintext, évitant la propagation d’erreurs.
- Pour chaque bloc j (1 ≤ j ≤ u), Alice effectue :
- Calculer Oj = E(Ij).
- Extraire tj, les r premiers bits de Oj.
- Calculer cj = mj ¯ tj.
- Mettre à jour Ij+1 = Oj.
- Le déchiffrement est identique, sauf que mj = cj ¯ tj.
- Si un bit du ciphertext est erroné, alors seul le bit correspondant dans le plaintext sera erroné, sans propagation d’erreur.
- Le bloc tj dépend uniquement de l’IV I1 et de la clé k, ce qui permet à Alice et Bob de calculer tj simultanément, rendant OFB plus rapide que CFB.
- Inconvénient : le chiffrement d’un bloc ne dépend pas des blocs précédents mais seulement de sa position, ce qui facilite la manipulation du ciphertext par un intrus.
- Exemple de message : m1=101, m2=100, m3=010, m4=100, m5=101.
- Si la même clé est réutilisée pour chiffrer deux plaintexts, il faut changer l’IV pour éviter que la même séquence tj soit générée, ce qui permettrait à un intrus de retrouver des informations sur les messages.
Authentification et chiffrement dans un système hybride
- BeIN peut chiffrer son broadcast avec sa clé privée en utilisant un algorithme asymétrique pour authentifier son trafic : E(Broadcast, Kpr).
- La clé publique Kpu de BeIN est distribuée aux abonnés pour qu’ils puissent vérifier l’identité de BeIN : D(E(Broadcast, Kpr), Kpu) = Broadcast.
- BeIN peut aussi chiffrer son broadcast avec une clé secrète symétrique Ks : E(Broadcast, Ks), et les abonnés déchiffrent avec la même clé : D(E(Broadcast, Ks), Ks) = Broadcast.
- Ce protocole est incorrect car tout le monde connaît la clé publique Kpu, donc n’importe qui peut déchiffrer le message : D(E(Ks, Kpr), Kpu) = Ks. Ainsi, même les non-abonnés peuvent recevoir le broadcast.
- Une alternative consiste à chiffrer la nouvelle clé Ks avec l’ancienne clé avant que la nouvelle soit opérationnelle.
Recherche exhaustive de clés symétriques
Un adversaire peut essayer en moyenne 2^(N-1) clés avant de trouver la bonne clé, où N est la taille de la clé en bits.
Exemple : si l’adversaire peut tester 2^20 clés par seconde, en 2 ans (2^26 secondes), il peut tester 2^(20+26) = 2^46 clés.
Pour que la clé soit sécurisée pendant 2 ans, il faut que :
2^(N-1) > 2^46
donc N > 47
La taille minimale recommandée est donc Nmin = 48 bits.
Durée moyenne de cassage de clés selon leur taille
Avec l’outil DES-Cracker, il faut en moyenne 4,5 jours (388 800 secondes) pour retrouver une clé DES de 56 bits.
- Une clé de 40 bits serait cassée beaucoup plus rapidement.
- Une clé de 112 bits nécessiterait environ 68 290 fois l’âge de l’univers (estimé à 13 milliards d’années).
- Une clé de 256 bits nécessiterait environ 1,5 × 10^48 fois l’âge de l’univers.
Ces chiffres montrent l’importance de la taille de la clé pour la sécurité contre les attaques par recherche exhaustive.
Résultats attendus
- En mode ECB, le ciphertext reflète la redondance du message, ce qui est visible dans les blocs chiffrés identiques.
- En mode CBC, la redondance est masquée, et la modification ou le réarrangement des blocs ciphertext empêche le déchiffrement correct.
- En mode CFB, la propagation d’erreur affecte plusieurs blocs, mais le chiffrement est plus rapide que CBC.
- En mode OFB, une erreur dans le ciphertext affecte uniquement le bit correspondant dans le plaintext, sans propagation.
- La taille minimale de clé pour une sécurité acceptable est d’au moins 48 bits, mais les clés modernes sont beaucoup plus longues.
Pièges courants
- Confondre les opérations XOR (¯) avec d’autres opérations logiques.
- Oublier d’ajouter un bourrage pour compléter le dernier bloc en ECB.
- Ne pas utiliser un vecteur d'initialisation (IV) différent pour chaque chiffrement en CBC, CFB ou OFB, ce qui compromet la sécurité.
- Modifier l’ordre des blocs ciphertext en CBC, ce qui rend le déchiffrement impossible.
- Réutiliser la même clé et le même IV en OFB, ce qui permet à un intrus de retrouver des informations sur les messages.
- Penser que le mode ECB est sécurisé pour des messages longs.
- Utiliser CFB dans un système à clé publique, ce qui n’est pas compatible.
- Ne pas prendre en compte la propagation d’erreur dans CBC et CFB lors de la réception des messages.
Commentaires
Aucun commentaire pour le moment. Posez la première question.