• Aucun résultat trouvé

Comme nous avons pu le constater dans les sections précédentes, nos abstractions ne permettent pas toujours de montrer certaines propriétés des protocoles, bien qu’elles soient visiblement vraies. Ceci n’est pas surprenant : le problème de départ étant indécidable alors que le problème abstrait ne l’est pas, il est nécessaire de perdre de l’information lors du processus d’abstraction. Dans les travaux consacrés à l’étude de protocoles cryptographiques au moyen d’abstractions, les deux points suivants, concernant une abstraction donnée, sont d’ailleurs toujours énoncés, d’une manière où d’une autre :

– on peut trouver des protocoles P , pour lesquels on sait par ailleurs qu’il satisfont une propriété ϕ, mais tels que ce résultat ne puisse pas être prouvé au moyen de l’abstraction considérée ;

– les attaques obtenues comme contre-exemples, lorsque la preuve par abstraction d’une propriété ϕ sur un protocole P échoue, ne correspondent pas toujours à de réelles at-taques sur le protocole P .

Pour positiver ces considérations, nous préférons écrire :

– lorsqu’il est possible de prouver une propriété ϕ d’un protocole P au moyen de l’abs-traction, c’est en fait un résultat plus fort que ϕ qui est prouvé ;

– les attaques obtenues comme contre-exemples, lorsque la preuve par abstraction d’une propriété ϕ sur un protocole P échoue, sont de réelles attaques, mais dans une modéli-sation différente de P .

Voyons maintenant ce que nous apportent ces nouvelles considérations dans le cas de nos abstractions. Si on dispose d’un protocole P modélisé par une ΣP-algèbre CP ainsi que d’une ΣP-algèbre A, correcte relativement à CP et un morphisme surjectif α : [CP] → [A], on peut considérer la congruence induite par α :

Eα = {(cˆ 1, c2) ∈ CP2 | α(c1) = α(c2)}

[A] est alors le quotient de [CP] par Eα et α est la surjection canonique de [CP] sur [CP]/Eα. Pour une propriété de secret, les seuls prédicats utilisés dans A sont tr et . Or, ces prédicats sont définis dans A exactement de la même manière que tr et sont définis dans CP. Nous aboutissons donc à la première remarque fondamentale suivante : vérifier ϕ dans A, c’est vérifier ϕ dans un monde où les équations de Eα sont satisfaites.

Allons encore un peu plus loin, et considérons une congruence E sur CP telle que E ⊆ Eα

(par exemple, E pourrait être la congruence sur CP engendrée par des équations entre termes de TΣ(X), à condition que ces équations soient compatibles avec α). On peut écrire α comme composée des surjections canoniques :

α1 : [CP] → [CP]/E et α2 : [CP]/E → [CP]/Eα

Définissons et tr sur [CP]/E exactement de la même manière qu’ils sont définis dans CP. On obtient alors une ΣP-structure, CE

P, et on constate que A est correcte relativement à CE P

et α2. Notre deuxième remarque fondamentale est donc la suivante : si ϕ est vraie sur A, alors ϕ est vraie sur CE

P et ce, quel que soit E contenu dans Eα.

À titre d’exemple, considérons la congruence E engendrée par l’équation suivante : {hm1, m2i}k = h{m1}k, {m2}ki (6.1) Un certain nombre de travaux récents [CS03, CT03, CKRT03] s’intéressent au problème de la vérification de propriétés de protocoles cryptographiques en présence de théories équation-nelles sur les messages. L’équation 6.1 apparaît comme un cas particulier d’application des résultats obtenus par les auteurs de [CT03]. Or, dans la structure A réalisant l’abstraction par linéarisation (section précédente), cette équation est naturellement satisfaite. Au moyen de cette abstraction, nous avons prouvé la correction des protocoles de Denning Sacco et Andrew Secure RPC (pour une propriété de secret). Nous pouvons donc en déduire que le secret est également vérifié en présence de l’équation 6.1. On pourrait faire de même avec les équations :

{{m}k1}k2 = {{m}k2}k1 (6.2)

hm1, hm2, m3ii = hhm1, m2i, m3i (6.3)

qui sont également satisfaites dans A.

Par ailleurs, les deux dernières équations sont celles qui nous ont empêché de prouver la propriété de secret dans le cas du protocole de Yahalom (voir plus haut). Il existe donc une attaque dans ce protocole (pour la propriété de secret) en présence de messages pour lesquels le constructeur de couples est associatif et commutatif.

