Beruflich Dokumente
Kultur Dokumente
P O L Y T E C H N I Q U E
D E
T U N I S I E
Organisme dacceuil :
Elabor
e par
Encadre par
M. LAKHNECH Yassine
M. ENE Cristian
Program testing can best show the presence of errors but never their absence.
Edges W. Dijjkstra (1930-2002)
Remerciements
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 developed.
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 interesses a realiser un outil daide a la mise au point de protocoles cryptographiques.Il sagit de developper un outil de visualisation et danalyse dattaques
potentielles.
VERIMAG a dej`a developpe un outil, nomme Hermes, qui verifie la propriete de secret
des protocoles cryptographiques. Le but de ce PFE est detendre cet outil pour quil tient
compte des droits dacc`es des canaux de communication utilises.
Obtenant ainsi une modelisation plus realiste, cette extension permettra `a loutil de verifier
des protocoles complexes et deviter des eventuelles fausses attaques.
Pr
esentation g
en
erale
11
12
Primitives cryptographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.1.1
Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.1.2
Concatenation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.1.3
Nonces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.2
Les agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.3
Proprietes de securite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.4
Difficultes de la verification . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
1.5
14
2 Loutil de v
erification Hermes
II
16
2.1
16
2.2
Principe de loutil
17
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
M
ethode de V
erification
19
3 Pr
eliminaires
20
3.1
Termes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.2
Substitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
22
22
4.1.1
Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.1.2
Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.1.3
Modelisation de lintrus . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.1.4
Semantique operationnelle . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.1.5
4.2
Modelisation du secret . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
28
5 M
ethode de v
erification
33
5.1
Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
5.2
Stabilite de (B0 , S, B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
6 Algorithme
38
6.1
. . . . . . . . . . . . . . .
38
6.2
41
6.3
. . . . . . . . . . . . . . .
43
6.3.1
43
6.3.2
44
46
6.4
Conclusion
48
Larchitecture dHERMES . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4.1
Exemple de protocole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.2
32
6.1
Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
6.2
45
6.3
46
. . . . . . . . . . . . . . . . . . . .
Introduction
La securite des syst`emes dinformation est aujourdhui un domaine en pleine effervescence. En effet, avec le developpement des reseaux de communication comme Internet et
les reseaux de telephonie mobile, le besoin dassurer la confidentialite et lauthenticite des
messages echanges a considerablement augmente. Les protocoles cryptographiques sont des
r`egles dechange entre les points du reseau, ils permettent de securiser les communications.
Ils sont utilises par exemple dans les distributeurs de billets, les abonnements aux chanes de
television payantes, la telephonie mobile, le commerce electronique.
Aujourdhui, un des enjeux de la verification des protocoles cryptographiques est de se
doter de methodes systematiques et automatisables. On peut avancer le fait que la decouverte
dune faille en 1995 dans le protocole de Needham et Schroeder, qui etait connu depuis 17
ans et considere comme un protocole s
ur, a fait prendre conscience `a la communaute de
limportance quil y avait `a rechercher du cote de lautomatisation de la verification des
protocoles cryptographiques.
Contexte du Projet
Le present travail a ete realise au sein de lequipe DCS1 au laboratoire VERIMAG. Cree
en 1993, VERIMAG est une unite de recherche mixte du CNRS2 , de lINPG3 et de lUJF4 , et
fait partie de la federation IMAG5 . Elle sinteresse au developpement des techniques de validation et des methodes formelles pour la verification des syst`emes critiques. Les travaux qui
y sont menes maintiennent un juste equilibre entre la recherche fondamentale et la recherche
experimentale et appliquee et ce grace `a une cooperation internationale avec dautres centres
de recherche et `a des partenariats avec des industriels.
1
Cadre du projet
VERIMAG a developpe un outil de verification de la propriete du secret des protocoles
cryptographiques. Cet outil, appele Hermes, projette, par abstraction, lensemble des etats
(infini) dune execution de protocole ayant un nombre non-borne de participants sur un
ensemble detats fini. Hermes traite egalement le cas de messages de taille non-bornee en
eliminant les possibilites de divergence grace `a une notion de chapeaux [3]. Lalgorithme de
verification 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 nest pas complet. Hermes
permet cependant de montrer le secret de nombreux protocoles de [5].
Lapproche suivi dans Hermes, suppose que lintrus a le controle total du reseau. En effet,
lintrus est capable dintercepter tous les messages envoye sur le reseau, peut ecouter tous les
messages (sans les empecher darriver `a leurs destinations) et peux se deguiser sous une autre
identite. Nest pas toujours valable en cas reel, cette hypoth`ese peut engendrer des fausses
attaques lors de la verification de certains protocoles.
Cahier de charge
Le but de ce projet est detendre le mod`ele dHermes pour tenir compte des proprietes
dacc`es de chaque canal de communication utilise.
Dans ce projet, nous sommes appele, premi`erement, `a concevoir une syntaxe qui tient
compte des proprietes des canaux. Deuxi`emement, nous devons etablir une condition necessaire qui nous permettra de sassurer quun certain protocole et correct. Enfin, nous avons `a
developper un algorithme semantique de verification ainsi que lalgorithme symbolique correspondant.
Organisation du document
Ce projet est presentee en deux parties. Dans la premi`
ere partie, nous presentons dune
facon succincte et informelle les protocoles cryptographiques et loutil de verification Hermes.
Nous commencons dans le chapitre 1 par rappeler quelques definitions sur les primitives
cryptographiques. Ensuite, nous enumerons les proprietes de securite des protocoles. Enfin,
nous listons quelques approches de verification. Dans le chapitre 2, nous presentons bri`evement larchitecture dHermes et son principe de verification.
Dans la deuxi`
eme partie, nous presentons une approche pour verifier les protocoles
cryptographiques tout en tenant compte des proprietes dacc`es des canaux utilises.
Dans le chapitre 3, nous rappelons quelques definitions mathematiques et nous illustrons
differentes notations que nous utiliserons tout le long de cette partie. Le chapitre 4 presente
la modelisation et labstraction qui nous permettront de construire un mod`ele abstrait dun
protocole quelconque `a partir de son mod`ele concret. Dans le chapitre 5, nous introduisons la definition de stabilite dune transition de protocole et nous presentons une condition
suffisante qui assurera la correction dun protocole quelconque. Enfin, nous illustrons dans
le chapitre 6 lalgorithme de verification que nous avons developpe ainsi que sa version
symbolique (implementable).
10
Premi`
ere partie
Pr
esentation g
en
erale
11
Chapitre 1
1.1
1.1.1
Primitives cryptographiques
Chiffrement
Le chiffrement consiste `a transformer un message en un autre de mani`ere `a ne plus reconnatre le premier. Le dechiffrement est loperation inverse. On distingue deux types de
chiffrement : les chiffrements symetriques et les chiffrements asymetriques. Le chiffrement
symetrique utilise la meme cle pour chiffrer comme pour dechiffrer. Alors que le chiffrement
asymetrique utilise une cle de chiffrement differente de la cle de dechiffrement ; la premi`ere
est souvent divulguee sur le reseau afin que tout participant puisse chiffre mais la deuxi`eme
reste en general secr`ete pour quune seule personne (ou machine) puisse dechiffrer.
On pourrait penser que les principales attaques des protocoles cryptographiques reposent
sur le decryptage des messages chiffres. En fait, beaucoup dattaques reposent sur des principes beaucoup plus simples `a mettre en oeuvre comme linterception dun message et lenvoi
dun autre. dans le cadre de la verification des protocoles cryptographiques, une hypoth`ese
tr`es classique est celle du chiffrement parfait. Une telle hypoth`ese assure en particulier quil
est impossible de decrypter un message chiffre sans avoir la cle correspondante `a lalgorithme
de dechiffrement.
12
1.1.2
Concat
enation
1.1.3
Nonces
Dans les protocoles cryptographiques, les nonces sont des donnees engendrees aleatoirement. La probabilite dengendrer deux nonces identiques etant tr`es faible, on choisit souvent
de modeliser les nonces comme des donnees toutes distinctes.
1.2
Les agents
Les agents (appeles aussi participants ou principaux) testent et stockent des parties de
messages en fonction des r`egles du protocole. Ils peuvent etre honnetes ou malhonnetes (appeles souvent intrus).
Les actions de lintrus sont decrites par un ensemble succinct de r`egles o`
u apparaissent
la capacite de lintrus `a dechiffrer des messages lorsquil a linverse de la clef ou sa capacite
`a former de nouveaux messages. Souvent, on consid`ere que lintrus dispose dune capacite
de calcul et de memoire non bornee. Par consequence, on se contente de considerer un seul
intrus au lieu de plusieurs. En fait, cela revient au meme si chaque intrus dispose dun nombre
arbitraire didentites et des clefs privees correspondantes : ce que deux intrus pourraient
apprendre et calculer, un seul intrus peut le faire seul puisque ni sa capacite de calcul ni la
taille de sa memoire ne sont bornees.
1.3
Propri
et
es de s
ecurit
e
Nous appellerons ici propriete de securite toute propriete quun protocole cherche `a assurer. Le but de ce paragraphe est de faire une liste (non exhaustive) des proprietes que
peuvent tenter dassurer les protocoles. Les proprietes les plus courantes sont le secret et
lauthentification.
. Le secret , appele aussi confidentialite, consiste `a garder inconnue pour une tierce personne
1
une certaine donnee. Par exemple, pour le paiement par carte `a laide de terminaux
portables, lutilisateur doit confirmer son identite en entrant son code PIN `a quatre
chiffre qui est une donnee qui doit restee secr`ete.
1
Une definition formelle de cette propriete sera enoncee dans le paragraphe 4.1.5
13
. Lanonymat est le fait de ne pas etre identifiable parmi un ensemble de personnes. Par
exemple, lors dun vote, on ne doit pas pouvoir etablir de lien entre une personne et le
contenu de son bulletin, ceci ne pouvant etre garanti que sil y a au moins deux votes
differents pour lelection.
. Lintegrite signifie usuellement que les donnees ne peuvent pas etre corrompues.
. La non-repudiation consiste `a eviter que des participants qui envoient et recoivent des
messages puissent le nier plus tard ; on peut prendre lexemple du vote electronique o`
u
la non-repudiation assure que la personne qui a dej`a vote ne puisse pas pretendre le
contraire.
Dans la suite, nous nous interessons seulement `a la propriete du secret.
1.4
Difficult
es de la verification
1.5
Approches pour la v
erification
connu etant certainement loutil FDR de G. Lowe ayant notamment servi `a detecter lattaque sur le protocole Needham-Schroeder `a clefs publiques. Il est cependant tr`es difficile
de prouver la correction dun protocole, notamment `a cause du probl`eme de lexplosion de
lespace des etats ; en effet, les traces ayant une longueur non bornee `a cause du nombre arbitraire dinstances du protocole (correspondant au nombre de session), larbre des traces est
infini en profondeur. De plus, selon ce que lintrus peut envoyer, il est `a branchement infini.
De mani`ere generale, le probl`eme de la verification des protocoles cryptographiques est un
probl`eme indecidable.
Si lon souhaite travailler avec un nombre arbitraire de sessions, deux solutions sont couramment envisagees. La premi`ere consiste `a degager des sous-classes decidables. La deuxi`eme
solution consiste `a definir des methodes incompl`etes o`
u lon suppose quil ny a pas de nonce
(des abstraction seront alors utilisees pour les representer) et que le nombre dagents consideres est borne, cette derni`ere abstraction etant correcte. Ces methodes permettent une verification correcte mais incompl`ete au sens o`
u on peut trouver de fausses attaques. Toujours
en considerant un nombre arbitraire de sessions, des methodes correctes et compl`etes, mais
non terminantes, ont aussi ete developpees. Il existe aussi des methodes o`
u les protocoles
sont modelises dans la logique du premier ordre, ce qui permet de ramener le probl`eme de la
satisfiabilite dune propriete de securite `a celui de la satisfiabilite dun ensemble de clause.
15
Chapitre 2
Loutil de v
erification Hermes
Developpe par Verimag, HERMES est un outil dedie `a la verification de proprietes de
2.1
Architecture et caract
eristiques de loutil
HERMES prend en entree un fichier .cpl produit par le traducteur EVATRANS `a partir
dun fichier .eva. De cette description il extrait la propriete de secret et la specification du
protocole (module 1, figure 2.1). Il calcule une abstraction de la propriete et du protocole
(module 2) puis compl`ete lensemble des secrets et gen`ere des contraintes qui definissent les
conditions dans lesquelles le protocole peut etre utilise sans risque dinvalider la propriete
de secret (module 3). Loutil produit egalement des traces qui justifient lajout de chaque
nouveau secret et de chaque nouvelle contrainte. Ces traces correspondent `a des tentatives
dattaques.
Les contraintes calculees par le module 3 dHERMES sinterpr`etent comme des limites
imposees sur les connaissances de lIntrus au moment de debuter une session du protocole.
Ces contraintes sont etablies de mani`ere `a garantir que les messages echanges par des participants honnetes au cours dune session du protocole jouee en parall`ele avec un nombre
arbitraire dautres sessions, ne permettent pas `a lIntrus de decouvrir les secrets echanges par
les participants honnetes.
16
2.2
Principe de loutil
HERMES calcule des conditions suffisantes pour garantir que les messages echanges au
cours dune session du protocole ne peuvent pas etre exploites pour deduire des secrets. Loutil
est base sur la notion de messages capables de garder un secret, appeles messages protecteurs.
Il sagit des messages de la forme {X}K cest-`a-dire cryptes au moyen dune clef dont linverse
nest pas connu de lIntrus. Les messages protecteurs se deduisent des clefs declarees secr`etes
17
` lissue du calcul dont la terminaimessages dans lesquels les secrets ne sont pas proteges. A
son est assuree par un operateur de convergence forcee (widening), HERMES retourne un
ensemble de secrets S qui contient les secrets de depart et un ensemble de messages protecteurs H. Les resultats H et S definissent les conditions dans lesquelles le protocole peut
etre utilisee sans risque : la propriete de secret est garantie si, dans les messages initialement
connus de lIntrus, les secrets S sont proteges par les messages H. Autrement dit, une attaque se traduit generalement par le fait que lensemble de secrets complete par HERMES
contient des messages qui sont trivialement constructibles par lIntrus.
Du fait des approximations effectuees par loperateur de widening, Hermes ne peut pas
eviter le phenom`ene des fausses attaques. Il sagit des cas o`
u HERMES produit une trace
dune attaque abstraite qui ne correspond pas `a une attaque executable dans le mod`ele reel.
18
Deuxi`
eme partie
M
ethode de V
erification
19
Chapitre 3
Pr
eliminaires
Nous rappelons dans ce chapitre quelques notions mathematiques qui nous avons utilise
dans notre travail. Ce chapitre a egalement pour but de fixer les notations et la terminologie
utilisees dans cette partie.
Nous attirons lattention 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
fonction darite i, i N. Les fonctions darite 0 sont appeles les fonctions constantes. Soit
F = iN F i .
D
efinition 3.1 On note T (X , F) lensemble des termes construit avec F et X , disjoint de
On assimile les termes `a des arbres ordonnes etiquetes. Leurs feuilles sont des constantes
ou des variables et les noeuds internes sont des symboles fonctionnels dont larite correspond
au nombre de fils.
Les termes racines sont les termes sans variables. Nous notons T (F) lensemble des termes
racines sur F.
D
efinition 3.2 (position) Une position p dans un terme t est representee par la sequence
dentiers decrivant le chemin de la racine au sous-terme t|p quelle decrit.
La concatenation de deux sequences p et q est notee p q.
20
Une position p est au-dessus dune position q, p q, sil existe une position r telle que
q = p r.
D
efinition 3.3 Lensemble var(t) des variables dun terme t est defini inductivement par :
si t est une constante, var(t) = .
Par defaut, nous utiliserons les lettres (s, t...) pour les termes, les lettres (p, q...) pour les
positions et les lettres (x, y, z...) pour les variables.
3.2
Substitutions
D
efinition 3.4 Soit une fonction partielle de X vers T (F, X ) telle que le nombre de variables
si pour tout f F et pour tout t1 , ..., tn T (X , F), (f (t1 , ..., tn )) = f ((t1 ), ..., (tn )).
21
Chapitre 4
Mod
elisation des protocoles cryptographiques
Dans cette partie, nous decrirons comment nous modelisons les protocoles cryptographiques et nous donnerons une definition precise des proprietes que nous voulons montrer.
Nous commencons par decrire les messages qui peuvent etre inclus dans notre modelisation.
4.1.1
Messages
Lensemble des messages, note 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, appeles aussi messages atomiques, sont :
1. Les noms des principaux (agents) : Nous notons par P lensemble de tous les principaux.
2. Les nonces : N represente lensemble des nonces.
3. les cles : Nous notons par K lensemble des cles. Nous decrivons trois key constructors
pbk, pvk et smk de type :
(N P ) P K
o`
u pbk, pvk et smk sont respectivement les constructeurs des cles publiques, prives et
symetriques.
4. Les canaux : Nous notons par C lensemble des canaux.
Soit A = P N K C et F = A {encr, pair}. Dans la suite, par abus decriture,
22
Role terms
Pour decrire les transitions qui peuvent etre etablies par un agent dans une session dun
protocole cryptographique, nous introduisons les role terms. Soit XN lensemble des nonces,
Les Role terms sont les termes construits `a partir des variables dans X XN XP XC en
::
avec x1 , ..., xr XP , n XN , p XP , x X et c XC
4.1.2
Syntaxe
Pour decrire les protocoles cryptographiques, nous avons besoin de decrire les transitions
0,
que les agents peuvent executer. Dans notre notation, les transitions ont la forme c.t d.t
avec c et d des canaux de communication et t et t0 sont des termes verifiant var(t0 ) var(t).
Chaque session est param`etree par les agents qui interviennent, les frais nonces, les cles et
les canaux utilises. Une description de session est donnee par le quadruplet (P , trans, f resh,
new), avec :
riables dans XN .
. new associe `a chaque ensemble dagents un ensemble fini et disjoint de canaux variables
dans XC en specifiant les droits de chaque agent sur le canal.
Par exemple : new({p1 , ..., pn }) = {(cid , x, {wr1 , ..., wrn }, wrI )} cree un canal cid avec :
cid : (
identifiant du canal.
0 si le canal est permanent (commun `a toutes les sessions)
x=
1 si le canal est instancie par session
wrr : ledroit de lagent pr sur le canal cid
2
si
p
a
seulement
le
droit
d
e
crire
sur
le
canal
c
r
id
wrI : ledroit
1
wrI =
On notera par i le reseau public, autrement dit, le canal sur lequel tout les agents ont
le droit de lire et decrire.
Par abus decriture, on notera c new({p1 , ..., pn }), et parfois (c, x) new({p1 , ..., pn }),
B : {(A, NA , cA )}pbk(B)
B : {NB }pbk(B)
B cA
A : {(NA , NB )}pbk(A)
Lagent A joue le r
ole dinitiateur de la session et B est le repondeur. Selon la notation decrite
auparavant, la session peut etre decrite par la Figure 4.1, avec P = (p 1 , p2 ), f resh(p1 ) = {n},
tran(p1 ) :
tran(p2 ) :
p1
cA .{(n, z)}pbk(p1 )
i.{(p1 , n, cA )}pbk(p2 )
i.{z}pbk(p2 )
4.1.3
Mod
elisation de lintrus
Dans cette section, nous decrivons comment lintrus peux deduire des nouveaux messages
`a partir des messages quil a dej`a interceptes. Nous adoptons, comme dans le mod`ele de Dolev
Yao, un syst`eme deductif pour representer lintrus. Afin de decrire ce mod`ele, nous notons
E ` M la relation signifiant lintrus peu deduire le message M `a partir de lensemble E, o`
u
. Si m E alors E ` m.
. Si E ` m et E ` m alors E ` pair(m , m ).
. Si E ` m et E ` k K alors E ` encr(m, k).
. Si E ` pair(m , m ) alors E ` m et E ` m .
. Si E ` encr(m, k) et E ` k alors E ` m.
1
24
On definit ensuite par Ec la file dattente du canal c, pour tout canal c tel que c S ou
pour denoter que s apparat en m `a une position critique, cest `a dire, il existe p dom(m)
t nest deductible de E, cest `a dire, il nexiste aucune substitution : X T (F) tel que
E ` (t).
Nous utilisons aussi la notation E 6`c t pour denoter quaucun message deductible de E
ne contient une instance de t `a une position critique, cest `a dire, pour tout message m, si
E ` m alors (t) 6c m, pour toute substitution .
4.1.4
S
emantique op
erationnelle
Soit S = (P, tran, f resh, new) une description dune session donnee. Nous voulons decrire
le comportement du protocole decrit par S sans avoir des contraintes sur le nombre de sessions
ou de participants. Nous definissons ainsi les transitions instanciees et les sessions instanciees.
Pour identifier les sessions, nous utilisons des entiers naturels. Ensuite, nous fixons chaque
instance de session par une paire (i, ), o`
u i est son identificateur et est un vecteur de
principaux qui instancie les principaux-variables p1 , ..., pr . Ainsi, nous introduisons lensemble
des instances de sessions Inst = N P r .
25
Instances de sessions
Etant
donne (i, ) Inst, nous generons une instance de session, note (S)i , en applicant
les transformations suivantes pour tous les role terms qui apparaissent en S :
i, ,
Nous notons par ti le terme obtenu de t apr`es avoir appliquer les transformations citees
ci-dessus. Ainsi,la (i, )-instance de la transition c.t c0 .t0 (en supposant que c est un canal
permanent et que c0 est un canal instancie par session) est C .ti (C 0 )i, .(t0 )i .
Dans la suite, nous noterons par trani (p) la liste des transitions (i, )-instanciees obtenues
de tran(p).
Configuration et transitions
Pour definir les configurations qui peuvent etre engendrees par une execution du protocole, nous avons besoin de definir letat de chaque instance de session.
Letat dune instance de session est donne par la paire (, E, E), o`
u la fonction associe
Une configuration dun protocol defini par S est donnee par la paire (, E, E), o`
u dom()
est lensemble des sessions creees dans la configuration, (i) est letat de la session i, E est
lensemble des messages interceptes par lintrus et E est lensemble des files dattentes des
Une semantique operationnelle dun protocole est definie par les transitions appliquees
sur les configurations. Il existe deux types de transitions :
1. des transitions qui cr
eent des nouvelles sessions
On definit CH = {c | p1 , ..., pn , (c, 1) new({p1 , ..., pn })} lensemble des canaux ins-
i 6 dom()
(, E, {Ec1 , ..., Ecn }) ([i 7 (, trani )], E 0 , {Ec1 , ..., Ecn } {Eci |c CH})
Avec :
26
E 0 = E {ci |c CH, (c, 1, {wr1 , ..., wrn , 1}, 1) new({p1 , ..., pr })}
{
ci |c CH, (c, 1, {wr1 , ..., wrn , 1}, 2) new({p1 , ..., pr })}
{ci , ci |c CH, (c, 1, {wr1 , ..., wrn , 1}, 3) new({p1 , ..., pr })}
et Eci = c CH
2. des transitions qui sont provoqu
es par dautres transitions dans la m
eme
session.
(, E, {Ec1 , ..., Ecn }) ( 0 , E 0 , {Ec0 1 , ..., Ec0 n })
(, E, {Ec1 , ..., Ecn }) ([i 7 (, 0 )], E 0 , {Ec0 1 , ..., Ec0 n })
La relation decrit le changement de letat dune session suite `a une transition effectue
note par f irst(Eci ) le premier element de la file Eci , alors, pour toute substitution
Ec0 j =
E {(t0 )}
si cj k(E)
Ecj : (t0 )
si cj 6 k(E)
Ec j
sinon
sinon
messages envoyes sur un canal c tel que c k(E). De plus, nous supposons que lintrus ne
peut intercepter que les messages envoyes sur les canaux publiques, cest `a dire, tout canal
c tel que {c, c} k(E) ; autrement, sur ce type de canal, tout message recu est envoye par
lintrus, et tout message envoye est envoye `a lintrus. Pour les autres canaux, on suppose que
les messages sont envoyes vers leurs files dattente correspondantes et que les messages sont
recus via les memes files dattentes.
4.1.5
Mod
elisation du secret
Le but de la propriete de secret est que certains messages indiques, nommes secrets, ne
devraient pas etre publics. En effet, un secret est dit public sil est deductible `a partir de
lensemble de messages interceptes par lintrus. Dans notre modelisation, un secret est defini
par un role term. Ainsi, on associe `a chaque instance de session un secret que nous voulons
prouver.
Soit S = (P, tran, f resh, new) une description donnee de session et soit t un role term
C(E, , i)
4.2
Dans cette section, nous fixons un protocole cryptographique arbitraire decrit par S =
(P, tran, f resh, new) et un secret s. Pour pouvoir montrer que s est un secret, nous rencontrons les probl`emes suivants :
1. La definition de notre probl`eme de verification est un probl`eme datteignabilite quantifie
universellement sur tous les (i, ) Inst.
2. Il nexiste aucune limite sur le nombre des sessions qui peuvent etre creees.
3. Il nexiste aucune limite sur la taille des messages qui peuvent etre echanges pendant
lexecution du protocol.
Dans cette section, nous presentons une abstraction qui permet de resoudre les deux
premiers probl`emes. Nous procedons en deux etapes. Premi`erement, nous presentons une
abstraction param`etree par (i0 , 0 ) Inst. Ensuite, nous montrons que le syst`eme abstrait
quon obtient ne depend pas du choix de (i0 , 0 ). Lidee fondamentale de labstraction est
de la session (i0 , 0 ),
et A joue le role de p2 ,
28
A ou B,
A ou B,
A ou B,
Lidentification des sessions entrane aussi lidentification des agents, des nonces, des cles
et des canaux utilises dans ces sessions. Nous obtenons ainsi un syst`eme o`
u nous avons un
nombre fini dagents, de nonces, de cles et de canaux mais un nombre illimite de sessions.
Pour resoudre cette ambigute, nous modelisons un protocole cryptographique comme etant
un ensemble de transitions qui peuvent etre executees dans nimporte quel ordre et nimporte
quel nombre de fois. Le nombre et la taille des messages sont laisses illimites.
De plus, nous nous contentons de deux agents, un agent honnete A et un agent malhonnete
I. La preuve que cette abstraction est correcte est illustre dans [6].
Nous presentons maintenant cette idee formellement. Soit (i0 , 0 ) inst une instance
de session donnee. Pour la suite, nous notons, pour un object semantique concret x, x ] son
abstraction dans linstance de session (i0 , 0 ).
Nous commencons par definir les domaines abstraits N] = {>, } et P ] = {A, I} et les
abstractions :
Nous etendons labstraction des agents `a un vecteur des agents en considerant labstraction
des composantes.
Pour les cles, nous notons K] lensemble des cles abstraites, il contient la cle KI et les cles
dans P(p]1 , ..., p]l ) avec p]1 , ..., p]l P ] et p]j 6= I, pour tout j {1, ..., l}. Labstraction dune
cle k(p1 , ..., pn ) est defini par :
k ] (p1 , ..., pn ) =
si p]i 6= I, i = 1, ..., n
sinon
. i, si lintrus peut ecrire sur le canal et peut intercepter tous les messages envoyes dessus.
29
. C, si i = > et = , et
. C , sinon.
]
Exemple 4.3 Pour lexemple de protocole 4.1, en plus du canal public i, new({p 1 , p2 }) =
(c1 , 1, {3, 0}, 0) cree un nouveau canal C1 . Labstraction des canaux est illustre ci dessous :
C ] = {C1 , C1A,A , C1I,A , C1A,I , i}
Les droits initiales de chaque agent sont illustres dans le tableau suivant :
C1 CA,A
CA,I
CI,A
1
1
1
Il nous reste donc la definition de labstraction des nonces. Labstraction du nonce N i, , note
(N i, )] , est :
. N , si i = > et
. N , sinon.
]
= 0 , et
Exemple 4.4 Pour le protocole decrit dans la figure4.1, nous obtenons lensemble suivant
des nonces abstraits :
Labstraction dun terme t, note t] , est obtenu par extension homomorphique des abstractions des agents, des nonces, des cles et des canaux. Pour un ensemble T de termes, soit
T ] = {t] |t T }.
Lensemble T (F)] de messages abstraits est lensemble des messages sur A] et les construc-
Nous sommes prets maintenant pour definir labstraction dun protocole cryptographique
u m T (F)] et de
representee par une paire (C, R) de contraintes de la forme E 6`c m, o`
transitions abstraites. Nous appelons (C, R) un protocole abstrait, et R r`egles abstraites.
Labstraction S ] dun protocole cryptographique decrit par S est definie par :
]
. C (E) = {E 6` m |E 6` m C(E, , i )} et
. lensemble R des transitions abstraites c .t
0
] ]
1 1
Si .
si C(E0 ) et E0 E alors E 6` s.
30
Pour etablir le lien entre un protocole cryptographique et son abstraction, nous avons
besoin detablir un lien entre la deduction des messages concr`etes et de celle de leurs abstractions par lintrus. Nous pouvons montrer, par une recurrence structurelle sur m, le lemme
suivant :
Lemme 4.1 Soit E un ensemble de messages et E ] = {m] |m E}. Alors, E ` m implique
Nous pouvons aussi montrer le lemme suivant qui etablie une relation entre linstance
dun terme concret et celle de son abstraction :
Lemme 4.2 Soit t1 et t2 deux termes et soit la substitution : X T (F). Ainsi, (t1 ) =
En utilisant les lemmes 4.1 et 4.2, nous pouvons montrer que (C ] , R) est une abstraction
de S tel que labstraction de (, E, E) est (E ] , E ] ) avec E ] = {Ec]1 , ..., Ec]n }.
Proposition 4.1 Soit (1 , E1 , E1 ) et (2 , E2 , E2 ) deux configurations concr`etes. Alors,
(1 , E1 , E1 ) (2 , E2 , E2 ) implique E1] R E2] et E1] R E2]
En plus, si C(E) est vrai alors C ] (E ] ) est aussi vrai.
En exploitant la proposition 4.1 et le fait que (C ] , R) ne depend pas de (i0 , 0 ), cest `
a
dire, nous avons les memes contraintes et les meme transitions pour tout (i, ) Inst, nous
montrons le theor`eme suivant :
Th
eor`
eme 4.1 Le protocole defini par S satisfait la propriete de confidentialite definie par
Exemple 4.5 Dans la figure 4.2, nous illustrons les r`egles abstraites du protocole decrit dans
la figure4.1.
31
= 0
= (A, A)
= (A, I)
= (I, A)
A
i.{(A, NA , C1 )}pbk(A)
A
i.{(A, N AA , C1AA ))}pbk(A)
A
A
i.{(A, N AI , C1AI ))}pbk(I)
A
i.{(A, Y, W )}pbk(A)
W.{(Y, NB )}pbk(A)
i.{(A, Y, W )}pbk(A)
W.{(Y, NBAA )}pbk(A)
i.{(I, Y, W )}pbk(A)
W.{(Y, NBIA )}pbk(I)
C1 .{(NA , Z)}pbk(A)
i.{Z}pbk(A)
32
Chapitre 5
M
ethode de v
erification
Dans ce chapitre, nous designons par P = (C, R) un protocole donne et par S un ensemble
de secrets.
Lidee fondamentale de notre methode est de calculer lensemble des messages chiffres qui
preservent les secrets. Comme le montre lexemple du protocole de Needham-Schroeder, le
chiffrement nest pas toujours capable de proteger un secret. En effet, un agent honnete peut
aider involentairement lintrus `a deduire un certain secret.
Pour pouvoir developper cette idee formellement, nous avons besoin de certaines definitions que nous allons introduire dans la premi`ere section, ensuite, nous annoncerons une
condition qui nous permettra de conclure si un certain protocole est correct ou non.
5.1
D
efinitions
D
efinition 5.1 (safe keys) Nous notons par K K lensemble des safe-keys, c-a-d les cles
Soit K 1 = {k 1 |k K}.
D
efinition 5.2 (K-guard) Nous appelons K-guard tout message {m}k T (F) o`
u k est un
safe-key.
D
efinition 5.3 Pour tout canal c sur lequel lintrus ne peux pas lire ou ne peux pas ecrire, on
definit par Bc lensemble des mauvais messages tel que leur circulation sur le canal c permet
D
efinition 5.4 (safe-breakers) Nous appelons safe-breaker toute paire ({m}k , p) o`
u {m}k
de {m}k .
Intuitivement, on note par le safe-breaker ({m}k , p) que lintrus, pour le cas specifique
{m}k , peut depasser la protection de la cle k et obtenir le sub-term `a la position p. Dans la
D
efinition 5.5 Soit m et s deux messages tel que m 6= s et soit B0 un ensemble de safe-
note mhB0 iK s, le predicat qui verifie les conditions suivantes, suivant la forme de m :
0 K
0 K
0 K
protection de la cle k. Ainsi, nous avons besoin que le secret s soit protege dans tout
Cette definition est facilement etendu aux ensemble de messages : Soit M et S deux en-
La definition des messages insensibles `a un saf e-breaker ne tiens pas compte du pouvoir de
composition et de decomposition de lintrus. Ainsi, nous definissons la fermeture par rapport
`a la composition dun terme. La fermeture dun ensemble S permet dassurer que lintrus est
incapable de deduire un message dans S en utilisant uniquement les lois de composition.
lensemble Mi {m}Mi M .
D
efinition 5.6 (fermeture) Nous definissons c(m) lensemble de fermeture faible associe
au message m :
c(m1 ) c(m2 )
c(m) = m
c(m0 ) c(k)
si m = (m1 , m2 )
si m = {m0 }k
si m est atomique
34
Lemme 5.1 Soit S et E deux ensembles de messages tel que S E = . Si S est ferme par
rapport a
` la composition, alors, aucun message de S ne peut etre deduit de E en utilisant
Pour assurer que lintrus est incapable de deduire un message dans S en utilisant unique-
D
efinition 5.7 (sub-safe-breakers) Soit (b, p) un safe-breaker. On note par ssb(b,p) lensemble des sub-safe-breakers de (b,p). Les sub-safe-breakers de (b,p) sont construits a
` partir
des K-guards de b dont la position est au dessus de p.
o
n
1
ssb(b, p) = b|q , q p q p et b|q est un K-guard
Maintenant, nous sommes prets `a illustrer les conditions qui garantissent la stabilite du
5.2
Stabilit
e de (B0 , S, B)
D
efinition 5.8 (well-formed) Le triplet (B0 , S, B) est dit well-formed, si les conditions sui-
un secret protege par une cle dans K. La condition (3) garantit que les lintrus ne peut pas
ensemble de secrets. Si (B0 , S, B) est well-formed et EhB0 iK S est vrai, alors, E ` m implique
mhB0 iK S.
35
D
efinition 5.9 (Stabilit
e) Soit r = p.tp q.tq une r`egle dans R. (B0 , S, B) est r-stable si
(tp ) 6 Bp et
implique
(tq ) 6 Bq et
Autrement,
p S (tp )hB0 iK S (tp ) 6 Bp q S (tq )hB0 iK S (tq ) 6 Bc
n
1
(E0 , E0 )
(En , En )
(E1 , E1 )...(En1 , En1 )
(Ecn , Bc ) En B.
. si p 6 S
Bp = .
. si p 6 S , E
0
i1
p
i1
p ,
. si q 6 S :
si q 6 S :
. si q S :
37
Chapitre 6
Algorithme
Dans ce chapitre, nous developpons un algorithme qui calcule un triplet stable (B 00 , S 0 , B 0 ).
Dans un premier temps, nous developpons une version semantique de lalgorithme. Ensuite,
nous definissons une representation symbolique des saf e-breakers et des bad-messages et
nous developpons lalgorithme symbolique correspondant.
6.1
Version s
emantique de lalgorithme de v
erification
Dans la figure 6.1, nous representons un algorithme qui calcule un triplet (B 0 , S, B) well-
f ormed et R-stable.
Lalgorithme utilise une fonction Closure qui associe `a un ensemble de messages sa fer-
meture par rapport `a la composition (suivant la definition 5.6). Comme entrees, lalgorithme
recoit un ensemble de r`egles R, un ensemble de secrets S, un ensemble de saf e-keys K, un
un ensemble plus grand de secrets S 0 , un ensemble plus grand de saf e-breakers B00 et un
ensemble plus grand de bad-messages B 0
r`egle p.tp c.tc dans R. Sil existe une substitution : X T (F) tel que un secret s nest
pas protege dans (tc ) (cest `a dire s est sensible `a B0 dans (tc ) si lintrus peut lire sur le
canal c ou (tc ) est un bad-message su canal c) alors la protection du secret nest pas efficace
`a la premisse. Ainsi, si lintrus `a le droit decrire sur le canal p, alors, chaque K-guard de (t p )
qui prot`ege le secret s nest pas efficace et doit etre ajoute `a lensemble des saf e-breakers.
En plus, si lintrus nas pas le droit soit de lire soit decrire sur le canal p, le message (t p )
doit etre ajoute `a lensemble des bad-messages du canal p. La proposition 6.1 resume les
proprietes de lalgorithme.
La proposition 6.1 resume les propriete de lalgorithme 6.1.
38
output :B00 , S 0 , B 0
B00 := B0 ; S 0 := S; B 0 := B
K 1 = {k 1 |k K}; S 0 := S 0 K 1
repeat
S 0 := Closure(S 0 ); B0 := B00 ; S = S 0 ; B := B 0 ;
For each p.tp c.tc R
if (c 6 S)
if (tc |x c tp )
n
m|r = m|r.0 ; tc |x = tp |q ; r q ;
endif
endif
if (
p S)or(p S)
Bp = Bp DP ;
if (
p 6 S)
endif
od
endif
if (c S)or(
c S)
DS := : X T (F)(tc ) Bc
DP := {(tp )| DS};
if (
p S)or(p S)
Bp = Bp DP ;
if (
p 6 S)
endif
od
until(B00 , S 0 , B 0 ) = (B0 , S , B )
39
Bc B 0 tel que c 6 S.
2. B B 0 :
3. Bc S 0 Bc B 0 tel que c 6 S :
` la derni`ere iteration de lalgorithme S 0 = [S 0 ]n = [S 0 ]n1 .
A
. si c 6 S et ((t )hB i
q
0
0 K S)
. si p 6 S : puisque [B ]
0
0 n
. si p S ou p S : puisque [B ]
0
p n
p.
. si (t ) B
c
0
c
. si p 6 S : puisque [S ]
0
dans (tp ).
. si p S ou p S : puisque [B ]
0
p n
p.
On obtient ainsi :
(
(
si p 6 S et ((tp )hB0 iK S) ou
si q 6 S et ((tq )hB0 iK S) ou
.
alors,
Si
(tp ) Bp
(tq ) Bq
40
par rapport a
` la
composition.
. K SS
. On a dej`a montre que B S B B tel que c 6 S.
. Dapr`es meme la construction de lensemble B , on verifie que (b, p) B (b , p )
1
ssb(b, p) b S ou (b0 , p0 ) B0 .
(Ec0 , Bc ) E0 B,
6.2
Repr
esentation symbolique des saf e-breakers
Nous developpons ici une version effective de notre algorithme semantique. Eventuellement, nous avons besoin de representer un ensemble infini de saf e-breakers et de badmessages. Pour resoudre ce probl`eme, nous introduisons une representation symbolique de
saf e-breakers : breaking-pattern est une paire ({t}k , p) o`
u {t}k est un terme de X et p est
une position critique de {t}k . un secret s est insensitive `a un breaking-pattern (b, p) si il est
Dn
oE
s
(b), p : X T (F)
K
41
super terms. Notons que tout terme de T (X , F) est aussi un super term de ST (X , F). La
difference entre les deux est que les super terms utilisent la fonction Sup.
Intuitivement, Sup(t) represente tous les termes qui contiennent t comme sub-term.
D
efinition 6.1 Etant
donne un super term st, lensemble de tout les termes correspondants,
note JstK, est defini comme suit :
JstK = {st} si st est constant ou variable.
D
efinition 6.2 Etant
donne un super term st et une position critique p, nous notons par
J(st, p)K lensemble des breaking-terms associe au breaking-super term (st, p). Pour les breaking-
J(Sup(st), p)K =
{(t, )| t JSup(st)K}
D
efinition 6.3 Une representation symbolique SR est un triplet (BP, S, {BP c }) avec :
42
. BP est un ensemble fini de breaking-patterns qui represente lensemble des saf e-breakers
B0 .
du canal c Bc .
6.3
6.3.1
Pour calculer les substitutions dangereuses induits par une r`egle p.tp c.tc , nous distin-
1. le calcul des substitutions dangereuses qui engendrent des bad-patterns sur le canal c
et
2. le calcul des substitutions dangereuses qui engendrent la revelation dun secret si lintrus
est capable de lire sur le canal c.
le calcul des substitutions dangereuses qui engendrent des bad-patterns sur le
canal c
Dans ce cas, les dangereuses substitutions sont les substitutions qui unifient tc avec des
bad-patterns de BP c . Formellement DS = { | b BP c tel que (tc ) = (b)}
le calcul des substitutions dangereuses qui engendrent la r
ev
elation dun secret
si lintrus est capable de lire sur le canal c
nous representons ici un algorithme qui calcule les substitutions dangereuses induits par
une r`egle p.tp c.tc et une position p.
Soit K lensemble fixe des saf e-keys et BP lensemble des breaking-patterns. Et soit PP
lensemble des position pi qui prec`edent p tel que tc |pi est un K-guard.
Nous definissons ensuite la fonction qui calcules tous les unificateurs entre les breaking-
patterns de BP et (tc , p) qui annule toutes les protecting-positions. formellement les substitutions dangereuses sont les unificateurs qui satisfient :
^
pi PP
(tc |pi , p1
i p) = (bi , qi )
43
ou (bi , qi ) BP
{| DS}
si PP =
(BP, PP := PP\{pi }, DS :=
j DS
pi PP
O`
u 1i,j , ..., ni,ji,j sont les unifacteurs qui resultent de lunification de j (tc |pi , p1
i p) avec
6.3.2
Avant dobtenir notre algorithme symbolique nous avons besoin de resoudre le probl`eme
suivant : Etant
donne deux super terms u et t, nous devons determiner lensemble U(u, t)
de substitutions tel quil existe des termes u0 JuK et t0 JtK tel que (u0 ) = (t0 ). Nous
voulons chercher les mgu qui unifient des termes dans JuK et JtK.
D
efinition 6.4 Etant
donne deux super terms u et t, on appelle maximal general unifier pour
u et t toute substitution : X PT (X , F) qui satisfait les conditions suivantes :
1. est un mgu des termes u0 JuK et t0 JtK.
2. Pour toute substitution 0 qui unifie des termes de JuK et JtK, 0 nest pas plus general
que , c-`
a-d, il nexiste aucune substitution tel que = 0
paires de super terms. Dans la suite, tout ensemble E = {ui = ti |i {1, ..., n}} sera appele
Dans cette section, nous voulons developper un algorithme qui permet de determiner U(E)
pour tout gep E. Nous avons besoin detendre lensemble des r`egles dunfication uselles pour
44
Delete
Decompose
Orient
Eliminate
Clash
{t = t} E
{t = x} E
{x = t} E
{x = t} E[t/x]
Occurs-Check {x = t} E
U = si x 6= t et x var(t)
.m
.m
.m
1
2
3
U(E) =
1in
45
U(Ei ).
Splitting-var
{t0 = Sup(t), t0 = t} E
Sup-var-const
{Sup(x) = Sup(a)} E
Sup-const
{Sup(a) = Sup(b)} E
Sup-var
{Sup(x) = Sup(y)} E
{x = t0 } E, t0 f (t1 , ..., tn )
{a = t0 } E, t0 f (t1 , ..., tn )
{t0 = t} E
{x = Sup(a)} E
si
F (i) =
i2
E
sinon
[
{a = b} E
F (i) =
si
i2
E
sinon
{x = Sup(y)} E, {Sup(x) = y} E
[
F (i) =
si
i2
E
sinon
6.4
Dans cette section, nous presentons une technique qui nous assure la terminaison de notre
algorithme symbolique de verification. En contre partie, cette technique peut, eventuellement,
causer des fausses attaques.
D
efinition 6.5 Une sequence (ti , pi )i0 de breaking-patterns est dite increaising at une
sequence (qi )i0 de positions, si les conditions suivantes sont verifiees pour tout i 0 :
1. qi dom(ti ) et qi qi+1 ,
2. ti [z/q0 ] = t0 [z/q0 ], o`
u z est une variable frache et
3. (ti |qi , qi1 pi ) = (t0 |q0 , q01 p0 ).
De la meme mani`ere, une sequence (ti )i0 de bad-patterns est dite increaising at une
sequence (qi )i0 de positions, si les conditions suivantes sont verifiees pour tout i 0 :
1. qi dom(ti ) et qi qi+1 ,
2. ti [z/q0 ] = t0 [z/q0 ], o`
u z est une variable frache et
3. ti |qi = t0 |q0 .
Lidee principale de notre methode de terminaison forcee de lalgorithme symbolique est
decrite dans la proposition 6.2.
46
i0
J(ti , pi )K
i<j
j0
J(ti , pi )K
i0
Jti K
i<j
j0
q
y
Jti K tj [Sup(tj |qj )/qj ]
47
Conclusion
la modelisation des protocoles et de leurs proprietes est aujourdhui un sujet de recherche
majeur : on cherche, de plus en plus, `a avoir un mod`ele plus proche de la realite. En effet,
lomission de certaines specifications reelles peut causer eventuellement des fausses attaques.
Le but de ce projet etait detendre loutil de verification Hermes pour quil tient en
compte les droits dacc`es des canaux de communication. Pour ce faire, nous avons ete amenes
`a modifier la modelisation qui etait utilisee dans Hermes. Puis, nous avons etabli une nouvelle
condition suffisante de correction des protocoles cryptographiques qui nous a permis enfin
de developper un nouveau algorithme de verification.
Il est indispensable de noter ici que nous avons rencontre un probl`eme dans limplementation de lalgorithme obtenu. En effet, le language EVA, qui est utilise comme un language de
specification des protocoles cryptographiques pour Hermes, ne permet pas dans sa version actuelle lintroduction des droits dacc`es des canaux. Actuellement, nous etudions la possibilite
dimplementer notre algorithme en mode semi-automatique -cest `a dire introduire les r`egles
abstraites du protocole `a verifier comme entree au lieu de la specification de ce protocole.
Nous etudions aussi la possibilite de travailler sur un nouveau language de specification.
48
Bibliographie
[1] L. Bozga, Y. Lakhnech, and M. Perin. Loutil de verification HERMES. Technical
report, Verimag, mai 2002. Rapport technique EVA.
[2] L. Bozga, Y. Lakhnech, and M. Perin. HERMES : An Automatic Tool for Verification
of Secrecy in Security Protocols. CAV03, 2003.
[3] L. Bozga, Y. Lakhnech, and M. Perin. Pattern-based Abstraction for verifying Secrecy
in Protocols. TACAS03, 2003.
[4] Yannick Chevalier. Resolution de probl`emes daccessibilite pour la compilation et la validation de protocoles cryptographiques. PhD thesis, universite Henri Poincare, Nancy,
Decmbre 2003.
[5] J.
Clark
and
J.
Jacob.
A survey of authentication protocol literature.
[6] H. Comon-Lundh and V. Cortier. Security properties : Two agents are sufficient. Technical report, LSV, 2002.
[7] Veronique Cortier. Verification automatique des protocoles cryptographiques. PhD the
sis, lEcole
Normale Superieure de Cachan, Mars 2003.
[8] Jean Goubault-Larrecq. Verification de protocoles cryptographiques : la logique a
` la
rescousse !. SECI02, septembre 2002.
[9] Muriel Roger. Raffinements de la resolution et verification de protocoles cryptogra
phiques. PhD thesis, lEcole
Normale Superieure de Cachan, Octobre 2003.
49