• Aucun résultat trouvé

Analyse des protocoles cryptographiques par les fonctions témoins

N/A
N/A
Protected

Academic year: 2021

Partager "Analyse des protocoles cryptographiques par les fonctions témoins"

Copied!
239
0
0

Texte intégral

(1)

Analyse des protocoles cryptographiques par les

fonctions témoins

Thèse Jaouhar Fattahi Doctorat en informatique Philosophiæ doctor (Ph.D.) Québec, Canada © Jaouhar Fattahi, 2016

(2)
(3)

Résumé

Les protocoles cryptographiques constituent le cœur de la sécurité dans les communications de tous genres. Ils assurent l’authentification des agents, la confidentialité des données, leur intégrité, l’ato-micité des biens et de l’argent, la non-répudiation, etc. Ils sont utilisés dans tous les domaines : le commerce électronique, le domaine militaire, le vote électronique, etc. L’utilisation de la cryptogra-phie est essentielle pour assurer la sécurité d’un protocole, mais elle n’est pas suffisante. En effet, on rapporte un nombre important de protocoles qui ont été longtemps considérés sécuritaires, mais qui se sont avérés défaillants avec le l’usage. Dire qu’un protocole est correct ou non est un problème non-décidable en général. Cependant, plusieurs méthodes (basées sur les logiques, sur le Model-Checking ou sur le typage, etc.) ont vu le jour pour répondre à cette question sous des hypothèses restrictives et ont abouti à des résultats variables. Dans cette thèse, nous suggérons une méthode semi-décidable d’analyse des protocoles cryptographiques pour la propriété de confidentialité. Elle se base sur une intuition : "Un protocole croissant est correct". Nous validons cette intuition et nous proposons le théorème fondamental de correction des protocoles croissants sous des conditions minimales. Ensuite nous proposons une famille de fonctions témoins ayant les propriétés requises pour certifier qu’un protocole est correct. Nous validons enfin notre méthode sur des protocoles communs.

(4)
(5)

Abstract

Cryptographic protocols are the fundament of security in all communications. They allow agents’ authentication, data confidentiality, data integrity, atomicity of goods, atomicity of money, nonrepu-diation, etc. They are used in all areas: e-commerce, military fields, electronic voting, etc. The use of cryptography is essential to ensure the protocol security, but it is not sufficient. Indeed, we report a sig-nificant number of cryptographic protocols that had long been considered safe, but have been proven faulty with usage. Saying that a protocol is correct or not is an undecidable problem in general. How-ever, several methods (logic-based methods, Model-Checking-based methods, typing-based methods, etc.) have emerged to address this question under restrictive assumptions and led to varying results. In this thesis, we suggest a semi-decidable method for analyzing cryptographic protocols for secrecy. It is based on an intuition: "An increasing protocol is correct". We formally validate this intuition, and we state the fundamental theorem of correctness of increasing protocols under few conditions. Then, we propose a safe way to build a family of reliable functions that we call the witness-functions, to certify protocol’s correctness. Finally, we validate our method on common protocols.

(6)
(7)

Table des matières

Résumé iii

Abstract v

Table des matières vii

Liste des tableaux xiii

Liste des figures xv

Remerciements xix Introduction 1 0.1 Motivation. . . 1 0.2 Objectif . . . 1 0.3 Méthodologie . . . 2 0.4 Organisation de la thèse. . . 3

1 La sécurisation par l’approche cryptographique 7 1.1 Introduction . . . 7

1.2 La cryptographie . . . 8

1.2.1 Système cryptographique. . . 9

1.2.2 Chiffrement symétrique . . . 9

Le système de chiffrement DES . . . 10

Le systèeme de chiffrement AES. . . 11

L’algorithme Blowfish . . . 14

L’algorithme SEAL. . . 14

Autres algorithmes symétriques . . . 15

1.2.3 Chiffrement asymétrique . . . 15

Le système de chiffrement RSA . . . 16

Le système de chiffrement El-Gamel. . . 17

Le système de sac à dos . . . 18

Le système de chiffrement de Cramer–Shoup . . . 19

Les courbes elliptiques . . . 20

1.2.4 Le logarithme discret, quel avenir ? . . . 21

1.2.5 Signature numérique . . . 21

1.2.6 Fonction de hachage . . . 22

(8)

1.3 Conclusion . . . 23

2 Les protocoles cryptographiques et les méthodes d’analyse 25 2.1 Introduction . . . 25 2.2 Propriétés de sécurité . . . 26 2.2.1 Confidentialité . . . 26 2.2.2 Intégrité . . . 27 2.2.3 Authentification . . . 27 2.2.4 Non-répudiation . . . 27 2.2.5 Atomicité . . . 28 2.2.6 Anonymat. . . 28 2.3 Éléments du protocole . . . 28 2.3.1 Principal . . . 28 2.3.2 Nonce, Timestamp . . . 28 2.3.3 Message. . . 28 2.3.4 Étape de communication . . . 29

2.4 Classification des protocoles . . . 29

2.5 Trace d’exécution . . . 30

2.6 Intrus . . . 30

2.7 Failles . . . 30

2.7.1 Les failles de fraîcheur . . . 30

2.7.2 Les failles d’oracle . . . 31

2.7.3 Les failles d’association . . . 32

2.7.4 Les failles de type . . . 33

2.7.5 Les failles d’implantation . . . 33

2.7.6 Les failles de répudiation . . . 34

2.8 Les protocoles à divulgation nulle de connaissance . . . 35

2.8.1 Le protocole de Fiat-Shamir . . . 35

2.8.2 Le protocole de Guillou-Quisquater . . . 35

2.8.3 Le protocole de Schnorr . . . 36

2.9 Analyse des protocoles et décidabilité . . . 36

2.9.1 Décidabilité sous l’hypothèse de l’encryption parfaite. . . 37

2.9.2 Décidabilité sans l’hypothèse de l’encryption parfaite . . . 38

Associativité . . . 38 Commutativité . . . 38 XOR . . . 39 Groupe Abélien . . . 39 Homomorphisme . . . 40 Préfixage . . . 40

Groupe Abélien et exponentiation modulaire . . . 40

2.10 Méthodes décidables . . . 41

2.11 Méthodes semi-décidables . . . 42

2.11.1 Méthodes basées sur les logiques . . . 43

2.11.2 Méthodes basées sur le typage . . . 45

2.11.3 Méthodes basées sur le Model-Cheking . . . 46

2.11.4 Méthodes inductives . . . 48

2.11.5 Méthodes basées sur les conditions suffisantes pour la correction des pro-tocoles . . . 49

(9)

2.12 Autres approches . . . 50

2.12.1 Approches dans le modèle de Dolev étendu . . . 50

2.12.2 Approche de Debbabi . . . 51

2.12.3 Approche de Guttman . . . 51

2.12.4 Approche de Schmidt. . . 51

2.12.5 Approche d’Armando . . . 51

2.12.6 Approche de l’équipe CARAMEL . . . 52

2.13 Conclusion . . . 52

3 Conditions suffisantes de correction des protocoles cryptographiques 55 3.1 Introduction . . . 55

3.2 Contexte de vérification. . . 56

3.2.1 Capacités de l’intrus . . . 57

3.2.2 Treillis de sécurité . . . 59

3.3 Spécification basée sur les rôles . . . 59

3.3.1 Protocole . . . 60

3.3.2 Rôles . . . 60

3.3.3 Rôles généralisés . . . 60

3.3.4 Trace valide . . . 61

3.4 Conventions d’écriture . . . 64

3.5 Fonction d’analyse fiable . . . 64

3.5.1 Fonction d’analyse . . . 64

3.5.2 Fonction bien formée . . . 65

3.5.3 Fonction stable par intrus. . . 66

3.5.4 Fonction fiable . . . 66

3.6 Protocole correct . . . 66

3.7 Protocole croissant . . . 67

3.8 Correction des protocoles croissants . . . 68

3.8.1 Théorème fondamental . . . 69

3.9 Comparaison avec des travaux similaires . . . 69

3.10 Conclusion . . . 70

4 Construction de fonctions d’analyse fiables 81 4.1 Introduction . . . 81

4.2 Encryption, accesseur et message clair . . . 81

4.2.1 Théorie équationnelle, système de réécriture et forme normale . . . 83

4.2.2 Messages bien protégés. . . 85

4.2.3 Message clair . . . 86

4.3 Sélections fiables . . . 88

4.3.1 Sélection bien formée . . . 88

4.3.2 Sélection stable par intrus . . . 89

4.3.3 Sélection fiable . . . 89

4.4 Classe de sélections à l’intérieur d’une clé protectrice externe : SGenEK . . . 90

4.4.1 Fiabilité de la classe SGenEK . . . 91

4.4.2 Instanciation de SGenEK . . . 93

La sélection SEKEK . . . 93

