47
1 Cryptographie Dr. Naouel Ben Salem Grati Plan Général du cours Introduction Algorithmes standards de cryptographie Chiffrement symétrique Chiffrement de flux (Stream cipher) Chiffrement par blocs (Block cipher) Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification • HMAC • Signatures Gestion des clés Distribution des clés secrètes Génération et distribution des certificats Protocoles de sécurité et standards divers 2

Crypto - Notions de base

Embed Size (px)

Citation preview

Page 1: Crypto - Notions de base

1

Cryptographie

Dr. Naouel Ben Salem Grati

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

2

Page 2: Crypto - Notions de base

2

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

3

Introduction Cryptographie: vient du grec kruptos ("caché") et graphein ("écrire"). Vocabulaire:

chiffrement : transformation à l'aide d'une clé de chiffrement d'un message en clair (dit texte clair) en un message incompréhensible (dit message en clair (dit texte clair) en un message incompréhensible (dit texte chiffré) si on ne dispose pas d'une clé de déchiffrement (en anglais encryption) ;

cryptogramme : message chiffré ; décrypter : retrouver le message clair correspondant à un message

chiffré sans posséder la clé de déchiffrement (terme que ne possèdent pas les anglophones, qui eux « cassent » des codes secrets) ;

cryptographie : étymologiquement « écriture secrète », devenue par l'é extension l'étude de cet art;

cryptanalyse : science analysant les cryptogrammes en vue de les décrypter ;

cryptologie : science regroupant la cryptographie et la cryptanalyse

4

Page 3: Crypto - Notions de base

3

Un peu d’histoire Le premier « document » chiffré connu remonte à l'Antiquité. Il

s'agit d'une tablette d'argile, retrouvée en Irak, et datant du XVIe siècle av. J.-C. Un potier y avait gravé sa recette secrète en supprimant des consonnes et en modifiant l'orthographe des motssupprimant des consonnes et en modifiant l orthographe des mots.

La technique grecque: Entre le Xe et VIIe siècle av. J.-C. Technique de chiffrement par transposition, c'est-à-dire reposant sur le changement de position des lettres dans le message, en utilisant un bâton de diamètre déterminé appelée scytale. On enroulait en hélice une bande de cuir autour de la scytale avant d'y inscrire un message. Une fois déroulé, le message était envoyé au destinataire qui possédait un bâton identique nécessaire au déchiffrement qui possédait un bâton identique, nécessaire au déchiffrement.

5

Un peu d’histoire La technique des Hébreux: À partir du Ve siècle av. J.-C., l'une des

premières techniques de chiffrement est utilisée dans les textes religieux par les Hébreux qui connaissent plusieurs procédés.L l lé Atb h t éth d d b tit ti Le plus connu appelé Atbash est une méthode de substitution alphabétique inversée. Elle consiste à remplacer chaque lettre du texte en clair par une autre lettre de l'alphabet choisie de la manière suivante : A devient Z, B devient Y, etc.

Nabuchodonosor: Aux alentours de -600, Nabuchodonosor, roi de Babylone, employait une méthode originale : il écrivait sur le crâne rasé de ses esclaves, attendait que leurs cheveux aient repoussé, et il les envoyait à ses généraux Il suffisait ensuite de raser à nouveau il les envoyait à ses généraux. Il suffisait ensuite de raser à nouveau le messager pour lire le texte. Il s'agit toutefois de stéganographie à proprement parler et non pas de cryptographie : l'information est cachée et non pas codée. On remarque dans ce procédé une certaine fiabilité : en effet l'interception du message par un tiers est tout de suite remarquée.

6

Page 4: Crypto - Notions de base

4

Un peu d’histoire Les premiers « vrais » systèmes de cryptographie: Il faut

attendre -200 pour voir apparaître les premiers « vrais » systèmes de cryptographie. Ce sont essentiellement des chiffrements par substitutionsubstitution.Il existe différents types de substitutions : mono-alphabétique : remplace chaque lettre du message par une

autre lettre de l'alphabet poly-alphabétique : utilise une suite de chiffres mono-

alphabétiques (la clé) réutilisée périodiquement polygrammes : substitue un groupe de caractères dans le

èmessage par un autre groupe de caractères

7

Un peu d’histoire Le code de César: Le code de César est la méthode

cryptographique, par substitution mono-alphabétique, la plus ancienne (Ier siècle av. J.-C.).

C tt éth d t tili é d l' é i t bi ' ll it Cette méthode est utilisée dans l'armée romaine et bien qu'elle soit beaucoup moins robuste que la technique Atbash, la faible alphabétisation de la population la rend suffisamment efficace.

Méthode de chiffrement: Décaler les lettres de l'alphabet d'un nombre n. Par exemple, si on remplace A par D (n=3), on remplace B par E, C par F...

Le texte que nous souhaitons coder étant le suivant : « décaler les l tt s d l' l h b tlettres de l'alphabet »

Le texte codé est alors : « ghfdohu ohv ohwwuhv gh o'doskdehw »

8

Page 5: Crypto - Notions de base

5

Un peu d’histoire Le code de César: Inconvénient: Ce système est très peu sûr, puisqu'il n'y a que 26

lettres dans l'alphabet donc seulement 25 façons de chiffrer un l d d Cé ( t b tit l tt message avec le code de César (on ne peut substituer une lettre par

elle-meme). Pourtant sa simplicité conduisit les officiers sudistes à le réemployer durant la guerre de Sécession. L'armée russe en fit de même en 1915.

