• Aucun résultat trouvé

Ce chapitre a présenté le modèle qui sera utilisé dans la suite. Les messages qui transitent sur le réseau sont modélisés par une algèbre de termes à laquelle des restrictions ont été apportées à travers les sortes et les contours. Pour le moment, ces restrictions ne semblent pas importantes, puisque les sortes et les contours que nous pouvons affecter à chaque symbole constructeur ne sont pas contraints. De nouvelles limites seront données dans le chapitre suivant, sous forme d’hypothèses sur les règles de réécriture.

Les relations entre les primitives sont représentées par des théories de réécriture particulières, appelées théories à constructeurs, qui supposent que l’échec d’un déchiffrement est visible. Ainsi, un processus n’acceptera pas un message déchiffré avec une mauvaise clé. Ce modèle empêche la modélisation de certaines primitives, comme le XOR, pour lesquelles la notion de déchiffrement (et donc d’échec de ce déchiffrement) n’a pas de sens.

Ces messages sont manipulés par des programmes distribués, représentés formellement par une algèbre de processus. Cette thèse étudie en particulier l’équivalence entre de tels processus, c’est-à-dire leur indistinguabilité du point de vue de l’attaquant qui contrôle le réseau. Nous avons donné la définition de référence de cette équivalence, appelée équivalence de trace, ainsi qu’une approximation dont nous avons démontré qu’elle est exacte sous une hypothèse de déterminisme.

2 Résultats de typage

Afin de coder le problème de l’équivalence de protocoles sous forme de problème de planification et de formule SAT, il est nécessaire de borner la taille des messages utilisés par l’attaquant. Une solution consiste à typer les messages, et à se contenter de considérer les messages suivant le système de types, comme dans SATMC [21]. Cependant, rien ne garantit que l’attaquant respecte le système de type. Il semble donc naturel de chercher à déterminer une classe de protocoles et de systèmes de types pour laquelle ce n’est pas le cas, c’est-à-dire pour laquelle il existe une attaque bien typée chaque fois qu’il existe une attaque arbitraire.

Heather, Lowe et Schneider [76] ont démontré un résultat de ce genre pour le secret et l’authen-tification, mais avec des hypothèses très fortes. En particulier, chaque type doit être indiqué par une étiquette contenue dans le message, et les processus ne doivent pas transmettre de messages qu’ils ne peuvent pas ouvrir. Ramanujam et Suresh établissent [91] établissent un résultat sem-blable, avec un système de marquage encore plus contraignant. Un résultat plus fin a été établi par Almousa, Mödersheim, Modesti et Viganò [11] et formalisé en Isabelle/HOL par Hess et Möder-sheim [78]. Ce résultat, semblable à celui qui est exposé ici, porte exclusivement sur l’accessibilité, avec une classe paramétrique de primitives incomparable à la nôtre.

Nous étendons le résultat de Chrétien, Cortier et Delaune [51], qui porte exclusivement sur le chiffrement symétrique pour les propriétés d’équivalence. La technique de preuve de [51] (et donc la nôtre) s’inspire des travaux d’Arapinis et Duflot [15], où il est montré que, dans le cas de l’ac-cessibilité et pour une classe de protocoles marqués, il suffit de considérer des attaques bien typées pour un système de types particulier. Le présent chapitre démontre que l’on peut se contenter de considérer des attaques bien typées pour une classe paramétrique de primitives cryptographiques, et pour les propriétés d’accessibilité ou d’équivalence. Ces extensions permettent en particulier de considérer les primitives classiques, comme les chiffrements symétrique ou asymétrique, la signature électronique et les fonctions de hachage, qu’elles soient randomisées ou non. De plus, la preuve a été considérablement simplifiée. Comme dans [51], l’hypothèse qui porte sur les marques est relâchée sous une forme plus faible, à savoir que deux sous-termes chiffrés unifiables ont le même type, et qui peut être obtenue en ajoutant des marques.

