Vous êtes sur la page 1sur 176

Sécurité Logiciels et des Réseaux

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

M1 : Sécurité Logiciels
Chap. 1 : Spring Security
Chap. 2 : Sécurité SOA WS-SECURITY
Chap. 3 : Sécurité Java, JAAS, JCE et sécurité JEE
Chap. 4 : Oauth2 et openidconnect et ABAC

M2 : Sécurité Réseaux
Chap. 1 : Protocoles d’Authentification
Chap. 2 : VPN IPSec
Chap. 3 : Attaques réseaux et failles logiciels
Chap. 4 : IDS/IPS

1
Chapitre I

Outils de sécurité
Cryptographie

2
PLAN

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


AES
 Crypto asym RSA, EC
 Fonction hachage et signature numérique
 Certificats électronique
 Application à JBOSSX/tomcat/HTTPS, DNS,
SET, Bitcoin…..
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, 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 à clé
symétrique 1
 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 (taille du bloc 64, 128
bits…?fixe?).
 Génération de 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.
Pour déchifrer : même processus à r 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 D0

+ F

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

D0 et G0 subissent
F

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

48 Bits

32 Bits Kn+1 32 Bits


Gn Dn

+ P S + E

48 Bits
Dn+1

Dn+1= Gn + F(Dn , Kn+1) 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

première fonction de substitution S1


Dn+1 48 Bits

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 G0 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 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 ».
30 30
31 31
Inconvénients mode C.B.C

32
Inconvénients mode C.B.C

33
Double DES

34 34
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 (clair,chiffré) en mémoire
35 35
Attaque par le milieu

36 36
Attaque par le milieu

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

- une succession de trois chiffrements DES

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


deux ou trois clés distinctes de 56 bits.

39 39
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.
40 40
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.
 Il est notamment utilisé dans le protocole SSL en
raison de son efficacité.
41 41
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é?


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

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

44 44
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 )

45 45
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
46 46
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)

47 47
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.
48 48
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.

49 49
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
50 50
Exemple : Récepteur

Il choisit e=5 qui satisfait à:


1<e<72 et pgcd(72,5)=1
Calcul d = e-1 mod 72 = 29
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, 51 51
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!
52 52
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!!

53 53
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
54 54
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

55 55
Fonctions de condensation
 Elles transforment un message de longueur
arbitraire en une empreinte numérique de
taille fixe (128 bits dans le cas de MD5). Elles
doivent posséder les propriétés suivantes
pour un usage "cryptographique":
 rendre impossible ou très difficile la recherche
de 2 messages produisant la même
empreinte numérique.
 rendre impossible ou très difficile l'inversion
de la fonction de hachage.
56 56
Fonctions de condensation
 Exemples 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
57 57
Fonctions de condensation

 Des collisions existent dès lors que la taille


de l'espace des messages est supérieure à
la taille de l'espace des empreintes
numériques, qui est fixe: 2128 dans le cas
de MD5.

58 58
MD2
 MD2 (Message Digest #2) est la plus
sûre de la série de fonctions de
hachage développées par Ronald Rivest.
 Exploitation intensive des ressources
de calcul que les versions ultérieures.
 Empreintes numériques de 128 bits.

59 59
MD4
 MD4 a été développée pour être une
alternative beaucoup plus rapide à MD2
 Il a été démontré qu'il est possible de trouver
deux fichiers produisant la même empreinte
numérique MD4 sans avoir à faire de
recherche exhaustive
 MD4 doit donc être considérée comme
caduque et ne plus l’employée pour un usage
"cryptographique".

60 60
MD5
 MD5 est une version modifiée de MD4
comprenant une étape de calcul
supplémentaire.
 Elle est ainsi plus sûre mais un peu moins
rapide que la précédente.
 Très largement utilisée. Elle produit des
empreintes numériques de 128 bits.

61 61
SHA-1
 La fonction de condensation SHA
(Secure Hash Algorithm) produit des
empreintes numériques de 160 bits.

 L'algorithme est un peu moins rapide


que le MD5 mais sa plus grande taille
d'empreinte le rend plus resistant aux
attaques utilisant la force brute.

62 62
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.
63 63
Signature numérique

64 64
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é.

65 65
Signature numérique

66 66
Certificats numériques

-Rôle ???
-Emetteur ???
67 67
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 ...).

68 68
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

69 69
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 ;


70 70
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

71 71
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)
72 72
Structure d’un certificat X.509

73 73
Certificats numériques
KeyUsage= 5

Porté=monde

74 74
Certificats numériques

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 »

76 76
Certificats numériques
 La définition du certificat dans le
standard X.509 utilise la notation ASN.1
(Abstract Syntax Notation) qui permet
de décrire des types de données
indépendants d'une architecture
particulière.

77 77
Certificats numériques
Certificat X509 définition ASN.1

Certificate ::= SEQUENCE {


tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING }

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

79 79
EC

80
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)
81
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
82
Exemple de Courbe élliptique

