Vous êtes sur la page 1sur 50

REPUBLIQUE TUNISIENNE MINISTERE DE L’ENSEIGNEMENT SUPERIEUR, DE LA RECHERCHE SCIENTIFIQUE ET DE LA TECHNOLOGIE UNIVERSITE DE 7 NOVEMBRE A CARTHAGE

ET DE LA TECHNOLOGIE UNIVERSITE DE 7 NOVEMBRE A CARTHAGE E P O L Y T

E

P O L Y T E C H N I Q U E

E

E

O

C

T

I

L

S

D

E

U

N

I

Rapport de Projet de Fin d’Etude

Construction d’attaques pour les protocoles cryptographiques

´

Elabor´e par

Encadr´e par

Organisme d’acceuil :

´ Elabor´e par Encadr´e par Organisme d’acceuil : : : BEN ABDALLAH Ahmed Chamseddine M. LAKHNECH

:

:

BEN ABDALLAH Ahmed Chamseddine

M. LAKHNECH Yassine

M. ENE Cristian

Ann´ee universitaire 2003/2004

”Program testing can best show the pre- sence of errors but never their absence.”

Edges W. Dijjkstra (1930-2002)

Remerciements

Au terme de ce travail, je tiens a` exprimer mes remerciements envers toutes les personnes qui ont contribu´e au bon d´eroulement de ce PFE.

Je tiens particuli`erement a` remercier Pr. Yassine LAKHNECH, responsable du l’´equipe DCS de VERIMAG, pour m’avoir accueilli au sein de son ´equipe et pour m’avoir encadr´e et orient´e durant mon PFE.

Je remercie ´egalement M. Cristian ENE, post-docteur a` VERIMAG, pour sa patience, son assistance, ses directives et ses conseils pr´ecieux.

Mes remerciements s’adressent aussi a` Moez KRICHEN, Omar CHEMLAL, Liana BOZGA et Chiheb KESSENTINI pour l’aide et le soutien qu’ils m’ont accord´es tout au long de ce stage.

Abstract

In this project, we have been interested in an assistance tool for cryptographic protocols’

verification. A prototype of visualisation and analysis for potentiel attacks has to be develo- ped.

A tool, so-called Hermes, for verifying secrecy properties of cryptographic protocols was

developed by VERIMAG. My graduation project goal was to spread this tool so that it takes into account the access rights of communication canals.

Once a more realistic model is obtained, this extension will allow the tool verify a wide range of ”complex” protocols and avoid eventual false attacks.

R´esum´e

Dans ce PFE, nous sommes int´eress´es a r´ealiser un outil d’aide a la mise au point de proto- coles cryptographiques.Il s’agit de d´evelopper un outil de visualisation et d’analyse d’attaques potentielles.

VERIMAG a d´ej`a d´evelopp´e un outil, nomm´e Hermes, qui v´erifie la propri´et´e de secret des protocoles cryptographiques. Le but de ce PFE est d’´etendre cet outil pour qu’il tient compte des droits d’acc`es des canaux de communication utilis´es.

Obtenant ainsi une mod´elisation plus r´ealiste, cette extension permettra `a l’outil de verifier des protocoles ”complexes” et d’´eviter des ´eventuelles fausses attaques.

4

Table des mati`eres

Introduction

I Pr´esentation g´en´erale

8

11

1 Les protocoles cryptographiques

 

12

 

1.1 Primitives cryptographiques

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

1.1.1 Chiffrement

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

12

1.1.2 Concat´enation

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.1.3 Nonces .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.2 Les agents .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.3 Propri´et´es de s´ecurit´e

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.4 Difficult´es de la verification

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

1.5 Approches pour la v´erification .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

2 L’outil de v´erification Hermes

 

16

 

2.1 Architecture et caract´eristiques de l’outil .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2.2 Principe de l’outil

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

II

M´ethode de V´erification

 

19

3 Pr´eliminaires

 

20

 

3.1 Termes .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

3.2 Substitutions

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

4 Les protocoles cryptographiques : mod´elisation et abstraction

 

22

 

4.1

Mod´elisation des protocoles cryptographiques

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

4.1.1 Messages

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

22

Syntaxe

4.1.2 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

4.1.3 Mod´elisation de l’intrus

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

4.1.4 S´emantique op´erationnelle .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

 

5

 

4.1.5

Mod´elisation du secret .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

27

 

4.2

Abstraction finie des messages atomiques et des sessions

.

.

.

.

.

.

.

.

.

.

.

.

28

5

M´ethode de v´erification

 

33

5.1 D´efinitions

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

33

5.2 Stabilit´e de (B 0 , S, B)

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

35

6

Algorithme

 

38

6.1 Version s´emantique de l’algorithme de v´erification

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

6.2 Repr´esentation symbolique des saf e-breakers

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

6.3 Version symbolique de l’algorithme de v´erification

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

 

6.3.1 Calcul des substitutions dangereuses

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

43

6.3.2 Traitement des super terms

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

 

6.4 Terminaison de l’algorithme symbolique

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

Conclusion

 

48

6

Table des figures

2.1

L’architecture d’HERMES

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

4.1

Exemple de protocole

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

4.2

Les r`egles abstraites du protocole d´ecrit dans la figure4.1 .