Un système connu et pourtant Le code de César a été utilisé sur des forums internet sous le nom de ROT13 (rot-ation de 13 lettres ou A→N...). Le ROT13 n'a pas pour but de rendre du texte confidentiel mais plutôt d'empêcher la lecture involontaire (d'une confidentiel, mais plutôt d empêcher la lecture involontaire (d une réponse à une devinette, ou de l'intrigue d'un film, etc.). Son utilisation est simple : il suffit de re-chiffrer un texte, codé en ROT13, une deuxième fois pour obtenir le texte en clair.

9

Un peu d’histoire Le chiffre de Vigenère est un système de chiffrement, élaboré par

Blaise de Vigenère (1523-1596), diplomate français du XVIe siècle. C'est un système de substitution poly-alphabétique ou de

chiffrement polyalphabétique Cela signifie qu'il permet de chiffrement polyalphabétique. Cela signifie qu il permet de remplacer une lettre par une autre qui n'est pas toujours la même, contrairement au chiffre de César ou à ROT13 qui se contentaient d'utiliser la même lettre de substitution. C'est donc un système relativement plus « solide » que ces deux systèmes.

Principe: Ce chiffrement introduit la notion de clé. Une clé se présente généralement sous la forme d'un mot ou d'une phrase. Pour pouvoir chiffrer notre texte, à chaque caractère nous utilisons une p ff , qlettre de la clé pour effectuer la substitution. Évidemment, plus la clé sera longue et variée et mieux le texte sera chiffré. Il faut savoir qu'il y a eu une période où des passages entiers d'œuvres littéraires étaient utilisés pour chiffrer les plus grands secrets. Les deux correspondants n'avaient plus qu'à avoir en leurs mains un exemplaire du même livre pour s'assurer de la bonne compréhension des messages. 10

Page 6: Crypto - Notions de base

6

Un peu d’histoire Table de Vigenère:

11

Un peu d’histoire Le chiffre de Vigenère: Pour chaque lettre en clair, on sélectionne

la colonne correspondante et pour une lettre de la clé on sélectionne la ligne adéquate, puis au croisement de la ligne et de la colonne on trouve la lettre chiffrée La lettre de la clé est à prendre dans trouve la lettre chiffrée. La lettre de la clé est à prendre dans l'ordre dans laquelle elle se présente et on répète la clé en boucle autant que nécessaire. clé : MUSIQUE texte : j'adore ecouter la radio toute la journee

j'adore ecouter la radio toute la journee

M USIQU EMUSIQU EM USIQU EMUSI QU EMUSIQU

| |||| || Colonne O, ligne I : on obtient la lettre W. | | Colonne D, ligne S : on obtient la lettre V. | Colonne A, ligne U : on obtient la lettre U. Colonne J, ligne M : on obtient la lettre V. 12

Page 7: Crypto - Notions de base

7

Un peu d’histoire Le texte chiffré est alors :

V'UVWHY IOIMBUL PM LSLYI XAOLM BU NAOJVUY. Si on veut déchiffrer ce texte, on regarde pour chaque lettre de la p

clé répétée la ligne correspondante, et on y cherche la lettre chiffrée. La première lettre de la colonne que l'on trouve ainsi est la lettre déchiffrée. V'UVWHY IOIMBUL PM LSLYI XAOLM BU NAOJVUY

M USIQU EMUSIQU EM USIQU EMUSI QU EMUSIQU

| |||| || Ligne I on cherche W: on trouve la colonne O | || Ligne I, on cherche W: on trouve la colonne O. | | Ligne S, on cherche V: on trouve la colonne D. | Ligne U, on cherche U: on trouve la colonne A.Ligne M, on cherche V: on trouve la colonne J.

13

Un peu d’histoire Enigma est une machine électromécanique portable d'origine

allemande, faisant appel à des rotors montés sur cylindres pour le chiffrement et le déchiffrement de l'information. Plus précisément, Enigma est une famille de machines car il en a existé de Enigma est une famille de machines, car il en a existé de nombreuses et subtiles variantes. Enigma fut commercialisée en Europe et dans le reste du monde dès le début des années 1920. Elle fut aussi adaptée pour une utilisation par les services militaires et diplomatiques de nombreuses nations.

Son utilisation la plus fameuse fut celle de l'Allemagne nazie et de ses alliés, avant et pendant la Seconde Guerre mondiale.

14

Page 8: Crypto - Notions de base

8

Un peu d’histoire Bien qu'elle fût considérée avant la Seconde Guerre mondiale

comme sûre par ses utilisateurs, les cryptologues britanniques furent, à plusieurs reprises et sur de longues durées, capables de décrypter les messages protégés par ces machines Les informations décrypter les messages protégés par ces machines. Les informations obtenues grâce à cette source leur donnèrent un net avantage dans la poursuite de la guerre.

Enigma chiffre les informations en réalisant le passage d'un courant électrique à travers une série de composants. Le courant est transmis en pressant une lettre sur le clavier. Après sa traversée dans un réseau complexe de fils, une lampe indique la lettre chiffrée chiffrée.

15

Critères de sécurité

Alice Bob

Confidentialité (confidentiality): garantie que seules les personnes autorisées ont accès aux éléments considérés.

Intégrité des données (data integrity): garantie que les éléments considérés sont exacts et complets.

Authentification (authentication): possibilité de vérifier l'identité d'une entité (personne, ordinateur...), afin d'autoriser l'accès de cette entité à des ressources (systèmes réseaux applications ) cette entité à des ressources (systèmes, réseaux, applications...).

Non-répudiation (non-repudiation): la possibilité de vérifier que l'envoyeur et le destinataire sont bien les parties qui disent avoir respectivement envoyé ou reçu le message.

16

Page 9: Crypto - Notions de base

9

Critères de sécurité Autres aspects importants

Disponibilité (availability): garantie que ces éléments considérés sont accessibles au moment voulu par les personnes autorisées.

Anonymat (privacy): garantie que l’identité et/ou la localisation Anonymat (privacy): garantie que l identité et/ou la localisation de l’entité reste(nt) confidentielle(s).

Un outil fondamental pour assurer la sécurité est lacryptographie

La cryptographie et la cryptanalyse sont des outils importants pour assurer la confidentialité d'une information (stockée ou transitée), son intégrité (toute modification est détectable), et l'identification de son origine (l'émetteur peut être identifié).

17

Types d’attaques

Alice Bob Ecoute

Eve

Pass

ive

Eve

ctive

Modification

Trudy

Alice Bob

FabricationAlice Bob

Ac Fabrication

Trudy

Alice

Re-jeux

Trudy

Alice Bob

18

Page 10: Crypto - Notions de base

10

Primitives Cryptographiques

Primitives sans clés

Séquences aléatoires

Arbitrary lengthhash functions

One-way permutations

Primitives de sécurité

Primitives à clé symétrique

Séquences Pseudo-aléatoires

Block ciphersChiffrement à clé

symétrique

Signatures

Arbitrary length hash functions (MACs)

Stream ciphers

Primitives à clé publique

Primitives d’identification

Chiffrement à clé publique

Signatures

Primitives d’identification 19

Chiffrement

Le nœud S envoie le message m au noeud R via un canal non sécurisé.

S chiffre m en utilisant un algorithme de chiffrement E et n lé d hiff m nt Kune clé de chiffrement K. EK(m) est le texte chiffré (ciphertext) m est le texte en clair (plaintext)

R décrypte le texte chiffré avec un algorithme de déchiffrement D et d'une clé de déchiffrement K’

20

Page 11: Crypto - Notions de base

11

Primitives Cryptographiques

Primitives sans clés

Séquences aléatoires

Arbitrary lengthhash functions

One-way permutations

Primitives de sécurité

Primitives à clé symétrique

Séquences Pseudo-aléatoires

Block ciphersChiffrement à clé

symétrique

Signatures

Arbitrary length hash functions (MACs)

Stream ciphers

K = K’

Primitives à clé publique

Primitives d’identification

Chiffrement à clé publique

Signatures

Primitives d’identificationK ≠ K’ 21

Cryptographie symétrique Aussi appelée cryptographie à clé secrète Les algorithmes de chiffrement symétrique se fondent sur une

même clé pour chiffrer et déchiffrer un message. Le problème de tt t h i t l lé i d it t t t l t cette technique est que la clé, qui doit rester totalement

confidentielle, doit être transmise au correspondant de façon sûre. Exemples d’algorithmes de chiffrement symétrique très utilisés :

Chiffre de Vernam DES 3DES AESAES RC4 RC5 …

22

Page 12: Crypto - Notions de base

12

Cryptographie asymétrique Aussi appelée cryptographie à clé publique (et privée) Pour résoudre le problème de l'échange de clés, la cryptographie

asymétrique a été mise au point dans les années 1970. Elle se base l i i d d lésur le principe de deux clés :

une publique, permettant le chiffrement ; une privée, permettant le déchiffrement.

Comme son nom l'indique, la clé publique est mise à la disposition de quiconque désire chiffrer un message. Ce dernier ne pourra être déchiffré qu'avec la clé privée, qui doit être confidentielle.

Quelques algorithmes de cryptographie asymétrique très utilisés :Q q g yp g p y q RSA (chiffrement et signature); DSA (signature); Protocole d'échange de clés Diffie-Hellman (échange de clé); …

23

Cryptographie asymétrique Le principal inconvénient de RSA et des autres algorithmes à clés

publiques est leur grande lenteur par rapport aux algorithmes à clés secrètes. RSA est par exemple 1000 fois plus lent que DES. En pratique dans le cadre de la confidentialité on s'en sert pour pratique, dans le cadre de la confidentialité, on s en sert pour chiffrer un nombre aléatoire qui sert ensuite de clé secrète pour un algorithme de chiffrement symétrique . C'est le principe qu'utilisent des logiciels comme PGP par exemple.

La cryptographie asymétrique est également utilisée pour assurer l'authenticité d'un message. L'empreinte du message est chiffrée à l'aide de la clé privée et est jointe au message. Les destinataires déchiffrent ensuite le cryptogramme à l'aide de la clé publique et déchiffrent ensuite le cryptogramme à l aide de la clé publique et retrouvent normalement l'empreinte. Cela leur assure que l'émetteur est bien l'auteur du message. On parle alors de signature ou encore de scellement.

24

Page 13: Crypto - Notions de base

13

Fonctions de Hashage Une fonction de hachage est une fonction qui convertit un grand

ensemble en un plus petit ensemble, l'empreinte. Il est impossible de la déchiffrer pour revenir à l'ensemble d'origine, ce n'est donc pas une technique de chiffrementpas une technique de chiffrement.

Quelques fonctions de hachage très utilisées : MD5 ; SHA-1 ; SHA-256 ; …

L'empreinte d'un message ne dépasse généralement pas 256 bits L empreinte d un message ne dépasse généralement pas 256 bits (maximum 512 bits pour SHA-512) et permet de vérifier son intégrité.

25

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

26

Page 14: Crypto - Notions de base

14

Block Ciphers Le chiffrement par bloc (en anglais block cipher) est une méthode

de chiffrements symétrique qui découpe le texte à chiffrer en blocs de taille généralement fixe.

L t ill d bl t i t 32 t 512 bit La taille de bloc est comprise entre 32 et 512 bits Dans le milieu des années 1990 le standard était de 64 bits Depuis 2000 le standard est de 128 bits

Les blocs sont ensuite chiffrés les uns après les autres.

Il est possible de transformer un chiffrement de bloc en un chiffrement par flot en utilisant un mode d'opérationchiffrement par flot en utilisant un mode d opération ECB (chaque bloc chiffré indépendamment des autres) CFB (on chaîne le chiffrement en effectuant un XOR entre les

résultats successifs).

27

Block Ciphers

Electronic Code Book mode (ECB):

+ : implementation simple eK

x1

eK

x2

eK

x3

+ : implementation simple- : un attaquant peut aisément remplacer

un block

Cipher FeedBack mode (CFB):

y1 y2 y3

IV eK eK

x1 x2

...

y1 y2

IV: Initial Vector• But: chaque message codé devient unique• Génération: timestamp ou nombre aléatoire (random number) 28

Page 15: Crypto - Notions de base

15

Block CiphersCipher Block Chaining mode (CBC):

IV= y0

x1

...

x2

eKIV= z0 z1 eK z2 ...

Output FeedBack mode (OFB):y1

eK

y2

eK

x2

y2

x1

y1

29

Stream Ciphers Le texte en clair est combiné avec un keystream (un flot de clés de

chiffrement pseudo-aléatoire), généralement en utilisant l’opération exclusive-or (xor).

1 ti d 1 time pad:

30

Page 16: Crypto - Notions de base

16

Stream Ciphers Un synchronous stream cipher est un schéma de chiffrement dans

lequel le keystream est généré indépendament du text en clair (plaintext) et du texte chiffré (ciphertext). é i i i l (i i i l ) 0 : état initial (initial state) f : Next-state function G : The function which produces the keystream zi

H : Output function.

31

Stream Ciphers La plupart des schémas de chiffrement à flot proposés dans la

littérature sont additifs Definition: Un binary additive stream cipher est un synchronous

t i h d l l l k t l t t l i t l t t stream cipher dans lequel le keystream, le texte en clair et le texte chiffré sont des données binaires, et le résultat de la fonction h est une fonction XOR.

32

Page 17: Crypto - Notions de base

17

Data Encryption Standard (DES)

C’est LE schéma de chiffrement symétrique par bloc Developpé dans les années 70 par IBM, standard ANSI en 1981

( )(ANSI X3.92) Largement utilisé dans les transactions bancaires N’est plus considéré comme suffisament robuste Principe:

Plaintext: 64 bits

DESKey: 56 bits

Ciphertext: 64 bits33

DES AlgorithmPlaintext

IP

L0 R0K

64 bits

32 bits 32 bits

f K1

L1=R0

f K2

L2 =R1

R L R K1 0 0 1 f ( , )

R L R K2 1 1 2 f ( , )

48 bits

48 bitsKey

schedulerK

56 bits

L15=R14

f K16

IP-1

Ciphertext

L16=R15

R L R K15 14 14 15 f ( , )

48 bits

64 bits

R L R K16 15 15 16 f ( , )

IP: Initial Permutation

34

Page 18: Crypto - Notions de base

18

Initial PermutationIP

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6

IP-1

40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 62 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7

38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25

Comme résultat de la permutation initiale IP, le 58ème bit Comme résultat de la permutation initiale IP, le 58 bit devient le 1er, le 50ème devient le second, …

IP-1 est la fonction inverse de la permutation initiale IP

35

Initial Permutation

36

Page 19: Crypto - Notions de base

19

DES AlgorithmPlaintext

IP

L0 R0K

64 bits

32 bits 32 bits

f K1

L1=R0

f K2

L2 =R1

R L R K1 0 0 1 f ( , )

R L R K2 1 1 2 f ( , )

48 bits

48 bitsKey

schedulerK

56 bits

L15=R14

f K16

IP-1

Ciphertext

L16=R15

R L R K15 14 14 15 f ( , )

48 bits

64 bits

R L R K16 15 15 16 f ( , )

IP: Initial Permutation

37

One Round of DES

Li-1 Ri-1 Key

Shift Shift

32 bits 32 bits 56 bits

32 bits

Expansion permutation

S-Box Substitution

Shift Shift

Compr. permutation

32 bits

48 bits

48 bits

P-Box Permutation

Li Ri Key

32 bits

32 bits

38

Page 20: Crypto - Notions de base

20

Expansion Permutation Function : 32-bit block input 48-bit block output

E32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1

The first three bits of E(R) are the bits in positions 32, 1 and 2 of R while the last 2 bits of E(R) are the bits in positions 32 and 1.

39

Expansion Permutation

40

Page 21: Crypto - Notions de base

21

One Round of DES

Li-1 Ri-1 Key

Shift Shift

32 bits 32 bits 56 bits

32 bits

Expansion permutation

S-Box Substitution

Shift Shift

Compr. permutation

32 bits

48 bits

48 bits

P-Box Permutation

Li Ri Key

32 bits

32 bits

41

S-Box Substitution

42

Page 22: Crypto - Notions de base

22

S-Box Substitution Function : 6-bit block input 4-bit block output

Given a 6-bit input the 4-bit output is found by selecting: Given a 6-bit input, the 4-bit output is found by selecting: the row using the outer two bits (the first and last bits), and the column using the inner four bits.

For example, an input "011011" has outer bits "01" and inner bits "1101"; the corresponding output would be "1001"

43

One Round of DES

Li-1 Ri-1 Key

Shift Shift

32 bits 32 bits 56 bits

32 bits

Expansion permutation

S-Box Substitution

Shift Shift

Compr. permutation

32 bits

48 bits

48 bits

P-Box Permutation

Li Ri Key

32 bits

32 bits

44

Page 23: Crypto - Notions de base

23

P-Box Permutation The permutation function P yields a 32-bit output from

a 32-bit input by permuting the bits of the input block.

P16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 14

32 27 3 919 13 30 622 11 4 25

45

P-Box Permutation

46

Page 24: Crypto - Notions de base

24

DES AlgorithmPlaintext

IP

L0 R0K

64 bits

32 bits 32 bits

f K1

L1=R0

f K2

L2 =R1

R L R K1 0 0 1 f ( , )

R L R K2 1 1 2 f ( , )

48 bits

48 bitsKey

schedulerK

56 bits

L15=R14

f K16

IP-1

Ciphertext

L16=R15

R L R K15 14 14 15 f ( , )

48 bits

64 bits

R L R K16 15 15 16 f ( , )

IP: Initial Permutation

47

One Round of DES

Li-1 Ri-1 Key

Shift Shift

32 bits 32 bits 56 bits

32 bits

Expansion permutation

S-Box Substitution

Shift Shift

Compr. permutation

32 bits

48 bits

48 bits

P-Box Permutation

Li Ri Key

32 bits

32 bits

48

Page 25: Crypto - Notions de base

25

Key Schedule in DES

49

Permuted Choice

PC-1 PC-2

57 49 41 33 25 17 9 14 17 11 24 1 51 58 50 42 34 26 18 3 28 15 6 21 1010 2 59 51 43 35 27 23 19 12 4 26 819 11 3 60 52 44 36 16 7 27 20 13 2

41 52 31 37 47 5563 55 47 39 31 23 15 30 40 51 45 33 487 62 54 46 38 30 22 44 49 39 56 34 5314 6 61 53 45 37 29 46 42 50 36 29 32

C

D14 6 61 53 45 37 29 46 42 50 36 29 3221 13 5 28 20 12 4

50

Page 26: Crypto - Notions de base

26

Permuted Choice

51

Key Schedule in DES

52

Page 27: Crypto - Notions de base

27

Left ShiftIteration Nb of LS

1 12 13 24 25 26 27 28 29 110 2

1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1

1 Left Shift (LS)

1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 110 211 212 213 214 215 216 1 53

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

54

Page 28: Crypto - Notions de base

28

Primitives Cryptographiques

Primitives sans clés

Séquences aléatoires

Arbitrary lengthhash functions

One-way permutations

Primitives de sécurité

Primitives à clé symétrique

Séquences Pseudo-aléatoires

Block ciphersChiffrement à clé

symétrique

Signatures

Arbitrary length hash functions (MACs)

Stream ciphers

K = K’

Primitives à clé publique

Primitives d’identification

Chiffrement à clé publique

Signatures

Primitives d’identificationK ≠ K’ 55

Chiffrement asymétrique Confidentialité: Alice utilise la clé publique de Bob pour

coder un message que seul Bob (en possession de la clé privée) peut décoder

Authentification: Bob utilise sa propre clé privée pour coder un message que Alice peut décoder avec la clé publique

Algorithmes de génération de paires de clés Algorithme de chiffrement Algorithme de déchiffrement Algorithme de déchiffrement Examples:RSAElGamalECC

56

Page 29: Crypto - Notions de base

29

RSA: introduction RSA: Rivest, Shamir et Adleman du MIT en 1977 Système le + connu et le + largement répandu 100 à 1000 fois plus lent que DES00 à 000 fo s plus lent que DES basé sur l'élévation à une puissance dans un champ fini

sur des nombres entiers modulo un nombre premier Le nombre d’exponentiation prend environ O((log n)3)

opérations → facile emploie de grands nombres entiers (par exemple 1024

bits)bits) sécurité due au coût de factoriser de grands nombres Le nombre de factorisation prend environ O(e log n log

log n) opérations → difficile Usage : confidentialité, authentification

