UFR STMIA
THÈSE
pour l’obtention du
par
Yannick Chevalier
Composition du jury
Rapporteurs : Ahmed Bouajjani Professeur à l’Université Paris VII
Denis Lugiez Professeur à l’Université de Provence Marseille
Examinateurs : Nacer Boudjlida Professeur à l’Université Henri Poincaré Nancy 1
Michael Rusinowitch Directeur de Recherche INRIA, Nancy
Peter Ryan Professeur à l’Université de Newcastle upon Tyne
Laurent Vigneron Maı̂tre de Conférences à l’Université Nancy 2
Abstract
Commercial transactions and services over insecure networks have lead to the use of security
protocols. These protocols ought to provide both data confidentiality and participants authenti-
cation, but many of those proposed up to date have turned out to be flawed. Their economical
importance has motivated the introduction of formal verification.
In this dissertation, we investigate the problems raised by the automatic analysis of such proto-
cols. We give an operationnal semantics to high-level protocol specifications, extend the standard
Dolev-Yao framework to algebraic operators and finally consider the problem of protocol verifica-
tion. We reduce these problems to reachability problems. This reduction is a first step toward the
implementation of an automatic analysis tool.
Remerciements
Je tiens tout d’abord à remercier mes deux directeurs de Thèse, Laurent Vigneron et Mi-
chael Rusinowitch, qui m’ont accueilli dans l’équipe Protheo, puis Cassis. À Michael d’abord, pour
m’avoir accepté en thèse. Mais surtout à tous les deux pour m’avoir pendant quatre ans guidé, lu,
corrigé, aidé. Pour faire court, je les remercie pour m’avoir fait découvrir la recherche, pour leur
humour et pour leur disponibilité.
Je remercie aussi Denis Lugiez et Ahmed Bouajjani pour avoir accepté d’être rapporteurs de
ma thèse, et pour le temps consacré à ce travail.
Je suis aussi très honoré que Peter Y. Ryan ait accepté de faire partie du jury et de lire avec
sérieux ce document dans une langue qui n’est pas la sienne. Je remercie aussi Nacer Boudjlida qui
m’a fait l’honneur de présider ce jury.
Je remercie aussi les les personnes avec lesquelles j’ai collaboré au cours de ces presques quatre
années. Mathieu Turuani, tout d’abord, avec qui j’ai échangé des points de vue pendant plus de
trois ans. Je remercie aussi Ralf Küsters, avec qui les discussions ont été parfois longues, mais
très fructueuses, Medhi Bouallagui, dont l’aide a été très précieuse pendant les phases de codage,
Sophie à la patience inégalée, Silvio, Tarek, Judson, Imine, Huy, Alakesh et Véronique.
Je remercie aussi les membres des projets AVISS et AVISPA, et tout particulièrement Luca
Viganò, qui a souvent su trouver les mots justes pour me motiver dans le long travail impliqué par
ces projets.
Je tiens aussi à remercier les membres de l’Université Henri Poincaré et de l’Université Nancy
2, et en premier lieu Jean-Pierre Jacquot qui n’a pas hésité à soutenir ma candidature sur un poste
d’ATER, me permettant ainsi de faire ma thèse à Nancy. Je remercie aussi Jeanine Souquières,
Marie-Jo Vigneron, Claude Millot qui m’ont suffisamment fait confiance pour me laisser la res-
ponsabilité de modules. Je remercie aussi les personnes avec lesquelles j’ai travaillé, en particulier
Jean Lieber et Didier Gemmerlé qui m’ont beaucoup apporté dans la préparation de mes cours et
TDs, et Noelle Carbonell et Didier Galmiche pour m’avoir permis de faire des enseignements très
intéressants en maı̂trise et en DEA.
Je remercie aussi Marie-France Mailhos, à l’IUFM de Rennes, pour m’avoir permis de découvrir
la pédagogie en Allemagne. Je remercie aussi Yvonne Kanzo, et plus généralement l’équipe pédagogique
du collège des ormeaux, pour son indulgence et tous les conseils pédagogiques qu’elle m’a donnés
et qui m’ont été indispensables par la suite.
Je remercie aussi tous ceux avec qui je partage régulièrement un café ou un thé et qui n’ont
jamais hésité à me donner une macro LATEX, à me remplacer en TD, à me faire confiance pour
des enseignements, à partager des repas au Perfection sous la protection de Sri Chinmoy, et j’en
oublie... Je parle bien sûr d’Olivier et Johanne. Je n’oublie pas Miki
Je n’oublie pas de remercier tous les dinoistes sans lesquels ma thèse aurait certainement pro-
gressée à une vitesse différente :Alfred, qui a su préserver la pureté de sa vocation scientifique
malgré les tentations multiples de sa vie londonienne, Nahamuf et son approche toute particulière
du tennis, Cabud (et Juliette, mais ça n’a plus rien à voir), Rrose, et lapin qui apportent leur
antique sagesse à ce forum, et en vrac Vince, Lory, Alvin, pignolo, VV, Tom-Tom, jolow, et à tous
ceux sans qui dino pourrait être un forum à la fois public et inintéressant.
Je remercie aussi ceux que j’ai rencontré, que je vois et que je rencontrerai un jour quelque part
pour tout ce qu’ils m’ont apporté et m’apporteront. Ceux du SCI, Hannes, Ursula, Sayaka, ceux
de ATPUB, Rémi en particulier, ... Je n’oublie surtout pas de remercier ceux qui m’ont supporté
pendant... Ouah ! tant que ça !, Bertrand, Christophe et Marie-Caroline et aux bonnes soirées qu’on
a passé ensemble. Und Thomas, Sandra und Ralf, die Bremen eine schöne Stadt machen.
Je remercie enfin ma maman en particulier, Christelle, Olivier, Honorine et Roman, Pierre et
Virginie, et toute ma famille en général pour ce qu’ils m’ont apporté et que je ne compte plus.
iv
v
Résumé i
Abstract i
vii
viii Table des matières
I Fondements 13
2 Primitives cryptographiques 15
2.1 Modes de chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.1 Chiffrement parfait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.2 Chiffrement par blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.2.i Chiffrement par blocs sans chaı̂nage des blocs . . . . . . . . . 16
2.1.2.ii Chiffrement par blocs avec chaı̂nage . . . . . . . . . . . . . . 16
Chiffrement par blocs en mode chaı̂né (mode CBC). . . . . . . . 16
Chiffrement à rétroaction, sur le texte codé. . . . . . . . . . . . 16
Propriétés du mode chaı̂né. . . . . . . . . . . . . . . . . . . . . . 17
2.2 Opérations de chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1 Chiffrement par clefs asymétriques . . . . . . . . . . . . . . . . . . . . 18
2.2.1.i Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1.ii Problème du sac-à-dos . . . . . . . . . . . . . . . . . . . . . . 18
2.2.1.iii Factorisation de grands entiers . . . . . . . . . . . . . . . . . 19
2.2.1.iv Calcul du logarithme discret . . . . . . . . . . . . . . . . . . . 19
2.2.1.v Cas du chiffrement commutatif . . . . . . . . . . . . . . . . . 20
2.2.1.vi Algorithmes de signature . . . . . . . . . . . . . . . . . . . . . 20
2.2.2 Chiffrement par clefs symétriques . . . . . . . . . . . . . . . . . . . . . 20
2.2.2.i Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.2.ii Un exemple, l’algorithme DES . . . . . . . . . . . . . . . . . . 21
2.2.2.iii Le protocole de W. Diffie et M. Hellman pour une construction
distribuée de clefs symétriques . . . . . . . . . . . . . . . . . . 21
2.2.3 Un chiffrement asymétrique faible : le ou exclusif bit à bit . . . . . . . 21
ix
s
4.5.2.i Cas du chiffrement parfait, opérateur { } . . . . . . . . . . . 55
s,ebc
4.5.2.ii Cas du chiffrement par blocs, opérateur { } . . . . . . . . 55
Cas ρ = Ld,{ }s,ebc . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Cas ρ = Lc,{ }s,ebc . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Test de l’application d’une règle de décomposition. . . . . . . . 57
Test de l’application d’une règle de composition. . . . . . . . . . 57
s,cbc
4.5.2.iii Cas du chiffrement par blocs en mode chaı̂né, opérateur { } 57
p p,rsa
4.5.3 Opérateurs { } et { } . . . . . . . . . . . . . . . . . . . . . . . . . 58
p
4.5.3.i Cas du chiffrement parfait, opérateur { } . . . . . . . . . . . 58
p,rsa
4.5.3.ii Cas du chiffrement commutatif, opérateur { } . . . . . . . 59
4.5.4 Opérateur H( , ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.5.5 Opérateur Exp( , ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.5.6 Opérateur ⊕({ }) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.6 Problème d’accessibilité close dans le cadre des protocoles . . . . . . . . . . . 63
4.7 Règles d’oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.8 Travaux reliés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.9 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
II Compilation 67
IV Vérification 139
Bibliographie 165
Table des figures
4.1 Propriété de Church-Rosser pour les systèmes de réécriture sur des ensembles de
termes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
xvii
xviii Table des figures
1
Analyse de protocoles
cryptographiques
Chapitre
1
2 Chapitre 1. Analyse de protocoles cryptographiques
1. A → B : {N a, A}Kb
2. B → A : {N b, N a}Ka
3. A → B : {N b}Kb
Fig. 1.1 – Messages échangés dans le protocole à clefs publiques de R. Needham et M. Schroeder
Messages. Les messages échangés, dans la figure 1.1, sont déclarés sur chaque ligne à droite des
deux-points. Ils sont construits par concaténation (Na, A) ou par chiffrement ({Na, A}Kb) d’autres
messages, ou sont des messages atomiques (A ou Na, par exemple). Le message utilisé pour le
chiffrement (Kb, dans le cas du message {Na, A}Kb) est appelé une clef. Le type du chiffrement,
symétrique ou asymétrique, est déterminé par le type de la clef. Dans le cas du protocole de la
figure 1.1, toutes les clefs utilisées sont les clefs publiques de couples de clefs asymétriques.
Rôles et acteurs. Un scénario d’échange de messages peut être pris soit de manière déclarative,
soit de manière opératoire. Dans le premier cas, l’échange décrit se fait entre deux personnes
abstraites se distinguant uniquement par le rôle qu’elles jouent dans le scénario. Dans le second
cas, le scénario décrit une suite d’échanges de messages entre des personnes déterminées, chacune
jouant un (ou plusieurs) des rôles du scénario. Pour distinguer ces deux niveaux, nous parlons
de rôle pour désigner un participant à l’identité non précisée, et d’acteurs pour des participants
effectifs au protocole. Les premiers sont désignés par des lettres majuscules, généralement A, B,...
ou S pour un serveur, tandis que nous donnons des prénoms aux seconds (alice, bob,...). Un acteur
joue un rôle spécial, l’intrus. Nous le notons par la lettre I, et il représente un adversaire essayant
4 Chapitre 1. Analyse de protocoles cryptographiques
de profiter d’une éventuelle faille du protocole. Notons que prendre en compte un seul intrus n’est
pas restrictif vis-à-vis de la recherche d’attaques [101].
L’analyse des connaissances des rôles est réduite, et se résume à un message d’erreur lorsqu’un
rôle n’a pas les connaissances nécessaires pour décrypter immédiatement un message reçu. Il nous
semble que cette analyse réduite des connaissances des rôles confine cet outil à l’étude de protocoles
simples.
Un autre langage de description de protocoles, Capsl [35], a été défini au SRI. Les descrip-
tions en Capsl sont compilées dans un format intermédiaire, CIL [36]. Le but est de permettre
l’interfaçage d’un plus grand nombre possible d’outils de vérification, tel que l’outil de validation
de modèles Maude [34], par exemple. Capsl, dans son évolution µCAPSL [37], permet aussi la
description de protocoles de groupes.
Un troisième compilateur, CVS [43, 44], a été implanté pour permettre la spécification de
protocoles dans un langage plus compréhensible que SPA (CSPA, dans [50]). La spécification est
ensuite traduite en SPA, et analysée par CoSeC. Le langage de haut niveau reste encore complexe,
mais semble plus précis que Capsl, par exemple.
Contrairement aux trois outils précédents, pour lesquels les étapes de compilation et de vérification
sont distinctes, Murϕ [74] intègre un compilateur et un vérificateur de modèles. Le langage haut
niveau de définition est comparable au langage Unity [18]. La suite de messages est spécifiée par un
ensemble de commandes gardées, et permet l’emploi de types structurés. Ce langage est beaucoup
plus expressif que les langages précédemment décrits. Il est par exemple possible d’exprimer des
protocoles de groupes tels que Enclaves. Son désavantage majeur est qu’il n’est pas spécialisé pour la
spécification de protocoles cryptographiques, ce qui laisse à l’utilisateur un travail de modélisation
long et source d’erreurs.
L’analyseur NRL. Cet outil, développé par C. Meadows, est un outil de recherche en arrière
d’attaques. L’ensemble des états critiques est initialisé à une représentation de l’ensemble des états
fautifs par un ensemble fini d’états symboliques. Durant l’analyse, si une transition mène d’un état
s à un état critique, alors s est ajouté à l’ensemble des états critiques. L’utilisateur guide l’analyse
choisissant les transitions à considérer, et un protocole a une faille si au bout d’un nombre fini
d’étapes, il existe un état initial du protocole représenté par un état symbolique de l’ensemble des
états critiques [69, 68, 67]. L’avantage de la recherche en arrière est que le nombre d’acteurs n’est
pas limité. Si la recherche en arrière converge en un temps fini vers un ensemble d’états critiques C
ne représentant pas d’état initial, il est théoriquement possible de valider un protocole. Cependant,
le nombre de transitions possibles est très important à chaque étape. L’utilisation de cet outil exige
donc un utilisateur connaissant déjà des failles possibles du protocole.
pour l’analyse de protocoles cryptographiques [82, 83, 79]. C’est par l’utilisation de cet outil qu’il a
été possible de prouver la sécurité du protocole SET [9, 7, 8]. Il s’agit de l’exemple le plus complexe,
à notre connaissance, de protocole ayant pu être traité par des méthodes formelles. Cependant,
d’après les auteurs, le processus de spécification fut long (en partie par la faute des spécification
déjà existantes qui étaient parfois contradictoires). Et on peut remarquer que certaines erreurs
possibles n’ont pas été traitées, comme l’existence d’une faille permettant de monter une attaque
de type déni de service dans le sous-protocole Cardholder Registration. L’existence possible d’une
telle faille avait été admise par les auteurs dans [9] :
« While stressing that each authority certifies a specific key for a single cardholder,
the theorem does not prevent different authorities to certify the same key for the same
cardholder. »
mais elle a été mise en évidence par les outils développés dans le cadre du projet AVISS2 , en se
basant sur la spécification donnée dans [9]. Notons que la faille trouvée consiste à faire certifier une
même clef plusieurs fois par la même autorité de certification.
suites de transitions possibles. Deux voies ont depuis été suivies pour la recherche de failles. D’un
côté, il est recherché une sur-approximation des capacités de l’adversaire qui permet de se ramener
à un cas fini. De l’autre, le cadre défini dans [41] est restreint pour se ramener au cas de l’étude
d’un système fini.
Méthodes approchées. Une première approche a été de modéliser l’ensemble des états par des
automates d’arbres. Cette approche, initiée dans la cadre d’un nombre non-borné de sessions par
T. Genet et F. Klay dans [51], a été reprise et améliorée dans le cadre d’un nombre borné de
sessions par D. Monniaux d’abord [75], et ensuite par J. Goubault-Larrecq dans [53]. Dans ces
deux derniers cas, des automates d’arbres permettent de représenter les ensembles de messages
acceptables par les participants.
Le handicap majeur des méthodes basées sur les problèmes d’accessibilité est que la question
posée concerne l’existence d’une suite de transitions, alors que la correction d’un protocole est une
propriété dépendante de toutes les suites de transitions. Pour que le résultat de l’analyse ait un
sens, il est raisonnable de demander, au moins, que si un outil déclare un protocole comme correct,
ce protocole le soit. L’indécidabilité du problème de la vérification de protocoles cryptographiques
implique alors que si les protocoles déclarés corrects par l’outil le sont bien, des protocoles corrects
pourront être déclarés comme fautif ou aucune réponse ne sera donnée pour certains protocoles.
Méthodes semi-automatiques. Une méthode dont toutes les réponses sont exactes ne peut
pas toujours rendre de réponse en un temps fini. Dans cette catégorie, il est possible de citer les
travaux de M. Debbabi et al. [33]. Un outil reposant sur la résolution symbolique de contraintes
est donné. Un protocole est transformé en un système de règles d’inférence ne terminant pas, et
un algorithme générique permet de transformer ce système en un système de règles terminant. La
terminaison de l’algorithme de transformation n’est pas assurée. Le handicap de cette méthode est
que même en cas de terminaison de l’algorithme de transformation, seul un certain type de failles
peut être analysé.
Une méthode très similaire est implantée dans l’outil Athena [98, 99]. Cet outil construit
récursivement des ensembles d’exécutions possibles du protocole tout en considérant un nombre
infini de participants. Le nombre de suites de transitions est infini. Le principal avantage de cet
outil est que l’utilisateur peut spécifier des conditions d’arrêt, qui sont à prouver par ailleurs. Il
semble de plus, d’après [98, 99], que les performances de l’outil, sur les protocoles étudiés, dépend
fortement de la stratégie d’exploration de l’ensemble des suites de transitions, qui doit être spécifiée
par l’utilisateur.
Certains auteurs ont proposé l’utilisation de systèmes semi-automatiques, c’est-à-dire dont la
terminaison, n’est pas assurée, et déclarant parfois comme fautif un protocole correct. La princi-
pale motivation est la recherche d’outils efficaces. Dans [10], par exemple, B. Blanchet décrit la
construction d’un système de règles Prolog décrivant toutes les actions possibles d’un adversaire en
présence d’un nombre infini de participants. Si cette construction termine, il est possible de vérifier
un protocole. Cette construction a été raffinée dans [11, 12] pour prendre en compte les propriétés
d’authentification.
1.3. Contenu de la thèse 9
Méthodes dont la terminaison est assurée. Pour assurer la terminaison dans le cas d’un
nombre non-borné de participants, il est nécessaire de pouvoir représenter le nombre infini de suites
de transitions possibles par un nombre fini de transitions symboliques. Plusieurs approches sont
possibles dans ce cadre.
Le premier type d’approche consiste à calculer un sur-ensemble de l’ensemble des connais-
sances possibles de l’adversaire. Par exemple, T. Genet et F. Klay sur-approchent les connaissances
de l’intrus à travers une représentation des déductions possibles de l’intrus par des automates
d’arbres [51]. L’avantage de cette méthode est de permettre la preuve de la correction de certains
protocoles. J. Goubault-Larrecq affine l’utilisation des automates d’arbre en considérant des ∨PTA
automates [53]. Les résultats donnés ne prennent actuellement en compte que des cas où c’est un
participant spécial qui participe à un nombre non-borné de sessions.
Le second type d’approche consiste à projeter l’ensemble des états (infini) d’une exécution de
protocole ayant un nombre non-borné de participants sur un ensemble d’états fini. Si la projection
respecte la relation de transition, on parle alors d’abstraction. Une telle projection respecte les
attaques de secrets [27]. L. Bozga, Y. Lakhnech et M. Perin [59], par exemple, fusionnent les
données échangées lors de différentes sessions du protocole et à ne considérent qu’un nombre fini
de participants pour se ramener au cas d’un nombre fini de données atomiques. Les auteurs traitent
également le cas de messages de taille non-bornée en éliminant les possibilités de divergence grâce
à une notion de chapeaux. C’est à notre connaissance l’un des rares travaux sur la vérification de
protocoles où un outil terminant permet de vérifier des protocoles dont les messages sont de taille
non-bornée.
Expressivité. Nous avons, en collaboration avec M. Bouallagui, étendu l’ensemble des opérations
disponibles pour spécifier un protocole. Nous avons aussi changé la gestion des connaissances des
participants pour tenir compte de l’utilisation de clefs non atomiques.
Fondations théoriques. Le deuxième axe de travail sur le compilateur CasRul a été de fonder
le processus de compilation sur des bases théoriques solides. Nous avons défini formellement la
notion d’exécutabilité d’un protocole. Le résultat sur les problèmes d’accessibilité clos permet de
montrer qu’il est possible de savoir si un protocole est exécutable ou non en temps polynomial.
Nous définissons ensuite la représentation de ses connaissances par un participant cherchant à les
analyser au maximum. Cette représentation se base sur un ensemble minimal de connaissances
qu’il n’est pas possible d’inférer les unes à partir des autres, et tel que tous les autres messages
ou parties de messages connus peuvent être exprimés comme des termes sur cet ensemble. Cette
représentation minimale permet de prouver certaines propriétés sur les règles de réception/envoi
de messages par les participants qui sont utilisées dans la suite de ce document, ainsi que dans
plusieurs articles [19, 20].
10 Chapitre 1. Analyse de protocoles cryptographiques
Recherche efficace de failles. Nous avons, dès novembre 2000 [24], réalisé l’implantation d’une
stratégie de déduction par résolution de contraintes. Cette stratégie est aussi appelée lazy intruder
strategy, bien qu’elle soit indépendante des techniques présentées dans [88, 93]. La complexité (le
problème est NPTIME-complet pour la recherche de failles) de cette stratégie a ensuite été prouvée
dans [90]. Nous donnons une preuve de complétude et de correction pour la recherche d’attaques
qui nous semble plus simple que celles présentées à ce jour.
Recherche de failles lorsque des opérateurs algébriques sont considérés. Nous avons
étendu la recherche de failles dans le cadre d’un nombre borné de sessions aux cas où des opérateurs
algébriques, tels que le ou exclusif bit à bit [19] ou l’exponentiation [20], sont considérés. Nous
avons tenté, dans ce document, de simplifier les preuves des algorithmes donnés. Le lecteur pourra
se référer aux rapports de recherche correspondants pour comparaison.
Preuve dans un cadre théorique. Nous avons ensuite montré que l’algorithme implanté est
EXPTIME-complet dans [22]. Là encore, nous espérons que la présentation de la preuve de correc-
tion et de complétude dans ce document est plus simple que celle du rapport de recherche.
Nous commençons par décrire dans le chapitre 2 les protocoles cryptographiques que nous
considérons. Nous donnons les définitions des termes relatifs utilisés dans le reste de ce document.
Nous précisons aussi les primitives cryptographiques que nous considérons comme importantes, et
décrivons leurs propriétés. Enfin, nous décrivons les différents types de failles que nous recherchons,
ainsi que l’adversaire visant à exploiter ces failles.
Nous considérons, tout au long de ce document, des constructeurs de messages vérifiant certaines
propriétés algébriques. Nous définissons dans le chapitre 3 des termes opérations représentant les
messages pouvant être construits avec ces opérateurs, et des termes valeurs représentant les valeurs
de ces messages, ainsi qu’une fonction de normalisation sur les termes valeurs. Nous montrons qu’il
existe un isomorphisme entre les classes d’équivalences des termes opérations et les formes normales
des termes valeurs. Cette forme normale sera utilisée dans le reste de ce document pour décrire les
messages échangés par les participants ou connus de l’adversaire.
Tous les problèmes que nous avons présentés peuvent se formuler comme des problèmes d’acces-
sibilité pour un système de transitions défini par des règles de réécritures sur des ensembles. Dans
le chapitre 4, nous définissons ces systèmes de réécritures, et donnons une propriété de combinaison
permettant de construire des systèmes de réécritures sur des ensembles locaux. Nous montrons que
les règles de réécritures sur les ensembles associées aux opérateurs que nous considérons peuvent
toujours être combinées pour former un système local. Ce résultat permet de montrer que pour
tout système de réécriture L formé par combinaison de règles associées aux opérateurs, savoir si
un terme peut être obtenu à partir d’un ensemble de termes en utilisant les règles de L peut être
résolu en temps polynomial.
1.3. Contenu de la thèse 11
Fondements
13
2
Primitives cryptographiques
Ce chapitre, très largement inspiré de [95], décrit des modes de chiffrement et des
primitives cryptographiques utilisés en pratique. Si sa lecture, nous l’espérons, permet
de mieux décrire les systèmes étudiés, il n’y a pas ici de contenu technique relatif au
reste de ce document.
Chiffrement parfait :
Le chiffrement est dit parfait si :
– pour deux messages M et M 0 et deux clefs K et K 0 , le chiffrement de M par
K est égal au chiffrement de M 0 par K 0 si, et seulement si, M est égal à M 0
et K est égale à K 0 ;
– il n’est pas possible de composer le chiffrement d’un message M par une clef
K sans connaı̂tre M et K ;
– pour connaı̂tre un message M à partir du chiffrement de M par une clef K,
il est nécessaire de connaı̂tre la clef K 0 permettant de déchiffrer les messages
chiffrés par K ;
15
16 Chapitre 2. Primitives cryptographiques
message ...
en clair
chiffrement f f f
message
chiffré ...
Ce type de chiffrement n’offre pas de garanties sur l’ordre des blocs. Il est de plus possible
d’extraire des blocs de différents messages chiffrés par une même clef K et de composer un nouveau
message chiffré par K.
Propriété d’homomorphisme :
Un message C1 · . . . · Cn est le résultat du chiffrement d’un message M1 · . . . · Mn
par une clef K si et seulement si Ci est le résultat du chiffrement de Mi par
cette clef K, pour i ∈ {1, . . . , n}.
Chiffrement par blocs en mode chaı̂né (mode CBC). Dans ce mode de chiffrement, le
chaı̂nage se fait sur les blocs du message en clair. Notons M1 , . . . , Mn les blocs à chiffrer. Les blocs
du message chiffré seront C1 , . . . , Cn , avec :
Ci = f (Ci−1 ⊕ Mi ))
pour i ∈ {1, . . . , n}. Graphiquement, l’opération de chiffrement d’un message est représentée dans
la figure 2.2.
Chiffrement à rétroaction, sur le texte codé. L’un des inconvénients du chiffrement par
blocs en mode chaı̂né est qu’il est nécessaire de disposer d’un bloc entier avant d’émettre un
2.1. Modes de chiffrement 17
message
en clair ...
f f f
message
chiffré ...
message. Le chiffrement à rétroaction se fait sur le texte chiffré, à partir d’un bloc initial aléatoire.
Notons M1 , . . . , Mn les blocs à chiffrer. Les blocs du message chiffré seront C1 , . . . , Cn , avec :
Ci = Mi ⊕ f (Ci−1 )
pour i ∈ {1, . . . , n}. Graphiquement, l’opération de chiffrement d’un message est représentée dans
la figure 2.3. Ce chiffrement est utilisé lorsque la taille des messages à envoyer est petite. Cela peut
être la transmission sécurisée d’un caractère d’un terminal vers un serveur, par exemple.
message
...
en clair
f f f
message
chiffré ...
Propriétés du mode chaı̂né. Un vecteur d’initialisation est utilisé pour le premier bloc. Si le
chaı̂nage empêche une reconstitution arbitraire d’un message à partir de blocs, il permet toutefois
l’extraction de préfixes. En effet, dans les deux modes (chaı̂né et à rétroaction), le préfixe d’un
message chiffré est un message chiffré. Dans la suite de ce document, nous prendrons en compte
cette propriété de préfixe :
18 Chapitre 2. Primitives cryptographiques
1. uniquement sur le chiffrement en bloc chaı̂né. L’autre mode de chiffrement, ayant des pro-
priétés identiques, n’est pas considéré ;
2. uniquement pour le chiffrement symétrique.
Les techniques utilisées permettraient cependant d’élargir sans difficulté l’analyse à tout opérateur
de chiffrement symétrique ou asymétrique ayant la propriété de préfixe, c’est-à-dire :
Propriété de préfixe :
Si C1 · . . . · Cn est un message chiffrant M1 · . . . · Mn par une clef K, alors pour
tout i ∈ {1, . . . , n}, le message C1 · . . . · Ci est égal au chiffrement du message
M1 · . . . · Mi par la même clef K.
EK : M → M
DK : M → M
Le calcul de d en fonction de e (et réciproquement) est très facile dès que ϕ(n) est connnu. L’un
de ces entiers, e par exemple, est choisi comme étant la clef publique, l’autre étant la clef privée.
L’entier n est mis à la disposition de tous en même temps que e. Un message M à chiffrer est
d’abord scindé en blocs représentant des entiers mi inférieurs à n. Le chiffrement de chaque bloc
m est l’entier :
c = me mod n
Pour déchiffrer, en utilisant le petit théorème de Fermat, il suffit de calculer :
m = cd mod n
Il n’existe pas actuellement de résultat de complexité donnant une borne inférieure difficile
sur le temps de calcul de la factorisation d’un entier n. Le meilleur algorithme connu permet la
1
factorisation d’un entier n en environ n 3 étapes. Autrement dit, pour un nombre premier de 1024
bits, il faut compter sur environ 2341 étapes de calcul.
« grand ». Une possibilité, pour assurer cette condition, est de choisir un entier x (resp. k) tel que
g x (resp. g k ) soit générateur de ( n )∗ , c’est-à-dire x (resp. k) premier avec ϕ(n).
De même que dans le cas du chiffrement RSA, il n’existe pas actuellement de borne inférieure
difficile connue à la complexité du calcul du logarithme discret. Pour des clefs de même longueur,
ce second est toutefois considéré comme étant plus sûr. Le meilleur algorithme connu permet en
1
effet de trouver le résultat en environ n 2 étapes. Pour un entier n à 1024 bits, celà signifie que
le temps de calcul pour trouver la clef privée en fonction des paramètres publiques sera 2171 (en
notation décimale, un 1 suivi d’une cinquantaine de 0) fois plus lent dans le cas du chiffrement El
Gamal que dans le cas du chiffrement RSA.
Commutation de clefs :
Nous appelons chiffrement de type RSA un algorithme de chiffrement à clefs
asymétriques tel que, pour tout couple (K1 , K2 ) de clefs, et pour tout message
M : (
{M }K1 K = {M }K2 K
2 1
{M }K1 K −1 = M
1
Signature :
Nous utilisons les mêmes opérateurs pour décrire les opérations de signature et
de chiffrement. La différence entre ces deux opérations réside dans l’utilisation
de la clef privée dans le premier cas, et de la clef publique dans le second.
dès que les deux parties partagent un secret, la clef. Il est en effet beaucoup plus rapide que le
chiffrement asymétrique, et certains algorithmes tels que DES peuvent même faire l’objet d’une
implantation sur circuits imprimés.
Exponentielle discrète :
nous modélisons les propriétés suivantes de l’exponentielle modulaire, pour tous
les messages g, x et y considérés comme des entiers :
(g x )y ≡ (g y )x mod n
−1
(g x )x ≡ g mod n
Dans la suite de ce document, l’opérateur −1 dénotera la clef privée associée à une clef publique.
Afin d’éviter toute confusion, nous noterons l’inverse de x en notation additive, c’est-à-dire −x.
La première équation correspond à l’existence d’un élément neutre pour l’opérateur ⊕, et la seconde
à la nilpotence de l’opérateur ⊕.
On se place dans le cas d’un ensemble fini à n éléments, et on tire k éléments parmi les n au
hasard et avec remise. Nous notons ωk,n l’événement :
Si on suppose que chaque élément est choisi avec la même probabilité, alors un calcul facile montre
que la probabilité de ωk+1,n , notée pk+1,n , est :
n!
pk+1,n =
(n − k)! · nk
Pour k de l’ordre de grandeur de la racine carrée de n et n grand, cette probabilité est non-
négligeable (proche de 1e ).
L’attaque d’anniversaire consiste à choisir des messages au hasard, à en calculer l’empreinte par
toutes les clefs possibles, et à s’arrêter lorsque deux messsages distincts ont la même empreinte. Si
les messages chiffrés sont longs de n bits, on peut espérer trouver deux messages de même empreinte
n
au bout de 2 2 essais. Le nom de cette attaque tient son origine de l’utilisation qui peut en être
faite dans une salle d’une vingtaine de personne : il y a environ une chance sur deux que deux
personnes aient la même date anniversaire.
2.3. Fonctions à adressage dispersé 23
2.3.1.ii Exemple
L’exemple suivant est tiré de [95]. Supposons que deux personnes, Alice et Bob, désirent signer
un contrat. Alice peut monter une attaque d’anniversaire pour duper Bob de la manière suivante.
1. Alice commence par préparer deux versions du contrat, une en sa faveur, et l’autre favorable
à Bob ;
2. ensuite, elle apporte des modifications aux deux contrats, dans le but d’obtenir deux versions
différentes ayant la même empreinte.
Si les rôles d’Alice et Bob sont symétriques, le contrat sera probablement nul, car chacun possédera
un témoin de sa version. Mais si Alice est une notaire et garde seule le témoin, Bob n’a plus aucun
moyen de prouver que sa version du contrat est celle qu’il a accepté de signer.
L’utilisation de fonctions à adressage dispersé rend inévitables les attaques d’anniversaire. La
bonne nouvelle est que pour avoir une bonne chance de trouver deux contrats de même image, et
si le témoin est de longueur n, l’espérance du nombre de modifications qu’Alice doit essayer est de
n
l’ordre de 2 2 . On considère à l’heure actuelle que choisir des témoins de longueur supérieure ou
égale à 128 bits est suffisant pour éviter de telles attaques en pratique.
MD5. La fonction MD5 est une version sécurisée d’une version précédente, MD4. Elle produit
des empreintes de 128 bits de long pour des messages de taille quelconque. Le principe adopté est
de commencer par scinder le message en blocs de 512 bits, de traiter chaque bloc en fonction du
résultat sur le bloc précédent. La longueur totale du message est codée dans le dernier bloc, ce qui
empêche a priori toute relation entre la valeur pour un message M et un préfixe de M .
Une étape préliminaire de l’algorithme MD5 est l’étape de compression. Une constante de 128
bits de long est concaténée à un bloc de 512 bits, et le message de 640 bits est réduit à un message
de longueur 128 bits. La fonction permettant de passer des messages de 640 bits à ceux de 128 est
appelée fonction de compression. Une attaque a été montée [14] permettant de trouver des collisions
sur cette fonction. Cette attaque ne permet cependant pas de créer des collisions au niveau des
empreintes à cause de la constante de 128 bits concaténée. Bien qu’aucune attaque réelle n’ait été
trouvée, cette faiblesse conduit [95] à conseiller de lui préférer l’algorithme SHA.
SHA. Il s’agit d’une autre évolution de l’algorithme MD5. Les empreintes produites sont longues
de 160 bits, et cette fonction à adressage dispersé semble plus sûre que MD5. Aucune faiblesse n’a
été trouvée jusqu’ici. On peut donc provisoirement considérer que cet algorithme est une fonction
à adressage dispersé parfaite.
24 Chapitre 2. Primitives cryptographiques
3
3.1 Introduction
Dans ce chapitre, nous donnons un cadre formel pour l’étude des messages. Après avoir rappelé
des notions de base sur les ensembles et les multi-ensembles dans le reste de cette introduction,
nous allons traiter le problème des égalités entre messages. Dans le cadre classique d’étude de
protocoles cryptographiques, le chiffrement est supposé parfait, et des opérations telles que le
ou exclusif bit à bit ne sont pas considérées. Ces hypothèses permettent de traiter les messages
échangés comme des termes sur une signature comprenant les constantes et les opérations de
chiffrement, concaténation,. . . Cette représentation des messages sera définie à la section 3.3.3.
Nous nommons ces termes des termes opérations pour souligner qu’ils représentent la suite des
opérations aboutissant à un message.
Pour prendre en compte les égalités possibles entre messages construits différemment, deux
possibilités s’offrent à nous. La première, utilisée classiquement en déduction automatique, est
d’utiliser des règles de déduction modulo la théorie décrivant les égalités possibles. Ce raisonnement
modulo peut être fait soit de manière syntaxique, en ajoutant des règles de déduction pour modéliser
les égalités, soit de manière sémantique, en testant l’égalité modulo lors de l’application d’une règle
de déduction. L’inconvénient de cette solution est qu’elle se prête mal à l’analyse de complexité,
et qu’il est difficile de raisonner sur les suites de déductions. Cela nous amène à la deuxième
possibilité, qui est de considérer des représentants des classes d’équivalences des termes opérations.
Afin de simplifier l’écriture, pour les constructeurs associatifs et commutatifs, nous utiliserons des
ensembles ou des multi-ensembles dans l’écriture de ces termes. Afin de bien les différencier des
termes opérations, nous les nommons termes valeurs. Ils sont définis dans la section 3.3.5. Une
fonction de normalisation est définie sur ces termes valeurs (section 3.4), et nous montrons que les
termes valeurs en forme normale représentent de manière unique les classes d’équivalence sur les
termes opérations. Dans la suite de ce document, nous utiliserons toujours des règles de déduction
sur des termes valeurs en forme normale, qui seront plus simplement appelés termes.
Enfin, nous donnons dans la section 3.5 une représentation possible des termes valeurs, et
donnons la complexité d’opérations usuelles sur les termes (égalité, sous-terme,...) Cette section
sera utilisée implicitement dans le reste de ce document pour donner la complexité de problèmes
de décisions liés à l’étude de protocoles cryptographiques.
25
26 Chapitre 3. Termes, classes d’équivalence et représentations
(α) = { t ∈ T | α(t) 6= 0}
Dans la suite, pour deux ensembles A et B, nous notons B A l’ensemble des fonctions de A vers
B, et BA l’ensemble des fonctions de A vers B dont le support est dans Pfini (A).
Définition 3
La différence symétrique de deux ensembles E et F , notée E∆F , est l’ensemble défini par :
E∆F = (E ∪ F ) \ (E ∩ F )
Proposition 1
Il existe un isomorphisme de groupe ψ entre (Pfini (T ), ∆, ∅) et (( /2 )T , +, 0).
3.2.3 Multi-ensembles
Définition 4 (Multi-ensemble)
Un multi-ensemble M sur T est une fonction de T vers . Le support de M, noté (M), est
l’ensemble :
(M) = { t ∈ T | M(t) > 0}
Un multi-ensemble est fini si son support est de cardinal fini.
– la soustraction de N à M :
M(t) − N (t) si M(t) ≥ N (t)
∀t ∈ T, (M − N )(t) =
0 sinon
Nous utilisons les multi-ensembles pour modéliser le chiffrement de type RSA. La soustraction
de multi-ensembles sera définie dans ce cadre sera définie en fonction de l’opérateur −1 .
– la soustraction de N à M :
Les multi-ensembles généralisés seront utilisés pour modéliser les exposants d’une exponentielle.
3.3 Termes
3.3.1 Introduction
3.3.1.i Les messages comme suite d’opérations
Le but de cette section est de parvenir à décrire les messages échangés durant l’exécution d’un
protocole cryptographique. Ces messages sont construits à partir de valeurs de base (une adresse, un
nom, une date,...) en utilisant les opérations (concaténation, chiffrement,...) décrites au chapitre 2,
section 2.2. La possibilité la plus simple, pour représenter ces messages, serait de les définir par la
suite d’opérations aboutissant à leur création. Par exemple, un message construit en faisant le ou
exclusif bit à bit de deux sous-messages a et b, puis en faisant un ou exclusif bit à bit du résultat
avec un sous message c, pourrait être décrit par l’expression :
⊕(⊕(a, b), c)
28 Chapitre 3. Termes, classes d’équivalence et représentations
3.3.2 Généralités
3.3.2.i Signature et termes standards
Rappelons la définition d’un signature.
Définition 8 (Signature)
Une signature est un couple (A, α) avec A un ensemble de symboles, et α : A → ∪ {∗} une
fonction d’arité.
Un symbole a ∈ A est une constante si α(a) = 0. Un symbole a est d’arité variable si α(a) = ∗.
a( , . . . , )
| {z }
α(a) fois
où α(a) n’est pas précisé pour les symboles d’arité variable. Cette notation permet d’écrire de
manière concise une signature comme un ensemble de symboles. Par exemple, l’ensemble {a( , ), b}
désigne la signature ({a, b} , {a 7→ 2, b 7→ 0}). Les signatures sont notées par le symbole F accom-
pagné des décorations habituelles.
Définition 9 ( Termes standards sur une signature) Soit F = (A, α) une signature. L’ensemble
T (F) des termes standards sur la signature F est le plus petit ensemble contenant {a ∈ A | α(a) = 0}
et tel que
3.3. Termes 29
∀i ∈ {1, . . . , n} , ai ∈ X (3.1)
∀i, j ∈ {1, . . . , n} , ai = bi ∨ ai ∈
/ (bj ) (3.2)
La première condition indique qu’une substitution est une fonction des variables X vers les
termes, égale à l’identité sur X \ {a1 , . . . , an }. La seconde condition implique :
a) si σ est une substitution et t un terme, alors (tσ)σ = tσ ;
b) l’ordre d’application des remplacements [ai ← bi ] n’affecte pas la valeur du résultat.
Le support d’une substitution σ est l’ensemble {x ∈ X | xσ 6= x}. Une substitution σ = ([ai ←
bi ])i∈{1,...,n} est close si (∪ni=1 (bi )) ∩ X = ∅.
30 Chapitre 3. Termes, classes d’équivalence et représentations
et le chiffrement de type RSA (ΘRSA ). Ces théories sont définies par des relations d’équivalences
entre termes opérations, notées ≡Θproto (resp. ≡Θxor , ≡Θexp et ≡ΘRSA ).
Remarque : un opérateur associatif aurait forcé à résoudre des équations sur des mots
lors de la recherche d’attaques sur un protocole. Ces équations ont en général un nombre
infini de solutions plus générales, et s’il est conjecturé que trouver la solution la plus
courte d’une équation de mots est dans NPTIME par W. Plandowski et W. Rytter [86],
et montré que le problème de la satisfaisabilité est dans PSPACE par Plandowski [85],
l’algorithme proposé ne semble pas raisonnable à utiliser. Pour une équation a = b,
il consiste essentiellement à deviner une représentation compressée z (resp. z 0 ) d’une
instance de a (resp. de b), et à chercher si z et z 0 représentent le même mot.
0 0
⊕ (a, b) =Θxor ⊕ (b, a) (3.3)
0 0 0
⊕ (a, ⊕ (b, c)) =Θxor ⊕ ( 0 ⊕ (a, b), c) (3.4)
De plus, il existe une constante 0 telle que, pour tous les termes opérations a, on a :
0
⊕ (a, a) =Θxor 0 (3.5)
0
⊕ (a, 0) =Θxor a (3.6)
Pour deux termes opérations a et b, on note a ↔Θxor b s’il existe un sous-terme a1 de a et b1
de b tels que :
– a1 =Θxor b1 ;
– a = t[a1 ] et b = t[b1 ].
Il est évident que ↔Θxor est une relation réflexive et symétrique.
0
0 p,rsa p,rsa 0
0 p,rsa p,rsa
{a}b c
=ΘRSA {a}c b
(3.7)
0 0
p,rsa p,rsa
{a}b b−1
=ΘRSA a (3.8)
Pour deux termes opérations a et b, nous notons a ↔ΘRSA b s’il existe un sous-terme a1 de a et
b1 de b tels que :
– a1 =ΘRSA b1 ;
– on a a = t[a1 ] et b = t[b1 ].
Il est évident que ↔ΘRSA est une relation réflexive et symétrique.
0
Exp( 0 Exp(a, b), c) =Θexp 0
Exp( 0 Exp(a, c), b) (3.9)
0 − 0 +
Exp ( Exp (a, b), b) =Θexp a (3.10)
Les opérateurs 0Exp− ( , ) et 0Exp+ ( , ) ne sont pas distingués dans la première équation.
Pour deux termes opérations a et b, nous notons a ↔Θexp b s’il existe un sous-terme a1 de a et b1
de b tels que :
– a1 =Θexp b1 ;
– en remplaçant a1 par b1 dans a, on obtient b.
Il est évident que ↔Θexp est une relation réflexive et symétrique.
Nous notons ↔proto =(↔Θxor ∪ ↔ΘRSA ∪ ↔Θexp ) la relation entre termes opérations telle que
pour tous les termes a et b, on a a ↔proto b si, et seulement si, on a a ↔Θxor b ou a ↔ΘRSA b ou
a ↔Θexp b.
Enfin, nous notons ≡Θproto (resp. ≡Θxor , ≡ΘRSA , ≡Θexp ) la clôture transitive de ↔proto (resp.
↔Θxor , ↔ΘRSA , ↔Θexp ).
n op,rsa n op,rsa
0 0 0 p,rsa p,rsa 0 0 0 p,rsa p,rsa
{m}kb ka
↔ΘRSA {m}kb kb−1
kb−1 ka
0 p,rsa
↔ΘRSA {m}ka
Cette égalité est utilisée dans la définition du protocole RSA d’échange de secret, et doit donc
être prise en compte. Dans cette section, on définit inductivement un ensemble T(Fproto ) de termes
valeurs, ainsi qu’une relation Rψ entre termes opérations et termes valeurs. Pour décrire ces termes
valeurs, on utilise les mêmes symboles qu’en section 3.3.3, l’indice 0 en moins, et on ne différencie
pas Exp− ( , ) et Exp+ ( , ). Nous montrons par induction que le terme valeur tv associé à un terme
opération to est défini de manière non ambiguë. La relation Rψ sera donc une fonction ψ. Nous
prouverons enfin, dans la section 3.4.2.ii, que deux termes opérations ayant la même image par ψ
sont dans la même classe d’équivalence.
3.3.5.i Constantes
Tout symbole d’arité 0 est une valeur. Deux constantes différentes correspondent à 2 valeurs
différentes. Suppose qu’en plus des constantes définies dans la signature, il y ait deux constantes 0
et 1 dont la valeur est fixée. Ces valeurs seront représentées par un ensemble vide (cas du 0 pour
l’opérateur ⊕({ })) ou un multi-ensemble généralisé de support vide (cas du 1 pour l’opérateur
Exp( , )). Nous définissons Rψ , sur les constantes, comme égale à la fonction identité.
3.3. Termes 33
Ces symboles sont dits libres car, pour des termes valeurs a, a0 , b, b0 , on a :
f (a1 , ..., an ) ≡Θproto f 0 (b1 , . . . , bm ) implique n = m, pour tout i ∈ {1, . . . , n} , ai ≡Θproto
bi , et f = f 0 , pour f, f 0 ∈ Fl \ −1
Enfin, pour l’opérateur −1 , on impose que t−1 est un terme valeur si, et seulement si, il n’existe
pas de terme valeur u tel que t = u−1 .
Soit 0 f (a1 , . . . , an ) un terme opération, avec 0f ∈ 0Fl . Par induction, supposons que Rψ soit
une fonction ψ sur a1 , . . . , an . Rψ est alors étendue sur 0 f (a1 , . . . , an ) par :
0
f (a1 , . . . , an ) Rψ f (ψ(a1 ), . . . , ψ(an ))
p,rsa
3.3.5.iii Opérateur { }
Nous cherchons à modéliser l’égalité des valeurs ≡ΘRSA pour un algorithme de chiffrement
asymétrique commutatif et pour lequel les algorithmes de chiffrement et de déchiffrement sont
p,rsa
identiques. Soit m un terme qui n’est pas de la forme {a}b 0 , et soit :
n p,rsa o
p,rsa
E(m) = t ∈ T0 (F0 ) | ∃t1 , . . . , tn ∈ T0 (F0 ), t = . . . {m}t1 . . . t
n
Proposition 2
Soit T 0 = T0 (F0 ) \ t−1 | t ∈ T(F0 ) . Il existe une bijection ψ entre E(m)/≡ΘRSA et
T0.
ψ: E(m)/≡ΘRSA → T0
p,rsa p,rsa
. . . {m}t1 . . . t 7→ Σni=1 ϕti
n
Pour que ψ soit bien définie, il faut que les images des éléments d’une classe coı̈ncident. Suppo-
sons que m, t1 , . . . , tn , t01 , . . . , t0m sont des représentants canoniques de classes d’équivalences pour
≡Θproto , et que :
p,rsa n op,rsa
0 p,rsa p,rsa
. . . 0 {m}t1 0
. . . 0 {m}t0 . . . 0
... t ↔ΘRSA
n 1 tm
Le multi-ensemble des ψ(ti ), i ∈ {1, . . . , n} comptés avec multiplicité est unique, et ψ(m) est
unique. Donc tv est unique, et on peut noter tv = ψ(to ).
0
Preuve. a) il suffit d’utiliser la commutativité sur le sous-terme ⊕ le plus à gauche dans
w0 ⊕ ;
b) en utilisant l’associativité, il est possible de trouver un 0
⊕ -terme pur w00 ⊕ tel que :
w0 ⊕ [t1 , t2 , . . . , tn ] ≡Θxor 0
⊕ (w00 ⊕ [t1 , . . . , tn−1 ], tn )
=Θxor 0
⊕ (tn , w00 ⊕ [t1 , . . . , tn−1 ])
Nous notons Fproto une signature dont l’ensemble des symboles d’arité non nulle est :
n o
s s,ebc s,cbc p p,rsa −1
h , i,{ } ,{ } ,{ } ,{ } ,{ } , H( , ), Exp( , ), ⊕({ }),
s,ebc s,cbc
Les constructeurs { } et { } sont d’arité variables et ont toujours au moins deux arguments.
Le dernier argument est la clef, et est noté à l’extérieur des accolades.
Les constantes représentent des valeurs de base à partir desquelles les messages sont composés.
Les fonctions de normalisation sont donc définies comme égales à l’identité sur les constantes. Si
c ∈ Fproto est une constante, on a, pour tout f ∈ Fproto :
pcq = pcqf = c
36 Chapitre 3. Termes, classes d’équivalence et représentations
Définition 13 (⊕-facteurs)
– Si t = ⊕({t1 , . . . , tn }), alors l’ensemble des ⊕-facteurs de t est :
– sinon
Facteur⊕ (t) = {ptq}
La notation ∆ni=1 Ei est bien définie, car ∆ est associative et commutative. Nous définissons
maintenant p q sur T(Fproto ).
Définition 14 (p qxor )
Si t ∈ T(Fproto ), alors :
– si t = ⊕({t1 , . . . , tn }),
⊕({Facteur⊕ (t)}) si |Facteur⊕ (t)| ≥ 2
ptqxor = u si Facteur⊕ (t) = {u}
0 si Facteur⊕ (t) = ∅
– sinon, ptqxor = t.
– sinon
FacteurExp (t) = ∅
– Exp-base :
– Si t = Exp(b, M), alors la Exp-base de t est :
– sinon
BaseExp (t) = t
Cette définition implique que s’il existe t et u normalisés tels que u = BaseExp (t), alors u n’est
pas un Exp-terme. Un équivalent de la proposition 2 pour l’exponentielle pourra donc être appliqué.
Mais d’abord, choisissons comme fonction de normalisation celle qui envoie un terme t sur le terme
Exp(BaseExp (t), FacteurExp (t)).
3.4. Normalisation des termes valeurs 37
Définition 16 (p qexp )
Si t ∈ T(Fproto ), alors :
– si t = Exp(b, M),
exp Exp(BaseExp (t), FacteurExp (t)) si (FacteurExp (t)) 6= ∅
ptq =
BaseExp (t) si (FacteurExp (t)) = ∅
– sinon, ptqexp = t.
p,rsa
3.4.1.v Normalisation pour l’opérateur { }
p,rsa
La fonction de normalisation pour l’opérateur { } est similaire à celle de l’opérateur Exp( , ),
p,rsa p,rsa
et utilise aussi les notions de { } -facteurs et la { } -base d’un terme t.
Add(M1 , M2 ) = M3
si pour tout terme en forme normale t qui n’est pas de la forme u−1 : :
a)
M1 (t) + M2 (t) − (M1 (t−1 ) + M2 (t−1 )) = M3 (t) − M3 (t−1 )
b) soit M3 (t) = 0, soit M3 (t−1 ) = 0.
Opposé. Nous définissons aussi l’opposé d’un multi-ensemble M comme étant le multi-ensemble
M0 tel que Add(M, M0 ) = 0. Nous notons Opp(M) l’opposé d’un multi-ensemble M.
Nous définissons maintenant les facteurs et la base pour un opérateur de chiffrement de type
RSA.
p,rsa p,rsa
Définition 17 ({ } -facteurs et { } -base)
p,rsa
– {} -facteurs :
p,rsa p,rsa
– Si t = {b}M , alors l’ensemble des { } -facteurs de t est :
– sinon
Facteurrsa (t) = ∅
p,rsa
– {} -base :
p,rsa p,rsa
– Si t = {b}M , alors la { } -base de t est :
– sinon
Basersa (t) = t
Cette définition implique que s’il existe t et u normalisés tels que u = Basersa (t), alors u n’est pas
p,rsa
un { } -terme. La proposition 2 pourra donc être appliquée. Mais d’abord, choisissons comme
p,rsa
fonction de normalisation celle qui envoie un terme t sur le terme {Basersa (t)}Facteurrsa (t) .
Définition 18 (p qrsa )
Si t ∈ T(S), alors :
p,rsa
– si t = {b}M ,
p,rsa
{Basersa (t)}Facteurrsa (t) si (Facteurrsa (t)) 6= ∅
ptqrsa =
Basersa (t) si (Facteurrsa (t)) = ∅
– sinon, ptqrsa = t.
38 Chapitre 3. Termes, classes d’équivalence et représentations
3.4.1.vi Exemple
et calculons sa forme normale. Tout d’abord, a, c, ⊕({a, c}) et Exp(⊕({a, c}), a) sont en forme
normale. Calculons la forme normale de Exp(Exp(⊕({a, c}), {a}), {−a}). On a :
– BaseExp (Exp(Exp(⊕({a, c}), {a}), {−a})) = ⊕({a, c}) ;
– FacteurExp (Exp(Exp(⊕({a, c}), {a}), {−a})) = {a} + {−a} = 0 ;
On en conclut :
exp
pExp(Exp(⊕({a, c}), {a}), {−a})q = ⊕({a, c})
Facteur⊕ (⊕({a, Exp(Exp(⊕({a, c}), {a}), {−a}), c})) = {a} ∆Facteur⊕ (⊕({a, c}))∆ {c}
= {a} ∆ {a, c} ∆ {c}
= ∅
Les sous-termes du terme à normaliser sont tous en forme normale, et l’ensemble des ⊕-facteurs
est vide, donc :
xor
p⊕({a, Exp(Exp(⊕({a, c}), {a}), {−a}), c})q = p⊕({a, Exp(Exp(⊕({a, c}), {a}), {−a}), c})q
= 0
Pour le reste de cette sous-section, nous notons ψ la fonction qui associe à un terme opération
t un terme valeur tv tel que défini en section 3.3.5.
Nous rappelons que les messages composés à partir des opérations décrites dans le chapitre 2,
section 2.2, et formalisées dans la section 3.3.3 de ce chapitre, peuvent avoir une même valeur.
La notion de valeur identique est formalisée par une relation d’équivalence ≡Θproto sur les termes
opérations. Dans la section 3.3.5 de ce chapitre, nous avons donné une représentation d’une classe
d’équivalence de la relation ≡Θproto . Cette représentation n’est pas unique, et nous avons affirmé
que la fonction de normalisation permettait d’assurer que deux termes opérations t et t0 sont dans
la même classe (t ≡Θproto t0 ) si et seulement si, pψ(t)q = pψ(t0 )q. La situation peut être résumée
par le diagramme 3.1.
ψ p q
t ψ(t) pψ(t)q
≡Θproto =
ψ p q
t0 ψ(t0 ) pψ(t0 )q
Fig. 3.1 – Relation entre termes opérations, termes valeurs et fonction de normalisation
Dans la sous-section 3.4.2.ii, nous montrons que la flèche verticale de droite implique celle de
gauche, et dans la sous-section 3.4.2.iii, nous montrons que la flèche verticale de gauche implique
celle de droite.
3.4. Normalisation des termes valeurs 39
Preuve. Par construction, ψ(t) = ψ(t0 ) et t f -terme implique t0 f -terme. Montrons par induction
sur les sous-termes que, pour chaque constructeur f et pour tous f -termes t et t0 , ψ(t) = ψ(t0 )
implique t ≡Θproto t0 .
– si f est un constructeur libre ou une constante, t ≡Θproto t0 par définition de ≡Θproto et par
induction sur les sous-termes ;
p,rsa
– si f = 0{ } , soit :
p,rsa p,rsa
t = 0 . . . {m}t1 . . . t
n onp,rsa
0 0 0 p,rsa
t = . . . {m }t0 . . . 0
1 tl
Add(M1 , −M2 ) = 0
Lemme 2
Pour tout terme opération t, il existe un terme opération t0 tel que pψ(t)q = ψ(t0 ). On a alors
t ≡Θproto t0 .
Preuve. Tout d’abord, montrons l’existence de t0 par induction sur les sous-termes de ptq. L’exis-
tence est triviale pour les constantes, et est déduite par induction pour les constructeurs libres.
L’utilisation d’ensembles ou de multi-ensembles ne pose pas de problème.
L’implication est alors prouvée en montrant que chaque étape de normalisation préserve l’ap-
partenance à une classe de ≡Θproto , par induction sur les sous-termes de ψ(t).
pψ(t1 )q = pψ(t2 )q
ψ(t0 )
pψ(t1 )q =
pψ(t0 )q
pψ(t2 )q =
0
t ≡Θproto t1
t0 ≡Θproto t2
Proposition 4
pψ(t)q = pψ(t0 )q implique t ≡Θproto t0
Dans le reste de cette section, nous montrons la réciproque de cette proposition, c’est-à-dire :
Lemme 3
Preuve. La preuve consiste à considérer tous les cas possibles d’égalité, et à montrer que pour
chaque cas, l’égalité de droite est vérifiée.
Pour montrer que ψ est constante sur chaque classe d’équivalence, la proposition suivante
ramène le problème à celui de deux termes égaux modulo Θproto .
Proposition 5
Preuve. Par contradiction, supposons qu’il existe deux termes t et t0 de T0 (0 Fproto ) tels que :
t0
t ≡Θproto
pψ(t)q 6= pψ(t0 )q
Par définition, il existe une suite (ti )i∈{0,...,n} de termes telle que :
a) t0 = t et tn = t0 ;
b) ∀i ∈ {1, . . . , n} , ti−1 ↔Θproto ti .
Soit i ∈ {1, . . . , n} minimal tel que :
pψ(ti−1 )q 6= pψ(ti )q
Par minimalité de i, pψ(ti−1 )q = pψ(t0 )q, donc l’hypothèse t ≡Θproto t0 et pψ(t)q 6= pψ(t0 )q
implique qu’il existe deux termes u et v tels que :
u ↔Θproto v
pψ(u)q 6= pψ(v)q
3.4.2.v Conclusion
Nous venons de démontrer le théorème suivant :
Théorème 1
pψ(t)q = pψ(t0 )q si, et seulement si, t ≡Θproto t0 .
3.5.2 Graphes
Nous considérons que les termes valeurs sont représentés par des graphes finis.
Définition 19 (Graphes)
Un graphe G est un couple (V, E) où V est un ensemble fini, et E une relation sur V . Les éléments
de E sont nommés des sommets. Pour v et v 0 dans V , si vEv 0 , nous disons que le couple (v, v 0 )
est une arête de G.
Si dans un graphe (V, E) la relation E est symétrique, nous disons que le graphe est non-orienté.
Sinon, le graphe est dit orienté. Dans un graphe orienté, un sommet v est le fils d’un sommet s0
s’il existe une arête (v 0 , v). Un graphe (V, E) est un arbre s’il existe un sommet de V qui n’est le
fils d’aucun autre, et si tous les autres sommets v sont fils d’exactement un sommet.
Une classe particulièrement importante de graphes pour représenter les termes est celle des
graphes orientés acyclique (dag, acronyme anglais de Directed Acyclic Graph).
Pour représenter des termes valeurs, nous utilisons des graphes orientés acycliques avec labels
dans . Étant donné un terme valeur t, nous construisons le graphe ( (t), E), où E est la relation
de sous-terme strict maximal. Les labels servent à coder soit la position d’un sous-terme dans les
arguments d’un opérateur, soit la valeur d’un terme par un multi-ensemble ou un multi-ensemble
généralisé. Nous détaillons dans la sous-section 3.5.3 cette représentation, et donnons la complexité
d’opérations simples sur les termes dans la sous-section 3.5.4.
p
{}
h, i c
a h, i
a b
p
Fig. 3.2 – Représentation du terme {ha, ha, bii}c par un arbre
L’inconvénient de cette représentation est que de l’information est dupliquée : dans la figure 3.2,
la constante a est dupliquée. Afin d’éviter cette duplication, une représentation alternative du terme
est d’utiliser un graphe orienté acyclique (DAG). Cette représentation permet d’associer à chaque
sous-terme d’un terme un seul sommet d’un graphe. En reprenant l’exemple précédent, le terme
p
{ha, ha, bii}c peut être représenté par le DAG de la figure 3.3.
p
{}
h, i c
h, i
a b
p
Fig. 3.3 – Représentation du terme {ha, ha, bii}c par un graphe orienté acyclique (DAG)
Pour un terme opération t, un graphe acyclique orienté Gt est une représentation graphique de
la relation Rsub de sous-terme direct sur (t) :
3.5. Représentation des termes valeurs et opérations de base 43
Remarquons que la taille d’une telle représentation n’est pas linéaire en le nombre de sous-
termes distincts. Par exemple, considérons le terme :
s,cbc
{}
a a k
n copies de a
En représentant les fils d’un sommet d’un graphe par une liste de sommets, on a la proposition
suivante.
Proposition 6
Soit t un terme opération, n1 , . . . , nk les arités des opérateurs et constantes de t. Sous ces nota-
tions :
|t|dag = O((k + Σki=1 ni ) · log k)
Preuve. On représente le graphe Gt par une liste de couples (s, l) où s est un sommet, et l la liste
des sommets fils de s. Il y a k sommets dans le graphe, donc chaque sommet peut être représenté
en log k. Donc le sommet i est représenté en O((1 + ni ) · log k).
Les ensembles. La représentation d’un ensemble peut se faire par une liste de sommets. Sans
perte de généralité, il est possible de supposer que cette liste est de cardinal inférieur ou égal au
nombre total de sommets du graphe.
a ka ka ka ka
44 Chapitre 3. Termes, classes d’équivalence et représentations
est représenté de manière plus succincte par le graphe orienté acyclique avec labels :
0 p,rsa
{}
4
a ka
Il est donc possible de représenter un multi-ensemble (généralisé) M par une liste de couples (s, n),
avec s ∈ (M) et n = M(s).
Taille dag d’un terme valeur. Soit t un terme valeur, k le nombre de sous-termes distincts de
t, m la valeur absolue maximale de l’image d’un terme par un multi-ensemble (généralisé) de t, et
a l’arité maximale d’un opérateur. D’après ce qui précède, on a la proposition suivante.
Proposition 7
Avec les notations précédentes, t peut être représenté en espace O(k 3 · (a + log m)).
Preuve. Un multi-ensemble peut être représenté en O(k · (1 + log m + log k)), un ensemble peut
être représenté en O(k · log k) et une liste peut être représentée en O(a · log k). En utilisant des
marqueurs pour distinguer les ensembles des multi-ensembles et des listes, un terme peut être
représenté en :
O(k 2 · (1 + log m + log k) + k · a · log k)
Soit, pour prendre une écriture plus simple mais moins précise :
Un ensemble ou multi-ensemble est considéré comme étant un seul argument. Par exemple,
p,rsa
l’opérateur ⊕({ }) est d’arité 1, et l’opérateur { } est d’arité 2.
b)
∀i ∈ {0, . . . , k} , ∀x, y ∈ Li , ¬(xRsub y ∨ yRsub x)
3.5. Représentation des termes valeurs et opérations de base 45
Sur L0 . Par la contrainte d’ordonnancement entre les termes et leurs sous-termes, un terme
est dans L0 si et seulement si c’est une constante. Posons O comme étant l’ordre total sur les
constantes. Cet ordre étend bien l’ordre induit par la relation de sous-terme.
Li → Li+1 Supposons qu’il existe un ordre total i sur ∪ij=0 Lj , et étendons le en i+1 sur
∪i+1
j=0 Lj . Tout d’abord, les sommets de Li+1 peuvent être triés en temps O(|Li+1 |) en fonction de
l’ordre >Fproto sur les constructeurs. Le problème se réduit alors au tri de sommets ayant le même
constructeur de tête f . Deux cas sont possibles :
a) si f ∈ Fproto l , l’ordre i est étendu en un ordre total (lexicographique, par exemple) sur les
suites finies de sommets. Cet ordre permet d’ordonner totalement tous les f -termes ;
b) sinon, afin de simplifier le propos, on commence par considérer les ensembles et les multi-
ensembles comme des cas particuliers de multi-ensembles généralisés. En utilisant si nécessaire
un ordre lexicographique sur les arguments, nous nous ramenons au problème de trouver un
ordre total sur des multi-ensembles généralisés. Les éléments de ces multi-ensembles sont
totalement ordonnés par i . Les multi-ensembles peuvent donc être ordonnés par M N
si :
∀x ∈ ∪ij=0 Lj , N (x) > M(x) ⇒ ∃y ∈ ∪ij=0 Lj , y i x et M(y) > N (y)
avec, pour tout n, m ∈ , n > m si |n| > |m| ou |n| = |m| et n > 0 > m. Les ordres > et
i sont totaux, donc l’ordre est total sur les multi-ensembles généralisés, ce qui permet
de conclure.
L’algorithme utilisé pour ordonner totalement les sommets est déterministe et son résultat ne
dépend que de la relation de sous-terme et de l’ordre sur les symboles. Donc son résultat ne dépend
que du terme ou de l’ensemble de termes représenté, et pas du graphe initial. On a donc une
représentation canonique d’un terme ou d’un ensemble de termes. L’algorithme est en PTIME du
nombre d’arêtes.
Insertion(Gt , GV ) :
Soit Gt = ((ti )i∈{1,...,n} , At ) et GV = ((vi )i∈{1,...,m} , AE ) les graphes
représentant t et E avec les listes de sommets triées pour l’ordre Fproto
G = GE
Pour i de 1 à n faire
G=insérer(ti , G)
finfaire
3.6 Conclusion
Lors de l’analyse d’un protocole, seule la valeur des messages échangés doit être prise en compte
pour définir les actions possibles des acteurs et de l’intrus. Ces valeurs sont définies par une relation
d’équivalence sur les termes. Nous avons donné dans ce chapitre une représentation simple des
classes d’équivalences par des termes valeurs. Cette représentation est non ambiguë si ces termes
valeurs sont en forme normale.
L’écriture de ces termes repose sur l’utilisation d’ensembles et de multi-ensembles. Les opérations
sont donc plus coûteuses que sur des termes opérations, mais nous retiendrons que toutes les
opérations que nous considérerons dans la suite de ce document peuvent être effectuées en un
temps polynomiale en la taille de la représentation d’un terme valeur ou d’un ensemble de termes.
4
4.1 Introduction
Ce chapitre peut être divisé en trois parties distinctes. Une première partie générale, tout
d’abord, dans laquelle est introduite la notion de déduction par des règles de réécriture. Une
seconde partie, où nous présentons les règles de réécritures utilisées dans le cadre de l’étude de
protocoles cryptographiques. Enfin, nous présentons d’autres approches possibles.
Tout d’abord, donc, nous considérons des termes sur une signature quelconque, et définissons
des systèmes de réécritures sur des ensembles de termes dans la section 4.2. Une particularité de
ces systèmes est qu’ils n’enlèvent jamais un terme d’un ensemble, ce qui permet de prouver facile-
ment diverses propriétés. Nous considérons ensuite, dans la section 4.3, des systèmes de réécritures
particuliers, que nous appelons canoniques, et dont toute combinaison permet d’avoir un système
de réécriture local. Nous définissons ensuite les problèmes d’accessibilité close dans la section 4.4.
Informellement, un problème d’accessibilité close pour un ensemble de termes E et un terme t
consiste à chercher si il est possible, partant de E, de déduire un ensemble F contenant le terme
t. Nous donnons la complexité de ce problème, dans le cas de systèmes locaux, en fonction de la
complexité du problème consistant à savoir si, étant donnés deux ensembles E et F , il est possible
de passer en faisant une seule déduction de l’un à l’autre.
Ensuite, nous présentons un système de règles de déductions dans le cadre des protocoles cryp-
tographiques dans la section 4.5. Ce système est uniquement basé sur les propriétés des opérations
décrites dans le chapitre 3. Nous montrons, opérateur par opérateur, que le système de déduction
associé à un constructeur f est canonique. Nous en concluons, dans la section 4.6, que les problèmes
d’accessibilité close, dans le cadre des protocoles cryptographiques, sont polynomiaux pour toute
combinaison des systèmes de règles associés aux constructeurs présentés dans le chapitre 3.
Enfin, nous présentons d’autres approches permettant de traiter les problèmes d’accessibilité
close. Nous commençons par présenter le formalisme des règles d’Oracle, qui est le précurseur des
systèmes canoniques, dans la section 4.7. Nous avons utilisé ce formalisme avec beaucoup de succès
pour ajouter un opérateur en sus des opérateurs de chiffrement parfait. Nous expliquons aussi
pourquoi, bien que les systèmes canoniques sont plus restrictifs, nous avons préféré les présenter
dans ce document. Nous présentons enfin, dans la section 4.8, les travaux d’autres auteurs s’étant
intéressés aux problèmes d’accessibilité close.
Dans le cadre de ce chapitre, nous désignons par terme les termes valeurs en forme normale, et
nous notons T(F) = pT(Fproto )q.
47
48 Chapitre 4. Accessibilité dans le cas clos
Dans la suite, les ensembles de règles de réécriture sur des ensembles seront notés R avec les
décorations usuelles. Par abus de langage, on parlera parfois simplement de systèmes de réécriture.
Pour désigner des systèmes utilisés dans le cadre de l’étude de protocoles cryptographiques, nous
emploierons aussi L et les décorations usuelles. Les règles elles-mêmes seront notées R, avec les
décorations habituelles.
Proposition 8 (Confluence)
E
∗ ∗
E1 E2
∗∗
F
Dans ce schéma, les flèches continues représentent les hypothèses, et les flèches discontinues
représentent la conclusion.
Preuve. Si D1 : E →d1 . . . →dk E1 et D2 : E →d01 . . . →d0l E2 , on remarque que les concaténations
D = D1 D2 et D0 = D2 D1 sont aussi des suites de transitions par croissance des ensembles, et
qu’elles aboutissent au même ensemble F .
Proposition 9 (Church-Rosser)
Pour tout système de réécriture sur des ensembles R, si E ≡R F , alors il existe E 0 tel que E →∗R E 0
et F →∗R E 0 .
Il s’agit de l’analogue de la propriété de Church-Rosser pour les systèmes de réécriture sur des
termes. Elle peut être décrite par la figure 4.1 :
La preuve est basée sur la proposition 8.
Preuve. Par hypothèse, on a :
et par la proposition 8, on peut remplacer E0 ←∗R E1 →∗R E2 par E0 →∗R E10 ←∗R E2 . En itérant,
on obtient le résultat annoncé.
4.3. Systèmes locaux 49
E E1 En−1 F
R R
∗ ∗
R E0 R
Fig. 4.1 – Propriété de Church-Rosser pour les systèmes de réécriture sur des ensembles de termes.
Définition 25 (clôture par R) Soit E ⊆ T(F) et R un système de réécriture sur des ensembles.
R
La clôture de E par R, notée E , est définie par :
R
E = {t | ∃F ⊆ T(F), t ∈ F et E →∗R F }
Définition 26 (Dérivation)
Une dérivation D dans un système de réécriture R est une suite d’ensembles (Ei )i∈{0,...,n} telle
que :
1. ∀i ∈ {1, . . . , n} , ∃ti ∈ T(F), Ei \ Ei−1 = ti
2. ∀i ∈ {1, . . . , n} , Ei−1 →R Ei
Dans ce cas, nous disons que D part de E0 , arrive en En , et a pour but tn .
Lorsque le système de réécriture sur les ensembles R est clairement spécifié par le contexte, nous
parlerons plus simplement de dérivation. Dans cette définition, la première condition exprime que
les ensembles de termes sont strictement croissants, la seconde permet d’avoir, pour une dérivation
R
(Ei )i∈{0,...,n} , En ⊆ E0 . Par définition, si (Ei )i∈{0,...,n} est une dérivation de but t, alors t ∈
/ Ej
R
pour j ∈ {0, . . . , n − 1} et t ∈ E0 .
4.3.1 Introduction
On considère des termes sur une signature F, un constructeur f ∈ F d’arité non nulle et des
fonctions α : → servant à réindicer des termes. Dans cette section, l’égalité des termes est
l’égalité syntaxique. Pour simplifier les notations, nous notons f (t1 , . . . , tn ) un f -terme dont les
sous-termes stricts maximaux pour la relation de sous-terme sont t1 , . . . , tn . Par exemple, si un
constructeur f a comme premier argument un terme t1 et comme second argument un ensemble
{t2 , . . . , tn } ou un multi-ensemble (généralisé ou non) de support {t2 , . . . , tn }, nous le notons sim-
plement f (t1 , . . . , tn ).
4.3.2 Définitions
Définition 28 (Règles de f -composition pures)
Une règle de réécriture sur des ensembles de termes est une règle de f -composition si elle est de
la forme :
∃f 0 ∈ F,
∀i ∈ {1, . . . , n} , ∀ti ∈ Fi ,
f (t1 , . . . , tk1 ), . . . , f (tkl−1 +1 , . . . , tkl ), tkl +1 , . . . , tn → f (tα(1) , . . . , tα(m) )
avec :
0
– F i = T(F) ou F i = T(F) \ {t | t f -terme}
– tα(1) , . . . , tα(m) ⊆ {t1 , . . . , tn }
– {tkl +1 , . . . , tn } ⊆ {t1 , . . . , tkl } ∪ tα(1) , . . . , tα(m) .
La quantification sur tkl +1 , . . . , tn implique qu’un de ces terme peut être un f -terme. Dans une
f -règle pure, un f -terme u est dit être utilisé en tant que f -terme si il est égal à un des termes
f (tj , . . . , tj 0 ). La condition sur les Fi sera utilisée pour l’application aux règles de réécriture de
Fproto , qui sont définies sur des ensembles de termes en forme normale. Elle indique que ti est un
g-terme en forme normale avec g 6= f 0 . La quantification est utilisée pour avoir des règles uniformes
par rapport aux termes et permettra de remplacer des termes par d’autres.
Dans une telle règle, le terme f (t1 , . . . , tk1 ) (choisi arbitrairement parmi ceux ayant t comme
sous-terme strict maximal) est le terme décomposé.
Soit R un système de règles de réécriture. Pour deux ensembles de termes E et F et pour un
terme t, on note E →R(t) F pour abréger E →R F et F = E, t.
E →Rc,f E, t →ρ E, t, u
on a E →ρ E, u ou t ∈≡ −1 (E, u).
La condition de cette définition porte sur les règles de composition. Elle indique que si un terme
t produit à partir de E est utilisé pour produire ensuite un terme u (la première alternative est
fausse), alors ce terme est dans l’ensemble (E, u).
4.3. Systèmes locaux 51
Dans la sous-section suivante, nous allons montrer que toute combinaison de systèmes cano-
niques est un système local.
Lemme 4
Si F →R(t) F 0 et (F 0 ) 6= (F ), alors :
– F →Rc (t) F 0
– (F 0 ) = (F ) ∪ {t}
Preuve. Par définition d’un règle de décomposition, si F →Rd F 0 , alors (F 0 ) = (F ). Donc
l’hypothèse implique que la transition est faite par une règle de composition. Le deuxième point
est alors une conséquence de la définition des règles de composition.
Lemme 5
Si F →Rd F, t est dans D, alors t est sous-terme de E.
Preuve. Soit i l’indice minimal tel que t soit sous-terme de Ei . Si i 6= 0, alors (Ei−1 ) 6=
(Ei ), donc, par le lemme 4, t ∈ Ei et Ei−1 →Rc Ei−1 , t. L’hypothèse F →Rd F, t contredit
alors la définition d’une dérivation.
Lemme 6
Supposons qu’il n’y ait pas de règle F →Rc t−1 dans R.
Si D est de longueur minimale parmi les dérivations partant de E de but b et Ei →Rc t, Ei est
dans D, alors t ∈ (E, b).
Preuve. L’hypothèse implique que pour tout terme t, si il y a une transition F →R F, t−1 dans
D, c’est une décomposition, et par le lemme 5, t−1 est un sous-terme de E, et donc t−1 et t sont
dans (E).
Soit :
Ω = {Ei−1 →Ri Ei−1 , ti ∈ D | ∃f, Ri ∈ Rc,f et ti 6∈ (E, b)}
Montrons par contradiction que Ω = ∅. Si Ω 6= ∅, soit :
Par la remarque préliminaire, tk n’est pas un −1 -terme. Par définition de Ω, on a k < n. Soit f
tel que Rk ∈ Rc,f . Par minimalité de D, l’ensemble :
est non vide. Soit j le minimum de Θ. Par définition d’une dérivation, on a k < j. Par minimalité
de j, tk n’est dans le membre gauche d’aucune règle entre Ri+1 et Rj−1 (inclus), donc il existe une
dérivation :
E0 →R1 . . . →Ri−1 Ei−1 →Ri+1 Ei+1 \ tk → . . . →Rj−1 Ej−1 \ tk
Posons F = Ej−1 \ tk . On a donc :
F →Rc,f F, tk →R F, tk , tj
Affirmation 1. tk ∈
/ (F ).
52 Chapitre 4. Accessibilité dans le cas clos
Affirmation 2. tk ∈
/ (tj ).
Affirmation 3. tk ∈ (F, tj ).
Preuve. Par minimalité de D, supposons que F 6→R F, tj . Par la définition d’un système
canonique et par les affirmations 1. et 2., on a alors R ∈
/ Rf . Mais alors, par définition des
règles de composition et de décomposition, tk ∈≡ −1 (F, tj ). Par la remarque préliminaire,
tk n’est pas un −1 -terme, donc tk ∈ (F, tj ).
Pour une dérivation de longueur minimale, supposer Ω non vide entraı̂ne Θ non vide, ce qui
implique les affirmations contradictoires 1., 2. et 3. Donc par contradiction, Ω est nécessairement
vide, et donc D est bien formée.
Avec les notations précédentes, nous pouvons maintenant énoncer le théorème de combinaison
suivant :
Ce théorème est très important, car il permet de combiner des règles de déductions portant
sur des constructeurs différents. Dans la section 4.5, nous donnons les règles de réécritures sur
les formes normales de termes valeurs pour les constructeurs de Fproto . Nous montrons que les
systèmes de réécriture de chacun de ces constructeurs sont canoniques. Cela implique que tout
système de réécriture obtenu par combinaison des règles de déduction de ces différents opérateurs
est local.
Taille de problèmes en entrée. Nous prenons comme taille d’un problème en entrée la taille
de la représentation par des graphes (voir chapitre 3, section 3.5) :
– pour le problème Transition (F, F 0 , R), la taille de l’entrée est la somme des tailles des
représentations des ensembles F et F 0 ;
– pour le problème Accessibilite Close (E, t, R), la taille de l’entrée du problème est la
somme des tailles des graphes représentant E et t.
4.5.1 Opérateur h , i
Informellement, l’opérateur h , i est utilisé pour faire la concaténation de deux messages. Les
règles de h , i-composition sont de la forme :
Lc,h , i :
∀a, b ∈ T(F), a, b → ha, bi
D’autre part, étant donné un message ha, bi, il est possible d’en déduire les valeurs de a et de
b, ce qu’on modélise par les règles de h , i-décomposition suivantes :
Ld,h , i :
∀a, b ∈ T(F), ha, bi → a
∀a, b ∈ T(F), ha, bi → b
Proposition 12
– Lc,h , i est un ensemble de règles de composition ;
– Ld,h , i est un ensemble de règles de décomposition.
Preuve. La proposition est vraie par définition pour les règles de composition. Il n’y a pas de
h , i-fonction de normalisation, donc a et b sont des sous-termes de ha, bi. Donc Ld,h , i est bien un
ensemble de règles de décomposition.
D’autre part, la condition sur les système canoniques de la définition 30 est satisfaite.
Proposition 13
En posant Lh , i = Ld,h , i ∪ Lc,h , i, Lh , i est canonique.
E →R1 E, t →R2 E, t, u
Transition(E, F, RL h , i
)
en temps polynomial.
s
4.5.2.i Cas du chiffrement parfait, opérateur { }
s
Les règles de { } -composition sont de la forme :
Lc,{ }s :
s
∀a, b ∈ T(F), a, b → {a}b
Pour décomposer un message chiffré par une clef symétrique b, et sous l’hypothèse de chiffrement
parfait, il faut connaı̂tre la clef b. Toujours sous cette hypothèse, il n’est pas possible de déduire la
s s
clef b d’un message {a}b . Les règles de { } -décomposition sont donc de la forme :
Ld,{ }s :
s
∀a, b ∈ T(F), {a}b , b → a
Là encore, toutes les conditions sur les règles de composition et de décomposition des définitions 28
et 29 sont vérifiées, et on vérifie sans peine que l’ensemble L{ }s = Lc,{ }s ∪ Ld,{ }s des règles est
un système canonique. Soit :
Proposition 15
Le système L{ }s est canonique.
De même que dans le cas de l’opérateur h , i, et malgré le nombre infini de règles à considérer,
le problème Transition (E, F, RL{ }s ) peut être décidé en temps polynomial. La preuve est omise,
car très similaire à celle de la proposition 14.
Enfin, si E →R{ }s F et E est un ensemble de termes en forme normale, alors F est aussi un
ensemble de termes en forme normale.
s,ebc
4.5.2.ii Cas du chiffrement par blocs, opérateur { }
Si un algorithme de chiffrement par bloc est utilisé, il est possible d’extraire individuellement
chaque bloc chiffré d’un message chiffré. On parle alors de propriété d’homomorphisme (voir le
chapitre 2, section 2.1.2.i) du chiffrement par rapport aux blocs, qui peut être modélisée par
l’égalité :
D E
s,ebc s,ebc s,ebc
{a, b}k = {a}k , {b}k
– des règles de composition correspondant au chiffrement d’un texte clair par une clef ;
– des règles de composition utilisant la propriété d’homomorphisme pour créer un nouveau
message chiffré à partir de messages chiffrés par une même clef.
Le problème est que le système de réécriture sur les ensembles ayant ces règles pour règles de
composition n’est pas canonique. Nous ajoutons donc un troisième type de règles, dont les deux
s,ebc
premiers sont des cas spéciaux. Le système des { } -règles de composition que nous considérons
est :
Lc,{ }s,ebc :
• ∀n ∈ ∗ , ∀t1 , . . . , tn ∈ T(F), ∀K ∈ T(F),
s,ebc
t1 , . . . , tn , K → {t1 , . . . , tn }K
∗ 0 0
• ∀l, kl , m ∈ , ∀t1 , . . . , tkl ∈ T(F), ∀t1 , . . . , tm ∈ T(F),
s,ebc s,ebc s,ebc
{t1 , . . . , tk1 }K , . . . , tkl−1 +1 , . . . , tkl K → {t01 , . . . , t0m }K
Ld,{ }s,ebc :
∗
∀n ∈ , ∀i ∈ {1, . . . , n} , ∀t1 , . . . , tn ∈ T 0 , ∀K ∈ T(F),
s,ebc
{t1 , . . . , tn }K , K → ti
Notons que le troisième type de règles de composition est inutile vis-à-vis de la clôture d’un
ensemble E : si K est dans E, alors il est toujours possible d’appliquer des règles de décompositions,
puis de composer le terme désiré par une règle de composition du premier type. Cette dérivation
serait bien formée, mais ne serait pas de longueur minimale. Plus précisément, le système L{ }s,ebc
ne serait pas canonique.
La proposition suivante est une conséquence directe de la définition des règles de composition
et de décomposition.
Proposition 17
s,ebc
– Lc,{ }s,ebc est un ensemble de règles de { } -composition ;
s,ebc
– Ld,{ }s,ebc est un ensemble de règles de { } -décomposition ;
Il est légèrement plus délicat de montrer que L{ }s,ebc est un système canonique.
Proposition 18
L{ }s,ebc est un système canonique.
n o
Preuve. Soit ρ ∈ Lc,{ }s,ebc , Ld,{ }s,ebc , et E →Lc,{ }s,ebc E, t →ρ E, t, u avec t, u ∈ / E. Tout
d’abord, remarquons qu’il est possible d’associer à chaque règle de composition ou de décomposition
une clef K. Nous parlerons de clef d’une règle l → r.
Cas ρ = Ld,{ }s,ebc . Soit K la clef de la deuxième règle, et supposons que E 6→ρ u. L’alternative
s,ebc
est alors soit t = K, soit t est un { } -terme dont la clef de chiffrement est K. Dans le premier
cas, t ∈ (E) par définition des règles de Ld,{ }s,ebc . Dans le second, u ∈ / E implique qu’une
règle de composition du deuxième ou du troisième type a été utilisée. Et u ∈ / E implique alors
s,ebc
qu’il existe un terme {t1 , . . . , tn }K et i ∈ {1, . . . , n} tel que ti = u. En utilisant t 6= K, on peut
déduire que K ∈ E, et donc E →Ld,{ }s,ebc u, ce qui contredit l’hypothèse. Donc dans tous les cas,
soit t ∈ (E), soit E →Ld,{ }s,ebc E, u.
4.5. Symboles et systèmes dans le cadre de l’étude de protocoles 57
Cas ρ = Lc,{ }s,ebc . Si la deuxième règle est une règle de composition du premier type, alors soit
t∈ (u), soit E →Lc,{ }s,ebc u. Sinon, soit K1 la clef de la première règle, et K2 la clef de la
seconde. Si K1 = K2 , alors par définition des règles de composition de deuxième (cas pour deux
règles du deuxième type) ou troisième (autres cas) type, on a E →Lc,{ }s,ebc u. Sinon, alors soit
E →Lc,{ }s,ebc u, soit la deuxième règle est du troisième type, et t ∈ (u).
Proposition 19
Transition (E, F, L{ }s,ebc ) est dans PTIME.
Test de l’application d’une règle de décomposition. Une règle de décomposition peut être
s,ebc
appliquée pour obtenir t si, et seulement si, il existe un terme {t1 , . . . , tn }K dans E tel qu’il existe
s,ebc
i ∈ {1, . . . , n} avec ti = t et K ∈ E. La recherche des termes {t1 , . . . , tn }K peut être conduite en
temps polynomial, et il y en a un nombre inférieur ou égal à la taille de l’entrée, et il est possible
pour chaque terme de tester en temps polynomial si la clef est dans E.
Le terme t est le résultat de l’application d’une règle du deuxième type si {t1 , . . . , tn } ⊆ P . L’inclu-
sion peut se tester en temps polynomial, donc l’application d’une règle de composition du deuxième
type peut être testée en temps polynomial.
Avec les mêmes notations, tester l’application d’une règle de composition du troisième type revient
à tester K ∈ E et {t1 , . . . , tn } ⊆ E ∪ P .
s,ebc
Pour conclure le cas de l’opérateur { } , remarquons que si une règle de L{ }s,ebc est appliquée
sur un ensemble de termes en forme normale, alors le résultat sera aussi un ensemble de termes en
forme normale.
s,cbc
4.5.2.iii Cas du chiffrement par blocs en mode chaı̂né, opérateur { }
Nous renvoyons au chapitre 2, paragraphe 2.1.2.ii pour la description des propriétés du chiffre-
ment par bloc, et au chapitre 3, paragraphe 3.3.3.i pour une description de l’opérateur. Les règles
sont les suivantes :
Lc,{ }s,cbc :
∀n ∈ ∗ , ∀t1 , . . . , tn ∈ T 0 , ∀K ∈ T(F),
s,cbc
t1 , . . . , tn , K → {t1 , . . . , tn }K
∗
∀n ∈ , ∀i ∈ {1, . . . , n − 1} , ∀t1 , . . . , tn ∈ T 0 , ∀K ∈ T(F),
s,cbc s,cbc
{t1 , . . . , tn }K → {t1 , . . . , ti }K
s,ebc
De la même manière que pour l’opérateur { } , nous modélisons le déchiffrage en permettant
de déchiffrer indépendamment chaque bloc du message chiffré.
Ld,{ }s,cbc :
∀n ∈ ∗ , ∀i ∈ {1, . . . , n} , ∀t1 , . . . , tn ∈ T 0 , ∀K ∈ T(F),
s,cbc
{t1 , . . . , tn }K , K → ti
58 Chapitre 4. Accessibilité dans le cas clos
Ces règles sont des règles de composition et de décomposition. La proposition suivante se prouve
en remarquant que :
s,cbc s,cbc s,cbc
{t1 , . . . , tn }K → {t1 , . . . , ti }K → {t1 , . . . , tj }K
avec j < i < n peut se faire en une étape :
s,cbc s,cbc
{t1 , . . . , tn }K → {t1 , . . . , tj }K
Proposition 20
En notant L{ }s,cbc = Ld,{ }s,cbc ∪ Lc,{ }s,cbc , le système L{ }s,cbc est un système canonique.
Lc,{ }p :
p
∀a, b ∈ T(F), a, b → {a}b
Pour décomposer un message chiffré par une clef symétrique b, et sous l’hypothèse du chiffrement
parfait, il faut connaı̂tre la clef inverse b−1 . Si l’opérateur −1 n’est pas dans la signature, on
p
n’autorise pas de règles de décomposition. Sinon, les règles de { } -décomposition sont de la forme :
Ld,{ }p :
p
∀a, b ∈ T(F), {a}b , b−1 → a
p
∀a, b ∈ T(F), {a}b−1 , b → a
Les règles de Lc,{ }p sont des règles de composition par définition. Pour montrer que les règles
Ld,{ }p sont des règles de décomposition, il faut utiliser que dans la définition de ces règles, l’in-
clusion des ensembles de termes est définie modulo la relation d’équivalence ≡ −1 . On vérifie alors
facilement que les règles de Ld,{ }p sont des règles de décomposition.
Enfin, l’ensemble L{ }p = Lc,{ }p ∪ Ld,{ }p des règles est un système canonique. La preuve est
omise car très proche de celle de la proposition équivalente pour l’opérateur h , i.
Proposition 22
L{ }p est canonique.
Le problème Transition (E, F, RL{ }p ) peut être décidé en temps polynomial. Là encore, la
preuve est omise, car très similaire à celle de la proposition 14.
Proposition 23
Le problème Transition(E, F, L{ } ) est dans PTIME.
p
Enfin, il est évident que si une règle R de L{ }p est appliquée sur un ensemble E de termes en
forme normale, soit E →R F , alors F est aussi un ensemble de termes en forme normale.
4.5. Symboles et systèmes dans le cadre de l’étude de protocoles 59
p,rsa
4.5.3.ii Cas du chiffrement commutatif, opérateur { }
Dans le but de simplifier la présentation, nous supposons que le symbole −1 , d’arité 1, est aussi
dans la signature. Nous utilisons les opérations standards sur les multi-ensembles et multi-ensembles
généralisés telles qu’elles sont définies dans le chapitre 3, section 3.2.
Nous rappelons que pour modéliser les propriétés d’un opérateur de chiffrement asymétrique de
p,rsa
type RSA, nous avons défini un opérateur { } (voir chapitre 3, section 3.3.5) dont le deuxième
argument est le multi-ensemble des clefs chiffrant le message.
p,rsa
Nous rappelons aussi (voir chapitre 3, section 3.4) que si les { } -termes sont en forme
p,rsa
normale, alors pour t = {t0 }K , on a :
p,rsa
– t0 n’est pas un { } -terme ;
– pour tout k ∈ T(F), K(k) = 0 ou K(k −1 ) = 0.
Le premier point vient directement de la définition de la fonction de normalisation, et le second
indique que si t est normalisé, il n’est pas chiffré à la fois par une clef K et son inverse.
p,rsa
Notons T 0 = T(F) \ {t | t { } -terme}. Les règles de L{ }p,rsa sont de la forme :
L{ }p,rsa :
∗ p,rsa rsa
∀n ∈ , ∀t, t1 , . . . , tn ∈ T(F), t, t1 , . . . , tn → p{t} tc1 ,...,tcn q
{1 n }
avec ∀i ∈ {1, . . . , n} , ci ≥ 1
Ces règles sont définies sur les termes valeurs en forme normale. En notant :
p,rsa rsa
e = p{t} tx1 ,...,txn q
{1 n }
p,rsa
une telle règle est dans Lc,{ }p,rsa si e est un { } -terme, et dans Ld,{ }p,rsa sinon. Commençons
par montrer que les règles ainsi définies sont bien des règles de composition et de décomposition.
Proposition 24
p,rsa
– Lc,{ }p,rsa est un ensemble de règles de { } -composition ;
p,rsa
– Ld,{ }p,rsa est un ensemble de règles de { } -décomposition.
p,rsa
Preuve. Soit une { } règle :
∗ p,rsa rsa
∀n ∈ , ∀t, t1 , . . . , tn ∈ T(F), t, t1 , . . . , tn → p{t} q
{tc11 ,...,tcnn }
avec ∀i ∈ {1, . . . , n} , ci ≥ 1
p,rsa rsa
et notons e = p{t} tc1 ,...,tcn q son résultat.
{1 n }
Pour les règles de Ld,{ }p,rsa , on remarque que la condition ∀i ∈ {1, . . . , n} , ci > 0 et e non
p,rsa p,rsa p,rsa
-terme de la forme {e}Kt , et t1 −1 , . . . , tn −1 =
{} -terme impliquent t { } (Kt ) par
définition de la fonction de normalisation. L’opérateur −1 est dans la signature, donc la règle est
bien une règle de décomposition.
p,rsa
Pour les règles de Lc,{ }p,rsa , les deux cas t { } -terme ou non se traitent sans difficulté, ce
qui conclut la preuve de la proposition.
Il faut maintenant prouver que L{ }p,rsa est un système canonique.
Proposition 25
L{ }p,rsa est un système canonique.
Preuve. Soit ρ ∈ Lc,{ }p,rsa , Ld,{ }p,rsa . Considérons les règles utilisées pour construire t et u à
partir d’un ensemble E de termes en forme normale :
p,rsa rsa
a, s1 , . . . , sm →Lc,{ }p,rsa t = p{a} q
{sc11 ,...,scnm }
b, t1 , . . . , tn →ρ u = p{b} n
p,rsa
d
o rsa
dn
q
t1 1 ,...,tn
– si t = b, alors la règle :
a, s1 , . . . , sm , t1 , . . . , tn → u = p{a}
p,rsa n d1 o qrsa
{sc11 ,...,scnm }+ t1 ,...,td
n
n
est aussi une règle de ρ, car l’appartenance à Lc,{ }p,rsa ou Ld,{ }p,rsa ne dépend que de u. Elle
peut être appliquée sur E ;
– sinon, soit t = t1 sans perte de généralité. Par définition de p qrsa , par la condition c1 > 0, et le
membre gauche étant en forme normale, on a t ∈ (b, u). On a b ∈ E, donc t ∈ (E, u).
Ce qui prouve la proposition.
b, t1 , . . . , tn → t
Avec les fonctions Add et Opp définies dans le chapitre 3, section 3.4, la définition des règles de
L{ }p,rsa implique Basersa (t) = Basersa (b) et :
Pour tester si une telle règle a pu être appliquée, nous considérons l’ensemble des termes de E
qui ont la même base que t, et pour chaque terme b de cet ensemble testons si le support de la
différence des facteurs de t et b est inclus dans E. Cet algorithme est exécuté en temps polynomial
en la taille des entrées.
Enfin, il est évident qu’appliquer sur un ensemble E de termes en forme normale, le résultat
d’une règle de L{ }p,rsa sera un terme en forme normale.
4.5.4 Opérateur H( , )
Cet opérateur représente l’image par une fonction d’adressage dispersé, donnée comme premier
argument, du message donné en second argument. On pose Ld,H( , ) = ∅ et les règles de Lc,H( , )
sont de la forme :
Lc,H( , ) :
∀a, b ∈ T(F), a, b → H(a, b)
Ces règles satisfont les conditions des règles de composition de la définition 28. D’autre part, la
condition sur les système canoniques est trivialement satisfaite. On a donc la proposition suivante :
Proposition 27
En posant Lh , i = Lc,H( , ), LH( , ) est canonique.
Là encore, le problème de transition peut être décidé en temps polynomial. La preuve est omise,
car similaire à celle de la proposition 14.
LExp( , ) :
∗ exp
∀n ∈ , ∀t, t1 , . . . , tn ∈ T(F), t, t1 , . . . , tn → pExp(t, {tc11 , . . . , tcnn })q
avec ∀i ∈ {1, . . . , n} , ci 6= 0
b, t1 , . . . , tn → t
Pour tester si une telle règle a pu être appliquée, nous considérons l’ensemble des termes de E qui
ont la même base que t, et pour chaque terme b de cet ensemble testons si le support de la différence
des facteurs de t et b est inclus dans E. Cet algorithme permet de tester en temps polynomial si
une règle a pu être appliquée pour construire t.
L⊕({ }) :
∗ xor
∀n ∈ , ∀t1 , . . . , tn ∈ T(F), t1 , . . . , tn → p⊕({t1 , . . . , tn })q
xor
et p⊕({t1 , . . . , tn })q ∈ / {t1 , . . . , tn }
De la même manière que pour les règles de L{ }p,rsa ou LExp( , ) , on définit les règles de compo-
xor
sitions et de décomposition en fonction du résultat e = p⊕({t, t1 , . . . , tn })q d’une règle :
xor
L: t1 , . . . , tn → p⊕({t1 , . . . , tn })q
Proposition 30
Soit L une règle de L⊕({ }) . On a :
– L ∈ Lc,⊕({ }) implique L est une règle de ⊕({ })-composition ;
– L ∈ Ld,⊕({ }) implique L est une règle de ⊕({ })-décomposition.
Preuve. Soit L une règle de L⊕({ }) . Le membre gauche est en forme normale, donc il existe t1 , . . . ,
tn des termes qui ne sont pas des ⊕({ })-termes et I1 , . . . , Ik des sous-ensembles de {1, . . . , n} de
cardinal ≥ 2, et α : {1, . . . , l} → {1, . . . , n} une fonction injective. Une règle L est de la forme :
On a :
xor
e = p⊕(⊕({I1 }), . .
. , ⊕({Ik }), ⊕( tα(1) , . . . , tα(l) ) )q (définition de L⊕({ }) )
xor
= p⊕( (∆ki=1 Ii )∆ tα(1) , . . . , tα(l) )q (définition de p qxor )
Par définition des règles L⊕({ }) , i 6= j implique tα(i) 6=α(j) , donc tα(i) ∈ / ∪ki=1 Ii , implique tα(i) ∈
(e).
D’autre part, si e = ⊕({u1 , . . . , um }), alors toujours par définition de la fonction de normali-
sation, pour tout i ∈ {1, . . . , m}, on a ui ∈ {t1 , . . . , tn }. Donc si L ∈ Lc,⊕({ }) , L est une règle de
composition.
Enfin, si L est dans Ld,⊕({ }) , d’après la deuxième condition sur les règles de L⊕({ }) , et pour tout
i ∈ {1, . . . , k}, on a e 6= tα(i) . Donc, par définition de la fonction de normalisation, e ∈ ∪ki=1 ∪j∈Ik tj .
Donc L est bien une règle de décomposition.
Proposition 31
Si E →L⊕({ }) E, t →L⊕({ }) E, t, u, alors E →L⊕({ }) u.
Et → t
Eu → u
/ Eu , la proposition est triviale. Sinon, on vérifie facilement, en notant Eu0 = Et ∆(Eu \ {t}),
Si t ∈
que la règle suivante :
Eu0 → u
est une règle de L⊕({ }) , et que Eu0 ⊆ E.
Cette fonction est bien définie par définition des facteurs. On note A la matrice |E| × m définie
par les images des termes de E, b l’image du terme t. Par définition de l’addition sur IF 2 , il existe
une ⊕({ })-transition de E vers E, t si et seulement si le système linéaire
A.X = b
|E|
a une solution X ∈ IF 2 . Résoudre un tel système linéaire peut se faire en un nombre polynomial
d’opérations. Les coefficients sont 0 ou 1, donc chaque opération a un coût constant. On a |E| ≤ n,
donc la taille de ce système est polynomiale en fonction de n, et ce système peut se résoudre en
temps polynomial en fonction de la taille n du problème d’entrée.
Donc le problème Transition (E, F, L⊕({ }) ) est dans PTIME.
R = Lh , i ∪ L{ }p ∪ L{ }s
Les outils et systèmes sont souvent présentés dans ce cadre, que ce soit au niveau du processus
de compilation [63, 72] ou au niveau de l’analyse [88, 75, 4], les auteurs indiquant que leur travail
peut être étendu pour prendre en compte les fonctions d’adressage dispersé. La notion de système
canonique permet de formaliser cette extension. Une autre approche, l’utilisation de règles d’oracle
a été développée durant cette thèse.
Dans cette approche, des règles de déductions sont ajoutées à celles du système R . Elles ont
été introduites lors d’un travail publié dans [25] pour permettre l’étude d’un nombre non borné
de sessions d’un protocole. Elles ont ensuite été reprises formellement pour permettre l’étude d’un
protocole au-delà de l’hypothèse de chiffrement parfait. Le premier travail portait sur l’ajout d’un
64 Chapitre 4. Accessibilité dans le cas clos
opérateur ⊕({ }) [19]. Il a été suivi par d’autres travaux donnant la complexité de l’étude de
protocoles cryptographiques dans différents cas (ajout d’un opérateur exponentiel [20], complexité
de la validation de protocoles [22] dans le modèle présenté l’année précédente [25]).
La définition des règle d’Oracle repose sur une notion de dérivation bien formée semblable à
celle définie en section 4.2. Des règles E → a, avec E et a en forme normale, sont ajoutées au
système R . Une règle est dite de décomposition si a est un sous-terme de E, et de composition
sinon.
Les conditions sur les règles ajoutées au système R pour que ces règles soient des règles
d’oracles sont données par la définition suivante :
tel que :
Pour tout ensemble fini de termes F avec I, u ∈ F , si F \u →Lc (u)
F , i.e., u peut être composé à partir de F en une étape, alors
R
F →Lo F, t implique pt[u ← (u)]q ∈ pF [u ← (u)]q et (u) ∈
R
F pour tout message t.
Les conditions 2. et 3. sont très proches de celles données pour avoir un système canonique.
La condition 1. est moins restrictive, puisque des règles d’une forme arbitraire sont autorisées.
L’inconvénient de cette définition est que les conditions 1. et 4. ne sont pas locales aux règles
ajoutées. Il faut refaire toutes les preuves pour ajouter un nouvel opérateur. Par exemple, dans
s,cbc
[19], les opérateurs ⊕({ }) et { } sont considérés, mais indépendamment l’un de l’autre. De
même, dans [28], H. Comon-Lundh et V. Shmatikov considèrent les opérateurs ×({ }) (un opérateur
de groupe abélien, utilisé pour l’exponentiation et le chiffrement de type RSA) et ⊕({ }) sont
considérés, mais là encore indépendamment les uns des autres.
En conclusion, les systèmes canoniques permettent a priori de traiter moins de cas, car les
conditions imposées aux règles impliquent celles portant sur les règles d’oracle. Cependant, le gain
en modularité justifie, à nos yeux, leur introduction et leur utilisation.
Cette notion de système local a été reprise pour l’étude de problèmes d’accessibilité par H. Comon-
Lundh et V. Shmatikov [28]. Dans cet article, il est montré, entre autres, que le problème d’acces-
sibilité close pour le système :
Lh , i ∪ L{ }s ∪ L{ }p ∪ L⊕({ })
est dans NPTIME. Nous avons amélioré une première fois ce résultat dans [19], où nous montrons
que ce problème est dans PTIME. Les techniques utilisées dans cet article permettent d’étendre le
système de règles :
Lh , i ∪ L{ }s ∪ L{ }p
par un système de règles lié à un autre opérateur. Nous avons ainsi montré que les problèmes
d’accessibilité close sont décidables en temps polynomial lorsque :
s,cbc
– l’opérateur { } est ajouté [19] ;
– l’opérateur Exp( , ) est ajouté [20] ;
p,rsa
– l’opérateur { } est ajouté (non publié).
4.9 Conclusion
Les ensembles de messages jouent un rôle central dans l’étude des protocoles cryptographiques.
D’une part, ils permettent de savoir si un protocole peut être implanté, en analysant les connais-
sances des rôles pour savoir si la suite d’envois de messages définie par le protocole peut être
réalisée. D’autre part, ils sont utilisés pour modéliser les connaissances d’un intrus essayant de
faire échouer un protocole.
Dans ce chapitre, nous avons défini les règles de déduction sur les ensembles de messages. Ces
règles peuvent être utilisées par l’intrus ou par un principal jouant un rôle, suivant le problème
considéré. Nous avons montré que dans le cas clos, c’est-à-dire dans le cas où aucune substitution
n’est appliquée, il est possible de décider en temps polynomial si un terme t peut être déduit à
partir de l’ensemble de connaissances E (théorème 4).
Ce résultat améliore ceux présentés dans [28] et, pour la partie sur le cas clos, ceux de [19,
20] en considérant toute combinaison d’opérateurs en plus des opérateurs habituels du cadre du
chiffrement parfait.
66 Chapitre 4. Accessibilité dans le cas clos
Deuxième partie
Compilation
67
5
Compilation de protocoles
cryptographiques
5.1 Introduction
5.1.1 Analyse formelle de protocoles cryptographiques
Nous avons vu dans le chapitre 1, section 1.1.2 une spécification de protocole par un scénario
d’exécution. Ce type de spécification en notation Alice et Bob est facilement compréhensible pour
un lecteur humain, mais n’est pas opératoire, car d’importantes questions n’ont pas de réponse
dans cette spécification : Quels sont les ordres de réception/envoi de messages possibles ? Quels
messages peuvent être acceptés par les acteurs ?
L’analyse des protocoles passe par une première étape de compilation d’une description déclarative
du protocole vers un système de transitions (Σ, T ), où Σ est un ensemble (infini) d’états, et T une
relation de transitions entre états. Deux états E et E 0 sont en relation par T , ce qui est noté
T (E, E 0 ), s’il existe une transition de E vers E 0 , avec E, E 0 ∈ Σ. Les systèmes de transitions
considérés sont très variés, et vont des processus CSP [88, 64], aux automates d’arbres [75, 53], en
passant par des règles de réécriture [38]. Notre travail est dans cette dernière ligne. Nous exprimons
les actions des acteurs honnêtes et de l’intrus dans le formalisme des règles de réécriture.
Dans ce chapitre, nous décrivons la réponse que nous apportons au deux précédentes questions.
La réponse à la première des deux questions, largement acceptée, est de considérer que chaque rôle
est un processus qui attend et envoie des messages dans l’ordre prévu par le scénario. La seconde
question est plus problématique, car elle en soulève d’autres :
– existe-t-il un mécanisme sous-jacent de contrôle des champs d’un message ? G. Lowe a pro-
posé [54] un mécanisme de marquage des messages pour assurer que des messages différents
ne soient pas confondus. Cependant, il nous semble préférable d’avoir un mécanisme explicite,
et d’éviter de donner à un message une structure plus complexe que celle d’une suite de bits ;
– quelles parties d’un message reçu sont analysées par un rôle ? Il est tentant, dans le cadre
de l’implantation d’un protocole, de chercher à économiser du temps de calcul en ne faisant
pas toutes les vérifications possibles. Dans le cadre de la recherche d’attaques, il nous semble
cependant préférable de supposer que toutes les vérifications possibles seront faites.
69
70 Chapitre 5. Compilation de protocoles cryptographiques
parties du message qu’il a reçu. Le problème est que cela signifie qu’un acteur jouant le rôle B peut
connaı̂tre (partiellement) la structure d’un message chiffré qu’il attend alors qu’il n’en connaı̂t pas
s,cbc
la clef. Nous avons préféré éviter ces cas spéciaux, ainsi que le cas similaire avec l’opérateur { } ,
en supposant que le chiffrement symétrique était, du point de vue des rôles, parfait. Dans le reste
de ce chapitre, nous considérons donc une signature F contenant tous les constructeurs de Fproto
s,ebc s,cbc
desquels nous avons enlevé les constructeurs { } et { } . Nous notons Rproto le système de
règles de déductions défini à partir de ces constructeurs. Avec les notations du chapitre 4 :
[
Rproto = Lf
f ∈F
p
1. A → B : {Na, A}Kb
p
2. B → A : {Nb, Na}Ka
p
3. A → B : {Nb}Kb
Plusieurs hypothèses sont implicites dans ce scénario. Soient a et b deux acteurs honnêtes, et I
un acteur malhonnête.
5.2. Langage Haut Niveau 71
Indépendance de contrôle des rôles par rapport aux acteurs. Supposons qu’un même
acteur a joue les rôles A et B de ce protocole. Nous supposons que les actions de cet acteur jouant
le rôle A sont indépendantes de celles qu’il effectue en jouant le rôle B.
Les actions du rôle A n’affectent pas les actions du rôle B. Donc, dans une sémantique opérationnelle
de ce protocole, les transitions liées au rôle B, par exemple, ne doivent dépendre ni de l’état du
rôle A avec qui il communique, ni de l’instance (acteur et connaissances initiales) de ce rôle.
Indépendance des données dans des rôles joués par un même acteur. Nous faisons
l’hypothèse que les connaissances d’un acteur ne sont pas partagées entre les différents rôles qu’il
joue. Donc si un acteur a joue les rôles A et B du protocole de la figure 5.1, il ne vérifiera pas si
le nonce Na qu’il a envoyé a la même valeur que celui reçu en jouant le rôle B.
NSPK ;
A, B : ;
Na, Nb : ;
Ka, Kb : ;
A : B , Ka, Ka0 , Kb ;
B : A, Ka, Kb, Kb0 ;
1 . A → B : {Na, A}Kb
2 . B → A : {Nb, Na}Ka
3 . A → B : {Nb}Kb
:
B [A : a, B : b, Ka : ka, Kb : kb],
B [A : a, B : I , Ka : ka, Kb : ki ],
A [A : a, B : I , Ka : ka, Kb : ki ] ;
divert, impersonate ;
b, kb ;
B authenticates A on N a ;
A, B : ;
N a, N b : ;
Ka, Kb : ;
Ces variables sont ensuite utilisées pour déclarer les connaissances initiales des rôles. Tout terme
opération construit à partir des variables est une connaissance initiale valide. La déclaration se fait
rôle par rôle. Pour le protocole de la figure 5.2, les connaissances déclarées sont :
A : B, Ka, Ka0 , Kb ;
B : A, Ka, Kb, Kb0 ;
Notons que les variables de rôle Na et Nb ne sont dans les connaissances initiales d’aucun rôle.
Cela permet, dans le cadre des règles génériques, d’autoriser un acteur à participer à un nombre non
borné de sessions. Dans ce cadre, les connaissances initiales sont les mêmes d’une session à l’autre.
Les nonces de deux sessions d’un acteur devant être différents, le compilateur devra retrouver les
variables correspondant à des nonces, et les traiter à part.
1. A → B : {N a, A}Kb
2. B → A : {N a, N b}Ka
3. A → B : {N b}Kb
qu’un attaquant peut avoir sur le système de communication. Trois capacités sont définies, et
l’utilisateur peut en donner à l’intrus de zéros à trois parmi les suivantes :
– divert permet à l’intrus d’intercepter tous les messages. Il peut ainsi empêcher un message
envoyé d’arriver à destination et connaı̂tre le contenu de ce message. Cette propriété doit
être envisagée dès que des personnes inconnues ont un accès physique à un réseau par câble.
C’est le cas, par exemple, pour des communications via internet entre deux sites distants ;
– eaves dropping n’autorise pas l’intrus à empêcher un message d’arriver à destination, mais
lui permet de prendre connaissance du contenu des messages envoyés. Il faut noter que n’im-
porte qui peut écouter tous les messages envoyés sur des réseaux Wifi, mais qu’il est impos-
sible d’empêcher un message d’arriver à destination. Pour ce type de réseaux, la propriété
d’eaves dropping sera préférée à divert ;
– impersonate est une propriété d’intrus dans tous les réseaux où il n’y a pas de mécanisme
implicite d’authentification. Dans le cas d’envoi de messages sur internet, par exemple, il est
possible de falsifier l’en-tête d’un message pour lui donner une adresse IP d’origine différente
de l’adresse réelle d’envoi. La difficulté pour l’intrus, dans ce cas, est de parvenir à récupérer
la réponse, qui ne lui est plus envoyée directement. Pour cela, il a besoin soit de la propriété
divert, soit, à défaut, de la propriété eaves dropping. Lorsque l’intrus envoie un message
en falsifiant l’en-tête pour faire croire que ce message vient d’un acteur a, l’envoyeur est noté
I(a) : il s’agit de l’intrus I, mais avec l’identité a.
Nous remarquons, sans le prouver formellement, qu’un intrus possédant les capacités divert et im-
personate a aussi la capacité eaves dropping : il peut toujours intercepter un message, mettre
le contenu de ce message dans ses connaissances (propriété divert) et le renvoyer sous l’identité
de l’émetteur initial.
Dans le cas de la figure 5.2, l’intrus a les capacités d’interception et d’envoi sous une fausse
identité :
divert, impersonate ;
D. Dolev et A. Yao ont formalisé, dans [41], la notion d’un intrus ayant un contrôle total sur le
réseau, ainsi que ses capacités de déduction dans le cadre du chiffrement parfait. Un attaquant de
ce type sera dit de D. Dolev-A. Yao, en référence à ces deux auteurs.
b, kb ;
B authenticates A on N a ;
Les w-termes. Les termes des participants, acteurs dans un état ou rôle dans une transition,
sont d’arité 2. Leurs arguments sont :
– le numéro du message que le participant attend. Étant donné un protocole, ce numéro identifie
aussi le rôle joué par cet agent [56]. Un acteur prêt à initier un protocole est marqué comme
étant à l’étape 0 ;
76 Chapitre 5. Compilation de protocoles cryptographiques
– la liste des connaissances de l’acteur attendant le message. Dans cette liste se trouvent entre
autres le nom de l’acteur.
Par exemple, le terme w(0, [a, I , ka, ka 0 , ki ]) représente l’acteur a jouant le rôle A dans la figure 5.2.
Ces termes sont dévolus aux agent honnêtes. Lorsque l’intrus joue officiellement un rôle, les connais-
sances initiales de ce rôle sont versées dans les connaissances initiales de l’intrus.
Les i-termes. Les termes de l’intrus sont d’arité 1. Un terme i(t) signifie que l’intrus connaı̂t t.
witness(xB , xA , N a, xN a )
est ajouté à l’état du protocole dès qu’un acteur xB jouant le rôle B envoie à un acteur xA jouant
le rôle A la valeur xN a pour N a pour la première fois de sa session. Avec les mêmes notations,
lorsque xA termine sa partie du protocole, un terme :
request(xA , xB , N a, xN a )
est ajouté avec les valeurs que xA attribue à xB et xN b . Un mécanisme de simplification enlève de
l’état les deux termes witness et request si les valeurs correspondent. Un état du protocole violant
la propriété d’authentification est un état contenant un terme request après simplification.
connaissances du rôle après l’envoi de la réponse. Nous décrirons dans la suite de ce chapitre la
construction de ces termes.
Pour le système de transition (Σ, T ), et pour E, E 0 ∈ Σ, on a T (E, E 0 ) s’il existe une règle
l → r et une substitution σ telles que lσ ⊆ E et E 0 = E \ lσ ∪ rσ. Par exemple, en se basant sur la
p
spécification de protocole de la figure 5.2, supposons que l’intrus ait envoyé le message {I, a}kb en
prétendant être l’acteur a jouant le rôle A à un acteur b jouant le rôle B. L’état du protocole est
alors :
p
m(I, a, b, {I, a}kb ) ·
w(0, [a, I , ka, ka 0 , ki , na]) · w(1, [b, a, kb, kb 0 , ka, nb])
·i(I) · i(a) · i(b) · i(ka) · i(kb) · i(ki) · i(ki0 )
La règle de réception du premier message pour le rôle B est :
p
m(xinc , xA , xB , {xNa , xA }xKb ) · w(1 , [xB , xA , xKb , xKb
0
, xKa , xNb ])
⇒
p
m(xB , xB , xA , {xNb , xNa }xKa ) · w(3 , [xB , xA , xKb , xKb
0
, xKa , xNb , xNa ])
Elle peut être appliquée sur l’état courant du protocole avec la substitution σ suivante :
- xinc σ = I - xA σ = a - xB σ = b
- xN a σ = I - xKb σ = kb - xKa σ = ka
- xN b σ = nb
Écoute d’un message. Lorsque l’intrus possède la capacité eaves dropping, il a la possibilité
d’écouter les messages en transit. L’écoute d’un message quelconque est modélisée par la règle :
Dans l’implantation effective du compilateur, un marqueur est ajouté dans les arguments du
constructeur m pour assurer que l’intrus n’écoute pas plusieurs fois le même message [56]. Les
messages envoyés par l’intrus sont marqués comme ayant déjà été écoutés.
règles de simplification sont générées pour permettre à l’intrus de décomposer ses connaissances.
Dans la version actuelle de CasRul, ces règles sont :
(h , i) i(hx1 , x2 i) → i(x1 ) · i(x2 )
s s
({ } ) i({x1 }x2 ) · i(x2 ) → i(x1 ) · i(x2 )
p p p
({ } ) i({x1 }x2 ) · i(x02 ) → i(x1 ) · i({x1 }x2 ) · i(x02 )
p p p
({ } ) i({x1 }x0 ) · i(x2 ) → i(x1 ) · i({x1 }x0 ) · i(x2 )
2 2
Ces règles, décrites dans [56], présentent cependant l’inconvénient de ne pas permettre le traitement
de clefs composées.
Une autre voie, le modèle paresseux. Nous avons introduit dans [24] un modèle paresseux
de l’intrus reposant sur la résolution de contraintes. Ce système, décrit au chapitre 6, permet une
analyse à la fois plus performante et plus complète d’un protocole. Il n’est plus nécessaire de pré-
calculer les différentes manières possibles de composer ou décomposer un message, ce qui a rendu
obsolètes les calculs présentés au paragraphe précédent.
1. A → B : {M }K
...
n. A → B : K
n + 1. B → A : M
Après avoir reçu le premier message, et en considérant le chiffrement comme parfait, B ne connaı̂t
ni la valeur de M , ni celle de K. Et pourtant, il a reçu B et M ! Supposons maintenant qu’un
acteur jouant le rôle B doive répondre en émettant le message M :
1. A → B : {M }K
2. B → A : M
Un tel protocole ne peut pas être exécuté. Il ne pourra pas être exécuté non plus si M désigne un
rôle (est de type ). Enfin, nous remarquons que si M n’est pas envoyé dans le premier message :
1. A → B : {A}K
2. B → A : M
le protocole devient exécutable : M est une nouvelle valeur créée par l’acteur jouant le rôle B.
Dans la suite de cette section, nous allons voir comment retrouver les nonces à partir d’une
spécification de protocoles en sous-section 5.4.2. Ensuite, disposant des nonces créés par un rôle,
de ses connaissances initiales et de la suite des messages du protocole, nous étudierons le problème
de l’exécutabilité d’un protocole.
Si une variable de rôle N apparaı̂t dans les connaissances initiales d’un rôle, elle ne sera pas
traitée comme un nonce. Il suffit donc de vérifier que si une variable de rôle N n’apparaı̂t pas dans
les connaissances initiales des rôles, alors c’est un nonce.
Il y a pour cela deux contraintes à vérifier. En l’absence de mécanisme de communication autre
que l’envoi de messages, un nonce ne peut être créé que par un seul rôle. Donc une variable qui
n’est dans les connaissances initiales d’aucun rôle est un nonce si :
– elle a été créée par le rôle l’envoyant en premier ;
– elle n’est créée par aucun autre rôle lors d’une exécution normale du protocole.
Pour les clefs publiques/privées, nous supposons aussi qu’un rôle créant une clef publique (ou
privée) crée en même temps la clef privée (publique) correspondante. Il faudra alors vérifier que
le protocole est exécutable sous ces hypothèses. Pour la suite de cette section, notons Nonce(A)
l’ensemble des nonces qu’on pense être créés par le rôle A.
80 Chapitre 5. Compilation de protocoles cryptographiques
Par définition, Mem(A, i) est un sous-ensemble de T(F, V). Il est maintenant possible de définir
ce que signifie, pour un protocole, être exécutable.
Rproto
∀i ∈ {1, . . . , n} , Mi ∈ Mem(Si , i − 1)
Executabilite(P )
est dans PTIME.
5.5. Gestion des Connaissances 81
1. A → B : {M }K
...
n. A → B : K
n + 1. B → A : M
À la réception du premier message, un acteur jouant le rôle B, ne connaissant pas K, ne peut pas
vérifier la structure du premier message. L’intrus peut donc substituer n’importe quelle valeur au
message envoyé par A, ce message sera toujours accepté par un acteur jouant le rôle B.
Dans le but de modéliser les substitutions que l’intrus peut appliquer sur un message attendu
par un rôle B, nous allons :
a) donner, pour chaque rôle, une représentation des connaissances par un ensemble de termes
valeurs ;
b) exprimer les messages attendus et envoyés par un rôle par des filtres sur les termes valeurs.
Pour cela, nous avons besoin de deux opérations sur les ensembles de termes. La première,
Rproto
Cloture(E), donne les sous-termes de E qui sont dans E .
Définition 35 (Cloture(E)))
Soit E un ensemble de termes. Nous notons :
Rproto
Cloture(E) = (E) ∩ E
Nous définissons aussi, pour un ensemble de termes valeurs E, les termes dont la valeur ne peut
pas être inférée à partir d’autres termes de E.
Les sous-termes t testables d’un ensemble E sont donc ceux qui peuvent ou dont l’inverse peut
être déduit de E. Cette deuxième condition peut être remplie en chiffrant une constante a par t
puis en déchiffrant le résultat en utilisant l’inverse supposé s de t. Si cette procédure permet de
retrouver a, alors s est bien l’inverse de t.
Hypothèse d’analyse complète. Le traitement des connaissances par un rôle n’est pas spécifiée
par un scénario de réception/envoi de messages. Il nous faut donc faire des hypothèses sur la
manière dont les rôles relient les connaissances qu’ils ont apprises au cours d’une exécution. Nous
supposons que les rôles essayent toujours d’analyser au maximum les connaissances. Autrement
dit, nous considérons qu’un rôle connaissant un ensemble E de termes calcule toujours Cloture(E)
et vérifie autant que possible les relations possibles entre les termes de Cloture(E).
82 Chapitre 5. Compilation de protocoles cryptographiques
Construction des relations entre les termes de Cloture(E). Nous allons construire un en-
semble de relations liant les termes de Cloture(E) par le biais d’une procédure non déterministe.
Schématiquement, cette procédure consiste à partir d’un ensemble vide de relation, et à construire,
pour chaque terme t de Cloture(E), une relation non triviale avec les autres termes de Cloture(E).
Nous donnons quatre sous-procédures, une pour chacun des constructeurs ⊕({ }),Exp( , ) et
p,rsa
{} , et la quatrième pour les constructeurs libres. Chaque procédure ne modifie la relation
que pour les f -termes de Cloture(E). Soit X E un ensemble de variables indexées par les éléments
testables dans E. L’absence de relation entre les termes de Cloture(E) est modélisée par une
fonction :
δ0 : Test(E) → X E
t 7→ xt
La fonction δ construisant un ensemble de relations entre les termes est construite au moyen de
l’algorithme des figures 5.4 à 5.7.
E = Cloture(E) = {a, b, c, d, ⊕({a, b}), ⊕({c, d}), ⊕({a, c}), ⊕({b, d}), ⊕({b, c, d}), ⊕({a, b, c, d})}
Cependant, le résultat de la première boucle de l’algorithme de la figure 5.7 appliquée aux ⊕-termes
pourrait être :
Dans cette représentation, par exemple, nous avons perdu qu’il était possible d’obtenir a à partir
de ⊕({b, c, d}) et ⊕({a, b, c, d}). Le même type de problème se pose pour les opérateurs Exp( , ) et
p,rsa
{} . Dans la suite, nous donnons quatre algorithmes permettant de représenter des f -termes de
p,rsa
Cloture(E ∪F ), un pour f constructeur libre, et un pour chaque cas g ∈ {⊕({ }), Exp( , ), { } }.
Le cas des termes testables est traité dans l’algorithme 5.7 via la traitement de l’opérateur −1 .
Construction de la représentation pour les ⊕-termes. L’ensemble E est fini. Dans l’algo-
rithme de la figure 5.4, nous simplifions les notations en assimilant un terme t à sa représentation
dans l’espace vectoriel IF F
2.
La base B peut être construite en utilisant le théorème de la base incomplète à partir de Mb .
L’inclusion B ⊆ M est possible car M est un ensemble générateur de hM i par construction. Elle
implique que tout élément de la base B est dans Cloture(E), et est donc un sous-terme de E.
Notons enfin que δ⊕ (t) 6= δ0 (t) implique que t est un ⊕-terme par le choix de la base.
Construction de la représentation pour les Exp( , )-termes. Nous avons vu dans le cha-
pitre 3 que les Exp( , )-termes d’une même base ont une structure de module sur . La difficulté
réside ici dans le fait que les facteurs des Exp( , )-termes (l’équivalent de M⊕ dans le cas de
l’opérateur ⊕) et les termes de Cloture(E) servant à les simplifier (les termes de Mb dans le cas
de l’opérateur ⊕) ne jouent pas les mêmes rôles. Il n’est pas possible de faire la somme de deux
facteurs, par exemple.
Pour chaque terme u qui est base d’un Exp( , )-terme t, nous considérons :
5.5. Gestion des Connaissances 83
[
soit F = Facteur⊕ (t)
t ⊕−terme de Cloture(E)
M⊕ = {t ∈ Cloture(E) | t ⊕ −terme}
soit Mb = {t ∈ Cloture(E) | t ∈ F }
M = M ⊕ ∪ Mb
soit hM i le sous-espace vectoriel de IF F 2 engendré par M .
soit B une base de hM i avec Mb ⊆ B ⊆ M .
pour tout t ∈ M⊕ faire
si t ∈ B, alors
δ⊕ (t) = δ0 (t)
sinon, soit t = p⊕({b1 , . . . , bk })q l’écriture de t dans la base B
(k > 1) alors
δ⊕ (t) = ⊕({δ0 (b1 ), . . . , δ0 (bk )})
finsi
finfaire
M ≡Mu M0 si et seulement si (M − M0 ) ⊆ Mu
L’algorithme de représentation des Exp( , ) termes est exposé dans la figure 5.5. Il est plus
complexe que dans le cas de l’opérateur ⊕ car les facteurs peuvent aussi être des Exp( , )-termes.
Notons que δExp (t) 6= δ0 (t) implique, là encore, que t est un Exp( , )-terme.
p,rsa
Construction de la représentation pour les { } termes. La construction de la représentation
p,rsa
des connaissances dans le cas de l’opérateur { } est très proche de celle dans le cas de l’opérateur
Exp( , ). Les deux seules différences sont :
– les termes de Mu sont choisis modulo la relation d’équivalence ≡ −1 ;
– pour les termes de base u, la relation ≡Mu n’est pas, en général, une relation d’équivalence.
Elle est réflexive et transitive, mais pas symétrique, car seules des combinaisons linéaires
positives peuvent être prises en compte.
p,rsa
Soit u une base de { } -termes fixée. Nous considérons donc, pour un facteur M de Fu , l’ensemble
H(M) des facteurs M’ de Mu tels que le support de Add(M0 , Opp(M)) soit inclus dans Mu . Nous
disons qu’un multi-ensemble M est maximal si M ∈ H(M0 ) implique M0 ∈ H(M). Nous notons
enfin Hu,max un ensemble de cardinal minimal de maximaux parmi Fu tel que, pour tout M0 dans
Mu , il existe M dans Hu,max tel que M0 ∈ H(M). L’algorithme de construction de la représentation
p,rsa
pour les { } -termes est donné dans la figure 5.6.
Notons que δRsa (t) 6= δ0 (t) implique, là encore, que t est un Exp( , )-terme.
Définition 37 (Représentation)
Soient E et F deux ensembles de termes. Avec les notations précédentes, la représentation de E
à partir de F , notée Repres(E, F ), est l’ensemble :
Les deux lemmes suivants permettent de caractériser les variables dans les représentations.
Lemme 7
Rproto
Soient E et F deux ensembles de termes, δE∪F , et soit t ∈ Cloture(E ∪ F ) tel que t ∈ F .
Alors :
Var(δE∪F (t)) ⊆ Var(δE∪F (F ))
D : F = F0 → . . . → Fn 3 t
5.5. Gestion des Connaissances 85
C’est vrai par définition pour i = 0. Supposons que Var(δE∪F (Fi )) = Var(δE∪F (F )), et soit
ti+1 = Fi+1 \ Fi . Soit f le constructeur tel que la transition Li → ti+1 appliquée est une f -règle.
86 Chapitre 5. Compilation de protocoles cryptographiques
Il suffit de montrer :
di , (Mi ) → ti+1
L’inclusion (A) est alors vraie par définition de δE∪F (di ) dans ce cas ;
p,rsa
– le même raisonnement vaut pour f = { } .
Donc (A) est vraie pour tout i, ce qui prouve le lemme.
Le lemme suivant est une conséquence directe du lemme 7.
Lemme 8
Soient E et F deux ensembles de termes, δE∪F , et soit t ∈ Cloture(E ∪ F ) tel que :
Rproto
Hypothèse de monotonie. Soient E un ensemble et t un terme. Si t ∈ E , nous supposons
toujours que :
δE∪{t} (E) = δE (E)
Notons que par le lemme 7, cette hypothèse ne perd pas en généralité.
Le filtre pour accepter le message Attendu(i) attendu par le rôle Ri à l’étape i s’écrit alors :
Le lemme suivant porte sur les résultats de deux calculs indépendants, et repose donc sur
l’hypothèse de monotonie. Il permet de caractériser les occurrences des variables dans les règles de
réception/envoi de messages.
Lemme 9
Avec les notations précédentes, si P est exécutable, alors pour tout i ∈ {1, . . . , n} :
xt ∈
/ Var(δMem(Si ,i)∪{Mi } (Mem(Si , i)))
et donc :
Var(δM emoire(Si ,i)∪{Mi } (Mi )) 6⊆ Var(δM emoire(Si ,i)∪{Mi } (Mem(Si , i)))
Rproto
Le lemme 7 implique alors Mi ∈
/ M emoire(Si , i) , ce qui contredit l’exécutabilité du protocole.
1. A → B : {M }K
2. B → C : Exp(B, {N b})
3. C → B : {K}(Exp(B, {N b, C}))
4. B → A : M
Connaissances. Les ensembles de connaissances des rôles, à chaque étape, sont les suivants :
a) Conn(A, i) = {xM , xK , xA , xB } pour i ∈ {0, . . . , 4} ;
b) – Conn(B, 0) = Conn(B,
1) = {xB , xA , xC , xNb } ,
– Conn(B, 2) = xB , xA , xC , xNb , x{M }K
s
– Conn(B, 3) = xB , xA , xC , xNb , {xM }xK ,
n o
s s
– Conn(B, 4) = xB , xA , xC , xNb , {xM }xK , {xK }Exp(xB ,{xN b ,xC }) ;
c) – Conn(C, 0) = Conn(C, 1) =Conn(C2 ) = {xC , xB , xK },
– Conn(C, 3) = Conn(C4 ) = xC , xB , xK , xExp(B,{N b}) .
Messages attendus. Les messages attendus sont déduit de la liste des connaissances de chaque
rôle :
1. Attendu(1) = x{M }K ;
2. Attendu(2) = xExp(B,{N b}) ;
s
3. Attendu(3) = {xK }Exp(xB ,{xN b ,xC }) ;
4. Attendu(4) = xM .
pour les règles de réception/envoi de message. Si la règle est celle initiant une session, il n’y a pas
de m-terme dans le membre gauche, et si il s’agit de celle concluant une session, il n’y a pas de
m-terme dans le membre droit. La constante i0 correspond à l’étape suivante de réception d’un
message pour ce rôle si elle existe, et à l’étape de première réception d’un message sinon. Par
convention, l’étape de première réception d’un message est, pour le rôle initiateur du protocole,
l’étape 0.
La liste [Conn(Ri , i)] contient les termes de l’ensemble Conn(Ri , i).
En rassemblant le résultat du lemme 9 et la remarque suivant la définition de Attendu, nous
avons la proposition suivante.
Plus précisément, l’égalité est vérifiée au sein d’une exécution du protocole, et est en général
stricte lors du passage d’une session à la suivante à cause de l’oubli des connaissances de la session
courante.
Pour le protocole de la figure 5.8, les règles des rôles en sortie du compilateur CasRul sont
données dans la figure 5.9.
5.5. Gestion des Connaissances 89
Message 0 :
w(0, [xM , xK , xA , xB ]) ⇒
s
m(xA , xA , xB , {xM }xK ) · w(4, [xM , xK , xA , xB ])
Message 1 :
m(xinc , xA , xB , x{M }K ) · w(1, [xB , xA , xC , xNb ]) ⇒
m(xB , xB , xC , Exp(xB , {xNb })) · w(3, [xB , xA , xC , xNb , x{M }K ])
Message 2 :
m(xB , xB , xC , xExp(B,{N b}) ) · w(2, [xinc , xB , xK ]) ⇒
s
m(xC , xC , xB , {xK }Exp(xExp(B,{N b}) ,{xC }) ) · w(2, [xC , xB , xK ])
Message 3 :
s s
m(xinc , xC , xB , {xK }Exp(xB ,{xN b ,xC }) ) · w(3, [xB , xA , xC , xNb , {xM }xK ]) ⇒
m(xB , xB , xA , xM ) · w(1, [xB , xA , x0Nb ])
Message 4 :
m(xinc , xB , xA , xM ) · w(4, [xM , xK , xA , xB ]) ⇒
w(0, [x0M , xK , xA , xB ])
a) Tout d’abord, les termes w en partie droite de la règle du message 1. et en partie gauche
du message 3. sont différents. Lorsque la première est utilisée, un acteur jouant le rôle B
accepte n’importe quel message m tel qu’il existe une substitution σ1 avec x{M }K σ1 = m,
c’est-à-dire n’importe quel message. Le message reçu est « stocké » dans les connaissances de
B. La règle du message 3. ne pourra être appliquée que s’il existe une substitution σ2 telle
que m = ({xM }xK )σ2 ;
b) la valeur de la variable xinc dépend des capacités de l’intrus. Si celui-ci a la capacité ea-
ves dropping, c’est une variable ayant une seule occurrence dans la règle. Sinon, il s’agit
d’une nouvelle occurrence de la variable en deuxième position du terme m : le receveur peut
vérifier que l’émetteur officiel est l’émetteur réel du message ;
c) il y a des différences mineures entre les règles données plus haut et celles en sortie du com-
pilateur CasRul :
– la première est la présence, dans le terme w, d’un argument supplémentaire représentant
un numéro de session. Cet identifiant sert à différencier des exécutions différentes d’un
même rôle par un même acteur,
– une autre différence est l’ajout d’un terme permettant d’assurer la fraı̂cheur des nonces
utilisés par les principaux. Lorsqu’un acteur se prépare à commencer une nouvelle session,
nous avons noté dans ses connaissances x0 une variable prenant une valeur différente de
toutes celles apparues jusque là dans l’exécution du protocole,
– enfin, les nonces ne sont pas présents dans l’état d’un rôle se préparant à exécuter une
session du protocole ; ils sont ajoutés au fur et à mesure de leur utilisation. Le lecteur peut
se référer à [56] et [23] pour une description plus précise de ces règles ;
90 Chapitre 5. Compilation de protocoles cryptographiques
Attendu(j)σi ⇒ Composer(j)σi
n’est pas vérifiée. En effet, à chaque étape, un rôle redécompose toutes ses anciennes connais-
sances. Cependant, quitte à transformer le protocole, il est possible de supposer que les anciennes
connaissances ne sont pas décomposées par le rôle. Pour cela, considérons une nouvelle version de
ce protocole, dans laquelle une clef symétrique Kd est ajoutée dans les connaissances initiales du
rôle B :
1. A → B : {M }K
2. B → A : B, {{M }K}Kd
3. A → B : {{M }K}Kd , K
4. B → A : M
Si le rôle B ne décompose pas ses anciennes connaissances on a, dans ce protocole :
– Conn(B, 1) = Conn(B, 0) = {x A , xB , xKd }
– Conn(B, 3) = Conn(B, 2) = xA , xB , x{M }sK , xKd
– Conn(B, 4) = xA , xB , xM , xK , x{M }sK , {{xM }xK }xKd , xKd
L’ensemble des variables dans les ensembles de connaissances devient donc croissant. Dans le cas
de règles générales, la décomposition de connaissances antérieures ne pose pas de problèmes : si
le message envoyé par l’intrus à l’étape 1. n’est pas de la forme {xM }xK , il ne sera pas possible
5.5. Gestion des Connaissances 91
d’appliquer la règle de réception du message 4. Dans le cas des règles spécialisées pour l’intrus de
D. Dolev et A. Yao, la décomposition des messages antérieurs pose problème car il faudra alors
prévoir plusieurs règles, exclusives les unes des autres, pour le cas où l’intrus envoie le message 1.
puis le message 4., ou uniquement le message 1. Afin de ne pas avoir à considérer ces différents cas,
nous supposons que les règles du protocole sont telles qu’un rôle n’a jamais besoin de décomposer
ses connaissances antérieures :
Sous cette hypothèse, l’ensemble des connaissances d’un rôle est défini par :
Conn(A, i)
=
Conn(A, i − 1) si A 6= Si
Conn(A, i − 1) ∪ Repres({Si−1 , Mi−1 } , Mem(A, i − 1)) si A = Si
Cette hypothèse permet donc d’« importer » une propriété des règles générales dans les règles
optimisées, ce qu’indique la proposition suivante. Elle joue le même rôle vis-à-vis de la fonction
Attendu que l’hypothèse de monotonie vis-à-vis de la fonction Composer. Remarquons enfin que
cette hypothèse ne perd pas en généralité vis-à-vis des protocoles étudiés tant qu’il est accepté
d’ajouter de nouvelles règles permettant la décomposition de connaissances antérieures.
Proposition 34
Soit ({Rι ⇒ Sι }ι∈I , <I , S0 ) une instance d’un protocole. Alors pour tout ι ∈ I, pour toute variable
x ∈ Var(Sι ), il existe ι0 ≤I ι tel que x ∈ Var(R0ι ).
Preuve. Soit ι ∈ I et x ∈ Var(Sι ). Soit B un rôle et σ une substitution tels que Rι ⇒ Sι soit dans
l’instance σ du rôle B. Par le lemme 9 et par induction, x ∈ Var(Sι ) implique soit x ∈ Var(Rι0 )
pour un ι0 ≤ I ι, soit x est dans Conn(B, 0). On en conclut Var(Conn(B, 0)σ) = ∅, ce qui prouve le
lemme.
Ri ⇒ Si
à la spécification du protocole, et de prendre comme ordre sur les variables l’ordre de première
« apparition » d’une variable dans le membre gauche d’une règle. Notre but est de transformer les
règles d’un protocole pour que la restriction suivante soit vraie :
92 Chapitre 5. Compilation de protocoles cryptographiques
Nous indiquons une méthode pour construire une version d’un protocole ayant des règles de
cette forme en partant de la spécification du protocole. Pour un rôle ayant les connaissances K,
recevant un message M et dont la fonction de représentation des connaissances est δ :
– soit d1 , . . . , dn les sous-termes de δ(M ) qui sont décomposés par une règle di , Fi → ti avec
Var(δ(Fi )) 6⊆ Var(δ(K)) ;
– choisir de nouvelles variables z1 , . . . , zn et de nouvelles clefs symétriques K1 , . . . , Kn ;
– Soit m le message δ(M ) dans lequel les di sont remplacés par des zi et, pour i ∈ {1, . . . , n},
soit d0i le terme di dans lequel les termes di+1 , . . . , dn sont remplacés par les variables
zi+1 , . . . , zn . En utilisant ces notations, nous remplaçons la règle :
δ(M ) ⇒ S
L’opérateur ⊕({ }) est traité à part, car dès qu’un ⊕({ })-terme t contient une variable nouvelle,
le terme ne vérifie plus l’hypothèse standard. Cela implique que le remplacement progressif n’est
plus possible. Considérons par exemple un rôle connaissant A et recevant A ⊕ B. Après calcul, le
message attendu est :
⊕({xA , xB })
et il existe une règle de décomposition :
⊕({A, B}), B → A
Parmi ces règles de décompositions, celles ne vérifiant pas l’hypothèse de bon ordre de décomposition
sont :
⊕({hX, Bi , A}), hX, Bi → A
s
{X}⊕({hX,Bi,A}) , ⊕({hX, Bi , A}) → X
Posons alors :
X1 = ⊕({hX, Bi , A})
s
X2 = {X}⊕({hX,Bi,A})
S’il est décidé que X1 doit être envoyé avant X2 , les règles du protocole deviennent :
s s
xX1 , xX2 ⇒ {xX1 }xK , {xX1 }xK
1 2
s
{⊕({hxX , xB i , xA })}xK ⇒ ∅
n os 1
s
{xX }⊕({hxX ,xB i,xA }) ⇒ xB
xK2
xA ⇒ ∅
Si au contraire il est décidé que X2 doit être envoyé avant X1 , le protocole devient :
s s
xX1 , xX2 ⇒ {xX1 }xK , {xX1 }xK
1 2
s s
{xX }X1 x ⇒ ∅
K2
s
{⊕({hxX , xB i , xA })}xK ⇒ xB
1
xA ⇒ ∅
pour lesquels une seule clef est utilisée. La proposition suivante indique qu’une variable nouvelle
dans un message M ne peut pas être dans un sous-terme de la clef d’un sous-terme chiffré de M .
Proposition 35
p s
Si f (u1 , u2 ) ∈ (Attendu(i)) et f ∈ {{ } , { } }, alors :
Preuve. Soit G = Mem(Ri , i−1)∪{Mi }, et soit f (t1 , t2 ) le sous-terme de Mi tel que δG (f (t1 , t2 )) =
f (u1 , u2 ). Par construction de δG :
t1 , t2 ∈ Cloture(G)
s
Si f = { } , il existe une règle de décomposition de f (t1 , t2 ), donc Var(u2 ) ⊆ Var(Conn(Ri , i)) par
p −1
l’hypothèse de bon ordre de décomposition. Si f = { } , alors t2 ∈ Cloture(G), et donc t2 = t02
0 −1 0
ou t2 = t2 , t2 est testable dans G. Là encore, par l’hypothèse de bon ordre de décomposition,
l’inclusion Var(u2 ) ⊆ Var(Conn(Ri , i − 1)) est vérifiée.
Proposition 36
p,rsa
Si f (u1 , M) ∈ (Attendu(i)), f ∈ {{ } , Exp( , )}, et M multi-ensemble ou multi-ensemble
généralisé de termes en forme normale, alors pour tout u2 ∈ (M) :
Proposition 37
Soit Mi le message attendu à l’étape i. Si ⊕({u1 , . . . , un }) ∈ (Attendu(i)), alors il existe au
plus un j ∈ {1, . . . , n} tel que Var(uj ) 6⊆ Var(Conn(Ri , i)). De plus, il existe un Facteur⊕ t de Mi
tel que :
uj = δCloture({Mi }∪Mem(Ri ,i−1)) (t)
5.6. Travaux Reliés 95
Soient t1 , . . . , tn les termes de Gi tels que, pour tout j ∈ {1, . . . , n}, δGi (tj ) = uj , et soit Ik ⊆
{1, . . . , n} l’ensemble des indices j tels que Var(δGi (tj )) 6⊆ Var(Conn(Ri , i − 1)). Supposons Ik 6= ∅.
Tout d’abord, notons que par construction de δi , pour tout j ∈ {1, . . . , n}, on a tj ∈ Gi .
Supposons sans perte de généralité que t1 ∈ Ik . Il existe donc une règle :
p⊕({t1 , . . . , tk })q, t2 , . . . , tk → t1
Lors de la construction de δGi , si l’image d’un ⊕-terme n’est pas une variable, il s’agit d’une
combinaison d’éléments de la base choisie. Par construction, les éléments de cette base ne peuvent
pas être des ⊕-termes, et donc δGi (t1 ) n’est pas un ⊕-terme. Donc la règle :
p⊕({δGi (t1 ), . . . , δGi (tk )})q, δGi (t2 ), . . . , δGi (tk ) → δGi (t1 )
est une règle de décomposition, donc par l’hypothèse de bon ordre de décomposition :
et donc Ik = {t1 }.
Recherche d’attaques
97
6
6.1 Motivations
Dans le cadre de nos travaux, nous avons implanté un algorithme de recherche d’attaques sur les
protocoles cryptographiques qui s’est révélé très efficace en comparaison des autres outils existant.
Contrairement aux outils classiques de validation de modèle, il s’appuie sur une représentation
symbolique des connaissances de l’intrus et des messages que celui-ci a à envoyer.
Dans ce modèle, des contraintes représentant les messages attendus par les principaux sont
construites dynamiquement, et doivent être résolues par l’intrus. Cette résolution à la demande
nous a conduit à qualifier cette stratégie de paresseuse [24]. Elle est beaucoup plus efficace, dans ce
cadre, que la validation de modèle classique car les parties de messages attendus qui peuvent être
remplacées par n’importe quel terme ne sont pas touchées. Les outils de validation de modèle clas-
siques, tels FDR [42], cherchent, dans ce cas, tous les termes acceptables. Considérons le protocole
suivant :
1 . A → B : Na
Un acteur jouant le rôle B accepte a priori n’importe quel message. Un outil comme FDR rem-
placera donc N a par tous les messages que peut composer l’intrus. Comme il y en a un nombre
infini, un typage assure que B peut vérifier, par exemple, qu’il a reçu une constante. Dans ce cas,
Na sera remplacé par toutes les constantes que connaı̂t l’intrus. Le branchement que cette stratégie
implique dans l’algorithme d’exploration des états oblige l’utilisateur à d’abord simplifier le proto-
cole étudié. Ce processus de simplification est long et laborieux, avec le risque de commettre des
erreurs.
Dans notre stratégie paresseuse, le message attendu par B est une variable. Tant qu’un message
attendu est une variable, nous considérons que l’intrus a pu l’envoyer avec succès. Si, au cours de
l’exécution du protocole, une contrainte implique que cette variable doit être, par exemple, le nom
a d’un acteur, il faudra vérifier qu’au moment de l’envoi du message à l’acteur jouant le rôle B,
l’intrus connait déjà ce nom.
Dans ce chapitre, nous montrons que cette résolution retardée des contraintes est complète
vis-à-vis de la recherche d’attaques sur une instance d’un protocole P. Nous montrons aussi qu’elle
permet de construire, pour toute attaque sur le protocole, une attaque plus générale. Cette dernière
propriété permet de chercher de manière paresseuse un ordre d’exécution du protocole pour lequel
il y a une attaque.
Après avoir décrit le cadre de cette étude, restreint par rapport au cas clos, dans les sections 6.2
et 6.3, nous définissons une notion de substitution plus générale (substitution préfixe), et celui
d’ensemble complet de préfixes dans la section 6.4. Nous définissons ensuite un système pour la
représentation symbolique des connaissances de l’intrus et pour les messages qu’il doit envoyer.
99
100 Chapitre 6. Recherche efficace d’attaques
L’intrus devant gérer ses connaissances pour pouvoir effectivement envoyer tous les messages que
l’ordre d’exécution lui impose d’avoir émis, nous appelons ces systèmes des problème de construction
simultanée. Ils sont définis dans la section 6.5.
Ensuite, nous commençons par montrer des équivalences sur les problèmes de constructions
simultanées dans la section 6.6. Celles-ci permettent de définir une fonction de normalisation et de
réduire le non déterminisme des choix de l’intrus. En particulier, il est montré que sous certaines
hypothèses, il est toujours possible de supposer qu’un ensemble de connaissances ne contient pas de
variables. Cette propriété est utilisée pour montrer la terminaison de notre algorithme de résolution
de contraintes dans la section 6.7. Nous montrons ensuite dans la section 6.8 comment ces systèmes
peuvent être utilisés en pratique pour la recherche d’attaques de secret ou d’authentification sur
un protocole. Les expériences que nous avons menées avec le prouveur de théorèmes daTac sont
décrites et discutées dans la section 6.9. Enfin, avant de conclure, nous présentons d’autres travaux
reliés au problème de la résolution de contraintes symboliques dans le cadre de l’étude de protocoles
cryptographiques en section 6.10.
Les substitutions jouent un grand rôle dans ce chapitre. Rappelons qu’elles sont des remplace-
ments dont le support est inclus dans le sous-ensemble des variables X de l’ensemble des symboles
de F d’arité nulle. Afin de distinguer les termes contenant des variables de ceux n’en contenant
pas, nous appelons :
– T(F) l’ensemble des termes t sur la signature F tels que (t) ∩ X = ∅ ;
– T(F, X ) l’ensemble des termes t sur la signature F ;
Pour un terme t (resp. un ensemble de termes E), on note Var(t) (resp. Var(E)) l’ensemble (t)∩
X (resp. l’ensemble (E) ∩ X ).
Sur cette signature, les termes opérations sont égaux (modulo un renommage des symboles)
aux termes valeurs. Prenons le point de vue de l’intrus. Ses connaissances sont modélisées par
un sous-ensemble fini E ⊂fini T(F, X ). Il peut déduire de nouveaux faits de ses connaissances en
utilisant le système de règles de réécriture sur des ensembles :
LDY = Lh , i ∪ L{ }s ∪ L{ }p ∪ LH( , )
Par le théorème 2 et les propositions, pour chaque opérateur, du chapitre 4, LDY est un système
LDY
local, et donc que pour tout terme t et tout ensemble de connaissances E, t ∈ E implique qu’il
existe une dérivation bien formée partant de E et de but t. Cela est aussi vrai si seul le système
Lc,DY est considéré.
de l’intrus, et par des contraintes représentant les messages que l’intrus doit pouvoir composer
à partir de ses connaissances. Étant donné un ordre de réception/envoi de messages par les ac-
teurs honnêtes, ce système de contraintes est appelé un problème de construction simultanée. Ces
problèmes sont définis formellement en section 6.5.
Afin d’éviter les périphrases et de simplifier le propos, nous définissons pour le système de
réécriture le résultat d’une règle. Pour les règles de décomposition (celles de Ld,DY ), nous définissons
aussi le terme décomposé par une règle, et la condition de cette règle. Les termes désignés par ces
notations sont décrits dans les tableaux 6.1 et 6.2
Une règle R ∈ Lc,DY de résultat t est notée Lc,DY (t). Une règle R ∈ Ld,DY décomposant un
terme t est notée Ld,DY (t). Pour un terme t, nous notons Res(t) le résultat de la règle (unique)
décomposant t si t n’est pas un couple, et {t1 , t2 } si t = ht1 , t2 i. Nous notons aussi Cond(t) la
condition d’une règle décomposant t.
Il est maintenant possible de définir la notion d’un ensemble préfixe d’un ensemble de substi-
tutions.
102 Chapitre 6. Recherche efficace d’attaques
L’existence d’un ensemble préfixe est triviale : Θ est un ensemble préfixe de Θ. Cette notion
est utile si, étant donné un ensemble Θ de substitutions, il existe un ensemble de substitutions Σ
de cardinal fini qui est aussi un ensemble complet de préfixes de Θ.
(Eqi )i∈{1,...,n}
∀Eq ∈ C, σ |= Eq
Par définition, on a toujours Var(E1 ) = ∅. On note C (avec les décorations usuelles) les problèmes
de construction simultanée.
Les équations de constructions peuvent être vues comme des problèmes d’unification modulo
la théorie de l’intrus et une règle extrayant un élément d’un ensemble. Montrons que ce problème
d’unification peut admettre une infinité de solutions plus générales.
Proposition 38 Le problème {a} B x a une infinité de solutions plus générales qui sont toutes
closes.
Preuve. Remarquons tout d’abord que pour tout problème de construction simultanée, les so-
lutions plus générales sont toujours closes : supposons qu’une substitution σ non close soit une
solution plus générale d’un problème de construction simultanée C. Soit E B t la première équation
de Cσ telle que E soit clos, mais pas t. Soit enfin x ∈ Var(t), et une constante a telle que a ∈
/ (E),
6.5. Problèmes de construction 103
∀σ ∈ Θ, σ |= C
Lors de la recherche d’attaques sur les protocoles cryptographiques, il est naturel de chercher
à représenter Θ. Le problème d’énumération qui se pose est alors :
Prefixe(C) : Si Θ est l’ensemble des substitutions σ telles que σ |= C,
trouver un ensemble fini et complet de préfixes de Θ.
Définition 45 (Forme résolue) Un problème de construction simultanée C est en forme résolue si
pour toute équation E BR t de C, t est une variable.
Cα , E B t, Cβ
Dec : u∈E
Cα , E B Cond(u), E ∪ Res(u) B t, Cβ
104 Chapitre 6. Recherche efficace d’attaques
Description des règles. La règle Comp permet de réduire le problème de la construction d’un
terme t au problème de la construction de ses deux sous-termes maximaux. La règle Dec permet de
décomposer un terme dans les connaissances de l’intrus. La règle Unif permet enfin de simplifier
une contrainte lorsque le terme à construire est dans les connaissances de l’intrus. Dans ce dernier
cas, un unificateur plus général est calculé entre une des connaissances de l’intrus et le terme à
construire. Cet unificateur est appliqué sur l’ensemble du problème de construction simultanée. Il
peut bien sûr être égal à l’identité.
Théorème 7 (Correction de L)
Si C ∗ C 0 , τ = Subst(C ∗ C 0 ) et σ |= C 0 , alors τ σ |= C.
σ 00 σ 0 |= Cα , E B t, Cβ
6.6.1 Généralités
Proposition 39
Pour tous les ensembles finis E et F , on a :
R R R R
(E = F ) ⇔ (∀σ, Eσ = Fσ )
R R
Preuve. Par les propositions 10 et 9 du chapitre 4, et sous l’hypothèse E = F , il existe un
ensemble fini de termes G tel que :
E →∗R G
(1)
F →∗R G (2)
Par (1) et (2), par la quantification sur les termes dans les règles de composition et de décomposition,
et pour toute substitution σ, on a :
Eσ →∗R Gσ
F σ →∗R Gσ
et donc :
Eσ ≡R F σ
Soit, par la proposition 10 du chapitre 4 :
R R
Eσ = Fσ
Proposition 40
Pour tous les ensembles finis E et F , pour tout terme t, pour tout problème de construction simul-
tanée Cα , E BR t, Cβ et pour toute substitution σ, l’égalité :
R R
(E =F )
implique :
σ |= Cα , E BR t, Cβ si et seulement si σ |= Cα , F BR t, Cβ
La proposition suivante énonce que deux ensembles équivalents ont le même ensemble de va-
riables. La preuve s’applique pour tous les symboles d’arité nulle.
Proposition 41
R R
Pour tous les ensembles E et F , E = F implique Var(E) = Var(F ).
Preuve. Par contradiction, et sans perte de généralité, soit x ∈ Var(E) \ Var(F ). Par hypothèse,
R
on a E ⊆ F . Soit :
D : F →R F1 →R . . . →R Fn
avec E ⊆ Fn , et soit i ∈ {1, . . . , n} minimal tel que x ∈ Var(Fi ). Par le lemme 4 appliqué sur R, x
est obtenu par une règle de composition, donc x est un f -terme, avec f symbole d’arité non nulle,
ce qui contredit l’hypothèse que x est une variable.
Enfin, cette dernière proposition permet de construire des ensembles équivalents.
Proposition 42
Soient E et F deux ensembles de termes, et T ⊆ E tel que :
– F ⊆E\T ;
R
– T ⊆F .
alors E ≡R E \ T .
106 Chapitre 6. Recherche efficace d’attaques
R
Preuve. On a, par hypothèse, F ⊆ E \ T et T ⊆ F , donc
R R
T ⊆F ⊆E\T
R
D’autre part, E \ T ⊆ E \ T , donc :
R
E ⊆E\T
Soit, en calculant la clôture de ces deux ensembles :
R R
E ⊆E\T
L’inclusion réciproque est triviale, et on conclut avec la proposition 10, page 49 : deux ensembles
équivalents pour un système de réécriture L ont la même clôture.
E, t ≡LDY E, t1 , t2
On étend la fonction Simplif h , i sur les ensembles de termes en définissant, pour un ensemble de
termes E :
Simplif h , i (E) = ∪t∈E Simplif h , i (t)
En utilisant le lemme 10, il vient immédiatement :
Lemme 11
Pour tout ensemble fini E,
LDY LDY
E = Simplif h , i (E)
Lemme 12
Pour tout terme t = ht1 , t2 i, pour tout ensemble E, pour toute substitution σ, on a :
LDY LDY LDY
tσ ∈ Eσ si et seulement si t1 σ ∈ Eσ et t2 σ ∈ Eσ
En combinant les lemmes 11 et 12, et en utilisant la proposition 40, nous obtenons le lemme
suivant :
Lemme 13
Pour toute équation de constructibilité E BLDY t, pour toute substitution σ, on a σ |= E BLDY t si,
et seulement si,
∀u ∈ Simplif h , i (t), σ |= Simplif h , i (E) BLDY u
Lemme 14
Soit
C = Cα , Ex B x, Cβ , E ∪ {x} B t, Cγ
C 0 = Cα , Ex B x, Cβ , E B t, Cγ
Si x ∈
/ Var(Ex ), alors pour toute substitution σ,
(σ |= C) ⇔ (σ |= C 0 )
LDY
Preuve. Par hypothèse, σ |= C, donc xσ ∈ Ex σ . Par définition, il existe F ⊆ E tel que
LDY LDY Lc,DY
Ex =F . Donc xσ ∈ F σ . Par la proposition 41 et par l’hypothèse x ∈ / Var(Ex ), on a
x∈/ Var(F ) et donc x ∈
/ F . Par la proposition 42, E \x ≡LDY E, et on conclut avec la proposition 40.
La réciproque est immédiate.
108 Chapitre 6. Recherche efficace d’attaques
Les deux lemmes suivants expriment que si, à partir d’un ensemble de connaissances E, il est
possible de construire les clefs publiques et privées t2 et t2 −1 , alors il n’est pas nécessaire de se
souvenir des messages chiffrés par ces clefs, il suffit de garder le texte clair.
p Rproto
Preuve. Par hypothèse, E, t1 , t2 , t2 −1 ⊆ E, {t1 }t2 . Donc :
Rproto p Rproto
E, t1 , t2 , t2 −1 ⊆ E, {t1 }t2
p Rproto
D’autre part, on a toujours E, {t1 }t2 ⊆ E, t1 , t2 , t2 −1 , et donc :
s Rproto Rproto
E, {t1 }t2 ⊆ E, t1 , t2 , t2 −1
p
Le même lemme vaut, évidement, si {t1 }t2 −1 est dans les connaissances. Le lemme suivant aussi
p p
est valide si {t1 }t2 est remplacé, dans l’énoncé, par {t1 }t2 −1 .
p Rproto Rproto
Preuve. Par définition, t2 −1 , {t1 }t2 ∈ E implique t1 ∈ E par une règle de décomposition,
Rproto p Rproto
et t1 , t2 ∈ E implique {t1 }t2 ∈E par une règle de composition.
p p
Soit Simplif { }p ,t la fonction qui à un terme u associe v si u = {v}t ou u = {v}t−1 , et u sinon.
On la prolonge sur les ensembles de termes :
[
Simplif { }p ,t (E) = Simplif { }p ,t (u)
u∈E
Corollaire 3
Soit Cα = (Ei B ti )i∈{1,...,n} , et soit C = Cα , E B t un problème de construction simultanée avec Cα
en forme résolue. Supposons enfin :
Rproto
u, u−1 ∈ E, Var(Cα )
Rproto Rproto
donc, sous cette hypothèse, u, u−1 ∈ E, Var(Cα ) est équivalent à uσ, u−1 σ ∈ Eσ .
L’équivalence résulte alors des équivalences dans les lemmes 17 et 18.
110 Chapitre 6. Recherche efficace d’attaques
Le théorème suivant est une conséquence directe des lemmes des sous-sections précédentes et
de la définition de Norm(C).
(σ |= C) ⇔ (σ |= Norm(C))
6.7 Complétude de L
Dans cette section, nous montrons que pour un problème de construction simultanée C et une
substitution σ, si σ |= C, alors il existe un problème de construction simultanée C 0 en forme résolue
tel que C ∗ C 0 et Subst(C ∗ C 0 ) est un préfixe de σ. D’après le théorème 8, nous supposerons
que les problèmes de construction simultanée sur lesquels les règles de L sont appliquées sont en
forme normale. La restriction 1 de la définition de L et l’hypothèse C en forme normale impliquent
que pour toute équation E B t de C sur laquelle une règle est appliquée, on a E ∩ X = ∅.
On appelle ce type particulier de problème des problèmes de construction simultanée par compo-
sition. On cherche à ramener, par transformations successives, un tel problème à un problème de
construction simultanée en forme résolue.
Lemme 19
/ X . Il existe C 0 tel que C
Soit C = Cα , E BLc,DY t, Cβ σ-satisfaisable tel que t ∈ C 0 par application
d’une règle ou avec une substitution στ préfixe de σ, telle que σ = στ τ et τ |= C 0
Preuve. Par hypothèse, σ |= E BLc,DY t, donc soit tσ ∈ Eσ, soit il existe une dérivation D partant
de Eσ de but tσ utilisant uniquement les règles de Lc,DY .
Si tσ ∈ Eσ, il existe u ∈ E tel que uσ = tσ. Soit σu l’unificateur le plus général entre u et t, et
τu tel que σ = σu τu . On est alors dans le cas d’une règle .
Lc,DY
Sinon, soit F →Lc,DY F, t la dernière transition dans D. D est une dérivation, donc F ⊆ Eσ .
La dernière transition est une règle de composition, donc avec les notations de l’énoncé, t1 σ et t2 σ
sont dans F . On est alors dans le cas d’une règle .
Dans les deux cas, l’ensemble de contraintes obtenu est encore un problème de construction
simultanée par composition.
Par la proposition 43, il n’y a qu’un nombre fini de suites de transformations partant de C.
Soient C1 , . . . , Cn les problèmes de construction simultanée par composition obtenus par des suites
de transformation de longueur maximale, et σ1 , . . . , σn les substitutions appliquées pour passer de
C à ces problèmes. La suite de transformations est de longueur maximale, donc il n’est plus possible
6.7. Complétude de L 111
d’appliquer la règle Comp. Donc si E B t est une équation de Ci , alors t est un symbole d’arité 0.
Si t n’est pas une variable, alors par maximalité, il n’est pas possible d’appliquer la règle Unif, et
donc t ∈ / E. C est un problème de construction simultanée par composition, E ne contient pas de
variables, donc pour toute substitution τ , t ∈ / Eτ . Donc un problème Ci obtenu par une suite de
transformations de longueur maximale est satisfaisable si, et seulement si, il est en forme résolue.
S’il existe une substitution σ telle que σ |= C, alors par le lemme 19 et par récurrence, il existe
au moins un i tel que σi soit préfixe de σ, et en posant σi τ = σ, toujours par le lemme 19, τ |= Ci
et donc Ci est en forme résolue. On a donc la proposition suivante.
Proposition 44
Soit C un problème de construction simultanée par composition σ-satisfaisable. Alors il existe C 0
en forme résolue, et deux substitutions τ et στ , tels que :
– C ∗ C 0 avec les règles et ;
– σ = στ τ avec στ = Subst(C ∗ C 0 ) et τ |= C 0 .
Lemme 20
Avec les notations précédentes, et si σ 6|= E BLc,DY t, il existe u = f (u1 , u2 ) dans E tel que :
Preuve. Par définition des problèmes de construction simultanée, il existe une dérivation bien
formée sur LDY partant de Eσ et de but tσ. Soit :
avec tσ ∈ Fn . L’hypothèse σ 6|= E BLc,DY t implique Ld,DY ∩ D 6= ∅. Soit i l’indice minimal tel que
Fi →Ri Fi , ri+1 avec Ri ∈ Ld,DY et soit di ∈ Fi le terme décomposé par Ri . Par définition d’une
dérivation, Lc,DY (di ) ∈
/ D. Par minimalité de i, on a donc di ∈ Eσ. Donc il existe u ∈ E tel que
uσ = di . Par le lemme 14, on peut supposer que u ∈ / X . Soient v = Cond(u) et r = Res(u) les
termes (déduits des sous-termes de u) tels que vσ soit la condition de Ri et rσ soit le résultat de
Ri . Alors :
σ |= Cα , E BLc v, E ∪ r BL t
Lemme 21
Avec les notations précédentes, il existe un problème de construction simultanée par composition
C (c) en forme résolue et τ -satisfaisable tels que :
– C ∗ C (c) et στ = Subst(C ∗ C (c) ) ;
– στ τ = σ.
112 Chapitre 6. Recherche efficace d’attaques
Preuve. D’après le lemme 20, il existe u ∈ E et des termes v, r déduits des sous-termes de u tels
que :
σ |= C1 avec C1 = Cα , E BLc v, E ∪ {r} BL t
On a : C C1 .
Par la proposition 44, il existe un problème de construction par composition en forme résolue
(1)
C2 et στ , τ (1) tels que : n o
τ (1) |= C2 , Eστ(1) ∪ rστ(1) BL tστ(1)
(1)
avec C1 ∗ C2 et στ préfixe de σ.
Itérons cette construction. Par la proposition 43, cette itération termine. Soit C (c) le problème
finalement obtenu. Par récurrence, il existe τ et στ deux substitutions telles que τ |= C (c) , στ τ = σ
et στ = Subst(C C (c) ).
Il n’est pas possible d’appliquer le lemme 20 sur C (c) , donc C (c) est un problème de construction
simultanée par composition. Il n’est pas possible d’appliquer une règle ou , donc il est
en forme résolue.
Le cas général peut maintenant facilement se déduire du lemme 21.
Théorème 9
Pour tout problème de construction simultanée C, pour toute substitution σ telle que σ |= C, il existe
un problème de construction simultanée par composition en forme résolue C (c) et deux substitutions
στ et τ telles que C ∗ C (c) , στ = Subst(C ∗ C (c) ), σ = στ τ et τ |= C (c) .
Preuve. Pour C et un indice i ∈ {1, . . . , n}, on note :
(pre)
Ci = E1 BLDY t1 , . . . , Ei−1 BLDY ti−1
Par contradiction, soient C un problème de construction simultanée et σ une substitution tels que
(pre) (pre)
σ |= C et soit i minimal tel que Ci vérifie le théorème, mais pas Ci+1 .
Par hypothèse, il existe un problème de construction simultanée par composition C 0 en forme
résolue et στ tel que :
– στ est un préfixe de σ, et στ τ = σ ;
– Var(C 0 ) = Var(Cτ ) ⊆ Var(C) ;
– τ |= C 0 , Ei τ BL ti τ .
Ce qui entraı̂ne une contradiction par le lemme 21.
Étant donné un ordre d’exécution π, notons Ri ⇒ Si la règle Rπ−1 (i) ⇒ Sπ−1 (i) , et définissons
les ensembles (Ei )i∈{0,...,k} par :
S0 si i = 0
Ei =
Ei−1 , Si sinon
Cπ = E0 B R1 , . . . , Ek−1 B Rk
est satisfaisable. Par abus de langage, nous dirons que π est σ-satisfaisable si σ |= Cπ .
Dans la suite de cette section, nous commençons par montrer qu’il est possible de réduire la
recherche d’attaque de secret ou d’authentification au problème de savoir si une exécution est
satisfaisable.
Secret(P, t) : Existe-t-il
L
π et σ tels que π soit σ-satisfaisable et tσ ∈
DY
Ek σ ?
Soit t le terme devant rester secret dans toute exécution du protocole. Nous codons cette
propriété en ajoutant une règle :
t⇒t
incomparable aux autres pour l’ordre <I . Pour un protocole P, notons Psec le protocole augmenté
de cette règle. Pour un ordre d’exécution π, posons :
Par définition des problèmes de construction simultanée, le problème de décision Secret(P, t) est
équivalent au problème :
Proposition 45
Pour toute substitution σ ∈ Σ(C), il existe une substitution σ 0 dans Σ(Cα ) qui est un préfixe de σ.
Preuve. Par définition, il existe un problème de construction simultanée en forme résolue C 0 tel
que C ∗ C 0 et σ = Subst(C ∗ C 0 ). D’après la restriction 1 sur l’application des règles de L, il
existe un problème de construction simultanée Cα0 en forme résolue tel que :
∗
C Cα0 , E BLDY t ∗
C0
Soit σ 0 = Subst(C ∗
Cα0 , E BLDY t). Par définition, on a σ 0 ∈ Σ(Cα ).
Les attaques trouvées sont réelles. Par « réelles », nous entendons que si une attaque avec un
ordre d’exécution π et une substitution σ est trouvée, alors le problème de construction simultanée
Cπ est satisfaisable : la substitution σ est préfixe d’une substitution close τ telle que τ |= Cπ . Il
s’agit d’une conséquence du théorème 7.
6.8.4.iii Conclusion
On remarque que l’algorithme présenté dans la figure 6.1 est aussi une procédure de semi-
décision pour la recherche d’attaques si les acteurs ne sont pas limités dans le nombre de sessions
auxquelles ils peuvent participer les unes à la suite des autres. L’implantation dans daTac suit ce
modèle : dès qu’un acteur a terminé une session, il peut en recommencer une nouvelle. L’ensemble
I des règles est infini, mais n’a à chaque étape qu’un nombre fini d’éléments minimaux. Il est donc
possible de faire une exploration en largeur et paresseuse de tous les ordres d’exécution possibles.
Dans le cadre du projet AVISS, les protocoles sont compilés pour qu’à la fin d’une session, un
principal puisse toujours en commencer une nouvelle. Les résultats que nous présentons dans la
section 6.9 ne sont donc jamais des résultats de correction : en l’absence de faille sur un protocole,
notre outil continue indéfiniment.
différents outils d’analyses de protocoles. Certains des outils ne pouvant pas prendre en compte
l’instanciation de protocoles rôle par rôle, les états initiaux des protocoles considérés dans cette série
de tests ne sont pas minimaux, en terme de nombre d’acteurs, pour trouver une faille. Nous avons
déjà signalé que le nombre de participants différents était, plus que la complexité des messages, la
principale limitation de notre stratégie.
Le fait d’utiliser ou non des états initiaux minimaux en terme de nombre de participants
explique la différence entre les résultats présentés dans cette section et ceux, par exemple, de [23].
L’implantation n’a pas changé depuis novembre 2000, sauf pour l’ajout de nouveaux opérateurs
(table d’adressage dispersé, ou exclusif bit à bit).
L’ordinateur utilisé était un Pentium III sous le système d’exploitation Linux, ayant une
fréquence d’horloge de 1.4 GHz, et disposant de 512 Mo de mémoire vive.
Tab. 6.3 – Résultats des expériences menées dans le cadre du projet AVISS.
1. A → S : A, B
s s
2. S → A : {B , Kab, T , {A, Kab, T }Kbs }Kas
s
3. A → B : {A, Kab, T }Kbs
1. A → S : A, B , Na
s s
2. S → A : {Na, B , Kab, {Kab, A}Kbs }Kas
s
3. A → B : {Kab, A}Kbs
s
4. B → A : {Nb}Kab
s
5. A → B : {Nb − 1 }Kab
Les auteurs analysent que ce protocole souffre d’une attaque de répétition si la clef Kab est
compromise : un acteur jouant le rôle de B, au message 3, n’a pas les moyens de savoir si la clef Kab
est fraı̂che. Ils proposent, dans le même article, une correction à cette faille. La suite des messages
du protocole amendé est décrite dans la figure 6.3.
Dans la figure 6.3, T est une date permettant à B de s’assurer que la clef Kab a été créée
récemment. Notre outil a permis de trouver une attaque sur ce protocole en dépit de cette correction.
Notons par une minuscule correspondante un acteur jouant un rôle A, B ou S. L’attaque trouvée
correspond à la suite de messages :
4. I → s : b, a
s s
5. s → I : {a, kab, t, {b, kab, t}kas }kbs
s s
6. I → b : {a, kab, t, {b, kab, t}kas }kbs
s
{a, xkab , xt }kbs
et que dans l’implantation dans daTac, l’opérateur de couple est associatif à gauche. Donc la
s
variable xt est unifiée avec le message t, {b, kab, t}kas .
Cette attaque a peu de chance de pouvoir être reproduite dans une implantation du protocole
avec des primitives cryptographiques parfaites. Cependant, si le chiffrement est fait par bloc, par
s,cbc s,ebc s
un opérateur de type { } ou { } , l’intrus peut déduire exactement le message {a, kab, t}kbs
attendu par b.
Cette attaque, si elle est réalisable sur une implantation du protocole, la rend inutilisable : un
individu malhonnête disposant de peu de moyens peut distribuer des clefs différentes à tous les
acteurs, les empêchant ainsi de communiquer entre eux. Notons cependant que l’intrus ne parvient
pas à récupérer la clef kab elle-même. Il parvient donc à bloquer les communications entre les
acteurs, mais ne parvient pas à décoder les messages envoyés.
6.9.4 Conclusion
Le prouveur de théorème daTac est spécialisé pour la déduction dans les théories associatives et
commutatives (AC). Plusieurs types de règles d’inférences utilisent l’unification modulo AC. Cette
caractéristique en fait un outil très souple, mais aussi relativement peu performant. De fait, des
implantations ultérieures de l’algorithme 6.1 en Prolog ou dans un programme Haskell (Ofmc, un
autre outil développé dans le cadre du projet AVISS) sont beaucoup plus performantes (d’un facteur
entre 100 et 1000) que celle que nous avons réalisée. Mis à part la dernière version d’Ofmc [6], il s’agit
cependant essentiellement d’optimisation de l’implantation, et pas d’amélioration de l’algorithme
présenté.
Au passage, notons que sous les mêmes hypothèses sur le chiffrement, le protocole original de
R. Needham et M. Schroeder a aussi une faille de ce type. Elle n’a pas été détectée dans ce premier
s,ebc s,cbc
cas par notre outil car les opérateurs { } et { } ne sont pas complètement pris en compte
par notre outil. Cet exemple nous pousse donc à étendre l’implantation actuelle pour prendre en
compte de manière complète les propriétés du chiffrement par blocs.
6.10. Travaux reliés 119
7.1 Motivations
Dans ce chapitre, nous nous intéressons au problème de la complexité de la recherche d’attaques
sur des instances de protocoles ayant un nombre fini de participants, chaque participant ne pouvant
jouer qu’une session. Notre but est d’étendre le cadre pour la recherche d’attaques mis en place par
D. Dolev et A. Yao au-delà de l’hypothèse de chiffrement parfait. Autrement dit, nous considérons le
problème de la recherche d’attaques sur une instance d’un protocole lorsque les messages échangés
sont construits sur une signature Fproto comprenant certains des constructeurs suivants :
s,cbc s,ebc p,rsa
{} ,{ } , ⊕({ }), { } , Exp( , )
en plus des constructeurs standards :
p s
h , i , { } , { } , H( , )
Les messages sont donc, dans tous les cas, des termes valeurs. Nous rappelons que ces termes,
lorsqu’ils sont en forme normale, représentent les classes d’équivalences des termes qu’il est possible
de construire, voir le chapitre 3, section 3.4 pour plus de détails.
La méthode générale que nous utiliserons, pour la recherche d’attaque, peut s’énoncer ainsi :
1. considérer des attaques minimales dans un sens qui sera défini en 7.3 ;
2. montrer que la représentation d’une attaque minimale est bornée polynomialement en la taille
de l’instance du protocole considérée ;
3. en déduire un algorithme de recherche d’attaque minimale.
121
122 Chapitre 7. Problèmes d’accessibilité non clos
7.2.2 Protocole
Soit F une signature ayant un nombre fini de constantes, et dont l’ensemble des constructeurs
(symboles d’arité non nulle) est inclus dans Fproto . Soit aussi X un ensemble (fini) de variables.
Nous notons T(F) l’ensemble des termes valeur sur la signature F, et T(F, X ) l’ensemble des termes
valeur sur la signature F ∪ X . Nous appelons protocole un triplet P = ({Rι ⇒ Sι }ι∈I , <I , S0 ),
dans lequel :
– I est un ensemble fini, ordonné par <I ;
– pour tout ι ∈ I, Rι et Sι sont des termes de T(F, X ) ;
– les règles Rι ⇒ Sι sont des règles de protocoles optimisées pour le modèle de Dolev et Yao
de l’intrus. En utilisant les résultats du chapitre 5, cela implique :
a) les termes Rι , Sι sont en forme normale ;
b) pour tout x ∈ Var(Sι ), il existe ι0 ≤ ι tel que x ∈ Var(Rι0 ) ;
c) enfin, nous supposons que le protocole vérifie l’hypothèse de bon ordre de décomposition
et de non décomposition des connaissances antérieures, formulées dans la section 5.5.5
du chapitre 5. Les hypothèses des propositions de la sous-section 5.5.6 sont vraies. En
notant, pour tout ι ∈ I : [
Xι = Var(Rι0 )
ι0 <I ι
∀i ∈ {1, . . . , n} , Var(ti ) ⊆ Xι
Soit L un système de réécriture sur les ensembles utilisé par l’intrus pour ses déductions. Nous
disons qu’un couple (π, σ) est une attaque pour L, avec π un ordre d’exécution et σ une substitution,
L
si π est σ-satisfaisable pour L et si la constante spéciale Secret est dans Ek .
Dans le cadre de l’étude de la sécurité de protocoles cryptographiques, nous nous intéressons
au problème de décision suivant.
Le système de déduction de l’intrus R⊕ , dans ce cas, est donné comme l’union des systèmes de règles
de composition et décomposition donnés pour chaque constructeur dans le chapitre 4, section 4.5.
On définit : S
Rc,⊕ = Sf ∈F⊕ Lc,f
Rd,⊕ = f ∈F⊕ Ld,f
R⊕ = Rc,⊕ ∪ Rd,⊕
Accessibilite Close(E, t, R⊕ )
est décidable en temps polynomial en la somme des tailles de représentation de E et de t.
De la même manière, nous définissons le système Rexp de règles de déduction de l’intrus en com-
binant les systèmes de règles de composition et décomposition pour chaque symbole de Fexp .
S
Rc,exp
= L
Sf ∈Fexp c,f
Rd,exp = f ∈Fexp Ld,f
Rexp = Rc,exp ∪ Rd,exp
Les théorèmes 2 et 3 du chapitre 4 peuvent être appliqués. On montre ainsi que Rexp est un
système local, et que les problèmes d’accessibilité close :
De la même manière, nous définissons le système Rrsa de règles de déduction de l’intrus en combi-
nant les systèmes de règles de composition et décomposition pour chaque symbole de Frsa .
S
Rc,rsa = Sf ∈Frsa Lc,f
Rd,rsa = f ∈Frsa Ld,f
Rrsa = Rc,rsa ∪ Rd,rsa
Les théorèmes 2 et 3 du chapitre 4 peuvent toujours être appliqués. On montre ainsi que Rrsa
est un système local, et que les problèmes d’accessibilité close :
La preuve de ce théorème réside dans l’algorithme de la figure 7.1. Si les hypothèses sont
satisfaites, il suffit de rechercher une attaque (π, σ) avec |σ| ≤ pL (|P|). On a, par définition d’un
ordre d’exécution, |π| ≤ |P|. Donc deviner une attaque (π, σ) peut se faire en temps polynomial
en la taille de P. La taille de σ est bornée polynomialement en fonction de la taille de P, donc les
tailles des représentations des termes Ri σ, Si σ sont elles aussi bornées polynomialement en fonction
de la taille de P. Pour tout terme t, on a |ptq|dag ≤ |t|dag , donc d’après la seconde hypothèse, les
problèmes d’accessibilité close :
Nous savons déjà (voir le chapitre 4, théorème 3) que pour les systèmes R⊕ , Rexp et Rrsa ,
la première condition du théorème 10 sur les problèmes d’accessibilité close est satisfaite. Afin de
montrer que ce théorème s’applique à ces systèmes pour la recherche d’attaques, il suffit donc de
7.4. Borne sur le nombre de sous-termes d’une attaque normale 125
montrer que, pour ces systèmes, la seconde condition est vérifiée. Nous allons le faire en deux temps.
Tout d’abord, en section 7.4, nous montrons qu’il existe un polynôme p1 tel que, s’il existe une
attaque (π, σ) sur un protocole P, alors il en existe une (π, σ 0 ) telle que la taille de la représentation
des sous-termes de σ 0 soit inférieure ou égale à p1 (|P|). Ensuite, nous montrerons dans la section 7.5
que s’il existe une attaque (π, σ) sur P, il en existe une dont les valeurs des multi-ensembles (les
coefficients) sont descriptibles en un espace polynomial en la taille du protocole d’entrée. Notons
que cette seconde étape n’est pas nécessaire pour le cas des règles R⊕ .
Dans la suite de ce chapitre, nous utilisons la notion d’attaque normale. Soit :
Afin d’avoir S0 6= ∅, nous supposons que la constante I désignant le nom de l’intrus est toujours
dans S0 . Nous notons :
S0 si i = 0
Ei =
Ei−1 ∪ pSi σq sinon
Si les constructeurs de F sont F⊕ , Fexp , ou Frsa , nous désignons simplement par Facteur la
fonction qui à un terme t associe ses Facteur⊕ , Facteurexp ou Facteurrsa . Si s ∈ Facteur(t), nous
dirons simplement que s est un facteur de t. De même, nous définissons, dans les cas Fexp et Frsa ,
la fonction Base qui associe à un terme sa base comme étant la fonction Baseexp ou la fonction
Basersa . Nous renvoyons le lecteur au chapitre 3, section 3.4 pour la description complète de la
base et des facteurs d’un terme et du lien avec la fonction de normalisation p q.
Afin d’harmoniser les notations, et suivant les cas, nous notons f (t1 , . . . , tn ) soit un terme
p,rsa
⊕({t1 , . . . , tn }), soit un terme Exp(t1 , M) ou {t1 }M avec (M) = {t2 , . . . , tn }. Pour deux
multi-ensembles M1 et M2 , nous notons simplement M1 + M2 et −M1 les résultats respectifs
des fonctions Add(M1 , M2 ) et Opp(M1 ) définies dans le chapitre 3, section 3.4.
Enfin, nous définissons les termes filtrants : étant donné une substitution σ, un terme t est un
σ-filtre d’un terme s si t n’est pas une variable et ptσq = s. Nous notons t vσ s si t est un σ-filtre
de s.
7.4.2 Définitions
Dans la définition suivante, si la fonction Basef n’est pas définie, l’union est à prendre unique-
ment sur les facteurs.
pptσqδs q = ptσs q
Si la fonction Base est définie et s’il existe t tel que s = Base(t), alors s n’est pas un f -terme. Nous
utilisons cette remarque pour montrer le lemme 23.
Lemme 22
Si f = ⊕({ }), alors l’ensemble des termes réguliers est :
[
Facteur(xσ)
x∈Var(P)
Preuve. Par définition, l’ensemble des termes réguliers est inclus dans :
[
F = Facteur(xσ)
x∈Var(P)
Montrons qu’il y a égalité. Soit s ∈ F . Par définition de la fonction de normalisation pour l’opérateur
⊕, s n’est pas un ⊕-terme. Donc s est régulier.
Lemme 23
Soient s un terme f -régulier, y ∈ X tel que s ∈ (yσ) et :
Sy = {t ∈ SP | y ∈ Var(t) et s ∈ (ptσq)}
Pour tout r ∈ Sy , soit s est un sous-terme strict de prσq, soit s n’est pas un f -terme.
Preuve. Il s’agit d’une conséquence de s régulier et du lemme 22 pour le cas F = F⊕ .
Sinon, supposons que s soit un f -terme. L’hypothèse s régulier implique s 6= yσ. Donc yσ
normalisé et s 6= yσ implique s 6= Base(yσ). Donc par définition de la fonction de normalisation et
de la base, pour tout r ∈ Sy , s 6= Base(prσq). Ce qui implique, entre autres, s 6= prσq.
Lemme 24
Soient s et t deux termes, et σ une substitution telle que s ∈ (ptσq). Alors :
1. soit il existe x ∈ Var(t) telle que s ∈ (xσ) ;
2. soit s est lié.
7.4. Borne sur le nombre de sous-termes d’une attaque normale 127
Proposition 46
Les signatures F⊕ , Fexp et Frsa permettent le remplacement.
Lemme 26
Si F ∈ {Fexp , Frsa }, alors F permet le remplacement.
Preuve. Soit s libre et régulier et δs , σs comme dans la définition 50. Le terme s est libre et en
forme normale, donc :
(tσ)δs = tσs
et donc ptσs q = p(tσ)δq. Montrons par induction que pour tout t :
pptσqδs q = p(tσ)δs q
Si t est une constante, alors t ∈ SP, donc t 6= s, et donc t = tσ = (tσ)δ. Si t est une variable,
alors tσ = ptσq, et donc tσs = p(tσ)δq.
Si t = g(t1 , . . . , tn ), avec g constructeur libre, alors par définition de la normalisation, on a :
Si t = f (u, M). Notons tout d’abord que s libre implique ptσq 6= s. De plus, s est en forme
normale, donc f (puσq, pMσq) 6= s. Enfin, par récurrence, on a ppuσqδq = puσs q et ppMσqδq =
pMσs q. Donc :
Sinon, s libre implique qu’il existe y ∈ Var(t) tel que s ∈ (yσ). Par le lemme 23, et par s
libre et régulier, si s est un f -terme, alors s est soit un sous-terme strict de Base(puσq), soit un
sous-terme de t0 ∈ (pMσq) ∪ Facteur(puσq). Donc, que s soit un f -terme ou non, on a :
Lemme 27 Soit un terme s libre et régulier et δs , σs comme dans la définition 50. Pour tout
t dans SP, on a :
pptσqδs q = ptσs q
(tσ)δs = t(σδs )
ptσs q = p(tσ)δq
= pptσqδq
car s 6= ptσq ;
– si t = ⊕({t1 , . . . , tn }), nous remarquons que s régulier implique s n’est pas un ⊕-terme, et
donc ptσq = s implique qu’il existe i tel que pti σq = s.
Le terme s est libre, donc pour tout i ∈ {1, . . . , n}, on a pti σq 6= s et ptσq 6= s. On a donc :
Terme décomposé par une règle. Nous appelons une g-règle une règle de g-composition ou
de g-décomposition. Pour une g-règle de réécriture sur les ensembles R :
l1 , . . . , l n → r
nous disons que l1 est le terme décomposé par R si l1 est un g-terme et r est un sous-terme de l1
maximal pour la relation de sous-terme dans (l1 ) \ {l1 }.
Lemme 28
L
Soient E et F deux ensembles avec I ∈ E. Soient s et t deux termes avec s ∈ E \ (E), et
L
t ∈ E ∪ F . Soit enfin δ le remplacement de [s ← I]. Alors on a :
L
ptδs q ∈ p(E ∪ F )δs q
Preuve. Pour commencer, si s ∈ / (F, t), le résultat est trivial : δs est égal à l’identité sur
(E, F, t). Supposons maintenant s ∈ (F, t). Tous les systèmes de réécriture considérés sont
locaux, ce qui assure l’existence de dérivations bien formées.
L
Par hypothèse, on a s ∈ E . Donc par le lemme 4, la dernière étape d’une dérivation bien
formée partant de E de but s est une règle de composition. Soit s1 , . . . , sn →Lc s cette règle,
L
avec {s1 , . . . , sn } ⊆ E et {s1 , . . . , sn } ⊆ (E ∪ {s}). Soit f un constructeur tel que cette règle
soit une f -règle de composition. Par la proposition 9, il existe des dérivations D1 , . . . , Dn et Dt ,
éventuellement de longueur 0, telles que :
avec Di bien formée de but si , pour i ∈ {1, . . . , n}, et Dt bien formée de but t. Par l’hypothèse
s∈ (F, t), la concaténation de ces dérivations est une dérivation bien formée. Notons-la D :
D : G0 = E, F → G0 , t1 = G1 → . . . → G0 , t1 , . . . , tm = Gm
Considérons la suite d’ensembles (pGi δs q)i∈{0,...,m} et montrons qu’il existe une dérivation :
Preuve. Par définition des règles de composition, s n’est pas un g-terme. La constante I
n’est jamais exclue par les quantifications dans la définition des règles de composition et de
décomposition. Il est donc possible de remplacer s par I dans le membre gauche d’une g-règle.
Le résultat sera alors prδs q.
Preuve. Si f est un constructeur libre, la dérivation est bien formée, donc l → r n’est pas
une règle décomposant s. L’affirmation est alors facilement vérifiée.
Soit G l’ensemble sur lequel l → r est appliqué, et G0 = G \ {s}. On a :
G0 →Lc,f G0 , s →l→r G0 , s, r
b, l1 , . . . , lk → pf (b, M)q
avec b 6= s, (M) = {l1 , . . . , lk } et s ∈ (M). On vérifie alors que plδs q → prδs q est
encore une f -règle.
Les affirmations 2. et 3. entraı̂nent que pour toute règle l → r de L avec s dans l ∪ {r},
plδs q → prδs q est encore une règle de L. Par l’affirmation 1., c’est vrai pour toute règle, donc par
récurrence, la suite (pGi δs q)i∈{1,...,m} forme une dérivation. Quitte à la tronquer, on peut supposer
qu’elle est de but ptδs q.
Le lemme suivant est le lemme fondamental permettant de borner le nombre de sous-termes
d’une substitution.
Lemme 29
Tout terme s régulier est lié.
Preuve. Par contradiction, supposons :
(*) il existe s régulier et libre
Les constantes sont dans SP, donc s n’est pas une constante. Par (*) et F régulière, l’ensemble
des j tel que s ∈ (pRj σq) est non vide. Soit Ns le minimum de cet ensemble. D’après (*), il
existe y ∈ Var(RNs ) tel que s soit un sous-terme de yσ.
Commençons par montrer qu’il n’existe pas i < Ns tel que s ∈ (pSi σq). Si s ∈ (pSi σq),
alors par (*) et F régulière, il existe z ∈ Var(Si ) tel que s ∈ (zσ). Donc par hypothèse sur les
protocoles, il existe i0 ≤ i tel que z ∈ Var(Ri0 ). Par minimalité de Ns , on a donc i > Ns .
Posons Ej = pS0 σ, . . . , Sj σq, et résumons la situation : le terme s est dans (pRNs σq) \
(ENs −1 ), et n’est dans aucun (Ej ) pour j ≤ Ns − 1. Soit δ = [s ← I], L le système de
réécriture associé à la signature F, et considérons les problèmes d’accessibilité close :
Accessibilite Close(pEj−1 δq, ppRj σqδq, L)
– si j < Ns , alors s n’est sous-terme ni de l’ensemble de départ ni du but, donc pEj−1 δq = Ej−1
et ppRj σqδq = pRj σq. Par hypothèse, (π, σ) est une attaque, donc ces problèmes ont une
solution affirmative ;
– si j ≥ Ns , alors par le lemme 26 et (π, σ) attaque, ces problèmes ont une solution affirmative.
La signature F permet le remplacement, s est supposé libre et régulier, donc en posant σ 0 = σδ,
on vient de montrer que (π, σ 0 ) est aussi une attaque sur P. Le terme s n’est pas atomique, donc
l’existence de cette attaque contredit la minimalité de (π, σ).
Lemme 30
Pour tout t ∈ SP, il existe un symbole g et des termes t1 , . . . , tn dans SP, avec n ≥ 0, tels que :
ce qui contredit t ∈ Θ.
Affirmation 3. t n’est pas une variable.
Preuve. Supposons t ∈ X . Le cas ptσq g-terme, avec g 6= f , est exclu par le lemme 29.
Donc t ∈ Θ implique ptσq = tσ = f (s1 , . . . , sn ). Par le lemme 29, pour tout i ∈ {1, . . . , n}, si
régulier implique qu’il existe ti ∈ SP tel que pti σq = si . Sinon, il existe une variable xi dans
SP telle que xi σ = si . Donc on peut écrire :
Théorème 11
Si (π, σ) est une attaque normale, alors :
[
| ( {xσ})| ≤ |SP|
S x∈X
Preuve. Soit S = ( x∈X {xσ}).
Le terme t est dans Ti par maximalité des choix précédents, et n’est plus susceptible d’être choisi
par la suite par maximalité dans le choix de r. Par l’affirmation, on a n = | (S)|. On a donc
bien | (S)| ≤ |SP|.
Notons que la taille de la représentation de l’ensemble {xσ | x ∈ X }, sans compter la place
nécessaire pour coder les coefficients dans les multi-ensembles de termes, est quadratique en la
taille de la représentation de SP sans compter les coefficients : à chaque fois qu’une exponentielle,
un ou exclusif ou un chiffrement de type RSA est choisi pour une variable, il peut y avoir O(|SP|)
sous-termes directs.
Théorème 12
Le problème de décision Attaque(P, R⊕ ) est dans NPTIME.
Preuve. D’après le théorème 10, il suffit de montrer :
a) pour tout ensemble de termes E et pour tout terme t, Accessibilite Close
(E, t, R⊕ )
est dans PTIME ;
b) il existe un polynôme p tel que pour tout protocole P, il existe une attaque (π, σ) sur P
pour R⊕ si et seulement si il en existe une avec |σ| ≤ p(|P|).
Le premier point est déjà prouvé dans le chapitre 4. Le second point est une conséquence directe
du théorème 11.
7.5 Borne sur la taille des coefficients dans une attaque nor-
male
Montrons maintenant que les problèmes de décision Attaque
(P, Rrsa ) et Attaque (P, Rexp )
sont dans NPTIME. D’après les théorèmes 10 et 11, il suffit de montrer qu’étant donné une attaque
(π, σ) sur un protocole P, il existe une attaque (π, σ 0 ) avec σ = σ 0 aux coefficients des multi-
ensembles près et avec la taille de l’espace utilisé pour représenter les coefficients de σ 0 bornée
polynomialement en la taille de la représentation du protocole.
134 Chapitre 7. Problèmes d’accessibilité non clos
7.5.1 Introduction
Pour la suite de cette section, nous supposons que (π, σ) est une attaque normale sur P défini
sur une signature F ∈ {Fexp , Frsa }. La définition d’une attaque implique, pour tout i ∈ {1, . . . , k} :
L
pRi σq ∈ Ei−1
Pour i ∈ {1, . . . , k}, soit Di une dérivation bien formée partant de Ei−1 et de but pRi σq, et posons :
0 ni
Di : Ei−1 = E(i−1) → . . . → E(i−1) 3 pRi σq
Dans le cadre de la signature Fexp (resp. Frsa ), nous désignons par le symbole f l’opérateur
p,rsa
Exp( , ) (resp. { } ). L’écriture f (t1 , . . . , tn ) désigne un terme f (u, M) avec u = t1 et M un
multi-ensemble généralisé (resp. un multi-ensemble) de support {t2 , . . . , tn }. Enfin, nous considérons
un ensemble Xent de variables qu’il est possible de substituer par des entiers relatifs (resp. naturels).
Soient T1 et T2 deux ensembles de termes sur la même signature, et h : p (T1 )q → p (T2 )q
une fonction. Nous disons que h est un homomorphisme de p (T1 )q vers p (T2 )q si, pour tout
g(t1 , . . . , tn ) ∈ p (T1 )q, on a :
Proposition 47
La relation ≡coef est une relation d’équivalence.
Preuve. En considérant la fonction identité, la relation ≡coef est réflexive. Elle est symétrique en
considérant la fonction inverse, et transitive par composition des fonctions.
Notons que par définition d’un isomorphisme, si ϕ est un isomorphisme entre deux termes t et
t0 , on a ϕ(ptq) = pt0 q.
Proposition 48
Sous les hypothèses précédentes, et si pour toute f -règle F → u dans D il existe une f -règle
ϕ(F ) → ϕ(u), alors il existe une dérivation bien formée D0 partant de E 0 et de but t0 .
telle que pour tout i ∈ {0, . . . , n}, la fonction ϕ est une bijection de p (Ei )q vers p (Ei0 )q qui
0
envoie Ei sur Ei .
C’est vrai par hypothèse pour i = 0 Supposons donc i > 0 et qu’il existe une bijection entre
0
(Ei−1 ) et (Ei−1 ) qui est une bijection entre Ei et Ei0 . Soit F → u la règle appliquée pour
passer de Ei−1 à Ei . La dérivation est bien formée et tous les termes sont normalisés, donc la
fonction ϕ est définie sur (Ei ), et en posant Ei0 = Ei−1
0
∪ {ϕ(u)}, elle est une bijection entre
0
Ei et Ei . Il suffit donc de montrer que ϕ(F ) → ϕ(u) est une règle du système Lf .
– si F → u est une f -règle, c’est vrai par hypothèse ;
– sinon, par définition de ϕ, l’image d’un g-terme est un g-terme et deux sous-termes égaux
ont la même image. En examinant les différents cas possibles, on conclut que si F → u est
une g-règles, alors ϕ(F ) → ϕ(u) est aussi une g-règle.
Nous recherchons un ensemble de valuations β telles que (π, β(σ ∗ )) soit une attaque et telles que
les images de β soient « petites ». Arbitrairement, nous limitons notre recherche à des valuations
β telles que, pour tous termes t, t0 ∈ SP, on a :
Dans la sous-section suivante, nous décrivons l’ensemble des valuations β vérifiant cette pro-
priété comme un ensemble de solutions d’un système d’équations et d’inéquations affines. Dans la
sous-section 7.5.4.ii, nous donnerons des conditions supplémentaires permettant d’assurer que le
couple (π, β(σ ∗ )) est une attaque.
ψ0 : (SPσ ∗ ) → p (SPσ)q
t 7→ pβσ (t)q
Pour tout t ∈ (SPσ ∗ ), pour toute valuation β, la définition des fonctions de normalisation
implique :
pβ(t)q = pβ(ptq)q
Donc il existe une fonction surjective ψ :
Soient u, v ∈ p (SPσ ∗ )q, et Tt1 , Tt2 telles que u ∈ Tt1 et v ∈ Tt2 . Nous cherchons les
valuations β telles qu’il existe un isomorphisme ϕ de p (β(SPσ ∗ ))q vers p (SPσ)q avec
−1 −1
ϕ (t) = pβ(ψ (t))q. Pour assurer l’existence d’un tel isomorphisme ϕ, il suffit que :
Condition 1. si t1 = t2 , alors pβ(u)q = pβ(v)q ;
Condition 2. si t1 6= t2 , alors pβ(u)q 6= pβ(v)q ;
Condition 3. si pβ(u)q = g(u1 , . . . , un ), alors ϕ(pβ(u)q) = g(ϕ(u1 ), . . . , ϕ(un )).
Par définition de la fonction de normalisation, on a :
Base(pβ(u)q) = Base(pβ(v)q)
pβ(u)q = pβ(v)q ⇐⇒
Facteur(pβ(u)q) = Facteur(pβ(v)q)
Par définition de β, on a :
Base(pβ(u)q) = pβ(Base(u))q
Facteur(pβ(u)q) = pβ(Facteur(v))q
Posons :
Mu = Facteur(u)
Mσu = Facteur(βσ (u))
Mv = Facteur(v)
Mσv = Facteur(βσ (v))
F = (Mu ) ∪ (Mv )
0
F = {pβ (s)q | s ∈ F }
σ
σ
Fu = (Mσu )
Nous pouvons maintenant donner les équations et inéquations que doit vérifier β pour que les deux
premières conditions soient vraies.
Notons E1 l’ensemble des équations ci-dessus. Rappelons que si u (resp. v) n’est pas un f -terme, le
multi-ensemble (généralisé) Mu (resp. Mv ) est pris égal à la fonction partout nulle. Notons que
la base de pβσ (u)q est aussi dans p (SPσ)q, et donc que l’égalité des bases de deux termes de
Tt est vérifiée par induction pour toute valuation β vérifiant E1 .
Deuxième condition. Il suffit d’assurer que si pβ(u)q et pβ(v)q ont la même base, et si pβσ (u)q
et pβσ (v)q sont différents, alors on doit avoir :
pβ(Facteur(u))q 6= pβ(Facteur(v))q
Par la première condition, si pβ(Base(u))q = pβ(Base(v))q, alors pβσ (Base(u))q = pβσ (Base(v))q.
Il existe donc r tel que :
Troisième condition. Soit β une valuation vérifiant les deux premières conditions. L’ensemble
p (β(SPσ ∗ ))q est en bijection avec l’ensemble {Tt | t ∈ p (SPσ)q}, et donc avec p (SPσ)q.
Soit ϕ cette bijection. Pour que ϕ soit un isomorphisme, il faut et il suffit d’assurer que pour
g(t1 , . . . , tn ) ∈ p (SPσ)q, on a :
E = E1 ∪ E2 ∪ E3
t1 , . . . , tn → pf (t1 , M)q
L’égalité entre ϕ−1 (Base(pf (t1 , M)q)) et ϕ−1 (Base(t1 )) est assurée par ϕ isomorphisme. Soient
u, u1 , . . . , un tels que pβσ (ui )q = ti et pβσ (u)q = t, M1 = Facteur(u1 ) et M = Facteur(u). Pour
assurer l’égalité sur le support de la différence, il suffit que la valuation β vérifie :
– si r ∈ {t2 , . . . , tn } : X X
Mu (s) 6= M(s)
s∈Tr s∈Tr
– sinon : X X
Mu (s) = M(s)
s∈Tr s∈Tr
Soit E4 l’ensemble de ces équations et inéquations pour toutes les règles des dérivations Di . Par
construction, si une valuation β est solution de E ∪ E4 , alors (π, β(σ ∗ )) est une attaque sur P. Le
nombre de sous-termes de σ, et donc de σ ∗ , est linéaire en le nombre de sous-termes de SP par
le théorème 11, donc le nombre de sous-termes de pSPσ ∗ q est linéaire en la taille du protocole P.
Le nombre d’équations et d’inéquations dans E ∪ E4 est donc polynomial en la taille de P. Quitte
à ne pas factoriser, chaque membre d’une équation ou d’une inéquation à un nombre de termes
au maximum linéaire en la taille de P, et chaque terme de cette somme est soit une variable, soit
138 Chapitre 7. Problèmes d’accessibilité non clos
une constante apparaissant dans P. On en conclut que la taille totale de E ∪ E4 est polynomiale
en la taille de P. La recherche de solutions de E ∪ E4 se ramène au problème
, donc il existe des solutions de taille polynomiale en la taille de E ∪ E4 , et donc
polynomiale en la taille de P. La taille de la représentation la substitution σ hors coefficients est
elle-même polynomiale en la taille de P, ce qui justifie la limite polynomiale sur la taille totale
de la représentation de la substitution σ dans l’agorithme de la figure 7.1. On a donc le théorème
suivant.
Théorème 13
Les problèmes de décision Attaque(P, Rexp ) et Attaque(P, Rrsa ) sont dans NPTIME.
Une preuve plus technique du théorème 13 est donnée dans le rapport technique [21].
Quatrième partie
Vérification
139
8
8.1 Motivation
Nous avons vu, dans le chapitre 6, qu’il était possible de faire une recherche d’attaque efficace
sur un protocole dans le cas d’un nombre borné de sessions. Le principal défaut de cet algorithme
est la dépendance (exponentielle) en le nombre de participants. Une première motivation pour
étudier le cas d’un nombre non-borné de sessions d’acteurs, est de chercher à abstraire le nombre
de participants au protocole pour ne plus avoir cette dépendance exponentielle. Il s’agit donc d’un
problème d’efficacité de la recherche d’attaques. La seconde motivation vient du problème étudié :
141
142 Chapitre 8. Cas non-borné
Si la réponse est affirmative, il est possible de considérer l’étude du protocole comme close.
Sinon, le problème de l’existence d’une attaque reste ouvert. Dans le cadre d’un nombre non borné
de sessions, il existe une classe de protocoles pour lesquels le problème de la recherche d’attaques
est indécidable dès que la taille des messages n’est pas bornée, ce qui est montré en réduisant un
problème de correspondance de Post quelconque au problème de la recherche d’attaques, voir [55]
par exemple, ou dès qu’un nombre non borné de nonces sont considérés [45]. L’alternative, pour
une étude de protocoles dans le cadre d’un nombre non borné de sessions, est donc soit de se limiter
à des sous-classes plus ou moins expressives, soit de poser une limite à la précision de l’étude.
Le cas des protocoles ping-pong, examiné par D. Dolev et A. Yao dans leur article fondateur [41],
forme une classe de protocoles décidables. Il s’agit cependant d’un résultat purement théoriqe,
les rôles de ces protocoles n’ayant aucune mémoire et les opérateurs de concaténation n’étant
pas autorisés. L’approche suivie par Stoller est dans la même ligne [100]. Il donne un ensemble
de restrictions statiques (un texte chiffré n’est pas un sous-message d’un message qui est à son
tour chiffré) et dynamiques. Ces dernières sont vérifiées au cours de l’exécution d’un algorithme
calculant, pour un protocole donné, un nombre n de sessions tel que, s’il y a une attaque sur le
protocole, alors il y en a une en n sessions ou moins. Les restrictions imposées aux protocoles sont
cependant trop fortes, et le résultat ne semble pas applicable à une large classe. L’approche suivi
par G. Lowe [64] est similaire, mais semble plus pertinente. L’auteur part de principes portant
sur l’écriture de protocoles, et montre que si un protocole P est écrit selon ces principes et vérifie
certaines hypothèses supplémentaires, alors il existe un nombre n, calculé par un algorithme donné
par l’auteur, tel que si ce protocole a une attaque, il en a une en moins de n sessions. Parmi les
hypothèses supplémentaires, il est imposé qu’un secret n’est jamais envoyé dans un message, même
chiffré. Cette restriction permet de prendre en compte un grand nombre de protocoles d’échange
de clefs, mais ne s’applique plus pour les protocoles permettant une transaction.
Une partie de notre travail dans le cadre du projet AVISS, et plus encore dans le cadre du
projet AVISPA, consiste en l’étude de protocoles déjà définis et le plus souvent complexes. De tels
protocoles ne rentrent que rarement dans le cadre des sous-classes décidables considérées dans le
paragraphe précédent. Ne considérant pas le fait de savoir qu’un protocole n’a pas de failles dans
un cadre limité comme une réponse satisfaisante, l’utilisation de méthodes automatiques implique
donc de limiter la précision de l’étude. Afin de se ramener à un cadre décidable, les deux résultats
d’indécidabilité énoncés plus haut impliquent que les acteurs participant à un nombre non borné
de sessions doivent :
– accepter des messages dont les composantes inconnues ne peuvent être remplacées que par
des constantes ou, dans le meilleur des cas, par des termes de taille bornée ;
– réutiliser les mêmes nonces d’une session sur l’autre.
Dans ce chapitre, nous verrons que ces deux conditions sont suffisantes. Dans une première
partie, nous verrons que la recherche d’attaques dans la cadre d’un nombre non borné de sessions
est dans EXPTIME. Ce résultat a été publié dans [22], et repose sur l’existence de règles d’Oracle.
La notion de règles d’Oracle pour étendre le pouvoir de déduction de l’intrus à initialement été
introduite dans [25] pour décrire une implantation de cet algorithme dans laquelle les règles d’Oracle
peuvent être calculées une fois pour toute au moment de la compilation du protocole, et non à
chaque application. Cette implantation est décrite dans la deuxième partie de ce chapitre, dans la
section 8.5.
Pour ces constructeurs, les termes valeurs et les termes opérations coı̈ncident à un isomorphisme
de signature près. Pour un ensemble C de constantes et X de variables, nous notons :
s p
F = C ∪ h , i , { } , { } , −1
la signature, T(F) l’ensemble des termes clos, et T(F, X ) l’ensemble des termes sur la signature
F ∪ X . Nous notons :
Rproto = Lh , i ∪ L{ }s ∪ L{ }p
Rc,proto = Lc,h , i ∪ Lc,{ }s ∪ Lc,{ }p
l’ensemble des règles de déduction de l’intrus. Le lecteur se reportera au chapitre 4, section 4.5
pour une description précise de ces systèmes de réécriture sur des ensembles. D’après le théorème 2
du chapitre 4, le système Rproto est local.
On remarque que pour cette signature, la taille de la représentation d’un terme par un graphe
acyclique est proportionnelle au nombre de ses sous-termes. On définit donc la taille |t| (resp.
|E|) d’un terme t (resp. d’un ensemble de termes E) comme étant le cardinal de l’ensemble des
sous-termes de t (resp. de E) :
|t| = | (t)|
L’union d’un nombre fini d’acteurs est définie par l’union des ensembles de règles indexée par
l’union des ensembles d’indices, ordonnée par l’union des ordres sur chaque ensemble d’indices.
Dans ce chapitre, nous considérons des protocoles non-bornés qui sont définis à partir des acteurs.
Étant donné un protocole Pnb , nous notons C (resp. Var(Pnb )) l’ensemble des constantes (resp.
variables) apparaissant dans l’écriture de Pnb . La taille de Pnb , notée |Pnb |, est la taille de la
représentation de Aqcq , AD et S0 par des graphes acycliques (voir le chapitre 3, section 3.5) plus
la taille de la représentation de D. D peut être, par exemple, le codage d’un entier n en unaire
désignant l’ensemble des termes de T(F, C) dont la représentation est de taille inférieure ou égale à
n. On remarque que la borne sur les messages représentés par D et un nombre fini de constantes C
pour construire les termes implique que la taille totale de l’ensemble des messages représentés par
D est au plus exponentielle en la taille de la représentation de D, et donc au plus exponentielle en
la taille |Pnb | du protocole.
Dans la définition d’un protocole non-borné, contrairement à la définition habituelle d’un proto-
cole par des règles optimisées, nous différencions deux types d’acteurs. Le premier, Aqcq , correspond
aux acteurs d’un protocole tels que définis précédemment. Ces acteurs acceptent des messages quel-
conques, et ne peuvent participer qu’à un nombre fini de sessions. Le second type, AD , correspond
à des acteurs qui peuvent être impliqués dans un nombre non-borné de sessions. Sans restriction
supplémentaire, il est bien connu que le problème de la recherche d’attaques sur un protocole ayant
un nombre fini de constantes mais un nombre non-borné de sessions est indécidable [48, 55]. Cela
se prouve, par exemple, par une réduction du problème de correspondance de Post au problème
de recherche d’attaques. Pour cela, nous restreignons les termes que l’intrus peut substituer aux
variables des acteurs dans AD aux termes représentés par D. Ils sont en nombre fini, et cela permet,
comme nous allons le montrer, de ramener le problème de recherche d’attaque à une exploration
d’un ensemble fini d’états.
144 Chapitre 8. Cas non-borné
Le problème de décision que nous considérons dans la partie théorique de ce chapitre est le
suivant :
Attaque Parallele(Pnb , t, Rproto ) : Existe-t-il une attaque de secret
pour t dans Pnb ?
La taille du problème d’entrée est la taille de la représentation de Pnb et t. La taille de Rproto
n’est pas comptée, mais les règles de L seront bornées par définition en fonction de la taille de la
représentation de Pnb . On note qu’il y a un nombre infini de multi-ensembles M possibles, donc
l’ensemble des états à explorer est a priori infini. Nous allons cependant montrer que le problème
Attaque Parallele (Pnb , t, Rproto ) est décidable en temps exponentiel en ajoutant un nombre
fini de règles à Rproto . Ces règles supplémentaires permettent de simuler toutes les possibilités
d’interaction entre l’intrus et les acteurs de AD .
Pour résoudre le problème Attaque Parallele (Pnb , t, Rproto ), nous utilisons l’algorithme de
la figure 8.1. Nous déduisons d’un protocole non-borné Pnb donné en entrée de l’algorithme un
0
protocole borné Pnb et un ensemble L0 de règles de déductions supplémentaires pour l’intrus. Nous
posons ensuite Ro,proto = Rproto ∪ Lo . Si pour tout ensemble de termes E et pour tout terme t le
problème Accessibilite Close (E, t, Ro,proto ) est dans EXPTIME, alors cet algorithme est dans
EXPTIME. Il reste à en montrer la correction.
Attaque Parallele(Pnb , t, Rproto )
Soit Pnb = (Aqcq , AD , S0 , D), n = |Pnb | et X = Var(Aqcq ).
Soit Lo = Regles Oracle(Pnb ).
0
Soit Pnb = (Aqcq , ∅, S0 , D).
Soit Π l’ensemble des ordres d’exécution possibles, et Σ l’ensemble
des substitutions closes σ de support X et telles que :
∀x ∈ (σ), |xσ| ≤ n3 + n
Pour tout (π, σ) ∈ Π × Σ,
1. tester que (π, σ) est une exécution valide pour Ro,proto du pro-
tocole (Aqcq , ∅, S0 , t) ;
2. si l’ordre d’exécution a k étapes, et en notant Ri = Rπ−1 (i)
(resp. Si = Sπ−1 (i) ), tester si :
Ro,proto
tσ ∈ (S0 , . . . , Sk )σ
La preuve se déroule de la manière suivante. Tout d’abord, nous montrons que le problème :
Transition(E, F, Lo )
est dans EXPTIME. Nous appelons les règles de Lo des règles d’Oracle, en référence au fait qu’elles
« indiquent » si, à partir d’un ensemble de connaissances E, l’intrus peut obtenir un terme u en
utilisant ses capacités et en interagissant uniquement avec les acteurs de AD .
8.3.2 Définition de Lo
Dans le chapitre 4, nous avons défini des systèmes canoniques dont la combinaison permet
d’obtenir un système local, c’est-à-dire un système L tel que pour tout terme t et pour tout
L
ensemble E, si t ∈ E , alors il existe une dérivation bien formée de but t partant de E. Les
systèmes canoniques ont deux propriétés qui permettent cette combinaison :
a) ils sont transitifs. Si deux règles d’un système canonique sont appliquées à la suite, soit on
a, localement, une dérivation bien formée, soit les deux transitions peuvent se réduire en une
seule ;
146 Chapitre 8. Cas non-borné
Lemme 31
Pour toute transition E →Rproto F , si (E) 6= (F ), alors soit la transition est faite par une
règle d’Oracle, soit il existe s tel que :
– F = E ∪ {s} et (F ) = (E) ∪ {s} ;
– la transition est une règle de composition.
Transition(E, F, Ro,proto )
est lui aussi dans EXPTIME. D’autre part, la correction de l’algorithme donné dans la preuve
du théorème 3 du chapitre 4 utilise uniquement que dans le système de transitions considéré,
l’existence d’une dérivation partant de E et de but t implique l’existence d’une dérivation bien
formée partant de E et de but t. Donc en reprenant verbatim cette preuve, le point 1 implique la
proposition suivante.
Proposition 49
Pour tout ensemble de termes E et pour tout terme t, si le problème
Transition(E, F, Lo )
est dans EXPTIME, alors le problème :
Σx∈X |xσ|
Si l’ensemble des attaques sur un protocole non-borné Pnb est non vide, alors il existe au moins une
attaque (π, σ) telle que |σ| soit minimal. Une attaque normale est une attaque dont la substitution
est minimale. Par définition, il existe une attaque sur le protocole si, et seulement si, il existe une
attaque normale. Pour justifier la restriction sur le choix des substitutions, il suffit donc de montrer
qu’une attaque normale (π, σ) est dans Π × Σ.
Utilisons les notations de la figure 8.1 pour Pnb , n, (π, σ), Ri , Si , X et k. Soit :
Lemme 32
Ro,proto Ro,proto
Soient E et F deux ensembles de messages avec I ∈ E, et soit t ∈ E ∪ F . Soit s ∈ E \
2 R o,proto
(E) tel que |s| > n , et δ le remplacement [s ← I]. Alors tδ ∈ Eδ ∪ F δ .
Preuve. Pour commencer, si s ∈ / (F, t), le résultat est trivial : δ est égal à l’identité sur
(E, F, t). Supposons maintenant s ∈ (F, t). La définition des règles d’Oracle assure l’exis-
tence de dérivations bien formées.
Ro,proto
Par hypothèse, on a s ∈ E et |s| > n2 . Donc par le lemme 31, la dernière étape d’une
dérivation bien formée partant de E de but s est une règle de composition. Donc s = f (s1 , s2 ) et
Rproto
s1 , s2 ∈ E . Par la proposition 9 du chapitre 4, on a :
avec D1 bien formée de but s1 , D2 bien formée de but s2 et D3 bien formée de but t. Par l’hypothèse
s∈ (F, t), la concaténation de ces dérivations est une dérivation bien formée. Notons-la D :
D : G0 = E, F → G0 , t1 = G1 → . . . → G0 , t1 , . . . , tm = Gm
et considérons la suite d’ensembles (Gi δ)i∈{0,...,m} et montrons qu’il existe une dérivation :
Dδ : G0 δ → . . . → Gm δ
Lemme 33
Si (π, σ) est une attaque normale, alors pour toute variable x ∈ X , on a |xσ| > n2 implique que
xσ est lié.
Preuve. Par contradiction, supposons |xσ| > n2 et que pour tout terme t, t vσ xσ implique
t∈
/ SP. Notons :
i
[
∀i ∈ {0, . . . , k} , Ei = Sj σ
j=0
Les constantes sont toutes dans SP, donc xσ n’en est pas une. Considérons l’ensemble :
Θ = {i | xσ ∈ (Si σ)}
L’hypothèse t vσ xσ implique enfin qu’il existe une substitution σ 0 = σ[xσ ← I] telle que :
On a donc construit une substitution σ 0 telle que (π, σ 0 ) soit une attaque et |σ 0 | ≤ |σ|, ce qui
contredit (π, σ) attaque normale.
On peut maintenant montrer que la restriction sur le choix des substitutions, dans l’algorithme
de la figure 8.1, n’écarte pas les attaques normales.
|xσ| ≤ n3 + n
Preuve. Soit :
Θ = x ∈ X | |xσ| ≤ n2
{x = tx }x∈X 0
Il a une solution σ, donc il a une solution plus générale unique σ 0 . Par construction de cette solution,
on a :
∀x ∈ X 0 , |xσ 0 | ≤ | ∪x∈X 0 tx |
≤ |SP|
∀x ∈ X 0 , Var(xσ 0 ) ∩ X 0 = ∅
8.4. Règles parallèles 149
Transition(E, F, Lo )
est décidable en temps exponentiel. Nous prouverons ensuite que les règles construites vérifient le
définition des règles d’Oracle.
R1 ⇒ S1 , . . . , R m ⇒ Sm
L’ensemble des règles agrégées de cet acteur est l’ensemble de règles de déduction de l’intrus :
m
[
{R1 , . . . , Ri → Si }
i=1
On appelle AaggD l’ensemble des règles agrégées et instanciées des acteurs de AD . Notons tout
de suite que les règles de Aagg
D permettent de se passer des acteurs de AD . Notons Ragg,proto =
Rproto ∪ Aagg
D .
Lemme 34
Le problème de décision :
Supposons qu’il y ait une attaque (M, π, σ) sur (Aqcq , AD , S0 , D). Par définition, il existe un
ordre d’exécution π respectant l’ordre sur les règles des acteurs, une substitution σ respectant la
restriction sur les instances des variables des acteurs de Aqcq et des des règles d’acteurs Ri ⇒ Si
telles que :
Rproto
R 1 σ ∈ S0
...
Rproto
Rk σ ∈ (S0 , . . . , Sk−1 )σ
Rproto
tσ ∈ (S0 , . . . , Sk )σ
soient les règles d’une des sessions de A. Par croissance des ensembles de connaissances, on a, pour
tout i ∈ {1, . . . , l}
Rproto
∀j ∈ {1, . . . , i} , Rα(j) σ ∈ (S0 , . . . , Si−1 )σ
D’autre part, pour tout i ∈ {1, . . . , l}, pour tout x ∈ Var(Ri ), on a xσ ∈ D. Donc on peut remplacer
les règles de cette session de cet acteur par des règles agrégées de l’intrus. En répétant l’opération
pour tous les acteurs et AD et pour toutes leurs exécutions, on obtient une solution au problème :
Les règles agrégées ne sont qu’une solution partielle du problème. Elles vérifient le point 2 de
la définition de règles d’Oracle. Cependant, elles ne vérifient pas, en général, le point 1.
|Pnb | + |X | × |D|
∀t ∈ H, |t| ≤ n2
Il est maintenant possible de définir les règles d’Oracle pour les acteurs.
On note AoD l’ensemble des règles d’Oracle pour les acteurs de Pnb .
Nous montrons en sous-section 8.4.4 que ces règles sont des règles d’Oracle au sens de la
définition 55. Mais d’abord, commençons par montrer que le problème de transition est exponentiel.
8.4. Règles parallèles 151
Proposition 50
Pour tout ensemble de termes E et pour tout terme t, le problème :
Θ = {Fi → ui | ui ∈
/ (E, t) ∪ H}
D : E → E1 → . . . → E l
et soit i minimal tel que v ∈ (Fi ). On a i > 0 par hypothèse. Par le lemme 31, la transition
Fi−1 → Fi est soit dans Rc,proto , soit dans Aagg
D . Le premier cas est impossible par définition
d’une dérivation, le second par hypothèse sur u.
On aboutit à une contradiction, donc Θ = ∅.
Transition(E, F, AoD )
peut être décidé en temps exponentiel. Par construction et par le lemme 34, on a aussi la proposition
suivante :
Proposition 51
Le problème de décision :
Nous allons montrer par contradiction que les trois ensembles Θd , Θc et Θo sont vides en utilisant
la minimalité de D.
Θd : par contradiction, soit Fi → ui ∈ Θd d’indice minimal, et soit v le terme décomposé. Par
définition d’une dérivation, v n’est pas le résultat d’une règle de composition. Par minimalité
dans Θd , ce n’est pas une règle de décomposition. Par minimalité par le choix de D, ce n’est
pas une règle d’Oracle. Donc v ∈ E, ce qui contredit ui ∈ / (E) ;
Θc : par contradiction, soit Fi → ui ∈ Θc d’indice maximal. Par hypothèse, ui 6= t. Par
minimalité de D, ui est dans le membre gauche d’une autre règle F 0 → v. Ce n’est pas
une règle de composition par maximalité dans Θd , et ce n’est pas une règle d’Oracle par
l’Affirmation 2. Si c’est une règle de décomposition, ui n’est pas le terme décomposé par
définition d’une dérivation. Soit v le terme décomposé par cette règle. Ce terme n’est pas
créé par une règle de AoD par l’affirmation 1. et le choix de D, il n’est pas créé par une règle
de Rc,proto par définition d’une dérivation. Donc il est créé par une règle de Rd,proto , mais
alors Θd = ∅ implique qu’il est sous-terme de E, t. Donc u ∈≡ −1 (E, t). Il n’y a pas de
règles de composition F 00 → w−1 , donc u ∈ (E, t) ;
Θo : par contradiction, soit Fi → ui ∈ Θo d’indice maximal. Par hypothèse, ui 6= t. Par
minimalité de D, ui est dans le membre gauche d’une autre règle F 0 → v. L’affirmation 1.
et ui ∈ / (E), on peut supposer que ce n’est pas une règle de décomposition. Par Θc = ∅
et par définition des règles de composition, ce n’est pas une règle de composition. Donc c’est
alors une règle de AoD , mais alors l’Affirmation 3. contredit la minimalité de D. Donc Θo = ∅.
On en conclut que Θ = ∅, et donc qu’une dérivation partant de E et de but t de longueur minimale
est bien formée.
8.5. Implantation 153
(Aqcq , AD , S0 , D)
La raison en est que cette preuve recoupe amplement les preuves de correction, complétude et
terminaison de la recherche d’attaques par résolution de contraintes pour le système d’inférence
utilisé, et la preuve de la première partie de ce chapitre pour ce qui concerne le passage des règles
de rôles à celles d’Oracle.
: nb1 ;
Cette déclaration diffère de celle de but de l’intrus, car il est utilisé, durant la construction des
règles d’Oracle, que l’intrus ne connaı̂tra jamais ces termes. En contrepartie, la spécification du
protocole est fautive si l’intrus venait à connaı̂tre un de ces termes.
À partir de ces règles, noud construisons les règles agrégées. Les messages attendus jusqu’à
l’étape i sont concaténés pour former le message attendu de la i-règle agrégée. Ce message est
ensuite analysé en fonction des connaissances du rôle à l’étape i de manière similaire à celle décrite
dans le chapitre 5. De même, le message envoyé en réponse est analysé. À la différence de la
construction présentée dans le chapitre 5, les termes qui ne peuvent pas être complètement analysés
ne sont pas remplacés par des variables. Toutes les positions de ces termes correspondant à des
variables du protocole sont remplacées de manière unique par une nouvelle variable. Par exemple,
s s
un rôle devant recevoir les messages {hN a, N ai}K et {N a}K et ne connaissant pas K filtrera les
s s
messages attendus avec les termes {hxN a,1 , xN a,2 i}xK,1 et {xN a,3 }xK,2 . Cette construction permet
d’obtenir des règles agrégées l → r telles que :
Var(r) ⊆ Var(l)
G:l→r
Toutes les décompositions possibles de l et de r sont pré-calculées. Ce pré-calcul est possible car
une variable ne pourra être ensuite instanciée que par une constante. Le nombre de décompositions
possibles est donc borné par le nombre de sous-termes (avec multiplicité). Ce calcul sert à assurer
que les règles l → r générées n’auront à être décomposées ni à droite, ni à gauche.
Les règles d’Oracle sont ensuite calculées à partir des règles décomposées. Ce calcul sert à
assurer qu’il sera inutile pour l’intrus, lors de la phase de recherche d’attaque, d’utiliser le résultat
d’une règle décomposée pour simplifier le membre gauche d’une autre règle. Un ordre sur les règles
permet de ne garder que les plus avantageuses pour l’intrus. Par exemple, pour deux règles G : l → r
et G0 : l0 → r0 , si r = r0 et G = G0 , alors si l ⊂ l0 , il est inutile de garder la règle G0 : l0 → r0 .
8.5. Implantation 155
l0 → r0 = Norm(l → r)
Rproto Rproto
ensemble de terme l, on a : lσ ⊆ E si, et seulement si, N(l)σ ⊆ E . Par les lemmes 11,
Rproto
15 et 17, et par C ⊆ E , on a :
Rproto Rproto
C ∪ lσ = C ∪ N(l)σ
Rproto Rproto Rproto
On a donc C ∪ lσ ⊆ C ∪ N(l)σ , et donc C ∪ N(l)σ ⊆ E implique C ∪ lσ ⊆ E .
L’autre implication est montrée en suivant le même raisonnement.
Montrons maintenant le second point. Par construction et par les lemmes 11, 15 et 17 :
Rproto Rproto
C ∪ rσ = C ∪ r0 σ
Les règles agrégées sont d’abord mises en forme normale par application de la fonction N( ),
puis décomposées au moyen du système d’inférence suivant :
– décomposition dans le membre gauche :
G : f (t1 , t2 ), l → r Rproto
G : Norm(t1 , t2 , l → r) si S ∩ t1 , t2 , l =∅
G : l → f (t1 , t2 ), r Rproto
G : Norm(Cond(f (t1 , t2 )), l → r, f (t1 , t2 ), t1 ) si S ∩ Cond(f (t1 , t2 )), l =∅
Toutes les décompositions possibles sont testées. Pour assurer la terminaison, la décomposition
dans le membre droit n’est pas appliquée plusieurs fois sur le même terme. Si Lagg est l’ensemble
des règles agrégées après normalisation, nous notons L0dec l’ensemble des règles que ce système
permet d’engendrer à partir de Lagg .
L’ensemble Ldec des règles décomposées est défini à partir de L0dec de la manière suivante :
[ n
[
Ldec = {G : l → ri }
G:l→r1 ,...,rn ∈L0dec i=1
il est facile de voir que le premier cas peut entraı̂ner une boucle. Le but du calcul que nous présentons
maintenant est d’éliminer ce cas en pré-calculant les interactions possibles entre le membre gauche
d’une règle et son membre droit.
Soit E un ensemble clos, et G1 : l1 → r1 et G2 : l2 → r2 deux règles décomposées. Nous
considérons les transitions :
– et surtout :
r10 σ1 ∩ l20 σ2 6= ∅
Nous allons maintenant combiner les règles décomposées pour obtenir des règles d’Oracle pour
lesquelles nous pouvons assurer qu’il n’est pas nécessaire d’utiliser le membre droit d’une règle
d’Oracle pour simplifier le membre gauche d’une autre règle.
La règle de combinaison est la suivante :
G0 : l 0 → r 0 G : l ∪ {t} → r
si σ = mgu(r0 , t)
Uni(G, G ) : N ([l, l0 → r]σ)
0
La partie Uni(G, G0 ) est définie de la manière suivante pour des événements e. Soit E l’ensemble
des événements e tels que
– witness(e) est dans G0 ;
– request(e) est dans G.
Nous définissons alors :
Uni(G, G0 ) = {request(e) | request(e) ∈ G ∪ G0 }
/ E et witness(e) ∈ G0 }
∪ {witness(e) | e ∈
∪ {witness(e) | witness(e) ∈ G}
La règle de combinaison permet d’engendrer un nombre infini de règles d’Oracle. Afin d’assurer
la terminaison, nous ordonnons les règles créées par un ordre <L tel que G0 : l0 → r0 <L G : l → r
s’il existe une substitution σ telle que :
– lσ ⊆ l0 ;
– rσ = r0 ;
– l’ensemble des termes witness de Gσ est inclus dans l’ensemble des termes request de G0 , et
l’ensemble des termes request de G0 est inclus dans l’ensemble des termes witness de Gσ.
Ces trois conditions permettent d’assurer que s’il y a une attaque sur un protocole utilisant la règle
G0 : l0 → r0 , il est possible de la remplacer par la règle G : l → r.
Soit Σ l’ensemble des unificateurs entre le membre droit d’une règle décomposée et un terme
du membre gauche d’une règle décomposée. Chaque variable ne peut être remplacée que par une
constante, et il n’y a qu’un nombre fini de constantes, donc l’ensemble Σ est fini. Les règles ins-
tanciées sont les règles [G : l → r]σ, avec G : l → r une règle décomposée et σ ∈ Σ. L’ensemble
des règles instanciées est fini.
Montrons qu’il existe un ensemble fini de règles minimales pour l’ordre <L . Pour cela, soit
G : l → r une règle d’Oracle obtenue par l’application de la règle de combinaison. Il est possible
de représenter G : l → r par un arbre A dont la racine est r, chaque nœud r0 a pour fils les nœuds
l1 , . . . , lm avec G0 : l1 , . . . , lm → r0 une instance d’une règle décomposée. Utilisons la notion de
position sur cet arbre telle que définie pour les termes. Le membre gauche l est l’ensemble des
feuilles de cet arbre. Si la même règle instanciée est utilisée deux fois, aux positions p et p.p0 , alors
il est possible d’obtenir une règle G0 : l0 → r plus petite pour <L que G : l → r en remplaçant A|p
par A|p.p0 .
Si les règles d’Oracle sont engendrées de manière équitable, l’ensemble des règles minimales
sera atteint en un temps fini. Une fois cette ensemble atteint, toute règle ajoutée sera plus grande
qu’une des règles déjà présente, et peut donc être éliminée tout en gardant un ensemble de règles
d’Oracle préservant les attaques. En conclusion, il est possible d’engendrer un ensemble fini de
règles d’Oracle préservant les attaques.
Spécification en LHNSP. Nous commençons par donner comme exemple l’étude du protocole
Encrypted Key Exchange, connu pour avoir une erreur d’authentification lorsque plusieurs sessions
se déroulent concurremment [26]. La spécification de ce protocole est donnée dans la figure 8.2.
Règles d’Oracle en sortie du compilateur. Le cas de ce protocole est très simple, et il n’y
a pas de composition possible entre les règles du rôle B. Les deux règles en sortie du compilateur
sont :
s p s
i({xKa11}p ) ⇒ i({{re}xKa11 }p )
s s s
i({xN a22}re ) · i({xKa22}p ) · witness(a, b, N b, xN b22) ⇒ i({hxN a22, N bi}re )
Trace de la recherche d’attaque. Nous notons a(seq) l’acteur a jouant un nombre borné
de sessions et a(seq) l’acteur a jouant un nombre non borné de sessions. Nous allons suivre en
parallèle la recherche d’attaque incrémentale par daTac et sa traduction en terme de problème de
construction simultanée. Dans la suite de résolutions menant à la faille, la première règle appliquée
est celle d’envoi de message par a(seq) :
s
a(seq) → : {Ka}p
8.6. Résultats expérimentaux 159
A, B : ;
Na, Nb : ;
Ka : ;
P, R : ;
A : B, P ;
B : P;
1. A → B : {Ka}P
2. B → A : {{R} Ka}P
3. A → B : {Na} R
4. B → A : {Na, Nb} R
5. A → B : {Nb} R
B[A : b; B : a; P : p; Re : re] ;
p, re ;
A[A : a; B : b; P : p] ;
divert, impersonate ;
a, b ;
A authenticates B on N a ;
Aucune contrainte ne repose sur les connaissances de l’intrus. La règle suivante est la réception
du message de l’étape 2. par a(seq) :
s
a(seq) → : {Ka}p
p s
→ a(seq) : {{x1 }Ka }p
s
a(seq) → : {N a}x1
L’intrus doit maintenant composer un message de la forme {{x1 } Ka} p. Le problème de cons-
truction simultanée est, à ce moment :
s p s
a, b, {Ka}p B {{x1 }Ka }p
Dans daTac, la résolution suivante est l’application de la première règle d’Oracle. Dans le problème
de construction simultanée, cette inférence se traduit par l’application de la règle :
Cα , Ei B ri , Cβ p s
p s s σ = mgu({{re}xKa11 }p , ri )
Oracle({{re}xKa11 }p ) (Cα , Ei B {xKa11}p , Cβ )σ
s
a(seq) → : {Ka}p
s
→ a(//) : {Ka}p
p s
a(//) → : {{re}Ka }p
p s
→ a(seq) : {{re}Ka }p
s
a(seq) → : {N a}re
s
→ a(//) : {N a}re
s
a(//) → : {hN a, N bi}re
s
→ a(seq) : {hN a, N bi}re
s
a(seq) → : {N b}re
request(x1 , x2 , x3 , x4 ) · witness(x2 , x1 , x3 , x4 ) ⇒ ∅
ne peut pas être appliquée, donc le terme request(a, b, N b, B) n’est pas simplifié : il y a une attaque.
En faisant une recherche en largeur dans l’ensemble des clauses pouvant être atteintes à partir de
la clause décrivant l’état initial du protocole, daTac trouve l’erreur en quelques secondes, après
avoir exploré 7 clauses. Il n’y a aucune heuristique de recherche d’attaque mise en œuvre autre que
celles décrites dans ce chapitre et celles du chapitre 6.
Temps (s)
Protocole Attaque sans avec
Oracle Oracle
Woo-Lam Π Authentification 20 0.5
Woo-Lam Mutual Authentication Authentification 1024 81
Needham-Schroeder Public Key intermédiaire 1230 234
Kao Chow Repeated Authentication, 1 Re-jeu 77 1.5
SPLICE/AS Authentication Protocol Re-jeu 352.42 AF
Denning Sacco Key Distribution with Public Key intermédiaire 937 32
Encrypted Key Exchange Authentification 241 24
Davis Swick Private Key Certificates, protocol 1 Erreur de typage 106 AF
Davis Swick Private Key Certificates, protocol 2 Erreur de typage 348 AF
Tab. 8.1 – Comparaison des résultats avec et sans utilisation de d’acteurs pouvant participer à un
nombre non borné de sessions.
L’intrus profite de la réutilisation des nonces d’une session sur l’autre pour créer une fausse
attaque en envoyant à B une valeur pour Na égale à la valeur du nonce qu’envoie B à l’avant-dernier
s
message. L’intrus peut alors répondre directement à B en utilisant le sous-message {N a}Kab =
s
{N c}Kab .
5 Le cas du protocole de Denning et Sacco étant à part, une erreur, décrite dans le chapitre 6 et dans [25] ayant
été trouvée.
9
Bilan et Perspectives
Compilation. Sur le plan théorique, la modélisation de l’exécution d’une instance d’un proto-
cole par des systèmes de réécriture était acquise avant le début de notre travail. Les problèmes
d’exécutabilité d’une spécification et de gestion des connaissances étaient résolus dans le cas des
opérateurs libres. Nous avons étendu ces deux derniers résultats à certains opérateurs algébriques.
Il nous semble que les méthodes utilisées sont très générales, et permettent une extension rapide
à tout opérateur susceptible d’être utilisé. Nous avons proposé un modèle « prudent » des rôles :
ceux-ci cherchent toujours à extraire le maximum d’information des connaissances qu’ils possèdent
et en vérifient la cohérence.
Parmi les challenges encore à relever, l’un des plus importants nous semble être la prise en
compte du coût des ressources d’une exécution d’un protocole pour un rôle. Le but est double.
Tout d’abord, il doit nous permettre d’analyser la vulnérabilité d’un protocole à une attaque de
type déni de service. Ensuite, une partie des protocoles cryptographiques en cours de développement
seront à terme implantés dans des réseaux où les postes auront une faible puissance de calcul, des
téléphones portables, par exemple. Une direction d’étude qui nous semble intéressante serait de
rechercher une représentation des connaissances minimisant l’espace mémoire utilisé et/ou le temps
de calcul pour la composition d’un message et telle qu’un protocole reste sûr.
Une autre possibilité, qui peut être explorée de conserve, est l’implantation automatique d’un
protocole à partir de sa spécification. Nous avons donné dans le chapitre 5 une représentation des
connaissances, des messages attendus et envoyés par un rôle.
Enfin, et plus concrètement, nous aurons à implanter le processus de compilation dans les mois
à venir dans la nouvelle version du compilateur CasRul au sein du projet AVISPA. Nous aurons
alors à montrer la correction de la compilation par rapport à une sémantique du langage de haut
niveau donnée dans un langage proche de TLA.
Recherche d’attaques. Nous considérons que le problème de la recherche d’attaques dans le cas
d’un intrus passif est en grande partie clos par le chapitre 4. Nous avons montré que ce problème est
polynomial pour toute combinaison des opérateurs que nous avons considérés dans ce document.
De plus, pour étendre ce résultat à un système ayant en plus un opérateur, il suffit de montrer
que le système de règles de déductions pour cet opérateur est canonique et que le problème de
l’existence d’une transition entre deux ensembles peut être résolu en temps polynomial.
163
164 Chapitre 9. Bilan et Perspectives
Le travail présenté sur la recherche d’attaques dans le cas d’un intrus actif peut être poursuivi
selon deux directions. La première consiste à proposer une implantation efficace des algorithmes
de recherche d’attaques présentés dans le chapitre 7 ou, selon le point de vue, étendre l’algorithme
présenté dans le chapitre 6 pour la prise en compte des opérateurs algébriques. La deuxième direc-
tion consiste à rechercher un résultat de combinaison analogue à celui que nous avons donné pour
le cas clos.
Vérification. Nous avons montré dans le chapitre 8 que le problème de la vérification était de
complexité exponentielle dans le cas où seuls des opérateurs libres sont considérés. Nous conjectu-
rons que ce résultat s’étend verbatim à toute signature régulière et permettant le remplacement.
Les résultats de l’agorithme de calcul des règles d’Oracle présenté nous semblent très encou-
rageants. La principale difficulté est de réussir à éliminer le plus de règles redondantes possibles
tout en gardant un système correct pour la vérification de protocoles. Nous avons déjà progressé
par rapport à l’algorithme présenté dans [25], mais avant de nous attaquer à des protocoles plus
complexes, il nous faudra notamment réussir à mieux prendre en compte les cas où des données
sont transmises sans être analysées.
Bibliographie
165
166 Bibliographie
[16] J. Bull and D. Otway. The Authentication Protocol. Technical Report CIS3/PROJ/CORBA/
SC/1/CSM/436-04/03, Defense Research Agency (DRA), Feb 1997.
[17] M. Burrows, M. Abadi, and R. Needham. A Logic of Authentication. ACM Transactions on
Computer Systems, 8(1) :18–36, 1990.
[18] K. M. Chandy and J. Misra. Parallel Program Design. Addison-Wesley, 1988.
[19] Y. Chevalier, R. Kuesters, M. Rusinowitch, and M. Turuani. An NP Decision Procedure for
Protocol Insecurity with XOR. In Proceedings of the Logic In Computer Science Conference
LICS’03, June 2003. Long version available as Technical Report RR-4697, INRIA, France.
[20] Y. Chevalier, R. Kuesters, M. Rusinowitch, and M. Turuani. Deciding the Security of Pro-
tocols with Diffie-Hellman Exponentiation and Products in Exponents. In Proceedings of the
Foundations of Software Technology and Theoretical Computer Science FSTTCS’03, Decem-
ber 2003. Long version soon available as Christian-Albrecht Universität IFI-Report 0305,
Kiel (Germany).
[21] Y. Chevalier, R. Kuesters, M. Rusinowitch, and M. Turuani. Deciding the Security of Pro-
tocols with Diffie-Hellman Exponentiation and Products in Exponents. Technical Report
IFI-Report 0305, Christian-Albrecht Universität, Kiel (Germany), Apr 2003.
[22] Y. Chevalier, R. Kuesters, M. Rusinowitch, and M. Turuani. Extending the Dolev-Yao
Intruder for Analyzing an Unbounded Number of Sessions. In Proceedings of the Computer
Science Logic Conference CSL’03, August 2003. Long version soon available as Technical
Report RR-4869, INRIA, France.
[23] Y. Chevalier and L. Vigneron. A Tool for Lazy Verification of Security Protocols. In Procee-
dings of the Automated Software Engineering Conference (ASE’01). IEEE Computer Society
Press, 2001. Long version available as INRIA Research Report RR-4368, January 2002.
[24] Y. Chevalier and L. Vigneron. Towards Efficient Automated Verification of Security Pro-
tocols. In Proceedings of the Verification Workshop (VERIFY’01) (in connection with IJ-
CAR’01), Università degli studi di Siena, TR DII 08/01, pages 19–33, June 2001.
[25] Y. Chevalier and L. Vigneron. Automated Unbounded Verification of Security Protocols.
In 14th International Conference on Computer Aided Verification, CAV’2002, LNCS 2404,
pages 324–337, Copenhaguen (Denmark), 2002. Springer. Long version available as INRIA
Research Report 4369, January 2002.
[26] J. Clark and J. Jacob. A Survey of Authentication Protocol Literature : Version 1.0,
17. Nov. 1997. http://www.cs.york.ac.uk/~jac/papers/drareview.ps.gz.
[27] H. Comon-Lundh and V. Cortier. Security properties : two agents are sufficient. In In Proc.
12th European Symposium on Programming (ESOP’2003), volume 2618 of Lecture Notes in
Computer Science, pages 99–113. Springer, Apr 2003.
[28] H. Comon-Lundh and V. Shmatikov. Intruder deductions, constraint solving and insecurity
decision in presence of exclusive or. In Proceedings of The Symposium on Logic in Computer
science (LICS’03) Conference. IEEE, June 2003.
[29] R. Corin and S. Etalle. An Improved Constraint-Based System for the Verification of Security
Protocols. In M. V. Hermenegildo and G. Puebla, editors, 9th Int. Static Analysis Symposium
(SAS), LNCS 2477, pages 326–341, Madrid (Spain), 2002. Springer.
[30] V. Cortier. Vérification automatique des protocoles cryptographiques. PhD thesis, École
Normale Supérieure de Cachan, march 2003. http://www.lsv.ens-cachan.fr/~cortier.
[31] Z. Dang and R. Kemmerer. Using the ASTRAL Model Checker for Cryptographic Protocol
Analysis. In Proceedings of the DIMACS Workshop on Design and Formal Verification of
Security Protocols, September 1997.
[32] Centre National de Transfert de Données Sociales. Structure du numéro de sécurité sociale.
http://www.dads.cnav.fr/tds/Stru0103.htm.
[33] M. Debbabi, M. Mejri, M. Tawbi, and I. Yahmadi. Formal Automatic Verification of Authen-
tication Cryptographic Protocols. In Proceedings of the First IEEE International Conference
on Formal Engineering Methods, ICFEM’97, November 1997.
167
[34] G. Denker. Design of a CIL connector to Maude. In H. Veith, N. Heintze, and E. Clarke,
editors, Workshop on Formal Methods and Comuter Security. Carnegie Mellon University,
July 2000.
[35] G. Denker and J. Millen. CAPSL and CIL language design. Technical Report SRI-CSL-99-02,
SRI International Computer Science Laboratory, 1999.
[36] G. Denker and J. Millen. CAPSL Intermediate Language. In N. Heintze and E. Clarke, edi-
tors, Proceedings of Workshop on Formal Methods and Security Protocols (FMSP’99). Avai-
lable at http://cm.bell-labs.com/cm/cs/who/nch/fmsp99/. URL for CAPSL and CIL :
http://www.csl.sri.com/$\sim$millen/capsl/,, 1999.
[37] G. Denker and J. Millen. CAPSL and MuCAPSL. Journal of Telecommunications and
Information Technology, 4 :16–27, 2002.
[38] G. Denker, J. Millen, and H. Ruess. The CAPSL integrated protocol environment. Technical
Report SRI-CSL-2000-02, SRI International, 2000.
[39] D. Denning and G. Sacco. Timestamps in Key Distribution Protocols. Communications of
the ACM, 24(8), August 1981.
[40] W. Diffie and M. Hellman. New directions in cryptography. IEEE Transactions on Informa-
tion Theory, IT-22(6) :644–654, 1976.
[41] D. Dolev and A. Yao. On the Security of Public Key Protocols. IEEE Transactions on
Information Theory, 29(2) :198–208, march 1983.
[42] B. Donovan, G. Lowe, and P. Norris. Analyzing a Library of Security Protocols using Casper
and FDR. In Proceedings of the Workshop on Formal Methods and Security Protocols, 1999.
[43] A. Durante, R. Focardi, and R. Gorrieri. CVS : A compiler for the analysis of cryptogra-
phic protocols. In Proceedings of the 12th Computer Security Foundations Workshop. IEEE
Computer Society Press, 1999.
[44] A. Durante, R. Focardi, and R. Gorrieri. A Compiler for Analysing Cryptographic Proto-
cols Using Non-Interference. ACM Transactions on Software Engineering and Methodology,
9(4) :489–530, 2000.
[45] N. Durgin, P. Lincoln, J. Mitchell, and A. Scedrov. Undecidability of bounded security
protocols. In N. Heintze and E. Clarke, editors, Proceedings of the FLOC’99 Workshop on
Formal Methods and Security Protocols (FMSP’99), Trento, Italy, July 1999. Available at
http://www.cs.bell-labs.com/who/nch/fmsp99/program.html.
[46] C. Dwork, P. Kanellakis, and J. Mitchell. On the Sequential Nature of Unification. Journal
of Logic Programming, 1 :35–50, 1984.
[47] T. El-Gamal. A Public-Key Cryptosystem and a Signature Scheme based on Discrete Loga-
rithms. IEEE transactions on Information Theory, IT-31(4) :469–472, 1985.
[48] S. Even and O. Goldreich. On the Security of Multi-party Ping-pong Protocols. In 24th
IEEE Symposium on Foundations of Computer Science, 1983.
[49] M. Fiore and M. Abadi. Computing Symbolic Models for Verifying Cryptographic Protocols.
In 14th IEEE Computer Security Foundations Workshop, pages 160–173. IEEE Computer
Society, 2001.
[50] R. Focardi and F. Martinelli. A Uniform Approach for the Definition of Security Properties.
In World Congress on Formal Methods (1), pages 794–813, 1999.
[51] T. Genet and F. Klay. Rewriting for Cryptographic Protocol Verification. In 17th Inter-
national Conference on Automated Deduction, LNCS 1831, pages 271–290, Pittsburgh (PA,
USA), 2000. Springer.
[52] L. Gong. Enclaves : Enabling Secure Collaboration over the Internet. IEEE J. of Selected
Areas in Communications, 15(3) :567–575, April 1997.
[53] J. Goubault-Larrecq. A Method for Automatic Cryptographic Protocol Verification. In Proc.
15 IPDPS 2000 Workshops, Cancun, Mexico, LNCS 1800, pages 977–984. Springer, 2000.
[54] J. Heather, G. Lowe, and S. Schneider. How to Prevent Type Flaw Attacks on Security
Protocols. In 13th IEEE Computer Security Foundations Workshop, pages 255–268. IEEE
Computer Society, 2000.
168 Bibliographie
[55] N. Heintze and J. Tygar. A Model for Secure Protocols and Their Compositions. IEEE
Transactions on Software Engineering, 22(1) :16–30, January 1996.
[56] F. Jacquemard, M. Rusinowitch, and L. Vigneron. Compiling and Verifying Security Proto-
cols. In M. Parigot and A. Voronkov, editors, Proceedings of LPAR 2000, LNCS 1955, pages
131–160. Springer-Verlag, Heidelberg, 2000.
[57] D. Kapur and P. Narendran. Double-Exponential Complexity of Computing a Complete
Set of AC-Unifiers. In Proceedings of the Seventh Symposium on Logic in Computer Science
(LICS’92), pages 11–21, Santa Cruz, CA, 1992.
[58] D. Kozen. On the Complexity of Finitely Presented Algebras. In Proc. 9th Ann. ACM
Symposium Theory Computation, pages 164–177, 1977.
[59] Y. Lakhnech L. Bozga and M. Perin. Pattern-based Abstraction for verifying Secrecy in
Protocols. In H. Garavel and J. Hatcliff, editors, Proceedings of the 9th International Confe-
rence on Tools and Algorithms for the Construction and Analysis of Systems, volume 2619
of Lecture Notes in Computer Science. Springer, april 2003.
[60] M. Layouni, J. Hooman, , and S. Tahar. On the Correctness of an Intrusion-Tolerant Group
Communication Protocol. In Proceedings of the 12th Advanced Research Working Conference
on Correct Hardware Design and Verification Methods (CHARME’03). Springer, October
2003.
[61] G. Lowe. Breaking and fixing the Needham-Schroeder public-key protocol using FDR. In
T. Margaria and B. Steffen, editors, Proceedings of TACAS’96, LNCS 1055, pages 147–166.
Springer, Berlin, 1996.
[62] G. Lowe. A Hierarchy of Authentication Specifications. In Proceedings of the IEEE Sympo-
sium on Security and Privacy, pages 31–43, 1997.
[63] G. Lowe. Casper : a Compiler for the Analysis of Security Protocols. Journal of Computer
Security, 6(1) :53–84, 1998. http://www.mcs.le.ac.uk/~gl7/Security/Casper/.
[64] G. Lowe. Towards a Completeness Result for Model Checking of Security Protocols. In 11th
IEEE Computer Security Foundations Workshop, pages 96–105. IEEE Computer Society,
1998.
[65] A. Martelli and U. Montanari. An Efficient Unification Algorithm. ACM Journal of Language,
4(23) :733–742, October 1976.
[66] D. McAllester. New Results on Local Inference Relations. In Proceedings of the 3rd Interna-
tional Conference on Principles of Knowledge Representation and Reasoning (KR’92), pages
403–412, 1992.
[67] C. Meadows. Analyzing the Needham-Schroeder Public-Key Protocol : A Comparison of
Two Approaches. In ESORICS : European Symposium on Research in Computer Security.
LNCS 1146, Springer-Verlag, 1996.
[68] C. Meadows. Language Generation and Verification in the NRL Protocol Analyzer. In
9th IEEE Computer Security Foundations Workshop, pages 48–61. IEEE Computer Society,
1996.
[69] C. Meadows. The NRL Protocol Analyzer : an Overview. Journal of Logic Programming,
26(2) :113–131, 1996.
[70] R. Merkle. Secure Communications Over Insecure Channels. Communications of the ACM,
21(4) :294–299, 1978.
[71] R. Merkle and M. Hellman. Hiding and Signatures in Trapdoor Knapsacks. IEEE transactions
on Information Theory, 24(5) :525–530, september 1978.
[72] J. Millen. CAPSL : Common Authentication Protocol Specification Language. Technical
Report MP 97B48, The MITRE Corporation, 1997.
[73] J. Millen and V. Shmatikov. Constraint Solving for Bounded-process Cryptographic Protocol
Analysis. In 8th ACM Conference on Computer and Communication Security, pages 166–175.
ACM SIGSAC, 2001.
169
[74] J.C. Mitchell, M. Mitchell, and U. Stern. Automated Analysis of Cryptographic Protocols
Using Murϕ. In Proceedings of IEEE Symposium on Security and Privacy, pages 141–153,
1997.
[75] D. Monniaux. Abstracting Cryptographic Protocols with Tree Automata. In Sixth Inter-
national Static Analysis Symposium (SAS’99), number 1694 in Lecture Notes in Computer
Science, pages 149–163. Springer, 1999.
[76] P. Narendran and C. Meadows. A Unification Algorithm for the Group Diffie-Hellman Pro-
tocol. In Proceedings of WITS’02, January 2002.
[77] R. Needham and M. Schroeder. Using Encryption for Authentication in Large Networks of
Computers. Communications of the ACM, 21(12) :993–998, December 1978.
[78] R. Needham and M. Schroeder. Using Encryption for Authentication in Large Networks of
Computers. Technical Report CSL-78-4, Xerox Palo Alto Research Center, Palo Alto, CA,
USA, 1978. Reprinted June 1982.
[79] L. Paulson. Verifying security protocols using isabelle. http://www.cl.cam.ac.uk/users/
lcp/papers/protocols.html.
[80] L. Paulson. Isabelle : a generic theorem prover ; with contributions by T. Nipkow. LNCS 828.
Springer, Berlin, 1994.
[81] L. Paulson. Mechanized Proofs for a Recursive Authentication Protocol. In 10th Computer
Security Foundations Workshop, pages 84–95. IEEE Computer Society Press, 1997.
[82] L. Paulson. The Inductive Approach to Verifying Cryptographic Protocols. Journal of
Computer Security, 6(1) :85–128, 1998.
[83] L. Paulson. Inductive Analysis of the Internet Protocol TLS. ACM Transactions on Infor-
mation and System Security, 2(3) :332–351, 1999.
[84] L. Paulson. Proving Security Protocols Correct. In Proceedings of the IEEE Symposium on
Logic in Computer Science, 1999.
[85] W. Plandowski. On the Satisfiability Problem for Word Equations. Technical Report TUCS-
TR-304, Turku Center for Computer Science, 17, 1999.
[86] W. Plandowski and W. Rytter. Application of Lempel-Ziv Encodings to the Solution of Word
Equations. Lecture Notes in Computer Science, 1443 :731–742, 1998.
[87] R. Rivest, A. Shamir, and L. Adleman. A Method for Obtaining Digital Signatures and
Public Key Cryptosystems. Communications of the ACM, 21(2) :120–126, february 1978.
[88] A. W. Roscoe. Modelling and Verifying Key-exchange Protocols using CSP and FDR. In
8th IEEE Computer Security Foundations Workshop, pages 98–107. IEEE Computer Society,
1995.
[89] PKCS 1 : RSA Encryption 1.5. http://www.ietf.org/rfc/rfc2313.txt.
[90] M. Rusinowitch and M. Turuani. Protocol Insecurity with Finite Number of Sessions is NP-
complete. In Proceedings of the 14th IEEE Computer Security Foundations Workshop. IEEE,
2001.
[91] M. Rusinowitch and L. Vigneron. Automated Deduction with Associative-Commutative
Operators. Applicable Algebra in Engineering, Communication and Computation, 6(1) :23–
56, 1995.
[92] P. Ryan and S. Schneider. An Attack on a Recursive Authentication Protocol. Information
Processing Letters 65, 1998.
[93] P. Ryan, S. Schneider, M. Goldsmith, G. Lowe, and B. Roscoe. Modelling and Analysis of
Security Protocols, 2001.
[94] S. Schneider. Using CSP for Protocol Analysis : the Needham-Schroeder Public Key Protocol.
Technical Report CSD-TR-96-14, Royal Holloway, 1996.
[95] B. Schneier. Applied Cryptography. John Wiley & sons, New York, 1996. (Cryptographie
Appliquée, traduction par L Viennot).
170 Bibliographie
[96] A. Shamir. A Polynomial Time Algorithm for Breaking the Basic Merkle-Hellman Crypto-
system. In Proceedings of 23rd Symposium on Fondations Of Computer Science (FOCS),
pages 145–152. IEEE, 1982.
[97] R. Shostack. An Algorithm for Reasoning About Equality. Commmunications of the ACM,
21(7) :583–585, July 1978.
[98] D. Song. Athena : a new Efficient Automatic Checker for Security Protocol Analysis. In 12th
IEEE Computer Security Foundations Workshop, pages 192–202. IEEE Computer Society,
1999.
[99] D. Song, S. Berezin, and A. Perrig. Athena, a Novel Approach to Efficient Automatic Security
Protocol Analysis. Journal of Computer Security, 9((1,2)) :47–74, 2001.
[100] S. Stoller. A Bound on Attacks on Payment Protocols. In Proccedings of the Symposium on
Logic in Computer Science, pages 61–70, 2001.
[101] P. Syverson, C. Meadows, and I. Cervesato. Dolev-Yao is no Better than Machiavelli. In
Proceedings of WITS 2000, 2000.
[102] L. Vigneron. Positive Deduction modulo Regular Theories. In H. Kleine-Büning, editor,
Proceedings of Computer Science Logic, LNCS 1092, pages 468–485. Springer-Verlag, 1995.
URL : http://www.loria.fr/equipes/cassis/softwares/daTac/.
[103] A. Yasinsac and W. Wulf. A Formal Semantics for Evaluating Cryptographic Protocols.
Technical Report CS-93-53, U. Virginia, 1993.