Académique Documents
Professionnel Documents
Culture Documents
Confidentialit (eavesdropping)
Les donnes sont intactes, mais peuvent tre rcupres par un tiers.
Intgrit (tampering)
Les donnes sont modifies ou remplaces lors de leur transit.
Problme du rejeu de donnes interceptes
Page 1
Moyens cryptographiques
Cryptage/dcryptage (chiffrement)
Confidentialit: donnes incomprhensibles lors du transit
Authentification: ncessit de disposer de l'autre cl
Hachage cryptographique
Intgrit: toute modification est dtecte
Signature numrique
Authentification: s'assurer de l'identit de l'metteur de donnes
Intgrit: s'assurer que, si la signature est valide, les donnes n'ont
pas changes depuis leur signature
Non-rpudiation: prouver que l'metteur a bien mis ces donnes,
et est le seul a avoir pu le faire (autorisation de prlvement bancaire)
Page 2
Chiffrement symtrique
cl prive, ou cl symtrique
Le rcepteur DOIT avoir la cl pour dchiffrer (si qq'un d'autre la trouve,
intgrit ET authentification sont perdues)
Avantage: peut tre trs efficace (rapide); permutations, XOR...
Inconvnient: connatre (ou communiquer) la cl aux deux parties
Ex: DES, RC2, TripleDES (bloc cipher), RC4 (stream cipher).
Scurit dpend de la taille de la cl de chiffrement, de 40 168 bits
Page 3
Chiffrement asymtrique
cl publique, ou cl asymtrique
La cl prive est connue d'une seule partie, la cl publique est diffuse
tout le monde
Les donnes chiffres avec la cl publique ne peuvent tre dchiffres que par
le dtenteur de la cl prive (le bon sens pour les donnes sensibles).
Pour la signature, c'est le contraire: le signataire chiffre les donnes avec sa cl
prive, et le dchiffrage avec la cl publique prouve l'identit du signataire
Page 4
Hachage cryptographique
Pour remdier au problme d'intgrit
Fonction de hachage: one-way hash ou message digest
Proprits:
La valeur de hachage produite pour les donnes haches est unique
La moindre modification des donnes produit une valeur de hachage
diffrente
Il est trs difficile de retrouver les donnes partir de la valeur de hachage
Page 5
Signature numrique
partir des informations signer
On calcule la valeur du hachage cryptographique de ces donnes
On chiffre de cette valeur avec sa propre cl prive => signature
On transmet les donnes, la signature, l'identit du signataire et les
deux algorithmes utiliss
Le rcepteur
Reoit les donnes D et la signature chiffre SC
Applique le hachage cryptographique D et trouve H1
Rcupre la cl publique du signataire partir de son identit
L'utilise pour dchiffrer la signature reue SC et trouve H2
Compare H1 et H2
La signature est valide si ils sont identiques
Page 6
Page 7
Page 8
Page 9
Solution: le certificat
Dlivr par une autorit de certification,
Certificate Authority (CA),
certifie une identit
Associe une cl publique au nom d'une entit (le sujet du certificat)
Contient d'autres informations, comme les dates limites de validit du
certificat, l'identit de l'metteur du certificat, un numro de srie, etc.
Il permet d'viter d'associer Alice publicCharlie
Cette association est signe par l'metteur du certificat
Si on ne connait pas Alice, mais qu'on connat l'autorit de certification
qui a mis le certificat associant publicAlice Alice (l'metteur et le
signataire du certificat) et qu'on lui fait confiance
alors on utilise la cl publique connue de l'autorit de certification de
confiance pour vrifier la signature du certificat et on accepte le fait que
la cl publique trouve dans le certificat soit bien celle d'Alice
Page 10
Page 11
Certificate:
Data:
Version: v3 (0x2)
Serial Number: 3 (0x3)
Signature Algorithm: PKCS #1 MD5 With RSA Encryption
Issuer: OU=Ace Certificate Authority, O=Ace Industry, C=US
Validity:
Not Before: Fri Oct 17 18:36:25 1997
Not After: Sun Oct 17 18:36:25 1999
Subject: CN=Jane Doe, OU=Finance, O=Ace Industry, C=US
Subject Public Key Info:
Algorithm: PKCS #1 RSA Encryption
Public Key:
Modulus:
00:ca:fa:79:98:8f:19:f8:d7:de:e4:49:80:48:e6:2a:2a:86:
... several lines deleted...
7d:d8:99:cb:0c:99:34:c9:ab:25:06:a8:31:ad:8c:4b:aa:54:
91:f4:15
Public Exponent: 65537 (0x10001)
Extensions:
Identifier: Certificate Type
Critical: no
Certified Usage:
SSL Client
Identifier: Authority Key Identifier
Critical: no
Key Identifier:
f2:f2:06:59:90:18:47:51:f5:89:33:5a:31:7a:e6:5c:fb:36:
26:c9
Signature:
Algorithm: PKCS #1 MD5 With RSA... several lines deleted...
Etienne Duris Universit de Marne-la-Valle Mars 2005
Page 12
Page 13
Page 14
Chanes de certificats
Dans une chane de
certificats:
Chaque certificat est suivi
par le certificat de son
metteur
Chaque certificat contient
le nom (DN) de son metteur,
qui est le sujet du certificat
suivant dans la chane
Chaque certificat est sign
avec la cl prive de son
metteur. Cette signature
peut tre vrifie avec la
cl publique situe dans le
certificat de l'metteur, qui
est le prochain dans la chane
Etienne Duris Universit de Marne-la-Valle Mars 2005
Page 15
Page 16
Page 17
Page 18
Page 19
Page 20
SSL : modle
SSL en est la version 3.1 chez Netscape, ce qui
correspond chez IETF la version 1.0 de TLS
(Transport Layer Security), dfinie par la RFC 2246.
S'intercale entre la couche transport TCP et les
couches applicatives suprieures
Page 21
Page 22
Page 23
Le protocole SSL
Le protocole SSL est compos de deux sous-couches
Sous-couche basse
Protocole Record
Sous-couche haute
Protocoles Handshake, Change Cipher, Application Data et Alert
Page 24
Protocole Record
Encapsule les donnes
transmises et assure
La confidentialit
grce au chiffrement
L'intgrit grce
l'algorithme HMAC
(Hashed Message
Authentication Code)
Hachage crypto avec
cl secrte partage
RFC 2104
Page 25
Page 26
Protocole Alert
Permet d'indiquer, par des messages sur 1 ou 2 octets, tout
type d'erreur l'utilisateur, et de fermer la connexion
Page 27
Protocole de Handshake
Cette partie du protocole permet au client et au serveur
d'changer des informations permettant
Au serveur de s'authentifier auprs du client
Au client et au serveur de crer conjointement les cls
symtriques utilises pour assurer le chiffrement /
dchiffrement rapide et l'intgrit des donnes durant la
session.
En gros, quatre phases
1. changes Hello
2. Envoi d'informations du serveur au client
3. Envoi d'informations du client au serveur
4. changes Finish
Page 28
Page 29
Page 30
Page 31
Page 32
Handshake - illustration
Page 33
Prcautions particulires
Une connexion SSL est aussi sre que les algorithmes
cryptographiques qu'elle utilise: pas plus!
C'est l'utilisateur (application) de vrifier que SSL ngocie
des algorithmes qu'il considre comme srs
Page 34
Charlie
Alice
publicKey
Algos
Signature
Alice
publicKey
Algos
Signature privateKey
Bob
Alice
publicKey
Algos
Signature
Page 35
Page 36
JSSE, fonctionalits
Depuis version 1.4, classe standard
Avant, classes d' extension standard
Avantages
Offre les classes SSLSocket, SSLServerSocket et SSLEngine (nio)
100% pur Java, accs simple SSL, fonctions HTTPS
Support pour l'implantation et la ngotiation de nombreux algorithmes
Support pour gestion et l'accs au stockage des cls / certificats
Etienne Duris Universit de Marne-la-Valle Mars 2005
Page 37
Classes principales
Page 38
Page 39
Usage simple
Pour rcuprer et initialiser un SSLContext
Par un appel getDefault() sur la classe correspondante
Ces 2 mthodes statiques crent
Un SSLContext par dfaut
Avec un KeyManager par dfaut (et son KeyManagerFactory)
Un TrustManager par dfaut (et son TrustManagerFactory)
Un RandomGenerator par dfaut
Page 40
Puis l'initialiser
init(KeyManager[] km,TrustManager[] tm,SecureRandom rdm)
Les Key/TrustManager peuvent tre crs en implantant les interfaces
correspondantes de toute pice, ou en utilisant les fabriques
(Key/TrustManagerFactory), avec leurs mthodes statiques
getInstance() et leurs mthodes init()
Celles-ci peuvent tre initialises par des KeyStore/TrustStore
Page 41
Page 42
java.security.KeyStore (gnral)
Objets construits par getInstance(format, provider)
Initialis ( partir d'un fichier) par
load(InputStream stream,char[] password)
Page 43
javax.net.ssl.KeyManager (SSL)
Ce sont des gestionnaires de cls SSL
Ils grent des paires certificat-cl prive d'un type particulier
Seul type disponible en standard est X509
Page 44
javax.net.ssl.TrustManager (SSL)
Ce sont les gestionnaires de certificats de confiance d'SSL
Ils grent des certificats de confiance d'un type particulier
Seul type disponible en standard est X509
Page 45
Page 46
Page 47
Page 48
SSLSocket et SSLServerSocket
Par hritage, elles disposent des mthodes des Sockets et
ServerSockets
Elles ajoutent des mthodes propres la gestion fine du protocole
SSLSocket
startHandshake()
Par dfaut, appel initialement par le client avant tout change. Cet appel,
implicite ou explicite, est synchrone (bloquant)
Ensuite, peut tre appel nouveau pour rengocier. Alors asynchrone
Possibilit, dans ce cas, d'tre prvenu de manire asynchrone
addHandshakeCompletedListener(HandshakeCompletedListener listener)
SSLServerSocket
Pour demander l'authentification du client (ce n'est pas le cas par
dfaut), appeler setWantClientAuth(true) avant l'appel accept().
Pour l'exiger, appeler setNeedClientAuth(true)
getWantClientAuth() et getNeedClientAuth() pour connatre la config.
Etienne Duris Universit de Marne-la-Valle Mars 2005
Page 49
SSLEngine
Accs ventuellement non bloquant aux ressources sur
une connexion SSL, mais:
Protocole SSL complexe
Problmes d'interoprabilit avec les selecteurs
Volont de ne pas fixer de choix dans les providers
D'o:
Implmentation indpendante du modle d'entres/sortie et
du modle de thread
Doit tre gr par l'application
Pas trs facile manipuler
Page 50
SSLEngine (schma)
Page 51
SSLEngine (tats)
Un SSLEngine doit grer simultanment les donnes de
l'application et les donnes du Handshake
Il peut tre, tout moment, dans l'un des 5 tats:
Creation : prt tre configur
Initial handshaking : en cours d'authentification et de ngociation des
paramtres de communication
Application data : prt changer des donnes de l'application
Rehandshaking : en cours de rengociation des paramtres de
communication. Les donnes de handshake peuvent tre mlanges
aux donnes de l'application
Closure : prt fermer la connection.
Reprsent par SSLEngineResult et SSLEngineResult.HandshakeStatus
Sur les donnes envoyer: wrap(), sur les donnes reues unwrap()
Permet de dmultiplexer les donnes Application et Handshake
Etienne Duris Universit de Marne-la-Valle Mars 2005
Page 52
Ngotiation SSL
Par dfaut, en SSL, c'est le serveur qui attend les
messages Hello
On peut changer cet tat, sur SSLSocket comme sur
SSLServerSocket grce la mthode setUseClientMode()
Il est ensuite possible de demander l'authentification de
l'interlocuteur (setWant..., setNeed... )
Page 53
Sessions SSL
Une session est associe chaque connexion
1 mme session peut tre partage par plusieurs connexions
Par dfaut, s'il n'exsite pas de session associe une demande de
connexion, une nouvelle est cre.
Consultation/modification par get/setEnableSessionCreate()
Page 54
HttpsURLConnection
Hrite de HttpURLConnection
La fabrique de socket SSL utiliser peut tre spcifie
Globalement: setDefaultSSLSocketFactory()
Pour la connexion: setSSLSocketFactory()
Page 55