Vous êtes sur la page 1sur 179

Sécurité des Réseaux

Chap. 1 : Outils de sécurité Cryptographie Openssl/gnugpg

Chap. 2 : Protocoles d’Authentification

Chap. 3 : VPN IPSec

Chap. 4: Blockchain : Bitcoin et contrat intelligent

Chap. 5 : Sécurité SOA WS-SECURITY

Chap. 6 : Attaques réseaux et failles logiciels

Chap. 7 : IDS/IPS

1
Chapitre I

Outils de sécurité
Cryptographie

2
PLAN

 Crypto sym DES, IDEA, Blowfish, RC2 , RC4,


AES
 Crypto asym RSA, DSA, EC
 Fonction hachage et signature numérique
 Certificats électronique
 Application à JBOSSX/tomcat/HTTPS, DNS,
SET, …..
3 3
4 Critères de sécurité
 La confidentialité (Masteracrd)

 L'intégrité

 La disponibilité (fork)

 L'authentification (dnsspoof)

 La non-répudiation (set)
4 4
Cryptographie 1
On distingue 2 techniques de chiffrement:
 à clé symétrique, une clé qui doit impérativement

rester secrète est utilisée lors du chiffrement et du


déchiffrement.

Exemples: DES (bloc: Data Encryption Standard),


3DES (Triple DES), IDEA (bloc), RC2 (bloc), RC4
(flot), RC5 (bloc), AES
RC : Rivest Cipher (Ronald Rivest)

5 5
Cryptographie 2

 à clé asymétrique, où chaque utilisateur


possède une clé publique et une clé privée,
également connue sous le nom de cryptographie
à clé publique.

Exemple: RSA inventé par Rivest, Shamir et


Adleman, DSA, EC (récent : domaine recherché)

6 6
Cryptographie 3

 Les applications réelles nécessitent toutefois


