Accueil🇫🇷Chercher

Remplissage (cryptographie)

En cryptographie, le remplissage ou bourrage (padding) consiste à faire en sorte que la taille des données soit compatible avec les algorithmes utilisés. Un grand nombre de schémas cryptographiques décrivent des algorithmes qui utilisent un partitionnement en blocs de taille fixe. Si la taille des données n'est pas un multiple de la taille d'un bloc alors l’utilisation d’un schéma de remplissage doit être envisagé.

Historiquement, le remplissage était utile pour contrer la cryptanalyse. Plusieurs algorithmes classiques placent le texte en clair dans des grilles rectangulaires ou carrées. Il faut dès lors remplir les cases manquantes et on utilise pour cela du texte aléatoire destiné à rendre l'analyse plus pénible.

En cryptographie moderne, le remplissage apparaît dans plusieurs primitives et concepts :

  • chiffrement par bloc : le remplissage permet d'avoir un bloc de la taille adĂ©quate si celui-ci est trop court (par exemple en ajoutant des 0) ;
  • chiffrement par flot : le remplissage peut Ă©viter d'avoir une longueur par flot susceptible d'ĂŞtre attaquĂ©e, cela Ă©vite aussi que l'attaquant ne connaisse la taille du flux ;
  • cryptographie asymĂ©trique : les cryptosystèmes prennent en entrĂ©e des donnĂ©es qui ne sont pas nĂ©cessairement des chaĂ®nes de bits, par exemple pour le chiffrement RSA, le message Ă  chiffrer est un entier modulaire devant vĂ©rifiant des propriĂ©tĂ©s supplĂ©mentaires afin de rĂ©sister Ă  certaines attaques[1]. Lors de l’encodage du message rĂ©el (sous la forme une chaĂ®ne de bits) dans l’ensemble voulu (pour RSA un entier modulaire), un remplissage est effectuĂ© pour garantir que l’entrĂ©e n’est pas vulnĂ©rable aux attaques ;
  • fonction de hachage : la plupart des fonctions dĂ©coupent les donnĂ©es en blocs de taille fixe et le dernier bloc doit ĂŞtre rempli de manière adĂ©quate.

Le remplissage doit suivre certaines contraintes pour éviter des attaques. Dans le cadre des fonctions de hachage, on peut appliquer un renforcement de Merkle-Damgård qui consiste à ajouter un 1, une suite de 0 et finalement la taille du message à hacher. Si l'on se contentait d'ajouter uniquement des 0, les messages "000" et "0000" produiraient le même condensé ce qui est totalement incompatible avec la notion de résistance à la préimage des fonctions de hachage cryptographique.

Le standard PKCS définit des remplissages qui évitent des attaques potentielles dans le cadre de la cryptographie asymétrique[2].

Notes et références

  1. Par exemple si (dans ℤ), le calcul direct de la racine e-ième dans ℤ suffit à retrouver le message.
  2. (en) « PKCS #1: RSA Cryptography Specifications », Request for comments no 2437.

Annexes

Articles connexes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.