Professional Documents
Culture Documents
SSL & TLS Essentials Partie 1 - Partie1
SSL & TLS Essentials Partie 1 - Partie1
Chapter 1: Introduction 1
Chapter 2:BasicCryptography 17
ix
x SSL & TLSEssentials:Securing the Web
4.5.3 ServerHello 79
4.5.4 Certificate 80
4.5.5 ServerKeyExchange 81
4.5.6 CertificateRequest 84
4.5.7 ServerHelloDone 85
4.5.8 ClientKeyExchange 85
4.5.9 CertificateVerify 88
4.5.10 Finished 90
4.6 Securing Messages 92
4.6.1 Message Authentication Code 93
4.6.2 Encryption 95
4.6.3 Creating Cryptographic Parameters 96
4.7 Cipher Suites 102
4.7.1 Key Exchange Algorithms 103
4.7.2 Encryption Algorithms 104
4.7.3 Hash Algorithms 104
References 175
Glossary 179
Index 191
xiv SSL & TLSEssentials:Securing the Web
1
Introduction
1
2 SSL & TLS Essentials : Securing the web
La figure 1-1 met en évidence le fait que les messages contenant des
informations de l’utilisateur, y compris des informations sensibles
telles que les numéros de carte de crédit, peuvent parcourir un
chemin complexe de l’Allemagne à la Californie, traversant de
nombreux pays, sur divers réseaux et sur de nombreuses installations
différentes. Certaines de ces installations sont susceptibles
d’appartenir à des entreprises privées, dont beaucoup ne sont
soumises à aucune réglementation ou autre loi régissant la
confidentialité des informations qu’elles transportent.
Ni l’utilisateur ni le serveur Web n’ont de contrôle sur le chemin
d’accès de leurs messages, ni qui examine le contenu du message le
long de l’itinéraire. Du point de vue de la sécurité, c’est comme si
l’utilisateur écrivait son numéro de carte de crédit sur une carte
postale puis la livrait
SSL 1.0
design complete
SSL 2.0
product ships
PCT 1.0
published
SSL 3.0
published
NCSA Internet
Mosaic Explorer
released released
Netscape
Navigator
released
Figure 1-2 SSL was developed along with early Web browsers.
SSL version 1.0; cinq mois plus tard, Netscape a livré le premier
produit prenant en charge SSL version 2.0 : Netscape Navigator.
D’autres jalons dans la chronologie comprennent la publication de la
version 1.0 de la spécification Private Communication Technology
(pct). Microsoft a développé pct comme une amélioration mineure de
la version 2.0 de SSL. Il a corrigé certaines des faiblesses de SSL
2.0, et beaucoup de ses idées ont ensuite été incorporées dans la
version 3.0 de SSL.
Les événements ultérieurs de la chronologie représentent un
changement d’orientation pour la norme SSL. Netscape
Communications a développé les trois premières versions de SSL
avec l’aide significative de la communauté Web. Bien que le
développement de SSL ait été ouvert et que Netscape ait encouragé
d’autres acteurs de l’industrie à participer, le protocole appartenait
techniquement à Netscape. (En effet, Netscape a obtenu un brevet
américain pour le SSL.) À partir de mai 1996, cependant, le
développement de SSL est devenu la responsabilité d’une
organisation internationale de normalisation, l’Internet Engineering
Task Force (ietf). L’ietf développe un grand nombre de normes et
protocole pour l’Internet, y compris, par exemple, tcp et ip.
6 SSL & TLS Essentials : Securing the web
HTTP
HTTP SSL
TCP TCP
IP IP
SSL
TCP
IP
Figure 1-5 SSL can add security to applications other than HTTP.
Bien que les concepteurs de SSL aient choisi une stratégie différente,
il est également possible d’ajouter des services de sécurité
directement dans un protocole d’application. En effet, la norme
comprend certaines caractéristiques de sécurité extrêmement
rudimentaires ; Cependant, ces caractéristiques de sécurité n’offrent
pas une protection adéquate pour le commerce électronique réel. À
peu près au même moment où Netscape concevait ssl, un autre
groupe de concepteurs de protocoles travaillait sur une amélioration
de h t t p connue sous le nom de Secure h t t p. La figure 1-6 illustre
l’architecture de protocole résultante. La norme Secure http a été
publiée par l’ietf à titre expérimental
HTTP HTTP
security
TCP TCP
IP IP
HTTP HTTP
TCP TCP
IP IP with IPSec
IP IP
17
18 SSL & TLSEssentials:Securing the Web
Charles
Alice Bob
Charles
Bob
Alice
Charles
Alice Bob
Figure 2-3 Cryptography can ensure information has not been altered.
BasicCryptography 21
plaintext
Data to
Protect
initial permutation
L0 R0
K1
+ f
L1 = R0 R1 = L0 + f(R0,K1)
K2
+ f
L2 = R1 R2 = L1 + f(R1,K2) Secret
Key
K15
+ f
+ f
inverse permutation
Hidden
ciphertext
Data
Figure 2-4 The DEScipher hides data by scrambling it with asecret key.
(Et, par conséquent, sont de loin le type le plus commun). Ils sont
cependant légèrement moins pratiques à utiliser. Les données
d’entrée elles-mêmes sont la source du désagrément ; Il est rarement
de la même taille que le bloc de chiffrement. Le chiffrement des
données à l’aide d’un chiffrement par bloc nécessite de diviser les
données en blocs et, si le dernier bloc ne contient pas exactement la
bonne quantité de données, d’ajouter des données factices, connues
sous le nom de remplissage, pour les remplir.
Bien que cela ressemble un peu à de la magie, cela a une solide base
mathématique. Fondamentalement, le cryptage asymétrique est basé
sur des problèmes mathématiques qui sont plus faciles à générer qu’à
résoudre. Par exemple, toute personne disposant d’une calculatrice de
poche peut calculer le produit de 113 et 293 et obtenir la bonne
réponse de 33 109. Il est beaucoup plus difficile, cependant, d’utiliser
la même calculatrice de poche pour résoudre un problème similaire
en sens inverse. Lesquels deux nombres entiers, lorsqu’ils sont
multipliés, donnent le produit 29213 ?1
La figure 2-5 montre comment le chiffrement à clé publique peut
fonctionner. Lorsque Bob veut qu’Alice lui envoie des informations en
toute sécurité, il génère deux keys.
1
Create
keys.
2
3
Publish
Encipher public
with key.
public
key.
5
4
Decipher
Send with
encrypted private
message. key.
Alice Bob
Figure 2-5 Public key cryptography uses published keys to encrypt data.
1
The answer, for the insatiably curious, is 131 and 223.
26 SSL & TLSEssentials:Securing the Web
L’une est la clé privée, que Bob garde complètement pour lui. À
l’inverse, Bob fait de la publicité pour la clé publique,
conceptuellement même en la publiant dans un journal. Alice lit le
journal pour trouver la clé publique, puis l’utilise pour chiffrer les
informations. Lorsque Bob reçoit la carte postale d’Alice, sa clé
privée lui permet de déchiffrer le message. Puisque seul Bob a sa clé
privée, seul Bob peut déchiffrer avec succès les informations. Même
Alice serait incapable de le faire.
Certains algorithmes de chiffrement à clé publique, notamment
l’algorithme Rivest Shamir Adleman (rsa) couramment utilisé avec
ssl, fonctionnent également en inverse. Les informations chiffrées
avec une clé privée peuvent être déchiffrées avec la clé publique
correspondante. Cette fonctionnalité a plusieurs applications
puissantes, surtout pour SSL, comme un moyen de prouver l’identité.
Imaginez, comme dans la figure 2-6, que Bob crypte une information
bien connue en utilisant sa clé privée et envoie le texte chiffré
résultant à Alice. Alice peut utiliser la clé publique de Bob pour
déchiffrer l’information. Elle compare ensuite le résultat avec les
informations bien connues qu’elle attendait. S’il y a une
correspondance, Alice est assurée que l’information a été cryptée
avec la clé privée de Bob. Seule cette clé aurait permis le décryptage
réussi. Et, puisque Bob est la seule personne qui connaît sa clé
privée, Alice est en outre assurée que Bob était le
1
Encipher
with
private
key.
3
2
Decipher
with Publish
public public
key. key.
Alice Bob
Figure 2-6 Public key ciphers verify identity using published keys.
BasicCryptography 27
celui qui a envoyé l’information. Grâce à cette approche, Bob a
prouvé son identité à Alice. Les algorithmes à clé publique
réversibles tels que rsa peuvent également fournir un autre service
important : l’équivalent numérique d’une signature. Supposons que
Bob ait besoin d’informations de la part d’Alice. Supposons en outre
qu’il soit important qu’Alice ne puisse pas nier plus tard lui avoir
envoyé l’information, que ce soit à Bob ou à un tiers indépendant (tel
qu’un juge). En effet, Bob a besoin d’Alice pour signer
l’information. Pour accompagner cela, Alice peut chiffrer les
informations avec sa clé privée. Puisque n’importe qui peut obtenir
sa clé publique, n’importe qui peut déchiffrer l’information. Seule
Alice, cependant, connaît sa clé privée, donc seule Alice aurait pu
chiffrer les informations en premier lieu.
Certains algorithmes à clé publique ne peuvent être utilisés que pour
les signatures numériques ; Ils ne peuvent pas fournir de services de
cryptage. L’un de ces algorithmes importants pour ssl est
l’algorithme de signature numérique (dsa).
2 1
Publish
Generate
public
random
key.
numbers
forsecret
keys.
3 4
Decipher
Encrypt
secret
secret
keyswith
keyswith
private
Bob's
key.
publickey.
5 5
Encipher Encipher
and and
decipher decipher
data with data with
secret keys. secret keys.
Alice Bob
Figure 2-7 Effective security combines secret and public key techniques.
Une fois qu’Alice et Bob ont échangé avec succès les numéros
aléatoires, ils n’ont plus besoin de cryptage à clé publique. Au lieu de
cela, ils peuvent utiliser les nombres aléatoires comme clés secrètes
pour l’encryption symétrique standard. Alice et Bob peuvent
communiquer en toute sécurité aussi longtemps qu’ils le souhaitent.
Et comme le cryptage symétrique n’a pas besoin d’autant de
puissance de traitement que le cryptage asymétrique, le cryptage a un
coût beaucoup plus faible.
Il existe une variation importante de ce processus qui repose sur un
type différent d’algorithme à clé publique. Le type spécial
d’algorithme est connu sous le nom d’algorithme d’échange de clés,
et l’exemple le plus célèbre est l’algorithme de Diffie-Hellman.
BasicCryptography 29
2.3 Management
La gestion des clés est un défi pour toutes les formes de
cryptographie. La cryptographie à clé publique améliore la situation ;
Au moins, les clés que les parties échangent n’ont pas à être gardées
secrètes du reste du monde. Néanmoins, la clé publique doit être
échangée de manière fiable. Dans les exemples précédents, Alice a
hypothétiquement récupéré les clés publiques de Bob dans le journal.
Supposons, cependant, que l’infâme Charles ait pu imprimer un faux
journal (avec une fausse clé publique pour Bob) et le glisser dans
l’allée d’Alice le matin à la place de son vrai journal. Comment Alice
aurait-elle connaissance de la fraude ?
C’est précisément ce problème qui a conduit à la création de
certificats de clé publique et d’autorités de certification. Bien qu’ils
ne soient pas remarqués par la plupart des utilisateurs occasionnels
d’Internet, ils sont essentiels au protocole Secure Sockets Layer et au
commerce Web.
2.3.1 Public Key Certificates
À bien des égards, les certificats à clé publique sont l’équivalent
numérique d’un permis de conduire. Bien que les certificats puissent
appartenir à des systèmes informatiques plutôt qu’à des individus, ils
partagent trois caractéristiques importantes avec les permis de
conduire. Tout d’abord, ils identifient chacun leurs sujets en incluant
les noms des sujets. Deuxièmement, ils affirment des informations
clés sur le sujet. Un permis de conduire déclare que le sujet a certains
privilèges (c’est-à-dire conduire une voiture), tandis qu’un certificat
affirme la clé publique du sujet (et peut-être d’autres privilèges).
Enfin, un certificat et un permis de conduire sont délivrés par une
organisation de confiance, soit une agence gouvernementale ou une
autorité de certification.
30 SSL & TLSEssentials:Securing the Web
Version
Serial Number
Algorithm Identifier
Issuer
Period of Validity
Subject
Subject'sPublicKey
Issuer Unique ID
Subject Unique ID
Extensions
Signature
Version
Serial Number
Algorithm Identifier
Issuer
Issuer and
Period of Validity Subject are
thesame.
Subject
Subject'sPublicKey
Signature
Issuer:
ACMECorp.
Subject:
ACMECorp.
Issuer: Issuer:
ACMECorp. ACMECorp.
Subject: Subject:
HR Dept. R&D Dept.
3
SSLOperation
3.1 SSLRoles
SSLOperation 39
Message Description
CertificateRequest A request by the server that the client provide
its public key certificate.
CertificateVerify A message from the client that verifies that it
knows the private key corresponding to its pub-
lic key certificate.
ChangeCipherSpec An indication to begin using agreed-upon secu-
rity services (such as encryption).
ClientHello A message from the client indicating the secu-
rity services it desiresand is capable of support-
ing.
ClientKeyExchange A message from the client carrying crypto-
graphic keys for the communications.
Finished An indication that all initial negotiationsare
complete and secure communications have
been established.
HelloRequest A request by the server that the client start (or
restart) the SSL negotiation process.
ServerHello A message from the server indicating the secu-
rity services that will be used for the communi-
cations.
ServerHelloDone An indication from the server that it has com-
pleted all its requests of the client for establish-
ing communications.
ServerKeyExchange A message from the server carrying crypto-
graphic keys for the communications.
Client Server
1 ClientHello
ServerHello 2
ServerKeyExchange 3
ServerHelloDone 4
5 ClientKeyExchange
6 ChangeCipherSpec
7 Finished
ChangeCipherSpec 8
Finished 9
Step Action
7 Client sends Finished message to let the server check the newly
activated options.
8 Server sendsChangeCipherSpec message to activate the nego-
tiated options for all future messages it will send.
9 Server sends Finished message to let the client check the newly
activated options.
3.3.1 ClientHello
Table 3-3 ClientHello Components
Le message ClientHello lance la communication SSL entre les deux
parties. Le client utilise ce message pour demander au serveur de
commencer à négocier les services de sécurité à l’aide de SSL. Le
tableau 3-3 répertorie les composants importants d’un message Client
Hello.
Field Use
Version Identifies the highest version of the SSL proto-
col that the client can support.
RandomNumber A 32-byte random number used to seed the
cryptographic calculations.
SessionID Identifiesaspecific SSLsession.
CipherSuites A list of cryptographic parameters that the cli-
ent can support.
CompressionMeth- Identifies data compression methods that the
ods client can support.
3.3.2 ServerHello
Field Use
SessionID Identifies the specific SSLsession.
CipherSuite The cryptographic parameters to be used for this
communication.
Compression- The data compression method to be used for this
Method communication.
Le champ Version est le premier exemple d’un serveur prenant une SSL vs.TLS
décision finale pour les communications. La version de Client Hello Le protocole
identifie simplement les versions SSL que le client peut prendre en TLS utilise
charge. La version de ServerHello, d’autre part, détermine la version une valeur
SSL que la communication utilisera. Cependant, un serveur n’est pas de version
entièrement libre de choisir n’importe quelle version ssl; Il ne peut de 3.1 au
lieu de 3.0
pas choisir une version plus récente que la dernière que le client peut
prendre en charge. Si le client n’aime pas le choix du serveur, il peut
abandonner la communication. Au moment d’écrire ces lignes,
presque tous les clients et serveurs SSL prennent en charge la version
3.0 du protocole SSL.
Le champ RandomNumber de ServerHello est essentiellement le
même que dans Client Hello, bien que cette valeur aléatoire soit
choisie par le serveur. Avec la valeur du client, ce nombre entraîne
d’importants calculs cryptographiques. La valeur du serveur partage
les mêmes propriétés que dans Client Hello. Quatre des 32 octets
sont la date et l’heure (pour éviter de répéter des valeurs aléatoires);
Les octets restants doivent être créés par un générateur de nombres
aléatoires sécurisé par cryptographie. Le champ SessionID d’un
ServerHello peut contenir une valeur, contrairement au champ Client
Hello dont nous venons de parler. La valeur dans ce cas identifie de
manière unique cette communication ou session SSL particulière. La
principale raison d’identifier explicitement une session SSL
particulière est de s’y référer à nouveau plus tard. La section 3.8
montre un exemple de la façon dont un client peut utiliser cette
facilité pour accélérer le processus de négociation SSL. Si le serveur
n’a pas l’intention de réutiliser la session, il peut omettre le champ
SessionID de son message ServerHello.
Le champ CipherSuite (notez que le nom est singulier, et non pluriel,
comme dans le cas d’un client Hello) détermine les pa- ramètres
cryptographiques exacts, en particulier les algorithmes et les tailles
de clé, à utiliser pour la session. Le serveur doit sélectionner une
seule suite de chiffrement parmi celles répertoriées par le client dans
son message Client Hello.
46 SSL & TLS Essentials : Securing the
Web
Client
Figure 3-2 Clients build pending cipher suites while using active ones.
SSLOperation 49
Server
1 ClientHello Write Read
Act Pnd Act Pnd
Encr null ? null ?
MAC null ? null ?
key null ? null ?
L’un des États est actif et le second est en attente. Par conséquent, le
client et le serveur conservent un total de quatre états différents :
l’état d’écriture actif, l’état d’écriture en attente, l’état de lecture actif
et l’état de lecture en attente. (Les chiffres utilisent les abréviations «
Act » et « Pnd » pour actif et en attente, respectivement.)
Les figures montrent également les éléments clés d’un État. Il s’agit
de l’algorithme d’encryption (abrégé « Encr »), de l’algorithme
d’intégrité du message (abrégé « mac » pour Message Authentication
Code) et du matériel clé. Dans les figures 3-2 et 3-3, les systèmes
conviennent d’utiliser la norme de cryptage des données (des) pour le
chiffrement symétrique et le Mes- sage Digest 5 (md5) pour
l’intégrité des messages.
Comme le montrent les chiffres, tous les systèmes démarrent dans
des états actifs sans aucun service de sécurité. Cette condition initiale
est nécessaire pour que les systèmes puissent commencer toute
communication ; Tant qu’ils n’ont pas négocié les services et les
paramètres de sécurité, une communication sécurisée n’est pas
possible. Au fur et à mesure que les systèmes échangent des
messages SSL, ils commencent à construire l’état pending. Ils
s’accordent d’abord sur le cryptage et l’intégrité des messages, puis
ils échangent des informations clés. Ce n’est qu’alors, lorsque le
client et le serveur ont des états en attente complets, que les systèmes
peuvent adapter ces états en attente avec des messages
ChangeCipherSpec. Le tableau 3-5 détaille le traitement des clients
illustré par la figure 3-2. Il décrit les étapes de la figure qui sont
montrées en noir uni ; Ce sont les étapes qui entraînent un
changement des états du client.
Notez dans les figures que l’état d’écriture actif d’un système est le
même que l’état de lecture actif de l’autre système, à une exception
près. L’exception se produit lors de la transmission d’un
ChangeCipherSpec
52 SSL & TLS Essentials : Securing the
Web
3.3.7 Finished
Immédiatement après l’envoi de leurs messages ChangeCipherSpec,
chaque système envoie également un message Terminé. Les
messages Terminé permettent aux deux systèmes de vérifier que la
négociation a réussi et que la sécurité n’a pas été compromise. Deux
aspects du message Terminé contribuent à cette sécurité. Tout
d’abord, comme l’expliquait la sous-section précédente, le message
Terminé lui-même est soumis à la suite civique négociée. Cela
signifie qu’il est crypté et authentifié conformément à cette suite. Si
la partie réceptrice ne peut pas déchiffrer et vérifier le message, il est
clair que quelque chose a mal tourné avec la négociation de sécurité.
Le contenu du message Terminé sert également à protéger la sécurité
de la négociation ssl. Chaque message terminé contient un hachage
cryptographique d’informations importantes sur la négociation qui
vient de se terminer. Le tableau 3-7 détaille les informations
sécurisées par le hachage. Notez que les données protégées incluent
le contenu exact de tous les messages d’établissement de liaison
utilisés dans l’échange (bien que les messages ChangeCipher-Spec
ne soient pas considérés comme des messages de « handshake » au
sens strict du terme, et ne sont donc pas inclus). Cela protège contre
un attaquant qui parvient à insérer des messages fictifs ou à
supprimer des messages légitimes de la communication. Si un
attaquant était en mesure de le faire, les calculs de hachage du client
et du serveur ne correspondraient pas et ils détecteraient la
compromission. Le chapitre 4 décrit les détails du calcul du hachage.
Table 3-7 Information Authenticated by Finished Message
• Key information
• Contents of all previous SSL handshake messages exchanged by
the systems
• A special value indicating whether the sender isa client or server
SSLOperation 53
Client Server
ClosureAlert
ClosureAlert
Step Action
3 Server sends its public key certificate in Certificate message.
4 Server concludes its part of the negotiation with ServerHello-
Done message.
5 Client sendssession key information (encrypted with server ’s
public key) in ClientKeyExchange message.
6 Client sendsChangeCipherSpec message to activate the nego-
tiated options for all future messages it will send.
7 Client sends Finished message to let the server check the newly
activated options.
8 Server sendsChangeCipherSpec message to activate the nego-
tiated options for all future messages it will send.
9 Server sends Finished message to let the client check the newly
activated options.
Client Server
1 ClientHello
ServerHello 2
Certificate 3
ServerHelloDone 4
5 ClientKeyExchange
6 ChangeCipherSpec
7 Finished
ChangeCipherSpec 8
Finished 9
3.5.1 Certificate
Lors de l’authentification de son identité, le serveur envoie un
message de certificat au lieu du message ServerKeyExchange section
3.3.3 décrit. Le message Certificate contient simplement une chaîne
de certificats qui commence par le certificat de clé publique du
serveur et se termine par le certificat racine de l’autorité de
certification.
Le client a la responsabilité de s’assurer qu’il peut faire confiance au
certificat qu’il reçoit du serveur. Cette responsabilité comprend la
vérification des signatures de certificat, des durées de validité et de
l’état de révocation. Cela signifie également s’assurer que l’autorité
de certification est une autorité de confiance du client. En règle
générale, les clients effectuent cette détermination en connaissant la
clé publique des autorités de certification approuvées à l’avance, par
des moyens fiables. Netscape et Microsoft, par exemple, préchargent
leur logiciel de navigation avec des clés publiques pour des
autorisations de certificats bien connues. Les serveurs Web qui
souhaitent s’appuyer sur ce mécanisme de confiance ne peuvent
obtenir leurs certificats (au moins indirectement) qu’auprès de l’une
de ces autorités bien connues.
Un détail supplémentaire dans le processus de vérification du
certificat peut parfois sembler subtil, mais il est néanmoins crucial
pour une sécurité réelle : le client doit s’assurer non seulement que le
certificat est délivré par une autorité de confiance, mais que le
certificat identifie également sans ambiguïté la partie avec laquelle il
souhaite communiquer. Prenons, par exemple, une entreprise
malveillante qui reçoit un certificat légitime d’une autorité de
certification de confiance sous son propre nom, mais qui se retourne
ensuite et utilise ce certificat de manière illégitime pour se faire
passer pour un concurrent. Le client sans méfiance qui communique
avec cette société malveillante (croyant qu’elle communique avec le
concurrent) recevra un certificat légitime dans le cadre de l’échange SSL.
Le client, cependant, doit être suffisamment intelligent pour détecter que
le certificat n’appartient pas au concurrent réel. Pour le commerce Web,
la clé pour résoudre ce problème repose normalement sur le nom de
domaine du serveur. Les autorités de certification respectées incluent le
nom de domaine Internet du serveur Web dans les certificats qu’elles
émettent. Et les navigateurs Web vérifient le nom de domaine dans les
certificats qu’ils reçoivent par rapport au nom de domaine que leurs
utilisateurs tentent de contacter.
SSLOperation 57
Cette limitation à elle seule serait suffisante pour exiger une plus grande
flexibilité du protocole SSL, mais il est utile de comprendre pourquoi la
combinaison de la signature et du cryptage peut ne pas être souhaitable,
même lorsque l’algorithme de clé publique prend en charge les deux
opérations. La raison la plus courante pour séparer le cryptage de la
signature n’est pas basée sur des considérations techniques, mais sur des
considérations juridiques. Certains pays, y compris les producteurs
importants de produits cryptographiques tels que les États-Unis (du moins
au moment de la rédaction du présent rapport), contrôlent l’utilisation ou
l’exportation de produits qui incluent la cryptographie. En particulier, les
États-Unis font en sorte qu’il est plus difficile pour les fournisseurs
d’exporter des produits cryptographiques qui utilisent des longueurs de clé
de chiffrement supérieures à un certain minimum. (Les longueurs de clé
inférieures ou égales à ces limites sont dites
Client Server
1 ClientHello
ServerHello 2
Certificate 3
ServerKeyExchange 4
ServerHelloDone 5
6 ClientKeyExchange
7 ChangeCipherSpec
8 Finished
ChangeCipherSpec 9
Finished 10
3.6.1 Certificate
Le message Certificate de cet exemple est identique à celui de la section
3.5, sauf que la clé publique du certificat du serveur ne sera utilisée que
pour vérifier son identité. Cependant, le client a toujours toutes les
responsabilités discutées à la section 3.5.1. Il doit vérifier les signatures,
les durées de validité et l’état de révocation du certificat, et il doit
s’assurer que l’autorité de certification est digne de confiance et que le
certificat a été transmis à la partie avec laquelle il souhaite
communiquer.
3.6.2 ServerKeyExchange
Le serveur suit son message de certificat avec un message
ServerKeyExchange. C’est ce deuxième message qui contient la clé
publique que le client doit utiliser pour chiffrer les informations de clé
de session. Le ServerKeyExchange est le même message que celui que
nous avons vu lorsqu’aucune authentification n’était impliquée, et les
informations contenues dans le message sont les mêmes que celles
décrites dans la section 3.3.3, avec une différence significative :
contrairement à l’exemple de la section 3.3, dans lequel les clés de
serveur ont été envoyées par elles-mêmes, dans ce scénario, les
informations de clé sont signées à l’aide de la clé publique contenue
dans le certificat du serveur. Cette étape est essentielle pour donner au
client un moyen de vérifier que le serveur possède bien la clé privée
correspondant à son certificat de clé publique.
3.6.3 ClientKeyExchange
Le client utilise un message ClientKeyExchange pour terminer le
processus de négociation, comme il le fait dans d’autres scénarios.
Comme précédemment, ce message contient les informations clés de
l’algorithme de chiffrement symétrique sélectionné par les deux parties.
Comme précédemment, ces informations sont cryptées à l’aide de la clé
publique du serveur. Il est important de noter que la clé publique
utilisée pour ce chiffrement est la clé publique du message
ServerKeyExchange, et non la clé publique du message de certificat du
serveur (même si cet algorithme de clé publique prend en charge en-
cryption).
SSLOperation 61
3.7.1 CertificateRequest
Dans tout échange SSL, le serveur détermine si l’authentification du
client est requise. Le client n’a pas le choix ; Il répond simplement
aux souhaits du serveur. Si le serveur requiert l’authentification du
client, il l’indique en envoyant un message CertificateRequest dans le
cadre de sa négociation hello.
Comme l’indique la figure 3-7, le serveur envoie CertificateRequest
après son propre message de certificat. Bien qu’il ne soit pas
représenté dans la figure,
Client Server
1 ClientHello
ServerHello 2
Certificate 3
CertificateRequest 4
ServerHelloDone 5
6 Certificate
7 ClientKeyExchange
8 CertificateVerify
9 ChangeCipherSpec
10 Finished
ChangeCipherSpec 11
Finished 12
3.7.2 Certificate
Notez que ssl utilise uniquement la clé publique du client pour les
signatures numériques. Contrairement à la clé publique du serveur, il
n’existe aucune fonction de protocole qui utilise la clé publique du
client pour le chiffrement. Il n’est donc pas nécessaire de séparer
explicitement l’authentification du client du cryptage, de sorte que ssl
n’a pas d’équivalent client pour le message ServerKeyExchange. (Le
ClientKeyExchange, comme nous l’avons vu, transfère des
informations de clé symétrique, pas des informations de clé
publique.)
3.7.3 CertificateVerify
Le simple fait d’envoyer un message de certificat client ne termine
pas le processus d’authentification de l’identité du client. Le client
doit également prouver qu’il possède la clé privée correspondant à la
clé publique du certifié. Pour sa preuve, le client utilise un message
CertificateVerify. Ce message contient un hachage cryptographique
signé numériquement d’informations disponibles pour le client et le
serveur. Plus précisément, le client signe un hachage des listes de la
table d’informations 3 à 12. Le serveur dispose également de ces
informations, et il recevra (dans le message de certificat) la clé
publique du client. Le serveur peut alors vérifier la signature et
s’assurer que le client possède la clé privée appropriée.
Table 3-12 Information Authenticated by CertificateVerify Message
• Key information.
• Contents of all previous SSL handshake messages exchanged by
the systems.
Client Server
1 ClientHello
ServerHello 2
ChangeCipherSpec 3
Finished 4
5 ChangeCipherSpec
6 Finished