des outils complémentaires comme la méthode
de Diffie-Hellman pour l'établissement des
clés secretes et les fonctions de
condensation ("Message Digests") pour la
génération de chaînes de contrôle ("Message
Authentication Code").

7 7
Cryptographie symétrique
 La même clé est utilisée pour le
chiffrement et le déchiffrement

8 8
Cryptographie symétrique

 La taille de l'ensemble des clés


possibles est un facteur déterminant
quant à la sécurité d'une méthode de
chiffrement.

 Le problème principal de la cryptographie à


clé secrète réside dans la transmission de la
clé par un canal sûr.

Garantie quel critère de sécurité?


9 9
Cryptographie symétrique
Conception alg.
 Algorithmes itératifs : une fonction f est
itérée t fois sur chaque bloc (taille du bloc
64, 128 bits…?fixe?).
 Génération de t clés de tour (ou sous-clés) à
partir de la clé secrète K (La taille des clés
48bits, 128 bits…?fixe?)
 Utilisation d’opérations simples et efficaces
(+, XOR, *, tableaux,…?)
10 10
Construction

11 11
Shèmas de feistel
Problème : On ne savait pas avant les travaux de Feistel construire des
bijections aléatoires : Comment construire une bijection a partir d’une fonction
f aléatoire qui transforme un mot de n bits en un mot aléatoire de n bits?
Feistel procède en chiffrant des blocs de 2n bits, qu'on partage en 2, partie
gauche, partie droite. La transformation de feistel est bijective et aléatoire (ki).

Pour déchifrer : même processus à t tours en inversant l’ordre des clefs Ki.
Avantage : chiff. et déchiff. sont structurellement identiques
12
DES
 Le "Data Encryption Standard" est dérivé d'un code
appelé "Lucifer" développé par IBM. Sa clé de 56
bits est maintenant sensible aux attaques utilisant
la force de calcul brute.

 Le DES a ainsi été résolu en 22 heures et 15


minutes par une machine spécialisée (Deep Crack)
en 2000 dans le but de démontrer que les clés de
56 bits n'étaient plus aptes à protéger efficacement
contre ce type d'attaques.
13 13
DES
Génération des clés
Clé initiale de 56 bits utiles 16 sous clés (48 bits)

Chiffrement des blocs


Permutation d’un bloc de 64 bits
Séparation en blocs de 32 bits

G0 K0 D0

+ F

G1=D0 D1=G0+F(D0, K0)

14 14
DES

15 15
Permutation d’un bloc de 64 bits
Séparation en blocs de 32 bits

Permutation G0

+
K0

F
D0

initiale G1=D0 D1=G0+F(D0, K0)

58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
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

Cette matrice de permutation indique, en parcourant la matrice de gauche à


droite puis de haut en bas, que le 58ème bit du bloc de texte de 64 bits se
retrouve en première position, le 50ème en seconde position et ainsi de suite.

16 16
Permutation d’un bloc de 64 bits
Séparation en blocs de 32 bits

Subdivision
G0 K0 D0

+ F

G et D G1=D0 D1=G0+F(D0, K0)

Une fois la permutation initiale réalisée, le bloc de 64 bits est scindé en


deux blocs de 32 bits, notés respectivement G et D. On note G0 et D0
l'état initial de ces deux blocs :
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4 G0
62 54 46 38 30 22 14 6 bits pos paire
64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3 D0
61 53 45 37 29 21 13 5 bits pos impaire
63 55 47 39 31 23 15 7
17 17
Permutation d’un bloc de 64 bits

Les rondes
Séparation en blocs de 32 bits

G0 K0 D0

+ F
D0 et G0 subissent
les transformations: G1=D0 D1=G0+F(D0, K0)

48 Bits

32 Bits Kn+1 32 Bits


Gn Dn

+ P S + E

32 Bits 48 Bits
Dn+1

Dn+1= Gn + F(Dn , Kn) 18 18


32 Bits 48 Bits
32 Bits
Gn Kn+1
Dn
+ P S + E

Expansion Dn+1 48 Bits

Les 32 bits du bloc D0 sont étendus à 48 bits grâce à une table


appelé table d'expansion (notée E), dans laquelle les 48 bits sont
mélangés et 16 d'entre eux sont dupliqués :

32 1 2 3 4 5 E
4 5 6 7 8 9
8 9 10 11 12 13
Ainsi, le dernier bit de D0 (7ème bit du bloc
12 13 14 15 16 17 d'origine) devient le premier, le premier
16 17 18 19 20 21 devient le second, ...
20 21 22 23 24 25 De plus, les bits 1,4,5,8,9,12,13,16,17,20,21,
24,25,28 et 29 de D0 sont dupliqués et
24 25 26 27 28 29 disséminés dans la matrice.
28 29 30 31 32 1
19 19
32 Bits 48 Bits
32 Bits
Gn Kn+1
Dn
+ P S + E

OU exclusif avec
D
la clé48 Bitsn+1

L'algorithme DES procède à un OU exclusif entre la première clé K1 et


E[D0]. Le résultat de ce OU exclusif est une matrice de 48 bits que
nous appelerons D0 par commodité (il ne s'agit pas du D0 de départ!).

Fonction de substitution
D0 est ensuite scindé en 8 blocs de 6 bits, noté D0i. Chacun de ces blocs
passe par des fonctions de sélection appelées boîtes de substitution et
notées Si.
Les premiers et derniers bits de chaque D0i détermine (en binaire) la ligne
de la fonction de sélection, les autres bits (de 2 à 5) déterminent la colonne.
La sélection de la ligne se faisant sur deux bits, il y a 4 possibilités (0,1,2,3).
La sélection de la colonne se faisant sur 4 bits, il y a 16 possibilités (0 à 15).
Voici la première fonction de substitution, représentée par une matrice de 4
par 16 : 20 20
32 Bits 48 Bits
32 Bits
Gn Kn+1
Dn
+ P S + E

Dn+1 48 Bits
première fonction de substitution S1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S1
Soit D01 égal à 101110. Les premiers et derniers bits donnent 10, c'est-
à-dire 2 en binaire. Les bits 2,3,4 et 5 donnent 0111, soit 7 en binaire.
Le résultat de la fonction de sélection est donc la valeur situé à la ligne
n°2, dans la colonne n°7. Il s'agit de la valeur 11. soit 1011 binaire.
Chacun des 8 blocs de 6 bits est passé dans la fonction de sélection
correspondante, ce qui donne en sortie 8 valeurs de 4 bits chacune.
21 21
32 Bits 48 Bits
32 Bits

Permutation P Gn Kn+1
Dn
+ P S + E

Dn+1 48 Bits

 Chaque bloc de 6 bits est ainsi substitué en


un bloc de 4 bits. Ces bits sont regroupés
pour former un bloc de 32 bits. Le bloc de 32
bits obtenu est enfin soumis à une
permutation P dont voici la table :

16 7 20 21 29 12 28 17

1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
22 22
32 Bits 48 Bits
32 Bits
Gn Kn+1
Dn
+ P S + E

OU Exclusif Dn+1 48 Bits

 L'ensemble de ces résultats en sortie de P est


soumis à un OU Exclusif avec le G0 de départ
(comme indiqué sur le premier schéma) pour
donner D1, tandis que le D0 initial donne G1.
Itération
L'ensemble des étapes précédentes (rondes) est réitéré 16 fois.

23 23
Permutation initiale inverse
 A la fin des itérations, les deux blocs G15 et
D15 sont "recollés, puis soumis à la
permutation initiale inverse :
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
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

Le résultat en sortie est un texte codé de 64 bits24! 24


Comment sont Généré les clés
 Etant donné que l'algorithme du DES présenté ci-
dessus est public, toute la sécurité repose sur la
complexité des clés de chiffrement.

 Comment obtenir à partir d'une clé de 64 bits 16


clés diversifiées de 48 bits chacune servant
dans l'algorithme du DES ?

25 25
Génération des clés
Les bits de parité de la clé sont éliminés afin d'obtenir une clé d'une
longueur utile de 56 bits.
La première étape consiste en une permutation notée CP-1 puis on sépare le
resultat en deux blocs D et G

Le resultat subit un décalage à gauche, de telles façons que les bits en


seconde position prennent la première position, ceux en troisième position la
seconde, ... Les bits en première position passent en dernière.

2 blocs de 28 bits sont ensuite regroupés en un bloc de 56 bits. Celui-ci passe par
une permutation, notée CP-2 (ignorant certain bits), fournissant en sortie
un bloc de 48 bits, représentant la clé Ki.

26 26
Génération des clés

27 27
Les modes opérationnels

 l’algorithme D.E.S crypte des blocs de 64


bits.

 Pour crypter ou décrypter un document


complet, il faut donc utiliser D.E.S. en série
dans un « mode opérationnel ».

 Il existe deux modes ECB et le mode CBC.


28 28
Le mode opérationnel E.C.B

ECB signifie Electronic Code Book (« catalogue


électronique de codes »). Dans ce mode, on
découpe le document à crypter ou à décrypter en
blocs de 64 bits qu’on crypte les uns
indépendamment des autres.

Puisque, à chaque bloc en clair correspond un


bloc crypté, pour une clé donnée, cela peut faire
penser à un « catalogue de codes ».

29 29
Le mode opérationnel E.C.B

30
Le mode opérationnel C.B.C
 CBC signifie Chain Block Cipher (« Cryptogramme à blocs
chaînés »). Il répond aux inconvénients de ECB:
- ECB ne protège pas contre la présence de blocs
redondants,
- un bloc en clair est codé toujours avec la même clé,
produira toujours le même bloc crypté.

 Pour le CBC, avant de crypter un bloc en clair, on va effectuer


un « ou-exclusif » entre ce bloc en clair et le bloc
précédemment crypté. Cela nous donnera un nouveau bloc
en clair que l’on cryptera.
 En plus de posséder une clé secrète en commun, les deux
interlocuteurs doivent dorénavant se mettre d’accord sur un
bloc de 64 bits de départ « vecteur initial ».
31 31
32 32
Le mode opérationnel C.B.C

33
Inconvénients mode ECB
Attaque de brute force

Suppression d'un bloc

Echange de 2 blocs

34
C.B.C : Avantage/Inconvénient

Avantage

Inconvénient
Ne peut pas être parallélisé étant donné que le bloc courant nécessite
que le précédent soit chiffré. Il est donc séquentiel.
35
Double DES

36 36
Attaque par le milieu

on a seulement 2 couples (clair,chiffré) connus


• Objectif : retrouver les clés secrètes avec la même complexité
que pour un simple DES

• Attaque naïve : recherche exhaustive des 2112 clés possibles

• Attaque par le milieu : compromis temps/mémoire pour


diminuer la complexité
– 256 opérations
– 256 couples en mémoire
37 37
Attaque par le milieu

38 38
Attaque par le milieu

39 39
Attaque en 256 en temps, Donc la sécurité du double
DES n’atteint pas 2112 mais seulement 256, comme le
DES
40 40
Triple-DES (3-DES)
 On utilise ici trois fois l'algorithme du DES avec des variantes
comprenant soit

- une succession de trois chiffrements DES


(des3)

- une suite "chiffrement - déchiffrement - chiffrement" utilisant


deux ou trois clés distinctes de 56 bits.

(des-ede-cbc) : deux clés du triple DES en mode CBC


(des-ede3-cbc) : trois clés du triple DES en mode CBC
41
Exercice

Que vaut l’entrée de la S-box S4 lors du premier tour de cryptage par le DES, si le
message clair M vaut FEDCBA987654321016 et la clé K 9876543210FEDCBA16 ?
E
PI 32 1 2 3 4 5
4 5 6 7 8 9
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4 8 9 10 11 12 13
62 54 46 38 30 22 14 6 12 13 14 15 16 17
64 56 48 40 32 24 16 8
16 17 18 19 20 21
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3 20 21 22 23 24 25
61 53 45 37 29 21 13 5 24 25 26 27 28 29
63 55 47 39 31 23 15 7
28 29 30 31 32 1

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

14 17 11 24 1 5 3 28 15 6 21 10
CP-2 23 19 12 4 26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40 51 45 51 45
44 49 39 56 34 53 46 42 50 36 42
29 32
Réponse

Les bits de E(R0)  K1 qui interviennent en entrée de S4 portent les


numéros 19 à 24 ; ils correspondent :

- aux bits 12 à 17 de R0, c’est-à-dire aux bits 35, 27, 19, 11, 3 et 61
de M, qui valent respectivement 1, 0, 1, 0, 1 et 0 ;

- aux bits 16, 7, 27, 20, 13 et 2 de C1//D1, c’est-à-dire aux bits 17, 8,
28, 21, 14 et 3 de C0//D0, et en définitive aux bits 59, 1, 36, 27, 18 et
41 de K, qui valent respectivement 1, 1, 1, 1, 1 et 1.

L’entrée de S4 vaut donc 010101.

43
RC2 (Rvivest Cipher)
 RC2 utilise une longueur de clé variable pouvant
aller jusqu'à 1024 bits bien qu'elle soit souvent
limitée à 40, 56 ou 128 bits dans les versions
exportées hors des Etats-Unis.

18 tours : réseau de Feistel

Cet algorithme est deux à trois fois plus rapide que


DES et est considéré comme étant raisonnablement
sûr malgré la faiblesse de certaines clés.
44 44
RC5
 Le RC5 a l'avantage d'avoir une longueur de bloc de
données variable, un nombre de rounds variable et
une clé de longueur variable. L'utilisateur a le
contrôle sur le rapport entre la vitesse d'exécution et
la sécurité de son chiffrement.

 En général, une longue clé et un nombre élevé de


rounds assurent une plus grande sécurité. La taille
des blocs de données pour sa part accommode
différentes architectures de systèmes. 45
45
Cryptographie à clé publique 1
 Résoud le problème de la transmission de la clé
secrète d'un algorithme symétrique.

 Un utilisateur possèdera une paire de clés, l'une


privée qu'il conserve en lieu sûr, et l'autre publique

 Ces deux clés sont liées mathématiquement de


telle sorte qu'il soit calculatoirement difficile de
retrouver la clé privée à partir de la clé publique.

quels critères de sécurité? 46


Cryptographie à clé publique 2
 On obtiendra la confidentialité d'un
message en utilisant la clé publique du
destinataire comme clé de chiffrement.

47 47
Cryptographie à clé publique 3
 L' authentification d'un message est
possible si l'expéditeur utilise sa clé
privée pour chiffrer le message

48 48
La méthode RSA 1
 Développé par Ron Rivest, Adi Shamir
et Leonard Adleman. Il est aujourd'hui
très largement répandu car utilisé par le
protocole SSL.
 La sécurité du système repose sur la
difficulté de factoriser un très grand
nombre ( >10155 )

49 49
La méthode RSA
1. Prendre deux grands nombres
premiers p et q

2. Calculer le "modulus" n=p·q et


phi(n)=(p-1)·(q-1)

3. Choisir un e aléatoire (1<e<phi(n)) tel


que pgcd(e,phi(n))=1
50 50
La méthode RSA
4. Calculer d=e-1mod phi(n) l'inverse de
e en utilisant l'algorithme d'Euclide

5. Publier {e,n} qui fera office de clé


publique, conserver la clé privée
{d,n} en lieu sûr et détruire p, q,
phi(n)

51 51
La méthode RSA
 Le chiffrement d’un message se fait en
calculant:

C = Me mod n

où M est le message en clair, C le


message chiffré et {e,n} la clé
publique.
52 52
La méthode RSA
 Le déchiffrement d’un message se fait
en calculant:

M = Cd mod n

où M est le message en clair, C le


message chiffré et {d,n} la clé privée.

53 53
Exemple : Récepteur

Voyons par un exemple concret que cette


méthode fonctionne:

Le Récepteur doit commencer par générer sa


paire de clé pub/priv en choissant 2 nombres
premiers

p=7 et q=13
54 54
Exemple : Récepteur

Il choisit e=5 qui satisfait à:


1<e<72 et pgcd(72,5)=1
Calcul d = e-1 mod 72 = 29 (euclide étendu)
verification: e x d= 29·5 =145= 2·72+1
{5, 91} est sa clé publique, il l’envoi à
l’émetteur
{29, 91} est sa clé privée, il la garde
secrete,
55 55
Exemple : Emetteur

- Reçoit la clé publique envoyé par le


Récepteur, à savoir (e,n)={5, 91}

- Chiffrer son message “note” : M=17


C = Me mod n = 175 mod 91 = 75

Envoi 75 au récepteur!
56 56
Exemple : Récepteur

 Le récepteur reçoit le message codé


C=75 et le déchiffre à l'aide de sa clé
privée {29, 91}

M = Cd mod n = 7529 mod 91 = 17

Verifier par calcultarice!!

57 57
Exemple attaque algo d'EUCLIDE

 Votre prof envoi la note 25 par mail encrypté


RSA. La clé publique du responsable est
(7,55).

Casser la clé et trouver votre note?

Réponse:
clé privée cassée : (23,55)
note : 5/20 58 58
Algorithme d’Euclide

no := n
bo := b
to := 0
t := 1
q := nombre entier immédiatement inférieur ou égal à no / bo
r := no - q · bo
Tant que r > 0 faire
Début
temp := to - q · t
Si temp >=0 alors temp := temp mod n, sinon temp := n - ((-temp) mod n)
to := t
t := temp
no := bo
bo := r
q := nombre entier immédiatement inférieur ou égal à no / bo
r := no - q · bo
Fin
Si bo #1 alors b n'a pas d'inverse modulo n, sinon b-1 mod n = t

59 59
Fonctions de condensation
Transformer un message de longueur arbitraire en une
empreinte numérique de taille fixe.

2 messages peuvent produire


la même empreinte car la taille
de l'espace des messages est
supérieure à la taille de l'espace
des empreintes
60
Fonctions de condensation
Propriétés de sécurité de la fonction de hachage cryptographique.

Résistance à Résistance à la Résistance à la


la pré-image seconde pré-image collision
Fonctions de condensation MD5
 MD5 est crée à partir de MD2 (la plus sûr mais exige bcp de
ressources) et MD4 (Léger mais vulnérable à l’attaque par
collision).
 MD5 génère une empreinte sur 128 bits (16 octets)
 Exemple d’empreintes calculées avec l’algorithme MD5

Virez 14000 dh sur le compte No 221-50843


dca9aa6b21da7b390bb3343a4a47eb19
Virez 24000 dh sur le compte No 221-50843
6f336014cfa61c9913fb0a3020e230bf
Virez 14000 dh sur le compte No 220-50843
3614391df484cbe5234eb0cdb391d6d2 62 62
Fonctions de condensation SHA
SHA1 : 20 octets = 116 bits
SHA512 : 64 octets= 512 bits
SHA256 : 32 octets=256 bits

Fonction de Hachage utilisée par Bitcoin


63
Signature Numérique
 Dans l'exemple ci-dessous Alice veut
envoyer un message signé à Bob.
D'abord elle utilise une fonction de
hachage qui retourne une empreinte du
message, ensuite, à l'aide de sa clé
privée elle va chiffrer l'empreinte et
joindre ce résultat, qui est la signature,
au message qu'elle va transmettre.
64 64
Signature numérique

65 65
Signature numérique
 A la réception, Bob va déchiffrer la signature
du message avec la clé publique d'Alice et
comparer ceci avec le résultat de la fonction
de condensation qu'il applique au message.
S'il trouve une différence, alors soit le
message a été altéré, soit la signature n'a pas
été générée avec la clé privée correspondant
à la clé publique qu'il a employé.

66 66
Signature numérique

67 67
Certificats numériques

68 68
Certificats numériques
 Un certificat est un document émis par
un organisme digne de confiance,
associant la clé publique d'un
algorithme de chiffrement asymétrique
à des informations relatives à un sujet
(nom d'une personne ou d'un serveur,
adresse E-mail ...).

69 69
Structure d’un certificat X.509
Version (V1)
Clé privée du CA
Serial Number (V1)
Signature Algorithm Identifier (V1)
(algo de signature de A.C. émeteur)
Issuer (V1)
(Nom X500 du A.C.)
Validity (V1)
Génération de la
(Dates début et fin du certificat) signature

Subject (V1)
(Nom X500 du détenteur et objet)
SubjectPublicKeyInformation (V1)
(Id. de l’algorithme et clé publique detenteur)
IssuerUniqueIdentifier (V2)
Identifie clé CA
SubjectUniqueIdentifier (V2)
Identifie clé pub detenteur
Extensions (V3)

Signature digitale du CA

70 70
Structure d’un certificat X.509

-La version de X.509 à laquelle le certificat correspond ;

-Le numéro de série du certificat ;

-L'algorithme de chiffrement utilisé pour signer le certificat ;

-Le nom (DN, pour Distinguished Name) de l'autorité de


certification émettrice ;

-La date de début et de fin de validité du certificat ;

-C.N. et objet de l'utilisation de la clé publique ;

-ID algo et clé publique du propriétaire du certificat ;


71 71
Structure d’un certificat X.509

-IssuerUniqueIdentifie
identifie de façon unique la clé utilisée par le CA pour signer le
certificat (cas où le CA a utilisé plusieurs clés depuis sa mise en
œuvre)

- SubjectUniqueIdentifier
Différencie entre plusieurs clés publiques, issues du même CA,
appartenant à un même détenteur

- La signature de l'émetteur du certificat

72 72
Extension v3
Chaque extension est définie par les 3 champs :

Exemple : KeyUsage : spécifie les usages cryptographiques possibles à l’aide


de la clé publique du certificat; par exemple la clé publique peut être utilisée
pour des signatures cryptographiques mais pas pour chiffrer des données.
Type: OID=2.5.29.15
Criticality : true
Value:
 digitalSignature (0), (clé d'authentification)
 nonRepudiation (1), (clé de signature)
 keyEncipherment (2), (clé de confidentialité)
 keyCertSign (5), (clé de signature de certificats)
 CRLSign (6), (clé de signature de la liste de révokation CRLs)
73 73
Certificats numériques
KeyUsage= 5

Porté=monde

74 74
Certificats numériques
KeyUsage= 1

75 75
Certificats numériques

Le samedi 4 avril 2015, l' autorité de certification de gmail est devenue


non fiable en raison de l'expiration d' un certificat numérique dans la
chaîne de confiance : Google Internet Authority G2 qui est une AC
intermédiare.

Le problème a été résolu le même jour à 15h46.


la mise à jour publiée par Google indique : « Nous nous excusons pour la
gêne occasionnée et vous remercions de votre patience et de votre
soutien constant. Soyez assuré que la fiabilité du système est une priorité
absolue chez Google et que nous apportons des améliorations
constantes pour améliorer nos systèmes »

https://news.softpedia.com/news/Google-Certificate-Expires-Email-Clients-Return-
Security-Warnings-477700.shtml
76 76
Certificats numériques
La définition du certificat dans le standard X.509 utilise la
notation ASN.1 qui permet de décrire des types de
données indépendants d'une architecture particulière:

Certificate ::= SEQUENCE {


tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING
}

77 77
Certificats numériques
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
...

78 78
EC

79
EC
- Si p est un nombre premier supérieur à 3 alors on note par Zp
l’ensemble des élements des operations modulo p:
Zp = {1, 2, …, p-1}
- Une courbe élliptique sur ZP est définie par l’equation :
y2 mod p= x3 + ax + b mod p
Les éléments (x, y) sont des entiers compris entre 0 et p-1

- p est choisi pour avoir un nombre fini de points sur la courbe


elliptique suffisant pour sécuriser le cryptosystème
(p : 112 à 521 bits)
80
Exemple de Courbe élliptique
Soit p = 23, a = 1, b = 1
E : y2 = x3 + x + 1
Les points dans E(Z23) sont O (point à l’infini qui l’élt neutre
(zero) pour l’addition des pts de la courbe) et les points
suivants:

(0,1) (6,4) (12,19) (0,22) (6,19) (13,7)


(1,7) (7,11) (13,16) (1,16) (7,12) (17,3)
(3,10) (9,7) (17,20) (3,13) (9,16) (18,3)
(4,0) (11,3) (18,20) (5,4) (11,20) (19,5)
(5,19) (12,4) (19,18) et O
81
Exemple de Courbe élliptique

82
Courbe élliptique : lois d’addition

83
Courbe élliptique : lois d’addition

Addition de points sur une verticale : Si les points P et Q sont situés sur une verticale (même
abscisse), la verticale ne rencontre pas la courbe en un troisième point. Le point R n'existe pas.
On imagine tout de même un troisième point, dit rejeté à l'infini et que l'on nomme O.
Ce nouveau pseudo-point est l'élément neutre de l'addition des points comme le zero pour
l'addition arithmétique.

Notez bien que ce pseudo-point n'est pas à l'origine des axes. 84


Problème du logarithme discret

Q = k P = P+P+P+…….+P (k fois)

Avantage en cryptographie: Il est très difficile de trouver la valeur de k

connaissant Q et P :

 Problème du logarithe discret


85
EC : A retenir

•Il est facile de calculer la multiplication de points


Q = k*P pour un entier k quelconque

Il
• est très difficile de retrouver la valeur
de k quand on ne connait que P et Q.

86 86
Géneration des paires de clés

1. B choisi une E.C. : (a,b et p) notés E définie sur Zp.


2. B Choisi un point P de la courbe.
3. B Choisi un entire aléatoire dB dans l’interval [1, n-1]. (n entier)
4. B Calcul Q = dBP.
5. La clé publique de B est (E, P, n, Q). Sa clé privée est dB.

87
B rend publique sa clé publique
Chiffrement asymétrique EC
Alice Bob

Alice prend connaissance de la clé


Étape 1 :
publique (E, P, n, Q) de Bob.

Étape 2 : Alice choisit secrètement et


aléatoirement un entier t.

Étape 3 : Alice calcule tP et M+tQ et envoie


ces deux points à Bob.

Étape 4 :

88
Chiffrement asymétrique EC
Alice Bob

Alice prend connaissance de la clé


Étape 1 :
publique (E, P, n, Q) de Bob.

Étape 2 : Alice choisit secrètement et


aléatoirement un entier t.

Étape 3 : Alice calcule tP et M+tQ et envoie


ces deux points à Bob.

Avec sa clé secrète dB, Bob calcule tdBP à partir


Étape 4 : de tP, puis il calcule (M+tdBP)−tdBP
Il retrouve ainsi M.

89
Partage d’un secret

90
Partage d’un secret
Chaqu’un à sa couleur secrète (rouge | vert)
Il se mette d’accord sur le jaune
Chacun combine le jaune avec sa couleur secrète et l’envoi
La couleur mixte reçu est combinée avec la couleur secrète.

91
Partage d’un secret ECDH

Authentification + confidentialité
Clés publiques statiques (de confiance, via un certificat)

92 92
Partage d’un secret ECDHE

Confidentialité
Les clés publiques sont éphémères = temporaires
Les deux partie ne sont pas authentifiées!!!!!!!!!!!!!!!

Alice Bob

Alice et Bob choisissent ensemble une courbe elliptique (E, P, n) et un


Étape 1 :
point P sur la courbe. Cet échange n'a pas besoin d'être sécurisé.

Alice choisit secrètement kA et Bob choisit secrètement kB et


Étape 2 : envoie kAP à Bob. Cet échange n'a envoie kBP à Alice. Cet échange n'a
pas besoin d'être sécurisé. pas besoin d'être sécurisé.

Étape 3 : Alice calcule kA(kBP)=(kAkB)P Bob calcule kB(kAP)=(kAkB)P


93
ECDHE

Gmail auth par G2 via sa clé pub.


Échange de clé :ECDHE
Signature :ECDSA

94 94
Signature ECDSA

1. A Choisi un entire aléatoire temporaire k dans [1, n-1].


2. Calcul kP = (x1, y1) et r = x1 mod n.
Si r = 0 (crière de sécurité non satisfait) retourner à l’étape 1.
3. Calcul k-1 mod n.
4. Calcul s = k-1 {h(m) + dr} mod n. (h =SHA-1).

5. Si s = 0, retourner à l’étape 1. (car s-1 mod n n’existe pas et il


est necessaire dans la verification de la signature).
6. La signature du message m est la paire des entiers (r, s).

95
Verif. Sign. ECDSA

1. B obtient la clé publique de A (E, P, n, Q).


2. Verifie que r et s sont des entiers dans [1, n-1].
3. Calcul w = s-1 mod n et h(m).
4. Calcul u1 = h(m)w mod n et u2 = rw mod n.
5. Calcul u1P + u2Q = (x0, y0) et v = x0 mod n.
6. La signature est correcte si et ssi v =r.

Preuve : u1P + u2Q = k P ??? 96


càd : k = u1 + u2d??
Verif. Sign. ECDSA

z=h(m)

97
98 98
SSL : Architecture
NFS

FTP SMTP HTTP Telnet XDR

SSL SNMP RPC

TCP UDP

IP

99
SSL : Protocoles
Application

SSL
Handshake

Alert CCS

Record

TCP

100
Les sous protocoles de SSL
 HANDSHAKE
 permet l’authentification mutuelle du client et du
serveur.
 RECORD
 assure la protection des données des applications et
des messages des sous protocoles.
 ChangeCipherSpec
 signale à la couche RECORD toute modification des
paramètres.
 ALERT
 signale les erreurs survenant dans les messages
(erreurs fatales ou warning…) 101
Handshake
Ouverture d'une
session SSLv3
Client Serveur

Client Hello

Serveur Hello
Certificate
(Serveur Key Exchange)
(Certificate Request)
Server Hello Done

(Certificate)
Client Key Exchange
(Certificate Verify)
ChangeCipherSpec
Finished

ChangeCipherSpec
Finished
Application Data

Application Data

102
Handshake
Message Type de Sens de Signification
message transmission
HelloRequest optionnel serveur  client Ce message demande au client d'entamer
le Handshake.
ClientHello obligatoire client  serveur Ce message contient :
le numéro de version du protocole SSL ;
le nombre aléatoire : client_random ;
l'identificateur de session : session_ID ;
la liste des suites de chiffrement choisies
par le client ;
la liste des méthodes de compression
choisies par le client.
ServerHello obligatoire serveur  client Ce message contient :
le numéro de version du protocole SSL ;
un nombre aléatoire : serveur_random ;
l'identificateur de session : session_ID ;
une suite de chiffrement ;
une méthode de compression.

103
Handshake
Certificate Optionnel serveur  client Ce message contient le certificat du
client  serveur serveur ou celui du client si le serveur le lui
réclame et que le client en possède un.
ServerKeyExchange Optionnel serveur  client Ce message est envoyé par le serveur que
s’il ne possède aucun certificat, ou
seulement un certificat de signature.
CertificateRequest Optionnel serveur  client Par ce message, le serveur réclame un
certificat au client.
ServerHelloDone Obligatoire serveur  client Ce message signale la fin de l’envoi des
messages ServerHello et subséquents.

104
Handshake
ClientKeyExchange Obligatoire client  serveur Ce message contient le PreMasterSecret
crypté à l’aide de la clé publique du
serveur.
CertificateVerify Optionnel client  serveur Ce message permet une vérification
explicite du certificat du client.
Finished obligatoire serveur  client Ce message signale la fin du protocole
client  serveur Handshake et le début de l’émission des
données protégées avec les nouveaux
paramètres négociés.

105
Le protocole Alert
Message Contexte Type
bad_certificate échec de vérification d’un certificat fatal
bad_record_mac réception d’un MAC erroné fatal
certificate_expired certificat périmé fatal
certificate_revoked certificat mis en opposition (révoqué) fatal
certificate_unknown certificat invalide pour d’autres motifs que ceux fatal
précisés précédemment
close_notify interruption volontaire de session fatal
decompression_failure les données appliquées à la fonction de fatal
décompression sont invalides (par exemple, trop
longues)
handshake_ failure impossibilité de négocier des paramètres satisfaisants fatal
illegal_parameter un paramètre échangé au cours du protocole fatal
Handshake dépasse les bornes admises ou ne
concorde pas avec les autres paramètres
no_certificate réponse négative à une requête de certificat avertissement
ou fatal
unexpected_message arrivée inopportune d’un message fatal
unsupported_certificate le certificat reçu n’est pas reconnu par le destinataire avertissement
ou fatal

106
Ports au dessus de SSL

Protocole Port Protocole non Application


sécurisé sécurisé
HTTPS, 443 HTTP Transactions requête-
JBOSSX…. réponse sécurisées
SSMTP 465 SMTP Messagerie électronique

SNNTP 563 NNTP News sur le réseau Internet

SSL-LDAP 636 LDAP Annuaire X.500 allégé

SPOP3 995 POP3 Accès distant à la boîte aux


lettres avec rapatriement des
messages

107
Application – openssl
-chiffrement symétrique
-chiffrement asymétrique
-signature numérique
-certificat électronique
-standards PKCS#n

Commerce électronique Set


108 108
Chiffrement Symétrique

Attention: La cryptographie à clé publique ne peut être utilisée que pour chiffrer un
petit fichier.
Par exemple, RSA 1024 bits ne peut crypter qu'un fichier d'au plus 116 octets,
alors qu’une clé RSA 2048 bits ne peut crypter qu'un fichier d'au plus 245 octets.

Chiffrement
openssl enc -e -bf-cbc[-des3 , -aes-256 ..] -in f1 -out f2

Déchiffrement
openssl enc -d -bf-cbc –in f2 –out f1

109
Chiffrement asymétrique
génération clés RSA

Génération clés RSA


openssl genrsa -out macle 1024
openssl genrsa -des3 -out macle 1014

Visualiser la paire de clé


openssl rsa -in macle -text –noout
Extraire la clé publique:
openssl rsa -in macle -pubout -out macle.pub

Chiffrement/déchiffrement RSA
openssl rsautl -encrypt -pubin -inkey macle.pub -in f1 -out f2
openssl rsautl -decrypt -inkey macle -in f2 -out f1 110
Openssl- Signature numérique

Hashage
openssl dgst -md5 -out emp f1

Signature
openssl rsautl -sign -in emp -inkey macle -out signature

Verification signature
openssl rsautl -verify -in signature -pubin -inkey maclepub -out emp1
111
Openssl – certificat électronique
Demande de certificat
openssl req -new -key ensa.key -out ensa.csr
Visualiser votre demande
openssl req -text -in ensa.csr -noout –verify

Self signed certificate


openssl req –new -509 -days 365 -key ac.key -out ac.crt
Signature de la demande de l’ensa
Opennsl x509 -req -in ensa.csr -out ensa.crt -CA ca.crt
-CAkey ca.key -CAcreateserial -Caserial ca.srl

visualiser le certificat
openssl x509 -text -in ensa.crt –noout 112
Standards
Commentaires
Version
PKCS#1 Définit le chiffrement et la signature RSA (notamment les schémas de remplissage: RFC 3447
PKCS#2 Obsolète. Décrivait le chiffrement RSA de condensés de message, mais a été intégré dans PKCS#1
PKCS#3 Standard d'échange de clés Diffie-Hellman
PKCS#4 Obsolète. Décrivait la syntaxe de clé RSA, mais a été intégré dans PKCS#1
PKCS#5 Standard de chiffrement par mot de passe : symétrique
Obsolète. Définissait les extensions de l'ancienne spécification de certificat X.509 v1.
PKCS#6
Utilisé pour signer et/ou chiffrer des messages dans le cadre d'une infrastructure à clés publiques:
PKCS#7
RSA RFC 5652
Standard pour stocker la clé privée: RFC 5958. La clé privée PKCS#8 peut être chiffrée avec
PKCS#8 une phrase secrète utilisant les normes PKCS # 5. les clés PKCS#8 sont échangées au format
codé PEM (base64) et elles peuvent être convertit au format binaire DER (java)
PKCS#9 Types d'attributs sélectionnés: RFC 2985
PKCS#10 Standard de requête de certificat
PKCS#11 Interface générique API de périphérique cryptographique (cryptoki)
Définit un format de fichier généralement utilisé pour stocker la clé privée et le certificat de clé
PKCS#12
publique correspondant en les protégeant par un mot de passe.
PKCS#13 Standard de Cryptographie sur les courbes elliptiques
PKCS#14 Générateur de nombres pseudo-aléatoires
PKCS#15 Standard de format d'information sur les périphériques cryptographiques: les cartes

113
PKCS#1 padding

Remplissage du hash (avant signature)


1 – Le hash (20 octets dans le cas de SHA1) est étendue à la taille de la clé
RSA en le préfixant par le remplissage.
2 - Le schéma de remplissage par défaut dans openssl est PKCS1.
3 - Schéma de remplissage de la PKCS # 1: 00||01||PS||00||T||H
4 - PS: chaîne d'octets avec FF telle que la longueur du message soit égale
à la taille de la clé.
5 - T: Identifiant du schéma de signature (Chaque algo de hachage a ses
octets MAGIC).
6 - H: Valeur de hachage du message.

114
PKCS#1 padding

Octets MAGIC (utilisés dans le remplissage) pour divers algorithmes


de hachage

115
af:8a:92:11:fe:f6:c5:72:b6:21:98:01:14:8c:7f:

PKCS#7
bd:50:10:81:9a:3b:22:41:ba:77:c5:ab:f2:98:14:
60:55:f9:c2:36:bf:e3:b9:61
prime1:
00:f9:96:63:5d:60:00:d1:71:9d:5b:1f:6c:79:d8:
34:ec:0d:d8:42:57:8b:0a:9a:63:93:f4:b4:55:1c:
a8:0a:9d:9e:2b:f3:c4:ff:f7:c8:af:a7:5a:0d:a6: p
df:c2:10:04:fe:be:ef:b6:53:0a:9a:1c:11:b6:18:
5b:9e:51:ef:b5

$ openssl rsa -in macle -text –noout prime2:


00:f3:44:af:79:a1:a5:82:a2:7d:6e:c8:42:61:2d:
dc:2a:cc:e1:55:e7:92:6e:13:ca:4e:c8:81:58:ed:
ee:63:e1:f2:d0:7d:4c:07:dd:1e:b0:89:3a:6b:77: q
41:9a:9b:54:fe:4f:0e:90:5e:87:42:79:0d:c5:f5:
Private-Key: (1024 bit) a3:8f:e8:30:69
modulus: exponent1:
7e:e1:f2:4f:d4:ef:75:8a:81:c9:82:57:1e:36:48:
00:ed:2c:b7:58:6a:89:04:91:f8:95:14:c5:17:3b: e9:3c:3c:95:b5:75:8d:05:61:dc:24:c9:cc:7f:0d:
78:f5:83:78:f0:c4:8d:3d:3b:55:d6:92:a7:3f:30: fa:9f:98:7a:95:a9:af:cb:22:ee:11:70:d9:81:dd:
3d:05:f1:d4:23:f3:2f:48:56:1a:74:6c:98:9b:17:
dmod(p-1)
a6:88:c7:1d:fe:30:43:d5:49:51:2a:cd:c3:db:d9:
70:8c:0d:05
59:46:f6:a8:30:89:a2:e4:21:e2:53:3c:40:63:92: n exponent2:
70:a2:46:0e:3c:b9:0c:eb:5b:f1:12:39:6e:5a:b8: 18:72:5c:98:02:90:99:72:2e:dc:c5:2f:36:88:df:
e9:b1:c1:85:aa:3f:9e:3e:52:0e:81:0c:7d:4a:8a: 49:45:d1:97:4a:70:42:b3:a6:6f:08:63:47:46:91:

d2:38:09:39:b1:57:11:4a:f5:14:a5:90:75:b5:ee:
e0:63:c2:7d:05:3a:70:c7:dd:df:ab:ca:bd:25:fc:
e7:c6:98:61:fe:1b:de:92:41:51:82:cc:c9:8a:07:
dmod(q-1)
91:cc:b8:64:bd:ff:f9:ce:4e:76:fd:64:28:59:63: e7:dc:53:91
17:88:95:43:a9:a3:95:41:3d coefficient:
publicExponent: 65537 (0x10001) e ??? 3b:d9:ad:6e:32:a4:29:d1:22:3e:f0:69:c9:32:e7:
34:53:0f:35:b8:75:24:21:df:1a:14:a4:f6:66:80:
68:9e:cc:bd:7e:8e:3d:1e:f3:cd:b5:bc:08:c1:1c: q−1 mod p
privateExponent: 23:f0:f1:8b:3a:f7:
00:d0:a2:bc:6a:7f:d5:26:7b:0e:14:7e:df:dd:cf:
08:59:d9:1c:a3:98:13:b2:e0:a6:63:0a:41:2b:9a:
2d:75:36:cb:d0:96:3e:a5:ba:48:37:82:28:a0:16:
33:ad:f4:3f:01:eb:a1:aa:53:90:57:ae:31:ea:25:
d
a1:05:6e:e1:07:a2:26:db:14:1d:d5:69:3d:99:ee:
33:73:bf:b6:51:52:05:a4:95:1b:b5:ba:09:c0:68:
116
PKCS#7 - Nombre de Fermat
F0 = 21 + 1 = 3 is prime
F1 = 22 + 1 = 5 is prime
F2 = 24 + 1 = 17 is prime
Il est très facile de calculer des exposants F3
F4
= 28
= 216
+ 1 = 257 is prime
+ 1 = 65,537 is the largest known Fermat prime
modulaires qui sont des nombres de Fermat. F5 = 232 + 1 = 4,294,967,297
= 641 × 6,700,417 (fully factored 1732)
F6 = 264 + 1 = 18,446,744,073,709,551,617 (20 digits)
= 274,177 × 67,280,421,310,721 (14 digits) (fully factored 1855)
F7 = 212 + 1 = 340,282,366,920,938,463,463,374,607,431,768,211,457 (39 digits)
8

59,649,589,127,497,217 (17 digits) × 5,704,689,200,685,129,054,721 (22 digits)


=
(fully factored 1970)
F8 = 225 + 1 = 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039
6
,457,584,007,913,129,
639,937 (78 digits)
= 1,238,926,361,552,897 (16 digits) ×
93,461,639,715,357,977,769,163,558,199,606,896,584,051,237,541,638,188,580,
280,321 (62 digits) (fully factored 1980)
F9 = 251 + 1 = 13,407,807,929,942,597,099,574,024,998,205,846,127,479,365,820,592,393,377,
2
723,561,443,721,764,0
30,073,546,976,801,874,298,166,903,427,690,031,858,186,486,050,853,753,882,
811,946,569,946,433,6

Jusqu’à 2017, le plus grand nombre de Fermat 49,006,084,097 (155 digits)


= 2,424,833 ×
premier connu n'est que 65537. 7,455,602,825,647,884,208,337,395,736,200,454,918,783,366,342,657 (49 digits)
×

65537 est utilisé comme exposant public dans RSA . 741,640,062,627,530,801,524,787,141,901,937,474,059,940,781,097,519,023,905


,821,316,144,415,759,
504,705,008,092,818,711,693,940,737 (99 digits) (fully factored 1990)
Comme c'est le nombre de Fermat avec n = 4 , ce F1 = 210 + 1 = 179,769,313,486,231,590,772,930...304,835,356,329,624,224,137,217 (309 digits)
nombre est connu par "F4 ".
24
0

= 45,592,577 × 6,487,031,809 ×
Ensuite cette valeur a été utilisée dans RSA comme 4,659,775,785,220,018,543,264,560,743,076,778,192,897 (40 digits) ×
130,439,874,405,488,189,727,484...806,217,820,753,127,014,424,577 (252 digits)
(fully factored 1995)
compromis entre sécurité et complexité : RSA est F1 = 220 + 1 = 32,317,006,071,311,007,300,714,8...193,555,853,611,059,596,230,657 (617
vulnérable aux très petits exposants, tandis que
48
1 digits)
= 319,489 × 974,849 × 167,988,556,341,760,475,137 (21 digits) ×
l'utilisation d'exposants élevés était coûteuse en calcul 3,560,841,906,445,833,920,513 (22 digits) ×
173,462,447,179,147,555,430,258...491,382,441,723,306,598,834,177 (564 digits)
sans aucun avantage pour la sécurité. (fully factored 1988)

117
Application
Tomcat SSL

118 118
Tomcat/jboss

119
1 – Génération clé (openssl/keytool)

Générer certificat autosigné


keytool -genkey -alias tomcatssl -keyalg RSA -keysize
2048 -keystore keystore.jks -validity 3650

Vérifier visualiser le certificat


keytool -list -keystore keystore.jks

120
2- Ajout connecteur SSL

Tomcat peut utiliser deux implémentations différentes de


SSL:

l'implémentation JSSE ( Java Secure Socket Extension)


fournie dans le cadre de l'exécution de Java

l'implémentation APR(Apache Portable Runtime), qui utilise


le moteur OpenSSL par défaut.

Le nom de classe dans l' attribut


protocole du connecteur spécifie l’implémentation à utiliser.

121
Connecteur JSSE

<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore.jks" keystorePass= "ensa2019"
clientAuth="false" sslProtocol="TLS"/>

Vous pouvez remplacer Nio par Bio.

Détail : http://tomcat.apache.org/tomcat-7.0-doc/config/http.html122
Connecteur APR
<Connector

protocol="org.apache.coyote.http11.Http11AprProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="/usr/local/ssl/server.crt"
SSLCertificateKeyFile="/usr/local/ssl/server.pem"
SSLVerifyClient="optional"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"/>

Détail : http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
123
Configurer dans web.xml pour un
projet particulier

<security-constraint>
<web-resource-collection>
<web-resource-name>SEC</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

CONFIDENTIAL, INTEGRAL, or NONE, les deux premiers impliquent SSL

124
III - Application
commerce électronique
protocole SET

125
Protocole SET
 SET est une spécification technique écrite
conjointement par Visa et MasterCard.

 Basé sur le standard SSL.

 SET envoi des informations sur les cartes de crédit


directement à l'institution financière sans que le
marchand ou le fournisseur des services de
paiement en ligne puisse voir ou décoder ces
informations sensibles.
126 126
SET Architecture

Banque Emetteur
de la carte de
crédit

Banque acquéreur
d’argent 127
SET Architecture

128 128
SET Inscription du porteur de
carte (1/7)
Demande initiale pour récupérer
le certificat de signature et de
chiffrement de CA Demande
Initiale

Condensat

Reponse Reponse Reponse


Sont Initiale Initiale Initiale
Egaux
?

Signature Signature
Condensat
CA CA CA CA
Sig. Clé Sig. Clé Condensat

129
SET Inscription du porteur de
carte (2/7)
Clé aléatoire
de cryptage Symétrique
Demande d’inscription
Demande Demande crypté avec une clé aléa
Inscription Inscription
Claire Chiffrée
symétrique vers CA
Nonce

PAN PAN

Clé Publique du CA
Clé aléatoire
de cryptage Symétrique
CH authentifie CA (nonce)
Demande Demande
Inscription Inscription
Chiffrée Claire
Formulaire
Inscription
Nonce
PAN PAN

Clé Privée de CA

130
SET Inscription du porteur de
carte (3/7)
CA envoi le formulaire Formulaire Formulaire
d’inscription en claire Inscription Inscription
car vide mais signé Nonce Nonce

Clé Privée
Signature de CA

CA
Sig.
Condensat Formulaire Condensat
Inscription
Sont Nonce
Egaux Clé Publique
? du CA
Signature
Condensat

CA
Sig.

131
SET Inscription du porteur de
carte (4/7)
CH concatène le formulaire rempli avec sa
Val. Nonce clé pub et une clé symétrique aléa (qui
signera son certificat) puis signe l’ensemble

Clé Privée
de CH
2

Formulaire Condensat
Inscription Clé Publique
Clé aléatoire
Rempli de CH
de cryptage
Symétrique
Signature

132
SET Inscription du porteur de
carte (5/7)
2
Clé Privée
Formulaire De CA
Inscription Clé Publique CB
Rempli CH Clé aléatoire
de cryptage
Symétrique

Signature 2
CB
Clé Publique Formulaire
de CA Inscription Clé Publique
Clé aléatoire 3 Clé aléatoire
Rempli CH
de cryptage CB de cryptage
Symétrique Symétrique
3

Signature
CB

2
2
Formulaire
Inscription Clé Publique Formulaire
Rempli CH Clé aléatoire
Inscription Clé Publique
de cryptage Clé aléatoire
Symétrique
Rempli CH
de cryptage
Symétrique
Signature
Signature
CH choisi une autre clé symétrique pour
chiffrer la concaténation des trois élements. 133
SET Inscription du porteur de
carte (6/7)

Formulaire Condensat
Inscription Clé Publique
Rempli CH Clé aléatoire Sont
de cryptage Clé Publique Egaux
Symétrique CH ?

Signature Condensat

134
SET Inscription du porteur de
carte (7/7)
2
Reponse de Reponse de Reponse de
Certification Certification Certification

Clé aléatoire
de cryptage
Signature Clé Privée
Symétrique Signature de CA
CA CH
Sig. Sig.
Condensat

Condensat

Sont Reponse de 2 Reponse de


Egaux Certification Certification
? Clé Publique
CA
Clé aléatoire Signature
Condensat Signature de cryptage
Symétrique
CA CH
Sig. Sig.

135
SET Purchase

optionel :CH obtient le certificat du commercant et


la passerlle de payement

2 mess echangé entre CH et


Merchand, les quatres aures
échangé entre le
commercant et la passerelle
de payement

136 136
PInitReq/PInitRes
Afin d'envoyer des messages SET au commerçant, le titulaire de
carte doit disposer d'une copie des certificats du commerçant et
de la passerelle de paiement.

Le client demande les certificats dans le message PInitReq,


envoyé au marchand. Le commerçant génère une réponse et la
signe avec sa clé de signature privée : PInitRes.

Le titulaire de carte vérifie les certificats du commerçant et de


la passerelle au moyen de leurs signatures respectives.
137 137
Preq : Double signature
Le client crée deux messages
 Informations de commande (OI) pour le marchand;
 Informations de paiement (PI) pour la banque;
Aucune des parties n'a besoin des détails de l’autre mais doit savoir qu'ils
sont liés.
La double signature DD est le MD crypté avec la clé secrète du client des
MD(OI)||MD(PI).

- DD est envoyée à la fois au commerçant et à la banque.


- Le commerçant reçoit OI, le MD(PI) sans voir l’PI lui-même
- La banque voit le PI, le MD(OI) mais pas l’OI lui même.

La double signature DD permet de vérifier le linkage.


138 138
Preq Double signature
(preuve linkage)

139
KRc : clé priv du client
Preq (construction)

140
Vérification req. achat (commerçant)

141
142 142
DNSsec
ensa-agadir.ac.ma IN SOA genux.ensa-agadir.ac.ma root.ensa-agadir.ac.ma(
2003021618;
28800;
7200;
604800;
3600;)
IN NS genux.ensa-agadir.ac.ma
IN NS senux.ena-agaidr.ac.ma
www IN A 192.168.1.1
Ensa-agadir.ac.ma IN MX 10 relais.ensa-agadir.ac.ma
Ensa-agadir.ac.ma IN MX 30 relais2.ensa-agadir.ac.ma

Comment signer cette zone?


Générer un paire de clés: ZSK (algorithme RSASHA1).
-

dnssec-keygen -a <alg> -b <bits> -n ZONE ZSK


[ZSK private pour signer et ZSK public à ajouter dans la zone]
-Signer sa zone:
dnssec-signzone -s start-time-e end-time -f output-file /var/named/ensa ZSK
-Charger sa zone
143 143
Fichier de zone signé
ensa-agadir.ac.ma IN SOA genux.ensa-agadir.ac.ma root.ensa-agadir.ac.ma(
2003021618;
28800;
7200;
début_validité
Algorithme
label
origine nom signataire
604800; ID de la clef
3600;) fin_validité
SIG SOA 5 1 3600 20030320173018(
20030320173018 35861 ensa-agadir.ac.ma.
oL3hp9uZnxZMH7swd3dN)
IN NS genux.ensa-agadir.ac.ma
IN NS senux.ena-agaidr.ac.ma
SIG NS 5 2 3600 20030320173018(
2003032018760 35861 ensa-agadir.ac.ma.
xL4uS8dNb9Uprq5k9EdN)
IN MX 10 relais.ensa-agadir.ac.ma
IN MX 30 relais2.ensa-agadir.ac.ma
SIG MX 5 2 3600 20030320173018(
20030320165789 35861 ensa-agadir.ac.ma.
Su4uS8dN+9ex7uYT9px3vN=)
IN KEY 256 3 5 (
8ao++yPu7/20all6ujG=); key id=57410
IN NXT www.ensa-agadir.ac.ma NS SOA MX SIG KEY NXT 144 144
www IN A 192.168.1.1
DNSsec

Comment faire confiance à la clé publique ZSK d’une zone?

Pour valider la clé publique ZSK, named dispose d’une autre paire de clé appelée
KSK : la clé publique ZSK et la clé publique KSK sont signées avec la clé
privée KSK. La signature obtenue est publiée dans le fichier de zone.

145
DNSsec

Comment faire confiance à la clé publique KSK d’une zone?


nous devrons trouver un moyen de relier une zone avec son parent pour
créer une « Chaîne de confiance » et enfin avoir une clé pour les gouverner
et les sécuriser tous!!!.

146
Délégation sécurisé

1. Les RR de la ZF sont signés par la ZSKpriv de la ZF;


2. La ZSKpub de la ZF est signée par la KSKpriv de la ZF;
3. La KSKpub de la ZF est authentifiée par la zone mère en
générant le RR DS correspondant et en l’incluant dans le fichier
de ZM;
4. Ce DS est signé dans la ZM par la ZSKpriv de la ZM
5. La ZSKpub de la ZM est signée par la KSKpriv de la ZM;
6. La KSK de la zone mère est authentifiée par le DS
correspondant dans la zone grand-mère;
7. Ce DS est signé par la ZSK de la ZGM;
Un résolveur configuré avec Hash de KSK de ZGM comme clé de confiance
147 147
Délégation sécurisé
ensa.ac.ma IN KEY ….. (52132) KSK
52132
IN KEY ….. (10902) ZSK
IN SIG KEY .. 52132 ensa.ac.ma Clef de confiance
de ensa
IN SIG KEY .. 10902 ensa.ac.ma
gii.ensa.ac.ma IN DS 33202 ..
IN SIG DS … 10902 ensa.ac.ma
gii.ensa.ac.ma IN KEY ….. (33202) KSK
IN KEY ….. (7203) ZSK
IN SIG KEY .. 33202 gii.ensa.ac.ma
IN SIG KEY ... 7203 gii.ensa.ac.ma
child.gii.ensa.ac.ma IN DS 21202 ..
IN SIG DS … 7203 gii.ensa.ac.ma
child.gii.ensa.ac.ma
KSK(21202) 148 148
TSIG

Synchroniser son horloge : démon ntpd (lle protocole TSIG ajoute aux RR à
mettre à jour un enregistrement comprenant le timestamp pour éviter l’attaque par "rejeu".)
Générer un secret dnssec-keygen –a hmac-md5 -b <bits> -n HOST
<name>
Ajouter le secret dans la configuration DNS (prim et sec)
key "ensa-esta" {
algorithm hmac-md5;
secret "sARtfkSRFds56hj132lldFg="; };
Configurer le primaire :
zone ensa { type master;
file ………
allow-transfer { key "ensa-esta"; };
Et le secondaire :
server 192.134.4.120 { keys { "ensa-esta"; }; };
zone ensa { type slave;
file ………
master { 192.134.4.20;};}; 149 149
New RR

150
Annexe 1

Openssl & courbes elliptiques

151
EC : Générer clé (p=256)
openssl ecparam -list_curves
Openssl ecparam –genkey -name prime256v1 -out
privatekey.key
La courbe prime256v1 est défini par:
p=FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
a=FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC
b=5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B
g[0]=6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296
g[1]=4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5
n=FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551

Les # courbes décrites RFC et enregistrées)


La génération des demandes de certificats est la même que pour
RSA

152
ECDHE
Pour l’échange Diffie-Hellman pour calculer un secret partagé, on
commence par générer une clé temporaire et obtenir la clé publique du
destinataire.

1- Générer une clé temporaire.


2- Utilisez la clé publique du destinataire pour dériver un secret partagé
(DH).
3- Chiffrer le texte en clair à l'aide de la clé secrète dérivée.
4- Extraire notre clé publique du fichier de clé.
5- Remettre la clé publique et le fichier crypté au destinataire.

153
ECDHE
openssl ecparam –genkey -name prime256v1 -out temp.pem

openssl pkeyutl -derive -inkey temp.pem -peerkey public.pem -out


secret.txt //DH pour partage de secret

openssl enc -aes-256-cbc -in big_f1 -out big_f2 -pass file:secret.txt


// utilise le secret partagé généré par Diffie-Hellman pour générer la clé, le
mot de passe est lu à partir de la première ligne de secret.txt

openssl ecparam -in temp.pem -pubout -out temppub.pem

mutt -a temppub.txt -a big_f2 -s "encrypted files" -c


recipient@example.com 154
Décryptage (ECDHE)

1- Utilisez la clé publique de l'expéditeur pour dériver un secret partagé à


l'aide de openssl pkeyutl.
openssh pkeyutl -derive -inkey private.pem -peerkey
temppub.pem -out secret.txt

2- Déchiffrer le texte chiffré en utilisant openssl enc à l'aide de la clé


secrète dérivée:
openssl enc -d -aes-256-cbc -in big_f2 -out big_f1 -pass
file:secret.txt

155
ECDSA

Crée la signature:
openssl dgst -ecdsa-with-SHA1 -sign private.pem
test.pdf > signature

Vérifier la signature:
openssl dgst -ecdsa-with-SHA1 -verify public.pem
-signature signature test.pdf

156
Annexe 2

Conversion des certificats

157
Conversion clés/certificats

Par défaut, OpenSSL génère des clés et des CSR utilisant le format
PEM (PKCS#8 codé en base 64). Cependant, il peut arriver que
vous deviez convertir votre clé ou votre certificat dans un format
différent pour pouvoir l'exporter vers un autre système.

PEM -> PKCS#12


Le format PKCS#12 est un fichier d’archive qui stocke à la fois le
certificat et la clé privée. Ce format est utile pour la migration des
certificats et des clés d’un système à l’autre car il contient tous les
fichiers nécessaires. Les fichiers PKCS#12 utilisent l’ extension de
fichier .pfx ou .p12:
$ openssl pkcs12 -export -out ensa.pfx -inkey
ensa.key -in ensa.crt

158
Conversion clés/certificats

PKCS#12 -> PEM


Vous devez utiliser deux commandes distinctes pour reconvertir un
fichier .pfx au format PEM.
- Extraire la clé privée d'un fichier PKCS # 12 (.pfx) et la convertir en
une clé privée codée PEM:
openssl pkcs12 -in ensa.pfx -nocerts -out ensa.key

- Extraire le certificat d'un fichier PKCS # 12 (.pfx) et le convertir en un


certificat codé PEM:
openssl pkcs12 -in ensa.pfx -nokeys -clcerts -out ensa.crt
//-clcerts only output client certificates.
159
Conversion clés/certificats

PEM -> DER


DER utilise le codage ASN.1 pour stocker les informations de certificat ou de clé.
DER stocke comme PEM les informations de clé et de certificat dans deux fichiers
distincts et utilise généralement les mêmes extensions de fichier (c'est-à-dire .key ,
.crt et .csr ou .der ).
- Convertir un certificat PEM ->DER:
openssl x509 -inform PEM -in ensa.crt -outform DER -out ensa.der
- Convertir une clé privée PEM ->DER:
openssl rsa -inform PEM -in ensa.key -outform DER -out ensa_key.der
DER -> PEM
- Convertir un certificat DER ->PEM:
openssl x509 -inform DER -in ensa.der -outform PEM -out ensa.crt
- Convertir une clé privée DER ->PEM:
160ensa.key
openssl rsa -inform DER -in ensa_key.der -outform PEM -out
Annexe 3

Modes opératoires FeedBack

161
Cipher FeedBack (CFB)

162
mode O.F.B

163
Annexe 4

AES

164
AES
ours
 L' AES a été rendu populaire par son utilisation

dans le programme PGP et openssl (Pretty Good


Privacy).

 Il utilise des clés de:


128 bits->10 tours
192 bits -> 12 tours
256 bits -> 14 tours
165 165
AES

166
SubBytes()
Transformation non linéaire appliquée indépendamment à chacun des 16 octets de la matricede l’état
en utilisant une table de substitution (Sbox).
Exemple pour le premier élement:

53 73 69 72
61 68 73 69
74 63 62 6e
69 6a 6f 67

167
ShiftRows().

Permutation cyclique des octets sur les lignes de l’état.


Le décalage des octets correspond à l’indice de la ligne considérée (0 ≤ r < 4 ).

168
MixColumns()

Transformation appliquée à un état colonne après colonne


Transformation linéaire: produit matriciel par une matrice modulo x8+x4+x3+x+1

169
MixColumns()
{02} • {bf} = 00000010 • 10111111
= (x) • (x⁷ + x⁵ + x⁴ + x³ + x² + x + 1) modulo x⁸ + x⁴ + x³ + x + 1
= x⁸ + x⁶+ x⁵ + x⁴ + x³ + x² + x modulo x⁸ + x⁴ + x³ + x + 1
= 101111110 modulo 100011011
= 101111110 ⊕ 100011011
= 1100101

170
MixColumns()

devient

171
MixColumns()

172
AddRoundKey().

XOR dela clef de ronde (ou de la clef lors de la ronde initiale) à l’état considéré.

173
174
Génération des clés

175
73 73 69 72
61 68 73 69
74 63 62 6e
69 6a 6f 67

176
177
178
179

Vous aimerez peut-être aussi