Slides

Transcription

Slides
Protocoles Cryptographiques et Applications
Jean-Michel Fourneau
PRiSM
Université de Versailles
45, Av. des Etats-Unis
F-78000 Versailles
email:[email protected]
1
Terminologie
• Message et Chiffrement : le texte clair M est encrypté (chiffré)
grâce à une clé K pour obtenir un cryptogramme C
C = EK (M )
Celui ci est décrypté, grâce à la même clé, pour retrouver le
texte initial
M = DK (C)
2
• Cryptographie : étude des algorithmes de chiffrement E et D
• Cryptanalyse : étude des moyens de casser un chiffrage
(retrouver M sans connaı̂tre K)
• Stéganographie : cacher un message dans le support d’un autre
message (encre invisible, grille, accentuation, etc).
• Code ou Chiffre : un code remplace des groupes de caractères
ayant une sémantique (mot) par un symbole. Un chiffre
remplace un symbole par un autre symbole
3
Motivation
• Usage premier : Confidentialité (Militaire et Diplomatique)
• Authentification : être certain de l’emetteur
• Intégrité : non altération du message
• Non répudiation : preuve de l’existence du message
Application plus récente : commerce électronique, signature
numérique, droit de propriété.
4
Algorithme ou Clé : qui est secret ?
• Algorithme secret : difficile à conserver, cher, peu validé
ex: RC4 (pour GSM) développé et gardé secret en 87, publié
illégalement sur Internet en 94).
• Clé secrète : la solution usuelle (une ou deux clés K1 , K2 pour
chiffrement et déchifrement)
C = EK1 (M )
et
M = DK2 (C)
5
• La gestion de clés secrètes est un problème difficile
• Consommation importante de ressources,
• Risques d’espionnage classique,
• Nombre élevé de clés pour des communications entre
interlocuteurs multiples (N 2 clés pour N utilisateurs)
• La gestion des clés fait partie des protocoles cryptographiques
6
• Algorithmes symétriques : lorsque la clé de décryptage est la
même (ou se déduit) de la clé de cryptage
Rapide, sûr, n’intègre pas la gestion des clés
ex : DES, IDEA, AES
• Algorithme à clé publique : lorsque la clé de décryptage ne
peut être déduite facilement de la clé de cryptage (qui peut
donc être publique)
Moins sûr, mais peut règler la gestion des clés
ex : RSA
7
Cryptanalyse
Trouver K ou M à partir de C:
Seule la clé est inconnue.
5 types d’attaque :
1. Avec des cryptogrammes uniquement
2. Avec les cryptogrammes et les textes en clair
3. Avec les cryptogrammes et les textes en clair choisis par
l’analyste
4. Avec uniquement des cryptogrammes choisis par l’analyste
5. Vol de clé par protocole (ou autrement...)
8
Sécurité
Pour un algorithme : le temps de casser le chiffre est beaucoup plus
grand que la validité des données
Gravité par ordre croissant
1. Déduction partielle : trouver une partie de la clé ou du message
2. Déduction : déchiffer un message particulier
3. Déduction globale : trouver un algorithme de déchiffrement
sans pour autant connaitre la clé
4. Trouver la clé
9
Complexité
Complexité : le minimum de la complexité en temps CPU, en
mémoire vive et en stockage
Attention à ne pas sous-estimer l’augmentation des vitesses et
capacité dans l’avenir....
10
• Méthode Cryptographique
• Protocole
• Implémentation de la méthode et du protocole
Les trois doivent être sûrs.
La sûreté d’une méthode n’implique pas la sûreté d’un protocole
qui l’emploie.
11
Protocole
• Echange de messages chiffrés en partie ou en totalité
• Réseau transparent
• Assurer un service:
– confidentialité
– signature numérique
– authentification
– intégrité
– preuve
12
Les Personnages des protocoles
Alice, Bob
participants à tous les protocoles
Christine, David
participants supplémentaires
Estelle
Espionne (opposant passif)
Martin
Attaquant (opposant actif)
Ivan
Arbitre (Intègre)
Gatien
Gardien
Patricia
Plaideuse
Victor
Vérificateur
13
Cryptographie à clé privée
• Les clés sont partagées par Alice et Bob mais ne doivent pas
être divulguées
• Comment échanger les clés ?
• Comment assurer la sécurité des clés à long terme ?
14
Principes de base
• Historiquement, caractère par caractère,
• Puis sur la représentation binaire (prise en compte de la taille
du mot machine pour efficacité)
• 2 opérations de base : substitution et transposition
15
Substitution
Permutation de l’alphabet
Avec ajout éventuel de symboles...
• monoalphabétique : la même permutation pour tout le texte
• homophonique : plusieurs possibilités pour remplacer la lettre
• polygram : une permutation pour groupe de lettres
• polyalphabétique : plusieurs permutations possibles. On choisit
en fonction de la position.
16
Exemples
• Monoalphabétique : code de Cesar, on remplace une lettre par
la lettre + 3 mod 26 dans l’alphabet
• Homophonique : Duché de Mantua (1401)
• Polygram : Playfair cypher GB (WWI), groupe de 2 lettres
• Polyalphabétique : Battista (1568), Vigénère (1586), Armée de
l’Union (Guerre civile US), WordPerfect.
17
Cryptanalyse
Problèmes : les caractéristiques statistiques d’une langue (Al Kindi,
XIème siècle)
• la distribution des lettres (et des groupes de lettres) est
caractéristique d’une langue
• elle ne change pas par substitution
Facile à casser en connaissant une partie du texte en clair ou
simplement la langue du texte...
18
Anglais
Statistiques de Beker et Piper, 5 groupes de lettres
1. E : proba de 0.12
2. T,A,O,I,N,S,H,R : proba entre 0.06 et 0.09
3. D et L : proba de 0.04
4. C,U,M,W,F,G,Y,P, B : proba entre 0.015 et 0.023
5. V,K,J,X,Q,Z : proba inférieure à 0.01
19
groupes de lettres
• les 30 digrammes les plus fréquents (par ordre décroissant) sont
TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT,
HA, ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE,
HI, OF.
• les 12 trigrammes les plus fréquents (par ordre décroissant)
sont THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS,
ETH, FOR, DTH.
20
Cryptanalyse du texte
les lettres codées sont en majuscule, les autres en minuscule
YIFQFMZRWQFYVECFMDZPCVMRZWNMDZVEJBTXCDDUMJ
NDIFEFMDZCDMQZKCEYFCJMYRNCWJCSZREXCHZUNMXZ
NZUCDRJXYYSMRTMEYIFZWDYVZVYFZUMRZCRWNZDZIJ
XZWGCHSMRNMDHNCMFQCHZJMXJZWIEJYUCFWDJNZDIR
Exemple tiré du livre de D. Stinson
21
Table empirique
Les lettres absentes du texte sont omises dans le tableau.
B
1
C
15
D
13
E
7
F
11
G
1
H
4
I
5
J
11
K
1
M
16
N
9
P
1
Q
4
R
10
S
3
T
2
U
5
V
5
W
8
X
6
Y
10
Z
30
22
• La lettre la plus fréquente est Z.
• On suppose donc que c’est un e
• Les lettres C,D, F,J, M, R, Y apparaı̂ssent plus de 10 fois.
Elles doivent coder t,a,o,i,n,s,h,r.
• Mais on ne sait pas comment.
• On a 7! permutations au lieu de 26!.
• Les digrammes/trigrammes peuvent encore simplifier l’analyse.
23
Analyse par les digrammes
Les digrammes de la forme -Z ou Z• DZ et ZW apparaissent 4 fois
• WZ n’apparaı̂t pas
• W apparaı̂t peu
W code la lettre d
24
• RW apparaı̂t souvent
• il y a deux digrammes fréquents se terminant par d: ed et nd
• R code la lettre n
• NZ est un digramme fréquent alors que ZN ne l’est pas
• N code la lettre h
25
Voyelles
• le texte ne-ndhe suggère que la lettre manquante est un a
• C code la lettre a
• Après un h, il y a souvent une voyelle, donc M doit être une
voyelle.
• M est la seconde lettre la plus fréquente. Donc M code i ou o
• Comme ai est plus fréquent que ao, M code i
26
Etat actuel du texte
—–iend—–a-i-e-a-inedhi-e——a—ih—–i-ea-i-e-a—a-i-nhad-a-en–a-e-hi-e
he-a-n—–in-i—-ed—e—e-ineandhe-e–
-ed-a–inhi–hai–a-e-i–ed—–a-d–he–n
27
• o est une lettre fréquente
• elle correspond à D, F, J ou Y.
• il y a des trigrammes aFi ou aJi (mais aoi est un trigramme
rare)
• Y code o
28
• Les trois lettres fréquentes restantes sont D,F,J
• Elles doivent coder r, s, t
• Commencer à faire des hypothèses sur le texte
29
Etat actuel du texte
Avec les lettres identifiées (?) et les lettres fréquentes non
identifiées
o-F-Fiend-Fo–aFiDe-a-inedhiDe–J—aDD-iJ
hD-F-FiDeaDi-e-a-oFaJionhadJa-en–a-e-hi-e
he-aDnJ-oo-in-i-o-FedDo-e-oFe-ineandheDeJJ
-ed-a–inhiD-haiF-a-eJi-Jed–Jo-aFdDJheD-n
A vous de finir...
30
Eliminer les fréquences
• Homophonique : plusieurs symboles pour coder la même lettre
de manière à ce que bcp de symboles soient équiprobables
• Ce qui ne règle pas le probleme des digrammes
1. digrammes fréquents
2. digrammes rares
3. digrammes obligatoires : une lettre est toujours suivie par la
même (en Français, q est toujours suivi par u)
31
Changer la substitution
Les lettres de la clé permettent de changer la subsitution
• Périodiquement (code de Vigénère)
• sans période si la clé est plus longue que le message (clé très
longue : livre)
32
Vigénère
• Soit K la clé et k sa longueur
• Considérons le caractère d’indice i du message
• Il est codé par un code de substitution à décalage dont la
première lettre est celle de K(i mod k)
• Version arithmétique plus simple : ajouter la valeur du
caractère du message à celle du caractère de la clé
33
Exemple
• K=cle, k=3, version numerique (2,11,4)
• texte = cryptography
• version numérique en clair (2,17,24,15,19,14,6,17,0,15,7,24)
• version numérique chiffrée (4, 2, 2, 17, 4,18,8,2,4,17,18,2)
• cryptogramme = ECCRESICERSC
34
Avantage et inconvénients
• Attaque force brute : 26k (pour générer toutes les clés de
longueur k)
• Une meilleure répartition des fréquences de lettres.
• Difficile à applique à l’époque (16ème siècle)
• A fini par s’imposer mais a été rapidement cassé (Babbage,
Kasiski) même si c’est resté secret..
• Faiblesse : longueur faible des clés.
35
Cryptanalyse du code de Vigénère
En devinant la longueur de la clé k.
Les caractères à distance k sont codés par la même substitution.
On commence avec une clé de longueur l = 2
1. Pour chaque valeur i de 1 à l :
(a) on calcule la table de fréquence (fj ) des caractères d’indice
congru à i modulo l
!25
(b) on calcule l’indice de coincidende Ii = j=0 fj2
2. d’après des mesures statistiques, en Anglais, I vaut 0.065
3. si les caractères sont uniformes, I vaut 0.038
4. si toutes valeurs de Ii sont proches de 0.065 on a deviné la
longueur de la clé, sinon on recommence avec l + 1
36
Autre Attaque
• Deux fragments identiques du texte sont codés de la même
façon si leur distance est congrue à 0 modulo k.
• Inversement, si on trouve des paires de segments identiques de
longueur au moins 3, il est probable (mais pas sûr) qu’ils
viennent de segments identiques.
• On cherche les distances entre ces segments.
• On cherche les diviseurs communs de ces distances.
• La longueur de la clé est presque surement un de ces diviseurs.
• On vérifie avec l’indice de coincidende.
37
Exemple
• Clé de longueur 8 : (1, 2, 3, 7, 10, 11, 20, 4)
• Texte : Crypto, (2, 17, 24, 15, 19, 14)
• Il est en position 3, 37, 75 et 107
• En position 3, il est codé par (5, 24, 8, 0, 13, 18).
• En position 37, il est codé par (12, 2, 18, 19, 20, 16) . On ne
retrouve pas le segment.
• En position 75, il est codé par (5, 24, 8, 0, 13, 18). On retrouve
le segment. Distance=72.
• En position 107, il est codé par (5, 24, 8, 0, 13, 18). On retrouve
le segment. Distance=104.
• Pgcd(72,104)=8=longueur de la clé.
38
Et ensuite
• Travailler sur les populations codées avec la même substitution
et se souvenir qu’un s’agit d’un décalage (il suffit de trouver la
lettre la plus fréquente pour trouver toute la permutation)
• Trouver la clé en analysant les index mutuels de coincidence
39
Permutation
• Modifier la position des lettres
• Exemple simple : écrire le texte horizontalement et le lire
verticalement.
• En prenant 4 colonnes, le mot :
c
r
y
p
t
o
g
r est codé
a p
h y
CTAROPYGHPRY
• Ca ne change pas la statistique des lettres
40
Cryptographie conventionnelle
• Idées de base
• DES
• IDEA
• Blowfish
• AES
41
Principes de base
• Historiquement : produit de permutations et de substitutions
• Actuellement : produit d’un principe de diffusion et d’un
principe de confusion (Shannon)
42
Diffusion
• La structure statistique du message doit être moindre dans le
cryptogramme
• Comment : chaque bit du cryptogramme est affecté par bcp de
bits du message et chaque bit du message affecte bcp de bits du
cryptogramme
!k
• Exemple : yn = i=1 mn+i mod 26
la caractéristique statistique du message composé des mi est
atténuée par la moyenne (principe du théorème central limite)
43
Comment faire
• Répéter itérativement une permutation des bits et une
transformation
• Bien choisir la permutation pour avoir une diffusion totale
• Bien choisir le nombre d’itérations pour avoir une diffusion
totale
44
Confusion
• Par construction, le cryptogramme est un mélange complexe de
la clé et du message
• Comment résister à une attaque où le texte en clair est en
partie connu ?
• Confusion : faire en sorte que le texte en clair et le
cryptogramme ne livre pas d’information sur la clé.
45
Data Encryption Standard
• DES
• A partir d’un produit IBM, LUCIFER (73)
• Modifié par la National Security Agency (NSA)
• Modifications non commentées...
• Standard pour les applications non classifiées depuis 77
46
Description simple
• DES chiffre un bloc de texte de 64 bits pour produire un
cryptogramme de 64 bits
• K la clé est de 56 bits.
• 3 étapes :
1. permutation sur les bits
2. 16 itérations (ou tours ou rondes) d’une fonction
3. permutation inverse de la permutation d’entrée
47
Itération
Le mot de 64 bits est divisé en deux parties L et R. i est l’indice
d’itération
• Li = Ri1
• Ri = Li−1 ⊕ f (Ri−1 , Ki )
où f est une fonction et Ki est une chaı̂ne de 48 bits extraite
de K.
48
fonction f (A, J)
• Le premier argument de f a 32 bits
• Le second, 48 bits
• Le résultat a 32 bits
• La première étape étend le premier argument pour l’amener à
48 bits. (16 bits sont dupliqués) Soit E l’argument étendu.
49
• On calcule E ⊕ J et on le découpe en 8 groupes de 6 bits
b1 b2 b3 b4 b5 b6 .
• On utilise 8 boites Si distinctes.
Une boite Si a toujours 6 entrées et 4 sorties (Ci : 4 bits)
• L’ensemble des Ci forme une mot de 32 bits
• On permute ce mot pour obtenir f (A, J).
50
Boite Si
• Une boite 4 × 16 d’entiers
• b1 b2 b3 b4 b5 b6 est décomposé :
– b1 b6 est un entier entre 0 et 3 qui représente l’indice r de la
ligne de Si
– b2 b3 b4 b5 est un entier entre 0 et 15 qui représente l’indice c
de la colonne de Si
• On rend Si (r, c)
51
Boite S1
14
4
13
1
2
15
11
8
3
10
6
12
5
9
0
7
0
15
7
4
14
2
13
1
10
6
12
11
9
5
3
8
4
1
14
8
13
6
2
11
15
12
9
7
3
10
5
0
15
12
8
2
4
9
1
7
5
11
3
14
10
0
6
13
52
La controverse
• Validation et modification par la NSA
• Espace des clés trop petit : attaque Brute-Force possible
• Conception des boites Si : les boites S laissent-elle fuir une
information statistique ?
ie : de la même façon qu’un chiffre monoalphabétique laisse
passer la fréquence des lettres dans une langue
53
Analyse d’une boite
• Cryptanalyse différentielle
• Attaque à texte clair choisi
• Comparaison entre le XOR de deux textes clairs et le XOR des
cryptogrammes
• Attaque efficace pour des variantes à moins de 16 tours.
54
Pourquoi le XOR
• Entrée de la boite : E ⊕ J
• (E1 ⊕ J) ⊕ (E2 ⊕ J) = E1 ⊕ E2
• Le XOR des entrées de la boite de dépend pas de la clé J
• Par contre la sortie doı̂t en dépendre
55
Exemple avec S1
• Considérons tous les couples dont le XOR vaut 110100 (valeur
quelconque)
• Il y en a 64
• Pour chaque couple on calcule les deux sorties,
• On en fait le XOR
• On calcule la table d’occurence
56
valeur
fréqence
valeur
fréquence
0000
0001
0010
0011
0100
0101
0110
0111
0
8
16
6
2
0
0
12
1000
1001
1010
1011
1100
1101
1110
1111
6
0
0
0
0
8
0
6
Conclusion : la table est loin d’être uniforme....
57
Cryptanalyse différentielle 1 ronde
Sur un exemple
• Supposons deux textes E1 et E1∗ dont le XOR est 110100
• Supposons que le XOR des deux sorties soit 1101
• D’après la table, il y a 8 possibilités pour les couples
(E1 ⊕ J, E1∗ ⊕ J).
• On trouve donc un ensemble de 8 valeurs possibles pour J
(fragment de la clé).
58
• En combinant avec une autre paire de textes E2 et E2∗
vérifiant les mêmes hypothèses, on trouve un autre ensemble
pour J
• J est dans l’intersection des deux ensembles. J est assez vite
trouvé...
• On procède ainsi pour toutes les boites. Ce qui donne tous les
fragments de la clé
• La redondance entre les différents Ji permet d’aller plus vite
59
Modes Opératoire de DES
• Electonic Code Book (ECB)
• Cipher Block Chaining (CBC)
• Cipher Feedback (CFB)
• Output Feedback (OFB)
60
Mode ECB
• Chaque bloc de 64 bits est chiffré indépendement des autres
blocs
• Le même bloc de texte produit toujours le même cryptogramme
• Usage : envoi de messages courts
• Faiblesse en cas de messages longs en présence de répétition
61
P2
P1
K
K
DES!E
C1
K
DES!E
C2
C1
DES!D
C2
K
P2
P1
Decodage
Encodage
Figure 1: Mode ECB
62
DES!D
Mode CBC
• L’input de l’algorithme est le XOR (sur 64 bits) du message
actuel et du cryptogramme précédent (chainage)
• Mode usuel de transmission de messages longs
• Le même bloc de texte ne produit pas le même cryptogramme
(ça dépent de tout le passé)
• Il faut une initialisation pour l’opération sur le premier bloc de
texte. Cette initialisation doit être protégée (avec le même
niveau que la clé)
63
P1
C1
P2
C2
XOR
DES
DES
K
K
DES
DES
P1
XOR
C2
C1
P2
Decodage
Encodage
Figure 2: Mode CBC
64
Mode CFB
• Pour opérer en mode Stream pluto qu’en Block
• Les messages ont j bits (en général 8)
• Ils sont cryptés par un XOR avec une chaine construite par
DES en chainage
65
Init
K
Shift
K
DES
DES
garder j bits
garder j bits
en rejeter 64-j
en rejeter 64-j
XOR
XOR
P1
C1
P2
Figure 3: Mode CFB
66
C2
Mode OFB
• Comme CFB mais l’input pour l’algorithme de chiffrement est
le bloc sorti précédemment.
• Usage : transmission au dessus d’un canal bruité, par exemple
des satellites
• Une erreur de transmission sur un bloc transmis ne se propage
pas dans le déchiffrement aux blocs suivants (à l’inverse du
mode CFB)
67
P1
P2
XOR
XOR
DES
DES
K
K
C2
C1
Figure 4: Mode OFB
68
Triple DES
• 3 passages : EK1 DK2 EK3
• Compatible avec simple DES si K3 = K2
• Clé de 168 bits
69
IDEA
International Data Encryption Algorithm
Principes:
• Clé longue pour éviter attaque Brute-Force : 128 bits.
• Confusion : rendre le mélange entre clé et texte plus complexe
que dans DES
• Diffusion : chaque bit du texte ou de la clé doit influencer tous
les bits du cryptograme
• Blocs de 64 bits
70
Confusion
Opérations sur des mots de 16 bits : entiers non signés
• XOR
• Addition d’entiers modulo 216
• Multiplication d’entiers modulo 216 + 1
71
• Pas de distributivité entre opérations différentes
a ∗ (b $ c) = a ∗ b $ a ∗ c
• Pas d’associativité entre opérations différentes
a ∗ (b $ c) = (a ∗ b) $ c
Beaucoup plus difficile à analyser que simplement des XOR
72
Diffusion
• A cause des opérations de multiplication/addition (pour
produire G1 et G2 à partir des sous clés Z et des entrées F1 et
F2 .
G1 = (F1 × Zi ) + (Zj × (F2 + (F1 × Zi )))
G2 = (Zj × (F2 + (F1 × Zi )))
• Equations testées exhaustivement pour vérifier la diffusion.
73
Bloc multiplicatif additif
F1
F2
Zi
Zj
G2
G1
Figure 5: Ronde d’IDEA
74
Chiffrement
• 8 rondes de même structure mais avec des sous clés différentes
• Le bloc de 64 bits est divisé en 4 mots de 16 bits
• Une transformation finale pour rendre le déchiffrage identique
au chiffrage
75
X1
X2
X3
X4
Z3
Z1
Z2
Z4
Z5
Z6
Figure 6: Ronde d’IDEA
76
Blowfish
Caractéristiques
• Rapide : 18 cycles par octet sur un processeur 32 bits apreès
initialisation
• Compact : moins de 5K de mémoire
• Simple à implémenter et à étudier
• Clé de taille variable (jusqu’à 448) pour plusieurs types de
sécurité
• Aucune faiblesse connue
77
Clé et sous clé
• Clé : de 32 bits à 448 bits divisés en mots de 32 bits
• Utilisés pour générer 18 sous clés de 32 bits et 4 boites S 8 × 32
• Chaque boite S contient 1024 mots de 32 bits
• Les mots de la clé sont stockées dans le tableau K(j), les sous
clés dans P (i)
78
Boite S
• Elles dépendent de la clé...
• Elles sont vues comme des vecteurs à 256 entrées.
• Si,j : indice j de la boite i (j=0..255)
• Phase d’initialisation importante
• Cette étape rend la méthode peu utilisable si on change
fréquement les clés (latence importante)
79
Génération des boites S
1 Initialiser P (i) et les boites avec π.
2 Pour mettre à jour P, faire un XOR du tableau P avec le tableau
K en réutilisant K de manière circulaire si les tailles ne sont
pas les mêmes.
3 Chiffrer un bloc de 64 bits à 0 en utilisant P et les boites S
4 Remplacer P (1) et P (2) par le résultat
80
5 Chiffrér ce bloc résultat en utilisant P et les boites S (attention,
P a été modifié)
6 Remplacer P (3) et P (4) par le résultat
7 Continuer ainsi pour remplacer les éléments du tableau P puis
les éléments des quatre boites S
Il faut donc 521 itérations pour initialiser P et les quatre boites S.
81
Opérations utilisées
• Addition modulo 232
• XOR : ou exclusif (⊕)
• Ces deux opérations ne commutent pas, ce qui rend la
cryptanalyse difficile
82
Algorithme
LE et RE sont les deux mots de 32 bits.
LE0 RE0 est le message
LE17 RE17 est le cryptogramme
1. for I=1 to 16 do begin
(a) REi = LEi−1 ⊕ Pi
(b) LEi = F (REi ) ⊕ REi−1
2. end
3. LE17 = RE16 ⊕ P18
4. RE17 = LE16 ⊕ P17
83
fonction F
• L’argument de F est un mot de 32 bits
• On le divise en 4 octets abcd.
• F (a, b, c, d) = ((S1,a + S2,b ) ⊕ S3,c ) + S4,d
84
Déchiffrer
LD0 RD0 est le cryptogramme
LD17 RD17 est le message
1. for I=1 to 16 do begin
(a) RDi = LDi−1 ⊕ P19−i
(b) LDi = F (RDi ) ⊕ RDi−1
2. end
3. LD17 = RD16 ⊕ P1
4. RD17 = LD16 ⊕ P2
Même algorithme que pour le chiffrement mais sous-clés dans
l’ordre inverse
85
Comparaison de Vitesse
Pentium, en C
Algorithme
Tic/Ronde
Rondes
Cycle/octet
Blowfish
9
16
18
DES
18
16
45
IDEA
50
8
50
Triple DES
18
48
108
86
AES
• Advanced Encryption Standard
• Appel International (vainqueur équipe Pays-Bas)
• Approche différente (pas Feistel)
• A voir en projet
87
Arithmétique
• Pour Crypto...
• On emploie des fonctions faciles à calculer et difficiles à
inverser.
• Elles reposent souvent sur la théorie des nombres.
• Problème typique : partant de deux nombres premiers il est
facile de les multiplier mais il est difficile de décomposer le
produit obtenu en nombres premiers.
• Manipulation de grands nombres.
• Approche alternative (peu employée) : problème combinatoire.
88
Concepts de base
On travaille sur les entiers...
• p est premier si ses seuls diviseurs sont 1 et lui même.
• p1 , p2 ,..., pn nombres premiers.
• Ils sont infinis.
• Factorisation unique d’un entier sur ses diviseurs premiers :
a=
"
pai i
i
89
• c = pgcd(n, q) plus grand commun diviseur de n et q
• En utilisant les factorisations en nombres premiers :
ck = min(nk , qk )
• q et n sont premiers entre eux ssi pgcd(n, q) = 1 (ou encore si
les factorisations n’ont que 1 comme facteur commun).
90
Arithmétique modulaire
• Division Euclidienne de a par b:
• On obtient un quotient q et un reste r (0 ≤ r ≤ b − 1).
a=q×b+r
• a mod b est défini par le reste r de la division Euclidienne.
91
3 Propriétés
• ((a mod n) + (b mod n)) mod n = (a + b) mod
• ((a mod n) − (b mod n)) mod n = (a − b) mod
• ((a mod n) × (b mod n)) mod n = (a × b) mod
L’exponentiation est obtenue par des produits successifs.
92
Addition mod 6
+ 0
1
2
3 4
5
0
0
1
2
3 4
5
1
1
2
3
4 5
6
2
2
3
4
5 0
1
3
3
4
5
0 1
2
4
4
5
0
1 2
3
5
5
0
1
2 3
4
(1)
Permet de définir un élément neutre 0 et un inverse pour l’addition
93
Multiplication mod 6
× 0
1
2
3 4
5
0
0
0
0
0 0
0
1
0
1
2
3 4
5
2
0
2
4
0 2
4
3
0
3
0
3 0
3
4
0
4
2
0 4
2
5
0
5
4
3 2
1
(2)
Il y a un élément absorbant 0, un élément neutre 1 mais il n’y a pas
un inverse unique pour chaque nombre.
94
Si p est premier, alors (Zp , +, ×) est un corps.
Ou plus simplement, dans l’arithmétique modulo p (avec p
premier), il y a exactement un inverse (pour la multiplication) pour
chaque entier.
95
Multiplication mod 7
× 0 1
2
3
4 5
6
0
0 0
0
0
0 0
0
1
0 1
2
3
4 5
6
2
0 2
4
6
1 3
5
3
0 3
6
2
5 1
4
4
0 4
1
5
2 6
3
5
0 5
3
1
6 4
2
6
0 6
5
4
3 2
1
96
(3)
Quelques Théorèmes
Théorème 1 (Petit Théorème de Fermat) Si p est un nombre
premier et si a est un nombre non divisible par p, alors
ap−1 = 1 mod p
Théorème 2 (Euler) Pour tout a et n qui sont premiers entre
eux, on a :
aφ(n) = 1 mod n
où φ(n) est la fonction totient d’Euler, cad le nombre d’entiers plus
petits que n et premiers avec n.
Les deux théorèmes permettent de définir les logarithmes discrets
97
Logarithmes discrets
• p : nombre premier.
• a : Racine primitive de p : les puissances successives de a
modulo p donnent les nombres entre 1 et p − 1.
• Donc pour tout b entre 1 et p − 1, il y a un unique i inférieur à
p tel que ai = b.
• i est le logarithme discret de b dans la base a.
98
Propriétés de la fonction totient d’Euler
• Si n est premier, alors φ(n) = n − 1.
• Si n = pq avec p et q premiers alors φ(n) = (q − 1)(p − 1)
(Base du protocole RSA).
99
Calcul d’un inverse
Pour la multiplication...
• Repose sur l’algorithme d’Euclide étendu
• Algorithme d’Euclide de base : calcul récursif de pgcd(r0 , r1 )
pgcd(r0 , r1 ) = pgcd(r1 , r0 mod r1 )
On suppose que r0 ≥ r1 .
• soit qi la suite des quotients de la division Euclidienne
r0 = q 1 r1 + r2
r1 = q 2 r2 + r3
Arrèt lorsque le reste est nul. Soit m cette étape. Le pgcd est
l’avant dernier reste.
100
Exemple Euclide
• pgcd(1200,126)=pgcd(126,66)
• pgcd(126,66)=pgcd(66,60)
• pgcd(66,60)=pgcd(60,6)
• pgcd(60,6) = pgcd(6,0)
• Donc le pgcd est 6.
101
Algorithme Etendu d’Euclide
• Construisons la suite ti
t0 = 0, t1 = 1 tj = tj−2 + qj−1 ∗ tj1
• Théorème 3 Pour tout j on a rj = tj r1 mod r0
• Corollaire 1 Si le pgcd de r0 et rm−1 est 1 alors tm−1 est
l’inverse de r1 modulo r0 (m est l’indice où stoppe l’algo
d’Euclide).
102
Euclide(b,n) retourne le quotient et le reste de la division
Euclidienne de b par n.
1. n0:=n; b0:=b;t0:=0;t:=1; (q,r):=Euclide(b0,n0);
2. tant que r > 0 faire :
(a) te:=t0-q*t;
(b) si te > 0 alors te:=te mod n sinon te:=n-((-te) mod n);
(c) t0:=t; t:=te; n0:=b0;b0:=r;
(d) (q,r):=Euclide(b0,n0);
3. si b0 (= 1 alors b n’a pas d’inverse modulo n
4. sinon l’inverse de b est t dans l’arithmétique modulo n
103
Exemple
On recherche l’inverse de 13 dans l’arithmétique modulo 97.
n0
b0
q
r
t0
t
97
13
7
6
1
90
13
6
2
1
90
15
6
1
6
0
L’inverse de 13 est 15. (13*15=195=2*97+1)
104
Théorème Chinois des residus
Chinese Remainder Theorem
• Décomposer un nombre en fonction de ses résidus selon une
série de nombres deux à deux premiers entre eux
• Et construction inverse (bijection)
• Compatible avec les opérations arithmétiques (+, −, ×)
• Utile pour faire des opérations arithmétiques rapides sur des
grands nombres (100 à 150 chiffres)
105
Formulation Mathématique
• Soit (m1 , ..., mk ) une séquence de nombre deux à deux premiers
entre eux.
#k
• Soit M = i= mi
Théorème 4 (Chinese RT) Tout nombre A inférieur à M peut
être représenté de façon unique par le vecteur (ai , .., ak ) où
ai = A mod mi
A=
$
∀i
ai (Mi (Mi−1 mod mi )) mod M
i
Notation : A *→ (a1 , .., ak )
106
avec
Mi =
M
mi
Exemple
• Représenter 973 en fonction de 37 et 49
• 37 et 49 sont premiers entre eux
• 973 mod 37 = 11 et 973 mod 49 = 42
• 973 *→ (11, 42)
• M1 = 49 et M2 = 37,
• L’inverse de M1 en aritmétique mod 37 est : M1−1 = 34
• L’inverse de M2 en aritmétique mod 49 est : M2−1 = 4
• 11 ∗ 49 ∗ 34 + 42 ∗ 37 ∗ 4 = 18326 + 6216 = 24542 et
24542 mod (37 × 49) = 973.
107
Compatibilité
• (A + B) mod M *→ ((a1 + b1 ) mod m1 , ..., (ak + bk ) mod mk )
• (A − B) mod M *→ ((a1 − b1 ) mod m1 , ..., (ak − bk ) mod mk )
• (A × B) mod M *→ ((a1 × b1 ) mod m1 , ..., (ak × bk ) mod mk )
108
Exemple de Multiplication
Avec la décomposition sur 37 et 49 (1813 = 37 × 49)
• Calculer c = 451 × 973 mod 1813
• 973 *→ (11, 42), 451 *→ (7, 31)
• C *→ (11 × 7 mod 37, 42 × 31 mod 49) = (3, 28)
• C = 3 ∗ 49 ∗ 34 + 28 ∗ 37 ∗ 4 mod 1813 = 77
109
Cryptographie à clé Publique
2 clés :
• une clé de cryptage : publique
• une de déchiffrement : privée
Motivation :
• Pour répondre au problème de gestion des clés
• Pour des applications nouvelles (signature numérique, droit
d’auteur, marquage de propriété)
110
Propriété Fondamentale
Il est difficile de calculer la clé de déchiffrement connaissant la clé
de cryptage et l’algorithme de cryptage.
Propriété de Symétrie (pas toujours) :
N’importe laquelle des deux clés peut être employés pour le
chiffrement, la seconde sert pour le déchiffreemnt (voir par exemple
RSA)
111
Fonctionnement
• Chaque utilisateur génère une paire de clés pour le cryptage et
le déchiffrement.
• La clé de cryptage est rendue publique, l’autre est gardée
privée.
• Alice chiffre le message pour Bob avec la clé publique de
Bob et lui envoie.
• Bob reçoit le message et le déchiffre avec sa clé privée.
112
RSA
Rivest, Shamir, Adelman
• Codage de blocs considérés comme des entiers.
• La valeur d’un bloc est inférieure à n.
• Chiffrement de M, clé publique (e, n)
C = M e mod n
• Déchiffrement, clé privée (d, n)
M = C d mod n = M ed mod n
113
Contraintes
1. Il est possible de trouver (e, d, n) tel que M ed = M mod n
pour tout M < n
2. Il est simple de calculer X e et X d pour tout X < n
3. Il est très difficile de calculer d connaissant n et e.
114
Algorithme RSA
• p et q deux nombres premiers (privés, choisis)
• n = pq (public)
• e premier avec (p − 1)(q − 1) (e est public)
• d calculé par de = 1 mod (p − 1)(q − 1) (d est privé)
115
Base mathématique
Théorème 5 (Euler) Soit p et q deux nombres premiers, posons
n = pq, alors pour tout m < n et tout k positif on a
mk(p−1)(q−1)+1 = m mod
n
Propriété 1 (inversibilité dans l’arithmétique modulaire)
ed = 1 mod z a une solution si e est premier avec z (d est
également premier avec z).
116
Exemple Simple - Parametres
• p = 3, q = 11 (choisis)
• n = 33 (calculé)
• e = 3, (choisi parmi les nombres premiers avec 20 (i.e.
(3 − 1)(11 − 1) )
Les choix possibles sont dans {3, 7, 9, 11, 13, 17, 19}.
• d = 7 (calculé) (3 ∗ 7 = 21 = 1 mod
20)
Les autres choix pour (e, d) sont (19, 19), (11, 11), (9, 9), (13, 17).
117
Exemple d’application
• M = 30
• C = 303 mod 33 = 27000 mod 33 = 6
• C 7 mod 33 = 67 mod 33 = 279936 mod 33 = 30
118
Aspects Calculatoires
• Propagation du modulo pour éviter de calculer des nombres
très grands
((a mod n)(b mod n)) mod n = ab mod n
• Pour calculer ae , inutile de faire e produits (e est grand)
• On décompose e selon les puissances de 2
e=
k
$
bi 2i
i=0
et algorithme adapté (page suivante)
119
Elevation à la puissance
de
!k
bi 2 i
=
d
=
#k
d bi 2
=
#k
d2
i=0
i=0
i=0
bi =1
120
i
i
Algorithme
1. if b0 =1 then r:=d else r:=1;
2. for i:=1 to k do begin
(a) d:=d*d mod n;
(b) if bi =1 then r:=r*d mod n;
3. end;
4. return r;
121
Génération de clés
• n est public. Donc p et q doivent être grands pour que la
factorisation soit difficile.
• Déterminer un grand nombre premier de façon sure est difficile.
• Méthode probabiliste :
1. Choisir aléatoirement un grand nombre impair n, pos =0;
2. Choisir a entier aléatoire inférieur à n
3. Faire le test probabiliste de primalité (Rabin et Miller) On
va voir cela plus tard.
4. si le test rate, aller en 1;
5. sinon pos+=1;
6. si pos ≥ Seuil accepter n sinon aller en 2. si le nombre de
tests positifs est suffisant accepter n
122
Sécurité
3 problèmes :
• Factorisation de n en nombre premiers.
• Déterminer directement (p − 1)(q − 1)
• Déterminer directement d
La première solution semble la plus rapide.
123
Factorisation en nombres premiers
Le problème ne semble pas si dur....
• première clé cassée en 91 (332 bits, 7Mips-Year, Algorithme de
crible quadratique)
• amélioration en puissance de calcul et en algorithmique
• 1994 : clé de 428 bits, 5000 Mips Year, Crible Quadratique
• 1996 : clé de 431 bits, 500 Mips-Year, Crible général sur corps
numérique
• en 99, une clé de 512 bits a été cassée (voir INRIA)
124
Dangers
Le partage de n entre plusiers utilisateurs est dangereux même si
chaque utilisateur a un couple (ei , di ) distinct.
• Supposons qu’Alice et Bob chiffre le même message et
qu’Estelle écoute.
• Estelle a noté CA = M eA mod n et CB = M eB mod n et elle
connaı̂t eA et eB .
• Supposons que eA et eB soient premiers entre eux (vrai en
général).
• Il existe r et s entiers tel que reA + seB = 1.
r s
• Estelle calcule CA
CB = M reA +seB = M
Le message est décrypté.
125
Autres Algorithmes
• Se ramener à un probleme difficile d’optimisation combinatoire
• Courbes Elliptiques (Projet)
• Logarithmes discrets
126
Construction d’une clé partagée
• Algorithme de Diffie et Hellman
• Alice et Bob veulent construire une clé partagée qui reste
secrete.
• Repose sur les logarithmes discrets
• Relativement facile à calculer et difficile à inverser.
127
Logarithmes discrets
• p : nombre premier.
• a : Racine primitive de p : les puissances successives de a
modulo p donnent les nombres entre 1 et p − 1.
• Donc pour tout b entre 1 et p − 1, il y a un unique i inférieur à
p tel que ai = b.
• i est le logarithme discret de b dans la base a.
128
Algorithme
1 Alice et Bob se mettent d’accord de façon visible sur deux
grands nombres n premier et g racine primitive de n
2 Alice choisit aléatoirement un grand nombre x (512 bits par
exemple) qui reste privé
3 Bob faı̂t de même en choisissant y
4 Alice envoie à Bob (n, g, g x mod n)
5 Bob répond g y mod n
129
suite de Diffie et Hullman...
6 Alice calcule (g y mod n)x modn = g xy mod n
7 Bob calcule (g x mod n)y modn = g xy mod n
8 Alice et Bob partagent la connaissance de g xy mod n
9 Estelle a pu écouter (n, g, g x mod n, g y mod n) mais ne peut en
déduire facilement g xy mod n
130
Preuve de 6 et 7
Pour Alice:
• 3ème propriété de l’arithmétique modulaire
((a mod n) × (b mod n)) mod n = (a × b) mod n
• Par récurence sur x on obtient
(g y mod n)x mod n = g xy mod n
La preuve est identique pour Bob.
131
Exemple Diffie Hellman
• On choisit n = 97
• On recherche une racine primitive de 97. 5 est solution.
• Alice génère le nombre 36, et Bob 58.
• Alice calcule 536 mod 97 = 50. Bob calcule 558 mod 97 = 44.
• La clé partagée est 75
132
Attaque du passeur de seau
Martin intercepte et modifie les messages entre Alice et Bob
Alice
message
n,g,g
x
Martin
message
Bob
mod n
−→
n,g,g z mod n
−→
g y mod n
g
z
←−
mod n
←−
Alice utilise g xz mod n pour discuter avec Martin en croyant que
c’est Bob.
Bob utilise g zy mod n pour discuter avec Martin en croyant que
c’est Alice.
133
Authentification
• Alice et Bob communique en étant sûr de l’identité de leur
interlocuteur.
• Le contenu du message peut ne pas être secret.
134
Liens avec la Cryptographie
• La gestion de Clés est une activité relevant de la Cryptographie.
• Posséder une clé ou Monter que l’on a une clé permet de
s’identifier.
• Protocole...
• Il faut de la Crypto sure mais ce n’est pas suffisant.
• Stockage sécurisé des clés.
135
Contenu
• Cryptographie Symétrique
• Cryptographie Non Symétrique
• Attaque du Protocole (attention ce n’est pas une attaque de la
fonction cryptographique support)
– Rejeu
– Attaque par reflexion
• Défense
136
Avec clé secrete partagée KAB
Alice et Bob savent calculer de grands nombres aléatoires R
Alice
message
Bob
Alice
calcul R2
−→
calcul R1
Bob,R1
←−
KAB (Bob,R1)
−→
Bob est sûr
R2
−→
KAB (R2)
Alice est sûre
←−
137
Simplification ?
3 messages au lieu de 5
Alice
message
Bob
calcul RA
Alice,RA
−→
calcul RB
RB,KAB (RA)
Alice est sûre
←−
KAB (RB)
←−
138
Bob est sûr
Faille de Sécurité
• Si Bob peut recevoir plusieurs demandes en parallèle,
• Attaque par reflexion,
• Bob fournit lui même la réponse.
• Le chiffrage n’est pas cassé mais l’authentification est fausse.
139
Attaque par reflexion
Martin 1
message
Bob
message
Alice,R1
−→
RB,KAB (R1)
←−
RB est aussi connu de Martin 2
Alice,RB
←−
RB2,KAB (RB)
−→
KAB (RB)
−→
Bob croı̂t que Martin 1 est Alice.
140
Martin 2
Pour contrer
• L’initiateur doit prouver qui il est avant qu’on lui donne une
donnée sensible.
• Une valeur chiffrée est une donnée sensible puisqu’elle prouve
que l’on connait la clé.
• L’initiateur et l’interlocuteur doivent avoir des clés différentes
pour prouver leur identité.
• Les nombres aléatoires ne doivent pas être sur le même
ensemble (par exemple pair, impair).
• Les nombres aléatoires ne doivent pas être prédits.
141
Centre de Distribution de Clés
Pour éviter l’augmentation quadratique du nombre de clés
• Avoir confiance dans le CDC.
• Une clé secrete partagée avec le CDC pour chaque site.
• Croissance linéaire du nombre de clés.
• Sécurisation des clés sur le CDC : casser un CDC permet de
gagner toutes les clés...
142
Grenouille à bouche géante
KA clé d’Alice connue seulement d’elle et du CDC
KB clé de Bob connue seulement de lui et du CDC
• Alice envoie au CDC le nom de son interlocuteur Bob et une
clé nouvelle de session Ks . Le message est chiffré par KA .
• Le CDC décode, reconnaı̂t Alice, grâce à l’emploi de KA ,
• Le CDC envoie un message à Bob chiffré par KB . Ce message
contient le nom Alice et la clé de sessions Ks
• Bob reçoit, et croit le CDC
Alice et Bob partage la clé de sesions Ks .
143
Attaque en Rejouant
Alice : Entreprise
Bob : Banque d’Alice
Martin : Fournisseur d’Alice
Martin exécute un travail pour Alice. Alice donne l’ordre à Bob de
payer Martin. Martin observe les messages et les enregistre.
Alice et Bob partagent une clé secrete Ks .
Martin va provoquer une erreur sans pour autant connaı̂tre la clé.
144
Alice
message
Bob
message
Martin
Ks (M artin,1000000F r)
−→
Ce message est enregistré par Martin
Ks (M artin,1000000F r)
←−
Ks (M artin,1000000F r)
←−
Ks (M artin,1000000F r)
←−
Ks (M artin,1000000F r)
←−
A chaque envoi par Martin du message, Bob crédite son compte.
145
Sécurité et Rejeu
Marquer les messages par une horloge ou une étiquette.
Problèmes :
• Comment faire une horloge commune sur un réseau ?
• Voir chapitre sur Horodatage Sécurisé.
• Bob doit tout garder en mémoire.
• En cas de perte, Bob devient vulnérable.
146
Echanger des Etiquettes
• L’étiquette est envoyée cryptée
• POur confirmer la reception et monter l’authentification, il faut
prouver qu’on l’a déchifrée sans l’envoyer en clair.
• Appliquer une fonction f sur la version en clair puis rechiffrer
le résultat.
• On calcule EK (f (DK (EK (Label)))).
• EK (f (DK )) ne doit pas être prédictible.
147
Needham-Schroeder
KA et KB sont les clés respectives de Alice et Bob avec le CDC.
Ks est une clé de session généré par le CDC.
Ri : nombre aléatoire.
148
CDC
message
Alice
message
Bob
R1 ,A,B
←−
KA (R1 ,B,Ks ,KB (A,Ks ))
−→
Alice garde Ks et KB (A, Ks )
KB (A,Ks ),Ks (R2 )
−→
Bob garde Ks et déchiffre R2
Ks (R2 −1),R3
←−
Ks (R3 −1)
−→
149
Otway et Rees
Mêmes notations que pour Needham et Schroeder
1. Alice envoie à Bob le message :
Alice, Bob, R, KA (Alice, Bob, R, RA )
2. B envoie au CDC
Alice, KA (Alice, Bob, R, RA ), Bob, KB (Alice, Bob, R, RB )
3. le CDC envoie à Alice KA (RA , Ks )
4. le CDC envoie à Bob KB (RB , Ks )
150
Remarques
• R reçu deux fois par le CDC, chiffrés par les deux clés privées
KA et KB prouvent au CDC que c’est bien Alice et Bob.
• Le CDC répond avec RA et RB pour prouver qu’il a KA et KB
(il est donc le CDC).
151
Authentification à clé publique
• Un secret permet de vous identifier.
• Donc la clé publique ne vous identifie pas
• La clé privée sert pour identifier (on montre que l’on connait le
secret pour résoudre un déchiffrement).
• La clé publique sert à construire les chiffrés qui vont être
résolus.
152
Authentification à clé publique
Alice
message
Bob
EB (Alice,RA )
−→
déchiffrage de RA
EA (RA ,RB ,Ks )
Alice est sûre
←−
Ks (RB )
−→
Bob est sûr
Point Faible : le passeur de seau
153
Hachage à sens unique
• Création de résumé de messages
• Pour améliorer la taille des cryptogrammes et le temps de
chiffrement
• Authentification sans confidentialité
154
Propriétés
fonction H
• H peut être appliquée à un bloc de taille quelconque
• H produit un résultat de taille fixe
• H est relativement simple à calculer
155
Autres Propriétés
• Il n’est pas faisable d’inverser H en un temps raisonnable
• Soit x un bloc, il n’est pas faisable de trouver y tel que
H(x) = H(y) en un temps raisonnable (weak collision
resistance)
• Il n’est pas faisable de trouver en un temps raisonnable une
paire de blocs (x, y) tel que H(x) = H(y) (strong collision
resistance)
156
• Les trois premières propriétés définissent une fonction de
hachage
• la quatrième signifie ”sens unique”
• la cinquième signifie que la fonction interdira de forger de faux
messages
• la sixième que la fonction résiste à l’attaque des anniversaires.
157
Attaque des anniversaires
Du nom du problème classique de probabilité de collision dans une
table de hachage
Problème 1 Supposons que tous les jours de l’année sont des
jours de naissances equiprobables, combien doit on regrouper de
personnes pour que la probabilité que deux personnes quelconques
du groupe aient le même jour de naissance soit supérieure à 0.5.
Deux personnes avec le même jour : collision de clés.
158
• réponse : 23.
• A comparer à 183 le nombre pour qu’il y ait une probabilité
supérieure à 0.5 d’avoir une seconde personne qui a le même
jour de naissance qu’une personne identifiée.
• Résultats très différents en ordre de grandeur
• Asymptotique lorque la taille de l’espace des clés augmente
159
Asymptotique
Théorème 6 Lorsque la taille de l’espace des clés est K, la taille
de la population pour que la probabilité de collision soit supérieure
√
à 0.5 est en 1.18 K
La taille à tester est donc beaucoup plus petite :
160
√
K au lieu de K.
Attaque des Anniversaires
Martin veut duper Bob en lui faisant signer un contrat défavorable.
Martin et Bob utilisent un protocole de signature numérique sur les
résumés.
L’espace des résumés est de taille 22k
1 Martin prépare 2 versions du contrat : une favorable à Bob et
une qui lui est favorable.
2 Martin prépare 2k messages qui sont des variantes du contrat 1
en ajoutant des blancs ou en modifiant quelques mots
(2k messages : k modifications à faire ou non)
161
3 Martin prépare de la même façon 2k messages qui sont des
variantes du contrat 2.
4 D’après le théorème sur les collisions, il y a une probabilité forte
pour que deux documents (issus des versions différentes) aient
le même résumé.
5 Martin trouve ces deux documents si ils existent, sinon il
retourne en [2] pour générer d’autres messages.
162
6 Martin envoie la version du message favorable à Bob
7 Bob signe le résumé pour l’authentifier et le retourne à Martin
8 Martin ajoute le résumé signé par Bob au second message et
dispose maintenant d’un document signé par Bob sur un
résumé cohérent du texte défavorable à Bob.
163
Comment éviter l’attaque
• Avoir un espace de clés trop grand
• On est passé de 2128 (MD5) à 2160 (SHA, RIPEMD).
164
Protocoles
• MD4
• MD5
• SHA (Secure Hash)
• RIPEMD
• HMAC
165
MD4 : Rivest
• Sûr, à l’époque (90), pour une attaque force brute
• Rapide, utilisation de primitives sur des mots de 32 bits
• Simple et compact : pas de tables de substitution
• Beaucoup de points communs avec MD5
166
MD5 : Rivest
• Crée un résumé de 128 bits à partir d’un texte de longueur
quelconque (pas de limite sup)
• Le texte est divisé en blocs de 512 bits
• Peu de mémoire initialisée : le buffer MD de 128 bits et un
tableau T de 64 mots de 32 bits
• T (i) contient la partie entière de 232 abs(sin(i))
167
Fonctionnement MD5
Etape 1 Padding pour arriver à une longueur congrue à 448
modulo 512
Etape 2 Un bloc de 64 bits codant la longueur mod 264 (avant le
pading) est ajouté au message
Etape 3 Initialisation du buffer MD (de 128 bits)
Le buffer est représenté par 4 mots de 32 bits (A,B,C,D). En
Hexadécimal : A = 67452301, B = EF CDAB89,
C = 98BADCF E, D = 10325476 stockés en Little Endian.
(M D0 )
168
Etape 4 4 rondes de compression pour chaque bloc de 512 bits
(Yi ).
Chaque ronde utilise une fonction de compression différente
(nommées F, G, H, et I. (RFx est la ronde avec la fonction x))
Chaque ronde prend en entrée le bloc courant de 512 bits, le
buffer ABCD et un élément du tableau T
Chaque ronde met à jour le buffer ABCD (qui contiendra le
résumé)
La sortie sur ABCD après les quatre rondes est la sortie de la
quatrième ronde ajoutée à l’entrée de la première ronde.
On a réalisé les opérations suivantes :
M Di+1 = M Di + RFI (Yi , RFH (Yi , RFG (Yi , RFF (Yi , M Di ))))
Etape 5 Sortie du buffer MD
169
Décomposition d’une ronde
Divisées en 16 étapes (16*32 = 512) de la forme
a ← b + ((a + g(b, c, d) + Yi (ρ(k)) + T (i)) rot s)
Avec
• a,b,c,d : les quatres mots de MD mais dans un ordre qui
dépend de l’étape
• g : la fonction de la ronde
• rot s : rotation à gauche de s bits
• + : addition modulo 232
• k : indice d’étape
• ρ une permutation qui dépend de la ronde
170
Fonctions F,G,H,et I
Entrée 3 x 32 bits, Sortie 32 bits, Fonctions logiques :


F (b, c, d)












 G(b, c, d)
=
(b AN D c) OR ((not b) AN D d)
=
(b AN D d) OR (c AN D (not d))




H(b, c, d) = b XOR c XOR d










I(b, c, d) = c XOR (b OR (not d))
F et G sont des fonctions IF. F vaut ”if b then c else d”. H est un
bit de parité
171
Permutation
• Chaque mot de X est utilisée exactement 1 fois par ronde
• ρ1 (i) = Id, ρ2 (i) = (1 + 5i) mod 16, ρ3 (i) = (5 + 3i) mod 16,
ρ4 (i) = 7i mod 16
• Chaque mot de T est utilisé exactement 1 fois (4x16=64)
172
Comparaison MD4-MD5
• MD4 a 3 rondes de 16 étapes alors que MD5 a 4 rondes
• MD5 utilise le tableau T pour des additions. MD4 emploie des
constantes plus simples.
• MD5 utilise 4 primitives logiques (une à chaque ronde) alors
que MD4 n’en utilise que 3 (une à chaque ronde)
• MD5 a un plus grand effet d’avalanche grâce aux opérations
finales de chaı̂nage
173
Analyse de MD5
• Chaque bit de sortie est fonction de tous les bits d’entrée.
• 128 bits : le résumé est trop court
• il existe un algorithme générant un bloc en collision sur un bloc
quelconque de 512 bits (mais pas sur une suite de blocs)
Conclusion : MD5 ne peut pas être considéré comme sûr.
174
Secure Hash Algorithm
• Entrée : un texte de moins de 264 bits
• Sortie : un bloc de 160 bits
• Travail sur des blocs de 512 bits
• Très inspiré par MD4 et MD5
175
Fonctionnement SHA
Etape 1 Padding pour arriver à une longueur congrue à 448
modulo 512
Etape 2 Un bloc de 64 bits codant la longueur (avant le pading)
est ajouté au message
Etape 3 Initialisation du buffer MD (de 160 bits)
Le buffer est représenté par 5 mots de 32 bits (A,B,C,D,E). En
Hexadécimal : A = 67452301, B = EF CDAB89,
C = 98BADCF E, D = 10325476, E = C3D2E1F 0 (les mêmes
que pour MD5, mais stocké en Big Endian
Etape 4 4 rondes de 20 étapes
Chaque ronde utilise une fonction de compression différente
(nommées f1 , f2 , f3 , f4 ).
Chaque ronde prend en entrée le bloc courant de 512 bits, le
176
buffer ABCDE et une constante dépendant de la ronde Kt et
met à jour le buffer ABCDE
sur ABCDE, la sortie de la quatrième ronde est ajoutée à
l’entrée de la première ronde pour obtenir la sortie
Etape 5 Sortie du résultat dans le buffer MD
177
Ronde
Calcul effectué au cours d’une étape t
A, B, C, D, E ← (E+f (t, B, C, D)+S 5 (A)+Wt +Kt ), A, S 30 (B), C, D
Où :
• f () fonction logique de l’étape
• S k : rotatation à gauche de k bits
• Wt : mot de 32 bits construit à partir du bloc de 512 bits à
résumer
178
Fonctions fi
Entrée 3 x 32 bits; Sortie 32 bits; selon t, f(t,B,C,D) est une des 4
fonctions logiques :


f1 (B, C, D) = (B AN D C) OR ((N OT B) AN D D)












 f2 (B, C, D) = B XOR C XOR D




f3 (B, C, D) = (B AN D C) OR (D AN D D) OR (C AN D D)










f4 (B, C, D) = B XOR C XOR D
179
Calcul des W
• les 16 premières valeurs des Wt sont prises directement dans le
bloc (16x32=512)
• les valeurs suivantes sont calculées :
Wt = S 1 (Wt−16 XOR Wt−14 XOR Wt−8 XOR Wt−3 )
180
Comparaison SHA-MD5
• Plus sûr pour des attaques de type brute force (160 bits de
résumé au lieu de 128)
• MD5 est plus rapide car il travaille sur des résumés plus courts
et a moins d’étapes
• Simplicité et compacité : même type d’algorithme
181
RIPEMD-160
• Dévéloppé par le projet ESPRIT RIPE.
• Comme pour SHA (résumé de 160 bits, blocs de 512)
• Les trois premières étapes sont celles de SHA (pading, ajout de
la longueur)
182
Etape 4 de RIPEMD
• 10 (2x5) rondes de 16 étapes
• 2 rondes en parallèle : ronde gauche et droite, inversion de
l’ordre des fonctions (5 fonctions seulement)
• 9 constantes Ki ou Ki#
• rotation des 5 mots du buffer MD après chaque étape
• les résulats des cinquièmes rondes (gauche et droite) sont
ajoutées à l’entrée de la première ronde pour mettre à jour le
buffer MD
183
Fonctions de Compresion
Entrée 3 x 32 bits, Sortie 32 bits, Fonctions logiques :


f1 (B, C, D)











f2 (B, C, D)








f3 (B, C, D)










f4 (B, C, D)










f4 (B, C, D)
= B XOR C XOR D
= (B AN D C) OR ((N OT B) AN D D)
= (B OR (N OT C)) XOR D
= (B AN D C) OR (C AN D (N OT D))
= B XOR (C OR D)
184
Figure 7: Organisation d’une étape
185
Permutation
• Chaque mot du bloc est utilisé deux fois par ronde (une à
gauche et une à droite)
• l’ordre d’utilisation des mots dépends de la ronde (numero et
gauche/droite)
• obtenu à partir de deux permutations élémentaires π et ρ.
Ronde
1
2
3
4
5
Gauche
Id
ρ
ρ2
ρ3
ρ4
Droite
π
ρπ
ρ2 π
ρ3 π
ρ4 π
186
HMAC
• MAC : message authentification code ou cheksum
cryptographique, un algortihme de calcul d’un petit bloc ajouté
au message et qui utilise une clé secrète
• Hmac : MAC créé à partir d’une fonction de hachage
• Pourquoi :
1. SHA et MD5 sont plus rapides que DES (en logiciel)
2. des bibliotheques de fonctions de hachage existent
3. les fonctions de hachage ne sont pas soumises aux mêmes
restrictions d’exportation que DES
• Proposé pour sécuriser IP, utilisé dans SSL
187
Concepts de HMAC
• Utiliser sans modification une fonction de hachage déjà connue
• Ne pas dégrader les performances de la fonction
• Utiliser les clés de façon simple
• Changer de façon simple de fontion de hachage pour améliorer
la sureté ou les performances
188
Structure de HMAC
• H : fonction de hachage, K : clé secrète, M : Message, Yi : bloc
i de M,
• b : nombre de bits dans un bloc, n : taille du résumé
• K + : K avec un padding de 0 pour avoir une longueur de b
• ipad : 00110110 répété jusqu’à taille b , opad : 01011010 répété
jusqu’à taille b
189
1 Padding de K avec des 0 pour créer K + de taille b
2 Faire un XOR de ipad et de K + pour obtenir Si
3 Concaténer Si et M
4 Appliquer H au bloc de l’étape 3
5 Faire un XOR de opad et de K + pour obtenir So
6 Concaténer So et le résultat de l’étape 4
7 Appliquer H au résultat de l’étape 6, c’est le résultat final
190
sécurité de HMAC
• la sécurité de HMAC est celle de la fonction H utilisée pour
résister aux collisions
• Attaque force brute pour forger un texte ayant le bon résumé
• ou attaque des anniversaires pour forger deux messages ayant le
même résumé mais l’attaque est impossible sans connaı̂tre K...
• même MD5 (a fortiori les autres) résiste à l’attaque en force
brute
191
Signature Numérique
192
Signature Idéale
• Une signature est authentique. Elle doit convaincre le
destinataire que le signataire a délibérément signé le document.
• Une signature ne peut être imitée. C’est une preuve.
• Une signature n’est pas réutilisable. Elle fait partie du
document et ne peut être déplacée ou copiée
193
Signature Idéale - suite
• Une signature est inaltérable. Le document ne peut plus être
modifié.
• Une signature ne peut pas être reniée. Le signataire ne peut
pas nier avoir signé le document.
194
Signature Numérique
• Le récepteur vérifie l’identité de l’emetteur
• L’emetteur ne peut pas renier le contenu
• Le récepteur ne peut pas avoir construit le message
195
Avec clés secretes et arbitre
• Serveur de confiance : Ivan.
• Ivan possède une clé privée KI .
• t est une horodate pour éviter le rejeu.
• P est le message
• KA est la clé partagée entre Alice et Ivan, KB est la clé
partagée entre Bob et Ivan
196
Alice
message
Ivan
message
Alice,KA (Bob,RA ,t,P )
→
Chiffrage KI (Alice, t, P )
KB (Alice,RA ,t,P,KI (Alice,t,P ))
→
197
Analyse
• signature authentique : tous font confiance à Ivan. Ivan sait
que le message vient d’Alice grâce à la clé KA . Et Ivan le dit.
Donc Bob le croit.
• signature infalsifiable : seule Alice et Ivan connaissent KA . La
seule entité capable de forger des messages est Ivan.
198
Bob
• signature non réutilisable : Si Bob essaie d’utiliser la signature
en collant KI (Alice, t, P ) sur un autre message M , un arbitre
pourra vérifier que la signature ne correspond pas à M .
• document inaltérable : si Bob modifie P en P # , un arbitre peut
montrer que c’est faux.
• signature non reniable : si Alice prétend ne pas avoir envoyé le
message P, le certicat d’Ivan prouve le contraire. Bob conserve
KI (Alice, t, P ) comme preuve. Car seul Ivan peut crypter avec
KI .
199
Problème
• Ivan sait tout...
• Ivan doit être infaillible...
• Ivan est surchargé...
• Attention aux attaques en Deni de Service et à la fiabilité.
200
Avec Clés Publiques
• A condition que E(D(M )) = M pour tout message M
• vrai pour RSA
• Alice envoie le message
EB (DA (M ))
• Bob applique DB puis EA pour obtenir M
• Bob conserve DA (M ) comme preuve car il est incapable de le
créer
201
Analyse
• authentique : Bob vérifie le message avec la clé publique
d’Alice. Il établit que le message a été chiffré avec la clé privée
d’Alice.
• Infalsifiable : seule Alice connait sa clé privée.
• Non réutilisable : la signature est fonction du document.
• Document immuable : la signature est fonction du document.
• Non reniable : un arbitre peut vérifier que seule Alice a pu
chiffrer le message.
202
Problème de la duplication
• Bob peut garder n copies signées du message.
• Pas grave si c’est un contrat...
• Par contre pour un chèque.....
Ajouter une estampille (date ou numéro).
203
Danger de la signature RSA
Par exemple avec RSA
• ne pas employer RSA pour signer un message fourni par un
inconnu
• l’utilisation de sa clé privée par Alice pour livrer un message
permet d’employer des attaques liées au propriétés
arithmétiques de RSA
• Attaque par texte en clair choisi
204
cryptanalyse d’un message
Estelle espionne Alice et note un message crypté c par la clé
publique d’Alice.
Pour cryptanalyser c, Estelle procède comme suit :
1 Estelle choisit un message aléatoire r et obtient la clé publique
(e, n) d’Alice
2 Estelle calcule :
x = re mod n
y = xc mod n
t = r−1 mod n
Donc,
t = x−d mod n
205
3 Estelle fait signer le message y par Alice en utilisant sa clé
privée. Elle note :
u = y d mod n
4 Estelle calcule tu mod n.
tu mod n
= x−d y d mod n
= x−d xd cd mod n
= cd mod n
= m
Le message est décrypté.
206
(4)
Fausse Signature
Estelle veut obtenir une signature d’Alice sur le message m3.
• Estelle génère deux messages m1 et m2 tel que
m3 = m1 m2 mod n
• Alice signe les messages m1 et m2 .
• Estelle note md1 mod n et md2 mod n.
• Estelle calcule (md1 mod n)(md2 mod n) = md3 mod n et possède
donc un message m3 signé par Alice.
207
Chiffrement et Signature
Combiner signature numérique et chiffrement à clé publique
• Alice signe le message M avec sa clé privée et obtient SA (M )
• Alice chiffre le message avec la clé privée de Bob et envoie
EB (SA (M ))
• Bob déchiffre avec sa clé privée DB (EB (SA (M ))) = SA (M )
• Bob vérifie la signature à l’aide de la clé publique d’Alice
208
• Il faut signer avant de chiffrer (et non l’inverse) car le texte
chiffré ne peut être lu et cela peut générer des problèmes
légaux.
• Alice peut avoir deux paires de clés (une pour signature et une
pour chiffrement)
209
Accusé de reception
On envoie la copie du message à l’expéditeur comme accusé de
reception.
• Alice signe le message M avec sa clé privée puis chiffre le
message avec la clé privée de Bob et envoie EB (SA (M ))
• Bob déchiffre avec sa clé privée DB (EB (SA (M ))) et vérifie la
signature à l’aide de la clé publique d’Alice
• Bob signe le message avec sa clé privée, le chiffre avec la clé
privée d’Alice et envoie à Alice EA (SB (M ))
• Alice déchiffre avec sa clé privée DA (EA (SB (M ))) , vérifie la
signature à l’aide de la clé publique de Bob et retrouve le
message.
210
Attaque
• Si on emploie le même algorithme et la même clé pour
signature et chiffrement.
• Martin peut lire le courrier de Bob
• Martin est un utilisateur identifié : il a une clé publique et une
clié privée
• Martin enregistre le message d’Alice EB (SA (M ))
211
1 Martin envoie EB (SA (M )) en prétendant en être l’auteur
2 Bob décode le message avec sa clé privée DB et essaie de vérifier
la signature de Martin. Il obtient EM (SA (M )) et considère ceci
comme un message valide.
3 Il fait un accusé de réception à Martin EM (SB (EM (SA (M ))))
4 Martin déchiffre avec sa clé privé :
DM (EM (SB (EM (SA (M ))))) = SB (EM (SA (M )))
212
5 Martin vérifie avec la clé publique de Bob :
VB (SB (EM (SA (M )))) = EM (SA (M ))
6 Martin déchiffre avec sa clé privé : DM (EM (SA (M ))) = SA (M )
7 Martin vérifie avec la clé publique d’Alice : VA (SA (M )) = M
Résultat : Martin a cryptanalysé M .
213
Efficacité
• Les protocoles à clé secrètes sont assez rapides,
• Les protocoles à clé publiques sont très lents,
• les messages sont de taille variable, donc la signature est de
taille variable.
214
• On utilise une fonction à sens unique.
• Alice applique la fonction au message et obtient un résumé
• Alice signe le résumé
• Bob peut conserver une signature de taille fixe et très réduite
215
Autres Avantages du résumé
• On signe un document sans le rendre public au cours de la
vérification puisque c’est le résumé qui établit la signature
(utile pour les brevets).
• Possibilité de signatures multiples : chacun signe un résumé
distinct.
• Limite les problèmes de sécurité : une faille permet de
découvrir un résumé mais pas le message.
216
Autres Possibilités des Signatures Numériques
• Canal Subliminal : cacher une information dans la signature
• Vérificateur dédié : seules quelques individus peuvent vérifier
les signatures même sans la coopération des signataires.
• Procuration (sans prèt de clé)
• Signature en aveugle (pour vote électronique)
217
Autres Solutions de signature numérique
• DSA-DSS (Etats-Unis)
• GOST (Russie)
• ESIGN (Japon)
218
DSA-DSS
• Digital Signature Standard
• Digital Signature Algorithm
• Tentative de standardisation, arrivé trop tard
• Proposé par le NIST et la NSA
• Utilise une fonction de hachage à sens unique H (SHA)
219
DSA
Paramètres
• p un nombre premier de L bits (entre 512 et 1024, multiple de
64).
• q : un facteur premier de p-1
• g = h(p−1)/q mod p : avec h un nombre qcq inférieur à p-1 et
tel que g soit plus grand que 1.
• x un nombre inférieur à q
• y = g x mod p
p, q et g sont publics et peuvent être partagés. La clé privée est x,
la clé publique y.
220
signature de M
• Alice engendre un nombre aléatoire k inférieur à q
• Alice calcule r = (g k mod p) mod q et
s = (k −1 (H(M ) + xr)) mod q. r et s forment la signature
• Bob vérifie en calculant


w = s−1 mod q




 u = H(M )w mod q
1

u2 = rw mod q




 v
= ((g u1 y u2 ) mod p) mod q
si v = r la signature est vérifiée
Amélioration : x , r et k −1 peuvent être precalculés
221
Non modification de message
• Ajoindre à chaque message M, son résumé R(M)
• La cohérence entre M et R(M) interdit de pouvoir forger un
nouveau message P cohérent avec R(M)
• Le résumé doit éviter les collisions fortes et faibles (au moins
160 bits)
222
Vote et Election
• Seuls les électeurs peuvent voter
• Un électeur ne peut voter qu’une seule fois
• Personne ne peut savoir pour qui quelqu’un a voté
• Personne ne peut dupliquer le vote d’un électeur
• Personne ne peut modifier le vote d’un électeur
• Un électeur peut vérifier que son vote a bien été pris en compte
• Option 1: Tout le monde sait qui vote et qui ne vote pas
• Option 2: procuration
• On suppose possible : une signature digitale, des cléfs
publiques/privées ou secrètes.
223
Protocole trop simple
1. Un Arbitre (Ivan) ayant une clé publique et qui vérifie les
élections
2. Chaque électeur chiffre son vote avec la clé publique d’Ivan,
l’arbitre des élections)
3. Chaque électeur envoie son vote chiffré à Ivan
4. Ivan déchiffre les votes, dépouille les élections et donne le
résultat
224
Problèmes
• Aucune vérification du corps électoral
• Possibilité de voter plusieurs fois
• Impossible de vérifier les résultats
Avantages
• Vote Secret, Anonyme, Non Modifiable
225
Est ce vraiment secret ???
• Il est tres facile de chiffrer tous les bulletins avec la clé d’Ivan
et de vérifier que le message transmis est l’un d’entre eux
• Pas de déchiffrement, de l’identification...
• Ajouter une suite aléatoire R qui peut être enlevée par Ivan.
226
Un peu mieux...
1. Un Arbitre (Ivan) ayant une clé publique et qui vérifie les
élections
2. Chaque électeur a une clé privée connue par Ivan
3. Chaque électeur signe le vote avec sa clé privée
4. Puis il chiffre son vote avec la clé publique d’Ivan
5. Chaque électeur envoie son vote chiffré à Ivan
6. Ivan déchiffre les votes, vérifie la signature pour garantir
l’autorisation du vote et son unicité, dépouille les élections, et
donne le résultat.
227
Avantages
• Vérification du corps électoral
• Aucune possibilité de voter plusieurs fois
• Non Modifiable (signature digitale)
Problèmes
• Vote Non Secret pour Ivan
• Impossible de vérifier les résultats (vérifier la signature permet
de savoir pour qui on vote)
228
Voter avec des signatures aveugles
• En général, on demande à lire avant de signer
• Faux dans une signature aveugle:
• Le signataire ne doit pas savoir ce qu’il signe.
• Usage : enregistrement d’actes
229
Signatures Complètement Aveugles
• On considère que le message est converti en nombre
• Alice emploie une opération arithmétique avec deux arguments
(le message et un nombre aléatoire nommé le facteur
d’aveuglement) qui est inversible et qui commute avec la
signature.
• Alice envoie le résultat à Bob
• Bob signe le document modifié et le retourne à Alice
• Alice divise le nombre par le facteur d’aveuglement
230
Mathématiques
• Message: M
• Alice: f (M, R)
• Bob : SB (f (M, R))
• Alice : f −1 SB (f (M, R))
• f −1 (SB (f (M, R))) = f −1 (f (SB (M ), R)) = SB (M ), R#
• Alice a un message signé de Bob que Bob ne connait pas...
• Si R et f sont bien choisis, Bob peut vérifier sa signature mais
il ne peut jamais identifier le document correctement.
231
Signatures aveugles
• Pour permettre à Bob de vérifier partiellement..
• Alice génère 10 messages qu’elle aveugle avec 10 facteurs
différents et les envoie a Bob
• Bob choisit 9 parmi ces 10 messages et demande à Alice les
facteurs pour ces 9 messages
• Alice envoie les 9 facteurs
• Bob lit les messages et signe le dernier message (celui qui n’est
pas lu) et le retourne à Alice
232
• Alice ne peut pas tricher car Bob choisit au hasard les
messages qui seront lus.
• Une possibilité : avoir deux types de messages (1 bon et 1
mauvais) pour Bob et qu’il soit possible de passer d’un bon a
un mauvais par l’application de la fonction f avec des facteurs
R particuliers (faisable en théorie, pas en pratique).
• Le reste du protocole opère sous les mêmes hypothèses que les
signatures completement aveugles.
233
Retour à l’élection
1. Chaque électeur génère 10 ensembles de votes. Chaque
ensemble contient tous les votes possibles. Chaque message
contient aussi un nombre aléatoire pour éviter les duplications
avec les autres électeurs.
2. Chaque votant aveugle tous les ensembles de votes et les envoie
à Ivan avec leurs facteurs d’aveuglement
3. Ivan vérifie que l’électeur n’a pas déjà voté, il ouvre 9 des
messages et vérifie que les votes sont corrects
4. Puis il signe tous les votes du dernier ensemble, les renvoie à
l’électeur et l’inscrit comme votant
5. L’électeur effectue l’opération inverse d’aveuglement, et a donc
tous les votes possibles signés par Ivan
234
6. L’électeur choisit et envoie son vote signé et chiffré par la clé
publique d’Ivan
7. Ivan déchiffre le message, vérifie la signature et compte les
suffrages. Il garde le nombre aléatoire comme preuve.
235
Propriété
• Pas de duplication de vote : le bulletin de vote contient un
numéro.
• Ivan ne peut savoir qui vote pour qui (les bulletins sont
anonymes et il ne peut connaitre le numéro puisqu’il n’a pas lu
le dernier bulletin).
• Attention au moment du transfert du bulletin (étape 6) qui
doit être anonyme.
• Ivan peut générer des faux votes...
• Solution : séparer les deux fonctions d’Ivan
236
Vote avec deux arbitres
2 arbitres : Vérificateur et Comptable
1. Chaque électeur demande au vérificateur un numéro de
validation
2. Le vérificateur renvoie à chaque électeur un numéro aléatoire
distinct. Il maintient une liste de numéro et une liste des
électeurs ayant déja un numéro. Le message est crypté avec la
clé publique de l’utilisateur.
3. Le vérificateur envoie la liste cryptée des numéros au comptable
et publie la liste des électeur officiels (chacun peut vérifier...)
4. Chaque électeur choisit un identificateur aléatoire et construit
un message avec l’identificateur aléatoire, le numéro de
validation du vérificateur, et son vote. Ce message est crypté
avec la clé publique du comptable.
237
5. Le comptable vérifie le numéro de validation, le marque comme
ayant voté, enregistre le vote et l’identificateur aléatoire.
6. A la fin du vote, le comptable publie le résultat et la liste des
identificateurs aléatoires qui ont voté pour chaque candidat
(attention les numéros de validation ne sont pas publiés).
238
Analyse
• Le comptable connait l’identificateur aléatoire, le numéro de
validation et le nom. Il ne peut pas, seul, identifier l’électeur.
• Le vérificateur ne connait pas l’identificateur aléatoire, donc il
ne peut pas identifier les votes
• Le comptable ne peut pas dupliquer les votes : il indique les
identificateurs qui ont vote et le nombre total doit correspondre
au total des validations.
• Chaque électeur peut vérifier que son vote a bien été pris en
compte
• Un électeur ne peut pas voter deux fois.
• Les listes d’électeurs sont publiées pour éviter que le
vérificateur ne puisse forger de faux électeurs.
239
• Ca ne résiste pas à une entente Vérificateur-Comptable.
240
ANDOS
• Alice vend des secrets
• Bob veut acheter un secret mais ne veut pas qu’Alice sache
quel secret il a acheté.
• Sinon Alice ajoutera un secret ”Quel est le secret acheté par
Bob”
• Alice ne veut pas que Bob puisse obtenir tous les secrets en en
achetant un seul.
241
Protocole à base de RSA
1. Alice crypte tous ses secrets (Si ) avec sa cle publique et les
envoie à Bob sans changer leur numéro (Ci )
Ci = Sie mod n
2. Bob identifie le secret qu’il veut acheter Cb , il crèe un nombre
aléatoire r et envoie à Alice Y = re Cb mod n
3. Alice décryte Y et renvoie le résultat P à Bob
P = (re Cb )d mod n
4. Bob calcule r−1 P
r−1 P = r−1 (re Cb )d mod n = r−1 red Sbed mod n = Sb
5. Bob connait Sb mais Alice ne sait pas quel secret il a acheté.
242
Vote avec ANDOS et un arbitre Ivan
1. L’arbitre publie la liste des électeurs
2. Chaque électeur reçoit un identificateur secret par un protocole
ANDOS
3. Chaque électeur génère une clé publique/clé privée (k,d). Soit
v le vote, il envoie anonymement à Ivan I, Ek (I, v)
4. Ivan accuse réception en publiant Ek (I, v)
5. Chaque électeur envoie (I, d) à Ivan
6. Ivan décrypte le vote, il compte les résultats, et publie les
messages Ek (I, v) pour chaque vote.
7. Chaque électeur peut vérifier que son vote a bien été pris en
compte.
243
Calculer sans Montrer
• Faire participer N personnes à un calcul qui utilise leurs
propres données sans que chacun ne les dévoile.
• Exemple : je veux calculer le salaire moyen des anciens élèves
du M2 mais vous ne voulez pas dire votre salaire (ni à un
arbitre ni à un autre ancien élève).
• Hypothèse 1 : réseau sûr (Martin est absent)
• Hypothèse 2 : Les participants ne mentent pas.
• Hypothèse 3 : Pas de coalition entre participant.
• Hypothèse 4 : Au moins 3 participants et tout le monde
connait le nombre de participants.
244
Etape 1
• On construit par un algorithme distribué un anneau.
• On choisit un leader sur cet anneau.
• Les communications vont se faire sur l’anneau virtuel.
• Chaque communication sur l’anneau est protégée pour que
seuls l’emetteur et le destinataire puissent la déchiffer (par
exemple ils ont commencé par un DH pour créer une clé de
session).
• Les hypothèses excluent la problématique des processus
byzantins (menteurs ou fautifs selon les modèles).
245
Etape 2
• Le leader génère un nombre aléatoire (graine) et le garde en
mémoire.
• Le leader ajoute son salaire au nombre qu’il a généré et l’envoie
à son succeseur sur l’anneau.
• Un processus après réception d’une somme ajoute son salaire à
la somme et le transmet à son successeur sur l’anneau.
• Lorsque le leader récupère le résultat final, il retranche le
nombre aléatoire qu’il avait généré. Il obtient ainsi la somme
des salaires sans que personne ne connaisse le salaire de son
voisin (ni d’un autre à cause de DH et de l’absence de
coalition).
246
Généralisation
• Loi commutative
)
pour faire l’opération finale.
)
• La graine doit être inversible pour la loi .
• L’ensemble des graines doit être assez grand.
• On doit avoir un algorithme de génération aléatoire d’une
graine à peu près uniforme.
• On garde la structure d’anneau et le leader.
247
Algorithme Général
• Générer une graine aléatoire g inversible pour la loi
)
.
• Le leader (que l’on num”rote x1 ) calcule l’inverse de g (noté
g −1 et le conserve.
)
• Le leader effectue g xi et transmet le résultat r au processus
2.
• Le processus i récupère r du processeur i − 1, effectue
)
r ← r xi et envoie le résultat au processeur i + 1.
• Lorsque le leader récupère de nouveau r il effectue r ← r
et publie r.
248
)
g −1
Le diner des cryptographes
Trois cryptographes Alice, Bob et David se réunnissent au
restaurant et on leur annonce que le dinner est déjà payé soit par
l’un d’entre eux, soit par la NSA. Ils veulent savoir si c’est l’un
deux qui paie mais aucun ne veut l’annoncer clairement. Comment
savoir si la NSA paie ou ne paie pas ?
249
Solution
• Alice et Bob se réunisse et jettent une pièce non biaisée
(Pile/Face) sans que David ne connaisse le résultat. Alice et
Bob gardent le résultat et ne l’annoncent pas.
• Puis Alice et David se réunissent et jettent une pièce non
biaisée (Pile/Face) sans que Bob ne connaisse le résultat. Alice
et Bob gardent le résultat et ne l’annoncent pas.
• Puis Bob et David se réunissent et jettent une pièce non biaisée
(Pile/Face) sans qu’Alice ne connaisse le résultat. David et
Bob gardent le résultat et ne l’annoncent pas.
• Chacun a vu deux pièces parmi trois.
250
Solution-Suite
• Puis chacun des trois annonce l’information suivante :
– Si il n’a pas payé, il annonce ”identique” si les deux pièces
sont indentiques et ”différente” si elles sont différentes.
– Si il a payé, il dit l’inverse de ce qu’il voit (ie il ment).
• Chacun compte le nombre d’annonce ”identique” et
”différente”.
• La NSA a payé si il y a un nombre pair d’annonce ”différente”.
251
Preuve
• Vérifions que si tout le monde dit la vérité, le nombre
d’annonce ”différente” est pair.
• Si Alice annonce ”égale” et Bob ”égale”, David doit annoncer
”égale” (transitivité de l’égalité) et le nombre de ”différente”
est nul.
• Si Alice annonce ”égale” et Bob ”différente”, David doit
annoncer ”différente” (déduction) et le nombre de ”différente”
est 2.
• Idem si Alice annonce ”différente” et Bob ”égale”.
• Si Alice annonce ”différente” et Bob ”différente”, David doit
annoncer ”égale” (déduction car il n’y a que deux valeurs) et le
nombre de ”différente” est 2.
252
Suite
• Si il y a un menteur le nombre d’annonce ”différente” est
impair
• par les mêmes techniques
253
Généralisation
• généralisable à un anneau de taille quelconque.
• On construit l’anneau virtuel de communication sécurisée.
• Un sommet et son voisin génère en commun et en le cachant un
bit aléatoire.
254
Constuire un bit aléatoire
• Les générateurs Linear Congruentiel (LCG) ne sont pas
aléatoires.
• xn = a xn−1 + b mod p. Et x0 .
• La séquence est finie, périodique et déterministe
• Ils sont très faciles à prédire.
• Structure de treillis pour les couples (xn , xn+1 .
255
Paradoxe : construction déterministe de l’aléatoire
Von Neumann (1951) : Any one who considers arithmetical
methods of reproducing random digits is, of course in a state of sin.
As been pointed out several times, there is no such thing as a
random number- there are only methods of producing random
numbers, and a strict arithmetic procedure is not such a method.
256
Par application successive de DES
• x0 est une clé secrète partagée entre les deux processus
• xi = DES(xi−1 )
• et on utilise un bit de xi .
• Autre chiffrement possible.
257
Envoi d’un bit anonyme
• Les utilisateurs s’organisent comme un anneau logique.
• A intervalle régulier les paires d’utilisateurs adjacents cree un
bit aléatoire partagé et secret.
• A intervalle régulier chaque utilisateur annonce ”identique” ou
”différent” selon les deux pièces générées et si il veut enovyer 1
bit.
• Pour savoir si Alice ment il faut connaitre ses deux jets :
coalition des deux voisins.
• Analyse de trafic impossible : ils ont tous parlé.
258
Collision ?
• Collision possible
• Detection de collision en écoutant le nombre de ”différent”
• Si détection, attente aléatoire et retransmission.
• Certaines configurations de collisions ne sont pas détectables (3
emetteurs au lieu de 1)
259
Anonymat
• Alice veut écrire anonymement à Bob. . .
• Elle crèe un message pour Bob qui est mis dans une enveloppe
pour Charlie et cette enveloppe est mise dans une enveloppe
pour David.
• Le message est expédié à David.
• David ouvre son enveloppe, trouve une enveloppe pour Charlie
et lui envoie.
• Charlie ouvre son enveloppe, trouve une enveloppe pour Bob et
lui envoie.
• Bob a donc un message envoyé par Charlie et il ne sait pas que
c’est Alice l’expéditeur.
260
Reconstruire le chemin
• Au moins deux intermédiaires pour que personne ne connaisse
emetteur et destinataire.
• C’est possible théoriquement puisque chaque recepteur peut
retrouver l’expéditeur.
• Chemin inverse.
• Mais dans la pratique si un des intermédiaires se situe dans un
pays refusant la demande juridique, le chemin est cassé.
• Analyse de trafic possible.
261
Minimiser le risque
• Alice envoie n parties du message.
• Chacun de sert à rien.
• Il en faut n (ou k < n) pour reconstituer le message chez Bob.
• Chacun passe par un chemin différent.
262
Prouver sans Dévoiler la Preuve
• Zero Knoledge Proof.
• En mathématique, la preuve est validée par sa présentation et
son acceptaton par un jury d’experts (pour une publication
dans une revue par exemple).
• Donc il faut dévoiler la preuver.
• Peut on prouver que l’on sait démontrer sans dévoiler la preuve.
• Ce concept permet des applications multiples : par exemple en
authentification, l’identité est la preuve que vous pouvez faire.
263
Idée de Base
• Protocoles Interactifs.
• Plus difficiles avec une mise en gage.
• Victor pose à Patricia une série de questions que le secret
permet de résoudre.
• Si Patricia connait le secret, elle peut répondre correctement à
toutes les questions.
• Sinon Patricia répond au hasard et a une chance sur deux de
répondre correctement.
• Après n questions, Patricia a une chance sur 2n de repondre
correctement aux n questions sans se tromper.
• On prend n aussi grand que l’on veut.
264
Divulagation nulle
• Si Patricia connait le secret, Victor en est persuadé mais il ne
peut rien prouver à Alice.
• Car Alice peut ne pas croire Victor.
• Et Victor ne connait que les réponses de Patricia.
• Pour prouver également le secret à Alice, Patricia doit de
nouveau montrer des réponses aux questions.
• Les questions doivent être différentes. . .
265
Version Simple (Quisquater)
• Grotte avec un secret : une formule permettant de passer de C
à D.
• Victor est à l’entrée au point A
• Patricia entre et se dirige en C ou en D. Depuis le point A
Victor ne sais pas la destination choisie.
• Victor entre et rejoint l’intersection B.
• Victor choisit un chemin de sortie (C ou D) et demande à
Patricia de l’utiliser.
• Si Patricia a pris le bon chemin à l’aller, elle peut sortir sans
utiliser le secret.
• Par contre si elle a pris le mauvais chemin elle doit faire usage
du secre pour se ramener au bon chemin.
266
• A chaque tour, on recommence toute la procédure.
• Patricia doit utiliser son secret avec la proba 1/2 sauf si elle
devine à l’avance ce que va demander Victor.
• Donc le générateur doit être non prédictible.
• Après n tours, la proba que Patricia ait réussi sans connaitre le
secret est 1/2n .
267
Divulgation Nulle
• Victor peut raconter à Alice que Patricia est sorti n fois par le
bon chemin.
• Mais Alice peut croire que Victor ment ou que Patricia a cassé
le générateur aléatoire de Victor.
• Alice doit redemander à Patricia n nouveaux défis pour être
elle aussi convaincue.
268
Isomorphisme de Graphe
• Deux graphes (V1,E1) et (V2,E2) sont isomorphes si et
seulement si :
• Il y a une bijection σ des sommets de V 1 vers ceux de V 2.
• (x, y) ∈ E1 si et seulement si (σ(x), σ(y)) ∈ E2.
• Tester si deux graphes sont isomorphes est un problème
difficile.
• Surtout quand ils ont les mêmes séquences de degré.
269
Divulgation nulle et Isomorphisme
• Patricia connait un isomorphisme entre les graphes G1 et G2.
• Patricia veut prouver à Victor qu’elle connait la bijection mais
sans la montrer.
270
Algorithme
• Patricia permutte aléatoirement les sommets de G1 pour
obtenir un nouveau graphe H. H est donc aussi isomorphe à
G2 et Patricia connait cet isomorphisme (c’est la composition
de celui entre G1 et G2 et de l’isomorphisme aléatoire entre G1
et H.
• Patricia envoie H à Victor.
• Victor demande à Patricia de lui prouver que H et G1 sont
isomorphes ou il lui demande de prouver que H et G2 sont
isomorphes.
• Patricia répond en donnant l’isomorphisme entre les deux
graphes demandés.
• On recommance les 4 étapes précédentes n fois.
271
Preuves
• Si Patricia ne connait ps l’isomorphisme, elle ne peut pas créer
un graphe isomorphe à G1 et à G2.
• Elle pourrait en trichant en créer un isomorphe à l’un ou à
l’autre et espérer que Victor demande celui là.
• Elle a donc 1 chance sur deux de gagner en trichant.
• Après n tours, la proba tombe à 1/2n .
272
Preuve-Suite
• Patricia génère un graphe différent à chaque tour.
• Donc Victor ne peut pas faire de la composition de bijections.
• Même si Victor enregistre les réponses de Patricia, Alice peut
penser que seuls les enregistrementss positifs ont été conservés
ou que Victor et Patricia sont complices pour choisir le graphe
cible, ou que Patricia a cassé le générateur employé par Victor
pour choisir entre G1 et G2.
273
Circuit Hamiltonien
• Un circuit Hamiltonien est un circuit qui passe une fois et une
seule par tous les sommets d’un graphe.
• Trouver un circuit Hamiltonien est un problème difficile lorsque
le graphe est grand.
• Attention, le problème du circuit Eulerien (qui passe par tous
les arcs du graphe) est un problème facile.
• Trouver le plus petit circuit d’un graphe est facile, trouver le
plus grand est difficile.
274
Circuit Hamiltonien et Divulgation Nulle
• Patricia connait un circuit Hamiltonien sur un graphe
• Facile si on construit le graphe après le circuit.
• On génère un anneau (le circuit Hamiltonien).
• On rajoute des arcs aléatoirement sur le graphe
• On permutte aléatoirement les sommets pour que la structure
de l’anneau ne soit plus visible.
275
Algorithme
• Patricia génère H : un graphe isomorphe à G par une
permutation aléatoire.
• Donc Patricia connait aussi un circuit Hamiltonien de H.
• Patricie envoie H à Victor.
• Victor demance à Patricia de lui donner un circuit Hamiltonien
en H ou il lui demande un isomorphisme entre G et H.
• Patricia envoie l’information demandée.
• Ils recommencent n fois.
276
Preuves
• Si Patricia triche, elle va générer un graphe isomorphe à G ou
un graphe construit autour d’un anneau.
• Donc elle pourra répondre correctement à une question.
• Donc elle a une chance sur 2 de se tromper sur 1 tour.
• Elle répond correctement en trichant aux n tours avec la
probabilité 1/2n .
277
Preuves
• Patricia ne dévoile pas le circuit de G.
• Victor ne peut reconstituer le circuit de G à partir du circuit
de H ou de l’isomorphisme de G vers H car H change à chaque
tour.
• Patricia génère elle même H.
278
Mise en Gage
• Mettre en gage une décision qui doit rester cachée pendant une
certaine période.
• Qui pourra être révélée à la fin de la période.
• Mais qui ne doit pas être changée pendant la période.
• exemple : pari, enchère non intéractive (mieux disant dans un
appel de marché)
279
Construction d’une suite aléatoire partagée
• Alice et Bob ne se font pas confiance.
• Ils veulent construire un bit aléatoire partagé pour que l’un
d’entre eux effectue une opération.
• Ils décident de construire chacun un bit et de faire le XOR.
• Mais si l’un décide avant l’autre et montre son résultat, le
second peut tricher pour obtenir le résultat voulu.
280
Suite aléatoire partagée avec gage
• Alice met en gage son bit auprès de Victor pour une durée de 1
• Bob génère son bit et le révèle.
• Victor révèle le bit de Alice.
• Alice et Bob calculent le XOR.
281
Autorité pour mise en gage
• Doit avoir une horloge certifiée utilisée par Alice et Bob.
• Et une signature pour prouver la mise en gage.
• Et une clé publique/clé privée pour que Alice puisse envoyer
son bit crypté sans que Bob ne puisse le comprendre.
• Ajouter aussi des infos aléatoires pour qu’il y ait plus de deux
messages possibles.
282
Version symétrique
• Alice met en gage son bit auprès de Victor
• Bob met en gage son bit auprès de Victor
• Victor révèle les bits de Alice et Bob.
• Alice et Bob calculent le XOR.
283
Mise en gage avec une clé secrète
• Bob envoie une chaine aléatoire R à Alice.
• Alice cré un message consitué du bit b qu’elle veut mettr en
gage et de la chaine R.
• Elle chiffre ce message avec une clé aléatoire K et envoie
EK (R, b) à Bob.
• b est maintenant gagé et Bob ne peut pas le déchiffrer.
284
Révéler le gage
• Alice envoie la clé K à Bob.
• Bob déchiffre.
• Comme il retouve la chaine aléatoire R, il sait que c’est la
bonne clé et que le bit b est donc valide.
285
R
• Si Bob ne fournissait ps une chaine R, Alice pourrait générer
deux messages ayant le même cryptogramme mais avec des clés
différentes et des bits différents.
EK1 (b1) = EK2 (b2)
• En effet il n’y a que deux messages E (b) si b est un bit.
• Et Alice peut donc décider comment déchiffrer pour trouver
deux résultats différents. Il n’y alors pas de mise en gage.
• En ajoutant R un chaine longue, on réduit les possibilités de
cette collision.
286
Mise en gage avec une fonction à sens unique
• Alice engendre deux chaines aléatoire R1 et R2
• Alice crée un message avec les deux chaines et le bit b à mettre
en gage : (R1,R2,b).
• Alice applique une fonction à sens unique H au messaget envoie
à Bob le résultat et une des deux chaines aléatoires :
H(R1,R2,b), R1.
• Ceci est la mise en gage de b
287
Divulgation de b
• Alice envoie le message initial (R1,R2,b)
• Bob applique H à (R1,R2,b), vérifie que le résumé est bon et
que la chaine R1 est bien dans le message.
• Si OK, il accepte b comme gage.
288
H
• Comme la fonction H est à sens unique, Alice ne peut trouver
une valeur R3 telle que H(R1,R2,b) = H(R1,R3,b’)
• Si Alice ne divulge pas R1 elle pourrait trouver une changer R1
et trouver une collision sur H
289
Preuve à Divulgation Nulle non Interactive
• Avec mise en gage.
• Augmenter n pour un même niveau de confiance.
• Une fonction à sens unique remplace Victor
290
Protocole
• Patricia utilise son secret et n nombres aléatoires différents
pour transformer son problème difficile en n problèmes
isomorphes différents.
• Elle résoud les n problémes grace à son secret et aux
isomorphismes.
• Elle met en gage les solutions aux n problemes
• Elle utilise les mises en gage comme entrée d’une fonction de
hachage à sens unique. Elle sauve les n premiers bits du
résultat de la fonction de hachage.
291
Protocole-Suite
• Elle examine les n bits un par un.
• Le bit i est associé au problème i.
• Si le bit i vaut 0, elle prouve que l’ancien et le nouveau
problème sont isomorphes en dévoilant l’isomorphisme.
• Si le bit i vaut 1, elle dévoile la solution du problème i mise en
gage précédemment.
• Patricia oublie toutes les mises en gage et les réponses.
• Tout le monde peut vérifier.
292
• Alice ne peut pas tricher car elle ne peut pas connaitre à
l’avance les bits du résumé construit par la fonction de hachage
à sens unique.
• Cette fonction se comporte comme un générateur aléatoire non
biaisé de bits.
• Il faut que n soit grand pour éviter que Patricia calcule à
l’avance des exemples et des résumés.
293
Identification par preuve à divulgation nulle
• La clé privée d’Alice devient son identité.
• Grâce à une preuve à divulgation nulle, elle prouve qu’elle
connait sa clé privée sans la dévoiler.
• Quelques fraudes possibles du type passeur de seau.
294
Quelques protocoles pour jouer
• Pile ou Face
• Poker à 2 joueurs
• Poker à 3 joueurs
295
Pile ou Face avec Cle publique
• A condition que l’algorithme soit commutatif au sens suivant :
DK1 (EK2 (EK1 (M )))) = EK2 (M ) pour tout message M .
• Vrai pour RSA.
• Commutativité des chiffrements.
296
Protocole
• Alice et Bob engendrent chacun une paire clé publique- clé
privée.
• Alice engendre deux messages Pile et Face et une chaine
aléatoire unique. M1=(Pile,R), M2=(Face,R)
• Alice les chiffre avec sa clé publique EA (M 1) et EA (M 2).
• Bob choisit parmi les deux messages au hasard car il est
incapable de les déchiffrer. Il chiffre avec sa clé privée :
EB (EA (M )) et l’envoie à Alice.
• Alice applique le déchifrement avec sa clé privée et envoie le
résultat à Bob : DA (EB (EA (M )))
297
Protocole Suite
• A cause de la propriété, le message vaut EB (M ).
• Bob déchiffre le message avec sa clé et trouve M (cad M1 ou
M2) et l’envoie à Alice.
• Alice verifie que la chaine aléatoire est correcte.
• Alice et Bob révèlent leurs clés pour vérifier qu’ils n’ont pas
triché.
298
Poker à 2 joueurs
• Alice génère 52 messages, les chiffre, et les expédie à Bob.
• Celui ci en choisit 5.
• Idem pour les cartes supplémentaires.
• C’est pratiquement le même algo que précédemment.
299
Poker à l’aveugle à 3 joueurs
• Ou Plus
• Toujours avec un algorithme de chiffrement commutatif.
• Alice, Bob et David génèrent chacun un couple clé publique-cle
privée qui sera jeté à la fin du protocole.
• Anneau Virtuel.
300
Protocole
• Alice engendre 523 messages (un pour chaque carte). Ces
messages contiennent aussi une clé aléatoire unique. Alice
chiffre avec sa clé publique et envoie les messages à Bob.
EA (M ).
• Bob choisit 5 messages au hasard (il ne sait pas les déchiffrer).
• Bob envoie à Alice les 5 messages qu’il a surchiffré :
EB (EA (M ).
• Bob envoie à David les 47 messages restants
301
Protocole - Suite
• David prend 5 des 47 messages au hasard (il ne sait pas lui non
plus les déchiffrer).
• David surchiffre les 5 messages avec sa clé et les envoie à Alice.
• Alice applique sa clé de chiffrement et à cause de la
commutativité trouve les messages EB (Mi ) et ED (Mj .
• Elle envoie ces messages à Bob et à David qui peuvent finir le
déchiffrement pour obtenir leurs cartes.
302
Protocole - Suite
• David choisit 5 autres messages au hasard parmi les 42 restant
et les envoie à Alice sans surchiffrement (c’est les cartes
d’Alice).
• Alice déchiffre à l’aide de sa clé privée.
• A la fin, Alice, Bob et David montrent leurs clés pour que tous
puissent vérifier que personne n’a triché.
303
Accumulateur à sens unique
• Une fonction h de hachage à sens unique commutative quand
on l’emploie en accumulation.
• h(M 1, h(M 2)) = h(M 2, h(M 1))
• Initialisation.
• Pour déterminer si deux processus font partie du même groupe.
• Tous les noms du groupe sont connus mais ne doivent pas être
dévoilés.
304
Protocole
• L’identité d’Alice est composé de son nom Alice et de h
appliquée à tous les noms du groupe sauf Alice, hA
• L’identité de Bob est composé de son nom Bob et de h
appliquée à tous les noms du groupe sauf Bob.
• Alice applique h à Bob et hA
• Bob applique h à Alice et hB
• Ils comparent leur résultat (par exemple avec une mise en gage)
• si ils sont dans le même groupe, le résultat est le même (à
cause de la propriété de commutativité).
305
Stéganographie et extensions
• Stéganographie (cacher une information dans une autre) :
l’approche historique
• Digital WaterMark (cacher un copyright dans une info) : ce qui
devient important
• Stéganalyse (analyser et casser les mécanismes précédents)
• Associé à des dispositifs logiciels de vérification de droit de
propriété
306
Stéganographie
Définition : techniques qui consistent à dissimuler un message, que
l’on souhaite transmettre confidentiellement, dans un ensemble de
donnees visibles, d’apparence anodine, de façon que sa presence soit
imperceptible.
Remarque : l’information peut être chiffrée ou non..
307
Appreçu Historique
• Première mention historique : Herodote
• Encre invisible
• Null Cyphers (texte en clair où l’accentuation, les majuscules,
une règle algorithmique simple permet d’extraire les lettres du
vrai message)
• Plus récemment : micro-dots
• la digitialisation complète de l’information offre de multiples
nouvelles possibilités : texte, son image, etc...
308
Null Cypher : un exemple
Message envoyé par un espion Allemand (WWII) [Kahn67]:
”Apparently neutral’s protest is thoroughly discounted and
ignored. Isman hard hit. Blockade issue affects pretext for embargo
on by products, ejecting suets and vegetable oils.”
En prenant la seconde lettre de chaque mot on obtient :
”Pershing sails from NY June 1.”
Dans le même genre, essayez la correspondance entre Georges Sand
et Alfred de Musset....
309
Micro-dots
• Créé par l’Allemagne (WWII)
• ”the ennemy’s masterpiece of espionage”, J. Edgar Hoover,
Directeur FBI
• Photographie de la taille d’un point et mélangé à un texte
• Malgré la taille réduite, permet de transmettre une grande
quantité de données, y compris dessins et photos
• Très difficile à détecter
310
Information Digitale
Tout est Signal... (le fonds et la forme)
• Ne pas changer la taille du signal
• Remplacer des bits du signal par une partie du message
• Perturbation minimale
• Bits de poids faible du signal pour minimiser l’effet de la
perturbation
• Adaptée à la nature du signal et donc du codage
311
Tout est signal..
• La forme : utiliser le Layout d’un document pour en cacher un
autre, utiliser le format ou les bad-blocks du disque (ou d’une
disquette),
• Le fonds : adapté à la nature du signal et du codage : audio,
vidéo, image, texte, etc...
Il nous faut un ”Traitement du signal adéquat”
312
Null Cypher revisité
Une approche lié à la typographie
• On prend un texte formatté par un traitement de texte qui sait
faire de la justification forcée.
• Chaque mot du texte réel est encadré par un espace et demi
• Les autres mots sont encadrés par un ou deux espaces.
313
Texte simple
• On ajoute en fin de ligne de 0 à 3 espaces
• Chaque ligne comporte donc 2 bits d’information
• Le texte n’est pas modifié
314
Exemple : Image en Niveau de Gris
• Supposons que l’on utilise une image en 256 niveaux de gris
comme signal (8 bits par pixel)
• Et une image à cacher en 2 niveaux de gris et de même taille (1
bit par pixel)
• On suppose que l’oeil humain ne fait pas la différence entre
deux niveaux de gris consécutifs
• la difference de codage entre deux niveaux de gris voisins porte
sur le dernier bit du codage (bit de poids faible)
• on dissimule chaque pixel de l’image à cacher dans le bit de
poids faible du pixel de l’image signal
315
Limitations
• L’oeil est plus sensible...
• La sensibilité n’est pas constante
• Le codage ne résiste pas aux méthodes de compression JPEG
• Certaines images sont plus compactes qu’une généralisation à
beaucoup de niveaux de gris ou des couleur (exemple : les
palettes de GIF). Par contre le True Color est une
généralisation de ce codage sur 3 octets.
316
Image Gif
• On commence par définir une palette de 256 couleurs parmi 224
possibilités (28 pour le rouge, 28 pour le vert, 28 pour le bleu)
• On trie la palette pour que la différence entre deux couleurs
consécutives soit quasi imperceptible (pas facile)
317
Image Gif- suite
• Pour chaque pixel :
– on cherche l’index du pixel dans la palette triée
– on met le bit de l’image à cacher sur le bit de moindre
importance de l’index de la palette triée.
– Ce qui provoque un decalage de 1 ou de 0 pour l’index dans
la palette triée (la différence entre les deux couleurs va être
imperceptible...)
– La valeur modifiée de l’index dans la palette triée
correspond à un index dans la palette non triée. On
remplace alors le pixel en cours par l’index de la palette non
triée.
318
Inversion
Pour chaque pixel,
• on cherche l’index du pixel dans la palette triee
• le bit de poids faible de cet index vient du masque appliqué sur
l’image.
Cette méthode est une généralisation du marquage sur le bit de
poids faible aux images qui ont une palette contrairement aux
images ”true color” ou chaque pixel a ses propres composantes
RGB.
319
Bibliographie
Histoire
• D. Kahn, ”The Codebreakers: the story of secret writing”,
Macmillan, 1967 (remis à jour...)
• D. Kahn, ”Seizing the Enigma”, Houghton Mifflin, Boston,
1991.
• S. Singh, ”Histoire des Codes Secrets”, JC Lattes, 1999.
•
320
Bibliographie
Algorithmique, Protocole, Sécurité
• B. Schneier, ”Cryptographie Appliquée : Algorithmes,
Protocoles et codes source en C”, Wiley-Thomson, 1997. En
anglais, chez le même éditeur, ”Applied Cryptography”.
• W. Stallings, ”Cryptography and Network security”, Prentice
Hall
• R. Nichols, ”ICSA Guide to Cryptography”, Mc Graw Hill,
1999
•
321
Bibliographie
Mathématique
• D. Stinson, ”Cryptographie, théorie et pratique”,
Wiley-Thomson,1996.
• M. Schroeder, ”Number Theory in Science and Communication,
with applications in cryptography, physics, digital information,
computing and self similarity”, Springer Verlag, 1986.
D.E.S
• Electronic Frontier Foundation, ”Cracking DES, secrets of
Encryption Research, Wiretap Politics and Chip Design”,
O’Reilly, 1999.
•
322