.

.

.

.

.

.

.

.

.

.

.

32

6.1

Algorithme

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

6.2

R`egles d’unification classiques

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

6.3

R`egles d’unification pour la fonction Sup

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

7

Introduction

La s´ecurit´e des syst`emes d’information est aujourd’hui un domaine en pleine efferves- cence. En effet, avec le d´eveloppement des r´eseaux de communication comme Internet et les r´eseaux de t´el´ephonie mobile, le besoin d’assurer la confidentialit´e et l’authenticit´e des messages ´echang´es a consid´erablement augment´e. Les protocoles cryptographiques sont des r`egles d’´echange entre les points du r´eseau, ils permettent de s´ecuriser les communications. Ils sont utilis´es par exemple dans les distributeurs de billets, les abonnements aux chaˆınes de t´el´evision payantes, la t´el´ephonie mobile, le commerce ´electronique.

Aujourd’hui, un des enjeux de la v´erification des protocoles cryptographiques est de se doter de m´ethodes syst´ematiques et automatisables. On peut avancer le fait que la d´ecouverte d’une faille en 1995 dans le protocole de Needham et Schroeder, qui ´etait connu depuis 17 ans et consid´er´e comme un protocole sur,ˆ a fait prendre conscience `a la communaut´e de l’importance qu’il y avait `a rechercher du cˆot´e de l’automatisation de la v´erification des protocoles cryptographiques.

Contexte du Projet