La sélection SEKN . . . 94

(10)

4.5 Classe de sélections à l’intérieur d’une clé protectrice interne : SGenIK . . . 97

4.5.1 Fiabilité de la classe SGenIK . . . 98

4.5.2 Instanciation de SGenIK . . . 99

La sélection SIKIK . . . 99

La sélection SNIK . . . 100

La sélection SN IKIK . . . 101

4.6 Construction des fonctions fiables basées sur les sélections . . . 101

4.6.1 Homomorphisme de passage des sélections vers les fonctions . . . 101

4.6.2 Fiabilité des fonctions . . . 102

4.7 Définitions étendues des fonctions fiables . . . 104

4.7.1 La fonction FEKEK . . . 105 4.7.2 La fonction FNEK . . . 105 4.7.3 La fonction FN EKEK . . . 106 4.7.4 La fonction FIKIK . . . 107 4.7.5 La fonction FNIK . . . 107 4.7.6 La fonction FN IKIK . . . 108

4.8 Relaxation des hypothèses . . . 111

4.9 Conclusion . . . 112

5 Les fonctions témoins 125 5.1 Introduction . . . 125

5.1.1 Principe de délégation . . . 127

5.1.2 Message dérivé . . . 127

5.2 Les fonctions témoins. . . 131

5.2.1 Préliminaires . . . 131

Décomposition des messages. . . 131

5.2.2 Définition d’une fonction témoin. . . 134

5.2.3 Propriétés . . . 135

5.2.4 Héritage de fiabilité. . . 135

5.3 Les bornes d’une fonction témoin . . . 140

5.4 Lemme des bornes . . . 140

5.5 Borne inférieure d’une fonction témoin . . . 140

5.6 Borne supérieure d’une fonction témoin . . . 141

5.7 Théorème d’analyse par les fonctions témoins . . . 143

5.8 Règles de bonnes pratiques et aide-mémoire . . . 145

5.9 Conclusion . . . 146

6 Analyse de protocoles communs par les fonctions témoins 153 6.1 Analyse du protocole NSL par les fonctions témoins . . . 153

6.1.1 Protocole et contexte . . . 153

6.1.2 Analyse du rôle généralisé de A . . . 154

Analyse des messages échangés dans la session Si: . . . 155

Analyse des messages échangés dans la session Sj : . . . 156

6.1.3 Analyse du rôle généralisé de B . . . 157

6.1.4 Résultats et interprétation . . . 159

6.2 Analyse du protocole de Needham-Schroeder par les fonctions témoins . . . 159

6.2.1 Protocole et contexte . . . 159

(11)

Analyse des messages échangés dans la session Si: . . . 160

Analyse des messages échangés dans la session Sj: . . . 161

6.2.3 Analyse du rôle généralisé de B . . . 162

Analyse des messages échangés dans la session S0i : . . . 163

6.2.4 Résultats et interprétation . . . 165

6.3 Analyse du protocole de Woo-Lam par les fonctions témoins . . . 166

6.4 Protocole et contexte . . . 166

6.4.1 Analyse du rôle généralisé de A . . . 167

6.4.2 Analyse du rôle généralisé de B . . . 169

Analyse des messages échangés dans la session Si: . . . 169

Analyse des messages échangés dans la session Sj: . . . 169

6.4.3 Analyse du rôle généralisé de S . . . 170

6.4.4 Résultats et interprétation . . . 172

6.5 Analyse du protocole de Woo-Lam (version amendée) par les fonctions témoins . 175 6.5.1 Protocole et contexte . . . 175

6.5.2 Analyse du rôle généralisé de A . . . 176

6.5.3 Analyse du rôle généralisé de B . . . 177

Analyse des messages échangés dans Si: . . . 178

Analyse des messages échangés dans Sj: . . . 178

6.5.4 Analyse du rôle généralisé de S . . . 178

6.5.5 Résultats et interprétation . . . 181

6.6 Analyse du protocole d’Otway-Rees par les fonctions témoins . . . 182

6.6.1 Protocole et contexte . . . 182

6.6.2 Résultats et interprétation . . . 183

6.7 Analyse du protocole NSL par les fonctions témoins sous la cryptographie homo-morphique. . . 185

6.7.1 Protocole et contexte . . . 185

6.7.2 Résultats et interprétation . . . 185

6.7.3 Proposition d’une version corrigée . . . 186

6.8 Conclusion . . . 187

7 Comparaison avec des travaux similaires 189

Conclusion 193

Bibliographie 195

(12)
(13)

Liste des tableaux

1.1 Nombre de tours en fonction de la taille des blocs et de la clé en AES . . . 13

2.1 Résumé de décidabilité de la correction des protocoles sous l’hypothèse de l’encryp-tion parfaite . . . 37

2.2 Résumé de décidabilité de correction des protocoles sans l’hypothèse de l’encryption parfaite . . . 42

3.1 Rôles du protocole NSL. . . 61

3.2 Rôles généralisés du protocole NSL . . . 62

6.1 Une variante du protocole NSL . . . 154

6.2 Conformité du protocole NSL avec le critère de correction établi par Théorème 5.7.1 159 6.3 Variante du protocole de Needham-Schroeder . . . 159

6.4 Conformité du protocole de Needham-Schroeder avec le critère de correction établi par Théorème 5.7.1 . . . 165

6.5 Protocole de Woo-Lam . . . 166

6.6 Conformité du protocole Woo-Lam avec Théorème 5.7.1 (Analysé avec la fonction témoin Wp,FEK N EK) . . . 173

6.7 Conformité du protocole Woo-Lam avec Théorème 5.7.1 (Analysé avec la fonction témoin Wp,FEK N ) . . . 173

6.8 Version amendée du protocole de Woo-Lam . . . 175

6.9 Conformité de la version amendée du protocole de Woo-Lam avec le critère de cor-rection établi par Théorème 5.7.1 . . . 181

6.10 Protocole d’Otway-Rees . . . 182

6.11 Conformité du protocole d’Otway-Rees avec Théorème 5.7.1 . . . 184

6.12 Conformité du protocole NSL avec Théorème 5.7.1 sous la cryptographie homomor-phique . . . 185

6.13 Version corrigée du protocole NSL sous la cryptographie homomorphique . . . 187

7.1 Comparaison des méthodes d’analyse . . . 190

(14)
(15)

Liste des figures

0.1 Analyse des protocoles cryptographiques par les fonctions témoins . . . 3

1.1 Itération de Feistel . . . 11

6.1 Scénario d’attaque sur le protocole de Needham-Schroeder . . . 165

6.2 Scénario d’attaque sur le protocole Woo-Lam . . . 174

6.3 Faille de type dans le protocole d’Otway-Rees . . . 183

(16)
(17)
(18)
(19)

Remerciements

Cette thèse est le résultat d’un travail de plusieurs années. En préambule, je voudrais adresser tous mes remerciements aux personnes qui m’ont aidé pour mener à bien ce travail.

Mes remerciements s’adressent d’abord à mon directeur de recherche le professeur Mohamed Mejri. Je lui exprime toute ma gratitude pour la disponibilité, les conseils, l’aide incessante et le soutien continu qu’il m’a apportés pendant toutes les années passées. J’ai vraiment beaucoup appris de sa mé-thode de travail, de sa rigueur scientifique, de sa rationalité ainsi que de ses grandes qualités humaines.

Je remercie également les membres de Jury pour avoir accepté l’évaluation de ma thèse.

Je remercie aussi tous mes enseignants au primaire, au secondaire et à l’université, qui n’ont épargné aucun effort à me transmettre leur savoir avec amour et dévouement.

Mes remerciements s’adressent également au professeur Monica Nesi de l’Université de L’Aquila en Italie, avec qui j’ai entretenu des discussions riches et fructueuses sur plusieurs aspects techniques de cette thèse.

Je suis également reconnaissant envers le groupe LSI et le personnel du département d’informatique et de génie logiciel de l’Université Laval pour m’avoir offert d’excellentes conditions de travail.

Enfin, j’adresse mes plus sincères remerciements à ma famille : mes parents, ma conjointe, ma sœur, mon frère, mon cousin, mon beau-père, ma belle-mère, mon beau-frère ainsi que tous mes amis, qui m’ont soutenu, accompagné et encouragé le long de la réalisation de ce travail.

(20)
(21)

Introduction

0.1

Motivation

