• Aucun résultat trouvé

Nous ´etendons le mod`ele d´efini dans [89] afin de g´erer les listes param´etr´ees par leur longueur. Ces listes sont construites par le biais d’un nouvel op´erateur not´e mpair( , ). L’intuition derri`ere cet op´erateur est de g´en´erer une liste de messages `a partir d’un pattern et d’une variable d’indice dont on fait varier la valeur.

5.4.1 Termes, taggage et indices

Soit X l’ensemble des variables repr´esent´ees par des lettres majuscules. Soit I l’ensemble d´enombrable de variables d’indices. Soit−→X l’ensemble, disjoint de X , de symboles repr´esent´es par des lettres majuscules sur-fl´ech´ees. Nous d´esignons par XI = {Yi|−→Y ∈ −→X et i ∈ I} l’en- semble d´enombrable de variables indic´ees. Notons ici que si Yi∈ XI, alors Y /∈ X .

D’une mani`ere similaire, soient C et −→C les deux ensembles de symboles repr´esent´es par des lettres minuscules sur-fl´ech´ees. Soit CI = {ci| −→c ∈

− →

C et i ∈ I} . Les ´el´ements de C et CI sont appel´es des constantes. Les termes peuvent ˆetre tagu´es (optionnellement) par un indice. Pour cela, nous r´eservons le symbole −→e ∈−→C uniquement pour les op´erations de taggage. Ainsi, un terme est un ´el´ement de T dans le langage suivant :

Ts = {T }pT | {T }sT | h(T ) | hT , T i | mpair(I, T ) | X | XI| C | CI\{ei| i ∈ I} T = [ei, Ts] | Ts avec i ∈ I

Tsest par d´efinition l’ensemble des termes non tagu´es. Les op´erateurs { }pet { }srepr´esentent respectivement les chiffrements asym´etriques et sym´etriques. L’op´erateur h , i repr´esente la concat´enation et h est une fonction de hachage. Notons H l’ensemble de fonctions de hachage. Quant `a l’op´erateur mpair(i, t), il repr´esente la liste (ou tuple) de termes construite `a partir d’une forme commune t et ceci en it´erant l’indice i parmi les entiers. La fonction de rempla- cement (voir D´efinition 5.4.1.3) d´efinit la s´emantique de cet op´erateur, i.e. son interpr´etation dans le mod`ele standard de Dolev-Yao. Cette fonction remplace tout mpair par une s´equence d’applications de pair. Le nombre de telles applications est donn´e comme param`etre (e) `a la fonction. Cet entier repr´esente la longueur commune des listes des termes mod´elis´ees par tout mpair(, ).

Avant de donner la fonction de remplacement dans D´efinition 5.4.1.3, nous d´efinissons deux types d’op´erations d’indices : les remplacements utilis´es aussi dans les r`egles d’inf´erence sur les contraintes, et les substitutions utilis´ees pour la d´efinition des solutions des contraintes (voir Section 5.7).

D´efinition 5.4.1.1 Remplacement d’indices δ, substitution d’indices τ .

Un remplacement d’indices δ (resp. une substitution d’indices τ ) est une application de I `a I (resp. aux entiers non n´egatives) qui est ´etendue aux variables et constantes indic´ees par : δ(Xi) = Xδ(i) et δ(ci) = cδ(i) (resp. τ (Xi) = Xτ (i) et τ (ci) = cτ (i)). Le remplacement ainsi que la substitution d’indices sont aussi ´etendus par homomorphisme aux termes et aux ensembles de termes.

Nous utilisons aussi les notations δi,j (resp. τi,j) pour d´esigner le remplacement (resp. la substi- tution) de i ∈ I par j ∈ I (resp. j ∈N). Nous utilisons aussi δk

i,j pour d´esigner le remplacement de i ∈ I par j ∈ I et les autres indices diff´erents de i par k ∈ I. Nous ´etendons cette nota- tion aux ensembles d’indices avec la notion de δQ,jk pour un ensemble Q ⊆ I pour d´esigner le remplacement de tout indice de Q par j et tout autre ´el´ement n’appartenant pas `a Q par k.

