Introduction à la sécurité Protocôles de sécurité

Transcription

Introduction à la sécurité Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Introduction à la sécurité
Protocôles de sécurité
Catalin Dima
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Types de services de sécurité pour les communications
Condentialité : l'assurance que ses actions, données, communications ne
soient pas examinées par des personnes/parties non-authorisées.
Authenticité : l'assurance que l'accès/la conversation se passe avec une
ou plusieurs personnes/parties légitimes.
Integrité : l'assurance que ses propres données ne soient pas modiées ou
corrompues sans son accord, ou que ses messages ne soient pas modiés
après avoir été envoyées.
Disponibilité : abilité d'utiliser une ressource à son gré, tant qu'on veut
l'utiliser de manière correcte.
Non-repudiation : l'impossibilité de nier ou désavouer une
action/transaction/message dont on est la source.
La
Cryptographie
apporte des solution pour les trois premièrs types de services
mais il faut l'employer avec bcp de soin !
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Criptographie : dénitions
Cryptage
= transformation syntactique d'un texte (message clair) de
sorte qu'il devienne inintelligible par tout observateur.
Le résultat = texte chiré ou crypté.
Décryptage
= opération inverse.
Cryptage à clés symmétriques
(ou
privées,
ou
classique)
:
Cryptage et décryptage à l'aide de la même clé.
Clé de decryptage facilement calculable à partir de la clé de
cryptage.
Cryptage à clé publique
(ou
asymmétrique)
:
Cryptage par une clé qui est disponible pour tout le monde :
clé publique),
(
Décryptage par une
clé privée,
propriété du destinataire du
message.
Essayer de decrypter avec la clé publique complexité
prohibitive.
Catalin Dima
Protocôles de sécurité
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Cryptographie : dénitions
Fonctions à sens unique
f
: A −→ B
Il est facile de construire
Étant donné
f (a) = b.
b ∈ B,
pour laquelle :
f (a)
pour tout
a.
il est dicile de trouver
Facile et dicile =
a
pour lequel
complexité algorithmique !
sommaires (angl.
Utilisées dans la construction des
"digest")
de messages.
Fonction à sens unique
avec trappe
:
En connaissant un paramètre supplémentaire, on peut
construire
f −1 .
Utilisées dans la construction des systèmes asymmétriques.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Communication utilisant les clés symmétriques
1
Alice et Bob se mettent d'accord pour employer un système de
2
Alice et Bob se mettent d'accord pour utiliser une clé (il faut le faire en
chirement (ils peuvent le faire en public).
privé !)
3
Alice chire son texte à l'aide de sa clé et l'envoie à Bob.
4
Bob déchire le texte qu'il vient de recevoir.
La relation cryptage-décryptage peut s'écrire K (K (M ))
=M
pour toute
clé K et message M .
La "sûreté" du cryptage peut s'écrire K (K
0
(M )) 6= M
pour toute K
6= K 0 .
C'est dans l'idéal... on sait qu'il y a bcp. de restrictions pour assurer ça,
et il n'y a pas que ça en terme de cryptanalyse...
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Systèmes symmétriques avantages et désavantages
Avantages :
Système censé assurer la condentialité du message envoyé par Alice à
Bob.
Surcharge de calcul pas trop importante, ni à l'émission, ni à la réception.
Désavantages :
Dicile, voire impossible, d'implémenter tous les schémas
d'authentication...
Cryptanalyse moins dicile que pour le cryptage asymmétrique donc
utilisation à court terme, en combinaison avec cet autre type de cryptage.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Cryptage à clés publiques
1. Alice crée une paire de clés dont la clé privée (notée K
−1
) sera gardée
soigneusement, tandis que la clé publique (notée K ) sera mise à
disposition de tout le monde.
Mais comment la transmettre de manière sécurisée ?...
2a. Bob peut alors chirer son message avec K , en étant sûr que c'est
seulement Alice qui peut déchirer son message.
2b. Mais aussi Alice peut "chirer" un message M avec sa clé privée, et
l'envoyer à Bob.
3b. Bob sera alors sûr que c'est Alice qui a créé M condentialité !
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Systèmes asymmétriques caractéristiques
Sûreté de cryptage : K
−1
(K (M )) = M
6= K .
et K
−1
(L(M )) 6= M
pour tout
message M et toute clé L
Le système de cryptage d'Alice doit se baser sur une fonction à sens
unique et à trappe.
Il doit être très dicile (du point de vue de la puissance de calcul) de
−1
trouver K
à partir de K .
Avantages :
Permet d'assuer la condentialité du message sans nécessiter la
condentialité de la clé utilisée à la réception.
Cryptanalyse bcp plus dicile que dans le cas symmétrique.
Désavantages :
Nécessité de la mise en place d'un système sécurisé de distribution des
clés publiques.
Surcharge de calcul bien importante.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Un schéma de communication avec authentication
Coté expéditeur :
1
Calculer un sommaire (digest) du message clair.
2
Chirer le digest avec sa propre clé privée (
3
Rassembler le digest avec le message clair.
4
Chirer le résultat avec la clé privée du destinataire
authentication).
condentialité).
(
Coté destinataire : ordre inverse.
1
Déchirer le texte reçu avec sa propre clé privée obtention de
la paire (digest chiré, message clair)
2
Déchirer le digest avec la clé publique de l'expéditeur obtention du digest clair.
3
Calculer le digest du message clair.
4
Comparer le digest reçu avec le digest calculé si diérents,
alors rejet de la communication.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Qqs dénitions
Cryptage symmétrique
Cryptage asymmétrique
Compléments
Mise en oeuvre de la cryptographie à clé publique
Deux types de génération :
1
Génération asymmètrique et transportation le cas RSA.
calcul d'une clé de session à partir de la clé publique du
recepteur.
renvoi au recepteur de la clé de session dans un message
chiré avec sa clé publique.
2
Génération symmétrique le cas Die-Hellman.
calcul d'un secret partagé entre les deux participants, à partir
de l'information detenue dans leurs clés publiques et privées.
génération d'une clé de session symmétrique à partir de ce
secret partagé.
Remplissage du message avec du texte généré aléatoirement =
Pour éviter que les attaquants puissent faire des
de messages cryptés !
padding
dictionnaires
Ou comparer un message crypté avec d'autres.
Problème spécique dans le cas des systèmes à clés publiques.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Combinaisons de solutions cryptographiques
Les algorithmes cryptographiques assurent la condentialité et/ou
authenticité des messages, une fois une connexion établie !
Problème : établir une connexion sécurisée !
IP spoong, mascarade, détournement de session, attaque
de rejeu...
Protocôle de sécurité : séquence d'actions impliquant deux ou plusieurs
agents, destinée à accomplir une tâche (connexion sécurisée, échange de
messages, etc.).
Un seul agent ne sut pas pour avoir un protocôle...
Les algorithmes cryptographiques peuvent être très performants, mais si
le protocôle est mal conçu la sécurité des transmissions est en danger.
On a vu un premier protocôle sur le transparent Un schéma...
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Règles de dénition de protocôles
1
Tous les participants (agents) dans les protocôles doivent connaître le
protocôle en avance (type de protocôle, séquence des pas à
entreprendre...)
2
Le protocôle doit être déni de manière non-ambigue et complète.
3
Les agents coopèrent en s'échangeant des messages.
4
Les agents n'ont pas d'autre canal de communication que celui sur lequel
le protocôle est censé à être deployé.
5
Les agents utilisent uniquement les messages reçus pour prendre des
décisions sur le comportement à suivre.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Protocôles : éléments constitutifs
Participants :
1
Agents : Alice, Bob,...
2
Serveur(s) de conance.
3
Arbitres de conance (en cas de conit).
4
Agents dishonnêts : Eve (oreille indiscrète, angl.
Mallory (attaquant active) on va les noter
I.
eavesdropper),
Algorithmes cryptographiques parfaits
Les attaquants n'ont pas les moyens computationnels de casser
les codes.
Session : un déroulement complet du protocôle, impliquant tous les
agents concernés.
Bcp. de protocôles permettent à chaque agent d'ouvrir des
sessions
parallèles.
Modèle de base : algèbre de termes.
Chaque transmission de données est un terme construit à
partir de composants primitifs.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Composants
Roles : noms génériques des participants (Alice, Bob,...)
Messages : M .
Clés de cryptage : K , KAlice , KAB ...
Algorithmes à clé publique : paire
Algorithmes symmétriques :
(K , K −1 ).
K = K −1 .
Nonces N : valeurs fraîches et imprédictibles.
Obtenues par des fonctions à sens unique,
Étiquettes de temps.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Opérations
Opérations de base :
1
Juxtaposition de messages :
2
Cryptage
{M }K .
M1 , M2 .
Décryptage opération implicite :
1
Si l'agent
A
possède la clé
K −1
sa clé privée,
une clé publique d'un autre agent,
une clé symmétrique partagée avec un autre agent,
une clé de session reçue auparavant dans un autre message,
2
Et reçoit un message crypté avec la clé correspondante de
cryptage
3
K,
Alors il peut déchirer le message encapsule dans la
transmission.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Modélisation
A
−→ B
A
−→ B
:
B
−→ S
:
{NA }KB , {NA , A}KS
{NA , NB }KS , {NA , A}KS
S
−→ A
:
{NA , KAB }KA
S
−→ B
:
{NB , KAB }KB
A
−→ B
:
{M }KAB
= A envoie à B le message...
NX : nonce fraîche créée par X (X peut être A ou B ).
KX : clé publique de X (X peut être A, B , ou S ).
B peut décrypter le message reçu car crypté par sa clé publique.
... mais il ne peut pas décrypter le message
{NA , A}KS .
Donc pour B c'est une boîte noire, renvoyée telle-quelle à S .
KAB : clé de session générée par S .
M : message généré par A.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Exemple : Needham-Schroeder à clés publiques
Agents : A, B et authorité de certication S .
M1 .
A
−→ S :
A, B
M2 .
S
−→ A :
M3 .
A
−→ B :
M4
B
−→ S :
{KB , B }K −1
S
{NA , A}KB
B, A
M5
S
−→ B :
M6
B
−→ A :
M7
A
−→ B :
{KA , A}K −1
S
{NA , NB }KA
{NB }KB
M1 , M2 , M4 , M5 : les deux agents recupèrent la clé publique de l'autre.
M3 , M6 et M7 : A et B se communiquent les nonces sécrètes NA et NB .
Nonces : dé-réponse.
Seulement A et B peuvent obtenir NA et NB
Ultérieurement, A et B peuvent utiliser NA , NB pour signer des messages.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Dénitions et caractéristiques
Modélisation
Un premier exemple
Needham-Schroeder simplié : sans serveur
Supposant que chacun possède déjà la clé publique de l'autre :
−→ B :
{A, NA }KB
B
−→ A :
{NA , NB }KA
A
−→ B :
{NB }KB
M1 .
A
M2 .
M3 .
Est-ce que ce protocôle est sûr ?
On suppose des algorithmes de chirement parfaits !
L'attaquant ne peut se baser que sur ses propres déductions
faites à partir des messages (chirés ou non) qu'il intercèpte.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Construction correcte d'un protocôle
Dénition de la connaissance des participants
Connaissance initiale
pour chaque agent (rôle) :
Ensemble d'items supposés connus par l'agent au début du
protocôle.
Exemple : clé privée propre, clé publique d'un serveur.
Connaissance instantanée
pour un agent à un certain moment : avant
chaque échange de messages, l'émetteur devrait être en mésure de
composer les messages dont il est la source
Soit parce qu'il possède tous les éléments constitutifs,
Soit parce qu'il possède des messages composés, qui sont pour
lui des boîtes noires.
Nonces/timestamps apparaissant la première fois = générés par
l'émetteur du message.
Donc faisant partie desormais de sa connaissance !
Vérication des composants d'un message :
Par rapport à la connaissance instantanée, est-ce qu'un
message est correctement construit ?
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Construction correcte d'un protocôle
Construction de la connaissance instantanée
Exemple pour Needham-Schroeder sans serveur :
M1 .
A
−→ B :
{A, NA }KB
M2 .
B
−→ A :
{NA , NB }KA
M3 .
A
−→ B :
{NB }KB
Connaissance initiale A : Cn(A)
Connaissance initiale B : Cn(B )
Après le premier pas : Cn(B )
Car
B
possède
KB−1
= {A, B , NA , KA , KA−1 , KB }
= {A, B , NB , KB , KB−1 , KA }
= {A, B , NB , NA , KB , KB−1 , KA }.
{A, NA }KB .
= {A, B , NB , NA , KA , KA−1 , KB }.
et peut déchirer
Après le deuxième pas : Cn(A)
Le troisième pas sert à vérier que A répond correctement !
Un message diérent de
{NB }KB
serait réfusé, et la session
serait invalidée !
Réponse au challenge du message 2 !
Protocôle correctement construit !
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Construction correcte d'un protocôle
Constructions incorrectes
Exemple de construction incorrecte :
A
−→ B : {A, B , NA }KA
B ne possède pas la clé privée de A !
A
−→ B : {A, B , NA }KBC
A ne possède pas la clé symmétrique partagée entre B et C !
Voir aussi le 3e pas du protocôle NS.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Construction correcte d'un protocôle
Compléments de construction correcte
Modélisation assez grossière :
Comment sait
B
que c'est
A
qui le contacte pour initier une
session ?
Peut
A
Hypothèses implicites sur la mémoire des agents :
Chaque nonce générée dans une session sera utilisée dans la
seule session, et sera oubliée lors du démarrage d'une autre
session.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaques et attaquants
Attaquants passifs : oreille indiscrète.
Tricheurs : agents légitimes mais malveillants dans un protocôle.
Agents négligeants ou compromis.
Attaques actifs : modèle de Dolev-Yao.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaquants Dolev-Yao
L'attaquant possède une information complète sur le protocôle de
communication employé par les agents.
L'attaquant contrôle les liens de communication entre les agents.
L'attaquant possède une mémoire non-bornée.
Les règles de construction de la connaissance de Mallory sont les mêmes
que pour les agents légitimes.
L'attaquant peut composer des nouvelles transmissions avec les messages
chirés qui ont transité sur le réseau, ou avec les messages qu'il est arrivé
a déchirer.
L'attaquant peut jouer un rôle d'agent légitime.
Relaxations de modèle Dolev-Yao :
L'attaquant peut casser des chires symmétriques s'il dispose
de susament de temps.
L'attaquant peut ne pas forger n'importe quel message (divers
restrictions de puissance).
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Types d'attaque
Attaque de rejeu : Mallory mémorise un message (une partie d'un
message) et le réintroduit plus tard dans le protocôle (éventuellement en
tant que partie d'un autre message).
Attaque de type personne au milieu : sessions paralèles où Mallory peut
jouer des rôles légitimes, mais combine (forge) des nouveaux messages.
Attaque de type mascarade : Mallory prétend être Alice, et Bob ne peut
pas se rendre compte de sa tromperie.
Notation
IA
: Mallory prétend être Alice dans le protocôle.
Attaque de type erreur de typage : Mallory substitue une partie du
message avec un message forgé, mais qui n'est pas du bon type (e.g.
identité au lieu de clé).
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Propriétés des protocôles : condentialité
Quels sont les secrets que le protocôle ne doit pas divulguer ?
Évidemment pas les messages chirés !
Un protocôle peut être sûr par rapport à un certain message et pas par
rapport à un autre.
Certainement les clés de session ne devraient pas être
divulguées !
Supposons un protocôle P , dans lequel les rôles sont A1 , . . . , Ak .
M est un secret pour un rôle Ai si l'agent jouant le
Ai ne peut pas déduire, à partir des messages qu'il reçoit,
l'item M .
Un item
rôle
Mais pour les attaquants ?
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Condentialité
Un item M est un secret pour Mallory (attaquant Dolev-Yao) si, dans
tout scénario d'attaque dans lequel Mallory joue des rôles pour lesquels M
est secret, Mallory ne peut pas déduire M à partir du trac qu'il observe.
Mallory peut déduire
{M }KA
mais s'il ne dispose pas de
KA , M
reste un secret !
Mallory peut dérouler des sessions parallèles, ou peut tout
simplement observer le déroulement de certaines sessions sans
y participer.
Condentialité
: un item reste secret pour Mallory pour toute interaction
malveillante avec les autres agents !
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Propriétés des protocôles : authenticité
Vitalité (approx. aliveness) : chaque fois qu'A, termine une session
complète avec (celui qu'il croît être) B , A est sûr que c'est B qui a
initié/completé une session correspondante.
Peut ne pas être symmétrique ! (Voir attaques de reexion)
Entente faible : chaque fois qu'A initie (ou répond à) une session avec
(celui qu'il croît être) B , si la session se termine correctement alors A est
sûr que c'est B qui a completé une session avec A.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Authenticite suite
Entente non-injective : chaque fois qu'A initie une session avec B et
envoie/reçoit un ensemble d'items d , si la session se termine correctement
alors A est sûr que B a bien envoyé/reçu chacun de ces items.
Il se peut que
A
ait exécuté deux sessions, tandis que
B
ait
exécuté une seule.
Entente injective : chaque fois qu'A initie une session avec (celui qu'il
croît être) B et envoie/reçoit un ensemble d'items d , si la session se
termine correctement alors A est sûr que B a bien envoyé/reçu chacun de
ces items, et à chaque session de A correspond bien une unique session de
B et vice-versa.
Récentitude : attribut à rajouter aux diérents types d'entente.
E.g.
entente injective t-récente
intervalle entre envoi et
réception.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Dénition de la sûreté
Un protocôle est
sûr par rapport à une assertion φ
si l'assertion
φ
est
satisfaite
À la n de tout déroulement normal du protocôle
À la n de chaque session ouverte, lors d'une attaque contre le
protocôle dans laquelle Mallory prend le contrôle des
communications.
Même dans le cas de plusieurs sessions parallèles lancées
pendant l'attaque...
... ou lorsque Mallory joue un rôle légitime dans le protocôle...
... mais dans ce cas l'assertion ne doit pas se référer au rôle
légitime de Mallory.
Hypothèse implicite : dans la spécication du protocôle on inclut la
connaissance initiale de chaque rôle !
Assertions : condentialité d'un certain item, authenticité de divers
types,...
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Premier exemple
Le protocôle suivant n'est pas sûr :
A
B
−→ B
−→ A
KA
:
:
{M }KA
pour l'assertion suivante :
A la n du protocôle, le message M n'est connu que par A et B .
Attaque :
−→ IB
−→ B
B −→ IA
A
IA
KA
:
:
:
KI
{M }KI
Éventuellement on peut compléter l'attaque de Mallory par
IB
−→ A
:
{M }KA
et ainsi A et B ne se rendent même pas compte de ce qui s'est passé !
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaques contre (un type d')authenticité
P1 .
A
−→ B :
A, B
P2 .
B
−→ A :
{A, B }KAB
Assertion : authentication faible
(A, B )
ok.
Assertion : authentication faible
(B , A)
no !
Attaque très simple : Mallory initie la session !
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaques de rejeu
P1 .
A
−→ B :
{A, B }KAB
P2 .
B
−→ A :
{A, B }KAB
Assertion : authentication faible
(A, B )
Assertion : authentication injective
ok.
(A, B )
no !
Problème : si Mallory recupère un message, il pourrait
intervenir dans une nouvelle session et faire croire à Alice qu'il
est Bob :
P10 . A −→ IB : A, B
P20 . IB −→ A : {A, B }KAB
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaques de rejeu parade
Solution : rajouter des nonces/estampilles de temps :
P1 .
A
−→ B :
A, B , N
P2 .
B
−→ A :
{A, B , N }KAB
N est une valeur fraîche générée par A, que B devrait crypter avec la clé
partagée.
Même si Mallory recupère un ancien message crypté par Bob, il ne pourra
pas l'utiliser dans une nouvelle session.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaques de reexion
Protocôle d'authentication :
P1 .
A
−→ B :
A, N
P2 .
B
−→ A :
{N }KB −1
Assertion : authenticité faible
(B , A)
no !
Attaque de Mallory : reexion
P1 .
P2 .
A
IB
−→ IB :
−→ A :
A, N
0
P1
0
P2
I
B
−→ B
−→ I
{N }K −1
B
I,N
{N }K −1
B
Oublier l'identité du rôle à authentier n'est pas une bonne idée !
Mais bien-sûr, authenticité faible
Catalin Dima
(A, B )
ok !
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaque contre Needham-Schroeder sans serveur
Attaque de type personne au milieu :
M1 .
A
M2 .
I
M3 .
A
−→ I :
−→ A :
−→ I :
{N1 , A}KA
{N1 , N2 }KA
{N2 }KI
Assertion : authenticité faible
0
M1 .
0
M2 .
IA
B
−→ B :
−→ IA :
{N1 , A}KB
{N1 , N2 }KA
0
M3 .
IA
−→ B :
{N2 }KB
(B , A)
no !
Parade : employer explicitement les noms dans le message de réponse :
M2 .
B
−→ A :
Catalin Dima
{N1 , N2 , B }KA
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Protocôle Otway-Rees
Établissement d'une clé de session en sachant seulement une clé partagée avec
un serveur :
M1 .
A
−→ B :
Nsess , A, B , {NA , Nsess , A, B }KAS
M2 .
B
−→ S :
Nsess , A, B , {NA , Nsess , A, B }KAS , {NB , Nsess , A, B }KBS
M3 .
S
−→ B :
Nsess , {NA , KAB }KAS , {NB , KAB }KBS
M4
B
−→ S :
Nsess , {NA , KAB }KAS
Nsess : nonce d'identication de session.
But : A et B doivent être convaincus de l'identité de l'autre, et qu'ils
possèdent bien la clé de session qui leur permet de communiquer de
manière sûre.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Attaque de type
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
erreur de typage contre Otway-Rees
M1 .
A
−→ B :
Nsess , A, B , {NA , Nsess , A, B }KAS
M2 .
B
−→ IS :
0
Nsess , A, B , {NA , Nsess , A, B }KAS , {NB , Nsess , A, B }KBS
M3 .
IS
−→ B :
Nsess , {NA , Nsess , A, B }KAS , {NB , Nsess , A, B }KBS
M4
B
−→ A :
Nsess , {NA , Nsess , A, B }KAS
Assertion : condentialité de la clé partagée KAB no !
Si la somme des tailles de Nsess , A et B est égale à la taille de la clé KAB
que A et B attendent, alors les deux agents ont été dupés par Mallory
d'accepter comme clé de session la juxtaposition [Nsess , A, B ] qui serait
alors utilisée par Mallory pour déchirer le trac.
Solution : le type de chaque composant d'un message devrait être unique
et clairement identiable.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Attaques contre Needham-Schroeder avec serveur (2)
Rien ne garantit la fraîcheur des clés que le Serveur a envoyé à Alice et
Bob.
Attaque de rejeu : si Mallory parvient à compromettre une ancienne clé, il
pourrait rejouer les messages dans lesquelles le Serveur a transmis la clé
respective à A et B .
Attention ! on n'est plus dans le cadre du modèle Dolev-Yao !
Car on suppose que Mallory peut casser des clés !
Solution : utiliser des estampilles de temps
M2 .
S
M5 .
S
−→ A :
−→ B :
{KB , B , T }K −1
S
{KA , A, T }K −1
S
A et B pourraient réfuser des messages de S qui porteraient des
estampilles trop anciennes.
Cela requiert une synchronisation globale, ou un horloge de système
global et sécurisé.
Catalin Dima
Protocôles de sécurité
Petits rappels de cryptographie
Protocôles de sécurité
Correctitude des protocôles de sécurité
Attaques contre les protocôles
Modèle Dolev-Yao d'attaquant
Propriétés des protocôles
Sûreté
Exemples
Règles de conception prudente
Spécier des conditions claires dans lesquelles un message devrait être
pris en compte.
Mentionner les noms des agents de manière explicite s'ils sont essentiels
dans la compréhension du message (e.g. authentication !).
Spécier clairement les propriétés qu'on assume à chaque étape du
protocôle.
Spécier clairement la raison pour laquelle le cryptage est employé
(condentialité, authentication...)
Faire attention aux variations d'horloges (pour l'éstampillage de temps).
Utiliser des méthodes formelles pour valider la conception du
protocôle !
Catalin Dima
Protocôles de sécurité

Documents pareils