83
Courbe élliptique : lois d’addition

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. A choisi une E.C. : (a,b et p) notés E définie sur Zp.


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

87
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

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

96
Verif. Sign. ECDSA

97
Application
protocole SSL

98 98
SSL : Architecture
N
FS

F
TP S
MTP H
TTP T
eln
et X
DR

S
SL S
NMP R
PC

T
CP U
DP

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 Typede Sensde Signification
message transmission
HelloRequest optionnel serveurclient C emessaged emandeauclientd'entamer
leHandshake.
ClientHello obligatoire clientserveur Cemessagecontient:
lenumérodeversionduprotocoleSSL;
lenombrealéatoire:client_random;
l'identificateurdesession:session_ID;
lalistedessu itesdechiffrementchoisies
parleclient;
lalisted esm éthode sdecompression
cho isiesparleclient.
ServerHello obligatoire serveurclient Cemessagecontient:
lenumérodeversionduprotocoleSSL;
unnombrealéatoire:serveur_random;
l'identificateurdesession:session_ID;
unesuitedechiffrement;
uneméthodedecompression.

103
Handshake
C
e
rt
if
ica
t
e O
p
ti
onn
el s
erv
eu
rc
li
ent Cem e
ss
agec
o nti
en tlece
rt
if
ica
td
u
c
l
iet
n se
r
veur s
erveu
ro
u c
el
uid u cli
ents
il
e se
rv
eu
rl
e l
ui
r
écl
ameetq
ue l
e cli
e nten
possèd
eu
n.
S
er
ver
Key
Ex
ch
an
geO
p
ti
onn
el s
er
veu
rc
l
ien
t C
e mes
sa
gee
stenvoyé
parleserv
eu
rq
ue
s

iln
e p
os

de
a ucunce
rt
if
ica
t,ou
s
eul
eme
ntu
nc
e r
ti
fi
catd
esignat
ure
.
C
e
rt
if
ica
t
eRe
qu
es
t O
p
ti
onn
el s
er
veu
rc
l
ien
t P
arce me
ss
age,l
e s
er
veu
rr
écl
ame
un
c
er
ti
fi
cata
uc
li
ent.
S
er
ver
Hel
loD
o
ne O
b
li
gat
oir
ese
r
veu
rc
l
iet C
n eme
ss
ag
es
ig
nal
e l
a f
ind
el
’en
vo
id
e s
m
es
sa
ge
sSe
r
ver
Hell
o e
tsu
bséq
ue
nt
s.

104
Handshake
C
l
i
e n
t
Key
Ex
ch
an
g
eOb
l
i
g a
t
oi
rec
l
i
e n
ts
er
veu
rCemessagec
on
t
ie
nt
leP
re
M a
s
te
rS
ec
r
et
c
r
ypt
éàl’
aid
ede
lac
l
é p
u
bl
i
q u
ed
u
s
er
veu
r.
C
e
rt
i
fi
cat
eVe
r
i
fy O
p
ti
onn
e
l c
l
i
e n
ts
er
veu
rCemes s
ag
ep
er
m etu
ne
vér
i
fi
cat
i
on
e
x
pl
i
c i
ted
uce
r
ti
fi
cat
duc
l
ien
t.
F
i
nis
he
d o
b
li
gat
oi
res
er
veu
rc
li
ent C
eme
ss
age
si
gna
lel
a f
i
n dup
rot
oco
l
e
c
l
i
e n
tse
r
veurHan
ds
ha
kee
tl
e d
ébu
t d
e l

é m
i
ssi
ond
e s
d
o
nn
ée
spr
ot
égée
savecl
es n
o
u v
eau
x
p
a
ra

tr
esn
égoc
i
és.

105
Le protocole Alert
Message Contexte Type
bad_certificate échecdevérificationd’uncertificat fatal
bad_record_mac réceptiond’unMACerroné fatal
certificate_expired certificat périmé fatal
certificate_revoked certificat misenopposition(révoqué) fatal
certificate_unknown certificat invalidepourd’autresmotifsqueceux fatal
précisésprécédem m ent
close_notify interruptionvolontairedesession fatal
decompression_failure lesdonnéesappliquéesàlafonctionde fatal
décom pressionsont invalides(parexemple, trop
longues)
handshake_failure impossibilitédenégocierdesparamètressatisfaisants fatal
illegal_parameter unparam ètreéchangéaucoursduprotocole fatal
Handshakedépasselesbornesadm isesoune
concordepasaveclesautresparamètres
no_certificate réponsenégativeàunerequêtedecertificat avertissement
oufatal
unexpected_message arrivéeinopportuned’unmessage fatal
unsupported_certificate lecertificat reçun’est pasreconnuparledestinataire avertissement
oufatal

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

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 -aes-256-cbc[-des3 , -bf-cbc ..] -in f1 -out f2
[-pass pass:xxxx]