5.4. Mod`ele de protocole 127 Exemple 5.4.1.2 Remplacement, substitution d’indices.

Soient i, j, k, l, m ∈ I, ci, cj ∈ CI et Xi ∈ XI. Nous donnons ci-dessous quelques exemples d’application de remplacement et de substitution d’indices.

δi,j(ci) = cj τi,2(ci) = c2

τi,kl ({Xi}cj) = {Xk}cl

τl

{i,j},k(Xi) = Xk

Nous d´efinissons maintenant la fonction de remplacement comme suit : D´efinition 5.4.1.3 Remplacement de termes.

Soit TDY l’ensemble des termes sans aucun mpair( , ). ´Etant donn´e un entier e, la fonction de remplacement de termes −e de T `a T

DY est d´efinie ci-dessous : mpair(i, t)e = hτi,1(t) e , .., τi,e(t) e i f (s1, .., sk) e

= f (s1e, .., ske), pour tout f 6= mpair

Nous d´esignons par la signature G l’ensemble des op´erateurs sur Ts. Pour simplifier la syntaxe, dans tout ce qui suit, nous ´ecrivons ti au lieu de [ei, t], et nous l’appelons terme tagu´e. Nous omettons aussi le tag i pour le terme ti quand le tag i n’est pas relevant `a la discussion. Nous d´esignons par Tg l’ensemble de termes clos, i.e. tout terme t ∈ T sans variable dans X ou XI et sans symbole mpair. Les termes clos seront utilis´es pour d´ecrire les messages circulant dans une ex´ecution du protocole. Nous les appelons aussi des messages. ´Etant donn´e un terme t, nous d´enotons par V ar(t) (resp. Cons(t) ) l’ensemble de variables (resp. constantes) existant dans t. Nous d´enotons par Atoms(t) l’ensemble V ar(t) ∪ Cons(t).

Afin de repr´esenter une liste de termes, nous it´erons l’op´erateur de concat´enation h , i. Par exemple, pour repr´esenter a, b, c, d nous pouvons utiliser le terme ha, hb, hc, diii. Dans ce cas, nous le notons ha, b, c, di. Cependant, nous ne supposons aucune propri´et´e d’associativit´e de l’op´erateur de concat´enation.

Exemple 5.4.1.4 Le protocole Asokan-Ginzboorg synchrone.

Nous revenons `a la version synchrone du protocole Asokan-Ginzboorg pr´esent´e par l’Exemple 5.3.3.1. Nous mod´elisons ce protocole dans notre mod`ele en rempla¸cant toute liste hm1, .., mni de mes- sages, ayant la mˆeme forme (structure), par le message mpair(i, mi).

1. L −→ S : mpair(i, hl, {e}pi) 2. S −→ L : mpair(i, hai, {hri, sii}ei) 3. L −→ S : mpair(i, {hmpair(j, sj), s′i}ri)

4. S −→ L : mpair(i, hai, {hsi, h(hmpair(k, sk), s′i)i}f (hmpair(k,sk),s′i)i)

Une substitution σ assigne des termes aux variables. Une substitution close assigne des termes clos aux variables. L’application de σ pour un terme t est not´ee tσ. Ces notations sont ´etendues aux ensembles de termes E d’une mani`ere standard : Eσ = {tσ|t ∈ E}. Nous d´esignons par ST ermes(t) l’ensemble de sous-termes de t et par dpth(t) la profondeur de t. Ces deux ensembles sont d´efinis r´ecursivement comme suit : Si t est une variable ou constante alors ST ermes(t) = {t} et dpth(t) = 1. Si t = f (t1, .., tn) ou t = f (t1, .., tn)i avec t ∈ G, alors ST ermes(t) = {t} ∪ ∪ni=1ST ermes(ti) et dpth(t) = 1 + M AXi=1..n{dpth(ti)}. Notons que u n’est pas consid´er´e comme sous-terme de ui. Nous d´esignons par ≤ la relation de sous-terme sur T .