Le pr´esent travail a ´et´e r´ealis´e au sein de l’´equipe DCS 1 au laboratoire VERIMAG. Cr´e´e en 1993, VERIMAG est une unit´e de recherche mixte du CNRS 2 , de l’INPG 3 et de l’UJF 4 , et fait partie de la f´ed´eration IMAG 5 . Elle s’int´eresse au d´eveloppement des techniques de vali- dation et des m´ethodes formelles pour la v´erification des syst`emes critiques. Les travaux qui y sont men´es maintiennent un juste ´equilibre entre la recherche fondamentale et la recherche exp´erimentale et appliqu´ee et ce grˆace `a une coop´eration internationale avec d’autres centres de recherche et `a des partenariats avec des industriels.

1 Distributed and Complex Systems Research Group 2 Centre National de la Recherche Scientifique 3 Institut National Polytechnique de Grenoble 4 Universit´e Joseph Fourier 5 Institut d’Informatique et Math´ematiques Appliqu´ees de Grenoble

8

Cadre du projet

VERIMAG a developp´e un outil de v´erification de la propri´et´e du secret des protocoles cryptographiques. Cet outil, appel´e Hermes, projette, par abstraction, l’ensemble des ´etats (infini) d’une ex´ecution de protocole ayant un nombre non-born´e de participants sur un ensemble d’´etats fini. Hermes traite ´egalement le cas de messages de taille non-born´ee en ´eliminant les possibilit´es de divergence grˆace `a une notion de chapeaux [3]. L’algorithme de v´erification de Hermes est correct : si on prouve que le protocole est secret dans le mod`ele abstrait, alors il est secret dans le mod`ele concret. Par contre, il n’est pas complet. Hermes permet cependant de montrer le secret de nombreux protocoles de [5]. L’approche suivi dans Hermes, suppose que l’intrus a le contrˆole total du r´eseau. En effet, l’intrus est capable d’intercepter tous les messages envoy´e sur le r´eseau, peut ´ecouter tous les messages (sans les empˆecher d’arriver `a leurs destinations) et peux se d´eguiser sous une autre identit´e. N’est pas toujours valable en cas r´eel, cette hypoth`ese peut engendrer des fausses attaques lors de la v´erification de certains protocoles.

Cahier de charge

Le but de ce projet est d’´etendre le mod`ele d’Hermes pour tenir compte des propri´et´es d’acc`es de chaque canal de communication utilis´e.

Dans ce projet, nous sommes appel´e, premi`erement, `a concevoir une syntaxe qui tient compte des propri´et´es des canaux. Deuxi`emement, nous devons ´etablir une condition n´eces- saire qui nous permettra de s’assurer qu’un certain protocole et correct. Enfin, nous avons `a d´evelopper un algorithme s´emantique de v´erification ainsi que l’algorithme symbolique cor- respondant.

Organisation du document

Ce projet est pr´esent´ee en deux parties. Dans la premi`ere partie, nous pr´esentons d’une fa¸con succincte et informelle les protocoles cryptographiques et l’outil de v´erification Hermes.

Nous commen¸cons dans le chapitre 1 par rappeler quelques d´efinitions sur les primitives cryptographiques. Ensuite, nous ´enum´erons les propri´et´es de s´ecurit´e des protocoles. Enfin, nous listons quelques approches de v´erification. Dans le chapitre 2, nous pr´esentons bri`eve- ment l’architecture d’Hermes et son principe de v´erification.

Dans la deuxi`eme partie, nous pr´esentons une approche pour v´erifier les protocoles

9

cryptographiques tout en tenant compte des propri´et´es d’acc`es des canaux utilis´es.

Dans le chapitre 3, nous rappelons quelques d´efinitions math´ematiques et nous illustrons diff´erentes notations que nous utiliserons tout le long de cette partie. Le chapitre 4 pr´esente la mod´elisation et l’abstraction qui nous permettront de construire un mod`ele abstrait d’un protocole quelconque `a partir de son mod`ele concret. Dans le chapitre 5, nous introdui- sons la d´efinition de stabilit´e d’une transition de protocole et nous pr´esentons une condition suffisante qui assurera la correction d’un protocole quelconque. Enfin, nous illustrons dans le chapitre 6 l’algorithme de v´erification que nous avons d´evelopp´e ainsi que sa version symbolique (impl´ementable).

10

Premi`ere partie

Pr´esentation g´en´erale

11

Chapitre 1

Les protocoles cryptographiques

Dans ce chapitre, nous commen¸cons par pr´esenter quelques d´efinitions que nous allons utiliser dans ce rapport. Nous parlerons ensuite de propri´et´es de s´ecurit´e des protocoles cryp- tographiques, et enfin, nous ´enum´erons les diff´erentes m´ethodes de v´erifications existantes.

1.1 Primitives cryptographiques

1.1.1

Chiffrement

Le chiffrement consiste `a transformer un message en un autre de mani`ere `a ne plus re- connaˆıtre le premier. Le d´echiffrement est l’op´eration inverse. On distingue deux types de chiffrement : les chiffrements sym´etriques et les chiffrements asym´etriques. Le chiffrement sym´etrique utilise la mˆeme cl´e pour chiffrer comme pour d´echiffrer. Alors que le chiffrement asym´etrique utilise une cl´e de chiffrement diff´erente de la cl´e de d´echiffrement ; la premi`ere est souvent divulgu´ee sur le r´eseau afin que tout participant puisse chiffre mais la deuxi`eme reste en g´en´eral secr`ete pour qu’une seule personne (ou machine) puisse d´echiffrer.

On pourrait penser que les principales attaques des protocoles cryptographiques reposent sur le d´ecryptage des messages chiffr´es. En fait, beaucoup d’attaques reposent sur des prin- cipes beaucoup plus simples `a mettre en oeuvre comme l’interception d’un message et l’envoi d’un autre. dans le cadre de la v´erification des protocoles cryptographiques, une hypoth`ese tr`es classique est celle du chiffrement parfait. Une telle hypoth`ese assure en particulier qu’il est impossible de d´ecrypter un message chiffr´e sans avoir la cl´e correspondante `a l’algorithme de d´echiffrement.

12

1.1.2

Concat´enation

La deuxi`eme fonction utilis´ee dans les protocoles cryptographiques est la concat´enation. Elle est mod´elis´ee par un symbole fonctionnel binaire, souvent le symbole ( , ), appel´e aussi paire.

1.1.3 Nonces

Dans les protocoles cryptographiques, les nonces sont des donn´ees engendr´ees al´eatoire- ment. La probabilit´e d’engendrer deux nonces identiques ´etant tr`es faible, on choisit souvent de mod´eliser les nonces comme des donn´ees toutes distinctes.

1.2 Les agents

Les agents (appel´es aussi participants ou principaux) testent et stockent des parties de messages en fonction des r`egles du protocole. Ils peuvent ˆetre honnˆetes ou malhonnˆetes (ap- pel´es souvent intrus).

Les actions de l’intrus sont d´ecrites par un ensemble succinct de r`egles ou` apparaissent la capacit´e de l’intrus `a d´echiffrer des messages lorsqu’il a l’inverse de la clef ou sa capacit´e `a former de nouveaux messages. Souvent, on consid`ere que l’intrus dispose d’une capacit´e de calcul et de m´emoire non born´ee. Par cons´equence, on se contente de consid´erer un seul intrus au lieu de plusieurs. En fait, cela revient au mˆeme si chaque intrus dispose d’un nombre arbitraire d’identit´es et des clefs priv´ees correspondantes : ce que deux intrus pourraient apprendre et calculer, un seul intrus peut le faire seul puisque ni sa capacit´e de calcul ni la taille de sa m´emoire ne sont born´ees.

1.3 Propri´et´es de s´ecurit´e

Nous appellerons ici propri´et´e de s´ecurit´e toute propri´et´e qu’un protocole cherche `a as- surer. Le but de ce paragraphe est de faire une liste (non exhaustive) des propri´et´es que peuvent tenter d’assurer les protocoles. Les propri´et´es les plus courantes sont le secret et l’authentification.

. Le secret 1 , appel´e aussi confidentialit´e, consiste `a garder inconnue pour une tierce personne une certaine donn´ee. Par exemple, pour le paiement par carte `a l’aide de terminaux portables, l’utilisateur doit confirmer son identit´e en entrant son code PIN `a quatre chiffre qui est une donn´ee qui doit rest´ee secr`ete.

1 Une d´efinition formelle de cette propri´et´e sera ´enonc´ee dans le paragraphe 4.1.5

13

.

L’authentif ication consiste `a ˆetre certain de correspondre avec l’interlocuteur escompt´e (il serait par exemple ennuyeux d’envoyer son num´ero de carte bancaire `a quelqu’un qui se fait passer pour le vendeur).