57

RSA: principe Choisir p et q, deux nombres premiers distincts et de

taille à peu près égalesNoter le « module de chiffrement » n=pq

La longueur de n devrait être entre 1024 et 2048 bits Calculer l'indicatrice d'Euler de : (n)=(p-1)(q-1) Choisir e, un entier premier avec (n), appelé « exposant

de chiffrement » (pgcd(e, (n))=1). Comme e est premier avec (n), il est, d'après le

théorème de Bachet-Bézout inversible mod (n) c'est-théorème de Bachet Bézout, inversible mod (n), c està-dire qu'il existe un entier d tel que ed1 mod (n). dest l'exposant de déchiffrement.

Le couple (n,e) est appelé clé publique d est appelé clé privée.

58

Page 30: Crypto - Notions de base

30

RSA – Exemple Bob choisi p=61 et q=53

n=pq=3233 (n)=60x52=3120

Bob choisi e tel que pgcd((n),e)=1. On suppose que e=17 d=e-1 mod (n) = 2753 mod 3120 (clé privée)

Bob publie n et e (clé publique)

Chiffrement : enc(X) = (X^e) mod n = (X^17) mod 3233 Chiffrement : enc(X) = (X e) mod n = (X 17) mod 3233 Déchiffrement : dec(X) = (X^d) mod n = (X^2753) mod 3233

