Optimal Asymmetric Encryption Padding

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En cryptologie, l'OAEP (Optimal Asymmetric Encryption Padding) est un schéma de remplissage, utilisé généralement avec le chiffrement RSA. Cet algorithme fut introduit en 1994 par Mihir Bellare et Phil Rogaway[1]. L'OAEP est une forme de réseau de Feistel qui nécessite une source d'aléa ainsi que deux fonctions de hachage.

Description de l'algorithme[modifier | modifier le code]

description de l'OAEP

Si l'on note

  • m le message d'origine (complété ici par des zéros),
  • r des données aléatoires,
  • G,H les deux fonctions déterministes de génération de masque (elles transforment, via une fonction de hachage, une entrée de longueur quelconque en une sortie de la longueur voulue mais attention il ne s'agit pas d'un générateur de hasard car la sortie générée est fonction de l'entrée fournie).

Pour les étapes de chiffrement, on a

X = m\oplus G(r)
Y = H(X)\oplus r
\mathrm{OAEP}(M) = X ||  Y,

où « || » désigne la concaténation et \oplus l'opérateur « ou exclusif ».

Pour les étapes de déchiffrement/vérification, il suffit de calculer :

r=H(X)\oplus Y,

on a alors

m= X\oplus G(r).

La réversibilité de l'algorithme, permet de vérifier que le des données déchiffrées correspondent bien à celles attendues.
C'est généralement une étape du chiffrement RSA, on parle d'ailleurs dans ce cas de RSA-OAEP, la fonction de hachage communément utilisée est le sha1.
L'un des intérêts de RSA-OAEP est de pouvoir être prouvé sûr dans un modèle théorique idéalisé, celui de l'oracle aléatoire.
Cet algorithme est recommandé par la directive PKCS (Public Key Cryptography Standard) 1, version 2.1 (juin 2002).

Références[modifier | modifier le code]

  1. M. Bellare; P. Rogaway (1995). « Optimal Asymmetric Encryption -- How to encrypt with RSA » (pdf) in Eurocrypt '94 Proceedings. Springer-Verlag Lecture Notes in Computer Sciences 950: 92–111, Springer-Verlag. 

Liens externes[modifier | modifier le code]

Articles connexes[modifier | modifier le code]