Les protocoles cryptographiques sont des programmes distribués qui visent à sécuriser les commu-nications dans un réseau peu sûr par le moyen de la cryptographie. Ils sont utilisés partout où la sécurité importe, par exemple, dans le commerce électronique, les communications militaires, le vote électronique, etc. Une faille de sécurité dans un protocole engendre souvent des dégâts importants et irréparables. En effet, une faille dans un protocole de vente en ligne peut engendrer des pertes co-lossales pour un vendeur distant. La victime, de son côté, peut se retrouver avec un mauvais dossier de crédit et une réputation ternie. Une faille dans un protocole de signalisation permet à des pirates d’intercepter des appels, les dérouter et de géolocaliser des terminaux mobiles à distance, ce qui met en danger la vie privée. Les choses prendront des dimensions plus graves quand une faille surgit dans un protocole utilisé par les militaires pouvant ainsi mettre la sécurité de toute une nation en péril.

Le recours à la cryptographie, quoique nécessaire, ne peut pas garantir la sécurité d’un protocole. En effet, l’histoire des protocoles nous enseigne qu’un intrus est capable de manipuler les règles d’un protocole donné pour déduire un secret, usurper une identité, altérer l’intégrité des données ou nier sa participation dans une communication donnée après avoir commis une action malsaine.

Les méthodes formelles se sont alors imposées comme un moyen privilégié pour vérifier la satisfac-tion d’un protocole aux propriétés de sécurité pour lesquelles il a été conçu. De ce fait, plusieurs méthodes ont vu le jour et ont démontré des performances variables. D’autres se sont retirées après avoir connu une époque de gloire à cause des insuffisances fâcheuses au niveau de leur conception, plusieurs années après leur exploitation.

0.2

Objectif

Dans cette thèse, nous aspirons à enrichir les méthodes formelles par une méthode d’analyse sta-tique pour la propriété de confidentialité. Notre méthode est semi-décidable et aborde le problème de

(22)

confidentialité d’un angle de vue de la croissance du protocole. Elle vise à prouver la correction d’un protocole par établir qu’il est croissant. Cela part d’une intuition que si tout message ou composant de message échangé dans le protocole est toujours mieux protégé à son envoi qu’à sa réception, alors le protocole ne divulgue pas ses secrets. Pour cela, nous avons besoin de métriques fiables qui mesurent le niveau de sécurité de chaque composant de message. Nous donnons ici ces métriques que nous appelons : les fonctions témoins. Nous formalisons tous ses aspects et nous proposons un théorème d’analyse des protocoles cryptographiques par les fonctions témoins qui établit un critère suffisant de correction des protocoles pour la propriété de confidentialité.

Notre méthode se veut également un outil d’aide à retracer les failles, les expliquer, et les corriger.

0.3

Méthodologie

Notre analyse s’effectue dans une spécification basée sur les rôles proposée par Debbabi et al. dans [1–3]. Nous jugeons que c’est l’environnement le plus intuitif et le plus facile pour spécifier un proto-cole.

Nous construisons des fonctions, que nous appelons les fonctions témoins, pour évaluer la sécurité de chaque atome dans un message échangé. Ces fonctions dépendent du protocole et doivent rencontrer certaines conditions de fiabilité pour être retenues pour l’analyse. Nous déterminons ces conditions.

L’analyse se résume en une vérification de croissance du protocole en utilisant une fonction témoin pour la mesure des niveaux de sécurité des messages atomiques. S’il est établi croissant, nous décla-rons qu’il est correct pour la propriété de confidentialité. Sinon, nous ne pouvons rien conclure quant à sa confidentialité. Dans ce cas, nous changeons de fonction témoin et nous reprenons l’analyse. Si nous ne parvenons pas à établir sa croissance avec toutes les fonctions témoins que nous arrivons à construire, donc sa correction, nous examinons si l’analyse nous renseigne sur une faille dans le pro-tocole. Si oui, nous déclarons le protocole incorrect.

Si toutes les fonctions témoins échouent à établir la croissance du protocole, nous essayons de dégager les éléments responsables de la non-croissance et nous proposons une modification de sa structure en les changeant. Les étapes d’analyse sont décrites dans Figure0.1.

(23)

FIGURE0.1 – Analyse des protocoles cryptographiques par les fonctions témoins

0.4

Organisation de la thèse

Dans le chapitre1et le chapitre2, nous présentons respectivement l’état de l’art de la cryptographie et des méthodes d’analyse des protocoles cryptographiques. Dans le premier chapitre, nous parlons de l’essence de la cryptographie, de son utilisation, de ses sortes, de ses forces, de ses limitations, et nous présentons plusieurs systèmes cryptographiques. Dans le second chapitre, nous présentons un ensemble de méthodes d’analyse des protocoles cryptographiques. Nous parlons de leurs méthodolo-gies, de leurs aspects techniques, de leurs succès et de leurs limitations.

Dans le chapitre3, nous énonçons des conditions suffisantes sur une fonction d’analyse et nous éta-blissons qu’un protocole croissant est correct pour la propriété de confidentialité quand il est analysé avec des fonctions qui rencontrent ces conditions.

Dans le chapitre4, nous exhibons une façon de construire des fonctions d’analyse basées sur les sé-lections et rencontrant les conditions de fiabilité requises. Nous définissons d’abord une classe de sélections à l’intérieur de la clé protectrice externe telles que lorsqu’elles sont composées à un

(24)

homo-morphisme approprié donnent naissance à des fonctions d’analyse fiables. Nous définissons également une sous-classe de cette classe de sélections basée sur la clé protectrice interne.

Dans le chapitre5, nous proposons les fonctions témoins pour traiter le difficile problème de substi-tution. Une fonction témoin est une fonction qui dépend des messages générés par le protocole. Elle prend en argument une fonction d’analyse fiable et le protocole et base son calcul sur la partie statique seulement d’un message et ignore la partie dynamique en introduisant des techniques de dérivation pour réduire les effets des variables. Nous prouvons qu’une fonction témoin hérite les propriétés de fiabilité de sa fonction d’analyse associée. Ensuite, nous constatons qu’il est possible de confiner toute fonction témoin entre deux bornes faciles à déterminer et indépendantes des substitutions ce qui per-met d’analyser un protocole statiquement à travers ces bornes. Nous validons enfin notre approche sur des protocoles communs.

(25)
(26)
(27)

Chapitre 1

La sécurisation par l’approche

cryptographique

1.1

Introduction

Les menaces à la sécurité qu’elles soient d’origine interne ou externe sont de plus en plus imposantes. Elles mettent ainsi en péril les informations confidentielles des données sensibles comme les numéros de cartes de crédit, les informations relatives à la vie privée ou les informations sur les opérations militaires vitales pour toute une nation. De ce fait, des inquiétudes réelles concernant la sécurité ont conduit à l’avènement de législations et de normes industrielles complexes qui obligent les organismes à normaliser rigoureusement leur pratiques sécuritaires. A titre d’exemple, aux États-Unis, le Gramm Leach Bliley act, une loi américaine votée par le Congrès américain en 1999, force les entreprises qui assurent les services financiers, d’investissement ou d’assurance à respecter des normes de sécu-rité strictes dans leur gestion des informations personnelles. L’Union Européenne a mis en œuvre des normes de confidentialité très sévères pour les entreprises de commerce des états de l’union exigeant un renforcement de sécurité. Dans le secteur de la santé, le Health Insurance Portability and Accoun-tability a établi une convention pour renforcer la protection des informations médicales relatives aux patients. Afin de protéger ses clients détenteurs de cartes de crédit, Visa a développé le Cardholder In-formation Security Program, obligeant ainsi les sites de commerce électronique à obéir aux normes de sécurité extrêmement strictes comprenant le chiffrement des informations sensibles contenues dans les bases de données. Le Federal Information Processing Standard (FIPS 1401) [4], norme de trai-tement cryptographique, impose que les clés d’encryption soient contenues dans des périphériques ayant obtenu l’approbation FIPS et sous condition qu’elles ne soient jamais exposées en clair. Tout manquement à la politique de sécurité au sein d’une entreprise est passible de poursuites judiciaires.

Pour les organismes ayant besoin de protéger leurs informations sensibles, le chiffrement pourrait constituer un aspect essentiel dans leur politique de protection de ces informations. Le cryptage de

(28)

données peut fournir une sécurité solide pour les données au repos. Néanmoins, développer une po-litique de protection basée sur la cryptographie doit prendre en considération plusieurs facteurs. Les questions essentielles auxquelles doit répondre toute stratégie est : que doit-on encrypter au juste ? qui a accès aux clés d’encryption ? Quel compromis juge-t-on acceptable entre la sécurité et la dégrada-tion attendue des performances d’une applicadégrada-tion ?

Dans ce chapitre, nous allons introduire le concept de sécurisation des données par l’approche crypto-graphique puis, nous allons essayer d’attribuer des réponses à ces interrogations. En premier lieu, nous allons aborder la question intrinsèque de la cryptographie dans son aspect contextuel et mathématique, ensuite l’atteler à la sécurité des données.

1.2

La cryptographie