En résumé, nous avons expliqué ici comment mettre en pratique la théorie générale présen-tée au chapitre précédent, sur trois types d’abstractions. L’abstraction par projection des noms est simple, mais ne permet pas toujours d’obtenir un ensemble d’exécutions finies. L’abstrac-tion par filtrage est également simple et intuitive et permet toujours d’obtenir un ensemble d’exécutions finies. Cependant, elle ne retourne des résultats intéressants que lorsqu’il est possible de faire l’hypothèse que les participants du protocole ont la possibilité de vérifier que les messages qu’ils reçoivent sont de la bonne forme. L’abstraction par linéarisation est moins intuitive, mais conduit toujours à un ensemble fini d’exécutions. Toutefois, elle ne per-met de prouver des propriétés que si le protocole considéré est suffisamment robuste vis-à-vis des propriétés algébriques des messages. Par conséquent, lorsque cette abstraction échoue, on obtient en général une attaque sur le protocole qui est valable modulo une certaine théorie équationnelle des messages (pertinente ou non).

Nous revenons maintenant sur un point plus théorique en montrant, dans le chapitre suivant, que la traduction choisie pour obtenir la contrepartie abstraite des énoncés est, en un certain sens, optimale.

Chapitre 7

Optimalité

Nous avons déjà montré, au moyen de la proposition 5.1.1, que la structure Cα était la plus précise possible qui soit correcte relativement à C et α. Dans le même ordre d’idées, nous aimerions montrer que (ϕ, ϕ) constitue le meilleur choix possible d’énoncés tel que :

A |= ϕ ⇒ C |= ϕ et C |= ϕ ⇒ A |= ϕ

L’exemple suivant montre que, en général, ce n’est pas le cas.

Exemple : Considérons à nouveau la spécification des listes d’entiers, ainsi que l’abstraction qui en a été donnée dans le chapitre 5. L’énoncé ϕ ˆ= ∀l : List. succ(0) ∈ l ∨ ¬(succ(0) ∈ l) (qui est bien entendu satisfait par tout modèle de la spécification des entiers) est remplacé au niveau abstrait par les deux énoncés :

ϕ = ∀l : List. succ(0) ∈ l ∨ ¬(succ(0) ∈l) ϕ = ∀l : List. succ(0) ∈ l ∨ ¬(succ(0) ∈l)

On avait déjà remarqué que pour ∈ on peut utiliser le prédicat d’appartenance standard, alors qu’il fallait définir le prédicat ∈ au moyen de l’équivalence :

x ∈l ⇔ x ∈ l ∧ x = 0

Les deux énoncés précédents sont dont équivalents (sur la spécification abstraite des entiers) à :

∀l : List. (succ(0) ∈ l ∧ succ(0) = 0) ∨ ¬(succ(0) ∈ l) ∀l : List. succ(0) ∈ l ∨ ¬(succ(0) ∈ l ∧ succ(0) = 0)

On en déduit que ϕ est faux (toujours sur la spécification abstraite des entiers), alors que ϕ est vrai (sur la spécification des entiers). Par conséquent, le couple d’énoncés (ϕ, ϕ) n’est pas optimal vis-à-vis de ϕ et de l’abstraction considérés, puisque n’importe quel couple d’énoncés valides sur la spécification abstraite des entiers constituerait un meilleur choix.  Cet exemple montre qu’il existe des cas particuliers où un couple d’énoncés choisi de manière ad hoc par rapport au problème d’abstraction et à l’énoncé ϕ de départ peut constituer un meilleur choix que (ϕ, ϕ). Cependant, nous allons montrer qu’il n’existe pas de meilleur choix possible parmi ceux qui se calculent de manière purement syntaxique et indépendamment de la signature à partir de l’énoncé de départ.

On voit apparaître ici une notion d’indépendance vis-à-vis de la signature. Or jusqu’à présent on avait toujours considéré des signatures, parfois quelconques, mais toujours fixées. Pour formaliser le concept de « système logique », nous allons, après avoir fait quelques rappels sur la théorie des catégories, présenter les institutions, qui ont été introduites par J. Goguen et R. Burstall dans ce but. Dans ce cadre, notre procédé d’abstractions ainsi que l’hypothèse d’indépendance vis-à-vis de la signature se formulent aisément. Nous pourrons alors énoncer et démontrer notre résultat d’optimalité.