.

L’anonymat est le fait de ne pas ˆetre identifiable parmi un ensemble de personnes. Par exemple, lors d’un vote, on ne doit pas pouvoir ´etablir de lien entre une personne et le contenu de son bulletin, ceci ne pouvant ˆetre garanti que s’il y a au moins deux votes diff´erents pour l’´election.

.

L’int´egrit´e signifie usuellement que les donn´ees ne peuvent pas ˆetre corrompues.

.

La non-r´epudiation consiste `a ´eviter que des participants qui envoient et re¸coivent des messages puissent le nier plus tard ; on peut prendre l’exemple du vote ´electronique ou` la non-r´epudiation assure que la personne qui a d´ej`a vot´e ne puisse pas pr´etendre le contraire.

Dans la suite, nous nous int´eressons seulement `a la propri´et´e du secret.

1.4 Difficult´es de la verification

La v´erification des protocoles cryptographiques est un cas particulier de model-checking ou` les syst`emes consid´er´es sont des protocoles cryptographiques dans un r´eseau hostile et

les propri´et´es `a v´erifier sont celles ´enonc´ees aux paragraphes pr´ec´edents (secret, authentifica-

tion, anonymat

param`etres du syst`eme `a v´erifier :

).

Les difficult´es de la v´erification tiennent dans le caract`ere non born´e des

– Le nombre de sessions n’est pas born´e.

– Le nombre de participants n’est pas born´e.

– Les messages sont de taille arbitraire.

– A chaque ´etape, n’importe quel message de la connaissance de l’intrus peut ˆetre envoy´e :

le syst`eme est `a branchement infini.

– L’intrus peut g´en´erer un nombre arbitraire de nouvelles clefs et de nouveaux nonces.

De plus, les primitives cryptographiques ont des propri´et´es alg´ebriques : associativit´e de la paire, propri´et´e de l’exponentielle utilis´ee dans les chiffrements RSA, propri´et´es du « ou

» exclusif, etc. Pour mod´eliser ces propri´et´es, on peut ajouter les th´eories ´equationnelles correspondantes. Mais ces th´eories ´equationnelles augmentent consid´erablement la difficult´e de la v´erification.

1.5 Approches pour la v´erification

Les outils de v´erification utilisent beaucoup le model-checking (v´erification de mod`ele), `a savoir : ´etant donn´e un protocole P et une propri´et´e de s´ecurit´e M , est-ce que P satis- fait M ? Des outils impl´ementant un tel proc´ed´e ont d´ej`a ´et´e utilis´es avec succ`es, le plus

14

connu ´etant certainement l’outil FDR de G. Lowe ayant notamment servi `a d´etecter l’at- taque sur le protocole Needham-Schroeder `a clefs publiques. Il est cependant tr`es difficile de prouver la correction d’un protocole, notamment `a cause du probl`eme de l’explosion de l’espace des ´etats ; en effet, les traces ayant une longueur non born´ee `a cause du nombre ar- bitraire d’instances du protocole (correspondant au nombre de session), l’arbre des traces est infini en profondeur. De plus, selon ce que l’intrus peut envoyer, il est `a branchement infini. De mani`ere g´en´erale, le probl`eme de la v´erification des protocoles cryptographiques est un probl`eme ind´ecidable.

Si l’on souhaite travailler avec un nombre arbitraire de sessions, deux solutions sont cou- ramment envisag´ees. La premi`ere consiste `a d´egager des sous-classes d´ecidables. La deuxi`eme solution consiste `a d´efinir des m´ethodes incompl`etes ou` l’on suppose qu’il n’y a pas de nonce (des abstraction seront alors utilis´ees pour les repr´esenter) et que le nombre d’agents consi- d´er´es est born´e, cette derni`ere abstraction ´etant correcte. Ces m´ethodes permettent une v´e- rification correcte mais incompl`ete au sens ou` on peut trouver de fausses attaques. Toujours en consid´erant un nombre arbitraire de sessions, des m´ethodes correctes et compl`etes, mais non terminantes, ont aussi ´et´e d´evelopp´ees. Il existe aussi des m´ethodes ou` les protocoles sont mod´elis´es dans la logique du premier ordre, ce qui permet de ramener le probl`eme de la satisfiabilit´e d’une propri´et´e de s´ecurit´e `a celui de la satisfiabilit´e d’un ensemble de clause.

15

Chapitre 2

L’outil de v´erification Hermes