L’usage de la cryptographie est très ancien et remonte à une époque très ancienne [5–8]. Les Égyp-tiens l’ont utilisé dans leur écriture hiéroglyphe. Julius Cesar [9] utilisa un système cryptographique simple consistant à la substitution alphabétique dans les communications. Le papyrus de Leyde [10], le plus ancien manuscrit connu d’alchimie, utilisa un algorithme d’encryption pour dissimuler des recettes dites magiques destinées à imiter l’or et l’argent. Le Kama Sutra de Vatsayana [11] postula que la cryptographie est un art à part entière et la lista parmi soixante trois autres arts. Son usage a gagné de l’importance au moment des guerres et notamment la seconde guerre mondiale. On retient le nom du système cryptographique ENIGMA [12] conçu et utilisé par l’armée allemande. Il a été une arme redoutable pour sécuriser les communications entre ses unités implantées dans plusieurs pays. Ce système a fini par être dévoilé par les armées alliées suite à l’implication de plus de douze mille scientifiques et mathématiciens de plusieurs nationalités qui travaillaient à dévoiler son code. La cryptanalyse d’ENIGMA a été une cause majeure de la ruine des stratégies de l’armée allemande.

Par définition, la cryptographie est la science qui s’intéresse à l’étude des principes, des méthodes et des techniques qui s’attellent aux aspects de sécurité de l’information tels que la confidentialité, l’in-tégrité des données et l’authentification des intervenants, et ce en utilisant des clés d’encryption. La cryptographie permet de stocker les informations sensibles ou de les faire véhiculer à travers un réseau peu sûr de façon qu’elles ne soient intelligibles qu’à un destinataire autorisé. Elle fournit des outils puissants minimisant les risques et susceptibles de rendre l’échange de l’information confidentielle, non falsifiable, authentique et non-altérable. Un système cryptographique est une algèbre constituée d’algorithmes cryptographiques, de clés et de protocoles qui le font fonctionner. D’un autre côté, la cryptanalyse [13,14] est l’étude visant à casser un système cryptographique donné, à découvrir les clés de chiffrement et à pirater l’information confidentielle afin de la fausser ou de l’exploiter d’une manière frauduleuse.

(29)

La cryptographie introduit plusieurs notions : le système cryptographique, le chiffrement symétrique, le chiffrement asymétrique, les fonctions de hachage et la signature électronique que nous allons présenter dans le reste de ce chapitre.

1.2.1 Système cryptographique

Un système cryptographique est un ensemble d’algorithmes cryptographiques, de textes clairs, de textes chiffrés et de clés de chiffrement et de déchiffrement. Formellement, un système cryptogra-phique est un tuple hP, C, K, E , Di, où :

– P : est un ensemble de textes clairs ; – C : est un ensemble de textes chiffrés ;

– K : est un ensemble de clés d’encryption/décryption ;

– E = {Ek : k ∈ K} : est un ensemble de fonctions d’encryption

Ek : P → C ;

– D = {Dk: k ∈ K} : est un ensemble de fonctions de décryption

Dk: C → P.

tel que pour tout k ∈ K, il existe k0 ∈ K tel que Dk0(Ek(p)) = p pour tout p ∈ P.

Historiquement, les systèmes cryptographiques se sont développés progressivement sur trois étapes. Au début, l’algorithme de chiffrement ainsi que la clé de chiffrement étaient tous deux des entités confidentielles. Ensuite, l’algorithme de chiffrement est rendu public, mais les clés de chiffrement restaient confidentielles. C’est le cas des systèmes à clé secrète comme AES, DES, etc. Finalement, les systèmes cryptographiques à clé publique ont vu le jour. Ces systèmes rendent publiques l’algorithme de chiffrement et la clé de chiffrement. La seule donnée secrète reste la clé de déchiffrement. C’est le cas du système RSA par exemple. D’une façon générale, un système cryptographique est meilleur quand il garde un ensemble minimal de paramètres confidentiels sans pour autant mettre en péril la sécurité des données chiffrées.

1.2.2 Chiffrement symétrique

Les systèmes de chiffrement symétrique, dits aussi à clé privée ou à clé secrète [5], constituent l’ap-proche la plus authentique du chiffrement et mathématiquement la moins problématique. Dans un système de chiffrement symétrique, la clé servant à décrypter une donnée peut être aisément déduite de la clé servant à la crypter. Elle est très souvent la même. On distingue deux groupes de systèmes à clé symétrique : les systèmes de chiffrement par bloc et les systèmes de chiffrement de flux. Dans le type de chiffrement par blocs, un texte clair est subdivisé en blocs de tailles fixes et l’algorithme encrypte un bloc à la fois. La taille des blocs de subdivision influe sur la sécurité du chiffrement et sur la complexité des traitements. Les blocs de grandes tailles fournissent une sécurité meilleure mais

(30)

alourdissent considérablement l’implantation. Ils existent plusieurs modes d’opération pour traiter les blocs de texte clairs et chiffrés au sein d’un algorithme de chiffrement par bloc. On retient les quatre standards définis dans les normes FIPS et ANSI, à savoir : Cipher Block Chaining (CBC), Electronic Code Book (ECB), Output FeedBack (OFB) et Cipher FeedBack (CFB). Les algorithmes de chiffre-ment de flux peuvent être vus comme des algorithmes de chiffrechiffre-ment par blocs de taille d’un bit ou d’un octet. Ils tiennent leur avantage principal du fait que la transformation peut être changée à chaque caractère du texte. Ils sont beaucoup plus rapides que ceux à chiffrement par blocs. Les systèmes à clés privées les plus connus sont : DES, AES, Triple-DES, IDEA, RC2, RC4, RC5, RC6 et SEAL.

Le système de chiffrement DES

Le système de chiffrement DES [15–17], ou Data Encryption Standard, est un standard adopté en 1978 par le NIST. Il a été développé initialement par IBM en 1974 et modifié par le NSA en 1976. Il constitue le premier effort sérieux de chiffrement par blocs ayant été par la suite très largement utilisé dans le monde de la cryptographie. Son algorithme présente une allure relativement simple basée sur la décomposition d’un message clair en blocs de 64 bits et la permutation des bits. À un bloc, on applique d’abord une permutation initiale conformément à une table de permutation prédéfinie. Ensuite, chaque bloc est divisé en deux blocs de 32 bits : un bloc de droite R et un bloc de gauche L. Ces deux blocs sont soumis à 16 itérations de Feistel. Dans chaque itération, le bloc L subit une transformation qui dépend du bloc de droite R, d’une fonction F dite fonction de confusion, et d’une clé partielle K de 48 bits générée à partir de la clé de l’utilisateur de 56 bits. Cette sélection se fait grâce à des permutations circulaires de la clé et des tables d’extraction fixes. DES dérive ainsi 16 clés indépendantes à partir de la clé de l’utilisateur. La fonction de confusion F opère comme suit :

1. d’abord, une extension E est appliquée au bloc R en entrée qui l’étend à 48 bits en dupliquant certains bits. Cette extension permet d’augmenter la diffusion [18] dans DES, c’est-à-dire, en perturbant un seul bit en entrée, on obtient une sortie totalement différente à la sortie ;

2. ensuite, le résultat subit une addition XOR avec la clé partielle K de 48 bits ;

3. puis, le résultat sur 48 bits est subdivisé en 8 bloc de 6 bits qui sont délivrés à 8 boites appelées Sbox. Chaque Sbox transforme un bloc de 6 bits en un bloc de 4 bits selon une règle simple de transformation de contenu et une table de correspondance prédéfinie à 64 entrées. Chaque Sbox possède sa propre table de correspondance. Les Sbox assurent la confusion des entrées et provoquent la non-linéarité de F [18] ;

4. les blocs retournés par les Sbox sont ensuite concaténés. Le bloc de 32 bits résultant subit une permutation P avant d’être retourné.

Le résultat retourné par F subit finalement une addition XOR avec le bloc de gauche L à chaque itération. Le bloc résultant sert de bloc de droite à l’itération suivante, et le bloc de droite R y servira de bloc de gauche. Ce croisement contribue à la diffusion dans DES.

(31)

À la fin des 16 itérations, une permutation finale est appliquée qui est simplement l’inverse de la permutation initiale et ceci afin d’avoir un déchiffrement facile. La fonction F n’a pas besoin d’être inversible (elle ne l’est pas puisque les Sbox ne sont pas inversibles). Néanmoins, une itération de Feistel l’est. L’algorithme de déchiffrement est exactement le même que celui de chiffrement en in-versant l’ordre des clés.

FIGURE1.1 – Itération de Feistel

