Title: 8INF433
18INF433
- Introduction à la cryptographie
2Terminologie
- Expéditeur
- Destinataire
- Message
- texte en claire
- texte chiffré (cryptogramme)
- texte en clair texte
chiffré texte en
clair
Chiffrement
Déchiffrement
3Terminologie
- Cryptographie art et science du chiffrement
- Cryptanalyse Art et science du déchiffrement
- Cryptologie Branche de l'informatique théorique
qui traite de la cryptographie et de la
cryptanalyse
4Formalisation
- M suite de caractères (message)
- Fonction de chiffrement
- E(M)C
- Fonction de déchiffrement
- D(C)M
- On doit avoir D(E(M))M
5Algorithme cryptographique
- Paire de fonctions utilisées pour le chiffrement
et le déchiffrement. - Algorithme restreint l'algorithme est secret
- N'est plus utilisé
- La conception d'un tel algorithme nécessite un
expert - On ne peut utiliser d'algorithmes commerciaux
- Différents algorithmes pour différents
utilisateurs.
6Clef cryptographique
- Valeur K provenant d'un grand ensemble de valeurs
possibles (espace des clefs). - En général on a besoin de deux clefs
- K1 pour le chiffrement
- K2 pour le déchiffrement
- L'algorithme cryptographique est connu de tous
mais dépend des deux clefs - EK1(M)C
- DK2(C)M
-
7Clef cryptographique
- Le secret réside dans la (ou les) clef(s) et non
dans les détails de l'algorithmes.
K1
K2
M
C
M
Chiffrement
Déchiffrement
8Deux types d'algorithmes
- Algorithmes à clef secrète
- K1 peut être calculé à partir K2 et vice versa.
- On a souvent K1K2
- K1 et K2 doivent être secrètes
- Algorithmes à clef publique
- K1?K2
- K2 ne peut pas être calculé à partir de K1
- K1 peut être publique
- K2 doit être secrète (clef privée)
9Algorithme à clef secrète
- DES, AES, etc.
- Chiffre à substitution Chaque caractère du
message est remplacé par un autre caractère. - Exemple Chaque caractère du message est
remplacé par celui qui se trouve K places plus
loin (modulo 26) - Code de Jules César K3
- Si le message est en binaire, on peut le
segmenter en blocs de longueur L et remplacer
chaque bloc B par - (BK) mod 2L
- où K lt 2L est la clef.
- Machines à rotors (Enigma)
10Algorithme à clef secrète
- Chiffre à transposition Les caractères du
message sont inchangés mais leur position est
modifiée. - Exemple (transposition simple en colonne)
- "L'assassin est le docteur Matrix, regardez
derrière l'horloge" - LASSASSIN
- ESTLEDOCT
- EURMATRIX
- REGARDEZD
- ERRIERELH
- ORLOGE
- "LEERE OASUE RRSTR GRLSL MAIOA EAREG SDTDR ESORE
EICIZ LNTXD H"
11Algorithme à clef secrète
- Technique du masque jetable (onetime pad, 1919)
Seule méthode connue 100 sécure. - On veut chiffrer un message.
- MASQUEJETABLE
- On choisit de façon aléatoire une séquence de
caractères - TBFRGFARFMIKL
- On effectue une substitution pour obtenir un
message totalement aléatoire - GCYIBKKWZNKWQ
12Algorithme à clef secrète
- Si on ne connait pas la clef TBFRGFARFMIKL alors
il est impossible de retrouver le message
original. - Toutes les clef sont également probables et
celle-ci aurait aussi bien pu être - RXDCXFHVQBYRX
- Si on déchiffre GCYIBKKWZNKWQ avec cette clef on
obtient - OEUFSDECAILLES
- Si on avait choisit la clef
- RTFDAPUVHMGNX
- on aurait obtenu le texte en clair
- OISEAUPARADIS
13Échange de clefs
- Le principal problème de la technique du masque
jetable est la distribution de la clef. - Le premier algorithme d'échange de clefs a été
inventé par Diffie et Hellman en 1976. - Alice et Bernard se mettent d'accord sur deux
grands entiers n et g de telle manière que g soit
primitif par rapport à n. -
14Nombres primitifs
- g est primitif par rapport à n si tous les
nombres entre 1et n-1 peuvent être exprimés sous
la forme gi mod n. - Exemple g2 et n11
- 210 1024 1 (mod 11)
- 21 2 2 (mod 11)
- 28 256 3 (mod 11)
- 22 4 4 (mod 11)
- 24 16 5 (mod 11)
- 29 512 6 (mod 11)
- 27 128 7 (mod 11)
- 23 8 8 (mod 11)
- 26 64 9 (mod 11)
- 25 32 10 (mod 11)
15Protocole de Diffie et Hellman (1976)
- Alice choisit un grand nombre entier aléatoire x
et envoie à Bernard le résultat du calcul - Agx mod n
- Bernard choisit un grand nombre entier aléatoire
y et envoie à Alice le résultat du calcul - Bgy mod n
- Alice calcule k Bx mod n
- Bernard calcule k' Ay mod n
- Les valeurs k et k' sont toutes deux égales à gxy
mod n
16Fonction à sens unique
- Fonction facile à calculer mais dont l'inverse
est difficile à calculer (même de façon
probabiliste). - Logarithme discrêt fonction inverse de
- f(x) gx mod n
- Factorisation Il est possible de multiplier
efficacement deux grands nombres entiers mais
aucun algorithme efficace n'est connu pour
factoriser un grand nombre.
17Cryptologie à clef publique
- Clef publique K1
- Clef privée K2
- Fonction de chiffrement EK1(M)
- Fonction de déchiffrement DK2(C)
- DK2(EK1(M)) EK1(DK2(M)) M
18Comment cela fonctionne?
- Chaque utilisateur doit posséder une clef
publique et une clef privée. - Si Alice veut envoyer un message M à Bernard elle
utilise la clef publique K1 de Bernard et envoie - C EK1(M)
- Bernard reçoit C et utilise sa clef privée K2
pour calculer - M DK2(C)
19Quel est l'avantage?
- 1. N'importe qui peut envoyer un message à
Bernard en utilisant sa clef publique. - 2. Bernard peut utiliser sa clef privée pour
signer un message M - Il calcule d'abord
- S DK2(M)
- Puis il envoie à Alice le message
- (M,S)
- Pour vérifier que le message a bien été envoyé
par Bernard, Alice calcule - T EK1(S)
- Si M T alors Alice sait que seul Bernard a pu
signer ce message et que le message n'a pas été
modifié.
20RSA (Rivest, Shamir et Adleman 1978)
- Choisir aléatoirement deux grand nombres premiers
p et q différents. - Calculer npq et ?(n)(p-1)(q-1)
- Choisir un entier e impair relativement premier à
?(n) - Calculer d tel que ed mod ?(n) 1
- Publier la clef publique (e,n)
- Garder secrète la clef privée (d,n)
- Fonction de chiffrement E(M) Me mod n
- Fonction de déchiffrement D(C) Cd mod n
21Étape 1
- Comment trouver un nombre premier aléatoire
- On choisit un grand nombre impair au hasard
- On effectue le test de Miller-Rabin pour
déterminer s'il est premier - S'il n'est pas premier on l'incrémente de 2 puis
on refait l'étape précédente - Théorème de densité des nombres premiers Pour
tout entier k, il y a environ k/lg k nombres
premiers plus petit que k.
22Étape 2
- Calculer npq et ?(n)(p-1)(q-1)
- Nous avons déjà vu des algorithmes efficaces pour
calculer le produit de deux grands nombres
entiers.
23Étape 3
- On veut un entier e impair et relativement
premier à ?(n). - On choisit elt?(n) au hasard puis on appelle
Euclide(e, ?(n)) - Euclide(a,b)
- si b0 alors retourner a
- sinon retourner Euclide(b,a mod b)
- Si e n'est pas relativement premier à ?(n) alors
on incrémente e successivement jusqu'à ce que
l'on obtienne le nombre désiré.
24Étape 4
- Nous avons besoin de l'algorithme d'Euclide
étendu qui permet de trouver trois valeurs
entières (d,x,y) tels que - t PGCD(a,b) ax by
- Euclide_étendu(a,b)
- si b0 alors retourner (a,1,0)
- sinon
- (t',x',y') Euclide_étendu(b,a mod b)
- retourner (t,x,y) (t',y',x'- ?a/b? y')
- En supposant que l'appel récursif fonctionne
correctement on obtient - t t' bx' (a mod b) y'
- bx' (a - ?a/b? b) y'
- ay' b (x' - ?a/b? y')
- Ce qui correspond bien aux valeurs retournées par
l'algorithme.
25Étape 4 (suite)
- L'algorithme d'Euclide étendu calcule un triplet
(t,x,y) tel que - t PGCD(a,b) ax by
- On a donc
- 1 PGCD(e, ?(n)) ex ?(n) y
- Ce qui implique
- ex mod ?(n) 1
- Il suffit donc de prendre dx.
26Pourquoi cela fonctionne-t-il?
- Si M mod p 0 alors Med mod p M mod p0
- Sinon
- Med mod p M1k(p-1)(q-1) mod p (pour un
certain k) - M?(M(p-1))k(q-1) mod p
- M?(1)k(q-1) mod p (Fermat)
- M mod p
- Similairement Med mod q M mod q
27Pourquoi cela fonctionne-t-il?
- Theorème du reste chinois
- Soit p1, p2, ..., pk des nombres relativement
premiers. - Alors le système d'équations
- x ai mod pi (1?i ?k )
- Possède une solution unique modulo np1p2...pk
- Corollaire
- On a
- b a mod p et
- b a mod q
- si et seulement si
- b a mod n
28Pourquoi cela fonctionne-t-il?
- Conclusion Si M lt npq alors
- Med mod p M
- Med mod q M
- donc par le théorème du reste chinois
- Med mod n M
29Utilisation de RSA
- Puisque
- D(E(M)) M mod n
- alors on doit avoir Mltn
- Pour chiffrer de plus long messages il suffit de
le diviser en blocs MM1 M2 ... Mt de sorte que
Miltn pour tout 1it - On peut aussi utiliser RSA pour transmettre une
clef et ensuite utiliser un algorithme à clef
secrète.
30Exemple d'utilisation de RSA
- Prenons p47 et q71
- n 3337 et ?(n) 46?70 3220
- Choisissons e79 et d1019
- (on peut vérifier que ed 80501 1 25 ?3220)
- Pour chiffrer le message 688232687966668 on
commence par le diviser en petit blocs de trois
chiffres - m1 m2 m3 m4 m5 m6 688 232 687 966 668
- En utilisant la clef (e,n)(79, 3337) on calcule
le premier bloc - 68879 mod 3337 1570 c1
31Exemple d'utilisation de RSA
- Les autres blocs sont chiffrés de la même manière
et on obtient - c1 c2 c3 c4 c5 c6 1570 2756 2091 2276 2423
- Pour déchiffrer le message on utilise la clef
(d,n)(1019, 3337) et on obtient pour le premier
bloc - 15701019 mod 3337 668 m1
- Le reste du message en clair est obtenu de la
même manière.
32Signature numérique
- Nous avons vu que Bernard pouvait signer un
message M en utilisant sa clef privée pour
calculer S D(M) et envoyer (M,S). - En général, M est trop grand pour que ce calcul
puisse être effectué de manière efficace et on
veut une signature qui ne soit pas trop longue. - On peut alors utiliser le chaînage par bloc
- M est divisé en bloc m1 m2 ... mt de longueur
fixe. - Calculer s1 m1d mod n
- Pour i 2 à t faire si (mi ? si-1)d mod n
- La signature est S st
- Note L'opérateur ? est le OU-exclusif.
33Fonction de hachage à sens unique
- En pratique, on ne signe pas le message lui-même
mais plutôt une empreinte digitale obtenue à
l'aide d'une fonction de hachage h satisfaisant
les propriétés suivantes - Étant donné M, il est facile de calculer h(M).
- Étant donné h(M) , il est difficile de calculer
M. - Étant donné M, il est difficile de trouver un
autre message M' tel que h(M)h(M'). - On exige quelquefois une quatrième propriété
- 4. Il est difficile de trouver deux messages
aléatoires M et M' tels que h(M)h(M').
34Nombres pseudo-aléatoires
- Un générateur de nombres pseudo-aléatoires est
une fonction g qui prend en entrée une séquence x
de t bits et produit en sortie une séquence g(x)
plus longue (disons t2 bits) telle que g(x)
"semble" aléatoire. - Soit f(x) une fonction à sens unique telle que
RSA - ( f(x) xe mod n où (e,n) est la clef publique).
- Si x est une séquence de bits aléatoires on
calcule f(x) et on choisit un des bits - On calcule ensuite f(f(x)) et on choisit un des
bits - On poursuit de la même manière t2 fois.
35Nombres pseudo-aléatoires
Si on utilise RSA, il suffit de prendre le bit le
plus significatif. Le bit le moins significatif
ne produit pas de bon résultat.
36Jouer à pile ou face
- Alice et Bernard veulent jouer à pile ou face par
téléphone. Comment peuvent-ils y parvenir s'il ne
se font pas confiance? - Bernard choisit un nombre x d'un ensemble
contenant autant de nombres pairs que de nombres
impairs. - Bernard calcule yf(x) où f est une fonction à
sens unique telle que RSA - Bernard envoie y à Alice
- Alice choisit un bit b et envoie son choix à
Bernard - Bernard envoie x à Alice
- Alice vérifie que yf(x)
- Alice gagne si b représente la parité de x.
37Jouer à pile ou face
- Autre méthode
- Bernard choisit deux séquences x et y de bits
aléatoires de sorte que le premier bit de x et y
est différent. - Bernard utilise sa clef publique pour calculer
x'E(x) et y'E(y) puis il envoie x' et y' à
Alice - Alice choisit z' ? x', y' et envoie z' à
Bernard. - Bernard envoie x et y à Alice
- Alice utilise la clef publique de Bernard pour
vérifier que x'E(x) et y'E(y). - Alice et Bernard connaissent z ? x,y tel que
z'E(z). - Si le premier bit de z est 1 alors Alice gagne
sinon Bernard gagne.