Aller au contenu

RSA-PSS : RSA Probabilistic Signature Scheme

Cryptographie

RSA-PSS : RSA Probabilistic Signature Scheme, schéma de signature RSA probabiliste. « La manière correcte de signer avec RSA, arrivée vingt ans après la manière répandue », par analogie avec la ceinture de sécurité, inventée bien après la voiture et adoptée encore plus tard par les conducteurs.

Principe : Avant d'appliquer la clé privée RSA, le message haché est mélangé à un sel aléatoire puis encodé par une fonction de génération de masque (MGF1). Deux signatures du même message diffèrent donc, et la structure de l'encodage ne laisse aucune prise aux falsifications qui exploitent un remplissage trop prévisible.

Normes : Proposé par Mihir Bellare et Phillip Rogaway en 1996, avec une preuve de sécurité, puis intégré à PKCS #1 version 2.1 (RFC 3447, 2003) ; la version actuelle est la RFC 8017. Il remplace l'encodage de signature PKCS #1 v1.5, déterministe et victime de falsifications quand la vérification est mal programmée.

Dans TLS 1.3 : La RFC 8446 impose RSA-PSS pour toutes les signatures RSA émises pendant la négociation. Les certificats eux-mêmes peuvent encore être signés en PKCS #1 v1.5, l'ancien format ayant la vie dure partout où il est gravé dans des chaînes de certificats existantes.

Dans un HSM : Le mécanisme apparaît sous son propre nom (par exemple CKM_RSA_PKCS_PSS en PKCS #11) : le consigner dans les journaux permet de vérifier qu'aucune application ne signe encore à l'ancienne avec la même clé.

Ce qui arrive si on s'en passe

Signer en PKCS #1 v1.5 plutôt qu'en RSA-PSS, c'est garder un encodage déterministe dont la vérification, mal programmée, a laissé passer des signatures forgées avec un petit exposant public, comme l'attaque de Bleichenbacher de 2006 sur l'exposant 3. Rien n'interdit encore cet usage hors de la négociation TLS 1.3, et c'est bien le problème : il survit dans les applications que personne ne relit, jusqu'au jour où une bibliothèque de vérification trop indulgente rencontre quelqu'un qui ne l'est pas.

Explication de la marmotte

RSA est une méthode pour signer numériquement un document, comme une signature manuscrite mais impossible à imiter sans la clé secrète. L'ancienne façon de préparer le document avant de le signer était trop prévisible, et des chercheurs ont trouvé comment fabriquer de fausses signatures quand le logiciel vérifiait mal. RSA-PSS ajoute un peu de hasard à chaque signature et une préparation plus solide. C'est la version recommandée aujourd'hui, obligatoire dans TLS 1.3 pour sécuriser les connexions des sites web.

Où ce terme est utilisé

← Tout le glossaire