1 <?xml version="1.0" encoding="ISO-8859-1" ?>
2 <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 713605:1174747 (outdated) -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <manualpage metafile="ssl_intro.xml.meta">
26 <parentdocument href="./">SSL/TLS</parentdocument>
28 <title>Chiffrement SSL/TLS fort : Introduction</title>
32 <p>Ce qui est agréable avec les standards est d'avoir l'embarras du choix. Et
33 si certains standards ne vous conviennent pas vraiment, il vous suffit
34 d'attendre un an pour voir apparaître celui qui répondra à vos attentes.</p>
36 <p class="cite">-- <cite>A. Tanenbaum</cite>, "Introduction to
37 Computer Networks"</p>
40 <p>Ce chapitre en guise d'introduction est destiné aux lecteurs pour lesquels
41 le Web, HTTP et Apache sont familiers, mais ne sont pas des experts en matière
42 de sécurité. Il n'a pas la prétention d'être un guide détaillé sur le
43 protocole SSL, il ne traitera pas non plus des techniques spécifiques de gestion
44 des certificats dans une organisation, ni des importants problèmes légaux de
45 brevets ou des restrictions d'importation ou d'exportation. Il se veut plutôt
46 une base de travail pour les utilisateurs de <module>mod_ssl</module> en
47 rassemblant différents concepts, définitions et exemples comme point de départ
48 pour une exploration plus détaillée.</p>
50 <p>Le contenu s'inspire en grande partie, avec la permission de l'auteur,
52 href="http://home.comcast.net/~fjhirsch/Papers/wwwj/">Introducing
53 SSL and Certificates using SSLeay</a> de <a
54 href="http://home.comcast.net/~fjhirsch/">Frederick J. Hirsch</a>, de
55 l'Open Group Research Institute, publié dans <a
56 href="http://www.ora.com/catalog/wjsum97/">Web Security: A Matter of
57 Trust</a>, World Wide Web Journal, Volume 2, Issue 3, Summer 1997. Vous
58 pouvez envoyer toute remarque positive à <a
59 href="mailto:hirsch@fjhirsch.com">Frederick Hirsch</a> (l'auteur de l'article
60 original) et toute remarque négative à <a
61 href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> (l'auteur du module
62 <module>mod_ssl</module>).</p>
65 <section id="cryptographictech">
66 <title>Techniques de chiffrement</title>
67 <p>La maîtrise de SSL nécessite la compréhension des algorithmes de
68 chiffrement, des fonctions relatives aux empreintes de messages (comme les
69 fonctions de type hash ou non réversibles), et des signatures numériques. Ces
70 techniques pourraient faire l'objet d'un ouvrage à elles seules (voir par
71 exemple [<a href="#AC96">AC96</a>]) et constituent les bases de la
72 confidentialité, de l'intégrité et de l'authentification.</p>
74 <section id="cryptographicalgo">
75 <title>Algorithmes de chiffrement</title>
76 <p>Supposons qu'Alice veuille envoyer un message à sa banque pour
77 transférer une certaine somme. Alice souhaiterait que le message soit
78 privé, car il contient des informations comme son numéro de compte et le
79 montant du transfert. Une solution consisterait à utiliser un algorithme de
80 chiffrement, technique qui permet de remplacer un message par sa version
81 chiffrée, illisible jusqu'à ce qu'elle soit déchiffrée.
82 Sous sa forme chiffrée,
83 le message ne peut être déchiffré qu'en utilisant une clé secrète. Sans la
84 clé, le message est inutilisable : les bons algorithmes de chiffrement
85 rendent si difficile la restitution du texte original par des intrus que
86 ceux-ci y gaspilleraient leurs efforts.</p>
88 <p>Il existe deux catégories d'algorithmes de chiffrement : conventionnel
89 ou à clé publique.</p>
92 <dt>Chiffrement conventionnel</dt>
93 <dd>aussi connu sous le nom de chiffrement symétrique, il nécessite le
94 partage d'une clé entre l'expéditeur et le destinataire : une portion
95 d'information secrète permettant de chiffrer et déchiffrer un message.
96 Tant que cette clé reste secrète, personne à part l'expéditeur et le
97 destinataire ne peut lire le message. Si Alice et sa banque partagent une
98 clé secrète, ils peuvent donc s'envoyer l'un à l'autre des messages privés.
99 Le fait de partager une clé entre l'expéditeur et le destinataire avant
100 de communiquer, tout en la maintenant secrète vis à vis des autres, peut
101 toutefois poser des problèmes.</dd>
103 <dt>Chiffrement à clé publique</dt>
104 <dd>aussi connu sous le nom de chiffrement asymétrique, il résoud le
105 problème d'échange de clé en définissant un algorithme qui utilise deux
106 clés, chacune d'entre elles pouvant être utilisée pour chiffrer un message.
107 Si une des clés a été utilisée pour chiffrer le message, on doit utiliser
108 l'autre clé pour le déchiffrer. Il est ainsi possible de recevoir des
109 messages sécurisés simplement en rendant publique une des clés (la clé
110 publique), et en gardant l'autre clé secrète (la clé privée).</dd>
113 <p>Tout le monde peut chiffrer un message en utilisant la clé publique,
114 mais seul le propriétaire de la clé privée sera en mesure de le lire. De
115 cette façon, Alice peut envoyer des messages privés au propriétaire d'une
116 paire de clés (sa banque), en les chiffrant à l'aide de la clé publique.
117 Seule la banque sera en mesure de les déchiffrer.</p>
120 <section id="messagedigests">
121 <title>Empreinte d'un message</title>
122 <p>Bien qu'Alice puisse chiffrer son message pour le rendre privé, il
123 subsiste toujours le risque que quelqu'un puisse modifier le message
124 original ou le remplacer par un autre, afin d'effectuer le transfert de
125 fonds à son profit, par exemple. Une solution pour garantir l'intégrité du
126 message consisterait pour Alice à créer un résumé concentré de son message
127 qu'elle enverrait à sa banque avec ce dernier. A la réception du message,
128 la banque crée son propre résumé et le compare avec celui qu'Alice a
129 envoyé. Si les deux résumés sont identiques, le message reçu n'a pas
130 été modifié.</p>
132 <p>Un résumé tel que celui-ci est appelé
133 <dfn>empreinte numérique de message</dfn> (message digest),
134 <em>fonction irréversible</em> (one-way function) ou
135 <em>fonction de hashage</em> (hash function). Une empreinte de message
136 constitue une représentation courte et de longueur fixe, d'un message plus
137 long et de longueur variable. Les algorithmes de création d'empreintes sont
138 conçus pour produire une empreinte unique pour chaque message. Les
139 empreintes de messages sont conçues pour que la restitution du message
140 à partir de l'empreinte soit d'une difficulté insurmontable, et qu'il soit
141 (en théorie) impossible de trouver deux messages différents qui produisent
142 la même empreinte -- ce qui élimine la possibilité de remplacer un message
143 par un autre en conservant la même empreinte.</p>
145 <p>Trouver le moyen d'envoyer l'empreinte de manière sécurisée à la banque
146 constitue un autre défit auquel Alice doit faire face ; si l'empreinte
147 n'est pas envoyée de manière sécurisée, son intégrité peut être compromise,
148 et avec elle, la possibilité pour la banque de vérifier l'intégrité du
149 message original. L'intégrité du message ne peut être vérifiée que si
150 l'empreinte qui lui est associée est envoyée de manière sécurisée.</p>
152 <p>Une solution pour envoyer l'empreinte de manière sécurisée consiste à
153 l'inclure dans une signature numérique.</p>
156 <section id="digitalsignatures"><title>Signatures numériques</title>
157 <p>Quand Alice envoie un message à sa banque, cette dernière doit s'assurer
158 que le message a bien été envoyé par elle, pour éviter qu'un intrus puisse
159 effectuer une transaction sur son compte. Une <em>signature numérique</em>,
160 créée par Alice et incluse dans le message, permet d'atteindre cet
163 <p>Les signatures numériques peuvent être créées en chiffrant une empreinte de
164 message, ainsi que d'autres informations (comme un numéro d'ordre) avec la clé
165 privée de l'expéditeur. Bien que tout le monde puisse <em>déchiffrer</em> la
166 signature à l'aide de la clé publique, seul l'expéditeur connait la clé privée.
167 Ce qui implique que seul l'expéditeur peut avoir signé le message. Inclure
168 l'empreinte dans la signature entraîne que cette dernière n'est valable que
169 pour ce message ; ceci assure aussi l'intégrité du message car personne ne
170 peut modifier l'empreinte et ensuite signer le message.</p>
171 <p>Afin de se prémunir contre l'interception et la réutilisation de la
172 signature par un intrus quelques jours plus tard, la signature contient un
173 numéro d'ordre unique. Ceci protège la banque contre une plainte frauduleuse
174 de la part d'Alice alléguant qu'elle n'a pas envoyé le message --
175 elle seule peut l'avoir signé (non-répudiation).</p>
179 <!-- /cryptographictech -->
181 <section id="certificates">
182 <title>Certificats</title>
183 <p>Bien qu'Alice soit parvenue à envoyer un message privé à sa banque, après
184 l'avoir signé et avoir ainsi assuré l'intégrité du message, elle doit encore vérifier
185 qu'elle communique réellement avec la banque. C'est à dire qu'elle doit
186 s'assurer que la clé publique qu'elle utilise appartient bien à la paire de
187 clés de la banque, et non à celle d'un intrus.
188 De même, la banque doit vérifier que la
189 signature du message a bien été construite avec la clé privée d'Alice.</p>
191 <p>Si chaque partie possède un certificat qui valide l'identité de l'autre,
192 confirme la clé publique, et est signé par un organisme de confiance, alors
193 les deux protagonistes peuvent être sûrs que la personne avec laquelle ils
194 communiquent est bien celle avec laquelle ils désirent le faire. Un tel
195 organisme de confiance s'appelle une <em>Autorité de Certification</em>, et
196 on utilise les certificats à des fins d'authentification.</p>
198 <section id="certificatecontents">
199 <title>Contenu d'un certificat</title>
200 <p>Un certificat associe une clé publique avec l'identité réelle d'un
201 individu, d'un serveur, ou d'une autre entité plus connue sous le nom de
202 sujet. Comme on le voit dans le <a href="#table1">Tableau 1</a>, les
203 information concernant le sujet comprennent des informations
204 d'identification (le nom distinctif ou distinguished name - dn), ainsi que
205 la clé publique. Il comporte aussi l'identification et la signature de
206 l'autorité de certification qui a délivré le certificat, ainsi que la
207 période de validité de ce dernier. Il peut aussi contenir des informations
208 supplémentaires (ou extensions) telles que des informations de gestion
209 destinées à l'autorité de certification, comme un numéro de série.</p>
211 <section id="table1">
212 <title>Tableau 1: Information contenues dans un certificat</title>
214 <columnspec><column width=".35"/><column width=".35"/>
217 <td>Nom distinctif, Clé publique</td></tr>
218 <tr><th>Fournisseur</th>
219 <td>Nom distinctif, Signature</td></tr>
220 <tr><th>Période de validité</th>
221 <td>Pas avant, Pas après</td></tr>
222 <tr><th>Informations de gestion</th>
223 <td>Version, Numéro de série</td></tr>
224 <tr><th>Extensions</th>
225 <td>Contraintes de base, Drapeaux Netscape, etc.</td></tr>
229 <p>Un nom distinctif sert à fournir une identité dans un contexte
230 spécifique -- par exemple, un individu peut posséder un certificat
231 personnel, et aussi un certificat en tant qu'employé. Les noms distinctifs
232 doivent respecter le standard X509 [<a href="#X509">X509</a>], qui définit
233 les champs, les noms de champs, et les abréviations utilisées pour faire
234 référence aux champs (voir <a href="#table2">Tableau 2</a>).</p>
236 <section id="table2">
237 <title>Tableau 2: Informations contenues dans le nom distinctif</title>
239 <columnspec><column width=".25"/><column width=".15"/>
240 <column width=".3"/><column width=".25"/></columnspec>
241 <tr><th>Champ du DN</th>
242 <th>Abrév.</th>
244 <th>Exemple</th></tr>
245 <tr><td>Nom complet (Common Name)</td>
247 <td>Nom certifié</td>
248 <td>CN=Joe Average</td></tr>
249 <tr><td>Organisation or Entreprise</td>
251 <td>Nom est associé à cette<br />organisation</td>
252 <td>O=Snake Oil, Ltd.</td></tr>
253 <tr><td>Unité organisationnelle (Organizational Unit)</td>
255 <td>Nom est associé avec cette <br />unité organisationnelle,
256 par exemple un département</td>
257 <td>OU=Research Institute</td></tr>
258 <tr><td>Ville/Localisation</td>
260 <td>Nom est localisé dans cette ville</td>
261 <td>L=Snake City</td></tr>
262 <tr><td>Etat/Province</td>
264 <td>Nom est localisé dans cet état/province</td>
265 <td>ST=Desert</td></tr>
268 <td>Nom est localisé dans ce pays (code ISO)</td>
273 <p>Une autorité de certification peut définir une contrainte spécifiant
274 quels champs du nom distinctif sont optionnels et lesquels sont
275 obligatoires. Elle peut aussi imposer des contraintes sur le contenu des
276 champs, ce que peuvent aussi faire les utilisateurs de certificats. Par
277 exemple, un navigateur Netscape peut exiger, dans le cas d'un certificat
278 de serveur, que le nom complet (Common Name) corresponde à un nom générique
279 contenant le nom de domaine du serveur, comme
280 <code>*.snakeoil.com</code>.</p>
282 <p>Le format binaire d'un certificat est défini en utilisant la
283 notation ASN.1 [<a href="#X208">X208</a>] [<a href="#PKCS">PKCS</a>].
284 Cette notation definit la manière de spécifier les contenus, et les règles
285 d'encodage définissent la manière dont ces information sont converties au
286 format binaire. L'encodage binaire du certificat est défini par les Règles
287 d'Encodage Distinctives (Distinguished Encoding Rules - DER), qui se basent
288 d'une manière plus générale sur les Règles d'Encodage de Base (Basic
289 Encoding Rules - BER). Pour les transmissions qui ne supportent pas le
290 format binaire, ce dernier peut être converti au format ASCII en utilisant
291 le codage Base64 [<a href="#MIME">MIME</a>]. Lorsqu'il est placé entre des
292 délimiteurs de début et de fin (comme ci-dessous), on dit que le certificat
293 est encodé au format PEM ("Privacy Enhanced Mail").</p>
296 <title>Exemple de certificat encodé au format PEM (snakeoil.crt)</title>
297 <pre>-----BEGIN CERTIFICATE-----
298 MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx
299 FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG
300 A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv
301 cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz
302 bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL
303 MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h
304 a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl
305 cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN
306 AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
307 gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b
308 vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa
309 lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV
310 HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB
311 gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt
312 2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7
313 dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ==
314 -----END CERTIFICATE-----</pre>
318 <section id="certificateauthorities">
319 <title>Autorités de certification</title>
320 <p>En vérifiant les informations contenues dans une demande de certificat
321 avant de l'accorder, l'autorité de certification s'assure de l'identité du
322 propriétaire de la clé privée issue de sa paire de clés. Par exemple, Si
323 Alice demande un certificat personnel, l'autorité de certification doit
324 d'abord s'assurer qu'elle correspond vraiment à la personne à laquelle
325 la demande de certificat fait référence.</p>
327 <section id="certificatechains">
328 <title>Chaînes de certification</title>
329 <p>Une autorité de certification peut aussi émettre un certificat à
331 autre autorité de certification. Pour vérifier un certificat, Alice
332 peut être amenée à vérifier le certificat de l'émetteur pour chaque
333 autorité de certification parente, jusqu'à ce qu'elle en atteigne une
334 en qui elle a confiance. Elle peut aussi ne faire confiance qu'aux
335 certificats faisant l'objet d'une chaîne limitée d'émetteurs, afin
336 de réduire le risque de rencontrer un "mauvais" certificat dans la
340 <section id="rootlevelca">
341 <title>Création d'une autorité de certification racine</title>
342 <p>Comme indiqué plus haut, chaque certificat nécessite la validation
343 de l'identité du sujet par un émetteur de certificats
344 de niveau supérieur, et ceci en
345 remontant jusqu'à l'Autorité de Certification (CA) racine. Ceci pose un
346 problème : qui va se porter garant du certificat de l'autorité racine
347 qui ne possède pas d'émetteur de certificat ? C'est uniquement dans ce
348 cas que le certificat est auto-signé, l'émetteur du certificat et son
349 sujet étant confondus. Les navigateurs sont préconfigurés avec une
350 liste d'autorités de certification de confiance, mais il est important
351 d'être extrèmement prudent avant de faire confiance à un certificat
352 auto-signé. La large publication d'une clé publique par l'autorité
353 racine réduit cependant les risques encourus
354 en faisant confiance à cette clé --
355 si quelqu'un publiait une clé en se faisant passer pour l'autorité, il
356 serait vite démasqué.</p>
358 <p>Quelques compagnies, comme <a href="http://www.thawte.com/"
359 >Thawte</a> et <a href="http://www.verisign.com/">VeriSign</a>,
360 se sont proclamées elles-mêmes Autorités de Certification. Ces
361 compagnies proposent les services suivant :</p>
364 <li>Vérification des demandes de certificats</li>
365 <li>Traitement des demandes de certificats</li>
366 <li>Emission et gestion des certificats</li>
369 <p>Vous pouvez aussi créer votre propre autorité de certification. Bien
370 que risqué dans l'environnement de l'Internet, ceci peut s'avérer utile
371 dans un Intranet, où l'organisme peut vérifier facilement les identités
372 des individus et des serveurs.</p>
375 <section id="certificatemanagement">
376 <title>Gestion des certificats</title>
377 <p>Constituer une autorité de certification représente une
378 responsabilité qui nécessite une solide infrastructure administrative,
379 technique et gestionnaire. Les autorités de certification ne se
380 contentent pas d'émettre des certificats, elles doivent aussi les gérer
381 -- à savoir elles déterminent leur durée de validité, elles les
382 renouvellent, et elles maintiennent des listes de certificats qui ont
383 été émis dans le passé mais ne sont plus valides (Listes de révocations
384 de certificats, ou CRLs).</p>
386 <p>Par exemple, si Alice est titulaire d'un certificat en tant
387 qu'employée d'une compagnie, mais vient de quitter cette compagnie,
388 son certificat doit être révoqué. Comme les certificats ne sont émis
389 qu'après vérification de l'identité du sujet, et peuvent être envoyés
390 à tous ceux avec lesquels le sujet peut communiquer, il est impossible
391 de discerner à partir du seul certificat s'il a été révoqué. Pour
392 vérifier la validité d'un certificat, il est donc nécessaire de
393 contacter l'autorité de certification qui l'a émis afin de pouvoir
394 consulter ses listes de révocations de certificats -- ce qui n'est
395 en général pas une partie automatique du processus.</p>
397 <note><title>Note</title>
398 <p>Si votre autorité de certification ne fait pas partie de la liste
399 des autorités de confiance de votre navigateur, il faut enregistrer le
400 certificat de l'autorité de certification dans ce dernier, ce qui lui
401 permettra de valider les certificats de serveurs signés par cette
402 autorité de certification. Ceci peut être dangereux, car une fois le
403 certificat enregistré, le navigateur acceptera tous les certificats
404 signés par cette autorité de certification.</p>
408 <!-- /certificateauthorities -->
410 <!-- /certificates -->
413 <title>Couche Points d'Accès Sécurisés - Secure Sockets Layer (SSL)</title>
414 <p>Le protocole Couche Points d'Accès Sécurisés est une couche protocolaire
415 qui pourrait s'intercaler entre un protocole d'une couche réseau orientée
416 connexion (comme TCP/IP) et une couche protocolaire d'application (comme HTTP).
417 SSL fournit une communication sécurisée entre client et serveur en permettant
418 l'authentification mutuelle, l'utilisation des signatures numériques pour la
419 vérification de l'intégrité des données, et le chiffrement pour la
420 confidentialité.</p>
422 <p>Ce protocole est conçu pour supporter un grand choix d'algorithmes
423 spécifiques utilisés pour la cryptographie, les empreintes et les signatures.
424 Ceci permet la sélection d'un algorithme pour des serveurs spécifiques en
425 respectant la légalité, les règles d'exportation ou autres contraintes, et
426 permet aussi au protocole de tirer parti des nouveaux algorithmes. Ces choix
427 font l'objet d'une négociation entre client et serveur lors de
428 l'établissement de la session protocolaire.</p>
430 <section id="table4">
431 <title>Tableau 4: Versions du protocole SSL</title>
433 <columnspec><column width=".15"/><column width=".2"/>
434 <column width=".30"/><column width=".25"/></columnspec>
438 <th>Navigateurs supportés</th></tr>
439 <tr><td>SSL v2.0</td>
440 <td>Standard du fournisseur (de Netscape Corp.) [<a href="#SSL2"
442 <td>Premier protocole SSL pour lequel il existe des implémentations</td>
443 <td>- NS Navigator 1.x/2.x<br />
445 - Lynx/2.8+OpenSSL</td></tr>
446 <tr><td>SSL v3.0</td>
447 <td>Projet Internet arrivé à expiration (de Netscape Corp.) [<a href="#SSL3"
449 <td>Comporte des révisions permettant de prévenir certaines attaques de
450 sécurité spécifiques, ajout de chiffrements non RSA, et support des
451 chaînes de certification</td>
452 <td>- NS Navigator 2.x/3.x/4.x<br />
453 - MS IE 3.x/4.x<br />
454 - Lynx/2.8+OpenSSL</td></tr>
455 <tr><td>TLS v1.0</td>
456 <td>Standard proposé pour l'Internet (de l'IETF) [<a href="#TLS1"
458 <td>Révision de SSL 3.0 pour mettre à jour la couche MAC vers HMAC,
459 ajout du bourrage de bloc pour le chiffrement de bloc, standardisation
460 de l'ordonnancement des messages et plus de messages d'alerte.</td>
461 <td>- Lynx/2.8+OpenSSL</td></tr>
465 <p>Il existe plusieurs versions du protocole SSL, comme le montre le
466 <a href="#table4">Tableau 4</a>. Comme indiqué dans ce dernier, un des apports
467 de SSL 3.0 est le support du chargement des chaînes de certification. Cette
468 fonctionnalité permet à un serveur de passer au navigateur un certificat de
469 serveur accompagné du certificat de l'émetteur. Le chargement de la
470 chaîne permet aussi au navigateur de valider le certificat du serveur, même si
471 les certificats de l'autorité de certification ne sont pas installés pour les
472 émetteurs intermédiaires, car ils sont inclus dans la chaîne de certification.
473 SSL 3.0 sert de base au standard du protocole Sécurité de la Couche Transport
474 ou Transport Layer Security
475 [<a href="#TLS1">TLS</a>], actuellement en développement au sein de
476 l'Internet Engineering Task Force (IETF).</p>
478 <section id="session">
479 <title>Etablissement d'une session</title>
480 <p>La session SSL est établie en suivant une séquence d'échanges
481 d'informations entre client et serveur, comme le montre la
482 <a href="#figure1">Figure 1</a>. Cette séquence peut varier, selon que
483 le serveur est configuré pour fournir un certificat de serveur ou
484 réclame un certificat client. Bien que dans certains cas, des étapes
485 d'échanges d'informations supplémentaires soient nécessaires pour la
486 gestion des informations de chiffrement, cet article résume un scénario
487 courant. Se reporter aux spécifications SSL pour avoir la liste de
488 toutes les possibilités.</p>
490 <note><title>Note</title>
491 <p>Une fois la session SSL établie, elle peut être réutilisée. Ceci
492 permet d'éviter la perte de performances due à la répétition des nombreuses
493 étapes nécessaires à l'établissement d'une session. Pour parvenir à ceci,
494 le serveur assigne un identifiant de session unique à chaque session SSL ;
495 cet identifiant est mis en cache dans le serveur et le client peut
496 l'utiliser pour des connexions ultérieures afin de réduire la durée des
497 échanges d'informations (et ceci jusqu'à ce que l'identifiant de session
498 arrive à expiration dans le cache du serveur).</p>
502 <img src="../images/ssl_intro_fig1.gif" alt="" width="423"
503 height="327" /><br />
504 <a id="figure1" name="figure1"><dfn>Figure 1</dfn></a> : Séquence
505 simplifiée d'échanges d'informations SSL</p>
507 <p>Les éléments de la séquence d'échanges d'informations, tels qu'ils
508 sont utilisés par le client et le serveur, sont énumérés ci-après :</p>
511 <li>Négociation de la suite de chiffrement à utiliser durant le transfert des données</li>
512 <li>Elaboration et échange d'une clé de session entre le client et le serveur</li>
513 <li>Authentification éventuelle du serveur par le client</li>
514 <li>Authentification éventuelle du client par le serveur</li>
517 <p>La première étape, la négociation de la suite de chiffrement, permet au
518 client et au serveur de choisir une suite de chiffrement qu'ils supportent
519 tous les deux. La spécification du protocole SSL 3.0 définit 31 suites de
520 chiffrement. Une suite de chiffrement se compose des éléments
524 <li>Méthode d'échange de la clé</li>
525 <li>Chiffrement du transfert des données</li>
526 <li>Empreinte du message servant à créer le code d'authentification du
530 <p>Ces trois éléments sont décrits dans les sections suivantes.</p>
533 <section id="keyexchange">
534 <title>Méthode d'échange de la clé</title>
535 <p>La méthode d'échange de la clé définit la manière
536 dont la clé de chiffrement
537 symétrique secrète et partagée utilisée pour le transfert des données de
538 l'application sera acceptée par le client et le serveur. SSL 2.0 utilise
539 l'échange de clé RSA seulement, tandis que SSL 3.0 supporte tout un choix
540 d'algorithmes d'échange de clé incluant l'échange de clé RSA (quand les
541 certificats sont utilisés), et l'échange de clés Diffie-Hellman (pour
542 échanger des clés sans certificat, ou en l'absence de communication
543 préalable entre le client et le serveur).</p>
545 <p>Les signatures numériques constituent une variante dans le choix des
546 méthodes d'échange de clé -- utiliser les signatures ou pas, et dans
547 l'affirmative, quel genre de signatures utiliser. La signature à l'aide
548 d'une clé privée fournit une protection contre une attaque
549 "man-in-the-middle" au cours de laquelle
550 l'échange d'informations destiné à générer la
551 clé partagée peut être intercepté [<a href="#AC96">AC96</a>, p516].</p>
554 <section id="ciphertransfer">
555 <title>Chiffrement du transfert de données</title>
556 <p>Comme décrit plus haut, SSL utilise le chiffrement symétrique
557 conventionnel pour chiffrer les messages au cours d'une session. Il existe
558 neuf choix possibles pour le chiffrement, y compris l'option du transfert
559 non chiffré :</p>
562 <li>Pas de chiffrement</li>
563 <li>Chiffrement en continu (Stream Ciphers)
565 <li>RC4 avec clés de 40 bits</li>
566 <li>RC4 avec clés de 128 bits</li>
568 <li>Chiffrement par blocs CBC (CBC Block Ciphers)
569 <ul><li>RC2 avec clé de 40 bits</li>
570 <li>DES avec clé de 40 bits</li>
571 <li>DES avec clé de 56 bits</li>
572 <li>Triple-DES avec clé de 168 bits</li>
573 <li>Idea (clé de 128 bits)</li>
574 <li>Fortezza (clé de 96 bits)</li>
578 <p>"CBC" signifie Cipher Block Chaining (Chaînage de blocs chiffrés),
579 c'est à dire qu'une portion du bloc de texte chiffré précédent est utilisée
580 pour le chiffrement du bloc courant. "DES" signifie Data Encryption
581 Standard (Standard de Chiffrement des Données)
582 [<a href="#AC96">AC96</a>, ch12], et possède de nombreuses variantes
583 (telles que DES40 et 3DES_EDE). Parmi les algorithmes disponibles, "Idea"
584 est actuellement un des meilleurs et des plus puissants sur le plan
585 cryptographique, et "RC2" est un algorithme propriétaire de RSA DSI
586 [<a href="#AC96">AC96</a>, ch13].</p>
589 <section id="digestfuntion">
590 <title>Fonction de création d'empreinte</title>
591 <p>Le choix d'une fonction de création d'empreinte détermine la manière
592 dont une empreinte est créée à partir d'une unité de données. SSL supporte
593 les fonctions suivantes :</p>
596 <li>Pas d'empreinte (choix Null)</li>
597 <li>MD5, une empreinte de 128 bits</li>
598 <li>Algorithme d'Empreinte Sécurisée (Secure Hash Algorithm - SHA-1), une
599 empreinte de 160 bits</li>
602 <p>On utilise l'empreinte de message pour créer un Code d'Authentification
603 de Message (Message Authentication Code - MAC) qui est chiffré avec le
604 message afin de vérifier son intégrité et de se protéger contre les
605 attaques de type "rejeu".</p>
608 <section id="handshake">
609 <title>Protocole de la séquence d'échanges d'informations</title>
610 <p>La séquence d'échanges d'informations utilise trois protocoles :</p>
613 <li>Le <dfn>Protocole d'échanges d'informations SSL</dfn> pour établir
614 la session SSl entre le client et le serveur.</li>
615 <li>Le <dfn>Protocole de spécification du chiffrement SSL</dfn> pour
616 l'agrément effectif de la suite de chiffrement à utiliser
617 pour la session.</li>
618 <li>Le <dfn>Protocole d'alertes SSL</dfn> pour la transmission de
619 messages d'erreur SSL entre le client et le serveur.</li>
622 <p>Ces protocoles, ainsi que les données du protocole de l'application,
623 sont encapsulés dans le <dfn>Protocole d'enregistrement SSL
624 (SSL Record Protocol)</dfn>, comme
625 le montre la <a href="#figure2">Figure 2</a>. Un protocole encapsulé est
626 tranféré en tant que données par le protocole de la couche de niveau
627 inférieur, qui ne se préoccupe pas du contenu des données. Le protocole
628 encapsulé n'a aucune connaissance du protocole sous-jacent.</p>
631 <img src="../images/ssl_intro_fig2.gif" alt="" width="428"
632 height="217" /><br />
633 <a id="figure2" name="figure2"><dfn>Figure 2</dfn></a>:
634 Pile du protocole SSL</p>
636 <p>L'encapsulation des protocoles de contrôle SSL dans le protocole
637 d'enregistrement signifie que si une session active est renégociée, les
638 protocoles de contrôle seront transmis de manière sécurisée. S'il n'y
639 avait pas de session préalable, la suite de chiffrement Null est utilisée,
640 ce qui signifie que les messages ne seront pas chiffrés et ne possèderont
641 pas d'empreinte d'intégrité, jusqu'à ce que la session ait été établie.</p>
644 <section id="datatransfer">
645 <title>Transmission des données</title>
646 <p>Le protocole d'enregistrement SSL, comme le montre la
647 <a href="#figure3">Figure 3</a>, est utilisé pour transmettre les données
648 de l'application et les données de contrôle SSL entre le client et le
649 serveur, les données étant nécessairement fragmentées en éléments plus
650 petits, ou plusieurs messages de données avec protocole de niveau
651 supérieur pouvant être combinés en un seul élément. Ce protocole peut
652 joindre des signatures d'empreintes, compresser et chiffrer ces éléments
653 avant de les transmettre en utilisant le protocole fiable de transport
654 sous-jacent (Note : actuellement, aucune implémentation majeure de SSL
655 n'inclut le support de la compression).</p>
658 <img src="../images/ssl_intro_fig3.gif" alt="" width="423"
659 height="323" /><br />
660 <a id="figure3" name="figure3"><dfn>Figure 3</dfn></a>:
661 Protocole d'enregistrement SSL</p>
664 <section id="securehttp">
665 <title>Sécurisation des communications HTTP</title>
666 <p>Une des utilisations courantes de SSL est la sécurisation des
667 communication HTTP sur le Web entre un navigateur et un serveur web. Ceci
668 n'exclut pas l'utilisation de HTTP non sécurisé - la version sécurisée
669 (appelée HTTPS) est identique à du vrai HTTP sur SSL,
670 mais utilise le préfixe
671 d'URL <code>https</code> au lieu de <code>http</code>, et un port
672 de serveur différent (par défaut le port 443).
673 Ceci constitue pour une large part
674 ce qu'apporte <module>mod_ssl</module> au serveur web Apache.</p>
679 <section id="references">
680 <title>Références</title>
682 <dt><a id="AC96" name="AC96">[AC96]</a></dt>
683 <dd>Bruce Schneier, <q>Applied Cryptography</q>, 2nd Edition, Wiley,
684 1996. Voir <a href="http://www.counterpane.com/"
685 >http://www.counterpane.com/</a> pour diverses autres productions de Bruce
688 <dt><a id="X208" name="X208">[X208]</a></dt>
689 <dd>ITU-T Recommendation X.208, <q>Specification of Abstract Syntax Notation
690 One (ASN.1)</q>, 1988. Voir par exemple <a
691 href="http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.208-198811-I"
692 >http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.208-198811-I</a>.
695 <dt><a id="X509" name="X509">[X509]</a></dt>
696 <dd>ITU-T Recommendation X.509, <q>The Directory - Authentication
697 Framework</q>. Voir par exemple <a
698 href="http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.509"
699 >http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.509</a>.
702 <dt><a id="PKCS" name="PKCS">[PKCS]</a></dt>
703 <dd><q>Public Key Cryptography Standards (PKCS)</q>,
704 RSA Laboratories Technical Notes, Voir <a
705 href="http://www.rsasecurity.com/rsalabs/pkcs/"
706 >http://www.rsasecurity.com/rsalabs/pkcs/</a>.</dd>
708 <dt><a id="MIME" name="MIME">[MIME]</a></dt>
709 <dd>N. Freed, N. Borenstein, <q>Multipurpose Internet Mail Extensions
710 (MIME) Part One: Format of Internet Message Bodies</q>, RFC2045.
711 Voir par exemple <a href="http://ietf.org/rfc/rfc2045.txt"
712 >http://ietf.org/rfc/rfc2045.txt</a>.</dd>
714 <dt><a id="SSL2" name="SSL2">[SSL2]</a></dt>
715 <dd>Kipp E.B. Hickman, <q>The SSL Protocol</q>, 1995. See <a
716 href="http://www.netscape.com/eng/security/SSL_2.html"
717 >http://www.netscape.com/eng/security/SSL_2.html</a>.</dd>
719 <dt><a id="SSL3" name="SSL3">[SSL3]</a></dt>
720 <dd>Alan O. Freier, Philip Karlton, Paul C. Kocher, <q>The SSL Protocol
721 Version 3.0</q>, 1996. Voir <a
722 href="http://www.netscape.com/eng/ssl3/draft302.txt"
723 >http://www.netscape.com/eng/ssl3/draft302.txt</a>.</dd>
725 <dt><a id="TLS1" name="TLS1">[TLS1]</a></dt>
726 <dd>Tim Dierks, Christopher Allen, <q>The TLS Protocol Version 1.0</q>,
727 1999. Voir <a href="http://ietf.org/rfc/rfc2246.txt"
728 >http://ietf.org/rfc/rfc2246.txt</a>.</dd>