0Pricing
Cryptology Academy · Leçon

Fondamentaux des chiffrements par blocs et bourrage

Comprenez la taille des blocs, le bourrage PKCS7 et la structure d’un chiffrement.

Fondamentaux des chiffrements par blocs et bourrage est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.

Bienvenue

Les chiffrements par blocs chiffrent des blocs de taille fixe. Lorsque le texte en clair ne remplit pas un bloc, nous avons besoin d'un bourrage. Dans cette leçon, nous maîtrisons la structure des chiffrements par blocs, les schémas de bourrage et leur importance.

Rappel sur la taille des blocs

AES utilise des blocs de 128 bits (16 octets). DES utilisait des blocs de 64 bits (8 octets). Si le texte en clair fait exactement 16 octets, il constitue un bloc. 17 octets nécessitent deux blocs.

Pourquoi le bourrage est nécessaire

Si le texte en clair fait 20 octets, le deuxième bloc ne contient que 4 octets. Le chiffrement a besoin d'un bloc complet de 16 octets. Nous complétons les 12 octets restants au moyen d'un schéma déterministe et réversible.

Bourrage PKCS#7

PKCS#7 ajoute N octets, chacun ayant la valeur N : - Il faut 3 octets → ajouter : 03 03 03 - Il faut 12 octets → ajouter : 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C - Il faut 0 octet → ajouter un bloc complet de 16 : 10×16

Ajoutez toujours un bloc complet

Si le texte en clair fait exactement 16 octets, PKCS#7 ajoute un bloc supplémentaire complet de 0x10×16. Le destinataire sait ainsi toujours où se termine le bourrage : la valeur du dernier octet indique combien d'octets supprimer.

PKCS#7 en Python

def pkcs7_pad(data: bytes, block_size: int = 16) -> bytes: n = block_size - (len(data) % block_size) return data + bytes([n] * n) def pkcs7_unpad(data: bytes) -> bytes: n = data[-1] return data[:-n]

Attaques par oracle de bourrage

Si un serveur révèle si le bourrage est valide après le déchiffrement (par un message d'erreur ou le temps d'exécution), un attaquant peut déchiffrer le texte chiffré octet par octet sans connaître la clé. Cette vulnérabilité a compromis ASP.NET ViewState en 2010.

Bourrage par zéros et ANSI X.923

Bourrage par zéros : compléter avec des octets 0x00 (ambigu — les données d'origine peuvent se terminer par des zéros). ANSI X.923 : compléter avec des zéros, le dernier octet indiquant le nombre d'octets ajoutés. ISO 7816-4 : le premier octet de bourrage vaut 0x80, les suivants valent 0x00. PKCS#7 est non ambigu et préférable.

Bourrage par vol de texte chiffré (CTS)

Le vol de texte chiffré (CTS) évite entièrement le bourrage : il réorganise les deux derniers blocs pour traiter une entrée qui ne remplit pas un bloc. Il est utilisé pour le chiffrement des disques (Kerberos et certaines implémentations d'AES).

Impact de la taille des blocs sur la sécurité

Avec des blocs de 64 bits (DES, 3DES, Blowfish) : une collision de type anniversaire survient après 2^32 blocs (~32 GB). Les navigateurs ont désactivé 3DES dans TLS après que l'attaque SWEET32 l'a démontré en 2016. Les blocs de 128 bits d'AES nécessitent 2^64 blocs — ce qui est sûr en pratique.

Modes sans bourrage

AES-CTR et AES-GCM n'exigent aucun bourrage : ils utilisent le chiffrement par blocs comme générateur de flot de clés et appliquent XOR à une entrée de longueur arbitraire. La limite entre les blocs est un détail interne de l'implémentation.

Vérification rapide

Avec PKCS#7 et des blocs de 16 octets, quel bourrage est ajouté à un message de 13 octets ?

Récapitulatif

Vous maîtrisez désormais le bourrage des chiffrements par blocs ! Nous comparons ensuite les modes ECB et CBC — en commençant par la célèbre attaque du pingouin d'ECB.

Questions Fréquemment Posées

La leçon « Fondamentaux des chiffrements par blocs et bourrage » est-elle gratuite ?

Oui — le texte complet de « Fondamentaux des chiffrements par blocs et bourrage » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Fondamentaux des chiffrements par blocs et bourrage » ?

Comprenez la taille des blocs, le bourrage PKCS7 et la structure d’un chiffrement. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cryptology Academy ?

Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Fondamentaux des chiffrements par blocs et bourrage » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?

Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fondamentaux des chiffrements par blocs et bourrage
  2. ECB ou CBC : motifs et IV
  3. Mode CTR et fonctionnement des chiffrements par flot
  4. GCM et chiffrement authentifié
← Retour à Cryptology Academy