• Aucun résultat trouvé

5.3 Attaquant actif

5.4.2 Discussion

La définition de l’oracle de planification à la section 5.3.3 et le lemme 4.1 qui démontre que le calcul de chaque itération du graphe de planification s’arrête, permettent de garantir la terminaison de l’algorithme de la section 4.3.2 pour notre traduction. Le théorème 5.1 garantit que si nous calculons le graphe jusqu’à la borne

1 + nbin(P) + nbout(P) + maxphase(P) + depth(δP(P)) × [1 + nbin(P) + N ]

nous sommes assurés de ne pas manquer d’attaques, grâce à la proposition 4.1. De plus, l’algo-rithme du graphe de planification possède une condition d’arrêt par saturation, à l’étape (E) de l’algorithme complet (voir section 4.3.2). Dans la plupart des cas rencontrés en pratique, cette condition est suffisante, et la borne est donc superflue. Cependant, dans les deux exemples qui suivent, cette borne est nécessaire, c’est-à-dire que la saturation ne suffit pas à garantir l’arrêt.

Premier exemple. Étant donné un canal c, considérons les processus P (c) et Q(c) définis comme

suit, avec a une constante publique et x une variable.

P (c) := in(c, hx, ai).out(c, hx, ai) Q(c) := in(c, hx, ai).out(c, hhx, xi, ai)

Nous considérons KP = {P (c1); P (c2)} et KQ = {Q(c1); Q(c2)} pour certains canaux publics c1, c2. Avec l’état initial att(b, b), où b est une constante publique appartenant à la connaissance initiale de l’attaquant, les faits suivants vont être ajoutés successivement en calculant le graphe de planification :

— att(ha, bi, hb, ai) — att(hb, ai, hhb, bi, ai) — att(hb, ai, hhhb, bi, hb, bii, ai) — . . .

En fait, att(hb, ai, hhb, bi, ai) peut être ajouté de deux manières différentes, qui correspondent aux deux ordres possibles des émissions sur c1et c2(ou bien c1puis c2, ou bien c2puis c1). Puisqu’il y a deux manières d’obtenir ce fait, il ne sera jamais en exclusion mutuelle avec les états précédents. En particulier, le fait att(hb, ai, hhb, bi, ai) et l’état indiquant que le processus sur le canal c1 n’a

pas commencé ne sont pas en exclusion mutuelle, donc ils peuvent être utilisés pour déclencher les règles de planification qui mènent à

att(hb, ai, hhhb, bi, hb, bii, ai)

Puisque les termes calculés du côté Q croissent à chaque étape, ce calcul ne s’arrête que lorsque le nombre d’étapes dépasse la borne donnée par le théorème 5.1.

Il est facile de voir que KP n’est pas en inclusion de trace avec KQ, car un attaquant peut distinguer entre b et hb, bi. Donc, dès qu’un message est émis, les trames résultantes ne sont plus en inclusion statique. Ainsi, une manière de couper l’exécution plus tôt consiste à forcer la procédure à s’arrêter dans l’exploration du graphe dès qu’une attaque est trouvée. Cependant, il est possible de modifier cet exemple pour empêcher toute attaque d’être détectée, et donc de forcer l’algorithme à atteindre la borne. L’idée est simplement de combiner l’exemple ci-dessus avec l’exemple 4.9 de la section 4.3.4 (reformulé dans le langage des protocoles). En effet, cet exemple démontre que le graphe de planification réalise une surapproximation de l’ensemble des états accessibles. Des faits de plus en plus profonds existeront dans le graphe, mais comme ils ne seront pas réellement accessibles (après vérification par le solveur SAT) la procédure ne détectera pas d’attaque et ne pourra s’arrêter que grâce à la borne.

Deuxième exemple. Plus concrètement, considérons les processus P0(c0), P1(c0) et Q1(c0)

sui-vants, avec k un nom représentant une clé secrète et a, b, c des constantes publiques. P0(c0) = in(c0, x).out(c0, senc(x, k))

P1(c0) = in(c0, hsenc(a, k), senc(b, k), senc(c, k)i3).P (c0) Q1(c0) = in(c0, hsenc(a, k), senc(b, k), senc(c, k)i3).Q(c0) Nous considérons les configurations :

K0P = {P0(c0); P0(c1); P1(c2); P1(c3)} K0Q= {P0(c0); P0(c1); Q1(c2); Q1(c3)}

avec c0, c1, c2, c3des noms de canaux publics. Les processus P0sur les canaux c0et c1 sont utilisés comme des oracles de chiffrement, afin que l’attaquant puisse chiffrer exactement deux des trois constantes a, b et c avec la clé k. De cette manière, nous modélisons les deux jetons de l’exemple 4.9. Comme dans cet exemple, la réception sur le canal c2(et donc aussi sur le canal c3) est déclenchée dans le graphe de planification. Ensuite, les processus P (c2), P (c3), Q(c2) et Q(c3) nous ramènent au cas précédent, mais chaque fois que bad est ajouté au graphe, le solveur SAT répond qu’il n’est pas réellement accessible. Donc la procédure continue d’explorer le graphe jusqu’à atteindre la borne, puisqu’aucune attaque ne sera jamais trouvée (en effet, les protocoles sont en équivalence de trace).