La conception exceptionnelle de DES lui a permis de durer beaucoup plus longtemps que prvu au départ. À ce jour, aucune faiblesse structurelle majeure n’a été découverte. Néanmoins, des calculs ont démontré qu’il est tout à fait possible d’effectuer une recherche exhaustive de la clé dans un temps jugé raisonnable. Pour résoudre ce problème, d’autres travaux ont débouché au Triple-DES [19] dont l’algorithme consiste à itérer trois fois de suite l’algorithme DES sur un bloc de données de 64 bits en utilisant 2 ou 3 clés différentes. Ceci ne se passe pas sans inconvénient puisque l’algorithme Triple-DES est trois fois plus lent que l’algorithme Triple-DES simple. De point de vue pratique, le Triple-DES (simple ou triple) est facilement implantable et n’exige rien de spécifique quant au matériel ou au logiciel.

Le systèeme de chiffrement AES

Compte tenu de la faiblesse de la clé de DES et la lenteur du Triple-DES, le NIST a lancé un appel d’offre international en 1997 pour le développement d’un nouveau standard d’encryption dont les exigences sont les suivantes :

– grande sécurité : la sécurité doit être prouvable et le nouveau standard doit présenter une forte résistance aux différentes attaques connues ;

(32)

– large portabilité : le nouveau standard peut être facilement implanté sur des machines 32 bits, des cartes et processeur 8 bits, etc. ;

– excellente rapidité : le nouveau standard doit au moins être aussi rapide que DES simple (logi-ciel et matériel) ;

– forte flexiblité : le nouveau standard doit accepter des blocs de longueurs variables (128 bits, 192 bits, 256 bits) et des clés de tailles variables (128 bits, 192 bits, 256 bits) ;

– simplicité : il doit être facile à comprendre et à analyser.

En 1998, quinze algorithmes candidats ont été présentés à la première conférence AES et toutes ces propositions ont été mises à disposition de la communauté des cryptanalystes pour les étudier. Le NIST a retenu seulement cinq algorithmes finalistes pour la deuxième conférence AES en 1999 qui sont les suivants :

– MARS : de IBM ;

– RC6 : de RSA security inc. ;

– Rijndael : de Joan Daemen et Vincent Rijmen ;

– Serpent : de Ross Anderson, Eli Biham et Lars Knudsen ;

– Twofish : de Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Niels Ferguson et ChrisHall.

En 2000, à la troisième conférence AES, le NIST a déclaré l’algorithme Rijndael vainqueur qui a été finalement adopté par le NIST en 2001 et par le NSA en 2003 sous le nom de Advanced Encryption Standard [20] : AES.

AES est un algorithme de chiffrement par blocs mais n’utilise pas le chiffrement de Feistel. Il accepte des blocs de 128 bits, 192 bits et 256 bits. Les clés sont aussi de tailles variables de 128 bits, 192 bits et 256 bits. La taille de la clé est indépendante de la taille du bloc. Il utilise des techniques semblables à DES (substitutions, permutations et XOR). Toutes les opérations s’effectuent dans le corps de Galois GF(28) [21,22]. Le coprs de Galois GF(28) est le corps fini des polynômes de degré 7, c’est-à-dire, les polynômes de la forme b7x7+ b6x6+ ... + b1x + b0avec bi∈ {0, 1} et i ∈ {0, 1, ..., 7}. Un octet

est considéré par AES comme un élément de ce corps et toutes les opérations algébriques sur un octet suivent les opérations du corps. L’inversibilité du procédé d’encryption (i.e. décryption) est due ainsi à la structure de corps de GF(28).

Avant d’être encrypté, un bloc de 128 bits est découpé en 16 octets placés dans une matrice carrée de taille 4. Cette matrice subit les transformations suivantes :

1. un tour initial : dans ce tour, l’opération AddRoundKey est exécutée. Cette opération consiste en une simple addition XOR de la matrice avec une sous-clé de taille 128 bits déterminée à

(33)

partir de la clé initiale de l’utilisateur après avoir subi une expansion par un procédé qui fait appel à une rotation, une réduction dans GF(28) et une substitution. Ce procédé d’expansion de la clé de l’utilisateur est connu sous le nom de Rijndael key schedule ;

2. N tours : N tours sont appliqués à cette matrice. Le nombre de tours varie selon la taille du bloc et la taille de la clé. Il est égal à 9 (sans compter le tour final qui a sa spécificité) dans le cas d’un bloc de 128 bits et d’une clé de 128 bits. À chaque tour, les opérations suivantes sont exécutées :

a) l’opération SubByte : c’est une opération non linéaire qui consiste en une substitution d’un octet par un autre conformément à une table de correspondance (Sbox). Cette substitution dérive de l’inversion matricielle dans GF(28) connue par sa forte non-linéarité. Elle a la forme suivante :

S(X) = L.X−1+ C L et C sont ajoutés pour éviter le point fixe.

Cette étape assure la confusion et la non-linéarité de AES ;

b) l’opération ShiftRow : c’est une transformation linéaire qui consiste en un décalage dans les lignes. Pour un bloc de 128 bits, seulement les trois dernières lignes de la matrice subissent des décalages cycliques qui dépendent du rang de la ligne dans la matrice. Cette étape est essentielle pour la diffusion dans AES ;

c) l’opération MixColumn : cette opération est aussi une opération linéaire. Elle consiste en une multiplication de chaque colonne de la matrice par un polynôme fixe issu d’une matrice prédéfinie modulo un polynôme irréductible dans GF(28). Cette multiplication affecte les 4 octets de chaque colonne. Cette opération est la source primaire de la diffusion dans AES ;

d) l’opération AddRoundKey : décrite dans 1.

|k| = 128 bits |k| = 192 bits |k| = 256 bits

|bloc|=128 10 12 14

|bloc|=192 12 12 14

|bloc|=256 14 14 14

TABLE1.1 – Nombre de tours en fonction de la taille des blocs et de la clé en AES

3. un tour final : le tour final est analogue à un tour ordinaire mais sans exécuter l’opération Mix-Column.

La décryption en AES effectue les étapes de d’encryption dans l’ordre inverse tout en faisant appel aux inverses des opérations manipulées lors de l’encryption. La meilleure attaque connue sur AES-128 est seulement 4 fois plus rapide que la recherche par force brute. Ce qui revient à dire qu’une clé

(34)

de 128 bits de AES-128 offre la même sécurité d’une clé de 126 bits d’un système parfait. Une attaque particulière sur AES-256 montre qu’à partir de 299paires de messages (mi, ci) générés à partir de 4

clés très proches l’une de l’autre (distance de Hamming très faible), le temps de retrouver les clés est de l’ordre de 299. Ce qui n’est pas très inquiétant dans la pratique vu que les clés sont indépendantes et aléatoires. D’autres attaques [23,24] qualifiées d’impraticables ont été menées contre cet algorithme qui reste très sécuritaire.

Comparé au DES, le standard AES-128 est de 2 à 7 fois plus rapide que Triple-DES qui est 3 fois plus rapide que DES. D’un point de vue sécurité, si on admet d’une façon caricaturale qu’il existe un calculateur puissant qui casse DES en une seconde, il lui faut 150 milles milliards d’années environ pour casser AES.

L’algorithme Blowfish

L’algorithme Blowfish [25] a été proposé en 1993 par Bruce Schneier et se base sur le chiffrement par bloc. Il s’appuie sur les réseaux de Feistel comme DES mais en utilisant des clés plus longues. Cet algorithme procède à un codage par bloc de 64 bits et fait usage d’une clé de longueur variable. Il se divise en deux parties : l’expansion de la clé et l’encodage de l’information. L’expansion de la clé est l’opération de conversion de la clé de départ d’un maximum de 448 bits en plusieurs sous-clés faisant ensemble 4168 octets. L’encryption de l’information se fait en seize itérations formée chacune d’une permutation qui dépend de la clé ainsi que d’une substitution qui dépend à la fois de la clé et des données. Les opérations que mène cet algorithme sont des ou-exclusifs et des additions sur des cases de 32 bits. Cet algorithme est réputé sécuritaire et rapide. Cependant quelques failles [26,27] ont été constatées mais elles sont qualifiées de non exploitables. La recherche par force brute reste, à ce jour, la seule façon pour défaire Blowfish.

L’algorithme SEAL

L’algorithme SEAL (Software-optimized Encryption ALgorithm) [28,29] a été élaboré par Coppers-mith et Rogaway pour IBM en 1993 et a été amélioré en 1997. Il n’y a que cinq opérations qui sont à réaliser pour générer un octet de texte encrypté. Il comporte une phase d’initialisation et utilise l’algorithme SHA-1 [30,31] pour générer pseudo-aléatoirement les valeurs des tables utilisées pour former le flux de clés à l’aide d’une clé secrète. Ensuite l’opération du XOR est appliquée entre le flux de clés et le texte clair pour former le texte encrypté. La décryption est l’inverse de l’encryption. SEAL est réputé rapide et facilement implantable. Des versions cablées sont aussi en usage. En 2004, Antoine Joux [32] et Xiaoyun Wang et al. [33] ont exhibé des communications qui laissent présager que SHA-1 pourrait subir une attaque ce qui influe directement sur SEAL. Ceci a donné naissance à l’algorithme SHA-2 en 2001, qui a été à son tour démontré vulnérable en 2009 par Yu Sasaki [34] et Hongbo Yu [35]. Bien que cette vulnérabilité ne soit pas qualifiée de significative, rien ne prouve qu’il n’y a pas d’autres mécanismes d’attaque qui sont en cours d’élaboration en privé. Ce qui a conduit à