128 Chapitre 5. Un mod`ele synchrone pour la v´erification de protocoles param´etr´es Nous d´efinissons la relation 6m pour T × T comme la plus petite relation r´eflexive et transitive telle que si t = f (t1, .., tn) ou t = f (t1, .., tn)j avec f 6= mpair, alors pour tout i = 1, . . . , m nous avons ti6mf (t1, .., tm). Notons que t 6mu implique t ≤ u.

Finalement, nous d´efinissons l’ensemble d’indices se produisant dans un terme comme suit : D´efinition 5.4.1.5 Indices de termes.

Soit un terme t ∈ T . Nous d´esignons par V arI(t) l’ensemble d’indices dans t d´efini r´ecursivement comme suit :

V arI(mpair(i, t)) = V arI(X) = V arI(c) = ∅ avec X ∈ X et c ∈ C V arI(Xi) = V arI(ci) = {i} avec Xi ∈ XI et ci ∈ CI V arI(f (t1, .., tn)) = V arI(t1) ∪ .. ∪ V arI(tn) avecf 6= mpair

V arI(ti) = V arI(t) ∪ {i}

Nous d´efinissons aussi l’ensemble d’indices de variables dans u ∈ T comme ´etant : V arIX(u) = V arI(u) ∩ V arI((ST ermes(u) ∩ XI))

Exemple 5.4.1.6 Indices de termes, indices de variables. V arI(ci) = {i}

V arIX(ci) = ∅

V arI(Xi) = V arXI(Xi) = {i}

V arI({hci, mpair(j, Xj)i}Ykk) = V arI(ci) ∪ V arI(mpair(j, Xj)) ∪ V arI(Yk

k) V arI({hci, mpair(j, Xj)i}Ykk) = {i, k}

V arIX({hci, mpair(j, Xj)i}Ykk) = {i, k} ∩ {j, k} = {k}

5.4.2 Sp´ecification du protocole

Un protocole est mod´elis´e par un ensemble de participants et un ensemble fini d’´etapes pour chacun d’eux. Nous associons `a chacun des participants A un ensemble partiellement ordonn´e d’´etapes repr´esent´e par (WA, <WA) o`u WA sont les indices des ´etapes de A et <WA est un

ordre partiel sur WA. Chaque ´etape est de la forme Rι ⇒ Sι o`u Rι est un message attendu par A et Sι d´esigne la r´eponse correspondante. Init et End sont des messages fix´es utilis´es pour initier et clˆoturer une session du protocole. Un protocole P est donc d´efini comme ´etant ´egal `a {Rı ⇒ Sı|ı ∈ J} o`u J est un ensemble d’indices d’´etapes qui sont partiellement ordonn´es. Notre notion d’ex´ecution correcte de session de protocole (ou ex´ecution de protocole) suit [89].

Exemple 5.4.2.1 Revenons `a notre ´etude de cas : le protocole Asokan-Ginzboorg. La sp´ecification de la version synchrone de ce protocole d´ecrite par l’Exemple 5.4.1.4 est donn´ee ci-dessous :

(L, 1) Init ⇒ mpair(t, hl, {e}pi)

(S, 1) mpair(i, hL, {Ei}pi) ⇒ mpair(j, haj, {hrj, sji}Eji)

(L, 2) mpair(k, hak, {hRk, Ski}ei) ⇒ mpair(m, {hmpair(o, So), s′i}Rm)

(S, 2) mpair(q, {hmpair(u, su), S′i}rq) ⇒

mpair(w, haw, {hsw, h(hmpair(y, sy), S′i)i}f (hmpair(y,sy),S′i)i)

(L, 3) mpair(x, hax, {hSx, h(hmpair(z, Sz), s′i)i}f (hmpair(z,Sz),s′i)i) ⇒ End

L’ensemble ordonn´e des ´etapes de chacun des participants est : WL = 1, 2, 3 et WS = 1, 2 avec l’ordre 1 <WL 2 <WL 3, et 1 <WS 2.

5.4. Mod`ele de protocole 129