enc(123) = (123^17) mod 3233 = 337587917446653715596592958817679803 mod 3233 = 855

59

RSA - Exemple dec(855) = (855^2753) mod 3233

= 504328889584160687344228991273944666314538783600355093155549675645010556286120825599787442454281100543834986542893363849302464514415078517209179665478263530709963803538732650089668607477182974582295034295040 9035818459409563 9385865989368838083602840132509 68620 669 396607903581845940956377938586598936883808360284013250976862076697739667533250542826093475735137988063256482639334453092594385562429233017519771900169249169128091505960191787601713497254392792156967017899021343071464689712796102771813783945869677289869342365240311693217089269617643726521315665833158712459759803042503144006837883246101784830717585474547252069688925995892544366701432205469543174002285500923863694244485597333306305160738530286321930291350374547194675777671357954965202919790505781532871558392070303159585937493663283548602090830635507044556588963193180119341220178269233441013301164806963340240750469525886698765866900622402410208846650753026395387052663193358473481094876156227165866900622402410208846650753026395387052663193358473481094876156227126037327597360375237388364148088948438096157757045380081079469800667348777958837582899851327930703533551275090439948178979054899338121732945853544741326805698108726334828546381688504882434658897839333466254454006619645218766694795528023088412465948239275105770491133290256843065052292561427303898320890070515110552506189941712317779515797942971179547529630183784386291397787766129820738907279676720235011399271581964273076407418989190486860748124549315795374377124416014387650691458681964022760277668695309039513149683190973245054523459447725658788769269335391869235481851854242092306499640682218449011913571088542442852112077