(35)

l’adoption par le NIST de la version SHA-3 (Keccak) [36] en 2012.

Autres algorithmes symétriques

Il existe plusieurs autres algorithmes symétriques comme l’algorithme RC4 créé en 1987 par Ron Rivest, utilisé dans le protocole SSL et réputé très rapide mais contenant des failles exploitables ce qui a donné naissance à RC5 puis RC6 [37,38] qui en sont des variantes mais plus sûres. Nous citons également l’algorithme IDEA (International Data Encryption Algorithm) publié par Xuejia Lai et James Massey en 1990 [39]. Sa performance est nettement supérieure à l’algorithme DES en matière de sécurité mais il en est comparable en matière de rapidité. L’algorithme IDEA a été breveté en 2011 en Europe et en 2012 aux États-Unis et au Japon. Il constitue un standard de fait "totalement sûr" puisqu’une attaque contre lui nécessite une recherche exhaustive de l’orde de 1038 opérations. Des attaques récentes sur cet algorithme ont été rapportées [40–42] mais la cryptanalyse est d’une complexité algorithmique tellement élevée qu’elle ne menace pas son utilisation en pratique.

1.2.3 Chiffrement asymétrique

Le chiffrement asymétrique, dit aussi à clé publique, est basé sur des fonctions qui sont aisément cal-culables mais que leurs inverses sont extrêmement difficiles à solutionner. On peut assimiler "difficile" à "impossible" si on prouve théoriquement que le temps de calcul de l’inversion est infini (plusieurs centaines d’années) en utilisant les machines les plus puissantes au monde. Ces fonctions sont choi-sies de manière qu’elles soient difficiles à inverser à l’exception de celui qui détient une information tenue secrète. Le chiffrement asymétrique implique une paire de clés composée d’une clé publique et une clé privée. La clé publique est publiée dans des annuaires communs et donc connue de tous les intervenants alors que la clé privée n’est connue que de la personne détentrice de la paire de clés. Ce procédé est connu sous le nom de chiffrement de Deffie-Hellman [43], les inventeurs de ce type de cryptographie, mais sans donner concrètement les fonctions.

Le chiffrement à clé publique présente des avantages considérables par rapport au chiffrement à clé secrète. En effet, une communauté de n intervenants n’a besoin de posséder que n clés publiques et n clés secrètes. Cependant, dans le cas de chiffrement à clé secrète, cette même communauté a besoin de n.(n − 1) clés. Cet avantage augmente si le nombre d’intervenants d’une communauté est grand. Cependant, ces algorithmes sont lents (DES est 1000 fois plus rapide que RSA par exemple) et leur sécurité repose sur la limitation des ordinateurs actuels à élaborer des calculs arithmétiques particuliers et résoudre certains problèmes comme la factorisation des grands nombres et le logarithme discret dans un temps raisonnable. Une amélioration exponentielle potentielle des processeurs arithmétiques des machines de calcul peut rendre obsolète un système de chiffrement à clé publique. Actuellement, on est toujours à l’abri de ce danger.

(36)

Le système de chiffrement RSA

Le système de chiffrement RSA [44,45] a été inventé en 1978 par Rivest, Shamir et Adleman et bre-veté par Massachusetts Institute of Technology (MIT) en 1983 . Ce système est le plus connu et utilisé des systèmes de chiffrement à clé publique. Il est essentiellement utilisé aussi bien pour encrypter de l’information que pour la signature numérique. Le brevet de RSA fait partie de Security Dynamics et aux Public Key Parteners. Le principe de RSA est simple et se base sur la difficulté de décomposer un très grand entier naturel en ses facteurs premiers. En effet, étant donnés deux nombres premiers p et q, il est facile de calculer leur produit n = p.q. Cependant, il est très difficile de décomposer l’entier n suffisamment grand en ses facteurs premiers p et q. La création des clés par un agent dans le système RSA suit le schéma suivant :

1. il choisit deux entiers naturels premiers p et q suffisamment grands et dispersés ;

2. il calcule la fonction indicatrice d’Euler φ(n)=(p − 1).(q − 1). Cette fonction fournit le nombre d’entiers premiers avec n et inférieurs à n ;

3. il choisit un entier e tel que 1 < e < φ(n) et premier avec φ(n) ;

4. il calcule d tel que e.d ≡ 1 mod φ(n) ce qui signifie que d ≡ e−1 mod φ(n). L’entier d existe selon le théorème de Bachet-Bézout ;

5. la clé publique de cet intervenant est (n, e) et sa clé privée est (n, d).

L’envoi d’un message crypté d’un agent A à un agent B consiste en les étapes suivantes :

1. A récupère la clé publique de B : (n, e) ;

2. A calcule c ≡ memod n, m étant le message clair et c le message encrypté.

La décryption du message par B consiste en l’étape simple suivante :

1. B calcule m ≡ cdmod n.

La preuve de correction du système RSA s’explique par le suivant : Le texte encrypté reçu par B étant c ≡ memod n. Quand B calcule cd≡ me.dmod n et comme e.d ≡ 1 mod φ(n), on obtient, par la

(37)

Pour choisir un nombre premier de grande taille, on crée une suite aléatoire de bits, puis on lui ap-plique un test de primalité. Comme l’utilisation d’un algorithme du type le crible d’Ératosthène est trop lent, on utilise un test de primalité probabiliste, le test de primalité de Miller-Rabin par exemple. Ce test ne donne pas l’assurance que le nombre est premier, mais il donne une probabilité forte qu’il le soit. On peut aussi utiliser un test de primalité déterministe en temps polynomial (quoique plus lent) qui assure que le nombre est premier à l’instar du test de primalité AKS [47] proposé par Manindra Agrawal, Neeraj Kayal et Nitin Saxena et publié en 2002 dans un article intéressant intitulé «PRIMES is in P».

La sécurité de RSA repose sur le fait que le temps que prennent les algorithmes classiques pour facto-riser un nombre en ses facteurs premiers croît exponentiellement avec la longueur de la clé. En 1996 apparut une attaque sur RSA réalisée par Peter W. Shor [48] exhibant un algorithme de factorisation de grands nombres en un temps non exponentiel, ce qui permet donc d’attaquer [49] le système RSA par force brute, mais sur des ordinateurs quantiques. Plus récemment, en 2014, Santanu Sarkar [50] a montré qu’il est possible d’attaquer un système RSA modulo n = prq en un temps polynomial. De leur côté, en 2015, Abderrahmane Nitaj et Tajjeeddine Rachidi ont exhibé trois attaques concrètes en temps polynomial [51] sous les mêmes conditions de Sarkar et pour des formes particulières de p et q. D’autres attaques sur ce système ont été rapportées [52–54]. Ceci a ravivé les interrogations sur le futur du RSA et réactivé les recherches dans cette direction. En dépit de tout, on peut affirmer que RSA demeure toujours sûr si la taille de la clé est suffisamment grande et les nombres premiers choisis sont aléatoires et dispersés.

Le système de chiffrement El-Gamel

Le système de chiffrement El-Gamel [55] constitue un classique du chiffrement asymétrique. Il a été proposé en 1982 par Taher El Gamal. Il se base sur l’égalité :

(gx)y = gxy = (gy)x

Dans ce système, un agent A choisit un nombre x qu’il garde secret, ensuite il clacule X ≡ gx mod n qu’il fournit à un agent B. De la même façon, l’agent B choisit un nombre y qu’il garde secret et calcule Y ≡ gy mod n et l’envoie à A. L’agent A détient donc une clé privée x et B une clé privée y. La clé publique de B est la pair (n, g). Pour encrypter un message m, l’agent A envoie à l’agent B le message c ≡ m.Yxmod n et X. L’agent B de son côté calcule m ≡ c/(Xy) mod n ou encore m ≡ m.(gy)x/(gx)y mod n qui revient au message clair. La méthode de El-Gamel est sécuritaire. En effet, un intrus n’est capable de récupérer que X ou Y, et si de plus il connaît g et n, il n’est pas capable de calculer x et y car le calcul logarithmique x ≡ logg(X) est extrêmement difficile [56] à résoudre dans

le groupe cyclique Zn∗. Ce problème est connu sous le nom du problème de logarithme discret [57].

Néamoins, ceci ne protège pas les protocoles qui utilisent le système de El-Gamel contre les attaques de type Homme-au-Milieu.

