Académique Documents
Professionnel Documents
Culture Documents
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
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.
6 6
Cryptographie 3
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
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.
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 D0
+ F
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
D0 et G0 subissent
F
48 Bits
+ P S + E
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
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 C.B.C
32
Inconvénients mode C.B.C
33
Double DES
34 34
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
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.
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
47 47
La méthode RSA
Le chiffrement d’un message se fait en
calculant:
C = Me mod n
M = Cd mod n
49 49
Exemple : Récepteur
p=7 et q=13
50 50
Exemple : Récepteur
Envoi 75 au récepteur!
52 52
Exemple : Récepteur
53 53
Exemple attaque algo d'EUCLIDE
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
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.
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
-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
71 71
Extension v3
Chaque extension est définie par les 3 champs :
73 73
Certificats numériques
KeyUsage= 5
Porté=monde
74 74
Certificats numériques
75 75
Certificats numériques
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
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
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:
83
Courbe élliptique : lois d’addition
84
Problème du logarithme discret
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
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
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
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 serveurclient C emessaged emandeauclientd'entamer
leHandshake.
ClientHello obligatoire clientserveur Cemessagecontient:
lenumérodeversionduprotocoleSSL;
lenombrealéatoire:client_random;
l'identificateurdesession:session_ID;
lalistedessu itesdechiffrementchoisies
parleclient;
lalisted esm éthode sdecompression
cho isiesparleclient.
ServerHello obligatoire serveurclient 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
rc
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
rc
l
ien
t C
e mes
sa
gee
stenvoyé
parleserv
eu
rq
ue
s
’
iln
e p
os
sè
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
rc
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
rc
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
ts
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
ts
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
rc
li
ent C
eme
ss
age
si
gna
lel
a f
i
n dup
rot
oco
l
e
c
l
i
e n
tse
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
mè
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
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
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
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:
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
= 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)
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.
127
SET Architecture
128 128
SET Inscription du porteur de
carte (1/7)
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
decryptageSymétrique
Demande Demande
Inscription Inscription
Claire Chiffrée
PAN PAN
CléPubliquedu CA
C léaléatoire
decryptageS ym étrique
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
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)
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
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.
138 138
Preq Double signature
(preuve linkage)
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
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é
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
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.
150
ECDHE
openssl ecparam –genkey -name prime256v1 -out temp.pem
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
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.
155
Conversion clés/certificats
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
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().
165
MixColumns()
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