60

Page 31: Crypto - Notions de base

31

RSA - Exemple3712238311054554312653073940759278908226060431711333957522660344516452597631618427745904320191345289329932161307440532227470572894812143586831978415597276496357090901215131304157569209798518321041155969357848833665315951327344675243940875769777890849012691532284208094963079297247130442219424390659030814289393029158483087368745078977086921845296741146321155667865528338164806795455941891006950919658990854567980723923746321155667865528338164806795455941891006950919658990854567980723923708463025535456869192355462995715735879062274586195721721110788286575638597094190776320509783239571346411902500470208485604082175094910771655311765297473803176765820587673140288910328834318508844721164427193903740413155649869959137365162108451137402243351859957665775396936281254253900685526245456141925880943740212888666974410972184534221817198089911953707545542033911964539366461792968165342652234639936742330970183533904623677693670380534264482173582384219251590438148524738896864244370318665419961537791396964900303958760654915244945043600135939277133952101251928572092597887511601959629615690271164318946373426500236310045550125192857209259788751160195962961569027116431894637342650023631004555718003693586055264910000907245183786689564417164907278356281009708545241354696608448116133878065485451517616730860510806578293652410872326366722805400387941086434822675009077826512101372819583165313969830908873174174745359886842985598071851922159700465081060684455953648089224944054276632967459230889848486843586547985051154284401646235269693179937784430217857019197098751629654665130278009966580052178208139317232379013232494682609200819981037684847167874989193694997914824716345060937125654122501953795166897601855087599313367797793952782227323337529580263122665358948205566515289466369032083287680432390611549350954590934061