D´evelopp´e par Verimag, HERMES est un outil d´edi´e `a la v´erification de propri´et´es de

´

secret pour les protocoles cryptographiques. Etant donn´e un protocole et une propri´et´e de se-

cret sp´ecifi´es dans le langage EVA, HERMES calcule des conditions suffisantes pour garantir

la propri´et´e de secret.

Dans ce chapitre, nous donnons un aper¸cu rapide sur l’architecture de cet outil. Puis, nous

pr´esentons succinctement le principe de v´erification implant´e dans HERMES ; nous rappelons

que ce principe est d´ecrit en d´etail dans [3].

2.1 Architecture et caract´eristiques de l’outil

HERMES prend en entr´ee un fichier .cpl produit par le traducteur EVATRANS `a partir

d’un fichier .eva. De cette description il extrait la propri´et´e de secret et la sp´ecification du

protocole (module 1, figure 2.1). Il calcule une abstraction de la propri´et´e et du protocole

(module 2) puis compl`ete l’ensemble des secrets et g´en`ere des contraintes qui d´efinissent les

conditions dans lesquelles le protocole peut ˆetre utilis´e sans risque d’invalider la propri´et´e

de secret (module 3). L’outil produit ´egalement des traces qui justifient l’ajout de chaque

nouveau secret et de chaque nouvelle contrainte. Ces traces correspondent `a des tentatives

d’attaques.

Les contraintes calcul´ees par le module 3 d’HERMES s’interpr`etent comme des limites

impos´ees sur les connaissances de l’Intrus au moment de d´ebuter une session du protocole.

Ces contraintes sont ´etablies de mani`ere `a garantir que les messages ´echang´es par des par-

ticipants honnˆetes au cours d’une session du protocole jou´ee en parall`ele avec un nombre

arbitraire d’autres sessions, ne permettent pas `a l’Intrus de d´ecouvrir les secrets ´echang´es par

les participants honnˆetes.

16

Fig. 2.1 – L’architecture d’HERMES La m´ethode de calcul des contraintes du module 3 s’applique

Fig. 2.1 – L’architecture d’HERMES

La m´ethode de calcul des contraintes du module 3 s’applique aussi bien `a un nombre

arbitraire de sessions parall`eles (entr´ee a) qu’`a un nombre fini de sessions parall`eles (en-

tr´ee b). Dans le premier cas, le module 2 d’HERMES construit une abstraction qui satisfait

la propri´et´e suivante : si la propri´et´e abstraite est v´erifi´ee pour le protocole abstrait alors

la propri´et´e de secret est satisfaite par le protocole concret pour un nombre arbitraire de

sessions ex´ecut´ees en parall`eles par un nombre arbitraire de participants g´en´erant un nombre

arbitraire de donn´ees fraˆıches (nonces et clefs).

2.2 Principe de l’outil

HERMES calcule des conditions suffisantes pour garantir que les messages ´echang´es au

cours d’une session du protocole ne peuvent pas ˆetre exploit´es pour d´eduire des secrets. L’outil

est bas´e sur la notion de messages capables de garder un secret, appel´es messages protecteurs.

Il s’agit des messages de la forme {X} K c’est-`a-dire crypt´es au moyen d’une clef dont l’inverse

n’est pas connu de l’Intrus. Les messages protecteurs se d´eduisent des clefs d´eclar´ees secr`etes

dans les hypoth`eses du protocole.

ensemble d’hypoth`eses sur les clefs secr`etes, HERMES calcule, d’une part, un ensemble de

Etant donn´e un protocole, un ensemble S de secrets et un

´

messages qui prot`egent les secrets ´echang´es au cours du protocole ; et d’autre part, il ajoute

aux secrets les messages qui permettent de construire une attaque. Il s’agit en particulier des

17

`

A l’issue du calcul dont la terminai-

son est assur´ee par un op´erateur de convergence forc´ee (widening), HERMES retourne un

ensemble de secrets S’ qui contient les secrets de d´epart et un ensemble de messages protec-

teurs H’. Les r´esultats H’ et S’ d´efinissent les conditions dans lesquelles le protocole peut

ˆetre utilis´ee sans risque : la propri´et´e de secret est garantie si, dans les messages initialement

connus de l’Intrus, les secrets S’ sont prot´eg´es par les messages H’. Autrement dit, une at-

taque se traduit g´en´eralement par le fait que l’ensemble de secrets compl´et´e par HERMES

contient des messages qui sont trivialement constructibles par l’Intrus.

messages dans lesquels les secrets ne sont pas prot´eg´es.

Du fait des approximations effectu´ees par l’op´erateur de widening, Hermes ne peut pas

´eviter le ph´enom`ene des fausses attaques. Il s’agit des cas ou` HERMES produit une trace

d’une attaque abstraite qui ne correspond pas `a une attaque ex´ecutable dans le mod`ele r´eel.

18