5.4.3 Mod`ele de l’intrus

Nous suivons toujours le mod`ele de l’intrus de Dolev-Yao [45]. Les actions de l’intrus sont simul´ees par une s´equence de r`egles de r´e´ecriture sur l’ensemble des termes. Ces r`egles regroupent des r`egles de d´ecomposition et de composition. Elles sont d´efinies ci-dessous.

R`egles de d´ecomposition R`egles de composition

ha1, . . . , ani → a1, . . . , an, ha1, . . . , ani a1, . . . , an→ a1, . . . , an, ha1, . . . , ani {a}pK, K−1→ {a}pK, K−1, a a, K → a, K, {a}pK

{a}sb, b → {a}sb, b, a a, b → a, b, {a}sb

h, t → h(t), h, t pour h ∈ H

ti→ t t → ti pour i ∈ I

Notons ici qu’il n’y a pas de r`egles de l’intrus pour l’op´erateur mpair vu que la fonction de remplacement d´efinie dans la D´efinition 5.4.1.3 donne l’interpr´etation de cet op´erateur dans le mod`ele standard de Dolev-Yao : l’intrus ne traite que des paires de messages.

Nous notons chaque r`egle de composition d’un terme t par Lc(t) . De mˆeme, nous notons chaque r`egle de d´ecomposition d’un terme t par Ld(t) .

Nous d´efinissons la relation de r´e´ecriture, not´ee par M → M′s’il existe une r`egle l → r parmi les r`egles de composition et de d´ecomposition de l’intrus telle que, l est un sous terme de M et M′ est obtenu en rempla¸cant l par r dans M . Nous d´esignons par E →RE′ l’application d’une r`egle R `a un ensemble de messages E ayant pour r´esultat E′. Nous notons la clˆoture r´eflexive et transitive de → par −→∗DY.

5.4.4 D´erivations, attaques

Nous suivons la mˆeme d´efinition de d´erivation de [89]. Nous appelons donc une d´erivation D une s´equence d’applications de r`egles E0 →R1 . . . →Rn En. Les r`egles Ri pour i = 1, .., n sont

appel´ees les r`egles de la d´erivation D. Nous notons R ∈ D pour dire que R est l’une des r`egles Ri, i = 1, .., n utilis´ees dans D. Nous notons aussi Dt(E) la d´erivation qui a pour but de d´eriver t `a partir de E.

Nous d´efinissons le pr´edicat Dy. Ce pr´edicat v´erifie si un message peut ˆetre construit par l’intrus `a partir d’un certain ensemble de messages qu’il connaˆıt.

D´efinition 5.4.4.1 Dy, Dyc and Dyd.

Soient E et K deux ensembles de termes clos et t un terme clos tels que il existe une d´erivation ayant pour but t sans utiliser aucun terme de K comme clef de d´echiffrement. Alors, nous disons que t est forg´e `a partir de E et nous le notons t ∈ Dy(E, K). Ensuite, si D = D′.Lc(t) alors t ∈ Dyc(E, K), sinon t ∈ Dyd(E, K).

Nous pouvons maintenant d´efinir la notion d’attaque pour un protocole dans notre mod`ele. Cette d´efinition se base sur le pr´edicat Dy.

D´efinition 5.4.4.2 (Attaque) ´Etant donn´e un protocole P = {R′ı ⇒ S′

ı|ı ∈ J}, un secret Sec et en supposant que l’intrus a comme connaissances initiales S0, une attaque est d´ecrite par une substitution close σ, un entier e, et un ordre d’ex´ecution correct π : J −→ 1, . . . , k t.q. ∀i = 1, . . . , k, nous avons :

Ri e σ ∈ Dy({S0 e , S1 e σ, . . . , Si−1 e σ}, ∅) Sece∈ Dy({S0e, S1eσ, . . . , Skeσ}, ∅)

130 Chapitre 5. Un mod`ele synchrone pour la v´erification de protocoles param´etr´es avec Ri = R′π−1(i) et Si = Sπ′−1(i).

D’apr`es cette d´efinition, une ex´ecution correspond `a une attaque si :

– cette ex´ecution peut ˆetre ex´ecut´ee. En effet, pour chaque ´etape de l’ex´ecution, l’intrus doit ˆetre capable de forger le message attendu par le participant `a partir des connaissances qu’il a acquises tout au long des ´etapes pr´ec´edentes.

– `a la fin de cette ex´ecution, l’intrus doit ˆetre capable de forger le secret Sec `a partir des connaissances acquises durant toute l’ex´ecution.

Notons que toutes les listes ont toujours la mˆeme longueur e. Ainsi, pour les protocoles de groupe, nous supposons que le groupe a toujours le mˆeme nombre de membres.