Anssi Guide Selection Crypto 1.0
Anssi Guide Selection Crypto 1.0
Anssi Guide Selection Crypto 1.0
GUIDE ANSSI
ANSSI-PA-079
8/3/2021
PUBLIC VISÉ :
.
.
. .
Informations
Attention
Ce document rédigé par l’ANSSI présente un « Guide de sélection d’algorithmes crypto-
graphiques ». Il est téléchargeable sur le site www.ssi.gouv.fr. Il constitue une production
originale de l’ANSSI. Il est à ce titre placé sous le régime de la « Licence ouverte » publiée par
la mission Etalab (www.etalab.gouv.fr). Il est par conséquent diffusable sans restriction.
Ces recommandations sont livrées en l’état et adaptées aux menaces au jour de leur publi-
cation. Au regard de la diversité des systèmes d’information, l’ANSSI ne peut garantir que
ces informations puissent être reprises sans adaptation sur les systèmes d’information cibles.
Dans tous les cas, la pertinence de l’implémentation des éléments proposés par l’ANSSI doit
être soumise, au préalable, à la validation de l’administrateur du système et/ou des personnes
.en charge de la sécurité des systèmes d’information.
Évolutions du document :
VERSION DATE NATURE DES MODIFICATIONS
1.0 8/3/2021 Version initiale
.
Table des matières
1 Introduction 4
1.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Classification des mécanismes cryptographiques . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Primitives et constructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Mécanismes symétriques et asymétriques . . . . . . . . . . . . . . . . . . . . . 6
1.3 Structure de ce guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Autres documents de référence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Vade-mecum de cryptographie 8
2.1 Emploi de la cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.1 Mécanismes symétriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.2 Mécanismes asymétriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Mises en garde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Utiliser des mécanismes complets, et non les primitives sous-jacentes . . . . . 11
2.2.2 Mécanismes cryptographiques : une sécurité sous conditions . . . . . . . . . . 11
2.2.3 Une clé, un usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Cycle de vie des clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.5 Utiliser des bibliothèques éprouvées . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.6 La créativité n’est pas recommandée ! . . . . . . . . . . . . . . . . . . . . . . . 13
.
6.4 Établissement de clé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7 Génération d’aléa 38
7.1 Source d’aléa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.2 Générateur d’aléa déterministe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.3 Génération de nombres aléatoires avec distribution de probabilité spécifique . . . . 39
7.3.1 Génération d’un entier modulo q . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.3.2 Génération de nombres premiers aléatoires . . . . . . . . . . . . . . . . . . . . 40
7.3.3 Génération d’un module RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Bibliographie 50
.
1
Introduction
1.1 Objectif
L’objectif de ce document est d’apporter une aide à la sélection des mécanismes cryptographiques.
Pour ce faire, il propose, sous forme de recommandations, une liste de mécanismes cryptographi-
ques standardisés à l’état de l’art qui permettent de remplir des objectifs de sécurité classiquement
assurés par des moyens cryptographiques, tels que la confidentialité, l’intégrité et l’authentifica-
tion. Ces recommandations s’adressent en particulier aux développeurs qui intègrent des méca-
nismes cryptographiques à leurs produits et aux administrateurs qui configurent les mécanismes
cryptographiques des produits qu’ils mettent en œuvre.
Ce document formule également des notes d’implémentation à destination des développeurs qui
implémentent des mécanismes cryptographiques et des évaluateurs qui analysent la robustesse de
ces implémentations. En particulier, ce document émet des mises en garde contre des erreurs d’im-
plémentation relevées dans des produits et dans la littérature qui dégradent fortement la sécurité
des mécanismes cryptographiques.
Ce document présente des mécanismes cryptographiques considérés comme fournissant des garan-
ties de sécurité acceptables à ce jour. Ces mécanismes peuvent être séparés en deux catégories, selon
leur niveau de robustesse estimé. Il s’agit du niveau de confiance attribué à leur capacité à résister
aux stratégies d’attaque constitutives de l’état de l’art de la cryptanalyse.
.
n Mécanismes obsolescents. Ces mécanismes figurent dans ce guide en raison de leur très large
déploiement. De ce fait les développeurs et administrateurs se trouvent souvent confrontés à
ces mécanismes, et il est utile de savoir comment se positionner vis-à-vis de leur emploi. Ces
mécanismes offrent un niveau de sécurité d’au moins 100 bits, et sont considérés comme four-
nissant des garanties acceptables à court terme. Cependant ils ne reflètent plus l’état de l’art
en matière de cryptographie : ils souffrent de limitations par rapport aux algorithmes recom-
mandés et leur emploi devrait être abandonné dans la mesure du possible au profit de méca-
nismes recommandés.
La liste des mécanismes présentés dans ce guide sera mise à jour pour refléter l’évolution de l’état
de l’art. Cela pourra conduire à retirer des mécanismes obsolescents de la liste des algorithmes
présentés s’ils sont considérés non plus comme obsolescents mais comme obsolètes, ou à déclasser
des mécanismes recommandés en mécanismes obsolescents, voire à les retirer complètement de
la liste des mécanismes présentés dans le cas où de nouvelles attaques menaceraient de manière
pratique leur sécurité.
Ainsi, le mode GCM 1 permet de construire un schéma de chiffrement authentifié symétrique per-
mettant d’assurer la confidentialité et l’intégrité des données en se fondant sur un algorithme
1. Galois Counter Mode
.
de chiffrement par bloc comme l’AES. Citons également à titre d’exemple le schéma de signa-
ture EC-DSA qui permet d’assurer l’intégrité, l’authentification d’origine de données et leur non-
répudiation. Ce schéma est une construction basée sur le problème du logarithme discret sur une
courbe elliptique (comme NIST P-256) et une fonction de hachage (comme SHA-256).
Un principe conducteur suivi dans ce document est que les constructions cryptographiques recom-
mandées doivent reposer sur des primitives recommandées.
Les fonctions de hachage, mécanismes cryptographiques sans clé, sont considérés comme des mé-
canismes cryptographiques symétriques en raison des principes de conception sur lesquels elles
reposent, qu’elles partagent avec les autres primitives cryptographiques symétriques.
.
n une table récapitulant les mécanismes recommandés, marqués R, et obsolescents, marqués O,
pour le type de mécanisme considéré. Si des restrictions s’appliquent aux valeurs de paramè-
tres pour lesquelles ces mécanismes sont considérés comme recommandés ou obsolescents, ces
restrictions apparaissent dans la colonne « taille de paramètres » de la table. Dans le cas où le
statut donné ne s’applique pas directement au mécanisme, mais uniquement à des constructions
reposant sur ce mécanisme, un astérisque est ajouté au statut. Ainsi un mécanisme marqué R*
n’est pas recommandé en tant que tel, mais peut être utilisé par une construction pour obtenir
un mécanisme recommandé. Par exemple, le mode CTR n’est pas recommandé en tant que
tel mais peut être utilisé dans une construction de type Encrypt-then-MAC pour obtenir un
chiffrement authentifié recommandé ;
n des notes d’implémentation visant à prévenir des implémentations défecteuses du mécanisme.
Les notes générales s’appliquent à tous les mécanismes d’un type donné. Les notes spécifiques
s’appliquent à un ensemble plus restreint de mécanismes ou à un seul mécanisme.
.
2
Vade-mecum de cryptographie
Dans cette section, on donne une brève description des mécanismes les plus courants et de leurs
fonctions.
.
modifier de façon contrôlée une donnée claire : certains mécanismes de chiffrement sûrs (comme
le mode CTR) le permettent. L’authentification peut être effectuée par un traitement distinct du
chiffrement, auquel cas une clé distincte de la clé de chiffrement est nécessaire, ou par un méca-
nisme combinant le chiffrement et l’authentification de message. Ces deux fonctions sont décrites
ci-dessous.
Dérivation de clé. Un mécanisme de dérivation de clé permet de dériver à partir d’une clé K et
d’un identifiant non secret (entier, chaîne de caractères), une clé K ′ . La connaissance de K permet
de dériver K ′ , mais la connaissance de K ′ ne permet pas de remonter à K . Ce mécanisme permet
de dériver à partir d’un secret initial unique plusieurs clés pour des usages différents. Comme nous
allons le voir au paragraphe suivant, un mécanisme de dérivation de clé n’est pas suffisant pour la
dérivation de clés à partir d’un mot de passe.
Hachage de mot de passe. Un mécanisme de hachage de mot de passe permet de calculer une
valeur de vérification V à partir d’un mot de passe M et d’une valeur variable non secrète ap-
pelée sel. La valeur V ne permet pas d’obtenir d’information sur M autrement qu’en essayant des
valeurs candidates pour M jusqu’à obtenir une coïncidence avec V . L’effort de calcul pour réaliser
un hachage de mot de passe est généralement réglable, et ajusté de façon à ralentir l’essai de
valeurs candidates pour M . Un utilisateur légitime en possession du mot de passe M peut réaliser
l’opération pour un effort de calcul modéré car il ne réalise l’opération qu’une fois, mais l’effort de
calcul pour un adversaire testant des valeurs candidates pour M sera plus élevé. La valeur V peut
être stockée et servir de valeur de référence pour une authentification à base de mot de passe, ou
servir à dériver des clés. Associée à un mécanisme de dérivation de clé, elle peut remplir ces deux
fonctions simultanément.
.
elles doivent généralement être distribuées de façon authentique, ce qui est le rôle des Infrastruc-
tures de Gestion de Clés (IGC) 2 , dont la description sort du cadre de ce guide.
Signature. L’opération privée de signature produit à partir d’un message M et de la clé privée
P r une signature σ (sigma) de ce message. L’opération publique de vérification permet de déter-
miner si σ est bien une signature valide de M produite en utilisant la clé privée correspondante à
une clé publique P u. Il n’est pas possible de produire une signature valide pour une clé publique
P u sans connaître la clé privée correspondante P r. La signature électronique permet donc au dé-
tenteur d’une clé privée de générer des signatures vérifiables par toute personne ayant accès à sa
clé publique. Comme dans le cas de l’authentification de message symétrique, ce mécanisme ne
protège pas contre le rejeu de messages signés. Une signature peut être conservée avec le message
signé pour prouver ultérieurement à un tiers son authenticité. De plus la signature est opposable
au signataire, dans la mesure où il est le seul détenteur de la clé privée permettant de la produire :
on parle de non-répudiation. Cette propriété n’est pas possible avec un mécanisme symétrique d’au-
thentification de message, car il n’est pas possible dans ce cas de séparer la capacité de vérification
du motif d’authentification de la capacité de produire de tels motifs.
Échange de clé (ou établissement de clé). L’échange de clé permet à deux correspondants dia-
loguant sur un canal public d’aboutir à un secret commun. Ce secret commun est en général utilisé
pour générer des clés utilisées dans des communications ultérieures. Pour assurer la sécurité de ces
protocoles contre les attaques actives, attaques de type Man-in-the-middle, où un adversaire s’in-
sère dans la communication et manipule les messages échangés lors du protocole d’échange de clé,
ces messages doivent être authentifiés. Ceci fournit de plus à chaque participant une garantie sur
l’identité de son correspondant (dans certaines variantes, comme dans la mise en œuvre la plus
courante de HTTPS, seul l’un des deux participants s’assure de l’identité de son correspondant).
Habituellement, les participants authentifiés possèdent chacun une clé privée et l’authentification
est rendue possible par la connaissance par les participants de la clé publique de leur correspon-
dant. Les protocoles d’échanges de clé sont mis en œuvre dans différents protocoles réseau visant
à établir un canal sécurisé (confidentiel et intègre), comme TLS ou IPSEC.
.
qui correspondent à des scénarios courants et bien compris, cette mise en œuvre est tout à fait
envisageable par des non-spécialistes rigoureux et faisant preuve de bon sens.
Hachage. Le hachage cryptographique est une transformation sans clé. Celle-ci produit à partir
d’une donnée de taille quelconque un haché (digest) de taille fixe. La transformation est conçue
pour garantir l’impossibilité de trouver deux données distinctes ayant le même haché. Le hachage
est un composant de nombreux mécanismes cryptographiques, comme certaines méthodes d’au-
thentification de message (par exemple HMAC), ou les signatures numériques. La transmission
d’un message accompagné de son haché peut permettre la détection d’erreurs de traitement ou de
transmission par recalcul du haché de la donnée reçue et comparaison avec le haché reçu. Cepen-
dant, un tel usage ne permet pas de se protéger d’un adversaire modifiant intentionnellement la
donnée. En effet, rien n’empêche l’adversaire de calculer et de transmettre le haché de la donnée
modifiée par ses soins. Pour garantir l’intégrité cryptographique d’une donnée, un mécanisme à
clé, de type MAC ou une signature asymétrique, doit être mis en œuvre.
Primitive RSA (« Textbook RSA ») La primitive RSA est la paire d’opérations mathématiques
inverses l’une de l’autre transformant des entiers de [0, N − 1], où N est un grand entier résul-
tat du produit de deux nombres premiers. Elle est utilisée dans les mécanismes cryptographiques
fondés sur RSA comme RSA-OAEP pour le chiffrement ou RSA-PSS pour la signature. La primi-
tive RSA ne doit pas être employée seule, bien qu’elle soit exposée dans certaines bibliothèques
cryptographiques comme OpenSSL.
Clés secrètes et biclés asymétriques. Les clés mises en œuvre par les mécanismes cryptographi-
ques doivent être construites à partir de valeurs aléatoires qui doivent impérativement provenir
.
d’un générateur aléatoire de qualité, en général spécialement prévu pour cet usage 3 . Pour les
mécanismes symétriques, ceci permet d’assurer leur résistance contre la recherche exhaustive, at-
taque générique consistant pour un adversaire à tester toutes les clés possibles. Pour les méca-
nismes asymétriques, ceci permet également d’assurer leur résistance contre la meilleure attaque
générique, mais aussi de se prémunir contre les attaques reposant sur une connaissance partielle
de la clé. En effet, dans le cas des mécanismes asymétriques, la recherche exhaustive n’est jamais
la meilleure attaque, et une connaissance partielle de la clé peut en outre avoir des conséquences
catastrophiques pour la sécurité.
Valeurs uniques, dites nonces. La mise en œuvre de mécanismes cryptographiques peut néces-
siter l’utilisation de valeurs non aléatoires, mais avec une garantie de non-réutilisation. La violation
de cette propriété d’unicité peut avoir des conséquences dramatiques sur la sécurité du mécanisme
qui les emploie, comme dans le cas des IV des algorithmes de chiffrement par flot. Dans certains
contextes, un compteur incrémenté à chaque utilisation peut être utilisé comme nonce s’il est de
taille suffisante pour éviter le dépassement de sa capacité 4 .
.
chaque fonction à assurer. En cryptographie asymétrique, des clés indépendantes sont générale-
ment générées pour des usages distincts.
Les algorithmes standards sont publics et leur sécurité a pu être étudiée de manière ouverte par
5. On sait depuis longtemps que le temps de réalisation d’un calcul peut révéler de l’information sur les secrets manipulés. Mais
il a été montré ces dernières années que la complexité des architectures des processeurs modernes pouvait créer de nombreux autres
chemins de fuite d’information entre processus, via des interactions malheureuses entre mécanismes comme la prédiction de branche-
ment et les caches de données par exemple.
.
la communauté académique. On dispose ainsi d’un certain recul sur leur robustesse. Le niveau de
confiance qui peut être attribué à un algorithme non standard est a priori moindre, car il n’a pu
bénéficier d’un examen aussi large.
De plus, l’implémentation d’algorithmes non standards pose les problèmes évoqués au paragraphe
2.2.5. Cette pratique doit donc être évitée. L’invention de protocoles interactifs originaux compor-
tant des objectifs de sécurité est également fortement déconseillée à des non-spécialistes. En ef-
fet, l’analyse des comportements inattendus dans un contexte interactif, en présence d’adversaires
éventuels susceptibles de communiquer de façon anormale avec les agents honnêtes, nécessite
elle aussi des compétences spécifiques. En cas de nécessité de propriétés de sécurité nouvelles, qui
ne peuvent être offertes par les mécanismes cryptographiques disponibles dans les bibliothèques
cryptographiques établies, il est conseillé de se rapprocher de spécialistes de la cryptographie en
mesure de mettre au point les méthodes nécessaires, ou capables de les rapprocher de techniques
existantes.
.
3
Primitives cryptographiques
symétriques
En cryptographie symétrique, la sécurité est fondée sur la confidentialité d’une clé connue par les
utilisateurs légitimes. La présente section présente les primitives cryptographiques recommandées
et donne quelques exemples de primitives cryptographiques obsolescentes.
Notes d’implémentation.
.
Note 3.1.a : Triple-DES 2 clés
Dans le cas du Triple-DES 2 clés, le nombre de blocs traités par une même clé ne doit
pas 20
. dépasser 2 blocs, soit environ 8 millions d’octets.
Lorsque la taille de bloc est de n = 128 bits, comme pour l’AES, une même clé peut traiter jusqu’à
259 blocs, ce qui ne pose généralement pas de contrainte de mise en œuvre.
Note d’implémentation.
.
3.3 Fonctions de hachage
Une fonction de hachage cryptographique est une fonction sans clé qui permet de transformer une
donnée de taille arbitraire 6 en une chaîne de bits de taille h fixe, appelée haché. On exige générale-
ment qu’une fonction de hachage cryptographique satisfasse plusieurs propriétés de sécurité. Tout
d’abord il doit être difficile de déterminer deux messages distincts dont les images par la fonction
de hachage soient identiques : on parle de résistance en collision. On attend également qu’étant
donné un message, il soit difficile de déterminer un autre message ayant la même image par la
fonction de hachage : on parle de résistance en seconde préimage. Enfin, étant donnée une valeur
de haché, il doit être difficile de déterminer un message dont l’image par la fonction de hachage
soit égale à cette valeur de haché : on parle de résistance en préimage.
Fonctions de hachage
R3
Les fonctions de hachage de la famille SHA-2 [FIPS180] et de la famille SHA-
3 [FIPS202] dont la taille de sortie est supérieure ou égale à 256 bits sont recom-
mandées.
.
6. En pratique, les fonctions de hachage standards limitent la taille des entrées traitables, mais ces limites sont suffisamment grandes
pour ne pas poser de contrainte de mise en œuvre.
.
4
Constructions cryptographiques
symétriques
Les constructions symétriques sont des mécanismes cryptographiques basés sur des primitives
cryptographiques symétriques et qui permettent de couvrir un large éventail d’objectifs de sécu-
rité.
.
Notes d’implémentation.
Pour assurer la sécurité au sens le plus fort, le mode opératoire de chiffrement doit ou bien générer
un vecteur d’initialisation (IV) aléatoire en début de chiffrement, ou bien utiliser comme vecteur
d’initialisation un argument dont la valeur ne peut être utilisée qu’une fois pour une clé donnée,
c’est-à-dire un nonce 7 . Pour chaque mode, sa spécification précise la stratégie adoptée. Tout écart
à la spécification modifie le mode et peut aboutir à un mode dont la sécurité est insuffisante,
comme par exemple le mode CBC utilisé avec un IV constant ou de manière plus générale avec un
IV prédictible.
Quelques modes opératoires de chiffrement, dits modes flot, comme OFB et CTR, opèrent en
masquant le message clair par une suite chiffrante dépendant de la clé et du vecteur d’initiali-
sation. Lors de l’utilisation de ces modes opérant à la manière d’un algorithme de chiffrement par
flot, il est essentiel de s’assurer qu’un même vecteur d’initialisation n’est pas utilisé pour chiffrer
plusieurs messages sous la même clé.
Certains modes de chiffrement, comme le mode CBC, ne traitent naturellement que des messages
dont la longueur est un multiple de la taille de bloc. Pour traiter des messages de longueur arbi-
traire avec ces modes, il est nécessaire d’opérer une transformation supplémentaire sur le dernier
bloc. Une procédure répandue consiste à compléter le dernier bloc par un padding, usuellement
une donnée présentant une redondance. La vérification du format du padding pendant le déchiffre-
ment peut laisser fuir de l’information sur le message déchiffré, ce qui est susceptible d’être exploité
pour remettre en cause la confidentialité des données protégées par ces mécanismes de chiffrement
[Vau02]. Par exemple, si l’entité qui réalise le déchiffrement se comporte différemment selon que le
padding du résultat du déchiffrement est correct ou non, un adversaire peut apprendre de cette dif-
férence de comportement la validité du padding. En agrégeant de telles informations apprises sur
des messages dérivés d’un chiffré cible, il devient possible pour l’adversaire de réaliser le déchiffre-
ment de ce chiffré cible. De manière plus générale, toute vérification de conformité à un format sur
le résultat d’un déchiffrement est susceptible de faire fuir de l’information. Par exemple, le format
HTML est exploité par les attaques décrites dans [PDM+18]. On qualifie de telles fuites d’oracle de
padding ou encore d’oracle de format.
.
De manière concrète, il s’agit de vérifier que l’implémentation ne présente pas de différence de
comportement observable selon la validité d’un padding ou d’un format. Par exemple, elle ne pro-
duit pas de message d’erreur permettant de distinguer les deux cas, n’interrompt pas l’exécution
d’un protocole de manière prématurée, et n’envoie pas de message vers l’extérieur selon la validité
d’un padding ou d’un format. Une autre manière de procéder est de s’assurer que la probabilité
pour un adversaire de soumettre à déchiffrement un chiffré non rejoué correspondant à un mes-
sage respectant le padding ou format est négligeable.
En général, il est difficile d’obtenir de telles assurances pour un mécanisme de chiffrement non
authentifié : l’étude doit en effet rentrer dans le détail de l’exploitation des messages déchiffrés.
Une manière systématique de se prémunir contre ce type d’attaque est d’utiliser un mécanisme de
chiffrement authentifié, dont la fonction de déchiffrement est implémentée de manière à vérifier
l’intégrité du chiffré avant tout autre traitement, cf Section 4.5. Cette architecture est beaucoup
plus robuste, car elle permet d’obtenir des assurances de sécurité fortes indépendamment du détail
de traitement du déchiffré.
Des modes de chiffrement spécifiques ont été conçus afin de garantir des tailles de chiffrés égales
aux tailles des clairs correspondants et de permettre un déchiffrement efficace en toute position
du chiffré. Ces propriétés sont satisfaites en limitant la perte de sécurité qui en résulte grâce à
l’utilisation de métadonnées additionnelles, comme les adresses des positions des chiffrés sur le
médium de stockage.
Notes d’implémentation.
.
Note 4.2.a : Chiffrement de disque et modes flot
Les modes de chiffrement de disque sont par nature des modes déterministes, pour
lesquels les valeurs jouant le rôle de vecteurs d’initialisation sont dérivées des po-
sitions où les données chiffrées sont stockées. Ceci rend l’utilisation de modes flot
inappropriée, dans la mesure où les chiffrés de deux messages clairs stockés succes-
sivement
. à la même position font fuir la différence des messages clairs.
.
4.3 Modes d'intégrité et codes d'authentification de
messages (MAC)
Un mode d’intégrité consiste en : une fonction de génération de code d’authentification de message
(MAC) prenant en entrées une clé secrète K et un message M et retournant un MAC µ ; une
fonction de vérification de MAC prenant en entrées K , M et µ et retournant Vrai ou Faux. Il ne doit
pas être possible pour un adversaire de générer une paire message/MAC valide originale, même
s’il dispose de la possibilité d’obtenir des paires message/MAC valides de la part des utilisateurs
légitimes.
Un mode d’intégrité peut reposer sur divers types de primitives, comme un algorithme de chiffre-
ment par bloc, une fonction de hachage, ou une fonction de hachage universel, cf R10.
Pour des raisons de bande passante, il est courant de tronquer la sortie d’une fonction de génération
de MAC. Afin que la probabilité pour un adversaire de produire aléatoirement un MAC valide reste
faible, la taille t de la sortie après troncature doit rester suffisamment grande.
Troncature de MAC
R7
Dans le cas général, il est recommandé de ne pas tronquer la sortie d’une fonction
de
. génération de MAC recommandée à strictement moins de 96 bits.
Dans des environnements contraints, de type cartes à puce, on rencontre parfois des MAC tronqués
à 64 bits.
Cette recommandation et cette note s’appliquent dans le cas général. Cependant, pour certains
schémas de MAC, il peut être nécessaire d’être plus restrictif en matière de troncature de MAC.
C’est notamment le cas de GMAC, cf. 4.5.f.
Note d’implémentation.
.
Note 4.3.b : Taille d'entrée constante
CBC-MAC n’est recommandé que dans le cas où, pour une clé donnée, tous les mes-
sages ont la même taille. Des attaques par extension de message sont trivialement
possibles lorsque des messages de taille variable sont autorisés, et son utilisation est
.donc proscrite dans ce cas.
Note d’implémentation.
Les notes relatives à GMAC sont partagées avec GCM, et peuvent être trouvées dans la section 4.5
relative au chiffrement authentifié.
.
4.4 Schémas symétriques d'authentification d'entité
Ces schémas permettent à une entité de prouver son identité à un correspondant en utilisant la
connaissance d’un secret. Par nature, ces schémas sont interactifs. Ils consistent généralement à
mettre en oeuvre un protocole de défi-réponse reposant sur l’utilisation d’aléa et d’une primitive
symétrique ou d’un mécanisme de chiffrement ou d’intégrité. Nous ne donnons pas de liste pour
ce type de schéma. Il est important de garder à l’esprit que même si ces schémas peuvent reposer
sur le calcul d’un motif d’intégrité, leurs objectifs de sécurité sont différents de ceux des schémas
d’authentification de données. Par conséquent, une même clé ne doit pas être utilisée pour un
mode d’intégrité et pour un schéma symétrique d’authentification d’entité.
Les schémas d’AE fournissent souvent une fonctionnalité supplémentaire, qui permet d’authenti-
fier, en plus des données chiffrées, des données dites additionnelles qui sont transmises en clair.
Un tel schéma est souvent appelé chiffrement authentifié avec données associées (AEAD, pour AE
with Associated Data). Un schéma d’AE ou d’AEAD peut être obtenu par combinaison d’un schéma
de chiffrement et d’un code d’authentification de message.
.
Mécanisme de chiffrement authentifié
R12
Les mécanismes Encrypt-then-MAC, GCM, CCM, EAX sont recommandés dès lors
qu’ils sont instanciés avec des primitives recommandées.
Le
. mécanisme ChaCha20-Poly1305 est recommandé.
Notes d’implémentation.
Les considérations sur la troncature des motifs d’intégrité, Recommandation R7 et Note 4.3.a, s’ap-
pliquent également aux schémas symétriques de chiffrement authentifié.
.
Note 4.5.c : Non-réutilisation de l'IV
L’IV doit être traité dans le périmètre de sécurité du schéma de chiffrement authen-
tifié. Par exemple, il est essentiel de s’assurer qu’un adversaire ne peut jamais provo-
quer l’utilisation d’une même valeur d’IV pour protéger deux paires (message, don-
nées associées) différentes avec la même clé. Une réutilisation d’un IV peut remettre
en cause la confidentialité de certains modes, cf Note 3.2.a. En outre dans le cas par-
.ticulier de GCM, la réutilisation d’un IV remet en cause l’intégrité des chiffrés.
Un mécanisme de chiffrement de clé est un schéma de chiffrement authentifié. Le fait que les
données protégées soient aléatoires permet d’utiliser un schéma de chiffrement authentifié déter-
ministe.
.
Schéma R/O Notes
SIV [RFC5297] R
AES-Keywrap [SP800-38F, algorithms KW and KWP] R
De nombreuses méthodes répandues permettent d’obtenir cette fonctionnalité avec un bon niveau
de sécurité. La liste suivante de mécanismes de dérivation de clés recommandés n’a par conséquent
pas vocation à être exhaustive.
Note d’implémentation.
.
tatives d’authentification, sans avoir à conserver leur valeur. En cas de compromission des valeurs
de vérification, un attaquant ne doit pas pouvoir retrouver un mot de passe fort.
Notes d’implémentation.
.
5
Primitives cryptographiques
asymétriques
En cryptographie asymétrique, la sécurité d’une primitive repose sur l’existence de deux fonctions
ou opérations mathématiques inverses l’une de l’autre et présentant une asymétrie, comme par ex-
emple la multiplication et la factorisation. Par asymétrie, on entend que le calcul de la première est
réalisable de manière efficace, alors que le calcul de la seconde nécessite de résoudre un problème
difficile, et n’est donc pas réalisable en pratique si la taille des objets manipulés est suffisamment
importante.
Une telle asymétrie est nécessaire pour générer des couples clé publique/clé privée pour lesquels il
n’est calculatoirement pas possible de retrouver la clé privée ou des informations sur la clé privée à
partir de la clé publique. Une telle asymétrie est également nécessaire pour assurer qu’un attaquant
connaissant la clé publique n’est pas capable d’effectuer des opérations impliquant la clé privée, et
ce même s’il dispose en plus de résultats de calculs effectués avec la clé privée dont il connaît ou a
choisi les entrées.
Ce chapitre traite des primitives asymétriques classiques ainsi que des problèmes mathématiques
auxquels elles sont reliées. Dans le chapitre suivant, nous verrons comment utiliser de telles prim-
itives pour construire des schémas cryptographiques plus complexes.
Dans la primitive RSA, on considère deux grands nombres premiers p et q et leur produit N =
pq que l’on appele module RSA. On note n = ⌊log2 (N )⌋ + 1 la taille en bit du module. La clé
publique P u est constituée du couple (e, N ) où e est un entier appelé exposant public ; la clé privée
P r est constituée d’un entier d appelé exposant privé, lié à p, q et e. La permutation publique
prend en entrée un entier m modulo N et effectue le calcul de l’exponentiation modulaire de m
à la puissance e (exposant public) modulo N . La permutation privée, inverse de la permutation
publique, prend en entrée un entier modulo N et effectue le calcul de l’exponentiation modulaire
de cet entier à la puissance d.
Cette construction est utilisée dans de nombreux schémas de chiffrement ou de signature RSA,
.
qui seront présentés dans les sections suivantes. Dans ces schémas, on fait intervenir, en plus de
la primitive, de l’aléa et un padding, pour lequel il existe d’ailleurs de nombreuses conventions. Il
est à noter que, comme décrit en section 2.2, la primitive seule ne peut, en aucun cas, être con-
sidérée comme un schéma de chiffrement ou de signature valide : l’absence de padding la rend
particulièrement fragile.
Notes d’implémentation. Une bonne génération de paires de clés RSA repose non seulement
sur l’utilisation d’un générateur d’aléa de bonne qualité, mais aussi sur le respect de conditions
additionnelles. On renvoie à la section 7.3.3 pour le traitement de la génération des biclés RSA.
Le problème du logarithme discret peut être décrit de la façon suivante : soit h un élément d’un
groupe G ; on note ωh l’ordre de h. La fonction d’exponentiation en base h dans G prend en entrée
un entier x (entre 1 et ωh − 1) et retourne X = hx . Calculer la fonction inverse revient à résoudre
le problème du logarithme discret, c’est-à-dire retrouver x étant donné X .
On peut utiliser comme groupe G le groupe multiplicatif d’un corps fini. Les corps finis les plus
largement utilisés sont ceux qui donnent les meilleures garanties en termes de sécurité, soit les
corps premiers GF(p) où p est un nombre premier. Dans la suite de ce document on se restreint
à leur cas. Les éléments du groupe G peuvent être assimilés aux entiers compris entre 1 et p − 1
inclus, et la fonction d’exponentiation est appelée exponentiation modulaire : X = hx mod p.
Le problème du logarithme discret sur un corps premier est considéré comme difficile à résoudre :
il n’existe, à l’heure actuelle, aucun algorithme de résolution ayant un temps de calcul raisonnable
en pratique.
Le problème du logarithme discret dans le groupe multiplicatif d’un corps GF(p) peut être uti-
lisé dans de nombreux protocoles d’échange de clé ou schémas de signature ou pour effectuer du
chiffrement hybride. Ces schémas seront décrits plus en détail en section 6. Selon la manière d’u-
tiliser la primitive en question, x et X peuvent parfois représenter une clé privée et la clé publique
associée, ou encore un exposant Diffie-Hellman et la valeur publique associée.
.
Les paramètres qui définissent un groupe multiplicatif sur un corps fini sont constitués d’un nom-
bre premier p appelé module, un entier g appelé générateur et son ordre q .
Notes d’implémentation.
Quelques précautions doivent être prises pour éviter les attaques de type petit sous-groupe ou
sous-groupe incorrect.
Le problème du logarithme discret sur courbe elliptique peut être défini de la manière suivante :
soit p un nombre premier et GF(p) le corps à p éléments ; soit E une courbe elliptique définie sur
GF(p) et Q un point d’ordre ωQ de la courbe. La fonction de multiplication scalaire en base Q sur
E prend en entrée un entier x (entre 1 et ωQ − 1) appelé scalaire et retourne un point X = [x]Q.
Résoudre le problème du logarithme discret sur E , c’est parvenir à retrouver l’entier x étant donné
le point X . Selon le schéma cryptographique, x et X peuvent représenter (une partie de) la clé
privée et la clé publique associée, ou bien un scalaire éphémère Diffie-Hellman et le point public
associé.
Les paramètres de courbes elliptiques sont constitués d’un nombre premier p, des coefficients de
l’équation de la courbe, d’un point P de la courbe appelé point de base et de son ordre q .
.
Paramètres de courbes elliptiques pour le DLOG
R18
Les paramètres de courbes elliptiques P256r1, P384r1 et P512r1 de la famille Brain-
pool, les paramètres de courbes elliptiques P-256, P-384 et P-521 du NIST et les
.paramètres de courbes Curve25519 et Curve448 sont recommandés.
Notes d’implémentation.
Quelques précautions doivent être prises pour éviter les attaques de type petit sous-groupe ou
sous-groupe incorrect.
Les spécifications des schémas cryptographiques mettant en œuvre les courbes Curve25519 et
Curve448 satisfont usuellement ces conditions par construction.
.
de problèmes mathématiques difficiles à résoudre qui permettent de construire des primitives
asymétriques.
n les problèmes fondés sur les réseaux tels que le problème LWE, apprentissage avec erreurs (qui
fournit des familles de primitives résistant potentiellement aux ordinateurs quantiques) ;
n la cryptographie fondée sur les codes, qui repose sur la difficulté de décoder un code correcteur
en présence d’erreurs aléatoires (qui fournit des familles de primitives résistant potentiellement
aux ordinateurs quantiques) ;
n la cryptographie multivariée qui repose sur la difficulté à résoudre des systèmes d’équations
polynomiales faisant intervenir un grand nombre de variables (qui fournit des familles de prim-
itives résistant potentiellement aux ordinateurs quantiques) ;
n les problèmes de recherche de chemins dans des graphes d’isogénies de courbes elliptiques.
Comme mentionné précédemment, ces différentes familles de primitives ainsi que les probléma-
tiques liées à leur implémentation ont reçu beaucoup moins d’attention de la part de la com-
munauté cryptographique que les problèmes classiques de factorisation et de résolution du loga-
rithme discret. Par conséquent nous ne recommandons l’utilisation indépendante d’aucune prim-
itive asymétrique particulière reposant sur l’un de ces problèmes.
Si l’on souhaite utiliser de tels mécanismes, ce qui paraît raisonnable lorsque les informations
traitées doivent être protégées au-delà de 2030, ils doivent l’être avec beaucoup de précautions et
combinés avec des primitives classiques.
Hybridation
R19
Il est recommandé de ne pas utiliser à ce stade de manière indépendante un schéma
basé sur ces primitives asymétriques, et lorsqu’un tel schéma est mis en œuvre, de
combiner son emploi avec un schéma basé sur des primitives asymétriques éprouvées
ou
. avec un schéma symétrique mettant en œuvre une clé pré-partagée.
Il existe aujourd’hui un réel besoin de standardiser des schémas résistants face à la menace quan-
tique. Ainsi des candidats post-quantiques reçoivent actuellement une attention particulière de la
part de la communauté scientifique et des organismes de standardisation.
.
6
Constructions cryptographiques
asymétriques
Certains problèmes mathématiques asymétriques peuvent être utilisés pour construire des méca-
nismes cryptographiques asymétriques. Dans de tels mécanismes, un utilisateur dispose d’un biclé
asymétrique, c’est-à-dire d’une clé publique P u (qui peut être publiée), et d’une clé privée P r (qui
doit nécessairement rester confidentielle). Il est possible, pour certains mécanismes asymétriques,
de faire la preuve mathématique que la sécurité du mécanisme est équivalente à la difficulté de
résoudre le problème mathématique sous-jacent, c’est-à-dire qu’il est impossible, sauf à avoir résolu
ce problème, d’attaquer le mécanisme, par exemple en retrouvant la clé privée, en déchiffrant un
message, ou en contrefaisant une signature.
La sécurité de tout mécanisme asymétrique est limitée par celle du problème mathématique sous-
jacent. Ce problème doit donc être d’un niveau de difficulté suffisant. En particulier, les condi-
tions de taille de clé des paragraphes précédents sont également valables pour les mécanismes
asymétriques.
.
Mécanismes de chiffrement asymétrique
R20
Les mécanismes de chiffrement asymétrique RSA-OAEP, ECIES-KEM et DLIES-KEM
sont
. recommandés.
Notes d’implémentation.
.
Primitive Mécanisme R/O Notes
RSA PSS [PKCS1, RFC8017] R
KCDSA [ISO14888-3] R
FF-DLOG SDSA [ISO14888-3] R 6.2.b
DSA [FIPS186, ISO14888-3] R
EC-KCDSA [ISO14888-3] R
EC-DSA [FIPS186, ISO14888-3] R 6.2.b
EC-DLOG
EC-GDSA [BSI-TR-03111] R
EC-SDSA [ISO14888-3] R
EC-FDSA [ISO14888-3] R
RSA PKCS#1v1.5 [PKCS1, RFC8017, ISO9796-2] O 6.2.a
Il est à noter que les schémas ci-dessus sont recommandés à condition d’être basés sur une fonction
de hachage recommandée et d’utiliser des tailles de paramètres recommandées pour la primitive
asymétrique sous-jacente, cf Section 5.
Notes d’implémentation.
.
Les recommandations et notes d’implémentation données en 4.4 s’appliquent également au cas
des mécanismes d’authentification asymétriques.
Le mécanisme le plus utilisé pour l’établissement de clé secrète entre deux entités est le proto-
cole de Diffie-Hellman. Il repose sur une instanciation du problème du logarithme discret dans un
groupe où ce problème est suffisamment difficile. Ce mécanisme est le suivant :
Tel quel, ce protocole est vulnérable entre autres à une attaque de type Man-in-the-middle. Il faut
donc lui ajouter des étapes garantissant l’authentification des deux parties en communication et
l’authentification de l’échange.
Il est à noter que les schémas ci-dessus sont recommandés à condition d’utiliser des tailles de
paramètres recommandées pour les primitives asymétriques sous-jacentes, cf Section 5.
Note d’implémentation.
.
7
Génération d'aléa
n Réaliser des tests statistiques sur les sorties de la source. Dans cette approche en boîte noire,
aucune connaissance spécifique de la source n’est requise pour conduire le test. Cependant, cette
approche souffre de deux défauts. D’abord, les tests statistiques sont génériques et ne peuvent
être utilisés que pour détecter des défauts classiques de la source d’aléa par rapport à une source
d’aléa idéale. De plus, cette approche n’apporte pas d’assurance sur la distribution des sorties
de la source d’aléa. Malgré ces limitations, les tests statistiques restent pertinents pour détecter
d’éventuelles défaillances de la source d’aléa.
n Modéliser le processus stochastique de la source. Cette approche requiert une compréhen-
sion approfondie du principe de construction de la source d’aléa, et essaie d’estimer la qualité
de la source à partir de l’étude d’une modélisation théorique de son fonctionnement. Cette ap-
proche apporte une meilleure assurance, mais est difficile à mettre en œuvre, aussi bien de par
l’accès qu’elle nécessite aux principes de conception de la source que par le niveau d’expertise
qui doit être déployé par les évaluateurs, dans des domaines variés, notamment en physique,
électronique et statistiques. Certains aspects, comme l’adéquation entre la source d’aléa et sa
modélisation, restent difficiles à évaluer.
.
Schéma R/O Notes
HMAC-DRBG [SP800-90A, ISO18031] R
Hash-DRBG [SP800-90A, ISO18031] R
CTR-DRBG [SP800-90A, ISO18031] R
Note d’implémentation.
.
Note 7.3.a : Réduction modulaire de valeurs aléatoires
La technique de tirage aléatoire d’un entier modulo q consistant à générer un entier
de ℓ = ⌈log2 (q)⌉ bits et à le réduire modulo q introduit un biais non négligeable dans
la loi de probabilité du résultat, ce qui peut conduire à des attaques sur le mécanisme
.cryptographique reposant sur le générateur de nombre aléatoire.
La technique par rejet assure la génération uniforme modulo q au prix d’appels additionels, en
nombre variable, au générateur de bits aléatoires. La technique par utilisation d’aléa additionnel
permet de réduire le biais de la méthode de génération d’un entier aléatoire modulo q de manière
à ce que ce biais devienne négligeable, au prix de 64 bits d’aléa supplémentaire.
Ces méthodes ne sont pas vulnérables à des attaques de type ROCA [NSS+17].
Tests de primalité
R26
Le test de pseudo-primalité de Miller-Rabin est recommandé.
.
.
Selon [FIPS186, Appendix F.1], la table 7.1 donne le nombre t d’itérations du test de Miller-Rabin
qui est nécessaire pour atteindre cette probabilité quand la primalité d’un nombre aléatoire impair
de k bits est testée. En particulier, 6 itérations sont nécessaires pour tester des candidats de 1024
bits, et 4 itérations sont nécessaires pour des candidats de 1536 bits. On note que chacune de ces
itérations opère sur une base aléatoire a.
T 7.1 – Nombre t d’itérations du test de Miller-Rabin en fonction de la taille en bit du candidat
impair généré aléatoirement testé.
t k
6 950 ≤k< 1041
5 1041 ≤k< 1297
4 1297 ≤k< 1729
3 1729 ≤k< 2626
2 2626 ≤k< 5701
1 5701 ≤k
Notes d’implémentation.
La génération de module RSA s’appuie sur un générateur de nombres premiers aléatoires. De plus,
des conditions additionnelles doivent être satisfaites.
.
Note 7.3.d : Taille de l'exposant privé
La taille de l’exposant privé d doit être suffisamment grande, c’est-à-dire d > 2n/2 , où
. désigne la taille en bits du module. Ceci est garanti pour des petites valeurs de e.
n
.
Glossaire
Adversaire. Entité malveillante ayant pour but de remettre en cause l’objectif de sécurité d’un
mécanisme cryptographique.
Algorithme cryptographique. Procédure de calcul bien définie qui prend un nombre d’entrées
donné, produit une valeur de sortie, et satisfait une propriété de sécurité.
Authentification de l’origine des données. Confirmation que la source prétendue d’une donnée
reçue est légitime.
Biclé asymétrique. Paire de clés liées mathématiquement, telles que la clé privée définit une
transformation secrète et la clé publique définit une transformation publique.
Clé cryptographique. Séquence de symboles qui contrôle l’exécution d’une fonction cryptogra-
phique.
Clé secrète. Clé cryptographique utilisée dans des techniques de cryptographie symétrique par
un ensemble d’entités prédéfini.
Confidentialité. Propriété qui assure qu’une information n’est ni disponible ni divulguée à des
entités non autorisées.
Intégrité. Propriété qui assure que des données n’ont été ni modifiées ni détruites d’une manière
non autorisée.
Mécanisme cryptographique. Terme général pour désigner une fonction de sécurité utilisant
de la cryptographie.
.
Non-répudiation. Propriété qui assure qu’une entité ne peut pas renier un engagement ou une
action passés.
.
Annexe A
Niveau de sécurité
n Complexité en temps. Elle correspond à la quantité de calculs requise par l’attaque à partir des
données fournies par l’exécution du mécanisme cryptographique. Par exemple, la complexité
en temps de la recherche exhaustive d’une clé AES-128 est d’environ 2128 opérations.
n Complexité en mémoire. Elle mesure la quantité de mémoire nécessaire pour réaliser l’attaque.
n Complexité en données. Elle mesure la quantité de données d’entrée et/ou de sortie du méca-
nisme que l’adversaire doit collecter afin de pouvoir exécuter son attaque (par exemple des
clairs connus ou choisis et les chiffrés correspondants dans le cas d’un mécanisme de chiffre-
ment).
Toutes ces mesures de complexité peuvent également être combinées en considérant les compro-
mis temps/mémoire/données : par exemple il est parfois possible de diminuer la complexité en
temps d’une attaque en en augmentant la complexité en mémoire ou en données.
Les recommandations et notes d’implémentation de ce guide sont guidées par les principes sui-
vants :
1. Les mécanismes recommandés doivent offrir un niveau de sécurité contre les attaques hors
ligne d’au moins 128 bits. Un niveau de sécurité de 100 bits reste actuellement toléré pour les
mécanismes obsolescents, mais la marge de sécurité contre des attaques pratiques qui en résulte
est plus faible.
.
2. Les niveaux de complexité en données acceptables sont plus bas. En effet, l’échange de données
avec un processus, un équipement ou un serveur qui met en œuvre un mécanisme cryptogra-
phique est restreint par les limitations physiques du dispositif (par exemple le débit du canal
de communication d’une carte à puce), ou des limitations qui peuvent être imposées par le dis-
positif lui-même (par exemple par l’expiration des clés cryptographiques). Il est donc suffisant
d’analyser la sécurité du mécanisme contre des attaquants qui n’ont accès qu’à une quantité
de données limitée. Par exemple, sur un réseau d’un débit de 100 gigabits, le temps nécessaire
à l’échange de 264 blocs AES est de plusieurs siècles. Il n’y a donc en pareil cas pas lieu de se
préoccuper d’attaques nécessitant d’accéder à plus de 264 blocs de données.
Bien qu’aucun ordinateur quantique de taille suffisamment grande pour permettre d’exécuter ces
algorithmes sur des paramètres cryptographiques et donc remettre en cause la sécurité de mé-
canismes cryptographiques à l’état de l’art n’ait été réalisé à ce jour, le développement d’un tel
dispositif fait l’objet d’un effort soutenu 8 , et des experts estiment qu’il pourrait aboutir dans
les prochaines décennies. Le présent guide ne recommande aucun mécanisme cryptographique
asymétrique dont la sécurité résisterait à des attaques réalisées sur un tel ordinateur quantique.
De tels mécanismes asymétriques seront introduits dans des révisions futures de ce guide, et feront
suite à l’évaluation en cours de la sécurité de mécanismes candidats de ce type.
Les données et communications chiffrées qui sont enregistrées aujourd’hui pourraient être décryp-
tées dans le futur par à une attaque mettant en œuvre un ordinateur quantique. Par conséquent,
des mesures de protection doivent d’ores et déjà être prises si l’on souhaite protéger la confiden-
tialité à long terme de données contre d’éventuelles attaques de ce type. Pour les mécanismes
symétriques, il est alors recommandé d’adopter un niveau de sécurité pré-quantique de 256 bits.
8. avec notamment la réalisation de processeurs quantiques de taille modeste
.
Pour les mécanismes asymétriques, il est recommandé d’utiliser des solutions hybrides, combinant
des mécanismes asymétriques éprouvés, mais vulnérables à des attaques exécutées par un ordina-
teur quantique, avec des mécanismes asymétriques supposés résistants à l’ordinateur quantique,
mais pour lesquels l’assurance de robustesse vis-à-vis des attaques réalisées à l’aide d’ordinateur
classique est moindre. Une telle combinaison permet en effet de ne pas dégrader le niveau d’assur-
ance vis-à-vis des attaques classiques, et d’espérer obtenir une résistance vis-à-vis d’attaques quan-
tiques. Les développeurs de systèmes devant protéger des informations au-delà de 2030 devraient
considérer l’adoption de telles mesures, et préparer les moyens d’une migration des mécanismes
cryptographiques qu’ils mettent en œuvre vers de nouveaux mécanismes (possiblement hybrides)
résistants à la cryptanalyse quantique.
.
Annexe B
Génération de nombre premier et de
biclé RSA
Entrée : un intervalle I = [a, b] ∩ N dans lequel doit se situer le premier à générer, un petit entier
naturel B satisfaisant ΠB ≪ b − a, un test optionnel Test encodant des propriétés additionnelles
du premier à générer, et un test de primalité TestPrime
.
B.2.1 Génération de biclé RSA
Entrée : n, la longueur en bit du module généré et e l’exposant public
.
Bibliographie
[ANSI-X9-63] American National Standards Institute.
ANSI X9.63-2011 – Public Key Cryptography for the Financial Services Industry - Key Agreement and
Key Transport Using Elliptic Curve Cryptography, 2011.
[BFK+12] Romain Bardou, Riccardo Focardi, Yusuke Kawamoto, Lorenzo Simionato, Graham
Steel, and Joe-Kai Tsay.
Efficient Padding Oracle Attacks on Cryptographic Hardware.
In Reihaneh Safavi-Naini and Ran Canetti, editors, Advances in Cryptology - CRYPTO 2012 - 32nd
Annual Cryptology Conference, Santa Barbara, CA, USA, August 19-23, 2012. Proceedings, volume
7417 of Lecture Notes in Computer Science, pages 608–625. Springer, 2012.
.
[FIPS202] National Institute of Standards and Technology.
FIPS PUB 202 : SHA-3 Standard : Permutation-Based Hash and Extendable-Output Functions, 2015.
[ISO10116] ISO/IEC.
ISO/IEC 10116 :2017 – Information technology – Security techniques – Modes of operation for an
n-bit block cipher, 2017.
[ISO10118-3] ISO/IEC.
ISO/IEC 10118-3 :2018 – Information technology – Security techniques – Hash-functions – Part 3 :
Dedicated hash-functions, 2018.
[ISO11770-3] ISO/IEC.
ISO/IEC 11770-3 :2015 – Information technology – Security techniques – Key management – Part 3 :
Mechanisms using asymmetric techniques, 2015.
[ISO14888-3] ISO/IEC.
ISO/IEC 14888-3 :2018 – Information technology – Security techniques – Digital signatures with
appendix – Part 3 : Discrete logarithm based mechanisms, 2018.
[ISO18031] ISO/IEC.
ISO/IEC 18031 :2011 – Information technology – Security techniques – Random bit generation, 2011.
[ISO18033-2] ISO/IEC.
ISO/IEC 18033-2 :2006 – Information technology – Security techniques – Encryption Algorithms –
Part 2 : Asymmetric ciphers, 2006.
[ISO18033-3] ISO/IEC.
ISO/IEC 18033-3 :2010 – Information technology – Security techniques – Encryption Algorithms –
Part 3 : Block ciphers, 2010.
[ISO19772] ISO/IEC.
ISO/IEC 19772 :2009 – Information technology – Security techniques – Authenticated encryption,
2009.
[ISO9796-2] ISO/IEC.
ISO/IEC 9796-2 :2010 – Information technology – Security techniques – Digital signature schemes
giving message recovery – Part 2 : Integer factorization based mechanisms, 2010.
[ISO9797-1] ISO/IEC.
ISO/IEC 9797-1 :2011 – Information technology – Security techniques – Message Authentication
Codes (MACs) – Part 1 : Mechanisms using a block cipher, 2011.
[ISO9797-2] ISO/IEC.
ISO/IEC 9797-2 :2011 – Information technology – Security techniques – Message Authentication
Codes (MACs) – Part 2 : Mechanisms using a dedicated hash-function, 2011.
[Lel13] J. Lell.
Practical malleability attack against CBC-Encrypted LUKS partitions, 2013.
http://www.jakoblell.com/blog/2013/12/22/practical-malleability-attack-against-
cbc-encrypted-luks-partitions.
[Man01] James Manger.
A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standard-
ized in PKCS #1 v2.0.
.
In Joe Kilian, editor, Advances in Cryptology - CRYPTO 2001, 21st Annual International Cryptol-
ogy Conference, Santa Barbara, California, USA, August 19-23, 2001, Proceedings, volume 2139 of
Lecture Notes in Computer Science, pages 230–238. Springer, 2001.
[NSS+17] Matus Nemec, Marek Sys, Petr Svenda, Dusan Klinec, and Vashek Matyas.
The Return of Coppersmith’s Attack : Practical Factorization of Widely Used RSA Moduli.
In 24th ACM Conference on Computer and Communications Security (CCS’2017), pages 1631–1648.
ACM, 2017.
[PDM+18] Damian Poddebniak, Christian Dresen, Jens Müller, Fabian Ising, Sebastian Schinzel,
Simon Friedberger, Juraj Somorovsky, and Jörg Schwenk.
Efail : Breaking S/MIME and OpenPGP Email Encryption using Exfiltration Channels.
In William Enck and Adrienne Porter Felt, editors, 27th USENIX Security Symposium, USENIX
Security 2018, Baltimore, MD, USA, August 15-17, 2018, pages 549–566. USENIX Association, 2018.
[RFC5297] D. Harkins.
Synthetic Initialization Vector (SIV) Authenticated Encryption Using the Advanced Encryption Stan-
dard (AES), 2008.
.
[SCES-ACM] SOG-IS Crypto Working Group.
SOG-IS Crypto Evaluation Scheme, Agreed Cryptographic Mechanisms, 2020.
version 1.2, "https://www.sogis.eu/documents/cc/crypto/SOGIS-Agreed-Cryptographic-
Mechanisms-1.2.pdf".
[SP800-38A] National Institute of Standards and Technology.
SP800-38A : Recommendation for Block Cipher Modes of Operation, 2001.
[SP800-38Aadd] National Institute of Standards and Technology.
SP800-38A-Addendum : Recommendation for Block Cipher Modes of Operation : Three Variants of
Ciphertext Stealing for CBC Mode, 2010.
[SP800-38B] National Institute of Standards and Technology.
SP800-38B : Recommendation for Block Cipher Modes of Operation : The CMAC Mode for Authen-
tication, 2005.
[SP800-38C] National Institute of Standards and Technology.
SP800-38C : Recommendation for Block Cipher Modes of Operation : The CCM Mode for Authenti-
cation and Confidentiality, 2004.
[SP800-38D] National Institute of Standards and Technology.
SP800-38D : Recommendation for Block Cipher Modes of Operation : Galois/Counter Mode (GCM)
and GMAC, 2007.
[SP800-38E] National Institute of Standards and Technology.
SP800-38E : Recommendation for Block Cipher Modes of Operation : The XTS-AES Mode for Confi-
dentiality on Storage Devices, 2010.
[SP800-38F] National Institute of Standards and Technology.
SP800-38F : Recommendation for Block Cipher Modes of Operation : Methods for Key Wrapping,
2012.
[SP800-56A] National Institute of Standards and Technology.
SP800-56A Rev. 3 : Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Log-
arithm Cryptography, 2018.
[SP800-56C] National Institute of Standards and Technology.
SP800-56C Rev. 2 : Recommendation for Key-Derivation Methods in Key-Establishment Schemes,
2020.
[SP800-67] National Institute of Standards and Technology.
SP800-67 Rev. 2 : Recommendation for the Triple Data Encyption Algorithm (TDEA) Block Cipher,
2017.
[SP800-90A] National Institute of Standards and Technology.
SP800-90A Rev. 1 : Recommendation for Random Number Generation Using Deterministic Random
Bit Generators, 2015.
[Vau02] Serge Vaudenay.
Security Flaws Induced by CBC Padding - Applications to SSL, IPSEC, WTLS ...
In Lars R. Knudsen, editor, Advances in Cryptology - EUROCRYPT 2002, International Conference
on the Theory and Applications of Cryptographic Techniques, Amsterdam, The Netherlands, April
28 - May 2, 2002, Proceedings, volume 2332 of Lecture Notes in Computer Science, pages 534–546.
Springer, 2002.
.
Liste des recommandations
. R1 Algorithmes de chiffrement par bloc 15
. R3 Fonctions de hachage 17
. R11 Taille pour la valeur aléatoire utilisée comme défi pour l’authentification d’entité 24
. R12 Mécanisme de chiffrement authentifié 25
. R13 Mécanismes de chiffrement de clé 26
. R14 Mécanismes de dérivation de clés 27
. R15 Mécanisme de hachage de mots de passe 28
. R19 Hybridation 33
.
GUIDE DE SÉLECTION D'ALGORITHMES CRYPTOGRAPHIQUES – 55
.
.
ANSSI-PA-079
Version 1.0 - 8/3/2021
Licence ouverte / Open Licence (Étalab - v2.0)