Aller au contenu principal

3. Types de clés (Key Types)

Deux types de clés sont employés dans les primitives et les schémas définis dans ce document : clé publique RSA (RSA Public Key) et clé privée RSA (RSA Private Key). Ensemble, une clé publique RSA et une clé privée RSA forment une paire de clés RSA (RSA Key Pair).

Cette spécification prend en charge ce qu'on appelle le RSA « multi-premier » (Multi-prime), où le module peut avoir plus de deux facteurs premiers. L'avantage du RSA multi-premier est un coût de calcul inférieur pour les primitives de déchiffrement et de signature, à condition que le théorème des restes chinois (Chinese Remainder Theorem, CRT) soit utilisé. De meilleures performances peuvent être obtenues sur les plateformes monoprocesseur, mais dans une plus large mesure sur les plateformes multiprocesseur, où les exponentiations modulaires impliquées peuvent être effectuées en parallèle.

Pour une discussion sur la façon dont le multi-premier affecte la sécurité du cryptosystème RSA, le lecteur est renvoyé à [SILVERMAN].

3.1. Clé publique RSA (RSA Public Key)

Aux fins de ce document, une clé publique RSA se compose de deux composants :

n        module RSA (RSA Modulus), un entier positif
e exposant public RSA (RSA Public Exponent), un entier positif

Dans une clé publique RSA valide, le module RSA n est un produit de u nombres premiers impairs distincts r_i, i = 1, 2, ..., u, où u >= 2, et l'exposant public RSA e est un entier entre 3 et n - 1 satisfaisant GCD(e, λ(n)) = 1, où λ(n) = LCM(r_1 - 1, ..., r_u - 1). Par convention, les deux premiers nombres premiers r_1 et r_2 peuvent également être désignés respectivement par p et q.

Une syntaxe recommandée pour l'échange de clés publiques RSA entre implémentations est donnée dans l'annexe A.1.1 ; la représentation interne d'une implémentation peut différer.

3.2. Clé privée RSA (RSA Private Key)

Aux fins de ce document, une clé privée RSA peut avoir l'une des deux représentations.

Représentation 1

La première représentation consiste en la paire (n, d), où les composants ont les significations suivantes :

n       module RSA (RSA Modulus), un entier positif
d exposant privé RSA (RSA Private Exponent), un entier positif

Représentation 2

La deuxième représentation consiste en un quintuplet (p, q, dP, dQ, qInv) et une séquence (éventuellement vide) de triplets (r_i, d_i, t_i), i = 3, ..., u, un pour chaque nombre premier non présent dans le quintuplet, où les composants ont les significations suivantes :

p      le premier facteur, un entier positif
q le deuxième facteur, un entier positif
dP l'exposant CRT du premier facteur, un entier positif
dQ l'exposant CRT du deuxième facteur, un entier positif
qInv le (premier) coefficient CRT, un entier positif
r_i le i-ème facteur, un entier positif
d_i l'exposant CRT du i-ème facteur, un entier positif
t_i le coefficient CRT du i-ème facteur, un entier positif

Contraintes de validité

Dans une clé privée RSA valide avec la première représentation, le module RSA n est le même que dans la clé publique RSA correspondante et est le produit de u nombres premiers impairs distincts r_i, i = 1, 2, ..., u, où u >= 2. L'exposant privé RSA d est un entier positif inférieur à n satisfaisant :

e * d == 1 (mod λ(n))

où e est l'exposant public RSA correspondant et λ(n) est défini comme dans la section 3.1.

Dans une clé privée RSA valide avec la deuxième représentation, les deux facteurs p et q sont les deux premiers facteurs premiers du module RSA n (c'est-à-dire, r_1 et r_2) ; les exposants CRT dP et dQ sont des entiers positifs inférieurs à p et q, respectivement, satisfaisant :

e * dP == 1 (mod (p-1))
e * dQ == 1 (mod (q-1))

et le coefficient CRT qInv est un entier positif inférieur à p satisfaisant :

q * qInv == 1 (mod p)

Si u > 2, la représentation incluera un ou plusieurs triplets (r_i, d_i, t_i), i = 3, ..., u. Les facteurs r_i sont les facteurs premiers supplémentaires du module RSA n. Chaque exposant CRT d_i (i = 3, ..., u) satisfait :

e * d_i == 1 (mod (r_i - 1))

Chaque coefficient CRT t_i (i = 3, ..., u) est un entier positif inférieur à r_i satisfaisant :

R_i * t_i == 1 (mod r_i)

où R_i = r_1 * r_2 * ... * r_(i-1).

Une syntaxe recommandée pour l'échange de clés privées RSA entre implémentations, qui inclut des composants des deux représentations, est donnée dans l'annexe A.1.2 ; la représentation interne d'une implémentation peut différer.

Notes

Note 1 : La définition des coefficients CRT ici et les formules qui les utilisent dans les primitives de la section 5 suivent généralement l'algorithme de Garner [GARNER] (voir aussi l'algorithme 14.71 dans [HANDBOOK]). Cependant, pour la compatibilité avec les représentations des clés privées RSA dans PKCS #1 v2.0 et les versions précédentes, les rôles de p et q sont inversés par rapport au reste des nombres premiers. Ainsi, le premier coefficient CRT, qInv, est défini comme l'inverse de q mod p, plutôt que comme l'inverse de R_1 mod r_2, c'est-à-dire, de p mod q.

Note 2 : Quisquater et Couvreur [FASTDEC] ont observé l'avantage d'appliquer le CRT aux opérations RSA.