Deuxi`eme partie

M´ethode de V´erification

19

Chapitre 3

Pr´eliminaires

Nous rappelons dans ce chapitre quelques notions math´ematiques qui nous avons utilis´e

dans notre travail. Ce chapitre a ´egalement pour but de fixer les notations et la terminologie

utilis´ees dans cette partie.

Nous attirons l’attention ici que, dans ce chapitre et dans le reste de cette partie, la

plupart des notations sont en anglais et ils sont ´ecrits souvent en italique.

3.1

Termes

Soit X un ensemble d´enombrable de variables et soit F i un ensemble d´enombrable de

fonction d’arit´e i, i N. Les fonctions d’arit´e 0 sont appel´es les fonctions constantes. Soit

F = iN F i .

D´efinition 3.1 On note T (X , F) l’ensemble des termes construit avec F et X , disjoint de

F. T (X , F) est le plus petit ensemble v´erifiant :

X ⊂ T (X, F)

f ∈ F i et t 1 ,

,

t i ∈ T (X, F), f(t 1 ,

, t n ) ∈ T (X, F)

On assimile les termes `a des arbres ordonn´es ´etiquet´es. Leurs feuilles sont des constantes

ou des variables et les noeuds internes sont des symboles fonctionnels dont l’arit´e correspond

au nombre de fils.

Les termes racines sont les termes sans variables. Nous notons T (F) l’ensemble des termes

racines sur F.

D´efinition 3.2 (position) Une position p dans un terme t est repr´esent´ee par la s´equence

d’entiers d´ecrivant le chemin de la racine au sous-terme t| p qu’elle d´ecrit.

La concat´enation de deux s´equences p et q est not´ee p · q.

20

Une position p est au-dessus d’une position q, p q, s’il existe une position r telle que

q = p · r.

Le domaine d’un terme t, P os(t), est l’ensemble de ses positions.

D´efinition 3.3 L’ensemble var(t) des variables d’un terme t est d´efini inductivement par :

– si t est une constante, var(t) = .

– si t est une variable x, var(t) = {x}.

– si t = f (t 1 ,

, t n ), var(t) = var(t 1 )

var(t n ).

Par d´efaut, nous utiliserons les lettres (s, t

)

pour les termes, les lettres (p, q

positions et les lettres (x, y, z

)

pour les variables.

)

pour les

3.2

Substitutions

D´efinition 3.4 Soit une fonction partielle de X vers T (F, X ) telle que le nombre de variables

affect´ees est fini. Son extension a` T (X , F) d´efinit une substitution, not´ee σ, si et seulement

si pour tout f ∈ F

et pour tout t 1 ,

,

t n ∈ T (X, F), σ(f(t 1 ,

,

t n )) = f (σ(t 1 ),

, σ(t n )).

Le domaine Dom(σ) de la substitution σ est l’ensemble des variables modifi´ees, c’est a`

dire, Dom(σ) = {x|σ(x)

= x}.

Il en r´esulte qu’une substitution peut ˆetre repr´esent´e par un sous-ensemble fini de Dom(σ)×

T (X , F), not´e σ =

{x 1 t 1 ,

,

x n t n }.

Un terme s est une instance de t, si et seulement s’il existe une substitution σ telle que

s = σ(t). Dans ce cas, on peut ´egalement dire que t est plus g´en´eral que s.

D´efinition 3.5 (unificateur) Un unificateur σ de deux termes s et t est une substitution

telle que σ(s) = σ(t). La substitution σ est plus g´en´erale que σ si et seulement s’il existe

une troisi`eme substitution θ telle que σ = σθ. Un unificateur le plus g´en´eral, ou mgu (most

general unifier) de s et t est un unificateur qui est plus g´en´eral que tout autre unificateur de

s et t. Si s et t sont unifiables, alors ils ont un unificateur le plus g´en´eral.

21

Chapitre 4

Les protocoles cryptographiques :

mod´elisation et abstraction

4.1 Mod´elisation des protocoles cryptographiques

Dans cette partie, nous d´ecrirons comment nous mod´elisons les protocoles cryptogra- phiques et nous donnerons une d´efinition pr´ecise des propri´et´es que nous voulons montrer. Nous commen¸cons par d´ecrire les messages qui peuvent ˆetre inclus dans notre mod´elisation.

4.1.1

Messages

L’ensemble des messages, not´e T (F), contient les termes construits par les symboles constants et les constructeurs encr : T (F) × K → T (F) et pair : T (F) × T (F) T (F). Les symboles constants, appel´es aussi messages atomiques, sont :

1. Les noms des principaux (agents) : Nous notons par P l’ensemble de tous les principaux.

2. Les nonces : N repr´esente l’ensemble des nonces.

3. les cl´es : Nous notons par K l’ensemble des cl´es. Nous d´ecrivons trois key constructors pbk, pvk et smk de type :

(N × P ) ∪ P → K

ou` pbk, pvk et smk sont respectivement les constructeurs des cl´es publiques, priv´es et sym´etriques.

4. Les canaux : Nous notons par C l’ensemble des canaux.

Soit A = P ∪ N ∪ K ∪ C et F = A ∪ {encr, pair}. Dans la suite, par abus d’´ecriture, nous noterons (m 1 , m 2 ) au lieu de pair(m 1 , m 2 ) et {m} k au lieu de encr(m, k).

22

Role terms

Pour d´ecrire les transitions qui peuvent ˆetre ´etablies par un agent dans une session d’un

