Contribuez à SecuObs en envoyant des bitcoins ou des dogecoins.
Nouveaux articles (fr): 1pwnthhW21zdnQ5WucjmnF3pk9puT5fDF
Amélioration du site: 1hckU85orcGCm8A9hk67391LCy4ECGJca

Contribute to SecuObs by sending bitcoins or dogecoins.



Une faille dans RSA et PKCS

Par Ludovic Blin, secuobs.com
Le 14/09/2006


Résumé : Une faille d’implémentation de l’algorithme RSA a été dévoilée lors des rump sessions de la conférence Crypto 2006. Elle touche de nombreuses applications.



L’algorithme RSA, du nom de ses concepteurs, Rivest Shamir et Adleman est très utilisé dans les domaines de l’authentification et de la signature électronique. Il permet de chiffrer un message de manière asymétrique, évitant la transmission d’un secret partagé.

L’expéditeur chiffre le message avec la clé publique du destinataire, qui utilise sa clé privée pour le déchiffrer. Les possibilités de signature découlent de cette propriété. Pour signer un document, il suffit de le déchiffrer avec sa clé privée.

Il est ensuite possible de chiffrer le fichier avec la clé publique pour revenir au document d’origine. En pratique, un hash (SHA-256 par exemple) du message à signer est réalisé puis ce hash est signé (déchiffré avec la clé privé).Pour authentifier le document, il suffit d’effectuer l’opération inverse et de comparer la valeur du hash avec un hash réalisé localement sur le message.

Mais une signature RSA est en réalité un nombre dont la taille dépend de la longueur de la clé. A l’instar de nombreuses techniques cryptographiques, il faut donc soit découper le message en blocs de taille fixe, soit si le message est inférieur à la taille du bloc, combler le vide. C’est ce dernier cas qui s’applique pour la signature électronique.

Le chercheur des Bell Labs Daniel Blechenbacher a dévoilé lors des Rump Sessions de la conférence Crypto 2006 une attaque exploitant une faille d’implémentation dans le traitement du remplissage (padding) utilisé pour combler l’espace inutilisé par le hash dans un message chiffré en RSA. En particulier, la technique de padding PKCS#1 v1.5, offre une liberté dans le remplissage qui peut permettre de forger une signature.

Il est en effet possible de placer le hash au milieu du message, au lieu que celui-ci soit à un bout ou à un autre. Des implémentations de RSA refusent ce padding mais certaines l’acceptent, entraînant une possibilité de modifier le contenu de ce message.

Pour réaliser l’attaque de Blechenbacher il faut pouvoir forger ce padding. Mais l’exposant de la clé doit être également égal à 3. Dans ce cas, si la valeur numérique (exprimée en 2 puissance n, n étant le nombre de bit) des données représente un cube parfait (nombre dont il est possible d’extraire la racine cubique), la signature est automatiquement vérifiée pour certaines implémentations, si elle est égale à la racine cubique de ce cube parfait.

Ce nombre doit être également un multiple de trois. Le chercheur n’en est pas son coup d’essai en ce qui concerne les attaques sur RSA/PKCS, puisqu’il a publié des travaux similaires dès 1998.

Suite à cette révélation, plusieurs applications ont été identifiées comme utilisant des clés RSA avec un exposant de 3 par défaut, par exemple Bind. OpenSSL est également concerné, bien que l’application ne créée pas par défaut des clés vulnérables (mais ces clés peuvent être utilisées tout de même).

L’équipe sécurité de Google aurait également créé une preuve de concept de cette faille pour OpenSSL en forgeant des certificats x509. Enfin, des certificats intégrés dans les navigateurs peuvent utiliser également cet exposant de 3.


Annonce sur ietf-openpgp : lien

Site d'OpenSSL : lien

Alerte Secunia : lien

Bell-Labs : lien