(38)

Le système de sac à dos

Le système de sac à dos, proposé par Ralph Merkle et Martin Hellman [58] en 1978, repose sur un problème mathématique qui s’énonce comme suit : ayant n objets de poids respectifs a1, ..., an, quels

objets faut-il mettre dans un sac à dos pour obtenir un poids total égal à p ?

Ce problème est difficile à résoudre sauf dans le cas où la suite (an) est supercroissante. Dans ce cas

la solution est simple à trouver. Une suite (an) est dite supercroissante quand elle vérifie la condition

suivante :

i−1

X

j=1

aj < ai.

Un système de chiffrement asymétrique de sac à dos s’énonce comme suit :

1. on part d’un entier n, d’une suite supercroissante (an), et d’un entier V tels que : n

X

j=1

aj < V.

On construit ainsi un sac à dos supercroissant facile à résoudre ;

2. on choisit aléatoirement un entier Q, inférieur à V − 1, et premier avec V − 1 ; 3. on définit une permutation aléatoire σ dans l’ensemble {1, ..., n} ;

4. on définit le vecteur de camouflage bj = aσ(j)Q mod V pour transformer le problème de sac à

dos supercroissant en un problème de sac à dos général difficile à résoudre.

La clé publique dans ce système est la suite (bn) et la clé privée est l’ensemble {V, Q, σ, (an)}.

L’ecryption d’une suite de bits (αn) est donnée par la formule, modulo V , suivante :

C =

n

X

j=1

αjbj.

La décryption s’effectue selon le schéma, modulo V , suivant :

D = Q−1C = Q−1 n P j=1 αjbj = Q−1 n P j=1 αjaσ(j)Q = n P j=1 αjaσ(j).

(39)

Bien que l’idée soit attrayante et simple, les algorithmes de sac à dos ont été démontrés non sûrs [59] et plusieurs failles exploitables en temps polynomial [60] ont été rapportées. Ce qui a mené à l’abandon de ces systèmes cryptographiques.

Le système de chiffrement de Cramer–Shoup

Le système de Cramer–Shoup [61] est un schéma d’encryption asymétrique qui constitue une exten-sion du système cryptographique El-Gamel. Il a été conçu pour résister aux attaques adaptatives des textes encryptés choisis (adaptive chosen ciphertext attack) dites aussi attaques IND-CCA2 [62]. Dans une telle attaque, l’adversaire envoie un certain nombre de textes encryptés pour être décryptés, et le résultat de ces décryptions lui servira pour sélectionner des textes encryptés pour monter des attaques. On parle de malléabilité des messages.

Dans le système de Cramer–Shoup, la génération de clés s’effectue comme suit :

1. un agent A choisit deux générateurs g1et g2 dans un groupe cyclique G d’ordre q ;

2. ensuite, il choisit cinq valeurs aléatoires (x1, x2, y1, y2, z) dans {0, ..., q − 1} ;

3. puis, il calcule c = gx1 1 g x2 2 , d = g y1 1 g y2 2 et h = g1z;

4. enfin, il publie la clé (c, d, h) et garde secrète la clé (x1, x2, y1, y2, z). Le groupe G est partagé

entre les utilisateurs.

Un agent B, qui encrypte un message m par la clé publique de A, exécute les étapes suivantes :

1. d’abord, il convertit m dans G ;

2. ensuite, il choisit un nombre aléatoire k dans {0, ..., q − 1} ;

3. puis, il calcule :

a) u1= g1k;

b) u2= g2k;

c) e = hkm ;

d) α = H(u1, u2, e), où H est une fonction de hachage à faible taux de collision ;

e) v = ckdkα.

4. enfin, il envoie le texte encrypté (u1, u2, e, v).

L’agent A, qui reçoit le message encrypté (u1, u2, e, v), exécute les étapes suivantes pour le décrypter :

1. il calcule α = H(u1, u2, e) et vérifie si v = ux11u2x2(uy11uy22)α. Si cette vérification échoue, le

(40)

2. il calcule m = e/uz1.

La preuve de correction du protocole est simple à établir puisqu’on constate bien que :

u1 = gkz1 = hket m = e/hk

Le système de Cramer–Shoup est l’un des rares systèmes qui résiste aux attaques IND-CCA2. Cepen-dant, plusieurs critiques lui ont été attribuées qui sont principalement les suivantes :

1. il repose une partie de sa sécurité sur une fonction de hachage ;

2. pour les messages longs -dont la taille est plus large que G- ce système doit être utilisé dans un système hybride (symétrique et asymétrique) car si on décompose les messages, la propriété de non-malléabilité ne sera plus tenue ;

3. aucune étude n’a rapporté les performances de ce système (rapidité et tailles des messages).

Les courbes elliptiques

La théorie des courbes elliptiques est très ancienne [63]. On attribue le nom des courbes elliptiques à leur relation avec les intégrales elliptiques utilisées pour calculer les longueurs d’arcs. Elles ont été à l’origine de plusieurs résultats très intéressants dans plusieurs domaines. Le résultat le plus marquant est sans doute la preuve du dernier théorème de Fermat en 1995 par Andrew John Wiles [64]. Leur utilisation dans la cryptographie (ECC) a été proposée par Victor Miller [65] et Neal Koblitz [66] au milieu des années quatre-vingt. Une courbe elliptique [63,67–69] est un objet algébrique E(a, b, p) défini sur un corps K.

Exemple 1.2.1. Soit la courbe elliptique E(a, b, p) définie par :

E(a, b, p) :: y2= x3+ a1x + a2mod p

avec a1et a2 des éléments de K = R et p un nombre premier.

Il est possible de définir une structure de groupe sur une courbe elliptique qu’on munit d’une addition géométrique sur ses points. La propriété de ce groupe est qu’à partir d’un point P de la courbe et d’un nombre ka, il est facile de calculer kaP . Par contre, sachant P et kaP , il faut résoudre le problème

de logarithme discret dans ce groupe pour trouver ka, qui est plus difficile que celui dans le groupe

cyclique Zn∗. Dans un système cryptographique basé sur les courbes elliptiques, deux agents A et B rendent publics une courbe elliptique E(a, b, p) et un point P de cette courbe. Chaque agent choisit un entier secret ka (respectivement kb). L’agent A envoie à B le produit kaP et l’agent B envoie à

A le produit kbP . Chaque agent de son côté calcule le produit kakbP qui est un point de la courbe.

L’encryption d’un point M de la courbe par l’agent A se fait en choisissant un entier n aléatoire et en envoyant les messages nP et M + nkbP à B. La décryption de ces messages par B s’effectue d’abord

(41)

C’est-à-dire, en effectuant l’opération : M + nkbP − nkbP = M .

Les systèmes cryptographiques basés sur les courbes elliptiques sont de nos jours -au moins- aussi sécuritaires que le système RSA. Pour atteindre cet objectif, le NIST recommande d’utiliser quinze courbes elliptiques différentes sur dix corps différents. La taille des clés dans la cryptographie des courbes elliptiques est beaucoup moins élevée que dans le système RSA. On démontre par exemple qu’une clé de 192 bits dans la cryptographie basée sur les courbes elliptiques offre la même sécurité qu’une clé de 1024 bits en RSA. Cet avantage va s’amplifier avec le temps vu l’expansion des petits ordinateurs à capacité limitée [70–74].

1.2.4 Le logarithme discret, quel avenir ?

Le problème du logarithme discret discuté plus haut et consistant sommairement à retrouver n dans une équation y = xnmod p avec x, y et p connus, a été longtemps réputé très difficile à résoudre. Néanmoins, en 2014, Razvan Barbulescu, Pierrick Gaudry, Antoine Joux et Emmanuel Thomé du laboratoire d’informatique de Paris 6 ont publié un article [75] qui avance un résultat intéressant consistant en un algorithme quasi-polynomial résolvant certaines instances de ce problème sur des corps finis de petite caractéristique. Ceci mettrait peut-être des systèmes cryptographiques qui basent leur sécurité sur la difficulté de résoudre ce problème à la portée des ordinateurs actuels et les obligerait à changer la taille de leurs clés ou même de se retirer. Des recherches actives sont actuellement menées dans cette direction pour s’assurer de la validité des systèmes existants en tenant compte de cette nouvelle donnée.

1.2.5 Signature numérique

