crypto - notions de base
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
26
Permuted Choice
51
Key Schedule in DES
52
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
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
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
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
31
RSA - Exemple3712238311054554312653073940759278908226060431711333957522660344516452597631618427745904320191345289329932161307440532227470572894812143586831978415597276496357090901215131304157569209798518321041155969357848833665315951327344675243940875769777890849012691532284208094963079297247130442219424390659030814289393029158483087368745078977086921845296741146321155667865528338164806795455941891006950919658990854567980723923746321155667865528338164806795455941891006950919658990854567980723923708463025535456869192355462995715735879062274586195721721110788286575638597094190776320509783239571346411902500470208485604082175094910771655311765297473803176765820587673140288910328834318508844721164427193903740413155649869959137365162108451137402243351859957665775396936281254253900685526245456141925880943740212888666974410972184534221817198089911953707545542033911964539366461792968165342652234639936742330970183533904623677693670380534264482173582384219251590438148524738896864244370318665419961537791396964900303958760654915244945043600135939277133952101251928572092597887511601959629615690271164318946373426500236310045550125192857209259788751160195962961569027116431894637342650023631004555718003693586055264910000907245183786689564417164907278356281009708545241354696608448116133878065485451517616730860510806578293652410872326366722805400387941086434822675009077826512101372819583165313969830908873174174745359886842985598071851922159700465081060684455953648089224944054276632967459230889848486843586547985051154284401646235269693179937784430217857019197098751629654665130278009966580052178208139317232379013232494682609200819981037684847167874989193694997914824716345060937125654122501953795166897601855087599313367797793952782227323337529580263122665358948205566515289466369032083287680432390611549350954590934061
RSA - Exemple6676402258670848337605369986794102620470905715674470565311124286290735488849298998356099963609214112849774586146960402870296707014781794902482829074841600836804586668550760461922520943498047157452688181318508591501948527635965034581536416565493160130613304074344579651083803040622402788980428251890947162922668980166844809636451980905109057965130757037924595807447975237126676101147387874214414915481359174392799496975703792459580744797523712667610114738787421441491548135917439279949695641565386688389171544630561180536972834347021920634899953191764016110392490439179803398975491765395923608511807653184706473318015782074127647875927390874929557168536651859126663738312359458912678709583800022451509424457564874484086877530845395521730636693891702394037184780362774643171470855830491959895146776294392143100245613061114299370005577513397172825491100560089408984196713197091181655429087610900832499783133824078696157849234198629916800867749593407759306602207814943807854996798945399364063685722697422361858411425048372451244655802708591797955910865230997565198382779529457569965742455786883835444236857223681399021865230997565198382779529457569965742455786883835444236857223681399021261363744082131478483203563615611346287019851423901842909741638620232051039712184983355286308685184282634615027441873586395040422815123995059959836537922272858474220716778366794513436380708657977421985359539316627998878972169596345534633649794922113017661316207477266113107012321403713882270221723233085472679533015079980622538354589480248200431447261915961905260340690619309392907241028494870016717296951770346790997944097506376492963567555800711621827727603182921790350290486090976266285396627024392536890256337101471683274045045830602286763142158159900791642627700054612322919219299716990769016902594646810414121420447240266162
32
RSA - Exemple6582756805241668614733933226595912700645630447416085291672187007045144649793226668732146346749041185886760836840306190695786990096521390675205019744076776510438851519416193184799191349243881528220384647292694460849152999588185988551951490663073117772381322675169458825936387861072430256598091490103278384821401136556784934102431512482864529170314100400120163648299853251663490560537945850894244038552524554777922401046100120163648299853251663490560537945850894244038552524554777922401046148907527451634251399216373835681414904793203742633730198782540569961916352019389698254478631309773749154478427634532593998741700138163198116645377208944002854850002696859826445621837941167021518477219093392321850877757909593326763114131296193984959261389879016697108810276638623167694057295932538078643444100512138025081797622723797210352196773268441946486164029610598990277105325704570163326134310764177000432371524746263939901189972784536294930363691490088106053123163000901015083933188011668215163893104666659513782749892374556051100401647771682271626727078370122424655126487845492350418521674263831897333324346744490397800178470122424655126487845492350418521674263831897333324346744490397800178468972640546214802412412583384350170488532060147568786231809409001263241969092252022679880113408073012216264404133887392600523096072386158554965158001034746119792130767224543803671883253708606713311325819922797552277184864847532612430280417794309093899237093805365204646255147267884961527773274119265709116613580084145421487687310394441054796393085308968803656085047721445921725001265007170689694281546275637045883890421917739819064873190801482873905815946222786727741861011102763247972904122211994117388204526335701759090678628159281519982214576527968538925172187200900703891385628400073322585075904853480465645434983707328762563
RSA - Exemple93589142785431826658729460807238965229159902173888795773647738726574610400822551124182720096168188828493894678810468847312655417262097890567845810965179753008730631546490302112133528180847612299040957642785731636412488093094977073956758842296317115846456984202455109029882398517953684125891446352791897307683834073696131409745229856386682726910433575176771288945278813686239650666540898943949516191200216077789887686457517677128894527881368623965066654089894394951619120021607778988768647364818378253248466991683072812203107919356466684015914858269999337442767725227540385332219685229859085154811040229657916338257385513314823459591633281445819843614596306024993617530979255612380390146906651636737188595827725256831199899846460272164627976407705707481640645076977986995510618004647193780822325014893407851137833251073753823403466269553292608813843895784099804170410417776084630628626106140596152070666952430184385750317629395430263126737740693640470589608346260188591118436753252984588804084971092299919565539701911191919188327308603766775339607722455632113506572191067587511868127863441975723921952633338565383882472245563211350657219106758751186812786344197572392195263333856538388240057190102564949233944519659592039923922174002472341471909709645621082995477461932289811812860555658809385189881181290561427408580916876571191122476328865871275538928438126611991937924624112632990739867854558756652453056197509891145781147357712836075540017742686609650933051721027230666357394623341363804591423775996522030941855888003949675582971125836162189014035954234930424749053693992776114261796407100127643280428706083531594582305946326827861270203356980346143245697021484375 mod 3233 = 123
64
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
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
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
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
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
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
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
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
41
Signatures digitales Chiffrement à clé publique (détails)
81
Signatures digitales Signature à clé publique (détails)
82
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
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
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
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
46
Encryptage des données
Encryptage des données
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