Nombre rien-dans-la-manche

From Wikipedia, the free encyclopedia

Carte dissimulée dans une manche.

Les nombres rien-dans-la-manche (en anglais : nothing-up-my-sleeve number) sont des nombres utilisés en cryptographie dont la définition leur évite d'être soupçonnés d'avoir des propriétés cachées. La formule est empruntée au monde de la prestidigitation, lorsque le magicien montre qu'il ne cache pas de carte dans sa manche avant son tour.

Ces nombres sont utilisés dans la spécification de fonctions cryptographiques telles que les fonctions de hachage et les algorithmes de chiffrement, qui ont souvent besoin de constantes arbitraires, explicitement définies, par exemple pour initialiser leur état ou effectuer une permutation initiale sur leur entrée.

On peut alors choisir les valeurs de ces constantes afin qu'il soit évident qu'elles n'aient pas pu être manipulées dans un but néfaste, par exemple, pour créer une porte dérobée à l'algorithme[1]. En utilisant des nombres connus d'avance ou créés d'une manière qui laisse peu de place possible à l'ajustement ou la manipulation, on peut ainsi dissiper de tels soupçons.

Par exemple, on peut utiliser comme constante initiale un nombre formé des 10 premières décimales de π[2]. Un algorithme qui l'utilise dans sa définition sera vu comme plus digne de confiance qu'un autre qui utiliserait les décimales de π à partir de la 10 294 317e décimale. En effet, dans le dernier cas, le concepteur de l'algorithme aurait pu sélectionner spécifiquement ce point de départ pour que le nombre choisi affaiblisse les propriétés de la fonction, ce que le concepteur pourrait ensuite exploiter. Leur utilisation est motivée par une controverse qui a rapidement fait surface autour du Data Encryption Standard, un standard de chiffrement publié par le gouvernement américain en 1975. Sa définition fit l'objet de critiques; en effet aucune explication n'avait été fournie pour les constantes utilisées dans ses tables de substitutions (ou S-box).

On supposa alors que ces constantes avaient été choisies par la NSA pour rendre les messages chiffrés avec ce standard plus faciles à déchiffrer. Il fut découvert plus tard qu'elles avaient effectivement été soigneusement sélectionnées, non pas pour affaiblir, mais pour renforcer l'algorithme contre une technique de cryptanalyse encore tenue secrète à l'époque : la cryptanalyse différentielle[3]. Toutefois, à la suite de cette controverse, il apparut nécessaire de faire preuve de transparence dans le choix des constantes pour les normes cryptographiques.

On conjecture que, dans la représentation en notation positionnelle (dans une base quelconque) de nombre réels tels que π, e ou les racines carrées, tous les chiffres apparaissent à la même fréquence (ce sont des nombres normaux). Ces nombres peuvent être considérés comme l'opposé des nombres aléatoires au sens de Chaitin-Kolmogorov, puisque la suite de leurs chiffres est d'aspect aléatoire mais ils ont une entropie d'information très faible. Ces nombres sont donc des candidats idéaux pour générer des suites de chiffres au-dessus de tout soupçon.

Exemples

  • Ronald Rivest utilisa la fonction sinus pour générer les constantes de la fonction de hachage MD5[4].
  • La National Security Agency aux États-Unis utilisa des racines carrées de petits nombres entiers pour produire les constantes utilisées dans l'algorithme SHA-1. Les fonctions SHA-2 utilisent les racines carrées et les racines cubiques des petits nombres premiers[5]. SHA-1 utilise également le nombre hexadécimal 0123456789ABCDEFFEDCBA9876543210F0E1D2C3 comme valeur de hachage initiale.
  • L'algorithme de chiffrement Blowfish utilise la représentation binaire de π (sans le 3 initial) pour initialiser l'étape de préparation des clés[2].
  • La RFC 3526[6] spécifie des nombres premiers pour le protocole Internet Key Exchange qui sont également générés à partir de π.
  • La S-box de l'algorithme de chiffrement NewDES est dérivée de la déclaration d'indépendance des États-Unis[7].
  • L'algorithme DFC, candidat au standard de chiffrement AES, dérive toutes ses constantes arbitraires, y compris toutes les entrées de la S-box, à partir du développement binaire de e[8].
  • Le schéma de clé ARIA utilise le développement binaire de 1/ π[9].
  • Le schéma de clé du chiffrement RC5 utilise des chiffres binaires provenant à la fois de e et du nombre d'or[10].
  • Plusieurs algorithmes de chiffrement, par exemple TEA et Red Pike, utilisent 2654435769 ou 0x9e3779b9 qui est ⌊2 32 / ϕ ⌋, où ϕ est le nombre d'or.
  • La fonction de hachage BLAKE, finaliste du concours SHA-3, utilise une table de 16 mots constants qui sont les 512 ou 1024 bits de initiaux de la partie décimale de π .
  • Le schéma de clé de l'algorithme KASUMI utilise 0x123456789ABCDEFFEDCBA9876543210 pour dériver la clé modifiée.
  • La famille de chiffrements Salsa20 utilise la chaîne ASCII "expand 32-byte k" comme constantes dans son processus d'initialisation de bloc.

Contre-exemples

Limites

Notes et références

Related Articles

Wikiwand AI