RSA - Exemple6676402258670848337605369986794102620470905715674470565311124286290735488849298998356099963609214112849774586146960402870296707014781794902482829074841600836804586668550760461922520943498047157452688181318508591501948527635965034581536416565493160130613304074344579651083803040622402788980428251890947162922668980166844809636451980905109057965130757037924595807447975237126676101147387874214414915481359174392799496975703792459580744797523712667610114738787421441491548135917439279949695641565386688389171544630561180536972834347021920634899953191764016110392490439179803398975491765395923608511807653184706473318015782074127647875927390874929557168536651859126663738312359458912678709583800022451509424457564874484086877530845395521730636693891702394037184780362774643171470855830491959895146776294392143100245613061114299370005577513397172825491100560089408984196713197091181655429087610900832499783133824078696157849234198629916800867749593407759306602207814943807854996798945399364063685722697422361858411425048372451244655802708591797955910865230997565198382779529457569965742455786883835444236857223681399021865230997565198382779529457569965742455786883835444236857223681399021261363744082131478483203563615611346287019851423901842909741638620232051039712184983355286308685184282634615027441873586395040422815123995059959836537922272858474220716778366794513436380708657977421985359539316627998878972169596345534633649794922113017661316207477266113107012321403713882270221723233085472679533015079980622538354589480248200431447261915961905260340690619309392907241028494870016717296951770346790997944097506376492963567555800711621827727603182921790350290486090976266285396627024392536890256337101471683274045045830602286763142158159900791642627700054612322919219299716990769016902594646810414121420447240266162

Page 32: Crypto - Notions de base

32

RSA - Exemple6582756805241668614733933226595912700645630447416085291672187007045144649793226668732146346749041185886760836840306190695786990096521390675205019744076776510438851519416193184799191349243881528220384647292694460849152999588185988551951490663073117772381322675169458825936387861072430256598091490103278384821401136556784934102431512482864529170314100400120163648299853251663490560537945850894244038552524554777922401046100120163648299853251663490560537945850894244038552524554777922401046148907527451634251399216373835681414904793203742633730198782540569961916352019389698254478631309773749154478427634532593998741700138163198116645377208944002854850002696859826445621837941167021518477219093392321850877757909593326763114131296193984959261389879016697108810276638623167694057295932538078643444100512138025081797622723797210352196773268441946486164029610598990277105325704570163326134310764177000432371524746263939901189972784536294930363691490088106053123163000901015083933188011668215163893104666659513782749892374556051100401647771682271626727078370122424655126487845492350418521674263831897333324346744490397800178470122424655126487845492350418521674263831897333324346744490397800178468972640546214802412412583384350170488532060147568786231809409001263241969092252022679880113408073012216264404133887392600523096072386158554965158001034746119792130767224543803671883253708606713311325819922797552277184864847532612430280417794309093899237093805365204646255147267884961527773274119265709116613580084145421487687310394441054796393085308968803656085047721445921725001265007170689694281546275637045883890421917739819064873190801482873905815946222786727741861011102763247972904122211994117388204526335701759090678628159281519982214576527968538925172187200900703891385628400073322585075904853480465645434983707328762563

RSA - Exemple93589142785431826658729460807238965229159902173888795773647738726574610400822551124182720096168188828493894678810468847312655417262097890567845810965179753008730631546490302112133528180847612299040957642785731636412488093094977073956758842296317115846456984202455109029882398517953684125891446352791897307683834073696131409745229856386682726910433575176771288945278813686239650666540898943949516191200216077789887686457517677128894527881368623965066654089894394951619120021607778988768647364818378253248466991683072812203107919356466684015914858269999337442767725227540385332219685229859085154811040229657916338257385513314823459591633281445819843614596306024993617530979255612380390146906651636737188595827725256831199899846460272164627976407705707481640645076977986995510618004647193780822325014893407851137833251073753823403466269553292608813843895784099804170410417776084630628626106140596152070666952430184385750317629395430263126737740693640470589608346260188591118436753252984588804084971092299919565539701911191919188327308603766775339607722455632113506572191067587511868127863441975723921952633338565383882472245563211350657219106758751186812786344197572392195263333856538388240057190102564949233944519659592039923922174002472341471909709645621082995477461932289811812860555658809385189881181290561427408580916876571191122476328865871275538928438126611991937924624112632990739867854558756652453056197509891145781147357712836075540017742686609650933051721027230666357394623341363804591423775996522030941855888003949675582971125836162189014035954234930424749053693992776114261796407100127643280428706083531594582305946326827861270203356980346143245697021484375 mod 3233 = 123