La signature numérique est un corollaire très important des systèmes de chiffrement à clé publique [44]. Elle est cruciale pour l’authentification, l’autorisation et la non-répudiation. Elle sert à associer l’identité de l’émetteur à l’information transmise. Un usager qui désire prouver son identité au des-tinataire encrypte un message avec sa clé privée et le desdes-tinataire le décryptera avec la clé publique de l’émetteur. Généralement, si on n’a pas un besoin de la confidentialité, une fonction de hachage est employée afin de créer une empreinte digitale réduite puis un cryptage à l’aide de la clé privée de l’émetteur est appliqué sur cette empreinte. Une forme particulière de signature numérique est la signature aveugle. Elle consiste à signer un document masqué dont le signataire n’a la moindre connaissance sur le contenu. Cette forme de signature a été introduite par les protocoles de vote élec-tronique [76–82] et les protocoles de la monnaie électronique. Elle a ses spécificités et impose des précautions particulières dans sa manipulation vu qu’une signature peut annuler des encryptions à l’insu du signataire.

(42)

1.2.6 Fonction de hachage

Une fonction de hachage est une fonction à sens unique qui transforme une entrée de données d’une dimension quelconque en une donnée de taille fixe et inférieure. Elle doit être non inversible, c’est-à-dire qu’il soit impossible de retrouver l’entrée de données à partir du condensé et peut utiliser des clés pour encrypter des entrées. Un haché est meilleur quand il est le plus court possible tout en gardant la même sécurité. Les fonctions de hachage sont utilisées dans le codage des mots de passes, les protocoles (RADIUS, SSL, BitCoins, etc.), les logiciels, les bases de données et des systèmes variés comme les antivirus pour savoir qu’un fichier demeure sain après avoir été scanné récemment. Elles jouent un rôle important dans la preuve de l’intégrité et l’authenticité des données. Une bonne fonction de hachage doit posséder les propriétés suivantes :

1. accepter des entrées de dimensions variables ;

2. fournir une sortie de taille fixe ;

3. être facilement calculable ;

4. être non inversible ;

5. être sans collision.

Il existe divers algorithmes qui proposent plusieurs fonctions de hachage à performances variables. Ces fonctions varient selon la taille du haché, le temps de calcul et la probabilité de collision. On en distingue la fonction MD5, le successeur de MD4 [83], inventée par Ronald Rivest en 1991. Elle opère sur des entrées de 512 bits et fournit un haché de 128 bits. Cette fonction a été attaquée en 2005 par Xiaoyun Wang et al. qui ont montré sa vulnérabilité et prouvé qu’il est possible de générer une collision en un temps réduit en utilisant les machines classiques [84,85]. On trouve également la fonc-tion RIPEMD-160 (Race Integrity Primitives Evaluafonc-tion Message Digest) qui a été développée par le RIPE Consortium. Elle opère sur des entrées de 512 bits et fournit un haché de 128, 160, 256 et 320 bits. La variation de taille des hachés est due essentiellement à la probabilité jugée acceptable d’avoir des collisions. Le théorème des anniversaires [86] démontre qu’un haché de 128 bits est vulnérable pour cette fonction et celui de 160 bits fournit une sécurité faible [85].

Plus récemment, la fonction Tiger [87] a été proposée par Ross Anderson et Eli Biham en 1996. Cette fonction fournit une empreinte sur 128, 160 et 192 bits. Les versions abrégées prennent simplement les premiers bits de la signature de 192 bits. Également, la fonction Whirlpool [88] a été conçue et publiée par Vincent Rijmen et Paulo S. L. M. Barreto en 2000. Dès lors, quelques révisions lui ont été attribuées. Le haché de cette fonction est présenté sur 512 bits. Whirlpool est basée sur une version modifiée de l’algorithme AES et utilise le renforcement de Merkle-Damgård [89,90] et le schéma de hachage de Miyaguchi-Preneel [91]. Cette fonction est relativement récente pour être jugée mais on peut lui attribuer une critique au sujet de la taille du condensé généré. En effet, une longueur de 512

(43)

bits n’est pas pratique pour plusieurs applications utilisant une mémoire limitée.

1.2.7 Impact de la cryptographie sur les données

Bien que le cryptage fournisse une sécurité accrue aux données statiques et dynamiques et est ac-cepté comme la pratique la plus efficace qui préserve l’information privée, il peut avoir un impact indésirable important. En particulier, le cryptage peut augmenter la taille des données et ralentir la performance des systèmes. Des mesures préventives de conception et de planification peuvent cepen-dant être entreprises. Le fait de savoir exactement quelle donnée on doit crypter fournit une meilleure performance. Par exemple, dans le cas des cartes de crédit, si la politique de sécurité de la compagnie permet que seulement les quatre derniers chiffres de la carte soient cryptées, ceci permet de gagner au niveau espace de stockage et au niveau applicatif. En général, décider quelles portions de données on doit crypter constitue le premier pas pour établir l’architecture de la solution. Également, le système cryptographique utilisé doit être choisi en tenant compte des contraintes de performance en plus des contraintes de sécurité.

1.3

Conclusion

Le fondement mathématique solide de la cryptographie fait de cette science un outil redoutable pour sécuriser les données au repos et celles qui véhiculent sur les réseaux non sûrs. Cependant, tout ne se passe pas sans inconvénients. Les principaux problèmes liés à l’utilisation de la cryptographie sont sans doute la dégradation des performances des aspects applicatifs et l’accroissement du besoin en espace de stockage. Des solutions plus ou moins satisfaisantes ont été proposées. Par exemple, l’uti-lisation des processeurs dédiés à la cryptographie et l’util’uti-lisation des crypto-serveurs peuvent aider à améliorer les performances. En plus de cela, la cryptographie à elle seule ne peut pas résoudre tous les problèmes de sécurité et un texte crypté ne constitue pas une garantie d’inviolabilité. C’est le cas des protocoles cryptographiques par exemple.

L’étude des systèmes cryptographiques et de leurs propriétés algébriques est importante pour l’analyse des protocoles cryptographiques, et ce, pour pouvoir faire une analyse réaliste des protocoles qu’ils utilisent.

(44)
(45)

Chapitre 2

Les protocoles cryptographiques et les

méthodes d’analyse

2.1

Introduction

Un protocole est un ensemble de règles à respecter au cours d’une communication sur un réseau in-formatique. Les protocoles diffèrent les uns des autres par l’objectif de la communication. Certains protocoles sont définis pour l’échange des fichiers (e.g. FTP), d’autres pour gérer l’état de la transmis-sion et les erreurs (e.g. ICMP), d’autres pour gérer la messagerie électronique (e.g SMTP et POP3), d’autres pour le transfert hypertexte (e.g HTTP), d’autres pour gérer les équipements du réseau (e.g. SNMP), etc.

Un protocole cryptographique est un protocole qui utilise des primitives cryptographiques pour assurer certaines propriétés de sécurité comme l’authentification, la confidentialité, la non-répudiation, l’ano-nymat, l’atomicité, l’intégrité, etc. dans des communications contenant de l’information sensible. En effet, de nos jours, nous assistons à une explosion réelle dans l’utilisation des réseaux informatiques. Nous sommes passés des grands calculateurs aux petits outils informatiques mobiles et sans fils que nous utilisons au quotidien dans nos opérations pour accéder à des réseaux hétérogènes interconnectés via Internet. Ce dernier devient une pierre angulaire pour des secteurs sensibles tels que le commerce électronique. Les entreprises économiques ont connu une multiplication inédite de leurs chiffres d’af-faire grâce à ce réseau mondial qui leur permettait une masse de clientèle distante très importante et par conséquent des bénéfices élevés. Néanmoins, l’explosion d’Internet ne se passe pas sans incon-vénients. Les intrus et les chercheurs de l’argent facile ont trouvé en lui un moyen d’encaisser des bénéfices, parfois énormes, de l’exploitation des failles de sécurité provenant de la manipulation des protocoles utilisés. Le recours à la cryptographie dans les protocoles, bien qu’il constitue un élément important dans la sécurisation des données, ne s’est pas montré suffisant pour résoudre tout le pro-blème. L’exemple le plus frappant est l’attaque, appelée attaque de l’homme-au-milieu, menée par

Références

Documents relatifs

Or la sphère elle-même est la seule variété de courbure sectionnelle constante égale à 1 et de rayon d'injectivité égal au moins à TT , car pour tout quotient fini de cette

Théorème fondamental : toute suite croissante majorée converge vers une limite nie, toute suite croissante non majorée tend vers +∞.. Application à l'étude d'une suite dénie

Pour estimer les dépenses d’enseignement effectuées par les Pouvoirs locaux, nous nous sommes basés uniquement sur les chiffres de dépenses et de recettes ordinaires 7

Nous allons exploiter l’arbre de recherche tel que pour chaque nœud de celui-ci, les fils sont le résultat de l’application d’une règle de réécriture à la preuve attachée

In the local Universe there is a tight relation between kinematic properties and morphologi- cal type, being disks dominated by rotation and speroidal components dominated

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

To gain information also on the electronic structure of the observed point defects and the bias dependence of their topographic STM images, we have performed tunneling

les pastilles obtenues par la voie solide où, sous atmosphère réductrice, ce sont les deux extrémités du domaine de composition qui ont le plus de mal à se