Déchiffrement
openssl enc -d -aes-256-cbc –in f2 –out f1 [-pass pass:xxxx]

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
openssl genrsa –des3 -passout pass:ensa2019 -out macle 1024
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 toto.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 clepub -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:
3b:d9:ad:6e:32:a4:29:d1:22:3e:f0:69:c9:32:e7:
publicExponent: 65537 (0x10001) e ??? 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 ×
7,455,602,825,647,884,208,337,395,736,200,454,918,783,366,342,657 (49 digits)
premier connu n'est que 65537. ×

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)
24

nombre est connu par "F4 ". 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)

compromis entre sécurité et complexité : RSA est F1 = 220


(fully factored 1995)
+ 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

127
SET Architecture

128 128
SET Inscription du porteur de
carte (1/7)

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
decryptageSymétrique

Demande Demande
Inscription Inscription
Claire Chiffrée

PAN PAN

CléPubliquedu CA
C léaléatoire
decryptageS ym étrique

Dem ande Dem a nde


Inscription Inscription
Chiffrée C laire
Form ulaire
Inscription
Nonce
P
A N P
A N

C
léPrivéedeCA

130
SET Inscription du porteur de
carte (3/7)
Form ulaire Form ulaire
Inscription Inscription
Nonce Nonce

CléPrivée
Signature deCA

CA
Sig.
C
ond
ens
at Formula ire Condensat
In
s c
riptio n
Son
t Nonce
E
gaux C
léPub
liq
ue
? d
uC A
S
ign
atu
re
C
ond
ens
at

CA
S
ig.

131
SET Inscription du porteur de
carte (4/7)
Val. Nonce

C
léPrivée
deCH
2

Form ula ire C


ond
ensat
In
s criptio n C
léPub
liq
ue
C
léa léatoire
Rem p li d
eCH
decryp tage
Sym étriqu e
S
ignature

132
SET Inscription du porteur de
carte (5/7)
Clé Priv ée
2 De CA
CB
F o r m u la i r e
I n s c r i p tio n C l é P u b l iq u e
R em p li CH C l é al é a to ir e
d e c r y p ta g e
S y m é tr i q u e
2
CB
S ig na ture Formulaire
C l é P u b l iq u e Inscription Clé Publique
Rempli CH Clé aléatoire
de CA
de cryptage
C l é al é a to ir e 3
d e c r y p ta g e Symétrique
CB 3
S y m é tr i q u e
Signature
CB

2
2
Formulaire
F o r m u la i r e
Inscription Clé Publique
I n s c r i p tio n C l é P u b l iq u e Clé aléatoire
R em p li C l é al é a to ir e Rempli CH
CH de cryptage
d e c r y p ta g e
S y m é tr i q u e Symétrique

S ig na ture Signature

133
SET Inscription du porteur de
carte (6/7)

Form ula ire C


ond
ensat
In
s criptio n C
léPu
bliq
ue
R em p li CH C
léa léa to
ire Sont
decry ptage C
léPu
bliq
ue Eg
aux
Sym étrique CH ?

Signature C
ond
ensat

134
SET Inscription du porteur de
carte (7/7)
2
R
ep o nsede R
ep o nsede R
ep o nsede
C
ertific
atio
n C
ertific
atio
n C
ertific
atio
n

C
léaléatoir
e
d
ec rypta
g e
S
ign
atu
re C
léPr
ivé
e
Symétr
iqu e S
ign
atu
re deCA
CA CH
S
ig. S
ig.
C
ond
ens
at

C
ond
ens
at

Son
t R
ep o nsede 2 R
ep o nsede
E
gaux C
ertific
atio
n C
ertific
atio
n
? C
léP
ubliq
ue
CA
C
léa
léa
toir
e S
ign
atu
re
C
ond
ens
at S
ign
atu
re d
ecr
y p
tag
e
S
ymé
triq
ue
CA CH
S
ig. S
ig.

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 un double message
 Informations de commande (OI) pour le marchand et MD(OI);
 Informations de paiement (PI) pour la banque et MD(PI);
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)

KRc : clé priv du client


139
Preq (construction)

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

141
Application à
DNSsec
142 142
Sécurisation locale
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 <name>

-Signer sa zone: dnssec-signzone ensa-agadir.ac.ma 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é
604800; Algorithme
label
origine nom signataire
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
www IN A 192.168.1.1
144 144
TSIG
Synchroniser son horloge : démon ntpd

Générer un secret dnssec-keygen -a <alg> -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;};}; 145 145
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
146 146
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) 147 147
Annexe 1

Openssl & courbes elliptiques

148
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

149
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.

150
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 151
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

152
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

153
Annexe 2

Conversion des certificats

154
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

155
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.
156
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:
openssl rsa -inform DER -in ensa_key.der -outform PEM -out
157ensa.key
Annexe 3

Modes opératoires FeedBack

158
Cipher FeedBack (CFB)

159
mode O.F.B

160
Annexe 4

AES

161
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
162 162
AES

163
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

164
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 ).

165
MixColumns()

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


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

166
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

167
MixColumns()

devient

168
MixColumns()

169
AddRoundKey().

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

170
171
Génération des clés

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

173
174
175
176

Vous aimerez peut-être aussi