Académique Documents
Professionnel Documents
Culture Documents
Chap. 7 : IDS/IPS
1
Chapitre I
Outils de sécurité
Cryptographie
2
PLAN
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
5 5
Cryptographie 2
6 6
Cryptographie 3
7 7
Cryptographie symétrique
La même clé est utilisée pour le
chiffrement et le déchiffrement
8 8
Cryptographie symétrique
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.
G0 K0 D0
+ F
14 14
DES
15 15
Permutation d’un bloc de 64 bits
Séparation en blocs de 32 bits
Permutation G0
+
K0
F
D0
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
16 16
Permutation d’un bloc de 64 bits
Séparation en blocs de 32 bits
Subdivision
G0 K0 D0
+ F
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
+ P S + E
32 Bits 48 Bits
Dn+1
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
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
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
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
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
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
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é.
33
Inconvénients mode ECB
Attaque de brute force
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
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
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
- 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.
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.
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
51 51
La méthode RSA
Le chiffrement d’un message se fait en
calculant:
C = Me mod n
M = Cd mod n
53 53
Exemple : Récepteur
p=7 et q=13
54 54
Exemple : Récepteur
Envoi 75 au récepteur!
56 56
Exemple : Récepteur
57 57
Exemple attaque algo d'EUCLIDE
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.
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
-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
72 72
Extension v3
Chaque extension est définie par les 3 champs :
Porté=monde
74 74
Certificats numériques
KeyUsage= 1
75 75
Certificats numériques
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:
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
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.
Q = k P = P+P+P+…….+P (k fois)
connaissant Q et P :
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
87
B rend publique sa clé publique
Chiffrement asymétrique EC
Alice Bob
Étape 4 :
88
Chiffrement asymétrique EC
Alice Bob
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
94 94
Signature ECDSA
95
Verif. Sign. ECDSA
z=h(m)
97
98 98
SSL : Architecture
NFS
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
107
Application – openssl
-chiffrement symétrique
-chiffrement asymétrique
-signature numérique
-certificat électronique
-standards PKCS#n
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
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
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
114
PKCS#1 padding
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
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
= 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)
120
2- Ajout connecteur SSL
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"/>
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>
124
III - Application
commerce électronique
protocole SET
125
Protocole SET
SET est une spécification technique écrite
conjointement par Visa et MasterCard.
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
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
135
SET Purchase
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.
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
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
146
Délégation sécurisé
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
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
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.
153
ECDHE
openssl ecparam –genkey -name prime256v1 -out temp.pem
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
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.
158
Conversion clés/certificats
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
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().
168
MixColumns()
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