5.5 Conclusion

Nous avons donné une traduction correcte et complète de l’inclusion de trace, pour des proto-coles simples, sous forme de problème de planification. Toutes les optimisations sont démontrées, et le calcul d’une borne sur la longueur des plans, ainsi que la définition d’un oracle de planification, permettent d’appliquer la technique de résolution présentée au chapitre précédent. Dans leur tra-vaux, Armando et Compagna [21] énoncent l’existence d’une borne en s’appuyant sur les résultats de Rusinowitch et Turuani [94]. En effet, Rusinowitch et Turuani bornent le nombre d’opérations que l’attaquant doit réaliser entre deux actions d’un agent honnête. Puisque le nombre d’actions des agents honnêtes est lui-même borné, il en découle une borne sur la longueur d’un plan. Nos calculs sont plus précis, car nous tenons compte de la possibilité de paralléliser et de retenir les clés déjà déduites.

Les optimisations présentées ici se font au prix d’une restriction assez importante de l’ensemble des protocoles qui peuvent être considérés. Même en admettant les limites théoriques des cha-pitres précédents, plusieurs pistes d’amélioration pourraient être envisagées. Il serait possible, par exemple, de rendre paramétrique l’ensemble de primitives considérées. Cependant, pour maintenir un niveau d’efficacité équivalent, il serait nécessaire d’automatiser les optimisations sur l’équiva-lence statique.

Une autre extension possible consisterait à relâcher l’hypothèse sur les protocoles simples. Ainsi, lorsque les protocoles sont déterministes, la difficulté principale consiste à trouver un appariement entre les actions des deux protocoles. Une méthode pour surmonter cet obstacle consisterait donc à considérer le cas des protocoles dont les canaux sont tous distincts. Dans cette situation, l’ap-pariement est évident (il est donné par les canaux). Mais, pour un protocole déterministe, deux actions sur un même canal ne peuvent jamais être confondues. Il faudrait donc montrer que deux protocoles P et Q déterministes peuvent toujours se réécrire comme deux protocoles P0et Q0 dont les canaux sont tous distincts, de sorte que P et Q sont équivalents si, et seulement si, P0 et Q0 sont équivalents. Cette extension permettrait d’obtenir une plus grande liberté de modélisation.

Dans le chapitre suivant, nous montrerons l’efficacité de notre démarche, à travers l’implémen-tation de l’outil SAT-Equiv, son application à plusieurs études de cas, qui permettent d’établir une comparaison expérimentale avec les autres outils pour l’équivalence de protocoles dans le cadre d’un nombre borné de sessions.

6 SAT-Equiv : Implémentation et études de

cas

Dans le chapitre 4, nous avons présenté les problèmes de planification, et l’agorithme du graphe de planification, qui permet de les résoudre. Cet algorithme a été complété par la traduction de l’équivalence dans le langage de la planification, dans le chapitre 5. De cette manière, nous dispo-sons d’une procédure de décision pour l’inclusion (approximative) de trace, et donc pour l’équiva-lence. Ce dernier chapitre commence par décrire l’outil SAT-Equiv, c’est-à-dire l’implémentation de la procédure de décision, à la section 6.1. La suite du chapitre est dédiée à l’évaluation de la méthode proposée. Dans la section 6.2, nous présentons donc neuf protocoles qui nous serviront de base d’évaluation. Remarquons que nous nous sommes limités à des protocoles qui pouvaient être modélisés par des processus simples. En particulier, nous avons laissé de côté les protocoles de vote électronique, car la modélisation du mélange des votes n’est pas déterministe, ou repose sur l’utilisation de primitives qui sortent de notre cadre, comme les preuves sans divulgation de connaissance. Nous étudions, pour chaque protocole, l’existence d’un système de types auquel il soit conforme dans la section 6.3, puisque c’est l’une des hypothèses du théorème 5.1. Ensuite, la section 6.4 présente les autres outils pour l’équivalence de traces dans le modèle borné, puis établit une comparaison entre ces outils et SAT-Equiv sur chacun des protocoles énumérés à la section 6.2. Enfin, la section 6.5 montre comment les performances de l’outil, associées à un résultat de petite attaque, permettent dans certains cas d’atteindre des preuves pour un nombre arbitraire de sessions.

6.1 Implémentation

Dans cette section, nous décrivons les détails de l’implémentation. La section 6.1.1 donne des précisions sur l’outil, ainsi qu’une rapide description de la sortie de SAT-Equiv. La section 6.1.2 décrit plus précisément les structures de données utilisées.