Le modèle général a été présenté dans le chapitre précédent, mais nous devons ajouter des hypothèses supplémentaires dans la section 2.1, qui apporteront des contraintes sur les contours et les sortes, afin de limiter la non-linéarité des règles. Puis la section 2.2 présentera les systèmes de types et la conformité d’un protocole à un tel système de type, ce qui permettra d’énoncer les deux théorèmes du chapitre : pour l’accessibilité et pour l’équivalence, il existe une trace d’attaque si et seulement si il existe une trace d’attaque bien typée. Les résultats techniques introduits dans la section 2.3 nous aideront à démontrer le résultat de typage pour l’accessibilité dans la section 2.4 et le théorème qui porte sur l’équivalence dans la section 2.5. Enfin, la section 2.6 reviendra sur les hypothèses pour les justifier à travers des exemples qui mettent en défaut les théorèmes et la section 2.7 comparera ce résultat de typage aux autres résultats existants.

2.1 Théories

Le chapitre précédent exposait le modèle en toute généralité. Cependant, les résultats du présent chapitre nécessitent des hypothèses plus fortes sur les primitives cryptographiques, qui s’expriment à l’aide des sortes et des contours. La nécessité de ces restrictions supplémentaires sera discutée en section 2.6. Nous disons qu’un terme t est linéaire si chacune de ses variables n’apparaît qu’une seule fois dans t, c’est-à-dire si pour tout x ∈ vars(t), il existe exactement une position de t tel que t|p= x. En dehors de la propriété classique des sous-termes, l’objet des hypothèses qui suivent est de limiter la non-linéarité des règles.

Soit (Σ, R) une théorie à constructeurs. On dit que (Σ, R) est une théorie quasi-linéaire si, pour chaque destructeur des d’arité n, il existe exactement une règle `des→ rdes∈ R, avec

1. `des = des(t1, . . . , tn) où chaque ti est soit une variable, soit shroot(ti) (à un renommage des variables près).

2. rdes∈ T0c, ∅) ∪ St (t1).

3. Ou bien `des est un terme linéaire, ou bien il existe une unique variable x ∈ X qui apparaît plusieurs fois dans `des, dont exactement une fois en position de clé de t1.

Nous supposerons également que R contient au moins une règle non-linéaire.

Le premier item contraint les contours. Par exemple, la règle de déchiffrement asymétrique adec(aenc(y, pub(x)), x) → y

impose que shaenc = aenc(y, pub(x)) (à un renommage près des variables). Comme les contours sont linéaires (voir section 1.1.5), chaque terme ti est également linéaire. Le second item est une définition formelle de la propriété des sous-termes dans le cadre des théories à constructeurs. La propriété classique impose seulement que rdes∈ St (`des), mais comme rdesest un terme constructeur, nécessairement rdes∈ ∪n

i=1St (ti). Le choix de t1est arbitraire et lève seulement la symétrie. Associé à l’item 2, le premier item garantit que si rdes contient une variable y ∈ X , c’est-à-dire si rdes ∈ St (t1)rT0c, ∅), alors la position p telle que rdes= t1|pest unique (sinon la variable y empêcherait t1 d’être linéaire). Les sortes sont contraintes par le dernier item. En effet, les positions de clés sont définies comme les positions où un terme de sorte atom est attendu (voir section 1.1.4). Ce troisième item requiert que la position de clé à laquelle apparaît x se trouve dans t1, c’est-à-dire dans le terme tel que rdes∈ St (t1). Rien n’indique que cette restriction soit importante, mais elle simplifie le contenu technique de ce chapitre, et n’élimine aucun exemple notable de primitive. Exemple 2.1. Soit n un entier. Considérons la signature standard Σstdn et les règles de réécriture associées Rstdn introduites dans la section 1.1.7. (Σstdn , Rstd

n ) est une théorie quasi-linéaire, comme les théories des exemples 1.9 et 1.11.