protocole cryptographique, nous introduisons les role terms. Soit X N l’ensemble des nonces,

X P l’ensemble des principaux et X C l’ensemble des canaux. Nous supposons que X , X N , X P

et X C sont deux `a deux disjoints.

Les Role terms sont les termes construits `a partir des variables dans X ∪ X N ∪X P ∪X C en

utilisant les fonctions encr et pair et ou` les constantes ne sont pas autoris´es. Formellement,

les role terms sont d´efinis par la grammaire suivante :

Key

::=

pbk(x 1 ,

,

x r )|pvk(x 1 ,

,

x r )|smk(x 1 ,

,

x r )|smk(n, x 1 ,

,

x r )

RT

::

= n|p|Key|x|c|pair(RT 1 , RT 2 )|encr(RT, Key)

 

avec x 1 ,

4.1.2

, x r ∈ X P , n ∈ X N , p ∈ X P , x ∈ X

Syntaxe

et c ∈ X C

Pour d´ecrire les protocoles cryptographiques, nous avons besoin de d´ecrire les transitions

¯

que les agents peuvent ex´ecuter. Dans notre notation, les transitions ont la forme c.t d.t ,

avec c et d des canaux de communication et t et t sont des termes v´erifiant var(t ) var(t).

Chaque session est param`etr´ee par les agents qui interviennent, les frais nonces, les cl´es et

les canaux utilis´es. Une description de session est donn´ee par le quadruplet (P , trans, f resh,

new), avec :

.

P est un vecteur (p 1 ,

,

p r ), r 1, de diff´erents agents variables dans X P ,

.

tran est une fonction qui associe `a chaque agent dans P une liste finie de transitions,

.

f resh associe `a chaque agent variable dans P un ensemble fini et disjoint de nonces va-

riables dans X N .

.

new associe `a chaque ensemble d’agents un ensemble fini et disjoint de canaux variables

dans X C en sp´ecifiant les droits de chaque agent sur le canal.

Par exemple : new({p 1 ,

c id : identifiant du canal.

,

p n }) = {(c id , x, {wr 1 ,

,

wr n }, wr I )} cr´ee un canal c id avec :

x =

0

1 si le canal est instanci´e par session

si le canal est permanent (commun `a toutes les sessions)

wr r : le droit de l’agent p r sur le canal c id

wr r =

 

 

 

0 si p r ne peut ni lire ni ´ecrire sur le canal c id

1

2 si p r a seulement le droit d’´ecrire sur le canal c id

3 si p r a le droit de lire et d’´ecrire sur le canal c id

si p r a seulement le droit de lire sur le canal c id

r ∈ {1,

,

n}

23

wr I : le droit des autres agents sur le canal c id

wr I =

0 si les autres agents ne peuvent ni lire ni ´ecrire sur le canal c id

1 si les autres agents ont seulement le droit de lire sur le canal c id

2 si les autres agents ont seulement le droit d’´ecrire sur le canal c id

3 si les autres agents ont le droit de lire et d’´ecrire sur le canal c id

On notera par i le ”r´eseau public”, autrement dit, le canal sur lequel tout les agents ont

le droit de lire et d’´ecrire.

Par abus d’´ecriture, on notera c new({p 1 ,

au lieu de (c, x, {wr 1 ,

,

wr n }, wr I ) new({p 1 ,

,

p n }), et parfois (c, x) new({p 1 ,

, p n }).

Exemple 4.1 Soit :

A {(A, N A , c¯ A )} pbk(B)

B

A

c A

B

A

B

:

:

:

{(N A , N B )} pbk(A)

{N B } pbk(B)

, p n }),

L’agent A joue le rˆole d’initiateur de la session et B est le r´epondeur. Selon la notation d´ecrite

auparavant, la session peut ˆetre d´ecrite par la Figure 4.1, avec P = (p 1 , p 2 ), f resh(p 1 ) = {n},

f resh(p 2 ) = {n } et new({p 1 , p 2 }) = {(c A , 1, {3, 0}, 0)}.