64

Page 33: Crypto - Notions de base

33

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

65

Fonctions de hashage Une fonction de hachage est une fonction qui, à partir d'une donnée

fournie en entrée, calcule une empreinte servant à identifier rapidement, bien qu'incomplètement, la donnée initiale.

Cette empreinte peut être aussi appelée selon le contexte somme de contrôle, hash, résumé de message, condensé, condensat ou encore empreinte cryptographique

66

Page 34: Crypto - Notions de base

34

Fonctions de hashage Propriétés à respecter pour une fonction de hashage cryptographique:

Collision resistance: Il est très difficile de trouver deux valeurs x et x’ telles que h(x) = h(x’).

W k lli i i t : Et t d é l il st t ès Weak collision resistance: Etant donné une valeur x, il est très difficile de trouver une valeur x' qui vérifie h(x’) = h(x). Cette propriété est parfois appelée second pre-image resistance.

One-way property: Pour n'importe quelle valeur hash y, il est très difficile de trouver une valeur x telle que h(x) = y. Cette propriété est parfois appelée pre-image resistance.

Hash function

(hash

Très difficile = techniquement impossible en pratique par toutes techniques algorithmiques et matérielles, en un temps raisonnable

Data

Arbitrary length

Digest

Fixed length

(hash,hash value,hash code)

67

Principe de base

CV = chaining variableCV = chaining variablef = algorithme de compressionk = Nombre de blocsn = longueur du code hashb = longueur du bloc

68

Page 35: Crypto - Notions de base

35

Exemple: MD5 MD5: Message Digest 5, est une fonction de hachage

cryptographique qui permet d'obtenir l'empreinte numérique d'un fichier / message

I té R ld Ri t (l R d RSA) Inventé par Ronald Rivest (le R de RSA) En 1996, une faille qualifiée de grave (possibilité de créer des

collisions à la demande) est découverte et indique que MD5 devrait être mis de côté au profit de fonctions plus robustes comme SHA-1.

MD5 est encore largement utilisé comme outil de vérification lors des téléchargements pour valider l'intégrité de la version téléchargée grâce à l'empreinte.

ê é ' ' MD5 peut aussi être utilisé pour calculer l'empreinte d'un mot de passe ; c'est le système employé dans GNU/Linux plutôt que de stocker les mots de passe dans un fichier, ce sont

leurs empreintes MD5 qui sont enregistrées; quelqu'un qui lirait ce fichier ne pourra pas découvrir les mots de passe.

69

MD5: Principe

70

Page 36: Crypto - Notions de base

36

MD5: Principe

Les quatre fonctions non-linéaires disponibles sont :

Notation: clss est une rotation de s bits vers

la gauche, s varie pour chaque opération. opération.

[+] symbolise l'addition modulo 232.

symbolisent respectivement les opérations booléennes XOR, AND, OR et NOT.

71

MD5: Principe

72

Page 37: Crypto - Notions de base

37

MD5: Pseudocode//Note: All variables are unsigned 32 bits and wrap modulo 2^32 when calculating

var int[64] r, k

//r specifies the per-round shift amounts

r[ 0..15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}

r[16..31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20}

r[32..47] := {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23}

r[48..63] := {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}

//Use binary integer part of the sines of integers (Radians) as constants:

for i from 0 to 63

k[i] := floor(abs(sin(i + 1)) × (2 pow 32))

//Initialize variables:

var int h0 := 0x67452301

ivar int h1 := 0xEFCDAB89

var int h2 := 0x98BADCFE

var int h3 := 0x10325476

//Pre-processing:

append "1" bit to message

append "0" bits until message length in bits ≡ 448 (mod 512)

append bit /* not byte */ length of unpadded message as 64-bit little-endian integer to message

73

MD5: Pseudocode//Process the message in successive 512-bit chunks:

for each 512-bit chunk of message

break chunk into sixteen 32-bit little-endian words w[i], 0 ≤ i ≤ 15

//Initialize hash value for this chunk:

var int a := h0

var int b := h1

var int c := h2

var int d := h3

//Main loop:

for i from 0 to 63

if 0 ≤ i ≤ 15 then

f := (b and c) or ((not b) and d)

g := i

l if ≤ i ≤else if 16 ≤ i ≤ 31

f := (d and b) or ((not d) and c)

g := (5×i + 1) mod 16

else if 32 ≤ i ≤ 47

f := b xor c xor d

g := (3×i + 5) mod 16

else if 48 ≤ i ≤ 63

f := c xor (b or (not d))

g := (7×i) mod 16

74

Page 38: Crypto - Notions de base

38

MD5: Pseudocode//Main loop:

for i from 0 to 63

temp := d

d := c

c := b

b := b + leftrotate((a + f + k[i] + w[g]) , r[i])

a := temp

//Add this chunk's hash to result so far:

h0 := h0 + a

h1 := h1 + b

h2 := h2 + c

h3 := h3 + d

i i d d d //( d li l di )var int digest := h0 append h1 append h2 append h3 //(expressed as little-endian)

75

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

76

Page 39: Crypto - Notions de base

39

MACs Message Authentication Code: Code accompagnant des données dans le but

d'assurer l'intégrité de ces dernières Concept relativement semblable aux fonctions de hachage: Algorithmes qui

créent un petit bloc authentificateur de taille fixe créent un petit bloc authentificateur de taille fixe. Différence: Ce bloc authentificateur ne se base plus uniquement sur le

message, mais également sur une clé secrète. Tout comme les fonctions de hachage, les MAC n’ont pas besoin d’être

réversibles; le récepteur exécutera le même calcul sur le message et le comparera avec le MAC reçu.

Le MAC assure: une fonction de vérification de l'intégrité du message Authentification de l’expéditeur, détenteur de la clé secrète

Peut (rarement) être employé comme un chiffrement supplémentaire Calculé avant ou après le chiffrement principal (conseillé de le faire avant) Examples

CBC-MAC HMAC

77

CBC-MAC Cipher Block Chaining –MAC

Ek(Mi) : Chiffrement sur un bloc de données avec la clé on découpe les données en blocs de taille fixe m1 … mxp on définit un vecteur d'initialisation C1=0 on traite les blocs au fur et à mesure : Ci+1= Ek(CiMi)

78

Page 40: Crypto - Notions de base

40

HMAC Keyed-Hash MAC: MAC calculé en utilisant une fonction de hachage

cryptographique en combinaison avec une clé secrète. N'importe quelle fonction itérative de hachage, comme MD5 ou SHA-1, peut

être utilisée (HMAC-MD5 ou HMAC-SHA-1) être utilisée (HMAC MD5 ou HMAC SHA 1) Qualité cryptographique du HMAC dépend (Qualité cryptographique de la

fonction de hachage, taille clé, qualité clé) La fonction HMAC est définie comme suit :

Avec : h : une fonction de hachage itérative, K : la clé secrète de la taille du bloc de la fonction hK la clé secrète de la taille du bloc de la fonction h m : le message à authentifier, "||" désigne une concaténation et "" un ou exclusif, ipad et opad, chacune de la taille d'un bloc, sont définies par :

• ipad = 0x363636...3636 et opad = 0x5c5c5c...5c5c. Donc, si la taille de bloc de la fonction de hachage est 512, ipad et opad sont 64 répétitions des octets, respectivement, 0x36 et 0x5c.

79

Signatures digitales Chiffrement à clé publique

Signature à clé publique

80

Page 41: Crypto - Notions de base

41

Signatures digitales Chiffrement à clé publique (détails)

81

Signatures digitales Signature à clé publique (détails)

82

Page 42: Crypto - Notions de base

42

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

83

Diffie-Hellman: Principe

84

Page 43: Crypto - Notions de base

43

Diffie-Hellman: Exemple

Alice et Bob choisissent un nombre premier p=23 et une base g=3 Alice choisit un nombre secret a=6 Alice choisit un nombre secret a=6 Elle envoie à Bob la valeur ga [mod p] = 36 [23] = 16 Bob choisit à son tour un nombre secret b=15 Bob envoie à Alice la valeur gb [mod p] = 315 [23] = 12 Alice calcule la clé secrète : (gb [mod p])a [mod p] = 126 [23] = 9 Bob obtient la même clé qu'Alice : (ga [mod p])b [mod p] = 1615 [23] = 9

85

Certificats Un certificat électronique est une carte d'identité numérique dont

l'objet est d'identifier une entité physique ou non-physique.

Le certificat numérique ou électronique est un lien entre l'entité physique et l'entité numérique (Virtuel).

L'autorité de certification fait foi de tiers de confiance et atteste du lien entre l'identité physique et l'entité numérique.

Le standard le plus utilisé pour la création des certificats numériques Le standard le plus utilisé pour la création des certificats numériques est le X.509.

86

Page 44: Crypto - Notions de base

44

Certificats Un certificat électronique contient :

un numéro de série; l'identification de l'algorithme de signature; la désignation de l'autorité de certification émettrice; la période de validité au-delà de laquelle il sera suspendu ou révoqué; le nom du titulaire de la clé publique; l'identification de l'algorithme de chiffrement et la valeur de la clé

publique constitués d'une paire de clés asymétriques des informations complémentaires optionnelles; l'identification de l'algorithme de signature et la valeur de la g g

signature numérique.

Un certificat électronique est géré tout au long de son cycle de vie (Certificate revocation list (CRL), Protocole de vérification en ligne de certificat) avec une infrastructure à clés publiques (PKI pour Public Key Infrastructure).

87

Plan Général du cours Introduction Algorithmes standards de cryptographie

Chiffrement symétrique • Chiffrement de flux (Stream cipher)( p )• Chiffrement par blocs (Block cipher)

Chiffrement asymétrique Fonctions de hashage Intégrité et Authentification

• HMAC • Signatures

Gestion des clés Distribution des clés secrètes Génération et distribution des certificats

Protocoles de sécurité et standards divers

88

Page 45: Crypto - Notions de base

45

Intruder-in-the-middle contre D-H

Le protocole Diffie-Hellman ressemble à ca: U V

UaVa

Un attaquant peut effectuer les substitutions suivantes:

U W

Ua'Va V

'UaVa

, modU Va aU VK p

', modU Va a

U WK p ', modU Va a

V WK p

Raison : Pas d'authentification

89

Station-to-Station (STS) Protocol :(1) Alice → Bob : gx

(2) Alice ← Bob : gy, CertB, EK(SB(gy, gx)) (3) Alice → Bob : CertA, EK(SA(gx, gy))

Authentification de l’abonné GSM

90

Page 46: Crypto - Notions de base

46

Encryptage des données

Encryptage des données

Page 47: Crypto - Notions de base

47

Références “Handbook of Applied Cryptography”, Alfred J. Menezes, Paul C. van

Oorschot and Scott A. Vanstone, CRC Press, October 1996.http://www.cacr.math.uwaterloo.ca/hac/index.html

http://www.wikipedia.org/ Cours de Systèmes de conduite des ordinateurs

http://www.montefiore.ulg.ac.be/~herbiet/sco.html Tutorial sur la cryptographie

http://www.uqtr.ca/~delisle/Crypto/ Exemple RSA

htt // d li t/ t / s /http://www.apprendre-en-ligne.net/crypto/rsa/

93