8INF433 - PowerPoint PPT Presentation

About This Presentation
Title:

8INF433

Description:

8INF433 Introduction la cryptographie – PowerPoint PPT presentation

Number of Views:37
Avg rating:3.0/5.0
Slides: 37
Provided by: Franco70
Category:
Tags: 8inf433 | miller | rabin

less

Transcript and Presenter's Notes

Title: 8INF433


1
8INF433
  • Introduction à la cryptographie

2
Terminologie
  • Expéditeur
  • Destinataire
  • Message
  • texte en claire
  • texte chiffré (cryptogramme)
  • texte en clair texte
    chiffré texte en
    clair

Chiffrement
Déchiffrement
3
Terminologie
  • 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

4
Formalisation
  • 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

5
Algorithme 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.

6
Clef 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

7
Clef 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
8
Deux 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)

9
Algorithme à 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)

10
Algorithme à 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"

11
Algorithme à 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

12
Algorithme à 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.

14
Nombres 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)

15
Protocole 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

16
Fonction à 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.

17
Cryptologie à 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

18
Comment 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)

19
Quel 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é.

20
RSA (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.

26
Pourquoi 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

27
Pourquoi 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

28
Pourquoi 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

29
Utilisation 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.

30
Exemple 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

31
Exemple 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.

32
Signature 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.

33
Fonction 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').

34
Nombres 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.

35
Nombres 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.
36
Jouer à 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.

37
Jouer à 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.
Write a Comment
User Comments (0)
About PowerShow.com