tran(p 1 ) : tran(p 2 ) : p 1 c A .{(n, → ¯
tran(p 1 )
:
tran(p 2 ) :
p 1
c A .{(n,
¯ i.{(p 1 , n, c¯ A )} pbk(p 2 )
¯
i.{(x, y, w)} pbk(p 2 )
w.{(y, n )} pbk(x)
z)} pbk(p 1 )
i.{z} pbk(p 2 )

Fig. 4.1 – Exemple de protocole

4.1.3 Mod´elisation de l’intrus

Dans cette section, nous d´ecrivons comment l’intrus peux d´eduire des nouveaux messages

`a partir des messages qu’il a d´ej`a intercept´es. Nous adoptons, comme dans le mod`ele de Dolev

Yao, un syst`eme d´eductif pour repr´esenter l’intrus. Afin de d´ecrire ce mod`ele, nous notons

E

M la relation signifiant ”l’intrus peu d´eduire le message M `a partir de l’ensemble E”, ou`

E

repr´esente l’ensemble des messages intercept´es par l’intrus.

.

Si m E

alors E m.

 

.

Si E

m 1 et E m 2 alors E pair(m 1 , m 2 ).

.

Si E

m

et E k ∈ K alors E encr(m, k).

.

Si

E

pair(m 1 , m 2 )

alors E

m 1 et E m 2 .

.

Si E

encr(m, k) et E k 1 alors E m.

24

Dans la suite, nous notons k(E) = {m | E m}.

Soit c ∈ X C , on note :

c k(E) : si l’intrus a le droit de lire les messages ´echang´es sur le canal c.

c¯ k(E) : si l’intrus a le droit d’´ecrire sur le canal c.

On d´efinit ensuite par E c la file d’attente du canal c, pour tout canal c tel que c ∈ S ou

c¯ ∈ S . On d´efinit aussi l’ensemble E = {E c |c ∈ C, c ∈ S ou c¯ ∈ S}.

Positions critiques et positions non-critiques

Nous d´efinissons maintenant les positions critiques et les positions non-critiques dans un

message. L’id´ee est qu’il n’y a aucune mani`ere de d´eduire la clef utilis´ee pour le chiffrement

d’un message quelconque. Ainsi, la position des cl´es dans les messages de la forme encr(m, k)

n’est pas critique et c’est un endroit surˆ pour un secret. Formellement, ´etant donn´e un terme

t,

une position p dans t est nomm´ee non-critique, s’il y a une position q tel que t(q) = encr et

p

= q · 1 ; autrement elle est nomm´ee critique. Nous emploierons ´egalement la notation s c m

pour d´enoter que s apparaˆıt en m `a une position critique, c’est `a dire, il existe p dom(m)

tel que p est critique et m| p = s.

Pour un terme t, nous utilisons la notation E t pour d´enoter qu’aucune instance de

t

n’est d´eductible de E, c’est `a dire, il n’existe aucune substitution σ : X → T (F) tel que

E

σ(t).

Nous utilisons aussi la notation E c t pour d´enoter qu’aucun message d´eductible de E

ne contient une instance de t `a une position critique, c’est `a dire, pour tout message m, si

E m alors σ(t)

c m, pour toute substitution σ.

4.1.4 S´emantique op´erationnelle

Soit S = (P, tran, f resh, new) une description d’une session donn´ee. Nous voulons d´ecrire

le comportement du protocole d´ecrit par S sans avoir des contraintes sur le nombre de sessions

ou de participants. Nous d´efinissons ainsi les transitions instanci´ees et les sessions instanci´ees.

Pour identifier les sessions, nous utilisons des entiers naturels. Ensuite, nous fixons chaque

instance de session par une paire (i, π), ou` i est son identificateur et π est un vecteur de

, p r . Ainsi, nous introduisons l’ensemble

des instances de sessions Inst = N × P r .

principaux qui instancie les principaux-variables p 1 ,

25

Instances de sessions

´

Etant donn´e (i, π) Inst, nous g´en´erons une instance de session, not´e (S) π , en applicant

i

les transformations suivantes pour tous les role terms qui apparaissent en S :

.

nous rempla¸cons chaque agent variable p par π(p),

 

.

chaque nonces variable n f resh(p) par N i,π ,

.

chaque canal instanci´e par session (c, 1) new({p 1 ,

,

p r }) par C i,π ,

.

chaque canal permanent (c, 0) new({p 1 ,

,

p r }) par C π .

Nous notons par t π le terme obtenu de t apr`es avoir appliquer les transformations cit´ees

ci-dessus. Ainsi,la (i, π)-instance de la transition c.t c¯ .t (en supposant que c est un canal

i

permanent et que c est un canal instanci´e par session) est C π .t π ( C ) i,π .(t )

i

¯

i

π .

i

Dans la suite, nous noterons par tran π (p) la liste des transitions (i, π)-instanci´ees obtenues

de tran(p).

Configuration et transitions

Pour d´efinir les configurations qui peuvent ˆetre engendr´ees par une ex´ecution du proto-

cole, nous avons besoin de d´efinir l’´etat de chaque instance de session.

L’´etat d’une instance de session est donn´e par la paire (τ, E, E), ou` la fonction τ associe

`a chaque p P une liste de transitions (i, π)-instanci´ees, E un ensemble des messages et E

est un ensemble de files d’attentes . Nous notons par Σ l’ensemble des ´etats des sessions.

Une configuration d’un protocol d´efini par S est donn´ee par la paire (ξ, E, E), ou` dom(ξ)

est l’ensemble des sessions cr´e´ees dans la configuration, ξ(i) est l’´etat de la session i, E est

l’ensemble des messages intercept´es par l’intrus et E est l’ensemble des files d’attentes des

canaux non publiques .

Une s´emantique op´erationnelle d’un protocole est d´efinie par les transitions appliqu´ees

sur les configurations. Il existe deux types de transitions :

1. des transitions qui cr´eent des nouvelles sessions

On d´efinit CH = {c | ∃p 1 ,

tanci´es par session .

,

p n , (c, 1) new({p 1 ,

dom(ξ)

i

,