EPIGRAPHE Si les mathématiques offraient mille exemples différents d’une même règle, la preuve d’un seul de ces exemples démontrerait l’exactitude de tous les autres. « MARY BAKER Eddy» Page | i DEDICACE A l’Eternel, Père-Mère Dieu ; A toute ma famille ; A ma future épouse. Je dédie ce travail. Page | ii REMERCIEMENTS Nos sincèrement remerciements au Professeur Dr. MANYA NDJADI Léonard, qui a bien voulu assurer la direction de ce travail malgré ses multiples occupations. Nous pensons également à tous les Professeurs, Chefs des travaux et Assistants de la Faculté des Sciences en Générale et du Département de Mathématiques et Informatique en particulier, pour la formation qu’ils ont assurée durant toutes ces années d’études. Nous pensons aussi à tous nos compagnons de lutte. Enfin, nous remercions très sincèrement toutes les personnes qui ont contribué d’une manière où d’une autre pour la réussite de nos études. Page | iii Page | iv INTRODUCTION Les nombres aléatoires jouent un rôle important en cryptographie. Ils sont utilisés pour générer des clés, à chiffrer les messages ou à masquer les contenus de certains protocoles en les associant avec une séquence aléatoire. Claude Shannon a montré que dans un système cryptographique, si la clé est générée de manière aléatoire et que cette clé n’est plus utilisée, alors ce système est parfaitement sûr. On distingue deux types des générateurs de nombres : les générateurs de nombres aléatoires non déterministes et les générateurs de nombres aléatoires déterministes. Les générateurs de nombres aléatoires non déterministes sont basés sur des mécanismes physiques tels que le lancer des dés, roulette, le bruit thermique dans les résistances de circuits électroniques, etc. La reproduction d’une séquence du générateur non déterministe est impossible. Tandis que les générateurs de nombres aléatoires déterministes sont basés sur des moyens mathématiques, la séquence est initialisée par une valeur appelée germe ou graine. La reproduction de la séquence est possible. Dans ce travail, nous étudions comment produire une séquence binaire aléatoire cryptographiquement sûr, indépendante, imprédictible et équiprobable à utiliser pour clés au chiffrement par flot ou au chiffrement de Verman. Notre travail est subdivisé en quatre chapitres. Dans le premier chapitre, nous parlons des quelques éléments de la théorie des nombres. Nous avons beaucoup plus détaillé la notion des résidus quadratiques qui constitue l’outil de base du générateur utilisé. Dans le second chapitre, nous présentons les généralités sur la Page | 1 cryptographie et ensuite nous présentons l’aspect d’un système cryptographique parfaitement sûr. Le troisième chapitre concerne les générateurs pseudo-aléatoires. Nous avons présenté quelques générateurs pseudo-aléatoires ; ensuite nous nous sommes concentrés sur le générateur utilisé : Blum-Blum-Shub. Et enfin, au quatrième chapitre, nous présentons l’implémentation du générateur Blum- Blum-Shub et l’interprétation des résultats obtenus. Page | 2 CHAPITRE I : ELEMENTS DE LA THEORIE DES NOMBRES [1], [2], [3], [13], [14], [15], [16] I.1.Quelques notions de base Définition Un entier 𝑛 > 0 est dit premier s’il est différent de 1 et s’il n’admet aucun diviseur positif différent de 1 et 𝑛. Un nombre qui n’est pas premier est appelé nombre composé. Proposition Il existe une infinité de nombres premiers Preuve Montrons par l’absurde. Supposons qu’il n’existe qu’un nombre fini d’entiers premiers, soit 𝑝1 𝑝2 … 𝑝𝑘 . On peut alors montrer un entier qui n’est divisible par aucun de ces nombres premiers, ce qui est contradictoire compte tenu du fait que cet entier possède un diviseur premier. En effet, considérons 𝑛 = 𝑝1 𝑝2 … 𝑝𝑘 + 1 : si 𝑝𝑖 (1 ≤ 𝑖 ≤ 𝑘) divisait 𝑛, alors 𝑝𝑖 diviserait 1, ce qui est absurde. Lemme de Gauss. Si des entiers 𝑎, 𝑏 et 𝑐 sont tels que 𝑎 divise 𝑏𝑐 et 𝑎 premier avec 𝑏, alors 𝑎 divise 𝑐. Preuve Comme 𝑎 est premier avec 𝑏, on peut écrire 𝑎𝑢 + 𝑏𝑣 = 1 pour des entiers 𝑢 𝑒𝑡 𝑣. Ainsi 𝑎𝑢𝑐 + 𝑏𝑣𝑐 = 𝑐 et comme 𝑎 divise 𝑎𝑢𝑐 (car il divise 𝑎) et 𝑏𝑣𝑐 (car il divise 𝑏𝑐), il divise la somme qui vaut 𝑐. Page | 3 Théorème (Décomposition en facteurs premiers) Ce théorème est appelé théorème fondamental de l’arithmétique. Soit un entier 𝑛 ≥ 1 se décompose d’une et d’une seule manière en un produit de nombres premiers. Autrement dit, pour tout entier 𝑛 ≥ 1, il existe des nombres premiers deux à deux distincts 𝑝1 , . . . , 𝑝𝑘 et des entiers strictement positifs 𝛼1 , . . . , ∝𝑘 , uniquement déterminés à l’ordre près, tels que : ∝ ∝ ∝ 𝑛 = 𝑝1 1 𝑝2 2 … 𝑝𝑘 𝑘 Preuve Le théorème reste bien vrai pour 𝑛 = 1 : il faut choisir 𝑘 = 0, le produit d’aucun entier étant par convention égal à 1. Commençons par l’existence de la décomposition. On raisonne par récurrence sur 𝑛. Pour 𝑛 = 2 alors ça s’écrit comme un produit de nombres premiers, étant lui-même premier. Soit 𝑛 ≥ 3 un entier. Supposons que tous les entiers strictement inferieurs à 𝑛 s’écrivent comme le précise le théorème et montrons que la conclusion subsiste pour l’entier 𝑛. Il y a deux cas : soit 𝑛 est premier, soit il ne l’est pas. Le premier cas est vite réglé : 𝑛 premier s’écrit bien comme un produit de nombres premiers. Supposons donc que 𝑛 soit composé. Ainsi, il s’écrit 𝑛 = 𝑑𝑑’ avec 2 ≤ 𝑑 < 𝑛 et2 ≤ 𝑑′ < 𝑛. Les entiers 𝑑 et 𝑑’ relèvent de l’hypothèse de récurrence et on peut écrire : 𝑑 = 𝑝1 𝑝2 … 𝑝𝑘 𝑑′ = 𝑝′1 𝑝′2 … 𝑝′𝑘′ pour des nombres premiers 𝑝𝑖 et 𝑝′𝑖 . Il ne reste plus qu’à effectuer le produit pour conclure. Montrons l’unicité : Supposons que 𝑝1 𝑝2 … 𝑝𝑘 = 𝑝′1 𝑝′2 … 𝑝′𝑘′ Pour certains nombres premiers 𝑝𝑖 et 𝑝′𝑖 . Page | 4 On veut montrer que 𝑘 = 𝑘′ et que les 𝑝𝑖 sont égaux aux 𝑝′𝑖 à l’ordre près. Raisonnons ensuite par l’absurde. Le nombre premier 𝑝1 divise le produit 𝑝′1 𝑝′2 … 𝑝′𝑘′ donc par le lemme précédent, il divise 𝑝′𝑖 . ∀ 𝑖. Or, les diviseurs de 𝑝′𝑖 (qui est premier) ne sont que 1 et 𝑝′𝑖 . Comme 𝑝1 ≠ 1, il ne reste plus que la possibilité 𝑝1 = 𝑝′1 = 𝑝. On peut alors simplifier l’égalité : 𝑝1 𝑝2 … 𝑝𝑘 = 𝑝′1 𝑝′ 2 … 𝑝′ 𝑘 ′ en divisant par 𝑝,on obtiens une contradiction et l’unicité est prouvé. I.2. La congruence Définition Soient 𝑎 𝑏 ,et 𝑛 des entiers, alors on dit que 𝑎 est congru à 𝑏 modulo 𝑛, ce qui s’écrit 𝑎 ≡ 𝑏 (𝑚𝑜𝑑 𝑛), si 𝑛/(𝑎 − 𝑏) ; 𝑛 est le module de la congruence. Propriétés de la congruence ∀ 𝑎, 𝑎1 , 𝑏, 𝑏1 , 𝑐 ∈ ℤ ∶ - 𝑎 ≡ 𝑏(𝑚𝑜𝑑 𝑛) ↔ 𝑎 et 𝑏 ont le même reste dans la division par 𝑛. - 𝑎 ≡ 𝑎(𝑚𝑜𝑑 𝑛) (réflexivité). - 𝑎 ≡ 𝑏(𝑚𝑜𝑑 𝑛) → 𝑏 ≡ 𝑎 (𝑚𝑜𝑑 𝑛) (symétrie). - 𝑎 ≡ 𝑏(𝑚𝑜𝑑 𝑛) et 𝑏 ≡ 𝑐 (𝑚𝑜𝑑 𝑛) → 𝑎 ≡ 𝑐(𝑚𝑜𝑑 𝑛) (transitivité). - 𝑎 ≡ 𝑎1 (𝑚𝑜𝑑 𝑛) et 𝑏 ≡ 𝑏1 (𝑚𝑜𝑑 𝑛) → { 𝑎 + 𝑏 ≡ 𝑎1 + 𝑏1 (𝑚𝑜𝑑 𝑛), 𝑎𝑏 ≡ 𝑎1 𝑏1 (𝑚𝑜𝑑 𝑛). I.3. Classes des résidus Soit 𝑚 > 0. Pour chaque entier 𝑎 on définit [𝑎] = {𝑥: 𝑥 ≡ 𝑎 (𝑚𝑜𝑑 𝑚)} , en d’autres termes [𝑎] est l’ensemble de tous les entiers qui sont congrus à 𝑎 modulo 𝑚. Les autres auteurs appellent [𝑎] la classe congruence ou la classe d’équivalence de 𝑎 modulo 𝑚. Page | 5 Théorème. Pour 𝑚 > 0 on a : [𝑎] = {𝑚𝑞 + 𝑎/𝑞 ∈ ℤ}. Preuve Supposons 𝑥 ∈ [𝑎] ↔ 𝑥 ≡ 𝑎 (𝑚𝑜𝑑 𝑚) ↔ 𝑚⁄𝑥 − 𝑎 ↔ 𝑥 − 𝑎 = 𝑚𝑞 pour tout ∈ ℤ ↔ 𝑥 = 𝑚𝑞 + 𝑎 . Notons que [𝑎] dépends de 𝑚 . On a deux façons d’écrire l’équation ci-haut : 𝑎 [𝑎] = {𝑚𝑞 + = 0, ±1, ±2, … } ou [𝑎] = {… , −2𝑚 + 𝑎, 𝑎, 𝑚 + 𝑎; 2𝑚 + 𝑎, … } 𝑞 Tout élément 𝑥 ∈ [𝑎] est une représentation de la classe de résidu [𝑎]. I.4. Ensemble réduit des résidus Définition On défini ℤ𝑚 = { [𝑎] | 𝑎 ∈ ℤ} , alors ℤ𝑚 est l’ensemble de toutes les classes modulo 𝑚. Nous appelons ℤ𝑚 l’anneau des entiers modulo 𝑚. ℤ𝑚 = { [0], [1], [2], … , [𝑚 − 1] } Addition et multiplication dans ℤ𝒎 Pour [𝑎] , [𝑏] ∈ ℤ𝑚 , on a : [𝑎] + [𝑏] = [𝑎 + 𝑏] et [𝑎][𝑏] = [𝑎𝑏] Exemple Pour 𝑚 = 5 [2] + [3] = [5] et [2][3] = [6] Notons que puisque 5 ≡ 0 (𝑚𝑜𝑑 5) et 6 ≡ 1 (𝑚𝑜𝑑 5) ,nous avons [5] = [0] et [6] = [1]. Nous pouvons aussi écrire [2] + [3] = [0] et [2][3] = [1] I.5. La fonction d’Euler ou fonction totient Définition Pour 𝑚 ≥ 0 ,soit 𝜑(𝑛) le nombre d’entiers premiers avec 𝑚 dans l’intervalle [1, 𝑚]. La fonction 𝜑 est la fonction d’Euler. Page | 6 Exemple Pour 𝑚 = 6, il y a 6 différentes classes de résidu modulo 6 ; les classes [0], [2], [3] et [4] ne sont pas premiers avec 6 ; ainsi seules les classes [1] et [5] sont premiers avec 6 :alors φ(6) = 2 . Si 𝑝 est un premier, toutes les 𝑝 − 1 classes [1], [2], [3], … , [𝑝 − 1] sont premiers avec , alors 𝜑(𝑝) = 𝑝 − 1. Exemple : 2 4 5 6 7 8 9 10 12 15 𝜑(𝑝) 2 2 4 2 6 4 6 4 4 8 𝑝 Théorème (Euler) Soit (𝑚, 𝑎) = 1 , alors 𝑎 𝜑(𝑚) = 1 𝑚𝑜𝑑 𝑚 Ceci permet de calculer l’inverse modulaire définit par : 𝑎 𝜑(𝑚)−1 = 1 𝑚𝑜𝑑 𝑚 Exemple Quel est l’inverse de 3 𝑚𝑜𝑑 7: on sait que 𝜑(7) = 7 − 1 = 6, 𝜑(7) − 1 = 5 On a (3,7) = 1, d’où 35 𝑚𝑜𝑑 7 = (32 . 32 . 3)𝑚𝑜𝑑 7 = 5 Théorème (Petit théorème de Fermat) Soit 𝑚 un premier et 𝑎 un entier tel que (𝑚, 𝑎) = 1 alors 𝑎𝑚−1 = 1 𝑚𝑜𝑑 𝑚 Preuve Considérons ainsi que les leurs 𝑚−1 restes entiers dans suivants :𝑎, 2𝑎, 3𝑎, … , 𝑘𝑎, … , (𝑚 − 1)𝑎 la division euclidienne par 𝑚, notés : 𝑟1 , 𝑟2 , 𝑟3 , … , 𝑟𝑚−1 . Ces restes sont compris entre 1 𝑒𝑡 𝑚 − 1. En effet, d’après le même de Gauss, si 𝑚 divisait un des ces produits 𝑘𝑎, 𝑚 diviserait 𝑘 puisque 𝑎 et 𝑚 sont premiers entre eux, mais ceci est impossible puisque 1 < 𝑘 < 𝑚. De plus les restes de division de 𝑎, 2𝑎, 3𝑎, … , 𝑘𝑎, … , (𝑚 − 1)𝑎 par 𝑚 sont tous différents. Si on trouvait des Page | 7 restes identiques pour 𝑘𝑎 et 𝑘′𝑎 (𝑘 > 𝑘 ′ ) alors le reste de (𝑘 − 𝑘 ′ )𝑎 par 𝑚 serait nul, ce qui est impossible d’après ce qui précède. Notons que ces restes sont donc des entiers compris entre 1 et 𝑚 − 1. En multipliant membre à membre les congruences : 𝑎 = 𝑟1 𝑚𝑜𝑑 𝑚 , 2𝑎 = 𝑟2 𝑚𝑜𝑑 𝑚, 3𝑎 = 𝑟3 𝑚𝑜𝑑 𝑚 , … , (𝑚 − 1)𝑎 = 𝑟𝑚−1 𝑚𝑜𝑑 𝑚 Alors nous obtenons : 𝑎, 2𝑎, 3𝑎, … , 𝑘𝑎, … , (𝑚 − 1)𝑎 = 1.2.3 … 𝑘 … (𝑚 − 1)𝑚𝑜𝑑 𝑚 ⟺ 𝑎𝑚−1 (𝑚 − 1)! = (𝑚 − 1)! 𝑚𝑜𝑑 𝑚 Par définition de la congruence, cette égalité signifie que 𝑚 divise (𝑚 − 1)! (𝑎𝑚−1 − 1). Or 𝑚 ne divise aucun des entiers 1.2.3 … 𝑘 … (𝑚 − 1), il est également premier avec leur produit (𝑚 − 1)! Ainsi d’après le lemme de Gauss 𝑚 divise (𝑎𝑚−1 − 1) c’est-à-dire (𝑎𝑚−1 = 1 𝑚𝑜𝑑 𝑚). Théorème de Wilson Si 𝑚 est un premier, alors (𝑚 − 1)! ≡ −1 𝑚𝑜𝑑 𝑚 Preuve Considérons la congruence 𝑥 2 ≡ 1 𝑚𝑜𝑑 𝑚. Alors 𝑥 2 − 1 ≡ (𝑥 − 1)(𝑥 + 1) 𝑚𝑜𝑑 𝑚 ≡ 0 , ainsi les seules solutions sont 𝑥 ≡ 1 et −1. Donc, pour chaque 𝑖, 2 ≤ 𝑖 ≤ 𝑚 − 2, il existe qu’un inverse unique 𝑗 ≠ 𝑖 de 𝑖 , 2 ≤ 𝑗 ≤ 𝑚 − 2. Ainsi lorsque nous groupons des inverses en pairs, nous obtenons : (𝑚 − 1)! ≡ 1.2 … (𝑚 − 2). (𝑚 − 1) ≡ 1.1 … 1. (𝑚 − 2) ≡ −1 𝑚𝑜𝑑 𝑚 Page | 8 Théorème du reste Chinois Soit 𝑎1 , 𝑎2 , … , 𝑎𝑘 des entiers et 𝑚1 , 𝑚2 , … , 𝑚𝑘 des entiers relativement premiers entre eux, alors le système des congruences 𝑥 ≡ 𝑎1 𝑚𝑜𝑑 𝑚1 , 𝑥 ≡ 𝑎2 𝑚𝑜𝑑 𝑚2, . . . 𝑥 ≡ 𝑎𝑘 𝑚𝑜𝑑 𝑚𝑘 admet une unique solution modulo 𝑚1 𝑚2 … 𝑚𝑘 Preuve Soit 𝑚 = 𝑚1 𝑚2 … 𝑚𝑘 ,et considérons 𝑚/𝑚1 .Ceci est relativement premier à 𝑚1 , ainsi il existe un entier 𝑡 1 tel que 𝑡1 . En conséquence, soit 𝑠1 = 𝑡1 . 𝑚 𝑚1 𝑚 𝑚1 ≡ 1 𝑚𝑜𝑑 𝑚1 . . Alors 𝑠1 ≡ 1 𝑚𝑜𝑑 𝑚1 et 𝑠1 ≡ 0 𝑚𝑜𝑑 𝑚𝑗 , 𝑗 ≠ 1. D’une manière similaire, ∀𝑖, il existe un 𝑠𝑖 tel que 𝑠𝑖 ≡ 1 𝑚𝑜𝑑 𝑚𝑖 et 𝑠𝑖 ≡ 0 𝑚𝑜𝑑 𝑚𝑗 ,𝑗 ≠ 𝑖. Alors 𝑥 = 𝑎1 𝑠1 + 𝑎2 𝑠2 + ⋯ + 𝑎𝑘 𝑠𝑘 est une solution du système ci-haut. Soit 𝑥 ′ une autre solution, alors 𝑥 − 𝑥 ′ ≡ 0 𝑚𝑜𝑑 𝑚𝑖 pour tout 𝑖 ⇒ 𝑥 − 𝑥 ′ ≡ 0 𝑚𝑜𝑑 𝑚1 𝑚2 … 𝑚𝑘 I.6. Résidus quadratiques Soit 𝑛 > 1 un entier positif , et 𝑎 ∈ ℤ∗𝑛 tel que (𝑎, 𝑛) = 1. On dit que 𝑎 est un résidu quadratique 𝑚𝑜𝑑 𝑛 si ∃ 𝑏 ∈ ℤ∗𝑛 tel que 𝑏 2 ≡ 𝑎 𝑚𝑜𝑑 𝑛. Si un tel 𝑏 n’existe pas, 𝑎 est un non-résidu quadratique 𝑚𝑜𝑑 𝑛. Avec ℤ∗𝑛 = {𝑎 ∈ ℤ𝑛 | 𝑝𝑔𝑐𝑑(𝑎, 𝑛) = 1} - Si 𝑎 et 𝑏 sont des résidus quadratique 𝑚𝑜𝑑 𝑛 ,alors leur produit est 𝑎𝑏 Page | 9 - Si 𝑎 est un résidu quadratique 𝑚𝑜𝑑 𝑛, et 𝑏 un non-résidu quadratique 𝑚𝑜𝑑 𝑛 , alors 𝑎𝑏 est un non-résidu quadratique 𝑚𝑜𝑑 𝑛 - Le produit de deux résidus quadratiques 𝑚𝑜𝑑 𝑛 n’est pas nécessairement un résidu quadratique 𝑚𝑜𝑑 𝑛. Théorème 1 Soit 𝑝 un nombre premier impair. Exactement la moitie des éléments de ℤ∗𝑝 sont des résidus quadratiques. Preuve Chaque résidu quadratique modulo p est congru à un des 𝑝−1 2 résidus suivants : 𝑝−1 2 12 , 22 , … , 𝑘 2 , … , ( ) 2 On montre que Pour 1 ≤ ℎ ≤ 𝑘 ≤ 𝑝−1 2 ces classes des résidus sont tous distincts. , ℎ2 ≡ 𝑘 2 𝑚𝑜𝑑 𝑝 si et seulement si (𝑘 − ℎ)(ℎ + 𝑘) est divisible par p, ceci est impossible puisque chacun de 𝑘 − ℎ et ℎ + 𝑘 est petit que 𝑝 . Corollaire 1 Soit 𝑝 un nombre premier impair, le produit de deux non résidus est un résidu quadratique. Théorème 2 Soit 𝑝 un nombre premier impair. −1 est un résidu quadratique 𝑚𝑜𝑑 𝑝 si et seulement si 𝑝 ≡ 1 𝑚𝑜𝑑 4. Page | 10 Preuve Si 𝑥 2 = −1 𝑚𝑜𝑑 𝑝 , alors par le petit théoreme de Fermat : 𝑝−1 2 (−1) ≡ 𝑥 𝑝−1 ≡ 1 𝑚𝑜𝑑 𝑝 . Ceci signifie que Inversement si 𝑝 ≡ 1 𝑚𝑜𝑑 4, l’entier 𝑝−1 2 𝑝−1 2 est pair, et ≡ 1 𝑚𝑜𝑑 4 . est pair. Par le théorème de Wilson, 𝑝−1 2 𝑝−1 2 𝑝−1 2 𝑖=1 𝑖=1 𝑖=1 𝑝−1 2 (( ) !) = ∏ 𝑗 2 = ∏ 𝑗(−𝑗) ≡ ∏ 𝑗(𝑝 − 𝑗) = (𝑝 − 1)! ≡ −1 𝑚𝑜𝑑 𝑝. 2 𝑝−1 Les solutions de 𝑥 2 = −1 𝑚𝑜𝑑 𝑝 sont donc 𝑥 ≡ ± ( 2 ) !. Voici les racines carrés de −1 𝑚𝑜𝑑 𝑝 pour les 20 premiers nombres premiers de la forme 4𝑘 + 1 : 𝑝 √−1 5 13 17 29 37 41 53 61 73 89 97 101 109 113 137 149 157 173 181 193 ±2 ±5 ±4 ±12 ±6 ±9 ±23 ±11 ±27 ±34 ±22 ±10 ±33 ±15 ±37 ±44 ±28 ±80 ±19 ±81 Théorème 3 Il y a une infinité des nombres premiers de la forme 4𝑘 + 1 . Preuve Supposons qu’il y a une finité des nombres premiers 𝑝1 , 𝑝2 , … , 𝑝𝑟 de la forme 4𝑘 + 1 . Considérons le produit 𝑃 = (2𝑝1 , 𝑝2 , … , 𝑝𝑟 )2 + 1 Notons que ≡ 1 𝑚𝑜𝑑 4 . Puisque 𝑃 est grand que chaque 𝑝1 , 𝑝2 , … , 𝑝𝑟 , il ne peut pas être premier, ainsi il doit y avoir un facteur premier 𝑝 différent de 𝑝1 , 𝑝2 , … , 𝑝𝑟 . Mais alors modulo ,-1 est une racine. Par le théorème précédent, 𝑝 doit être de la forme 4𝑘 + 1 ., une contradiction. Dans la table ci-dessus nous montrons pour les nombres premiers < 40 , les résidus quadratiques ainsi que leurs racines carrés. Il est à noter que les racines carrées entrent en pairs. Par exemple, l’entrée Page | 11 (2,7) pour le nombre premier 47 serait interpréter comme disant que les deux solutions de la congruence 𝑥 2 = 2 𝑚𝑜𝑑 47 sont 𝑥 ≡ ±7 𝑚𝑜𝑑 47. Aussi, pour les nombres premiers de la forme 𝑝 = 4𝑘 + 1, puisque -1 est un résidu quadratique modulo 𝑝 , on liste seulement les résidus quadratiques plus petit que 𝑝 2 . Ceux qui sont plus grands que 𝑝 2 peuvent être trouvé avec l’aide des racines carrés de -1. 3 (1,1) 7 (-1,2) (1,1) (2,3) (4,2) 11 (1,1) (3,5) (4,2) (5,4) (9,3) 13 (-1,5) (1,1) (3,4) (4,2) 17 (-1,13) (1,1) (2,6) (4,2) (8,5) 19 (1,1) (4,2) (5,9) (6,5) (7,8) (9,3) (11,7) (16,4) (17,6) 23 29 (1,1) (2,5) (3,7) (4,2) (6,11) (8,10) (9,3) (12,9) (13,6) (16,4) (18,8) (-1, 12) (1,1) (4,2) (5,11) (6,8) (7,6) (9,3) (13,10) 31 (1,1) (2,8) (4,2) (5,6) (7,10) (8,15) (9,3) (10,14) (14,13) (16,4) (18,7) (19,9) (20,12) (25,5) (28,11) 37 (-1, 6) (1,1) (3,15) (4,2) (7,9) (9,3) (10,11) (11,14) (12,7) (16,4) I.6.1.Le symbole de Legendre Soit p un premier. Pour un entier 𝑎, on définit le symbole de Legendre 0, 𝑠𝑖 𝑎 𝑑𝑖𝑣𝑖𝑠𝑒 𝑝 ( ) = {+1 , 𝑠𝑖 𝑎 𝑒𝑠𝑡 𝑢𝑛 𝑟𝑒𝑠𝑖𝑑𝑢 𝑞𝑢𝑎𝑑𝑟𝑎𝑡𝑖𝑞𝑢𝑒 𝑚𝑜𝑑 𝑝 p −1, 𝑠𝑖𝑛𝑜𝑛 a Lemme 1 𝑎𝑏 𝑎 𝑏 𝑝 𝑝 𝑝 ( ) = ( )( ) Preuve Ceci est équivalent de dire que, le produit de deux résidus quadratiques 𝑚𝑜𝑑 𝑝 (respectivement non-résidu 𝑚𝑜𝑑 𝑝) est un résidu quadratique 𝑚𝑜𝑑 𝑝, et le produit d’un résidu quadratique 𝑚𝑜𝑑 𝑝 et un non-résidu quadratique 𝑚𝑜𝑑 𝑝 est un non résidu quadratique 𝑚𝑜𝑑 𝑝. Page | 12 −1 Pour un premier impair 𝑝, ( ) = (−1)( 𝑝 𝑝−1 ) 2 . Ceci est une répétition du théorème 2 que -1 est un résidu quadratique 𝑚𝑜𝑑 𝑝 si et seulement si 𝑝 ≡ 1 𝑚𝑜𝑑 4. Théorème (Euler) Soit 𝑝 un premier impair. Pour chaque entier 𝑎 non divisible par 𝑝, 𝑎 ( )≡𝑎 𝑝 𝑝−1 2 𝑚𝑜𝑑 𝑝. Preuve Supposons que 𝑎 est un non-résidu quadratique 𝑚𝑜𝑑 𝑝 . Les résidus quadratique mod p: 1,2, … , 𝑝 − 1 sont partitionnés satisfaisant l’équation 𝑥𝑦 = 𝑎. Dans ce cas, (𝑝 − 1)! ≡ 𝑎 en 𝑝−1 2 pairs en 𝑚𝑜𝑑 𝑝. Cas l’autre sens, si 𝑎 est un résidu quadratique, avec 𝑎 ≡ 𝑘 2 ≡ (𝑝 − 𝑘)2 𝑚𝑜𝑑 𝑝, à part 0, ±𝑘 , le reste de 𝑝 − 3 éléments de ℤ𝑝 peut être partitionné en pairs satisfaisant 𝑥𝑦 = 𝑎 (𝑝 − 1)! ≡ 𝑘(𝑝 − 𝑘)𝑎 𝑝−3 2 = −𝑎 𝑝−1 2 𝑚𝑜𝑑 𝑝. En résumant, on obtient 𝑎 (𝑝 − 1)! = − ( ) 𝑎 𝑝 𝑝−1 2 𝑚𝑜𝑑 𝑝. Notons qu’en mettant 𝑎 = 1, on obtient le théorème de Wilson : 𝑎 (𝑝 − 1)! ≡ −1 𝑚𝑜𝑑 𝑝. Par comparaison, on obtient une formule pour ( ) : 𝑝 𝑎 ( )≡ 𝑎 𝑝 𝑝−1 2 𝑚𝑜𝑑 𝑝. I.6.2.Le symbole de Jacobi Définition Le symbole de Jacobi est une généralisation du symbole de Legendre utilisant la décomposition en produit de facteurs premiers du nombre du dessous. Sa définition est la suivante : ∝ ∝ ∝ Soit 𝑛 un entier impair supérieur à 2 et 𝑛 = 𝑝1 1 𝑝2 2 … 𝑝𝑘 𝑘 la décomposition de n en facteurs premiers. Page | 13 Alors, pour 𝑥 ∝1 vaut : ( ) 𝑝1 tout 𝑥 ∝2 ( ) 𝑝2 entier 𝑥 𝑎, le symbole de Jacobi 𝑥 ( ) 𝑛 ∝𝑘 …( ) 𝑝𝑘 Propriétés du symbole de Jacobi Le symbole de Jacobi possède de très nombreuses propriétés : 1. Si 𝑛 est premier, le symbole de Jacobi et le symbole de Legendre sont équivalents. 𝑎 2. ( ) ∈ {0,1, −1} 𝑛 𝑎 3. ( ) = 0 si et seulement si 𝑎 et 𝑛 ne sont pas premiers entre eux. 𝑛 𝑎𝑏 𝑎 𝑏 𝑛 𝑛 𝑛 4. ( ) = ( ) ( ) si 𝑛 est impair. 𝑎 𝑏 𝑛 𝑛 5. Si 𝑎 ≡ 𝑏 𝑚𝑜𝑑 𝑛 alors ( ) = ( ) si 𝑛 est impair. 1 6. ( ) = 1 𝑛 𝑛−1 2 −1 7. ( ) = (−1) 𝑛 𝑛2 −1 8 2 8. ( ) = (−1) 𝑛 vaut 1 si 𝑛 ≡ 1 𝑚𝑜𝑑 4 et -1 si 𝑛 ≡ 3 𝑚𝑜𝑑 4 vaut 1 si 𝑛 ≡ 1 𝑚𝑜𝑑 8 ou 𝑛 ≡ 7 𝑚𝑜𝑑 8 et -1 si 𝑛 ≡ 3 𝑚𝑜𝑑 8 ou 𝑛 ≡ 5 𝑚𝑜𝑑 8 𝑚 𝑛 𝑛 𝑚 𝑚−1 𝑛−1 . 2 2 ( ) = ( ) (−1) 𝑚 𝑛 𝑛 𝑚 si 𝑚 et 𝑛 sont impairs, autrement dit ( ) = ( ) sauf si 𝑚 et 𝑛 sont tous deux congrus à −1 𝑚𝑜𝑑 4 auquel cas 𝑚 𝑛 𝑛 𝑚 ( ) = −( ) Les énoncés généraux sur les résidus quadratiques faisant intervenir le symbole de Legendre ne s'étendent pas au symbole de Jacobi. 𝑎 Cependant, si ( ) = −1 alors 𝑎 n'est pas un résidu quadratique de 𝑛 𝑛 puisque 𝑎 n'est pas le résidu quadratique d'un des 𝑝𝑘 divisant 𝑛. 𝑎 Dans le cas où ( ) = 1 , il est impossible de dire si 𝑎 est un résidu 𝑛 quadratique de 𝑛. Puisque le symbole de Jacobi est un produit de symboles de Legendre, il y a des cas ou deux symboles de Legendre sont égaux à −1 et le symbole de Jacobi est égal à 1. Page | 14 CHAPITRE II : GENERALITES SUR LA CRYPTOGRAPHIE [5], [12], [13], [14], [15], [17], [18], [20] II.1 Définitions Cryptologie: Science des messages secrets, elle est composée en deux disciplines: la Cryptographie et la cryptanalyse. Cryptographie: Art de transformer un message clair en un message inintelligible par celui qui ne possède pas les clés de chiffrement. Cryptanalyse: Art d'analyser un message chiffré afin de le décrypter. Chiffrement: Procédé qui consiste à transformer une donnée (généralement un message texte) afin de la rendre incompréhensible à toute personne qui ne connait pas la clé. Déchiffrement: Procédé qui consiste à retrouver le texte clair à partir du texte chiffré. Cryptogramme: Texte chiffré ou message chiffré. Clé: Séquence sécrète en bits qui permettent de chiffrer ou de déchiffrer un message donné. II.1.1. Définition d’un système cryptographique Soit 𝒜 un ensemble fini, appelé l'alphabet de définition. Soit ℳ un ensemble appelé l'espace des messages clairs. Soit 𝒞 un ensemble appelé l'espace des messages chiffrés. Soit 𝒦 un ensemble appelé l'espace des clés. Page | 15 Chaque 𝑘 ∈ 𝒦, détermine une injection 𝐸𝑘 de ℳ vers 𝒞, appelée fonction de chiffrement, 𝑘 est appelé clé de chiffrement. A chaque 𝑘 est associé un 𝑘′𝜖 𝒦, tel que 𝐷𝑘′ dénote une injection de 𝒞 vers ℳ , appelée fonction de déchiffrement, 𝑘′ est appelé clé de déchiffrement. Un système cryptographique (cryptosystème) est un quintuple (ℳ, 𝒞, 𝒦, 𝐸, 𝐷) tel que ∀ 𝑘 𝑒𝑡 𝑘 ′ ∈ 𝒦, ∃ 𝐸𝑘 𝑒𝑡 𝐷𝑘′ ∶ 𝑥 ∈ ℳ, 𝐷𝑘 ′ (𝐸 (𝑥 )𝑘 ) = 𝑥 II.2 Cryptosystème symétrique et asymétrique II.2.1 Cryptosystème symétrique Les algorithmes de cryptographie symétrique utilisent les mêmes clés lors du chiffrement et du déchiffrement. Considérons un ensemble fini de fonctions de chiffrement {𝐸𝑘 : 𝑘 ∈ 𝒦 } et un autre ensemble fini de fonctions de déchiffrement {𝐷𝑘′ : 𝑘′ ∈ 𝒦 } , nous avons: 𝑘 = 𝑘′ Dans un système symétrique, la sécurité repose sur la clé. La clé doit rester inconnue aux tierces personnes. La génération des clés est choisie d'une manière aléatoire dans l'espace des clés. L'avantage du cryptosystème symétrique est basé sur sa rapidité et son désavantage réside dans la distribution des clés. Pour un système à 𝑛 utilisateurs, il y aura 𝑛(𝑛−1) 2 paires des clés. Page | 16 II. 2.1.1 Exemples des chiffrements symétriques II.2.1.1.1 Chiffrement symétriques classiques Identifions l'alphabet usuel avec ℤ26 par 𝑎 = 0, 𝑏 = 1, … , 𝑧 = 25 et les opérations sont réalisées dans ℤ26 1. Chiffrement par décalage Soit 𝑀 = 𝐶 = 𝐾 = ℤ26 Soit 0 ≤ 𝑘 ≤ 25 Et soit 𝑥 et 𝑦 ∈ ℤ26 𝐸𝑘 (𝑥 ) = (𝑥 + 𝑘)𝑚𝑜𝑑 26 et 𝐷𝑘 (𝑦) = (𝑦 − 𝑘)𝑚𝑜𝑑 26 Ainsi pour 𝑘 = 3 nous avons le chiffrement de César. Exemple: Avec 𝑘 = 3, le texte clair '' politique'', nous obtenons le texte chiffré '' srolwltxh'' Ce système de chiffrement est facilement cassable puisque l'espace des clés ne contient que 26 éléments (26 clés possibles). 2. Chiffrement par substitution Soit 𝑀 = 𝐶 = 𝐾 = ℤ26 L'espace des clés est l'ensemble des permutations de ℤ26 . Chacune des lettres est remplacée par une autre lettre de l'alphabet. Pour 𝑘 ∈ 𝐾, nous avons : 𝐸𝑘 (𝑥 ) = 𝑘(𝑥 ) et 𝐷𝑘 (𝑦) = 𝑘 −1 (𝑦) où 𝑥 𝑒𝑡 𝑦 ∈ ℤ26 et 𝑘 −1 est la permutation inverse de 𝑘 Le nombre de clés possibles est 26! > 4. 1026 , une recherche exhaustive n'est pas possible. Cette méthode est facilement cassable suite à la fréquence des lettres. Page | 17 Exemple: Soit la permutation suivante : a b c d e f g h i j k l m n o p q r s t u v w x y z f l h j a r c p u x d i q y m k b t g w n z s v o e Le texte clair ''symétrique'' est chiffré en '' goqawtubna' 3. Chiffrement du Vigenère Soit 𝑚 ∈ ℕ∗ Soit 𝑀 = 𝐶 = 𝐾 = (ℤ26 )𝑚 Soit 𝑘 = (𝑘1 , … , 𝑘𝑚 ) Alors 𝐸𝑘 (𝑥 ) = 𝐸𝑘 (𝑥1 , … , 𝑥𝑚 ) = (𝑥1 + 𝑘1 , … , 𝑥𝑚 + 𝑘𝑚 ) et 𝐷𝑘 (𝑦) = 𝐷𝑘 (𝑦1 , … , 𝑦𝑚 ) = (𝑦1 − 𝑘1 , … , 𝑦𝑚 − 𝑘𝑚 ) où 𝑥 𝑒𝑡 𝑦 ∈ ℤ26 Le nombre de mots-clés possibles de longueur 𝑚 est 26𝑚 , une recherche exhaustive est impossible. Exemple: Soit le mot en clair '' Faculté '' et la clé '' Ornela '' Texte f a c u l t e claire 5 0 2 20 11 19 4 o r n e l a o Clé 14 17 13 4 11 0 14 Texte 19 17 15 24 22 19 18 chiffré t r p y w t s Page | 18 4. Chiffrement par permutation Soit 𝑚 ∈ ℕ Soit 𝑀 = 𝐶 = (ℤ26 )𝑚 Soit 𝐾 l’ensemble des permutations de ℤ𝑚 Pour 𝑘 ∈ 𝐾 nous avons : 𝐸𝑘 (𝑥 ) = 𝐸𝑘 (𝑥1 , … , 𝑥𝑚 ) = (𝑥𝑘(1) , … , 𝑥𝑘(𝑚) ) et −1 −1 𝐷𝑘 (𝑦) = 𝐸𝑘 (𝑦1 , … , 𝑦𝑚 ) = (𝑦𝑘(1) , … , 𝑦𝑘(𝑚) ) où 𝑥 𝑒𝑡 𝑦 𝜖ℤ26 et 𝑘 −1 est la permutation inverse de 𝑘. Exemple : Si 𝑚 = 6 et 𝑘 est la permutation qui envoie (1,2,3,4,5,6) sur (4,2,1,5,6, ,3) alors le texte clair ‘’ cryptographie ’’ est chiffré en ‘’ prctoyprghea ‘’. 5. Chiffrement de Verman Le chiffrement de Verman est aussi appelé Masque jetable, en Anglais One- time pad est définit sur les bits, 𝑀 = 0,1 Ainsi pour un message binaire 𝑥1 , … , 𝑥𝑡 est modifié par une clé 𝑘1 , … , 𝑘𝑡 binaire de même taille, comme suit: 𝐸𝑘 (𝑥 ) = 𝑦 = 𝑥𝑖 ⊕ 𝑘𝑖 , 1 ≥ 𝑖 ≤ 𝑡 𝐷𝑘 (𝑦) = 𝑥 = 𝑦𝑖 ⊕ 𝑘𝑖 , 1 ≤ 𝑖 ≤ 𝑡 Le chiffrement est incassable si la clé est choisie aléatoirement, et si cette même clé n'est plus jamais utilisée. Exemple: Soit le message clair ‘’ 101001101110101 ‘’ et la clé ‘’ 100111101110110 ’’ On a : 𝐸𝑘 (𝑥 ) = 𝑦 = 101001101000101 ⊕ 100111101110110 = 001110000000011 𝐷𝑘 ′ (𝑦) = 𝑥 = 001110000000011 ⊕ 100111101110110 = 101001101110101 Page | 19 I.2.1.1.2 Chiffrement par bloc Un chiffrement par bloc 𝐵 est une fonction prenant en paramètre une clé 𝑘 et un texte clair 𝑥 d'une longueur finie. Alors 𝐵 génère un texte chiffré de longueur finie à partir d'un message clair et d'une clé. Principe: 1. Remplacer les caractères du message par des bits 2. Segmenter cette chaine en blocs de chacun n bits 3. Chiffré successivement chaque bloc: - Appliquer l'opération logique bit par bit avec une clé - Déplacer certains bits du bloc - Recommencer un certain nombre de fois l'opération 3. 4. Passer au bloc suivant et retourner au point 3 jusqu'à ce que tout le message soit chiffré. Il existe trois catégories de chiffrement par bloc: - Chiffrement par substitution - Chiffrement par transposition - Chiffrement par produit 1. Chiffrement par substitution Le chiffrement par substitution consiste à remplacer les symboles par d'autres symboles. Exemple: Fig.1.Exemple de chiffrement par substitution Page | 20 2. Chiffrement par transposition Le chiffrement par transposition est un chiffrement dans lequel est réalisé une permutation sur les symboles de chaque bloc à chiffré. Exemple: Fig.2.Exemple de chiffrement par transposition 3. Chiffrement par produit Le chiffrement par produit est la combinaison du chiffrement par substitution et du chiffrement par transposition. Le chiffrement par substitution ou par transposition ne garantie pas un niveau de sécurité élevée, on obtient en combinant ces deux transformations, un chiffrement ayant un niveau de sécurité élevée. Les algorithmes les plus utilisés sont: DES, 3DES, AES, RC5. Exemple Fig.3.Exemple de chiffrement par produit Page | 21 II. 2.1.1.2 Chiffrement par flot Le chiffrement par flot est un chiffrement par bloc de longueur égale à un. Cette opération s'effectue sur chaque caractère, bits. La structure d'un chiffrement par flot réside sur un générateur de clés qui produit une séquence des clés 𝑘1 , 𝑘2 , … , 𝑘𝑛 (voir chapitre 3). C'est la qualité du générateur qui détermine la sécurité du chiffrement par flot. Si la séquence des clés est infinie et aléatoire, on a un Onetime pad. Clé k Texte Clair Clé k Texte Chiffré ⊕ Chiffrement ⊕ Texte Clair Déchiffremen t Fig.3. Schéma du chiffrement à flot Une erreur dans 𝒞𝑖 n'affecte qu'un bit de ℳ𝑖 . La perte ou l'ajout d'un bit de 𝒞𝑖 affecte tous les bits suivants de ℳ après déchiffrement. II.2.2 Cryptosystème asymétrique Dans un Cryptosystème asymétrique, chaque interlocuteur possède deux clés, l'une étant privée (secrète) et l'autre publique, elles sont mathématiquement liées avec impossibilité de déduire la clé privée à partir de la clé publique. La clé privée doit rester secrète Page | 22 tandis que la clé publique sera distribuer; la clé publique permet de chiffré un message et la clé privée permet de déchiffré un message. Soit un ensemble fini de fonctions de chiffrement {𝐸𝑒 : 𝑒 ∈ 𝒦 } et de déchiffrement {𝐷𝑑 : 𝑑 ∈ 𝒦 }. ∀ 𝑦 ∈ 𝒞, pour toutes paires de transformation(𝐸𝑒 , 𝐷𝑑 ), il est impossible (ou très difficile) de trouver le message clair 𝑥 ∈ ℳ tel que 𝐸𝑒 (𝑥 ) = 𝑦 Considérons deux interlocuteurs Alice et Bob qui désirent communiquer ensemble, Bob sélectionne une paire de clés (𝑒, 𝑑 ) et envoie 𝑒 à Alice. Alice après avoir reçu 𝑒, envoie un message 𝑥 à Bob. Alice calcule 𝑦 = 𝐸𝑒 (𝑥 ) puis le fait parvenir à Bob. A la réception, Bob calcule la transformation inverse 𝑥 = 𝐷𝑑 (𝑦). II.2.2.1 Exemples de chiffrement asymétrique Nous distinguons plusieurs méthodes de chiffrements asymétrique tels que : RSA, CCE, Rabin, El Gamal, Mc Eliece, MerkleHellman, Gold wasser-Micali, etc. - Méthode RSA RSA est basé sur le calcul exponentiel; sa sécurité repose sur la fonction unidirectionnelle et la difficulté de factoriser un grand nombre en deux facteurs premiers. a. Génération des clés – choisir aléatoirement deux grands premiers distincts 𝑝 et 𝑞 approximativement de la même taille – calculer 𝑛 = 𝑝. 𝑞 et 𝑧 = (𝑝 − 1)(𝑞 − 1) – choisir un entier 𝑒 aléatoire dans ]1, 𝑧[ tel que 𝑝𝑔𝑐𝑑 (𝑒, 𝑧) = 1 – calculer l'unique 𝑑 ∈ ]1, 𝑧[ tel que 𝑒. 𝑑 = 1(𝑚𝑜𝑑 𝑧) – La clé publique est (𝑒, 𝑛) et la clé privée est (𝑑, 𝑛) Page | 23 b. Chiffrement Soit le message 𝑥 ∈ ℤ𝑛 à chiffrer, Calculer 𝑦 = 𝑥 𝑒 𝑚𝑜𝑑 𝑛 c. Déchiffrement 𝑦 est déchiffré en calculant : 𝑥 = 𝑦 𝑑 𝑚𝑜𝑑 𝑛 Exemple : Considérons 𝑝 et 𝑞 très petits, 𝑝 = 5 et 𝑞 = 11 Nous avons : 𝑛 = 𝑝. 𝑞 = 5.11 = 55 𝑧 = (𝑝 − 1)(𝑞 − 1) = 4.11 = 40 On peut choisir 𝑑 = 7 (7 est premier avec 40) On calcule 𝑒 tel que : 𝑑. 𝑒 = 1 𝑚𝑜𝑑 𝑧 → 7. 𝑒 = 1 𝑚𝑜𝑑 40 → 𝑒 = 23 On obtient : Clé publique : (23,55) Clé privée : (7,55) Soit le texte clair à chiffrer ‘’ IMAGE ‘’ I M A G E 9 13 1 7 5 1. Chiffrement - I : 923 𝑚𝑜𝑑 55 = 14 - M : 1323 𝑚𝑜𝑑 55 = 52 - A:1=1 - G : 723 𝑚𝑜𝑑 55 = 13 - E : 523 𝑚𝑜𝑑 55 = 15 2. Déchiffrement - 14 : 147 𝑚𝑜𝑑 55 = 9 - 52 : 527 𝑚𝑜𝑑 55 = 13 Page | 24 - 1:1=1 - 13 : 137 𝑚𝑜𝑑 55 = 7 - 15 : 157 𝑚𝑜𝑑 55 = 5 La distribution des clés ne pose pas problème, chaque utilisateur possède une paire de clés. L'utilisateur après avoir chiffré le message du destinataire ne sera plus capable de déchiffrer son propre message, seul le détenteur de la clé gardée secrète pourra déchiffrer le message. On utilise le chiffrement asymétrique aussi pour chiffrer les nombres aléatoires qui servent de clés secrètes pour les algorithmes de chiffrement symétrique; on l'utilise également pour assurer l'authenticité d'un message. II.3. Sécurité d’un système cryptographique On distingue deux approches fondamentales dans l’étude de la sécurité d’un cryptosystème : la sécurité parfaite de Shannon et la sécurité calculatoire. II.3.1. Notions élémentaires de probabilité Définition classique de probabilité Considérons une expérience aléatoire 𝜉 possédant la symétrie mutuelle et 𝐴 un événement quelconque relatif à 𝜉 . La probabilité de l’événement 𝐴 est le nombre ℙ (𝐴) = 𝑚 𝑛 , où 𝑚 est le nombre de cas favorables à 𝐴 et 𝑛 le nombre total des éventualités rattaché à l’épreuve. Définition axiomatique de probabilité Une mesure de ℙ définie sur un espace probabilisable (Ω, 𝒜 ) , l’application ℙ ∶ 𝐴 → ℝ qui vérifie les 3 axiomes suivants : 1. ℙ(𝐴) ≥ 0 , ∀ 𝐴 ∈ 𝒜 2. Si 𝐴1 , 𝐴2 , … , 𝐴𝑖 𝜖 𝒜 𝑡𝑞 𝐴𝑗 ∩ 𝐴𝑘 = ∅ pour 𝑗 ≠ 𝑘 Page | 25 alors ℙ (⨄ 𝐴𝑖 ) = ∑ ℙ ( 𝐴𝑖 ); 3. ℙ(Ω) = 1. Le triplet (Ω, 𝒜, ℙ) est appelé espace probabilisé. Probabilité conditionnelle Soient 𝐴 et 𝐵 deux événement telque 𝑃(𝐵) > 0 On appelle probabilité conditionnelle de l’événement 𝐴 par rapport à l’événement 𝐵, ou encore la probabilité de A étant donné B : ℙ(𝐴\𝐵) = ℙ(𝐴 ∩ 𝐵) ℙ(𝐵) La probabilité conditionnelle nous permet de calculer la probabilité de l’intersection : ℙ(𝐴 ∩ 𝐵) = ℙ(𝐵)ℙ(𝐴\𝐵) Indépendance stochastique des événements Deux événements 𝐴1 et 𝐴2 sont indépendant si ℙ(𝐴1 ∩ 𝐴2 ) = ℙ(𝐴1 )ℙ(𝐴2 ) si ℙ(𝐴1 ) > 0 et ℙ(𝐴2 ) > 0 et que les événement 𝐴1 et 𝐴2 sont indépendants alors ℙ(𝐴1 \𝐴2 ) = ℙ(𝐴1 ) 𝑒𝑡 ℙ(𝐴2 \𝐴1 ) = ℙ(𝐴2 ) Les événements {𝐴𝑛 ∶ 𝑘 = 1,2, … , 𝑛 } sont indépendants si ℙ(𝐴𝑘1 ∩ 𝐴𝑘2 , … , 𝐴𝑘𝑛 ) = ℙ(𝐴𝑘1 )ℙ(𝐴𝑘2 ), … , ℙ(𝐴𝑘𝑛 ) Théorème de Bayes Si {𝐴𝑘 ; 𝑘 = 1, … , 𝑛} est un système complet d’événements et 𝐵 est un événement quelconque. Supposons que 𝐵 puisse se produire qu’en combinaison avec l’un des événements de 𝐴𝑖 , c'est-à-dire 𝐵 = ⨄𝑛𝑖=1 (𝐴𝑖 ∩ 𝐵). ∀𝑘 = 1, … , 𝑛, alors on a la formule de Bayes 𝑃(𝐴𝑗 \𝐵) = 𝑃(𝐴𝑗 )𝑃(𝐵\𝐴𝑗 ) 𝑃(𝐴𝑘 ∩ 𝐵) = 𝑛 ; 𝑗 = 1, … , 𝑛. ∑𝑘=1 𝑃(𝐴𝑘 )𝑃(𝐵\𝐴𝑘 ) 𝑃(𝐵) Preuve. Voir [12] Page | 26 II.3.2. La sécurité calculatoire La sécurité calculatoire est basée sur la mesure de la quantité de calcul nécessaire pour casser un système. On dit qu’un procédé est sûr au sens de la théorie de la complexité si le meilleur algorithme pour le casser nécessite 𝑛 opérations où 𝑛 est un nombre beaucoup trop grand pour que cet algorithme soit applicable en pratique. Dans la pratique, on dit souvent qu’un système est sûr si la meilleure attaque connue ne peut se faire avec une quantité raisonnable de temps de calcul. Le problème de cette approche c’est qu’un cryptosystème peut être sûr pendant un moment puis ne plus l’être lorsque l’on découvre un algorithme plus efficace. II.3.3 La sécurité parfaite de Shannon Claude Shannon en 1949 dans son article intitulé « Communication Theory of Secrecy System » introduit la notion des systèmes cryptographiquement sûrs, qui eut une influence considérable sur l’étude de la cryptographie. Considérons l’ensemble fini ℳ de textes clairs, l’ensemble fini 𝒞 de textes chiffrés, l’ensemble fini 𝒦 de clés. Supposons qu’une clé 𝑘 est utilisée une et une seule fois. Notons que l’ensemble des textes clairs ℳ est muni d’une probabilité ℙℳ (𝑥) ainsi que l’ensemble des clés 𝒦 muni d’une probabilité ℙ𝒦 (𝑘). Supposons que les clés sont choisies indépendamment des textes clairs. Ainsi les deux probabilités ℙℳ (𝑥)et ℙ𝒦 (𝑘) induisent une probabilité sur l’ensemble des textes chiffrés 𝒞. Nous pouvons calculer la probabilité ℙ𝒞 (𝑦) que le texte chiffré 𝑦 soit transmis. Pour une clé 𝑘 ∈ 𝒦, 𝒞 (𝑘) = {𝐸𝑘 (𝑥 ) ∶ 𝑥 ∈ ℳ }, notons que 𝒞(𝒦 ) représente l’ensemble des textes chiffrés avec la clé 𝑘, ∀ 𝑦 ∈ 𝒞, nous définissons Page | 27 𝒞𝑦 = {𝑘 ∈ 𝒦 ∶ 𝑦 ∈ 𝒞(𝑘)} , qui est l’ensemble de toutes les clés possibles qui permettent d’obtenir le chiffré 𝑦. Nous avons alors la probabilité de 𝑦 donnée par : ℙ𝒞 (𝑦) = ∑ ℙ𝒦 (𝑘)ℙℳ (𝑑𝑘 (𝑦)) 𝑘𝜖𝒞𝑦 L’événement « le texte chiffré est 𝑦 » n’est possible que si 𝐸𝑘 (𝑥 ) = 𝑦 ou 𝑥 = 𝐷𝑘 (𝑦). La probabilité d’avoir le « texte chiffré 𝑦 » est la somme de toutes les probabilités mutuelles ℙ(𝑥, 𝑘). les événements « le texte clair est 𝑥 » et « la clé est 𝑘 » sont supposés indépendants, alors cette probabilité est égale à ℙℳ (𝑥 )ℙ𝒦 (𝑘). ∀ 𝑦 ∈ 𝒞 et 𝑥 𝜖 ℳ ,nous pouvons calculer la probabilité conditionnelle ℙ(𝑦⁄𝑥) (la probabilité que 𝑦 soit le texte chiffré en sachant que 𝑥 est la texte clair) par ℙ(𝑦⁄𝑥 ) = ∑𝑘𝜖𝐷𝑥,𝑦 ℙ𝒦 (𝑘) où 𝐷𝑥,𝑦 = {𝑘 ∈ 𝒦: 𝑥 = 𝐷𝑘 (𝑦)}. En utilisant le théorème de Bayes, nous avons : ℙ(𝑦⁄𝑥) = ℙℳ (𝑥) ∑𝑘𝜖𝐷𝑥,𝑦 ℙ𝒦 (𝑘) ∑𝑘𝜖𝒞𝑦 ℙ𝒦 (𝑘)ℙℳ 𝐷𝑘 (𝑦)) II.3.4. Système cryptographique parfaitement sûr Un système cryptographique parfaitement sûr si on a : ∀𝑥 ∈ ℳ, ∀ 𝑦 ∈ 𝒞, ℙ(𝑥 ⁄𝑦) = ℙ(𝑥 ). En d’autres termes : la probabilité que le texte clair soit 𝑥 sachant que le texte chiffré est 𝑦 est égale à la probabilité que le texte clair soit 𝑥. Dans ce cas le texte chiffré n’apporte aucune information sur le texte clair. Lemme 1 Un système cryptographique vérifiant la propriété de sécurité parfaite et tel que ℙ(𝑦) > 0 ∀ 𝑦 ∈ 𝒞, alors :|𝒦 | ≥ |𝒞 | ≥ |ℳ | Page | 28 Démonstration Fixons 𝑥 ∈ ℳ tel que ℙ(𝑦) > 0 ∀ 𝑦 ∈ 𝒞, on a : ℙ(𝑥 ⁄𝑦) = ℙ(𝑥 ), d’après le théorème de Bayes : ℙ(𝑦)(ℙ(𝑥 ⁄𝑦) = ℙ(𝑦⁄𝑥) (ℙ(𝑥 ) donc ℙ(𝑦⁄𝑥) = ℙ(𝑦) > 0 ceci signifie qu’il exite au moins une clé 𝑘 ∈ 𝒦 telle que 𝑒𝑘 (𝑥 ) = 𝑦 . Par suite |𝒦 | ≥ |𝒞| , comme 𝑒𝑘 est injective on a : |𝒞| ≥ |ℳ | Théorème Un système cryptographique vérifiant |𝒦 | = |ℳ | = |𝒞 | ainsi que ℙ(𝑦) > 0 ∀ 𝑦 ∈ 𝒞, il est à la sécurité parfaite si et seulement si les deux conditions suivantes sont réalisées : a. Toutes les clés sont équiprobables, b. Pour chaque 𝑥 ∈ ℳ et chaque 𝑦 ∈ 𝒞 existe une unique clé 𝑘 vérifiant 𝑒𝑘 (𝑥 ) = 𝑦. Démonstration Supposons les conditions vérifiées. Alors ∀ 𝑦 ∈ 𝒞, on a successivement : ℙ(𝑦) = ℙ(𝑘)ℙ(𝑑𝑘 (𝑦)), ∑ 𝑘∈𝒦 𝑦∈𝑒𝑘 (ℳ) = = 1 |𝒦| 1 |𝒦| ∑𝑘∈𝒦 ℙ(𝑑𝑘 (𝑦)), ∑𝑥∈ℳ ℙ(𝑥 ) = 1 |𝒦| D’autre part pour 𝑥 ∈ ℳ et 𝑦 ∈ 𝒞, puisqu’il n’y a qu’une clé 𝑘 qui vérifie 𝑒𝑘 (𝑥 ) = 𝑦 on a : ℙ (𝑦⁄𝑥 ) = ∑ ℙ(𝑘) = 𝑘⁄𝑒𝑘 (𝑥)=𝑦 1 |𝒦 | En appliquant le théorème de Bayes : ℙ(𝑥 ⁄𝑦) = ℙ(𝑥 )ℙ(𝑦⁄𝑥) , ℙ(𝑦) Page | 29 ℙ(𝑥 ⁄𝑦) = ℙ(𝑥)⁄|𝒦| 1⁄|𝒦| = ℙ(𝑥 ). La sécurité est donc parfaite. Réciproquement, supposons que la sécurité est parfaite. Comme dans le lemme précédent, on montre que pour chaque couple (𝑥, 𝑦) ∈ ℳ × 𝒞 , il existe une clé 𝑘 telle que 𝑒𝑘 (𝑥 ) = 𝑦. Pour 𝑥 fixé on a donc {𝑒𝑘 (𝑥)/𝑘 ∈ 𝒦 } = 𝒞, ce qui montre que pour 𝑥 fixé l’ensemble des 𝑒𝑘 (𝑥) est de cardinal |𝒞| = |𝒦 |. Ces 𝑒𝑘 (𝑥) sont donc distincts deux à deux et pour chaque 𝑦 ∈ 𝒞, la clé 𝑘 vérifiant 𝑒𝑘 (𝑥 ) = 𝑦 est unique. Pour deux clés 𝑘1 et 𝑘2 , comparons ℙ(𝑘1 ) et ℙ(𝑘2 ) . Pour cela fixons 𝑦 et désignons 𝑥1 et 𝑥2 les uniques éléments de ℳ vérifiant 𝑒𝑘1 (𝑥1 ) = 𝑦 et 𝑒𝑘2 (𝑥2 ) = 𝑦 (chaque 𝑒𝑘 est injective et donc ici bijective. Par le théorème de Bayes, et à la sécurité parfaite on obtient : ℙ(𝑦) = ℙ(𝑦⁄𝑥1 ) = ∑ ℙ(𝑘) = ℙ(𝑘1 ) 𝑘⁄𝑒𝑘 (𝑥1 )=𝑦 Le même calcul peut être fait avec 𝑘2 . Ce qui prouve que ℙ(𝑘1 ) = ℙ(𝑘2 ). Les clés sont donc équiprobables. Exemple Le chiffrement de Verman ou le one-time-pad ou encore le masque jetable vérifie les conditions du théorème précédent. C’est un système parfaitement sûr. Il utilise une clé secrète très longue (séquence aléatoire binaire) où chaque bit est indépendant des autres et une probabilité 1 2 d’être 0 ou 1. Une nouvelle clé est utilisée à chaque chiffrement, la clé est aussi longue que le texte clair. La construction de cette clé aussi longue sera l’objet de notre chapitre suivant. Page | 30 CHAPITRE III : GENERATEURS PSEUDO-ALEATOIRES [4], [6], [7], [8], [9], [10], [11], [14] , [17], [19],[20], [21], [22], [23], [24],[25], [26], [27] Définition Soit 𝑆 un ensemble fini appelé espace d’états, un générateur pseudoaléatoires est défini par : 𝑓: 𝑆 → 𝑆, et l’état s’évolue selon : 𝑠𝑖 = 𝑓(𝑠𝑖−1 ), 𝑖 = 1,2,3, … l’état initial 𝑠0 s’appelle germe ou graine. Autrement dit un générateur pseudo-aléatoire est un procédé qui, à partir d'une initialisation de taille fixée appelée germe ou graine, engendre de manière déterministe une séquence de très grande longueur. Cette séquence consiste à imiter une séquence de variables aléatoires. Définition Une séquence binaire 𝑥 constituée de 𝑛 bits est dite aléatoire lorsque les 𝑛 bits sont indépendants, imprédictibles et équiprobables. Un générateur de nombres pseudo-aléatoires et un générateur de bits aléatoires ont pour buts de générer une séquence de mots aléatoires. Les mots appartiennent à l’alphabet fini 𝒜. Dans le cas d’un générateur de bits aléatoires, l’alphabet est de dimension 2 c’est.-à-dire. 𝒜 = {0,1}. On distingue plusieurs générateurs pseudo-aléatoires tels que Générateur à congruence linéaire, Générateur carré-médian, Générateur à congruence additive, Générateur de type « multiplication avec retenue », Générateur de Blum-Blum-Shub ou Générateur quadratique etc.… Page | 31 III.1. Exemples de quelques générateurs pseudo-aléatoires 1. Générateur à congruence linéaire Le générateur à congruence linéaire est un algorithme inventé par Lehmer en 1948. C’est une suite définie par la relation suivante : 𝑥𝑛+1 = (𝑎. 𝑥𝑛 + 𝑐 ) 𝑚𝑜𝑑 𝑚 où 𝑎 est appelé multiplicateur, 𝑐 est l’incrément, et 𝑚 est le module (le maximum plus un des nombres de la suite). La suite est initialisée par le germe 𝑥0 . Tous ces nombres sont positifs. Pours avoir une période maximale, les paramètres suivants doivent être respecté avec 𝑐 non nul : - 𝑐 et 𝑚 doivent être premiers entre eux - 𝑎 − 1 doit être multiple de 𝑝, ∀ 𝑝 nombre premier diviseur de 𝑚 Exemple : 𝑥𝑛+1 = (5𝑥𝑛 + 1) 𝑚𝑜𝑑 16 Avec 𝑥0 = 5, la suite est :10,3,0,1,6,15,12,13,2,11,8,9,14,7,4,5 2. Générateur carré-médian Le générateur carre-médian est construit de la manière suivante : on élève au carré un nombre de 2𝑘-chiffres et on prend les 2𝑘-chiffres du milieu du produit (de 4𝑘 chiffres). Il fut historiquement l’un des premiers générateurs utilisés mais c’est un très mauvais générateur ; si l’on tombe sur zéro tous les autres termes de la suite seront nuls et de manière générale sa période est trop courte. Exemple : 𝑥0 12 14 19 36 29 84 5 2 0 0 𝑥02 0144 0196 0361 1296 0841 7056 0025 0004 0 0 Page | 32 3. Générateur à congruence additive Le générateur à congruence additive est défini de la manière suivante : Soient 𝑚, 𝑥0 , 𝑥1 , … , 𝑥𝑘−1 des entiers naturels, pour 𝑛 = 𝑘 , 𝑘 + 1, … 𝑥𝑛 = (𝑥𝑛−1 + 𝑥𝑛−𝑘 ) 𝑚𝑜𝑑 𝑚 Pour 𝑘 = 2 on obtient la suite de Fibonacci. Cette méthode a deux inconvénients : 1. Il nécessite de stocker 𝑘 nombres. 2. Si 𝑘 est petit les nombres présentent une forte corrélation. 4. Générateur Blum-Blum-Shub Définition L’ensemble des résidus quadratiques 𝑚𝑜𝑑 𝑛 est noté par 𝑄𝑅𝑛 et l’ensemble des non-résidus quadratiques 𝑚𝑜𝑑 𝑛 est noté par 𝑄𝑁𝑅𝑛 Définition Un entier de Blum est un produit de deux premiers distincts dont tous deux congrus à 3 modulo 4. Proposition Soit 𝑛 = 𝑝𝑞 un entier de Blum et soit 𝑥 un carrée de ℤ∗𝑛 alors 𝑥 possède quatre racines carrées dont une (et une seule) est un carrée de ℤ∗𝑛 . Cette racine est appelée racine principale de 𝑥. Preuve Comme le nombre de racines carrées de 𝑥 est quatre, on peut écrire que ces racines carrées sont : (±𝑎 𝑝+1 4 , ±𝑎 𝑞+1 4 ) dans ℤ∗𝑝 × ℤ∗𝑞 (qui s’identifie à ℤ∗𝑛 grâce au théorème des restes chinois), seul le couple formé par les deux racines principales de 𝑥 modulo 𝑝 et modulo 𝑞 est un carré modulo 𝑛. Définition Le générateur Blum-Blum-Shub est définit de la manière suivant : Soit 𝑛 = 𝑝𝑞 un entier de Blum tel que 𝑝 = 3 𝑚𝑜𝑑𝑢𝑙𝑜 4 et 𝑞 = 3 𝑚𝑜𝑑𝑢𝑙𝑜 4. Page | 33 On choisit un nombre 𝑥 ∈ ℤ∗𝑛 d’une manière aléatoire tel que (𝑛, 𝑥) = 1, alors le germe de la suite est calculé par : 𝑥0 = 𝑥 2 𝑚𝑜𝑑 𝑛. Et les autres termes de la suite sont définis par : 𝑥𝑛+1 = (𝑥𝑛 )2 𝑚𝑜𝑑 𝑛 Exemple Soit 𝑛 = 7 ∗ 19 = 133 et 𝑥 = 100. Alors 𝑥0 = 1002 𝑚𝑜𝑑 133 = 25. Les autres termes sont : 𝑥1 = 252 𝑚𝑜𝑑 133 = 93, 𝑥2 = 932 𝑚𝑜𝑑 133 = 4, 𝑥3 = 42 𝑚𝑜𝑑 133 = 16, 𝑥4 = 162 𝑚𝑜𝑑 133 = 123. La sortie en bit : 1, 0, 0,1, avec 𝑥𝑛+1 = (𝑥𝑛 )2 𝑚𝑜𝑑 2. III.2. Générateurs cryptographiquement sûrs Du point de vue de la formalisation de la sécurité d’un générateur pseudo-aléatoire, il faut d’une part définir le problème de sécurité, d’autre part il faut définir ce qu’est l’attaque. Un attaquant est considéré comme un algorithme réalisable qui sort un résultat relatif au problème de sécurité posé. La notion d’algorithme réalisable est extrêmement importante car comme on travaille souvent sur des situations finies on peut décrire théoriquement des algorithmes qui cassent la sécurité des systèmes. Mais ces algorithmes ne sont pas réalisables en pratique à cause de la durée des calculs. On cherche donc à assurer la sécurité calculatoire. Nous allons utiliser le générateur de Blum-Blum-Shub qui est cryptographiquement sûr. Page | 34 Définition Soit 𝑘 ∈ ℕ un paramètre, appelé paramètre de sécurité. Définition Soit 𝑙 ∈ ℕ une fonction en 𝑘 telle que 𝑘 < 𝑙. Un générateur pseudoaléatoire est une fonction 𝐹 calculable en temps polynomial en 𝑙 de 𝒜 ⊆ {0,1}𝑘 dans{0,1}𝑙 . Lorsque nous composons la distribution uniforme sur 𝒜 avec 𝐹, nous obtenons une distribution sur {0,1}𝑙 appelée la distribution induite par 𝐹. Définition Soit 𝐹 un générateur pseudo-aléatoire et 𝜀 > 0. Un 𝜀-distingueur pour 𝐹 est un algorithme 𝐷 probabiliste polynomial {0,1}𝑙 → {0,1} tel que ℙ𝐹 {𝐷(𝑏1 , … , 𝑏𝑙 ) = 1} − ℙ{𝐷(𝑏1 , … , 𝑏𝑙 ) = 1} ≥ 𝜀 où ℙ𝐹 signifie que les bits 𝑏1 , … , 𝑏𝑙 sont choisis selon la distribution induite par 𝐹 et ℙ qu’ils sont choisis selon la distribution uniforme. Définition Un générateur pseudo-aléatoire 𝐹 est dit cryptographiquement sûr s’il n’existe d’ 𝜀-distingueur pour 𝐹 que pour des fonctions 𝜀 négligeables (par rapport au paramètre 𝑙). III.3. Extrapoleurs Définition Soit 𝐹 un générateur pseudo-aléatoire, 𝑡 ∈ [1, 𝑙 ] un entier, et 𝜀 > 0. On note (𝑏1 , … , 𝑏𝑙 ) des bits choisis suivant la distribution induite par 𝐹 sur {0,1}𝑙 . Un extrapoleur d’ordre 𝑡 pour 𝐹 d’avantage 𝜀 est un algorithme probabiliste polynomial calculant le bit 𝑏𝑡 en fonction des précédents 1 𝑏1 , … , 𝑏𝑡−1 avec probabilité ≥ + 𝜀. 2 Ainsi à partir d’un extrapoleur 𝐸 d’ordre 𝑡 et d’avantage 𝜀 pour 𝐹, nous obtenons un 𝜀-distingueur 𝐷 pour 𝐹 comme suit : Page | 35 𝐸𝑛𝑡𝑟𝑒𝑟: (𝑏1 , … , 𝑏𝑙 ) ∈ {0,1}𝑙 𝑆𝑜𝑟𝑡𝑖𝑒: 𝑢𝑛 é𝑙é𝑚𝑒𝑛𝑡 𝑑𝑒 {0,1} 𝑆𝑖 𝐸 (𝑏1 , … , 𝑏𝑡−1 ) = 𝑏𝑡 𝑎𝑙𝑜𝑟𝑠 𝑟𝑒𝑡𝑜𝑢𝑟𝑛𝑒𝑟 1 𝑠𝑖𝑛𝑜𝑛 𝑟𝑒𝑡𝑜𝑢𝑟𝑛𝑒𝑟 0 La probabilité que 𝐸 (𝑏1 , … , 𝑏𝑡−1 ) soit égal à 𝑏𝑡 vaut au moins 1 2 +𝜀 lorsque (𝑏1 , … , 𝑏𝑙 ) est choisi selon la distribution induite par 𝐹 et vaut 1 2 lorsque (𝑏1 , … , 𝑏𝑙 ) est choisi selon la distribution uniforme. Théorème de Yao Un générateur pseudo-aléatoire 𝐹 est sûr si et seulement si, pour chaque 𝑡 ∈ [1, 𝑙 ] entier, il n’existe pas d’extrapoleur pour 𝐹, autres que d’avantage négligeable. Preuve D’après la construction de distingueur à partir d’un extrapoleur, 𝐹 ne peut être sûr que si tout extrapoleur n’est que d’avantage négligeable. Inversement, supposons que 𝐹 ne soit pas sûr. Pour 0 ≤ 𝑖 ≤ 𝑙, notons 𝐹𝑖 la distribution sur {0,1}𝑙 selon laquelle les 𝑖 premiers bits 𝑏1 , … , 𝑏𝑖 sont produits par 𝐹 et les autres 𝑏𝑖+1 , … , 𝑏𝑙 sont choisis uniformément au hasard. Ainsi, 𝐹0 est la distribution uniforme et 𝐹𝑙 celle induite par 𝐹. Par hypothèse, il existe un 𝜀-distingueur 𝐷 pour 𝐹 telle que 𝜀 ne soit pas négligeable, c’est-à –dire ℙ𝐹𝑙 {𝐷(𝑏1 , … , 𝑏𝑙 = 1} − ℙ𝐹0 {𝐷(𝑏1 , … , 𝑏𝑙 = 1} ≥ 𝜀 Donc il existe un 𝑡 ∈ [1, 𝑙 ] et une fonction 𝜀 ′ pas négligeable tels que ℙ𝐹𝑡 {𝐷(𝑏1 , … , 𝑏𝑙 = 1} − ℙ𝐹𝑡−1 {𝐷(𝑏1 , … , 𝑏𝑙 = 1} ≥ 𝜀 ′ (1) Considérons l’algorithme 𝐸𝑡 suivant : Page | 36 𝐸𝑛𝑡𝑟𝑒𝑟: (𝑏1 , … , 𝑏𝑡−1 ) ∈ {0,1}𝑡−1 𝑆𝑜𝑟𝑡𝑖𝑒: 𝑢𝑛 é𝑙é𝑚𝑒𝑛𝑡 𝑑𝑒 {0,1} 𝐶ℎ𝑜𝑖𝑠𝑖𝑟 𝑏𝑡 , … , 𝑏𝑙 𝑎𝑢 ℎ𝑎𝑠𝑎𝑟𝑑 𝑆𝑖 𝐷(𝑏1 , … , 𝑏𝑙 ) = 1 𝑎𝑙𝑜𝑟𝑠 𝑟𝑒𝑡𝑜𝑢𝑟𝑛𝑒𝑟 𝑏𝑡 𝑠𝑖𝑛𝑜𝑛 𝑟𝑒𝑡𝑜𝑢𝑟𝑛𝑒𝑟 𝑏̅𝑡 Nous allons montrer que 𝐸𝑡 est un extrapoleur d’avantage 𝜀 ′ pour 𝐹. On a tout d’abord ℙ𝐹𝑡−1 {𝑏1 , … , 𝑏𝑡−1 } = 2𝑙−𝑡+1 ℙ𝐹𝑡−1 {𝑏1 , … , 𝑏𝑙 } et ℙ𝐹𝑡 {𝑏1 , … , 𝑏𝑡 } = 2𝑙−𝑡 ℙ𝐹𝑡 {𝑏1 , … , 𝑏𝑙 } . On a aussi ℙ𝐹𝑡−1 {𝑏1 , … , 𝑏𝑡−1 } ℙ𝐹 {𝑏𝑡 |𝑏1 , … , 𝑏𝑡−1 } = ℙ𝐹𝑡 {𝑏1 , … , 𝑏𝑡 } , donc ℙ𝐹𝑡−1 {𝑏1 , … , 𝑏𝑡−1 } ℙ𝐹 {𝑏𝑡 |𝑏1 , … , 𝑏𝑡−1 } = 1 ℙ {𝑏 , … , 𝑏𝑙 } 2 𝐹𝑡 1 (2) Pour alléger les notations, nous posons 𝒃 = (𝑏1 , … , 𝑏𝑙 ) et 𝒃𝒊 = (𝑏1 , … , 𝑏𝑖 ). La probabilité que 𝐸𝑡 prévoie le bit 𝑟𝑡 correctement est donnée par ℙ𝐹 {𝐸𝑡 (𝑏𝑡−1 ) = 𝑏𝑡 } = ∑ ℙ𝐹𝑡−1 {𝒃}(ℙ𝐹 {𝑏𝑡 |𝑏𝑡−1 }ℙ{𝐷(𝒃) = 1} + (ℙ𝐹 {𝑏̅𝑡 |𝑏𝑡−1 }ℙ{𝐷(𝒃) = 0}) 𝒃 = ∑ ℙ𝐹𝑡−1 {𝒃}(ℙ𝐹 {𝑏𝑡 |𝑏𝑡−1 }ℙ{𝐷(𝒃) = 1} + (1 − ℙ𝐹 {𝑏𝑡 |𝑏𝑡−1 }ℙ{𝐷(𝒃) = 0}) 𝒃 = 1 ∑ ℙ𝐹𝑡 {𝒃}(ℙ{𝐷(𝒃) = 1} − ℙ{𝐷(𝒃) = 0}) + ∑ ℙ𝐹𝑡−1 {𝒃} ℙ{𝐷(𝒃) = 0} 𝑝𝑎𝑟(2) 2 𝒃 = 𝒃 1 ∑ ℙ𝐹𝑡 {𝒃}(2 (ℙ{𝐷(𝒃) = 1} − 1) + ∑ ℙ𝐹𝑡−1 {𝒃} (1 − ℙ{𝐷(𝒃) = 1}) 2 𝒃 𝒃 1 = ∑ ℙ𝐹𝑡 {𝒃} ℙ{𝐷(𝒃) = 1} − + 1 − ∑ ℙ𝐹𝑡−1 {𝒃} ℙ{𝐷(𝒃) = 1} 2 𝒃 = 𝒃 1 + ∑(ℙ𝐹𝑡 {𝒃} − ℙ𝐹𝑡−1 {𝒃})ℙ{𝐷(𝒃) = 1} 2 𝒃 ≥ 1 + 𝜀 ′ 𝑑 ′ 𝑎𝑝𝑟è𝑠(1) 2 Page | 37 III.4 Sécurité du générateur Blum-Blum-Shub III.4.1 Problème de la résiduosité quadratique Le problème de la résiduosité quadratique est comme suit : étant donné un nombre 𝑥 ≤ 𝑛, il faut déterminer si 𝑥 est un carré modulo 𝑛 ou non. Lorsque 𝑛 = 𝑝 un premier, le problème sera résolu en temps 𝑥 polynomial en la taille de 𝑝 par le calcule du symbole de Legendre ( ). 𝑝 Puisqu’on sait que 𝑥 est un résidu quadratique modulo 𝑝 si et seulement si son symbole de Legendre est 1. Lorsque 𝑛 est un nombre composé dont on ne connait pas la factorisation, aucun algorithme polynomial en la taille de 𝑛 sera disponible pour résoudre le problème de la résiduosité quadratique. Supposons que 𝑛 = 𝑝𝑞 où 𝑝 et 𝑞 deux premiers distincts. Si la factorisation de 𝑛 est connue alors le problème de la résiduosité quadratique se résout en temps polynomial en cherchant tout simplement si 𝑥 𝑚𝑜𝑑 𝑝 et 𝑥 𝑚𝑜𝑑 𝑞 sont des résidus quadratiques par le calcul de leurs symboles de Legendre. Mais lorsqu’on ne connait pas la factorisation de 𝑛 ,il sera impossible de résoudre le problème en temps polynomial. Un autre problème s’oppose à savoir l’extraction d’une racine carrée modulaire : sachant qu’un nombre 𝑥 est un résidu quadratique 𝑚𝑜𝑑 𝑛, comment déterminer un nombre 𝑦 tel que 𝑦 2 = 𝑥 𝑚𝑜𝑑 𝑛 ? Page | 38 Nota Soit 𝑛 un entier de Blum, 𝑥 un élément de symbole de Jacobi 1 et 𝑦 = 𝑥 2 𝑚𝑜𝑑 𝑛 son carré modulo 𝑛. On sait que 𝑦 ∈ 𝑄𝑅𝑛 , et possède 4 racines carrées dont deux ont pour symbole de Jacobi 1 : 𝑥 et – 𝑥. Une et une des deux valeurs 𝑥 et – 𝑥, est dans 𝑄𝑅𝑛 . En outre 𝑥 et – 𝑥 ont des parités différentes. Autrement dit, si on disposait d’un algorithme capable de déterminer avec une probabilité de succès non négligeable, à partir de 𝑦, quelle est la parité de la racine carrée qui est elle-même un carré, on pourrait déterminer avec la même probabilité de succès si 𝑥 est un carré ou non. III.4.2 Détails sur la sécurité du générateur Blum-Blum-Shub 𝑎 On va noter 𝐽𝑛+ l’ensemble des entiers 𝑎 > 0 de symbole de Jacobi ( ) 𝑛 valant 1. Les nombres d’éléments de 𝐽𝑛+ est donné par : ⋕ 𝐽𝑛+ = 1 2 (𝑛 − (𝑝 + 𝑞 ) + 1) Et aussi 𝑄𝑅𝑛 ⊂ 𝐽𝑛+ , alors ⋕ 𝑄𝑅𝑛 = + ⋕𝐽𝑛 2 1 = (𝑛 − (𝑝 + 𝑞 ) + 1) 4 Comme 𝑛 est un entier de Blum, par conséquent l’application 𝑔𝑛 de 𝑄𝑅𝑛 dans lui-même définie par 𝑔𝑛 (𝑥 ) = 𝑥 2 𝑚𝑜𝑑 𝑛 est une bijection. Soit 𝑘, la taille de l’entier 𝑛, qui servira de paramètre de sécurité. On dispose d’un algorithme probabiliste polynomial en 𝑘, 𝒢, qui étant donné en entrée le paramètre de sécurité 𝑘, construit au hasard un environnement de travail, c’est-à-dire un entier de Blum 𝑛 de taille 𝑘 (pour notre cas). Soit la fonction 𝑔𝑛 d’élévation au carrée modulo 𝑛. On note Γk l’ensemble des environnements possibles. Soit 𝒜 un algorithme probabiliste polynomial en 𝑘, dont l’entrée est le paramètre de sécurité 𝑘, le nombre 𝑛 et un élément 𝑎 de 𝐽𝑛+ et la sortie un bit 𝑏 dont on souhaite qu’il détermine avec succès si 𝑎 est un élément de 𝑄𝑅𝑛 ou non. Page | 39 Considérons les expériences : 𝐸𝑥𝑝𝑡𝒢𝑟𝑒𝑠 (𝒜, 𝑘) ̃ 𝒢𝑟𝑒𝑠 (𝒜, 𝑘) 𝐸𝑥𝑝𝑡 (𝑛, 𝑔𝑛 ) ← Γk (𝑛, 𝑔𝑛 ) ← Γk 𝑥 ← 𝐽𝑛+ 𝑥 ← 𝐽𝑛+ 𝑥 ← 𝑔𝑛 (𝑥) 𝑏 ← 𝒜(𝑘, 𝑛, 𝑥) 𝑏 ← 𝒜(𝑘, 𝑛, 𝑥) 𝑟𝑒𝑡𝑜𝑢𝑟 𝑏 𝑟𝑒𝑡𝑜𝑢𝑟 𝑏 𝐹𝑖𝑛 𝐹𝑖𝑛 L’avantage de l’attaquant 𝒜 est définie par : ̃ 𝒢𝑟𝑒𝑠 (𝒜, 𝑘) = 1)| 𝐴𝑑𝑣𝒢𝑟𝑒𝑠 (𝒜, 𝑘) = |𝑃𝑟𝑜𝑏 (𝐸𝑥𝑝𝑡𝒢𝑟𝑒𝑠 (𝒜, 𝑘) = 1) − 𝑃𝑟𝑜𝑏(𝐸𝑥𝑝𝑡 Le problème de la résiduosité quadratique est sûr par l’hypothèse de la difficulté de la résiduosité quadratique, c’est-à-dire que pour tout attaquant polynomial 𝒜 et pour tout entier 𝑚 ∶ lim 𝑘 𝑚 𝐴𝑑𝑣𝒢𝑟𝑒𝑠 (𝒜, 𝑘) = 0. 𝑘→+∞ Autrement dit tout attaquant polynomial a un avantage qui est une fonction négligeable du paramètre de sécurité 𝑘. Les algorithmes d’extrapolation Soit 𝑘 le paramètre de sécurité, 𝑛𝑘 un entier de Blum de taille 𝑘 et 𝑓𝑛𝑘 le générateur des nombres pseudo-aléatoire définie par : 𝑓𝑛𝑘 : 𝑄𝑅𝑛 → {0,1}𝑙(𝑘) , où pour tout 𝑥0 ∈ 𝑄𝑅𝑛𝑘 le calcul de 𝑓𝑛𝑘 (𝑥0 ) se fait de la façon suivante : 1. La bijection 𝑔𝑛𝑘 de 𝑄𝑅𝑛𝑘 dans lui-même définie par 𝑔𝑛𝑘 (𝑥 ) = 𝑥 2 𝑚𝑜𝑑 𝑛𝑘 permet de calculer 𝑥1 = 𝑔𝑛𝑘 (𝑥0 ), … , 𝑥𝑙(𝑘) = 𝑔𝑛𝑘 (𝑥𝑙(𝑘)−1 ) 2. Chaque 𝑥𝑖 donne un bit 𝑋𝑖 = 𝑥𝑖 𝑚𝑜𝑑 2 3. 𝑓𝑛𝑘 (𝑥0 ) = (𝑋1 , 𝑋2 , … , 𝑋𝑙(𝑘) ) Lemme Page | 40 Soit 𝑠 ∈ [1, 𝑙(𝑘)] et ℬ𝑠 un algorithme probabiliste polynomial qui étant donnés les bits (𝑋𝑠 , … , 𝑋𝑙(𝑘) ) prédit le bit 𝑋𝑠−1 avec un avantage non négligeable. Alors on fournit en entrée de cet algorithme probabiliste polynomial, les 𝑙 (𝑘) − 𝑠 bits (𝑌1 , 𝑌2 , … , 𝑌𝑙(𝑘)−𝑠 ) d’un 𝑓𝑛𝑘 (𝑦0 ), il prédit le bit 𝑌0 = 𝑦0 𝑚𝑜𝑑 2 avec le même avantage non négligeable. Preuve Du fait 𝑔𝑛𝑘 est une bijection, la loi de probabilité du terme calculé 𝑥𝑠 𝜖 𝑄𝑅𝑛𝑘 , est la même que la loi de probabilité du terme tiré au sort dans 𝑄𝑅𝑛𝑘 qui sert de germe 𝑥0 . Pour prouver que le générateur BBS est sûr, on montrera que s’il existe un extrapoleur probabiliste polynomial qui prédit le bit 𝑋0 avec un avantage non négligeable, alors, il existe un algorithme probabiliste polynomial qui possède un avantage non négligeable pour résoudre le problème de la résiduosité quadratique. Soit ℬ un algorithme polynomial probabiliste, dont les entrées sont 𝑘, 𝑛𝑘 , (𝑌1 , 𝑌2 , … , 𝑌𝑟 ) et dont l’avantage de prédiction du bit 𝑌0 n’est pas une fonction négligeable de 𝑘. Construisons l’algorithme 𝒜 dont les entrées sont ((𝑘, 𝑛𝑘 , 𝑥) où 𝑥 ∈ 𝐽𝑘+ et sort un bit. 𝒜 (𝑘, 𝑛𝑘 , 𝑥 ) 𝑦0 ← 𝑥 𝑝𝑜𝑢𝑟 𝑖 = 1 à 𝑖 = 𝑙(𝑘) 2 𝑦𝑖 = 𝑦𝑖−1 𝑚𝑜𝑑 𝑛 ; 𝑌𝑖 = 𝑦𝑖 𝑚𝑜𝑑 2 𝑓𝑖𝑛 𝑝𝑜𝑢𝑟 𝑌0 = ℬ(𝑘, 𝑛𝑘 , (𝑌1 , 𝑌2 , … , 𝑌𝑟 )) 𝑏 = (𝑌0 = 𝑦0 𝑚𝑜𝑑 2) 𝑟𝑒𝑡𝑜𝑢𝑟 𝑏 𝐹𝑖𝑛 Page | 41 Par le nota précédent, on voit que l’algorithme 𝒜 ainsi construit, a un avantage 𝐴𝑑𝑣𝒢𝑟𝑒𝑠 (𝒜, 𝑘) non négligeable pour le problème de la résiduosité quadratique. En tenant compte de la difficulté de la résiduosité quadratique, on conclut que le générateur Blum-BlumShub est sûr. Page | 42 CHAPITRE IV : IMPLEMENTATION ET INTERPRETATION DES RESULTATS Dans ce chapitre nous présentons l’implémentation de l’algorithme de Blum-Blum-Shub et l’interprétation des résultats obtenus. Voici l’algorithme de Blum-Blum-Shub : Générer p et q Faire n : = p ∗ q Choisir s ∈ [1, n − 1] Calculer le germe : x0 : = s2 mod n 2 La séquence est bi : = xi−1 mod 2 Sortie est : b1 , b2 , … , bn−1 Nous avons implémenté l’algorithme de Blum-Blum-Shub en c++ à partir du compilateur DEV-C++. Voici les codes du programme : #include <iostream> #include<conio.h> using namespace std; int main() { int i,B; unsigned long long int X,n,p,q,s; cout<<endl<<"Entrer la valeur de p:";// p un entier congru à 3 modulo 4 cin>>p; cout<<endl<<"Entrer la valeur de q:";//q un entier congru à 3 modulo 4 cin>>q; n=p*q;//ceci calcule l'entier de blum Page | 43 cout<<endl<<" L'entier de Blum cout<<endl<<"Entrer la est:"<<n; valeur pour calculer le germe:";//Le germe,un entier premier avec n cin>>s; X=(s*s); X=X%n;//calcule du germe for(int i=1;i<=10000;i++) { X=(X*X)%n;// B=X%2;//calcule les bits de la séquence cout<<B; } getch (); } Nous savons que l’entier de Blum est défini par 𝑛 = 𝑝𝑞, où 𝑝 et 𝑞 sont tous deux congrus à 3 modulo 4. En d’autres termes 𝑝 = 4 × 𝑘1 + 3 et 𝑞 = 4 × 𝑘2 + 3. Nous prenons 𝑝 et 𝑞 petits, avec 𝑘1 = 78962147 et 𝑘2 = 84562145. Alors 𝑝 = 4 × 78962147 + 3 = 315848591 et 𝑞 = 4 × 84562145 + 3 = 338248583, alors 𝑛 = 106835338348296553 ,prenons 𝑠 = 4 × 9856347 + 3 = 39425391, puisque (𝑠, 𝑛) = 1 ,la séquence comportera 10.000 bits. La séquence était produite en 1,20 secondes dans un ordinateur dont les caractéristiques sont : Dual Core , Processeur AMD Sempron (tm) 2.10 GHz 3.00 Go de RAM Voici la sequence : 011100001010110011000110100111000001011000001000000101010101 110101101111110111110100011110100100100011000100100010010010 000001111100010111010101111110100001010101101011101100001111 111001101100100000110111000000101010011101010101111100100010 111110111111101010111111001110100101111010000001101110001101 100010111101000100110000010000101001110110110101000011010011 Page | 44 100000001111110110100110110101010100100110100111011010100101 001001111011001111010001000101000111110100011000110110000110 010110001000000101101010111001110101010001100100110111100110 110111011101101000100110011000011100101001000101011010010011 011101000001100001111111010000001010101001000110100010111101 000100111001010101011010001100011101011111010000011000110101 111011001010001110111100101101101111101110110100101000011001 111010000011110100001000111100000010011111111100010111011111 100010001001001110010111010101001111000101010011001010000111 010000000011011010110101011000111100011111100100110110000010 101100101111000111000111111110100001110100000101110100011110 001001011100100001111001101100101100001101011100010111011000 001011100000101010111000100111001010100110101111011111001111 001101000000000101111111101000000001001110011010010011011110 110110011111100001001010000111000111000110100111001010100011 111100011010100111110001110010011000101001110101111111100011 110001111001010001011011000001110001111110000010011011001000 011101000001110001101101010010010000011101111111101100101100 110000000011100011110100101101010010010000100010110010010101 010101011000110100100111111111010001010101000011001010111100 111111000011000001110011010011111011000111100000101101011010 011000010000000111011100011100110011011011010001100101001011 010001011101110111101100100010100000001100111011111000100011 000100110000110001110010000000011000101100000100110100101010 101011010011001011010111111100011001011011011110000110101111 101011111000000000101000000100011100100000111110010100111010 110101101011011000010001001111011100100010001010010000000010 010010000001001111011010101101011111000001111110000010100011 101011011110011011000111011011111100011011001000101001001010 110011010011110101111101011111010110111101011011110011100011 001100101010011010010111100101100111010001000100000011100100 110010001111000010010010100110001001100000110010100011010001 101000010111000100100001000010001000001010111010110001100010 001101100000001010011100101000011011000001011001001011011111 000100101010010011111101101110010110100010110101111101100111 010010101111110110111011111100110100010011111010010011010010 000011110000001110000011100000010011010000101000101110001001 001101100000000001001110110100110001000101100011000110010000 100100010001001000101100110001010010100111011100010001110100 111100011101100001011110100001110100001100000110010011110001 100000010000000111000001001000111010001011101010110000010011 010000100010101001001100111011100010011011010000100001001110 111111000100011100111010011000000110000101001111111101111100 Page | 45 001010111000100000101111000111101010011000110111010010100110 101010110110001010011001101000001101001100111101101110001101 011111101011100100000101101101010010111001110011001111110011 110000110111000100111010100001111111101110011000110110000101 110111101000001110100100010101101110101011101100101001111100 110100100011100110111001010011010110010100111100010010011010 111000111101010110011100010101111101011111111111101101010100 011010000000110101101101001100000010111001101100010100100001 001110001000101000001100110010010011011000000011011000100001 100110111110111111111000100101100000011001111110110110110110 011010111001000010100100110000111100101011100111011001100110 000110000111000101100111000100010111011101001110110101011001 111010101111001000101000110111000011000111110111100011000010 010101101100001111100100111001100110101000001011010000000010 110101000111011110111011001101001011010110111111000000001110 000011110001110011010101100101001000001111100011111101010000 010101101001010100100101110011001000111101111100011100010011 100001011001101001101100100111110111001011111001001011011111 010111000100011000110000100000000100000110001110011010111001 111101101000001101111000100101111000111010001110000001111101 110100011100101101010010010000000110010101110011001011101010 011000010101000100001111101001110111010010010000011011100000 001110000001110110010101000101010101001001001011001111001111 001011110000001100010010110001100111101110011000111001000010 011000111111010100110101101101001101111000001100100010110110 110001010010010101101100101100000000101001000001111110001110 001101100000100101110000101001001010111110000110110101000111 111011110010000101011111010110100110101011011110100101110110 001100100100000000010011001100000110011111011010000001111011 101001100111001010000100001000000000011101101001011110011100 000010000011001001010111111010011100000010010111101110001111 110011010011010000001000111100000100010001101111011100110011 000010011001010011001000011001010101110110010001100001011000 010011100101101111111110011010000101010000111001100000111110 101011011011001000101011011001010100110101110110100001111111 001111101111001001111111001110110011110101001010010100111010 010100111110011001100000001000010010101000111000111111100000 110100111001010110101101110111110110111110111001010101011101 011010101101010011000000010011000101100110011010111110110011 011000111111011000110000111111100110100111010110011100111100 001001111010000100101000111010111000101100110000100000111010 001000010100000000000111000110101011100011110000111100111010 001001100001110100001011111010010100011011111000110011010110 Page | 46 001110101000011100000101011110011001100010000011110010101011 001111011100110011001001100000110000101110101001110110010111 101011100011011001001010010111010111100110000011101100010010 010010111111011011101111111110101111110100000010110110100111 111001111001001111000110111111100101011111111111010001000100 011100101011100000001101111101100001001001010001101110010101 001110100111001110110101001111110011101111101110111010110001 000101001010101100001111101101100000001110010000000000000001 011100001010011101110110001100101101111011101110111101101001 110100010010111110101101110011001011000000001011011101100100 101011010111111111100001101000100010110110000000011010000110 010011000111010011010000111110001000100110111010110000111011 001101010111001010001110001111000100100001110110011101111101 010000000010000001110000100010001111001000101110111111010110 011010101100000101101111111010010100000011010100100101000001 010110100111100000100010010000111001011001111010110111010110 101011011010111011000101011011000000101111110011001101111010 100110010101001000101101101001101000000000110101011111001101 110101101000101111010100010000001110100100111110111010110110 101010111101000111101010101100100110011010000011111000011011 100100111001111111001101000110111010100110011110100100001010 111100111100001101010010000001010011010010110011000010100000 001111000101100111010000000000001000011111000100001111001111 001010011110001001000010101000000001011101010110111100110001 100010011110111001111100000111100100100010100010001111100100 001100011100111011011101011001010010101101001001011100111000 110011000011010011101101110111000011000000010000110001100110 100111010001011111100000011001000110111110001110010010101111 011111010111110101010111111100111001100100000010010011000011 111000000010011100000101111010111111110000001010010110011110 111110110101101001000111011011000110010011110110101110011010 011100111000000011110000001010001101001001010000001111110000 010111100110000011100111011001111101010011111110011110101110 010010001001111110011000100001010010101101111110010010111100 011011100001001110011000110001001010111011100100110110110001 110001001000000100101111110101111000011000001111100100001110 111001111010111110010101100101011110101111010000011011000001 000111101011000101100100001011000001100011110010101010111000 101001000111010000100011000010001101110001010111001111101011 010101010000000000101100100010110011000100100000000101011001 111001100100000010101000001010010101100000111111000001001010 000000000010111100100001010110101100101100101101100001011101 001011101110001110110000000010101101101101110000010101011100 Page | 47 001000100001100110010101011100101111011111001101110111001011 101111000001101011110110001101100010110001111110111010101110 011101011111101101101111000001000111011000011011010011110101 110100100001101100110001110000011101000011010010111001001101 100110110011011010101100000110001111010110001110111011110011 100110000111000110000011010011110100101100101111010001101111 100111111111100110111111110001010001111101110010101100110101 001111101001111010110011110001001010100101101110100111010001 100001110111001011010010100111101110001011010000110101010000 001010010011001010111010111111110110010101011000101000000101 101010100001010010111101000110111000010000001010010110101010 000101001101011100010010011100111000011110010001110101100001 101001111111100011011000010111011001101010110010101011110010 011101101001000101110100001000100010001011101001100101010001 110011000011001101010101010110011010111000110001101011011100 000111100111001100010111001011101011001100111011000011000001 111001100000110000011101001010000010110010110000000101111000 101100010111000010111110100000100001010100010111001110001001 010011101010100100011011010110110001000100111111111110011000 111001100011010011100111111010011011001101011101111010011011 010011001100010000001111100110110111111000100001010110011100 111011111110101110000101000111011010101011000001100010010110 000111011100010110101010100101111110001111101110100011010111 011010001110010011011111101010011011011100111101011100000001 010100110111010110001011101110101011000100101110111100011010 000110000111110110010111111000011111010101111100001110111011 110010011100010100101101101011001101001110001101111110110001 100001010100100011000111110110010011100110101111011100110011 010010011111011110100101101010100011010000100100011011001110 011101000011010000100111010101111000000100010011100100110001 101100111010111010011001100101011110111010010101101011111101 001010110000101100000100101111011000000 Page | 48 La séquence binaire aléatoire produite peut être utilisée pour clés au chiffrement par flot ou au chiffrement de verman enfin de répondre aux conditions du théorème de Claude Shannon sur la sécurité parfaite : une nouvelle clé est tirée à chaque chiffrement, la clé est aussi longue que le texte clair, toutes les clés sont équiprobables. Si nous avons un message 𝑥 de 𝑛 bits à chiffrer, on considère les 𝑛 premiers bits de la séquence aléatoire générée qui constituent un mot 𝐾 et on fait l’opération « ou exclusif bit à bit » entre le message et la partie de la séquence aléatoire considérée comme clé. C’est-à-dire 𝑦 = 𝑥⨁𝐾. Il est à noter que l’expéditeur et le destinateur ont le même générateur. A la réception, le destinateur extrait de la même façon les 𝑛 premiers bits de la séquence aléatoire et calcule ensuite 𝑥 = 𝑦⨁𝐾 . Les deux interlocuteurs jettent la partie 𝐾 utilisée et peuvent effectuer une nouvelle transaction en procédant de même avec le reste de la clé. Voici le schéma illustrant l’utilisation de la séquence binaire générée avec un message quelconque binaire 𝑥 = 10010010010 Partie utilisée K 0 1 1 1 0 0 0 0 ⨁ Nouvelle clé 1 0 1 0 1 1 0 0 . . . 1 1 1 0 0 0 1 0 1 1 1 . . Clé Message chiffré 𝒚 = 𝒙⨁𝑲 1 0 0 1 0 0 1 0 0 1 0 Message clair 𝒙 Fig.4. Schéma illustrant l’utilisation de la séquence binaire produite Page | 49 CONCLUSION Il existe plusieurs générateurs pseudo-aléatoires mais tous ne sont pas utiliser pour l’usage cryptographique, la plupart sont utilisés en simulation. Nous avons étudié dans le présent travail la façon dont un générateur produit une séquence complètement déterministe à partir d’une valeur initiale appelé germe. Nous avons montré que le générateur Blum-Blum-Shub est cryptographiquement sûr suite au problème de la résiduosité quadratique et à la difficulté de décomposer un grand nombre en deux facteurs premiers. Même si le générateur Blum-Blum-Shub est cryptographiquement sûr, il faudra respecter les paramètres de base pour générer une bonne séquence sinon la séquence à produite serait un échec du point de vue cryptographique. Enfin, la génération des séquences aléatoires cryptographiquement sûres est un défi chez les cryptographes, mathématiciens, informaticiens et ingénieurs. Page | 50 BIBLIOGRAPHIE I. Ouvrages [1] Hans Delfs, Helmut Knebl, Introduction to Cryptography-Principles and Applications, 2nd ed, (Springer, 2007) WW [2] Johannes Buchmann, Introduction à la cryptographie, Dunod, Paris, 2006 [3] J.S. Milne, Algebraic Number Theory, version 3.02, April 30,2009 II. Articles [4] Lenore Blum, Manual Blum, and Michael Shub. A Simple Unpredictable Pseudo-Random Number Generator. SIAM Journal on Computing, 15(2):364.383, May 1986. [5] C.E. Shannon. Communication theory of secrecy systems. Bell Systems Technical journal, 28 : 656-715, 1949. [6] Pascal Junod. Cryptographic Secure Pseudo-Random Bits Generation : The Blum-Blum-Shub Generator. August 1999 [7] Andrey Sidorenko and Berry Schoenmakers. Concrete Security of the Blum-Blum-Shub [8] Pseudorandom Generator, Lecture Notes in Computer Science 3796 (2005) 355-375. Springer-Verlag. [9] Robert Rolland, Sécurité des générateurs pseudo-aléatoires [10] Kaustubh Gawande and Maithily Mundle, Various implementations of Blum Blum Shub pseudo-random sequence generator [11] Robert Rolland, Sécurité des générateur de Blum Blum Shub, partie I, 22 mars 2008 Page | 51 III. Cours [12] MANYA NDJADI L., Probabilité, Note de cours, deuxième graduat Mathématiques, Université de Kinshasa, 2006-2007. [13] Olivier MARKOVITCH , sécurité informatique , note de cours en format imprimable,UNIVERSITÉ LIBRE DE BRUXELLES [14] Francois ARNAULT, Théorie des nombres et cryptographie, Note de cours de D.E.A en format imprimable, Univérsité de Limoges, France, 2002 [15] Renaud Dumont, Cryptographie et Sécurité informatique, note de cours en format imprimable, Université de Liège, Faculté des Sciences Appliquées, 2009 – 2010 [16] W. Edwin Clark, Elementary Number Theory, Note de cours en format imprimable, University of South Florida, Departement of Mathmatics, revised December 17, 2002, IV.Thèses [17] Renaud SANTORO, Vers des générateurs de nombres aléatoires uniformes et gaussiens à très haut débit, Thèse en Traitement du signal et télécommunications, école doctorale Matisse , Université de rennes 1,soutenue jeudi 17 décembre 2009. [18] Dương Hiệu PHAN, Sécurité et efficacité des schémas cryptographiques, École normale supérieure, Département d’informatique, présentée et soutenue publiquement le 16 septembre 2005 [19] Andrea Röck, Quantifying Studies of (Pseudo) Random Number Generation for Cryptography, Thèse de Doctorat présentée à L’ÉCOLE POLYTECHNIQUE pour obtenir le titre de DOCTEUR EN SCIENCES Spécialité Informatique soutenue le 18 mai 2009 Page | 52 V. Sites internet [20] http://www.acrypta.fr [21] http://en.wikipedia.org/wiki/Random_number_generation#cite_ref-0 [22] http://en.wikipedia.org/wiki/Hardware_random_number_generator [23] http://www.random.org/randomness/ [24] http://en.wikipedia.org/wiki/Pseudorandom_number_generator#cite_note-0 [25] http://fr.wikipedia.org/wiki/Blum_Blum_Shub [26] http://en.wikipedia.org/wiki/Lagged_Fibonacci_generator [27] http://fr.wikipedia.org/wiki/Linear_congruential_generator Page | 53 TABLE DES MATIERES EPIGRAPHE ................................................................................................. i DEDICACE .................................................................................................. ii REMERCIEMENTS ..................................................................................... iii INTRODUCTION .......................................................................................... 1 CHAPITRE I : ELEMENTS DE LA THEORIE DES NOMBRES ........................ 3 I.1.Quelques notions de base .................................................................... 3 I.2. La congruence .................................................................................... 5 I.3. Classes des résidus ............................................................................ 5 I.4. Ensemble réduit des résidus............................................................... 6 I.5. La fonction d’Euler ou fonction totient ................................................ 6 I.6. Résidus quadratiques ......................................................................... 9 I.6.1.Le symbole de Legendre ............................................................... 12 I.6.2.Le symbole de Jacobi ................................................................... 13 II.1 Définitions........................................................................................ 15 II.1.1. Définition d’un système cryptographique ................................... 15 II.2 Cryptosystème symétrique et asymétrique ........................................ 16 II.2.1 Cryptosystème symétrique .......................................................... 16 II.2.2 Cryptosystème asymétrique ........................................................ 22 II.3. Sécurité d’un système cryptographique............................................ 25 II.3.1. Notions élémentaires de probabilité ........................................... 25 II.3.2. La sécurité calculatoire .............................................................. 27 II.3.3 La sécurité parfaite de Shannon ................................................. 27 II.3.4. Système cryptographique parfaitement sûr ................................ 28 CHAPITRE III : GENERATEURS PSEUDO-ALEATOIRES ............................ 31 III.1. Exemples de quelques générateurs pseudo-aléatoires ..................... 32 III.2. Générateurs cryptographiquement sûrs .......................................... 34 III.3. Extrapoleurs .................................................................................. 35 III.4 Sécurité du générateur Blum-Blum-Shub ........................................ 38 III.4.1 Problème de la résiduosité quadratique...................................... 38 III.4.2 Détails sur la sécurité du générateur Blum-Blum-Shub ............. 39 Page | 54 CHAPITRE IV : IMPLEMENTATION ET INTERPRETATION DES RESULTATS ................................................................................................................. 43 CONCLUSION ........................................................................................... 50 BIBLIOGRAPHIE ....................................................................................... 51 TABLE DES MATIERES ............................................................................. 54 Page | 55 Page | 56