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