home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F278559_ssl_intro.xml < prev    next >
Extensible Markup Language  |  2004-04-17  |  32KB  |  669 lines

  1. <?xml version='1.0' encoding='UTF-8' ?>
  2. <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
  3. <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
  4. <!-- $Revision: 1.3.2.7 $ -->
  5.  
  6. <!--
  7.  Copyright 2002-2004 The Apache Software Foundation
  8.  
  9.  Licensed under the Apache License, Version 2.0 (the "License");
  10.  you may not use this file except in compliance with the License.
  11.  You may obtain a copy of the License at
  12.  
  13.      http://www.apache.org/licenses/LICENSE-2.0
  14.  
  15.  Unless required by applicable law or agreed to in writing, software
  16.  distributed under the License is distributed on an "AS IS" BASIS,
  17.  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18.  See the License for the specific language governing permissions and
  19.  limitations under the License.
  20. -->
  21.  
  22. <manualpage metafile="ssl_intro.xml.meta">
  23. <parentdocument href="./">SSL/TLS</parentdocument>
  24.  
  25.   <title>SSL/TLS Strong Encryption: An Introduction</title>
  26.  
  27. <summary>
  28. <blockquote>
  29. <p>The nice thing about standards is that there are so many to choose
  30. from. And if you really don't like all the standards you just have to
  31. wait another year until the one arises you are looking for.</p>
  32.  
  33. <p class="cite">-- <cite>A. Tanenbaum</cite>, "Introduction to
  34. Computer Networks"</p>
  35. </blockquote>
  36.  
  37. <p>As an introduction this chapter is aimed at readers who are familiar
  38. with the Web, HTTP, and Apache, but are not security experts. It is not
  39. intended to be a definitive guide to the SSL protocol, nor does it discuss
  40. specific techniques for managing certificates in an organization, or the
  41. important legal issues of patents and import and export restrictions.
  42. Rather, it is intended to provide a common background to mod_ssl users by
  43. pulling together various concepts, definitions, and examples as a starting
  44. point for further exploration.</p>
  45.  
  46. <p>The presented content is mainly derived, with permission by the author,
  47. from the article <a
  48. href="http://home.earthlink.net/~fjhirsch/Papers/wwwj/article.html">Introducing
  49. SSL and Certificates using SSLeay</a> from <a
  50. href="http://home.earthlink.net/~fjhirsch/">Frederick J. Hirsch</a>, of The
  51. Open Group Research Institute, which was published in <a
  52. href="http://www.ora.com/catalog/wjsum97/">Web Security: A Matter of
  53. Trust</a>, World Wide Web Journal, Volume 2, Issue 3, Summer 1997.
  54. Please send any positive feedback to <a
  55. href="mailto:hirsch@fjhirsch.com">Frederick Hirsch</a> (the original
  56. article author) and all negative feedback to <a
  57. href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> (the
  58. <module>mod_ssl</module> author).</p>
  59. </summary>
  60.  
  61. <section id="cryptographictech">
  62. <title>Cryptographic Techniques</title>
  63. <p>Understanding SSL requires an understanding of cryptographic
  64. algorithms, message digest functions (aka. one-way or hash functions), and
  65. digital signatures. These techniques are the subject of entire books (see
  66. for instance [<a href="#AC96">AC96</a>]) and provide the basis for privacy,
  67. integrity, and authentication.</p>
  68.  
  69. <section id="cryptographicalgo">
  70. <title>Cryptographic Algorithms</title>
  71.     <p>Suppose Alice wants to send a message to her bank to transfer some
  72.     money. Alice would like the message to be private, since it will
  73.     include information such as her account number and transfer amount. One
  74.     solution is to use a cryptographic algorithm, a technique that would
  75.     transform her message into an encrypted form, unreadable except by
  76.     those it is intended for. Once in this form, the message may only be
  77.     interpreted through the use of a secret key. Without the key the
  78.     message is useless: good cryptographic algorithms make it so difficult
  79.     for intruders to decode the original text that it isn't worth their
  80.     effort.</p>
  81.  
  82.     <p>There are two categories of cryptographic algorithms: conventional
  83.     and public key.</p>
  84.  
  85.     <dl>
  86.     <dt>Conventional cryptography</dt>
  87.     <dd>also known as symmetric cryptography, requires the sender and
  88.     receiver to share a key: a secret piece of information that may be
  89.     used to encrypt or decrypt a message. If this key is secret, then
  90.     nobody other than the sender or receiver may read the message. If
  91.     Alice and the bank know a secret key, then they may send each other
  92.     private messages. The task of privately choosing a key before
  93.     communicating, however, can be problematic.</dd>
  94.  
  95.     <dt>Public key cryptography</dt>
  96.     <dd>also known as asymmetric cryptography, solves the key exchange
  97.     problem by defining an algorithm which uses two keys, each of which
  98.     may be used to encrypt a message. If one key is used to encrypt a
  99.     message then the other must be used to decrypt it. This makes it
  100.     possible to receive secure messages by simply publishing one key
  101.     (the public key) and keeping the other secret (the private key).</dd>
  102.     </dl>
  103.  
  104.     <p>Anyone may encrypt a message using the public key, but only the
  105.     owner of the private key will be able to read it. In this way, Alice
  106.     may send private messages to the owner of a key-pair (the bank), by
  107.     encrypting it using their public key. Only the bank will be able to
  108.     decrypt it.</p>
  109. </section>
  110.  
  111. <section id="messagedigests">
  112. <title>Message Digests</title>
  113.     <p>Although Alice may encrypt her message to make it private, there
  114.     is still a concern that someone might modify her original message or
  115.     substitute it with a different one, in order to transfer the money
  116.     to themselves, for instance. One way of guaranteeing the integrity
  117.     of Alice's message is to create a concise summary of her message and
  118.     send this to the bank as well. Upon receipt of the message, the bank
  119.     creates its own summary and compares it with the one Alice sent. If
  120.     they agree then the message was received intact.</p>
  121.  
  122.     <p>A summary such as this is called a <dfn>message digest</dfn>, <em>one-way
  123. function</em> or <em>hash function</em>. Message digests are used to create
  124. short, fixed-length representations of longer, variable-length messages.
  125. Digest algorithms are designed to produce unique digests for different
  126. messages. Message digests are designed to make it too difficult to determine
  127. the message from the digest, and also impossible to find two different
  128. messages which create the same digest -- thus eliminating the possibility of
  129. substituting one message for another while maintaining the same digest.</p>
  130. <p>Another challenge that Alice faces is finding a way to send the digest to the
  131. bank securely; when this is achieved, the integrity of the associated message
  132. is assured. One way to do this is to include the digest in a digital
  133. signature.</p>
  134. </section>
  135.  
  136. <section id="digitalsignatures"><title>Digital Signatures</title>
  137. <p>When Alice sends a message to the bank, the bank needs to ensure that the
  138. message is really from her, so an intruder does not request a transaction
  139. involving her account. A <em>digital signature</em>, created by Alice and
  140. included with the message, serves this purpose.</p>
  141.  
  142. <p>Digital signatures are created by encrypting a digest of the message,
  143. and other information (such as a sequence number) with the sender's
  144. private key. Though anyone may <em>decrypt</em> the signature using the public
  145. key, only the signer knows the private key. This means that only they may
  146. have signed it. Including the digest in the signature means the signature is
  147. only good for that message; it also ensures the integrity of the message since
  148. no one can change the digest and still sign it.</p>
  149. <p>To guard against interception and reuse of the signature by an intruder at a
  150. later date, the signature contains a unique sequence number. This protects
  151. the bank from a fraudulent claim from Alice that she did not send the message
  152. -- only she could have signed it (non-repudiation).</p>
  153. </section>
  154. </section>
  155. <!-- /cryptographictech -->
  156.  
  157. <section id="certificates">
  158. <title>Certificates</title>
  159. <p>Although Alice could have sent a private message to the bank, signed
  160. it, and ensured the integrity of the message, she still needs to be sure
  161. that she is really communicating with the bank. This means that she needs
  162. to be sure that the public key she is using corresponds to the bank's
  163. private key. Similarly, the bank also needs to verify that the message
  164. signature really corresponds to Alice's signature.</p>
  165.  
  166. <p>If each party has a certificate which validates the other's identity,
  167. confirms the public key, and is signed by a trusted agency, then they both
  168. will be assured that they are communicating with whom they think they are.
  169. Such a trusted agency is called a <em>Certificate Authority</em>, and
  170. certificates are used for authentication.</p>
  171.  
  172. <section id="certificatecontents">
  173. <title>Certificate Contents</title>
  174.     <p>A certificate associates a public key with the real identity of
  175.     an individual, server, or other entity, known as the subject. As
  176.     shown in <a href="#table1">Table 1</a>, information about the subject
  177.     includes identifying information (the distinguished name), and the
  178.     public key. It also includes the identification and signature of the
  179.     Certificate Authority that issued the certificate, and the period of
  180.     time during which the certificate is valid. It may have additional
  181.     information (or extensions) as well as administrative information
  182.     for the Certificate Authority's use, such as a serial number.</p>
  183.  
  184.     <section id="table1">
  185.     <title>Table 1: Certificate Information</title>
  186.     <table>
  187.     <columnspec><column width=".35"/><column width=".35"/>
  188.     </columnspec>
  189.     <tr><th>Subject</th>
  190.         <td>Distinguished Name, Public Key</td></tr>
  191.     <tr><th>Issuer</th>
  192.         <td>Distinguished Name, Signature</td></tr>
  193.     <tr><th>Period of Validity</th>
  194.         <td>Not Before Date, Not After Date</td></tr>
  195.     <tr><th>Administrative Information</th>
  196.         <td>Version, Serial Number</td></tr>
  197.     <tr><th>Extended Information</th>
  198.         <td>Basic Constraints, Netscape Flags, etc.</td></tr>
  199.     </table>
  200.     </section>
  201.  
  202.     <p>A distinguished name is used to provide an identity in a specific
  203.     context -- for instance, an individual might have a personal
  204.     certificate as well as one for their identity as an employee.
  205.     Distinguished names are defined by the X.509 standard [<a
  206.     href="#X509">X509</a>], which defines the fields, field names, and
  207.     abbreviations used to refer to the fields (see <a href="#table2">Table
  208.     2</a>).</p>
  209.  
  210.     <section id="table2">
  211.     <title>Table 2: Distinguished Name Information</title>
  212.     <table border="1">
  213.     <columnspec><column width=".25"/><column width=".15"/>
  214.       <column width=".3"/><column width=".25"/></columnspec>
  215.     <tr><th>DN Field</th>
  216.         <th>Abbrev.</th>
  217.         <th>Description</th>
  218.         <th>Example</th></tr>
  219.     <tr><td>Common Name</td>
  220.         <td>CN</td>
  221.         <td>Name being certified</td>
  222.         <td>CN=Joe Average</td></tr>
  223.     <tr><td>Organization or Company</td>
  224.         <td>O</td>
  225.         <td>Name is associated with this<br />organization</td>
  226.         <td>O=Snake Oil, Ltd.</td></tr>
  227.     <tr><td>Organizational Unit</td>
  228.         <td>OU</td>
  229.         <td>Name is associated with this <br />organization unit, such
  230.         as a department</td>
  231.         <td>OU=Research Institute</td></tr>
  232.     <tr><td>City/Locality</td>
  233.         <td>L</td>
  234.         <td>Name is located in this City</td>
  235.         <td>L=Snake City</td></tr>
  236.     <tr><td>State/Province</td>
  237.         <td>ST</td>
  238.         <td>Name is located in this State/Province</td>
  239.         <td>ST=Desert</td></tr>
  240.     <tr><td>Country</td>
  241.         <td>C</td>
  242.         <td>Name is located in this Country (ISO code)</td>
  243.         <td>C=XZ</td></tr>
  244.     </table>
  245.     </section>
  246.  
  247.     <p>A Certificate Authority may define a policy specifying which
  248.     distinguished field names are optional, and which are required. It
  249.     may also place requirements upon the field contents, as may users of
  250.     certificates. As an example, a Netscape browser requires that the
  251.     Common Name for a certificate representing a server has a name which
  252.     matches a wildcard pattern for the domain name of that server, such
  253.     as <code>*.snakeoil.com</code>.</p>
  254.  
  255.     <p>The binary format of a certificate is defined using the ASN.1
  256.     notation [<a href="#X208">X208</a>] [<a href="#PKCS">PKCS</a>]. This
  257.     notation defines how to specify the contents, and encoding rules
  258.     define how this information is translated into binary form. The binary
  259.     encoding of the certificate is defined using Distinguished Encoding
  260.     Rules (DER), which are based on the more general Basic Encoding Rules
  261.     (BER). For those transmissions which cannot handle binary, the binary
  262.     form may be translated into an ASCII form by using Base64 encoding
  263.     [<a href="#MIME">MIME</a>]. This encoded version is called PEM encoded
  264.     (the name comes from "Privacy Enhanced Mail"), when placed between
  265.     begin and end delimiter lines as illustrated in the following
  266.     example.</p>
  267.  
  268.     <example>
  269.     <title>Example of a PEM-encoded certificate (snakeoil.crt)</title>
  270.     <pre>-----BEGIN CERTIFICATE-----
  271. MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx
  272. FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG
  273. A1UEChMOU25ha2UgT2lsLCBMdGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhv
  274. cml0eTEVMBMGA1UEAxMMU25ha2UgT2lsIENBMR4wHAYJKoZIhvcNAQkBFg9jYUBz
  275. bmFrZW9pbC5kb20wHhcNOTgxMDIxMDg1ODM2WhcNOTkxMDIxMDg1ODM2WjCBpzEL
  276. MAkGA1UEBhMCWFkxFTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25h
  277. a2UgVG93bjEXMBUGA1UEChMOU25ha2UgT2lsLCBMdGQxFzAVBgNVBAsTDldlYnNl
  278. cnZlciBUZWFtMRkwFwYDVQQDExB3d3cuc25ha2VvaWwuZG9tMR8wHQYJKoZIhvcN
  279. AQkBFhB3d3dAc25ha2VvaWwuZG9tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
  280. gQDH9Ge/s2zcH+da+rPTx/DPRp3xGjHZ4GG6pCmvADIEtBtKBFAcZ64n+Dy7Np8b
  281. vKR+yy5DGQiijsH1D/j8HlGE+q4TZ8OFk7BNBFazHxFbYI4OKMiCxdKzdif1yfaa
  282. lWoANFlAzlSdbxeGVHoT0K+gT5w3UxwZKv2DLbCTzLZyPwIDAQABoyYwJDAPBgNV
  283. HRMECDAGAQH/AgEAMBEGCWCGSAGG+EIBAQQEAwIAQDANBgkqhkiG9w0BAQQFAAOB
  284. gQAZUIHAL4D09oE6Lv2k56Gp38OBDuILvwLg1v1KL8mQR+KFjghCrtpqaztZqcDt
  285. 2q2QoyulCgSzHbEGmi0EsdkPfg6mp0penssIFePYNI+/8u9HT4LuKMJX15hxBam7
  286. dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ==
  287. -----END CERTIFICATE-----</pre>
  288.     </example>
  289. </section>
  290.  
  291. <section id="certificateauthorities">
  292. <title>Certificate Authorities</title>
  293.     <p>By first verifying the information in a certificate request
  294.     before granting the certificate, the Certificate Authority assures
  295.     the identity of the private key owner of a key-pair. For instance,
  296.     if Alice requests a personal certificate, the Certificate Authority
  297.     must first make sure that Alice really is the person the certificate
  298.     request claims.</p>
  299.  
  300.     <section id="certificatechains">
  301.     <title>Certificate Chains</title>
  302.         <p>A Certificate Authority may also issue a certificate for
  303.         another Certificate Authority. When examining a certificate,
  304.         Alice may need to examine the certificate of the issuer, for each
  305.         parent Certificate Authority, until reaching one which she has
  306.         confidence in. She may decide to trust only certificates with a
  307.         limited chain of issuers, to reduce her risk of a "bad" certificate
  308.         in the chain.</p>
  309.     </section>
  310.  
  311.     <section id="rootlevelca">
  312.     <title>Creating a Root-Level CA</title>
  313.         <p>As noted earlier, each certificate requires an issuer to assert
  314.         the validity of the identity of the certificate subject, up to
  315.         the top-level Certificate Authority (CA). This presents a problem:
  316.         Since this is who vouches for the certificate of the top-level
  317.         authority, which has no issuer? In this unique case, the
  318.         certificate is "self-signed", so the issuer of the certificate is
  319.         the same as the subject. As a result, one must exercise extra care
  320.         in trusting a self-signed certificate. The wide publication of a
  321.         public key by the root authority reduces the risk in trusting this
  322.         key -- it would be obvious if someone else publicized a key
  323.         claiming to be the authority. Browsers are preconfigured to trust
  324.         well-known certificate authorities.</p>
  325.  
  326.         <p>A number of companies, such as <a href="http://www.thawte.com/"
  327.         >Thawte</a> and <a href="http://www.verisign.com/">VeriSign</a>
  328.         have established themselves as Certificate Authorities. These
  329.         companies provide the following services:</p>
  330.  
  331.         <ul>
  332.         <li>Verifying certificate requests</li>
  333.         <li>Processing certificate requests</li>
  334.         <li>Issuing and managing certificates</li>
  335.         </ul>
  336.  
  337.         <p>It is also possible to create your own Certificate Authority.
  338.         Although risky in the Internet environment, it may be useful
  339.         within an Intranet where the organization can easily verify the
  340.         identities of individuals and servers.</p>
  341.     </section>
  342.  
  343.     <section id="certificatemanagement">
  344.     <title>Certificate Management</title>
  345.         <p>Establishing a Certificate Authority is a responsibility which
  346.         requires a solid administrative, technical, and management
  347.         framework. Certificate Authorities not only issue certificates,
  348.         they also manage them -- that is, they determine how long
  349.         certificates are valid, they renew them, and they keep lists of
  350.         certificates that have already been issued but are no longer valid
  351.         (Certificate Revocation Lists, or CRLs). Say Alice is entitled to
  352.         a certificate as an employee of a company. Say too, that the
  353.         certificate needs to be revoked when Alice leaves the company. Since
  354.         certificates are objects that get passed around, it is impossible
  355.         to tell from the certificate alone that it has been revoked. When
  356.         examining certificates for validity, therefore, it is necessary to
  357.         contact the issuing Certificate Authority to check CRLs -- this
  358.         is not usually an automated part of the process.</p>
  359.  
  360.         <note><title>Note</title>
  361.         <p>If you use a Certificate Authority that is not configured into
  362.         browsers by default, it is necessary to load the Certificate
  363.         Authority certificate into the browser, enabling the browser to
  364.         validate server certificates signed by that Certificate Authority.
  365.         Doing so may be dangerous, since once loaded, the browser will
  366.         accept all certificates signed by that Certificate Authority.</p>
  367.         </note>
  368.     </section>
  369. </section>
  370. <!-- /certificateauthorities -->
  371. </section>
  372. <!-- /certificates -->
  373.  
  374. <section id="ssl">
  375. <title>Secure Sockets Layer (SSL)</title>
  376. <p>The Secure Sockets Layer protocol is a protocol layer which may be
  377. placed between a reliable connection-oriented network layer protocol
  378. (e.g. TCP/IP) and the application protocol layer (e.g. HTTP). SSL provides
  379. for secure communication between client and server by allowing mutual
  380. authentication, the use of digital signatures for integrity, and encryption
  381. for privacy.</p>
  382.  
  383. <p>The protocol is designed to support a range of choices for specific
  384. algorithms used for cryptography, digests, and signatures. This allows
  385. algorithm selection for specific servers to be made based on legal, export
  386. or other concerns, and also enables the protocol to take advantage of new
  387. algorithms. Choices are negotiated between client and server at the start
  388. of establishing a protocol session.</p>
  389.  
  390. <section id="table4">
  391. <title>Table 4: Versions of the SSL protocol</title>
  392.     <table border="1">
  393.     <columnspec><column width=".15"/><column width=".2"/>
  394.      <column width=".30"/><column width=".25"/></columnspec>
  395.     <tr><th>Version</th>
  396.         <th>Source</th>
  397.         <th>Description</th>
  398.         <th>Browser Support</th></tr>
  399.     <tr><td>SSL v2.0</td>
  400.         <td>Vendor Standard (from Netscape Corp.) [<a href="#SSL2"
  401.         >SSL2</a>]</td>
  402.         <td>First SSL protocol for which implementations exists</td>
  403.         <td>- NS Navigator 1.x/2.x<br />
  404.         - MS IE 3.x<br />
  405.         - Lynx/2.8+OpenSSL</td></tr>
  406.     <tr><td>SSL v3.0</td>
  407.         <td>Expired Internet Draft (from Netscape Corp.) [<a href="#SSL3"
  408.         >SSL3</a>]</td>
  409.         <td>Revisions to prevent specific security attacks, add non-RSA
  410.         ciphers, and support for certificate chains</td>
  411.         <td>- NS Navigator 2.x/3.x/4.x<br />
  412.         - MS IE 3.x/4.x<br />
  413.         - Lynx/2.8+OpenSSL</td></tr>
  414.     <tr><td>TLS v1.0</td>
  415.         <td>Proposed Internet Standard (from IETF) [<a href="#TLS1"
  416.         >TLS1</a>]</td>
  417.         <td>Revision of SSL 3.0 to update the MAC layer to HMAC, add block
  418.         padding for block ciphers, message order standardization and more
  419.         alert messages.</td>
  420.         <td>- Lynx/2.8+OpenSSL</td></tr>
  421.     </table>
  422. </section>
  423.  
  424. <p>There are a number of versions of the SSL protocol, as shown in 
  425. <a href="#table4">Table 4</a>. As noted there, one of the benefits in
  426. SSL 3.0 is that it adds support of certificate chain loading. This feature
  427. allows a server to pass a server certificate along with issuer certificates
  428. to the browser. Chain loading also permits the browser to validate the
  429. server certificate, even if Certificate Authority certificates are not
  430. installed for the intermediate issuers, since they are included in the
  431. certificate chain. SSL 3.0 is the basis for the Transport Layer Security 
  432. [<a href="#TLS1">TLS</a>] protocol standard, currently in development by
  433. the Internet Engineering Task Force (IETF).</p>
  434.  
  435. <section id="session">
  436. <title>Session Establishment</title>
  437.     <p>The SSL session is established by following a handshake sequence
  438.     between client and server, as shown in <a href="#figure1"
  439.     >Figure 1</a>. This sequence may vary, depending on whether the server
  440.     is configured to provide a server certificate or request a client
  441.     certificate. Though cases exist where additional handshake steps
  442.     are required for management of cipher information, this article
  443.     summarizes one common scenario: see the SSL specification for the full
  444.     range of possibilities.</p>
  445.  
  446.     <note><title>Note</title>
  447.     <p>Once an SSL session has been established it may be reused, thus
  448.     avoiding the performance penalty of repeating the many steps needed
  449.     to start a session. For this the server assigns each SSL session a
  450.     unique session identifier which is cached in the server and which the
  451.     client can use on forthcoming connections to reduce the handshake
  452.     (until the session identifer expires in the cache of the server).</p>
  453.     </note>
  454.  
  455.     <p class="figure">
  456.     <img src="ssl_intro_fig1.gif" alt="" width="423" height="327" /><br />
  457.     <a id="figure1" name="figure1"><dfn>Figure 1</dfn></a>: Simplified SSL
  458.     Handshake Sequence</p>
  459.  
  460.     <p>The elements of the handshake sequence, as used by the client and
  461.     server, are listed below:</p>
  462.  
  463.     <ol>
  464.     <li>Negotiate the Cipher Suite to be used during data transfer</li>
  465.     <li>Establish and share a session key between client and server</li>
  466.     <li>Optionally authenticate the server to the client</li>
  467.     <li>Optionally authenticate the client to the server</li>
  468.     </ol>
  469.  
  470.     <p>The first step, Cipher Suite Negotiation, allows the client and
  471.     server to choose a Cipher Suite supportable by both of them. The SSL3.0
  472.     protocol specification defines 31 Cipher Suites. A Cipher Suite is
  473.     defined by the following components:</p>
  474.  
  475.     <ul>
  476.     <li>Key Exchange Method</li>
  477.     <li>Cipher for Data Transfer</li>
  478.     <li>Message Digest for creating the Message Authentication Code (MAC)</li>
  479.     </ul>
  480.  
  481.     <p>These three elements are described in the sections that follow.</p>
  482. </section>
  483.  
  484. <section id="keyexchange">
  485. <title>Key Exchange Method</title>
  486.     <p>The key exchange method defines how the shared secret symmetric
  487.     cryptography key used for application data transfer will be agreed
  488.     upon by client and server. SSL 2.0 uses RSA key exchange only, while
  489.     SSL 3.0 supports a choice of key exchange algorithms including the
  490.     RSA key exchange when certificates are used, and Diffie-Hellman key
  491.     exchange for exchanging keys without certificates and without prior
  492.     communication between client and server.</p>
  493.  
  494.     <p>One variable in the choice of key exchange methods is digital
  495.     signatures -- whether or not to use them, and if so, what kind of
  496.     signatures to use. Signing with a private key provides assurance
  497.     against a man-in-the-middle-attack during the information exchange
  498.     used in generating the shared key [<a href="#AC96">AC96</a>, p516].</p>
  499. </section>
  500.  
  501. <section id="ciphertransfer">
  502. <title>Cipher for Data Transfer</title>
  503.     <p>SSL uses the conventional cryptography algorithm (symmetric
  504.     cryptography) described earlier for encrypting messages in a session.
  505.     There are nine choices, including the choice to perform no
  506.     encryption:</p>
  507.  
  508.     <ul>
  509.     <li>No encryption</li>
  510.     <li>Stream Ciphers
  511.         <ul>
  512.         <li>RC4 with 40-bit keys</li>
  513.         <li>RC4 with 128-bit keys</li>
  514.         </ul></li>
  515.     <li>CBC Block Ciphers
  516.         <ul><li>RC2 with 40 bit key</li>
  517.         <li>DES with 40 bit key</li>
  518.         <li>DES with 56 bit key</li>
  519.         <li>Triple-DES with 168 bit key</li>
  520.         <li>Idea (128 bit key)</li>
  521.         <li>Fortezza (96 bit key)</li>
  522.         </ul></li>
  523.     </ul>
  524.  
  525.     <p>Here "CBC" refers to Cipher Block Chaining, which means that a
  526.     portion of the previously encrypted cipher text is used in the
  527.     encryption of the current block. "DES" refers to the Data Encryption
  528.     Standard [<a href="#AC96">AC96</a>, ch12], which has a number of
  529.     variants (including DES40 and 3DES_EDE). "Idea" is one of the best
  530.     and cryptographically strongest available algorithms, and "RC2" is
  531.     a proprietary algorithm from RSA DSI [<a href="#AC96">AC96</a>,
  532.     ch13].</p>
  533. </section>
  534.  
  535. <section id="digestfuntion">
  536. <title>Digest Function</title>
  537.     <p>The choice of digest function determines how a digest is created
  538.     from a record unit. SSL supports the following:</p>
  539.  
  540.     <ul>
  541.     <li>No digest (Null choice)</li>
  542.     <li>MD5, a 128-bit hash</li>
  543.     <li>Secure Hash Algorithm (SHA-1), a 160-bit hash</li>
  544.     </ul>
  545.  
  546.     <p>The message digest is used to create a Message Authentication Code
  547.     (MAC) which is encrypted with the message to provide integrity and to
  548.     prevent against replay attacks.</p>
  549. </section>
  550.  
  551. <section id="handshake">
  552. <title>Handshake Sequence Protocol</title>
  553.     <p>The handshake sequence uses three protocols:</p>
  554.  
  555.     <ul>
  556.     <li>The <dfn>SSL Handshake Protocol</dfn>
  557.     for performing the client and server SSL session establishment.</li>
  558.     <li>The <dfn>SSL Change Cipher Spec Protocol</dfn> for actually
  559.     establishing agreement on the Cipher Suite for the session.</li>
  560.     <li>The <dfn>SSL Alert Protocol</dfn> for conveying SSL error
  561.     messages between client and server.</li>
  562.     </ul>
  563.  
  564.     <p>These protocols, as well as application protocol data, are
  565.     encapsulated in the <dfn>SSL Record Protocol</dfn>, as shown in
  566.     <a href="#figure2">Figure 2</a>. An encapsulated protocol is
  567.     transferred as data by the lower layer protocol, which does not
  568.     examine the data. The encapsulated protocol has no knowledge of the
  569.     underlying protocol.</p>
  570.  
  571.     <p class="figure">
  572.     <img src="ssl_intro_fig2.gif" alt="" width="428" height="217" /><br />
  573.     <a id="figure2" name="figure2"><dfn>Figure 2</dfn></a>: SSL Protocol Stack
  574.     </p>
  575.  
  576.     <p>The encapsulation of SSL control protocols by the record protocol
  577.     means that if an active session is renegotiated the control protocols
  578.     will be transmitted securely. If there were no session before, then
  579.     the Null cipher suite is used, which means there is no encryption and
  580.     messages have no integrity digests until the session has been
  581.     established.</p>
  582. </section>
  583.  
  584. <section id="datatransfer">
  585. <title>Data Transfer</title>
  586.     <p>The SSL Record Protocol, shown in <a href="#figure3">Figure 3</a>,
  587.     is used to transfer application and SSL Control data between the
  588.     client and server, possibly fragmenting this data into smaller units,
  589.     or combining multiple higher level protocol data messages into single
  590.     units. It may compress, attach digest signatures, and encrypt these
  591.     units before transmitting them using the underlying reliable transport
  592.     protocol (Note: currently all major SSL implementations lack support
  593.     for compression).</p>
  594.  
  595.     <p class="figure">
  596.     <img src="ssl_intro_fig3.gif" alt="" width="423" height="323" /><br />
  597.     <a id="figure3" name="figure3"><dfn>Figure 3</dfn></a>: SSL Record Protocol
  598.     </p>
  599. </section>
  600.  
  601. <section id="securehttp">
  602. <title>Securing HTTP Communication</title>
  603.     <p>One common use of SSL is to secure Web HTTP communication between
  604.     a browser and a webserver. This case does not preclude the use of
  605.     non-secured HTTP. The secure version is mainly plain HTTP over SSL
  606.     (named HTTPS), but with one major difference: it uses the URL scheme
  607.     <code>https</code> rather than <code>http</code> and a different
  608.     server port (by default 443). This mainly is what <module
  609.     >mod_ssl</module> provides to you for the Apache webserver...</p>
  610. </section>
  611. </section>
  612. <!-- /ssl -->
  613.  
  614. <section id="references">
  615. <title>References</title>
  616. <dl>
  617. <dt><a id="AC96" name="AC96">[AC96]</a></dt>
  618. <dd>Bruce Schneier, <q>Applied Cryptography</q>, 2nd Edition, Wiley,
  619. 1996. See <a href="http://www.counterpane.com/"
  620. >http://www.counterpane.com/</a> for various other materials by Bruce
  621. Schneier.</dd>
  622.  
  623. <dt><a id="X208" name="X208">[X208]</a></dt>
  624. <dd>ITU-T Recommendation X.208, <q>Specification of Abstract Syntax Notation
  625. One (ASN.1)</q>, 1988. See for instance <a
  626. href="http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.208-198811-I"
  627. >http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.208-198811-I</a>.
  628. </dd>
  629.  
  630. <dt><a id="X509" name="X509">[X509]</a></dt>
  631. <dd>ITU-T Recommendation X.509, <q>The Directory - Authentication
  632. Framework</q>. See for instance <a
  633. href="http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.509"
  634. >http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.509</a>.
  635. </dd>
  636.  
  637. <dt><a id="PKCS" name="PKCS">[PKCS]</a></dt>
  638. <dd><q>Public Key Cryptography Standards (PKCS)</q>, 
  639. RSA Laboratories Technical Notes, See <a
  640. href="http://www.rsasecurity.com/rsalabs/pkcs/"
  641. >http://www.rsasecurity.com/rsalabs/pkcs/</a>.</dd>
  642.  
  643. <dt><a id="MIME" name="MIME">[MIME]</a></dt>
  644. <dd>N. Freed, N. Borenstein, <q>Multipurpose Internet Mail Extensions
  645. (MIME) Part One: Format of Internet Message Bodies</q>, RFC2045.
  646. See for instance <a href="http://ietf.org/rfc/rfc2045.txt"
  647. >http://ietf.org/rfc/rfc2045.txt</a>.</dd>
  648.  
  649. <dt><a id="SSL2" name="SSL2">[SSL2]</a></dt>
  650. <dd>Kipp E.B. Hickman, <q>The SSL Protocol</q>, 1995. See <a
  651. href="http://www.netscape.com/eng/security/SSL_2.html"
  652. >http://www.netscape.com/eng/security/SSL_2.html</a>.</dd>
  653.  
  654. <dt><a id="SSL3" name="SSL3">[SSL3]</a></dt>
  655. <dd>Alan O. Freier, Philip Karlton, Paul C. Kocher, <q>The SSL Protocol
  656. Version 3.0</q>, 1996. See <a
  657. href="http://www.netscape.com/eng/ssl3/draft302.txt"
  658. >http://www.netscape.com/eng/ssl3/draft302.txt</a>.</dd>
  659.  
  660. <dt><a id="TLS1" name="TLS1">[TLS1]</a></dt>
  661. <dd>Tim Dierks, Christopher Allen, <q>The TLS Protocol Version 1.0</q>,
  662. 1999. See <a href="http://ietf.org/rfc/rfc2246.txt"
  663. >http://ietf.org/rfc/rfc2246.txt</a>.</dd>
  664. </dl>
  665. </section>
  666. <!-- /references -->
  667.  
  668. </manualpage>
  669.