home *** CD-ROM | disk | FTP | other *** search
/ The Hacker's Encyclopedia 1998 / hackers_encyclopedia.iso / hacking / internet / sslfaq.103 < prev    next >
Encoding:
Text File  |  2003-06-11  |  63.2 KB  |  1,572 lines

  1.  
  2.                               SSL-Talk FAQ
  3.              Secure Sockets Layer Discussion List FAQ v1.0.3
  4.  
  5.                       Wed Dec 12 12:00:00 PST 1997
  6.  
  7.                            FAQ Maintained by:
  8.                Christopher Allen <Christopher@consensus.com>
  9.                     Consensus Development Corporation
  10.                         <http://www.consensus.com/>
  11.  
  12.          The latest edition of this FAQ can always be found at:
  13.           <http://www.consensus.com/security/ssl-talk-faq.html>
  14.            <http://www.consensus.com/security/ssl-talk-faq.txt>
  15.           <ftp://ftp.consensus.com/pub/security/ssl-talk-faq.txt>
  16.  
  17.   (c) 1996, 1997 Consensus Development Corporation - All Rights Reserved
  18.  
  19.     All information contained in this work is provided "as is." All
  20.     warranties, expressed, implied or statutory, concerning the accuracy
  21.     of the information of the suitability for any particular use are
  22.     hereby specifically disclaimed. While every effort has been taken to
  23.     ensure the accuracy of the information contained in this work,
  24.     the authors assume(s) no responsibility for errors or omissions, or
  25.     for damages resulting from the use of the information contained
  26.     herein.
  27.  
  28.     This work may be copied in any printed or electronic form for
  29.     non-commercial, personal, or educational purposes if the work is not
  30.     modified in any way, that the copyright notice, the notices of any
  31.     other author included in this work, and this copyright agreement
  32.     appear on all copies.
  33.  
  34.     Consensus Development Corporation also grants permission to
  35.     distribute this work in electronic form over computer networks for
  36.     other purposes, provided that, in addition to the terms and
  37.     restrictions set forth above, Consensus Development Corporation
  38.     and/or other cited authors are notified and that no fees are charged
  39.     for access to the information in excess of normal online charges
  40.     that are required for such distribution.
  41.  
  42.     This work may also be mentioned, cited, referred to or described
  43.     (but not copied or distributed, except as authorized above) in
  44.     printed publications, on-line services, other electronic
  45.     communications media, and otherwise, provided that Consensus
  46.     Development Corporation and any other cited author receives
  47.     appropriate attribution.
  48.  
  49.     Comments about, suggestions about or corrections to this document
  50.     are welcomed.  If you would like to ask us to change this document
  51.     in some way, the method we appreciate most is for you to actually
  52.     make the desired modifications to a copy of the posting, and then to
  53.     send us the modified document, or a context diff between the posted
  54.     version and your modified version (if you do the latter, make sure
  55.     to include in your mail the "Version:" line from the posted
  56.     version).  Submitting changes in this way makes dealing with them
  57.     easier for us and helps to avoid misunderstandings about what you
  58.     are suggesting.
  59.  
  60.     Many people have in the past provided feedback and corrections; we
  61.     thank them for their input.
  62.  
  63.     In particular, many thanks to:
  64.  
  65.         Tim Dierks <TimD@consensus.com>
  66.         Charles Neerdaels <chuckn@netscape.com>
  67.         Eric Greenberg <ericg@netscape.com>
  68.         Bruce Schneier <schneier@counterpane.com>
  69.         Tom Weinstein <tomw@netscape.com>
  70.         Jonathan Zamick <JonathanZ@consensus.com>
  71.  
  72.     Remaining ambiguities, errors, and difficult-to-read passages are
  73.     not their fault. :)
  74.  
  75.  
  76. ------------------------------
  77.  
  78. CONTENTS
  79.  
  80.     1) THE SSL-TALK LIST
  81.     2) GENERAL SSL QUESTIONS
  82.     3) USING PROXIES, GATEWAYS AND FIREWALLS WITH SSL
  83.     4) SSL PROTOCOL QUESTIONS
  84.     5) CERTIFICATE RELATED QUESTIONS
  85.     6) SSL IMPLEMENTATION QUESTIONS
  86.         6.1) NETSCAPE QUESTIONS
  87.         6.2) MICROSOFT QUESTIONS
  88.     7) SSL TOOLKIT QUESTIONS
  89.         7.1) SSLREF QUESTIONS
  90.         7.2) SSL PLUS QUESTIONS
  91.         7.3) SSLEAY QUESTIONS
  92.  
  93.  
  94. ------------------------------
  95.  
  96. 1) THE SSL-TALK LIST
  97.  
  98. This section contains information about the SSL-Talk list.
  99.  
  100.  
  101. 1.1) What is the SSL-Talk List?
  102.  
  103.     The SSL-Talk List is an email list intended for discussion of the
  104.     technical issues of implementing the SSL protocol.
  105.  
  106.     Past discussions have included issues of software development,
  107.     cryptanalysis of the protocol and of its various implementations,
  108.     testing, interoperability, the applicability of SSL to additional
  109.     TCP-based applications, infrastructure growth questions, etc.
  110.  
  111.     The discussion list has also become a de facto support pipeline
  112.     about configuring various servers. We'd like to try to keep this
  113.     topic to a minimum, because it takes too much bandwidth.
  114.  
  115.  
  116. 1.2) What is SSL?
  117.  
  118.     SSL is the Secure Sockets Layer protocol. Version 2.0 originated by
  119.     Netscape Development Corporation, and version 3.0 was designed with
  120.     public review and input from industry, and is defined at
  121.         <http://home.netscape.com/eng/ssl3/index.html>
  122.  
  123.  
  124. 1.3) How do I subscribe to SSL-Talk?
  125.  
  126.     Send mail to the email address <ssl-talk-request@netscape.com>
  127.     with the *subject* being the single word SUBSCRIBE. You need not
  128.     put any text in the body of your message.
  129.  
  130.     Please do not send requests to the SSL-Talk list.
  131.  
  132.  
  133. 1.4) Once I am subscribed, how to I send mail to SSL-Talk?
  134.  
  135.     Any mail addressed to <ssl-talk@netscape.com> will be sent to *all*
  136.     members of the SSL-Talk mailing list.
  137.  
  138.  
  139. 1.5) How do I unsubscribe from SSL-Talk?
  140.  
  141.     To remove your name from the ssl-talk list send mail to the address
  142.     <ssl-talk-request@netscape.com> with the *subject* being the single
  143.     word UNSUBSCRIBE. You need not put any text in the body of your
  144.     message.
  145.  
  146.     Please do not send requests to the SSL-Talk list.
  147.  
  148.  
  149. 1.6) I've tried unsubscribing several times from SSL-Talk but it doesn't
  150. seem to work -- what can I do?
  151.  
  152.     The most common problem is that you are attempting to unsubscribe
  153.     using an email address different than that with which you subscribed
  154.     Check with your mail administrator and make sure that you don't have
  155.     an alias or ".forward" file sending mail to you from another
  156.     address.
  157.  
  158.     Another common problem is that the subdomain of your mailer has
  159.     changed, for example, "mail.consensus.com" has been renamed
  160.     "server.consensus.com".
  161.  
  162.     In either case, sending mail with the "From:" line matching the
  163.     account you subscribed with should unsubscribe you from the list.
  164.  
  165.     If this still doesn't work, send mail to <sslref@netscape.com>
  166.     describing your problems unsubscribing, what email addresses you
  167.     think you may have subscribed with, and if you think you may have a
  168.     different mail address subscribed.
  169.  
  170.     Please don't send mail to the general SSL-Talk list to unsubscribe;
  171.     it will only frustrate you and the rest of the recipients.
  172.  
  173.  
  174. 1.7) Where is SSL-Talk archived?
  175.  
  176.     There is a hypertext archive of the list at
  177.         <http://coho.stanford.edu/~hassan/hymail/ssl/current/>
  178.  
  179.     In some cases we have found that this archive occasionally is
  180.     missing some messages -- if you know of any alternative archive
  181.     sites, please let us know.
  182.  
  183.     We are not aware of any text archives of the list.
  184.  
  185.  
  186. 1.8) May I post commercial announcements regarding SSL products?
  187.  
  188.     It is the policy of the list to not allow advertising.  However,
  189.     product availability announcements are acceptable, provided
  190.  
  191.         * The product is *directly* related to SSL;
  192.  
  193.         * The announcement does not wander too far from the
  194.           topic of SSL;
  195.  
  196.         * The announcement is limited to an abstract of no more
  197.           than one paragraph and a URL to the full announcement
  198.           text, such as price, terms, features, or a press
  199.           release;
  200.  
  201.         * The announcement is released not more than once per quarter
  202.           per company.
  203.  
  204.     Subscribers or companies grossly violating these guidelines may be
  205.     removed from the list by the list administrator.
  206.  
  207.  
  208. ------------------------------
  209.  
  210. 2) GENERAL SSL QUESTIONS
  211.  
  212. This section contains general information on SSL and the SSL
  213. protocol.
  214.  
  215.  
  216. 2.1) What is the current version of the SSL protocol?
  217.  
  218.     The current version is 3.0, as documented at
  219.         <http://home.netscape.com/eng/ssl3/index.html>
  220.  
  221.     Errata to the SSL 3.0 Specification is periodically posted on
  222.     the SSL discussion list, and is available at
  223.         <http://home.netscape.com/eng/ssl3/ssl-errata.html>
  224.  
  225.     Netscape has submitted SSL 3.0 to the IETF-TLS Working Group
  226.     as an Internet Draft (see the section 4.5 of this FAQ for more
  227.     info on TLS):
  228.         <ftp://ds.internic.net/internet-drafts/
  229.             draft-ietf-tls-ssl-version3-00.txt>
  230.  
  231.     The previous version of SSL, version 2.0 is documented at
  232.         <http://home.netscape.com/newsref/std/SSL_old.html>
  233.  
  234.  
  235. 2.2) Where can I get a "management overview" of SSL and web security?
  236.  
  237.     There is a brief overview and FAQ on Netscape security called
  238.     "On Internet Security", available at
  239.         <http://home.netscape.com/info/security-doc.html>
  240.  
  241.     There is a brief introduction on how Netscape uses public key
  242.     cryptography in the SSL protocol called "Using Public Key
  243.     Cryptography" at
  244.         <http://home.netscape.com/newsref/ref/rsa.html>
  245.  
  246.     An overview on certificates and VeriSign's Digital IDs is at
  247.         <http://digitalid.verisign.com/crp_intr.htm>.
  248.  
  249.  
  250. 2.3) Where can I get a more in-depth look at SSL and web security?
  251.  
  252.     The online version of the technical specifications for the SSL 3.0
  253.     protocol is at
  254.         <http://home.netscape.com/eng/ssl3/ssl-toc.html>
  255.  
  256.     A PostScript version is also available at
  257.         <http://home.netscape.com/eng/ssl3/index.html>
  258.  
  259.     A FAQ for SSLeay, a freeware implementation of the SSL 2.0 protocol
  260.     is available at
  261.         <http://www.psy.uq.oz.au/~ftp/Crypto/>
  262.  
  263.     A rather broad list of public key related documents, with a focus on
  264.     certificates and standards can be found at
  265.         <http://www.zoo.net/~marcnarc/PKI/References.htm>
  266.  
  267.  
  268. 2.4) What software supports SSL 2.0 and SSL 3.0?
  269.  
  270.     WebCompare offers a list of security features supported by over 100
  271.     different servers and clients at
  272.         <http://webcompare.iworld.com/compare/security.shtml>
  273.  
  274.     Currently it is not very accurate. If you know of changes please
  275.     contact David Strom <david@strom.com>.
  276.  
  277.  
  278. 2.5) I'm confused by all the different laws that different countries
  279. have on export and import of cryptographic applications. Is there
  280. one place I can go to find out?
  281.  
  282.     There is an impressive "International Law Crypto Survey" of
  283.     cryptographic laws and regulations throughout the world at
  284.         <http://cwis.kub.nl/~frw/people/koops/lawsurvy.htm>
  285.  
  286.     RSA Data Security, Inc. offers an Acrobat version of their
  287.     "Frequently Asked Questions: Export" at
  288.         <http://www.rsa.com/PUBS/exp_faq.pdf>
  289.  
  290.     Other information on US export issues can be found on
  291.     the Electronic Frontier Foundation's web site at
  292.         <http://www.eff.org/>
  293.  
  294.     Canadian export issues are converted at
  295.         <http://insight.mcmaster.ca/org/efc/pages/doc/crypto-export.html>
  296.  
  297.  
  298. ------------------------------
  299.  
  300. 3) USING PROXIES, GATEWAYS AND FIREWALLS WITH SSL
  301.  
  302. This section contains information on how the SSL protocol interacts
  303. with proxy servers, security gateways, and firewalls.
  304.  
  305.  
  306. 3.1) What exactly is the meaning of "proxy" mentioned in the
  307. Netscape Navigator "Network Preferences" menus?
  308.  
  309.     A proxy server is a computer program that resides on your firewall
  310.     and acts as a conduit between your computer and the broader
  311.     Internet. In addition to acting as network guardian and logging
  312.     traffic, a proxy server can also provide an enterprise cache for
  313.     files as well as replication and site-filtering services.
  314.  
  315.     Any application which needs to communicate through a proxy has to
  316.     negotiate with the proxy first before continuing through the
  317.     firewall. Netscape Navigator works with many different types of
  318.     proxies (such as the CERN proxy server and their own Netscape Proxy
  319.     Server) and gateways that use the SOCKS protocol.
  320.  
  321.     One problem with SSL-based traffic is that it does not work with
  322.     caching and replication with proxy servers. For a proxy server to
  323.     support SSL it must either support SOCKS, or use a special SSL
  324.     Tunneling protocol. The Netscape Proxy Server supports both
  325.     SOCKS and the SSL Tunneling protocol.
  326.  
  327.  
  328. 3.2) How does SSL work through (application level) firewalls,
  329. gateways and proxy servers?
  330.  
  331.     SSL was designed to provide security between client and server and
  332.     to avoid any kind of 3-way man-in-the-middle attack. Thus SSL cannot
  333.     be proxied through traditional application level firewalls (such as
  334.     the CERN proxy server), because SSL considers a proxy server to be
  335.     a middleman.
  336.  
  337.     The simplest alternative to this problem is to use a packet
  338.     filtering firewall. You set it up to open a reserved and trusted
  339.     port for the SSL+HTTP or SSL+NNTP services (443 or 563 respectively)
  340.     allowing all traffic on those ports to be passed through
  341.     unrestricted. The risk with this solution is that an internal
  342.     attacker could attempt to use these trusted ports without using SSL
  343.     and there is no way for the firewall to know.
  344.  
  345.     SSL also can work with gateways that support the SOCKS protocol, a
  346.     protocol independent proxy mechanism. SOCKS is a generic byte
  347.     forwarding gateway between client and server, and generally works
  348.     at the socket level. If all you want is TCP/UDP restrictions based on
  349.     client IP or server IP, SOCKS works fine.
  350.  
  351.     However, most non-SSL HTTP proxies work at the protocol level and
  352.     have the ability to understand header information related to the
  353.     protocol. This goes beyond SOCKS to allow the firewall administrator
  354.     to use the header information for filtering and/or monitoring the
  355.     traffic. Also, SOCKS does not offer the firewall administrator
  356.     enough information about the request to let it decide whether to
  357.     allow it, and to log the request.
  358.  
  359.     A more secure approach is to use a firewall that supports the SSL
  360.     Tunnelling CONNECT extension method as described in the Internet
  361.     draft
  362.         <http://www.netscape.com/newsref/std/tunneling_ssl.html>
  363.  
  364.     In SSL Tunneling, the client initiates an SSL connection via normal
  365.     HTTP, then handshakes and creates a secure connection to the server
  366.     via a byte-forwarding tunnel. The proxy has access to the
  367.     client-proxy request headers, but the session is encrypted.  Once
  368.     the handshake occurs, the proxy acts just like a SOCKS gateway. This
  369.     allows the firewall to monitor the requests, but not the traffic.
  370.  
  371.     The biggest difference between the two methods is that when using
  372.     SOCKS, DNS resolution is the responsibility of the client, whereas
  373.     when requests are forwarded through a proxy, DNS resolution is the
  374.     responsibility of the proxy.
  375.  
  376.     The are three additional things that the SSL Tunnelling mechanism
  377.     does with the proxy server that do not happen when using SOCKS:
  378.  
  379.         * The client sends a "user agent" message (for example,
  380.           "Mozilla/3.0/Macintosh").
  381.  
  382.         * The proxy can send to the client an authorization request
  383.           allowing the administrator to use passwords to control external
  384.           Internet access.
  385.  
  386.         * The standard is more easily extensible. For example, the client
  387.           could, in theory, send the URL being requested (or anything
  388.           else) to the firewall. However, there is no standard to support
  389.           this behavior and as far as we know there are no products which
  390.           do it.
  391.  
  392.     The Netscape Proxy Server supports the SSL Tunnelling CONNECT
  393.     extension method for tunnelling SSL, and the use of the proxy is
  394.     described in
  395.         <http://developer.netscape.com/library/one/sdk/proxy/unixguide/
  396.         ssl-tunl.htm>
  397.  
  398.     Another solution, also available using the Netscape Proxy Server, is
  399.     that the proxy server can spoof SSL on behalf of the internal
  400.     client. The proxy will initiate SSL between itself and other servers
  401.     on the Internet, but be unsecure inside the firewall between the
  402.     proxy server and the client.
  403.  
  404.     This compromise means that client authentication is not possible;
  405.     only server authentication of the remote sites is available.
  406.     However, you gain the ability for client authentication between the
  407.     client to the proxy. The administrator must decide which is more
  408.     important, until such time as a better solution arises. The
  409.     description of this feature of the Netscape Proxy Server is at
  410.         <http://developer.netscape.com/library/one/sdk/proxy/unixguide/
  411.             ssl-tunl.htm#518342>
  412.  
  413.     Reverse proxies are a solution for serving secure content inside
  414.     a firewall to outside clients. For the Netscape Proxy Server
  415.     this is described at
  416.         <http://developer.netscape.com/library/one/sdk/proxy/unixguide/
  417.             revpxy.htm>
  418.  
  419.     It is possible for a proxy server to hold both client and server
  420.     keys for its internal clients. This allows SSL sessions to be
  421.     carried out twice: once between the client and proxy server, and
  422.     again between the proxy server and the secure server.  Thus, the
  423.     proxy server can to listen in on the conversation without having the
  424.     private keys of external servers. Clearly this isn't reasonable for
  425.     the general internet, but it is a viable solution for corporate
  426.     requirements inside a firewall.
  427.  
  428.     The current 2.1 beta of the Netscape Proxy Server supports this
  429.     feature. It can be used as described above, or simply to create a
  430.     secure tunnel between sites across an insecure network. This is
  431.     really multiple sessions of SSL, not an end-to-end secure
  432.     connection.
  433.  
  434.     This means that 2.1 beta has full SSL support as opposed to just SSL
  435.     tunneling.  It can therefore do client authentication and serve
  436.     documents like a secure server, or request documents like an
  437.     SSL-enabled client. SSL doesn't allow recursive encryption, so by
  438.     using it this way you lose the transparency of the proxy and get
  439.     multiple segments of secure connections, rather than a single
  440.     end-to-end connection.
  441.  
  442.  
  443. 3.3) Since SSL is supposed to withstand replay attacks, does this
  444. preclude proxy servers from caching the data?
  445.  
  446.     A proxy server must just pass SSL directly through without caching.
  447.  
  448.  
  449. 3.4) What ports does SSL use?
  450.  
  451.     Theoretically SSL can transparently secure any TCP based protocol
  452.     running on any port if both sides know the other side is using SSL.
  453.     However, in practice, separate port numbers have been reserved for
  454.     each protocol commonly secured by SSL -- this allows packet
  455.     filtering firewalls to allow such secure traffic through.
  456.  
  457.     As of September 1996, SSL has the following port numbers reserved
  458.     with the Internet Assigned Numbers Authority (IANA), a part of the
  459.     Internet Engineering Task Force (IETF):
  460.  
  461.         Keyword     Decimal    Description
  462.         -------     -------    -----------
  463.         https       443/tcp    https
  464.         ssmtp       465/tcp    ssmtp
  465.         snews       563/tcp    snews
  466.         ssl-ldap    636/tcp    ssl-ldap
  467.         spop3       995/tcp    SSL based POP3
  468.  
  469.  
  470. 3.5) Do you have any information on sftp?
  471.  
  472.     The name sftp conflicts with a protocol called simple file transfer
  473.     protocol. As far as we can tell, no one has yet applied for a port
  474.     for 'ftps', nor does it appear in the SSL 3.0 specification.
  475.     However, some companies have begun to use port 990 for ftps
  476.     informally until it is officially registered.
  477.  
  478.  
  479. ------------------------------
  480.  
  481. 4) SSL PROTOCOL QUESTIONS
  482.  
  483. This section contains more detailed information on the SSL protocol.
  484.  
  485.  
  486. 4.1) Does SSL protect users from replay attack by eavesdroppers or
  487. message interceptors?
  488.  
  489.     Yes. Both the client and the server provide part of the random data
  490.     used to generate the keys for each connection. (The client and
  491.     server random portions from the connection that initiates a session
  492.     are also used to generate the master secret associated with that
  493.     session.) Additionally, each record is protected with a MAC that
  494.     contains a sequence number for the message.
  495.  
  496.  
  497. 4.2) The record protocol sits underneath the other protocols, right?
  498. It appears that information can be sent only in blocks. Does
  499. there have to be a one-to-one mapping between write() calls on the
  500. client/server and SSL records? Is there some other blocking
  501. taking place when user data is being sent?
  502.  
  503.     The record layer takes a data stream from the higher layers and
  504.     fragments it into records. If the write is longer than 2^14 bytes
  505.     (with headers), the record layer will generate multiple records.
  506.     Multiple writes can be condensed into a single record.
  507.  
  508.  
  509. 4.3) It appears that there is no way in the SSL protocol to
  510. resynchronize blocks if they get out of synch. Is that true?
  511.  
  512.     Yes, SSL relies on an underlying reliable protocol to assure that
  513.     bytes are not lost or inserted. There was some discussion of
  514.     reengineering the future TLS protocol to work over datagram
  515.     protocols such as UDP, however, most people at a recent TLS meeting
  516.     felt that this was inappropriate layering.
  517.  
  518.  
  519. 4.4) Why does SSL3 have Diffie-Hellman encryption at all? What good is
  520. it? Exchanging random numbers that are encrypted with the server's (or
  521. client's) public key would seem to be an adequate way of getting the
  522. secret bits across. Why have DH as well?
  523.  
  524.     Anonymous DH key exchange doesn't require the use of certificates.
  525.     Ephemeral DH allows you to use signing-only certificates, and it
  526.     protects the session from future compromise of the server's private
  527.     key. Another advantage of DH is that the patent expires next year.
  528.  
  529.  
  530. 4.5) What is TLS? What happened at these meetings? Has anything come
  531. out of them yet?
  532.  
  533.     TLS is the Transport Layer Security Working Group of the IETF
  534.     (Internet Engineering Task Force). It is the working group
  535.     responsible for moving transport layer protocols such as SSL
  536.     through the standards tracks.
  537.  
  538.     IETF working groups do most of their activities through mailing
  539.     lists and thrice-annual IETF meetings. The first official IETF-TLS
  540.     Working Group meeting was June 1996 in Montreal. (Before then it was
  541.     an unofficial BOF "birds of a feather" group.)
  542.  
  543.     The home page for the IETF-TLS Working Group is at
  544.         <http://www.consensus.com/ietf-tls/>
  545.  
  546.     The discussion list for IETF-TLS is at IETF-TLS@CONSENSUS.COM. You
  547.     subscribe and unsubscribe by sending to IETF-TLS@CONSENSUS.COM with
  548.     subscribe or unsubscribe in the SUBJECT of the message. Archives of
  549.     the list are at
  550.         <http://www.imc.org/ietf-tls/mail-archive/>
  551.  
  552.     The minutes for the last IETF-TLS Working Group meeting in
  553.     San Jose in December of '96 are at
  554.         <http://www.consensus.com/ietf-tls/minutes-9612.txt>
  555.  
  556.     The minutes for the IETF-TLS Working Group meeting in Montreal in
  557.     June of '96 are in two messages at:
  558.         <http://www.consensus.com/ietf-tls/minutes-9606-1.txt>
  559.         <http://www.consensus.com/ietf-tls/minutes-9606-2.txt>
  560.  
  561.     There was a day-long pre-Montreal meeting in Palo Alto of May in '96
  562.     the minutes of which give a fairly complete list of old technical
  563.     issues and possible solutions. The minutes of this meeting are at
  564.         <http://www.consensus.com/ietf-tls/minutes-9605.txt>
  565.  
  566.     A number of internet-draft documents have been submitted to the
  567.     IETF-TLS Working Group.
  568.  
  569.     The TLS Protocol 1.0
  570.     (Current Version 01 with Change Bars from 00):
  571.         <draft-ietf-tls-protocol-01.txt>
  572.             (157637 bytes, expires August '97)
  573.  
  574.     The TLS Protocol 1.0 (Old Version 00):
  575.         <draft-ietf-tls-protocol-00.txt>
  576.             (147284 bytes, expires May '97)
  577.  
  578.     Modifications to the SSL protocol for TLS:
  579.         <draft-ietf-tls-ssl-mods-00.txt>
  580.             (9271 bytes, expires May '97)
  581.  
  582.     Secure FTP over SSL:
  583.         <draft-murray-auth-ftp-ssl-00.txt>
  584.             (14238 bytes, expires June '97)
  585.  
  586.     Addition of Kerberos Cipher Suites to Transport Layer
  587.     Security (TLS):
  588.         <draft-ietf-tls-kerb-cipher-suites-00.txt>
  589.             (9664 bytes, expires May '97)
  590.  
  591.     Addition of Shared Key Authentication to Transport Layer
  592.     Security (TLS):
  593.         <draft-ietf-tls-passauth-00.txt>
  594.             (16885 bytes, expires May '97)
  595.  
  596.     The SSL Protocol Version 3.0:
  597.         <draft-ietf-tls-ssl-version3-00.txt>
  598.             (147476 bytes, expires May '97)
  599.  
  600.     The following internet drafts are expired, but are of historical
  601.     interest:
  602.  
  603.     Tunneling SSL Through a WWW Proxy (originally
  604.     <draft-luotonen-ssl-tunneling-02.txt>)
  605.         <http://www.consensus.com/ietf-tls/ssl-tunneling-02.txt>
  606.             (9242 bytes, expired December '95)
  607.  
  608.     SSH Transport Layer Protocol (originally
  609.     <draft-ietf-tls-ssh-00.txt>)
  610.         <http://www.consensus.com/ietf-tls/tls-ssh-00.txt>
  611.             (44411 bytes, expired December '96)
  612.  
  613.     Another useful document is the "Request to the IANA to Regularize
  614.     TLS/SSL Port Numbers"
  615.         <http://www.consensus.com/ietf-tls/tls-ssl-port-requests.txt>
  616.             (Thu, 13 Feb 1997 01:06:00 -0800):
  617.  
  618.  
  619. 4.6) When did MD5 get "disavowed"?
  620.  
  621.     It hasn't been truly "disavowed", but weaknesses have been
  622.     discovered such that some people believe that an alternative should
  623.     be found. These weaknesses were found by Dr. Hans Dobbetin
  624.     <dobbertin@skom.rhein.de> of the German Information Security Agency
  625.     in a paper called "Cryptanalysis of MD5 Compress" dated May 2, 1996.
  626.     A postscript version of the paper is at
  627.         <http://www.cs.ucsd.edu/users/bsy/dobbertin.ps>.
  628.  
  629.     SSL uses MD5 in combination with SHA for all negotiation. It also
  630.     uses MD5 alone in most negotiated cipher suites. However, in these
  631.     cases it is used with the HMAC construction, which strengthens it
  632.     such that there are no known problems with this construction.
  633.  
  634.     It has been proposed with TLS to start phasing out all use of MD5.
  635.  
  636.  
  637. 4.7) Can anyone explain to me the purpose of pad1 and pad2, and why
  638. the numbers 0x36 and 0x5c were chosen?
  639.  
  640.     The purpose of the construction of a "keyed-MAC" in the form of
  641.     HASH(K,pad2,HASH(K,pad1,text)) was proposed by the cryptographer
  642.     Hugo Krawczyk of IBM as much more secure alternative to traditional
  643.     MACs. In a paper last year he demonstrated a proof that even if the
  644.     hash function was relatively weak (as MD5 has since proven itself to
  645.     be) the addition of the secret key in the function makes it
  646.     significantly more secure. The particular method proposed by
  647.     Krawczyk is now known as an HMAC.
  648.  
  649.     The particular construction that Netscape uses for SSL is based on
  650.     the original internet-draft of last November, and since that time it
  651.     has been revised such that it XOR the pads rather than appending
  652.     them -- a nice consequence of which is that pads are of the same
  653.     size whether you use MD5 or SHA and it also allows for long keys and
  654.     has some security advantages. Our understanding is that this version
  655.     of HMAC has now been approved and will soon be assigned an RFC. The
  656.     current draft is at
  657.         <ftp://ftp.internic.net/internet-drafts/
  658.             draft-ietf-ipsec-hmac-md5-00.txt>
  659.  
  660.     In the proposals we've seen for the IETF-TLS Working Group the
  661.     scheme SSL 3.0 uses will be replaced by the official RFC HMAC
  662.     technique.
  663.  
  664.     The particular pad bytes used are the ones defined in Krawczyk's
  665.     original HMAC paper.  We believe that they are relatively arbitrary.
  666.     The salient property is that half the bits differ: the hamming
  667.     distance between 0x36 and 0x5c is 4 out of a possible 8. We don't
  668.     know if the fact that each of the pads also has a hamming weight of
  669.     4 is significant or not.
  670.  
  671.  
  672. 4.8) Are you aware of any SSL toolkits supporting client authentication?
  673.  
  674.     SSLeay is able to do SSL 2.0 client authentication, however, we
  675.     don't know of any browsers that support SSL 2.0 client
  676.     authentication.
  677.  
  678.     SSLRef 3.0 and SSL Plus are two toolkits that now support SSL 3.0
  679.     client authentication.
  680.  
  681.  
  682. 4.9) What SSL implementations should I test against?
  683.  
  684.     There is no formal conformance testing, but Netscape does currently
  685.     offer an interoperability test server that has been used to test
  686.     conformance with many other implementations of SSL 3.0. This server
  687.     is located at
  688.         <https://www3.netscape.com/>
  689.  
  690.     VeriSign also has an "Authentic Site" program listing various sites
  691.     that use SSL authentication. Also included is a test page that
  692.     requires that you present a valid VeriSign client certificate.
  693.     More information on the Authentic Site program is at
  694.         <http://www.verisign.com/authentic/>
  695.  
  696.     Some other sites that client authentication can be tested against
  697.     are
  698.         <https://www.bassandco.com/secure/>
  699.         <https://in-103.infospace.com/>
  700.  
  701. 4.10) What is the difference between SSL 2.0 and 3.0?
  702.  
  703.     Security improvements:
  704.  
  705.     1.  SSL 2.0 is vulnerable to a "man-in-the-middle" attack.  By
  706.     editing the list of ciphersuite preferences in the hello messages,
  707.     an active attacker can invisibly edit the list of ciphersuite
  708.     preferences in the hello messages to invisibly force both client and
  709.     server to use 40-bit encryption.  SSL 3.0 defends against this
  710.     attack by having the last handshake message include a hash of all
  711.     the previous handshake messages.
  712.  
  713.     2.  SSL 2.0 uses a weak MAC construction, although post-encryption
  714.     seems to stop attacks.  This is fixed in 3.0.
  715.  
  716.     3.  SSL 2.0 feeds padding bytes into the MAC in block cipher modes,
  717.     but leaves the padding-length field unauthenticated, which could
  718.     allow active attackers to delete bytes from the end of messages.
  719.     This, too, is fixed in 3.0.
  720.  
  721.     4.  In SSL 3.0, the Message Authentication Hash uses a full 128 bits
  722.     of keying material, even when using an Export cipher.  In SSL 2.0,
  723.     Message Authentication used only 40 bits when using an Export
  724.     cipher.
  725.  
  726.     Functionality improvements:
  727.  
  728.     5.  In SSL 2.0, the client can only initiate a handshake at the
  729.     beginning of the connection.  In 3.0, the client can initiate a
  730.     handshake routine, even in the middle of an open session.  A server
  731.     can request that the client start a new handshake.  Thus, the
  732.     parties can change the algorithms and keys used whenever they want.
  733.  
  734.     6.  SSL 3.0 allows the server and client to send chains of
  735.     certificates. This allows organizations to use a certificate
  736.     hierarchy that is more than two certifications deep.
  737.  
  738.     7.  SSL 3.0 has a generalized key exchange protocol.  It allows
  739.     Diffie-Hellman and Fortezza key exchanges and non-RSA certificates.
  740.  
  741.     8.  SSL 3.0 allows for record compression and decompression.
  742.  
  743.     Backward compatibility:
  744.  
  745.     9. SSL 3.0 can recognize an SSL 2.0 client hello and fall back to
  746.     SSL 2.0.  An SSL 3.0 client can also generate an SSL 2.0 client
  747.     hello with the version set to SSL 3.0, so SSL 3.0 servers will
  748.     continue the handshake in SSL 3.0, and SSL 2.0 server will cause the
  749.     client to fall back to SSL 2.0.
  750.  
  751.     Other:
  752.  
  753.     10.  SSL 3.0 separates the transport of data from the message layer.
  754.     In 2.0, each packet contained only one handshake message.  In 3.0, a
  755.     record may contain part of a message, a whole message, or several
  756.     messages.  This requires different logic to process packets into
  757.     handshake messages.  Therefore, the formatting of the packets had to
  758.     be completely changed.
  759.  
  760.     11.  Cipher specifications, handshake messages, and other constants
  761.     are different.
  762.  
  763.  
  764. ------------------------------
  765.  
  766. 5) CERTIFICATE RELATED QUESTIONS
  767.  
  768. This section contains information on certificates used by the SSL
  769. protocol.
  770.  
  771.  
  772. 5.1) How does Netscape handle client certificates in Navigator 3.0?
  773.  
  774.     Netscape describes their framework for web-based key generation and
  775.     certificate issuing on their web pages at
  776.         <http://home.netscape.com/eng/security/certs.html>
  777.  
  778.  
  779. 5.2) What is the format of the SSL certificates used by Netscape
  780. Navigator?
  781.  
  782.     Netscape has documented their SSL 2.0 certificate format at
  783.         <http://home.netscape.com/newsref/std/ssl_2.0_certificate.html>.
  784.  
  785.  
  786. 5.3) I am distributing load on several different web servers and I
  787. don't want to have to have a different certificate for each. How can
  788. I do this?
  789.  
  790.     When establishing a secure connection in SSL, many SSL clients
  791.     applications, including Netscape's Navigator, check the common name
  792.     of the certificate against the name of the site in the URL. If it
  793.     doesn't match, the client application warns the user. Thus the
  794.     preferred format of a common name of an SSL server
  795.     is a simple DNS name like "www.consensus.com".
  796.  
  797.     To support multiple servers you can use a round-robin DNS to send
  798.     each request for "www.consensus.com" to different IP addresses. As
  799.     Netscape Navigator does not check to see that the IP address matches
  800.     the original domain name (reverse-IP), this will work for each
  801.     round-robin server.
  802.  
  803.     Netscape's Navigator will also allow for some simple pattern
  804.     matching. Netscape has documented a number of different possibilities
  805.     in their SSL 2.0 Certificate Format web pages at
  806.         <http://home.netscape.com/newsref/std/ssl_2.0_certificate.html>
  807.  
  808.     Note, however, none of these regular expression/pattern matching
  809.     choices are accepted by VeriSign. In the past they have accepted
  810.     server certificate common names with regular expressions, but these
  811.     are no longer allowed.
  812.  
  813.     Other CAs may have different policies regarding use of regular
  814.     expressions in common names.
  815.  
  816.  
  817. 5.4) When comparing a URL against the common name of the certificate,
  818. why don't you do a reverse-DNS lookup?
  819.  
  820.     DNS is not a secure name service, and trying to treat it like one
  821.     could be a security hole. The purpose of checking the common name
  822.     against the URL is to make sure that at least the user's expectation
  823.     of what site the user is visiting is not compromised.
  824.  
  825.  
  826. 5.5) Does Netscape require hierarchical naming (that is, distinguished
  827. names) for its certificates?
  828.  
  829.     Yes, Netscape requires distinguished names.
  830.  
  831.  
  832. 5.6) Where can I get more information on certificates?
  833.  
  834.     VeriSign, the default CA (Certificate Authority) used by Netscape
  835.     and most other WWW browsers has a FAQ at
  836.         <http://digitalid.verisign.com/id_faqs.htm>
  837.  
  838.     Entrust has a primer on Web Security with an emphasis on
  839.     Certificate Authorities at
  840.         <http://www.nortel.com/entrust/certificates/browcert.html>
  841.  
  842.     There is also a good resource of links to a variety of certificate
  843.     technical and policy issue sites available at
  844.         <http://www.zoo.net/~marcnarc/PKI/References.htm>.
  845.  
  846.  
  847. 5.7) What other CAs exist besides VeriSign?
  848.  
  849.     We know of these CAs:
  850.  
  851.         EuroSign - The European Certification Authority
  852.             <http://eurosign.com/>
  853.         COST Computer Security Technologies <http://www.cost.se/>
  854.         Thawte Consulting <http://www.thawte.com/certs/>
  855.         CompuSource <http://www.compusource.co.za/id/personal/
  856.         Nortel Entrust,
  857.             Browser Certs <http://www.nortel.com/entrust/certificates/
  858.                 browcert.html>
  859.             Server Certs <http://www.nortel.com/entrust/certificates/
  860.                 servcert.html>
  861.  
  862.     In addition, we have heard that GE and the US Postal Service may be
  863.     announcing CA services, but we don't have web pages for them.
  864.  
  865.  
  866. 5.8) How do I set up my own Certificate Authority?
  867.  
  868.     There is some support for creating your own CA in SSLeay; there is
  869.     information on how to integrate it with Netscape available at
  870.         <http://www.webvision.com/developers/casetup.html>
  871.  
  872.  
  873. 5.9) What criteria should I use in deciding between one CA and another?
  874.  
  875.     The purpose of a Certificate Authority is to bind a public key to
  876.     the common name of the certificate, and thus assure third parties
  877.     that some measure of care was taken to ensure that this binding
  878.     is valid. A measure of a Certificate Authority is their "Policy
  879.     Statement" which states what measures they take for each class of
  880.     certificate they offer to ensure that this binding of identity
  881.     with public key is valid.
  882.  
  883.  
  884. 5.10) What are Attribute Certificates?
  885.  
  886.     Attribute Certificates are a new type of certificate proposed by
  887.     Netscape. These are signed objects that assert additional properties
  888.     about a particular identity certificate.
  889.  
  890.     An attribute cert has no associated key pair and consequently cannot
  891.     be used to establish identity. Informally, one can think of them as
  892.     a mechanism for extending the attributes of an identity certificate
  893.     without requiring that the identity certificate be reissued.
  894.  
  895.     More details of the proposal are at
  896.         <http://lists.w3.org/Archives/Public/ietf-tls/msg00796.html>
  897.  
  898.  
  899. ------------------------------
  900.  
  901. 6) SSL IMPLEMENTATION ISSUES
  902.  
  903. This section offers specific implementation details of different SSL
  904. clients and servers that are not specific to the protocol.
  905.  
  906.  
  907. ------------------------------
  908.  
  909. 6.1) NETSCAPE QUESTIONS
  910.  
  911. Sub-section 6.1 is maintained by Eric Greenberg <ericg@netscape.com> --
  912. any comments or questions should be sent to him.
  913.  
  914.  
  915. 6.1.1) Will SSL 3.0 functionality be available to Java applets via the
  916. Netscape plug-in interfaces available as part of LiveConnect in Netscape
  917. 3.0?
  918.  
  919.     It will not be in 3.0, but Netscape is looking at it for a future
  920.     release.
  921.  
  922.  
  923. 6.1.2) Does the Netscape browser cache on disk data that has been sent
  924. over by https?
  925.  
  926.     Navigator 3.0 has an option to allow caching of data fetched
  927.     over SSL connections. The default setting is to not cache data.
  928.  
  929.     In Navigator 2.0, documents fetched using SSL were cached in the
  930.     same way as non-SSL documents. You could use the "Pragma: no-cache"
  931.     HTTP header to disable caching for a particular page. In Navigator
  932.     1.0 documents fetched with SSL were not cached.
  933.  
  934.  
  935. 6.1.3) Is the cached data encrypted using some key?
  936.  
  937.     No, Netscape has never encrypted documents that are stored in the
  938.     cache.
  939.  
  940.  
  941. 6.1.4) The Help Information for Netscape's Enterprise 2.0 server
  942. indicates that the server supports 6 ciphers for SSL 2.0 and 6
  943. ciphers for SSL 3.0. However, the Encryption|Security Preferences
  944. menu in the server Manager displays only 2 choices for SSL 2.0 and 3
  945. choices for SSL 3.0. How can I select the other choices?
  946.  
  947.     You have the export version of the server which supports only the
  948.     ciphers displayed. If you want to use the others, you must
  949.     use the US-only (non-export) version.
  950.  
  951.  
  952. 6.1.5) What mechanisms will be available for "aging" passphrases used
  953. to unlock certificate databases. Will these be configurable?
  954.  
  955.     At this point no mechanisms exist in Netscape's Navigator, and
  956.     therefore aging is not configurable. Presumably the future of
  957.     personal certificate databases requires smartcards, but until that
  958.     time aging is an application specific function.
  959.  
  960.  
  961. 6.1.6) Is Netscape adopting any open standards for APIs in these
  962. areas? Is Netscape working with any standards bodies or other groups on
  963. such APIs? Is there any word on the emerging security architectures,
  964. such as Microsoft's Crypto-API, RSA's LOCT, or GSS-API?
  965.  
  966.     Netscape has been participating in a number of working groups
  967.     interested in standard security APIs. At this point Netscape has not
  968.     adopted a single security API approach or committed to a specific
  969.     proposed standard security API. Eventually Netscape may use all or
  970.     some subset (or perhaps none) of these specific architectures.
  971.     Netscape welcomes customer comments or suggestions on this topic.
  972.  
  973.  
  974. 6.1.7) Does Netscape use "regular" RSA libraries (such as BSAFE) or
  975. "custom" RSA code?  More specifically, is Netscape using BSAFE 3.0?
  976.  
  977.     BSAFE 3.0 is currently being integrated in all of Netscape's
  978.     products. Netscape has modified portions of the BSAFE API to improve
  979.     efficiency in the heavy load environment of their products, but
  980.     Netscape continues to integrate the upgraded code from RSA as
  981.     soon as practical.
  982.  
  983.  
  984. 6.1.8) Will Netscape client authentication be interoperable with
  985. other SSL implementations?
  986.  
  987.     We can't speak to which specific implementations have been testing
  988.     against our server. Netscape does currently offer an
  989.     interoperability test server that has been used to test conformance
  990.     with many other implementations of SSL 3.0. This server is located
  991.     at
  992.         <https://www3.netscape.com/>
  993.  
  994.  
  995. 6.1.9) How might Netscape offer more "cryptographic flexibility,"
  996. such as selection of algorithms and authentication without
  997. encryption?
  998.  
  999.     SSL 3.0 allows for authentication-only (and even encrypt only)
  1000.     methods. Algorithm selection is negotiated by the client and the
  1001.     server. The Navigators "Security Preferences:General" allow the
  1002.     user to define per algorithm overrides for each SSL2 or SSL3
  1003.     session.
  1004.  
  1005.  
  1006. 6.1.10) Isn't encrypt-only SSL open to "man-in-the-middle" attacks?
  1007.  
  1008.     Yes, even though SSL 3.0 supports encrypt-only (through the
  1009.     SSL_DH_anon_WITH_DES_CBC_SHA ciphersuite), there are many possible
  1010.     attacks against it, and we recommend against using it. SSL *MUST*
  1011.     have strong authentication at the record layer or it becomes open to
  1012.     some attacks. It doesn't matter if the application has
  1013.     authentication at the application layer.
  1014.  
  1015.  
  1016. 6.1.11) Are the 512-bit RSA keys used by exportable applications
  1017. generated on the fly by the server? How often are they changed? (The
  1018. spec recommends every 500 transactions.) Does the Netscape server
  1019. take care of changing them automatically?
  1020.  
  1021.     In the Netscape 2.0 servers, if the server's public key is longer
  1022.     than 512 bits, it generates a temporary 512-bit export key at
  1023.     start-up time. This key is regenerated only when the server is
  1024.     restarted. Netscape does it this way because generating a key can
  1025.     take several seconds.
  1026.  
  1027.     The 500 transaction limit is only a guideline and largely depends on
  1028.     how valuable the information being encrypted is.  For information
  1029.     for which you worry about how often the key is regenerated you
  1030.     should probably be using something stronger than a 40-bit symmetric
  1031.     key anyway.
  1032.  
  1033.  
  1034. 6.1.12) What are the plans for mechanisms for adding root keys and
  1035. accepting root certificates for future use?
  1036.  
  1037.     Root keys for CA (Certificate Authority) certificates are loaded
  1038.     through an automatic process using an SSL connection to a previously
  1039.     unknown CA. Also new releases of the Navigator have added additional
  1040.     CA root keys.
  1041.  
  1042.     Presumably in the future loading a root cert object through a local
  1043.     process, such as from disk, LDAP, or other out-of-band mechanism,
  1044.     will be a supported addition or in place of the present method of
  1045.     connecting to a trusted server and downloading the certificate
  1046.     chain.
  1047.  
  1048.  
  1049. 6.1.13) With regard to the certificate extensions documentation at
  1050. <http://home.netscape.com/eng/security/certs.html> what X.509v3
  1051. certificate extensions will the release 3.0 Navigator use?
  1052.  
  1053.     The following extensions are supported in some way by Navigator 3.0:
  1054.  
  1055.         netscape-revocation-url
  1056.         netscape-ca-revocation-url
  1057.  
  1058.     A button will appear on the Document Info page for server's whose
  1059.     certificate (or CA's cert) contains these extension. When the button
  1060.     is pressed the CA will be queried via HTTP GET, and will display a
  1061.     dialog to indicate to the user if the cert is good or not.
  1062.  
  1063.         netscape-cert-renewal-url
  1064.  
  1065.     If a user attempts to use a client certificate that has expired, a
  1066.     dialog will be displayed warning them that their cert has expired,
  1067.     and if this extension exists, a button will be on the dialog that
  1068.     will bring up a window displaying the URL.
  1069.  
  1070.         netscape-ca-policy-url
  1071.  
  1072.     A button will be displayed on the Document Info for server certs
  1073.     that contain this extension. When press a window displaying the
  1074.     policy URL will be opened.
  1075.  
  1076.         netscape-ssl-server-name
  1077.  
  1078.     This extension is used in place of the common name when it exists to
  1079.     verify the domain name of the site.
  1080.  
  1081.         netscape-comment
  1082.  
  1083.     A Netscape-specific place for comments.
  1084.  
  1085.  
  1086. 6.1.14) Does the Navigator actually use the revocation URL
  1087. or CA revocation URL?
  1088.  
  1089.     There is no automatic revocation check. As mentioned above, a button
  1090.     allowing manual checks is displayed on the Document Info page. This
  1091.     feature was added because some people needed revocation, but we did
  1092.     not have time to support full CRLs. In a future release we will
  1093.     support CRLs, and possibly other forms of revocation technology.
  1094.  
  1095.  
  1096. ------------------------------
  1097.  
  1098. 6.2) MICROSOFT QUESTIONS
  1099.  
  1100. The text for sub-section 6.2 was grabbed from various documents
  1101. found at
  1102.         <http://www.microsoft.com/intdev/security/>
  1103.  
  1104.  
  1105. 6.2.1) Which of Microsoft's products will support SSL?
  1106.  
  1107.     Internet Explorer 3.0 provides support for SSL versions 2.0 and 3.0
  1108.     and for Private Communication Technology (PCT) version 1.0. It will
  1109.     include support for the Transport Layer Security Protocol (TLS),
  1110.     which is being considered by IETF.
  1111.  
  1112.  
  1113. 6.2.2) Which Microsoft products support Client Authentication?
  1114.  
  1115.     Client authentication as implemented by Microsoft Internet Explorer
  1116.     3.0 is interoperable with popular Web servers that support secure
  1117.     sockets layer (SSL) 3.0 client authentication.
  1118.  
  1119.     Microsoft is working to extend the complete set of technology
  1120.     components necessary for webmasters to incorporate client
  1121.     authentication in their Web applications. This includes extending
  1122.     Windows NT(r) Server operating system support for challenge and
  1123.     response and the SSL 2.0 protocol used by Microsoft Internet
  1124.     Information Server to also include support for client authentication
  1125.     through the SSL 3.0 protocol.
  1126.  
  1127.  
  1128. ------------------------------
  1129.  
  1130. 7) SSL TOOKIT QUESTIONS
  1131.  
  1132. This section offers specific details of different SSL development
  1133. toolkits that are not specific to the protocol.
  1134.  
  1135.  
  1136. ------------------------------
  1137.  
  1138. 7.1) SSLREF QUESTIONS
  1139.  
  1140. This subsection contains information on SSLRef 3.0 which was
  1141. codeveloped by Netscape Communications Corp. of Mountain View,
  1142. California <http://home.netscape.com/> and Consensus Development
  1143. Corporation of Berkeley, California <http://www.consensus.com/>.
  1144.  
  1145.  
  1146. 7.1.1) What is SSLRef 3.0?
  1147.  
  1148.     SSLRef 3.0 is a reference implementation of the SSL (Secure Sockets
  1149.     Layer) protocol. SSLRef 3.0 is intended to aid and accelerate
  1150.     developers' efforts to provide security within TCP/IP applications.
  1151.     It can also be used to qualify other implementations of version 3.0
  1152.     of the SSL protocol.
  1153.  
  1154.     SSLRef 3.0 consists of a software library, distributed as ANSI C
  1155.     source-code, that can be compiled on Windows 95/NT and Solaris
  1156.     platforms and then linked into TCP/IP application programs. SSLRef
  1157.     3.0 was also designed to be easily ported to a wide variety of
  1158.     other platforms and operating systems.
  1159.  
  1160.     More information on SSLRef can be found at
  1161.         <http://home.netscape.com/newsref/std/sslref.html>
  1162.  
  1163.     If you are a US citizen you can download SSLRef 3.0 at
  1164.         <http://wwwus.netscape.com/eng/US-Current/>
  1165.  
  1166.  
  1167. 7.1.2) How can I license SSLRef 3.0? What does it cost? With what
  1168. restrictions?
  1169.  
  1170.     The SSLRef 3.0 distribution includes a license for non-commercial
  1171.     use. For commercial licensing, send mail to <sslref@netscape.com>.
  1172.  
  1173.     The SSLRef 3.0 commercial license is Part Number 70-01128-00 and the
  1174.     price is $30,000. The license agreement is a flat one-time fee, not
  1175.     a recurring royalty.
  1176.  
  1177.     SSLRef 3.0 may not be exported. However, the encryption options in
  1178.     SSLRef 3.0 can be limited to make exportable products.
  1179.  
  1180.     SSLRef 3.0 does not include an RSA/BSAFE license for required
  1181.     cryptographic functions. Most users would use BSAFE or RSAREF.
  1182.  
  1183.         For BSAFE information contact RSA at
  1184.             <http://www.rsa.com/>
  1185.  
  1186.         For RSAREF information contact Consensus Development at
  1187.             <http://www.consensus.com/rsaref/>
  1188.  
  1189.  
  1190. ------------------------------
  1191.  
  1192. 7.2) SSL PLUS QUESTIONS
  1193.  
  1194. This sub-section contains information specific to the SSL Plus: SSL
  1195. 3.0 Integration Suite(tm) software toolkit developed by Consensus
  1196. Development Corporation of Berkeley, California
  1197. <http://www.consensus.com/>.
  1198.  
  1199.  
  1200. 7.2.1) What is the relationship between SSLRef and SSL Plus?
  1201.  
  1202.     SSLRef 3.0 was written by Netscape Development Corporation and
  1203.     Consensus Development Corporation. SSL Plus is a derivative of
  1204.     SSLRef 3.0, is fully supported and offers unique value-added
  1205.     features.
  1206.  
  1207.     SSL Plus 1.0 includes support, updates, upgrade to TLS when spec is
  1208.     completed, a VeriSign certificate request tool, a "signer" file
  1209.     format for storing keys and certificates, is qualified for
  1210.     additional platforms, and system integration services are available.
  1211.  
  1212.     SSLRef 3.0 offers 5 ciphersuites:
  1213.  
  1214.       * Unprotected
  1215.         (SSL_NULL_WITH_NULL_NULL)
  1216.  
  1217.       * RSA authenticated, unencrypted, with MD5
  1218.         (SSL_RSA_WITH_NULL_MD5)
  1219.  
  1220.       * RSA authenticated with exportable RC4 encryption, and MD5
  1221.         (SSL_RSA_EXPORT_WITH_RC4_40_MD5)
  1222.  
  1223.       * RSA authenticated with DES encryption, and SHA
  1224.         (SSL_RSA_WITH_DES_CBC_SHA)
  1225.  
  1226.       * Diffie-Hellman anonymous key exchange with DES encryption,
  1227.         and SHA
  1228.         (SSL_DH_anon_WITH_DES_CBC_SHA)
  1229.  
  1230.     SSL Plus 1.0 adds support for an additional 6 ciphersuites (with
  1231.     more planned for the future):
  1232.  
  1233.       * RSA authenticated, unencrypted, with SHA
  1234.         (SSL_RSA_WITH_NULL_SHA)
  1235.  
  1236.       * RSA authenticated with non-exportable RC4 encryption, with
  1237.         MD5 or SHA
  1238.         (SSL_RSA_WITH_RC4_128_MD5 & SSL_RSA_WITH_RC4_128_SHA)
  1239.  
  1240.       * RSA authenticated with Triple-DES encryption, with SHA
  1241.         (SSL_RSA_WITH_3DES_EDE_CBC_SHA)
  1242.  
  1243.       * Diffie-Hellman anonymous key exchange with RC4 encryption,
  1244.         with MD5
  1245.         (SSL_DH_anon_WITH_RC4_128_MD5 &
  1246.          SSL_DH_anon_WITH_3DES_EDE_CBC_SHA)
  1247.  
  1248.       * Diffie-Hellman anonymous key exchange with Triple-DES
  1249.         encryption and SHA
  1250.         (SSL_DH_anon_WITH_RC4_128_MD5 &
  1251.          SSL_DH_anon_WITH_3DES_EDE_CBC_SHA)
  1252.  
  1253.     For more information on SSL Plus features see
  1254.         <http://www.consensus.com/SSLPlus/sslplus_stats.html>
  1255.  
  1256.  
  1257. 7.2.2) What is the relationship with SSL Plus and SSLRef 2.0?
  1258.  
  1259.     There is no relationship between SSLRef 2.0 and SSL Plus -- SSL Plus
  1260.     is based on the SSLRef 3.0 which was not based on SSLRef 2.0.
  1261.  
  1262.  
  1263. 7.2.3) How can I license SSL Plus? What does it cost? With what
  1264. restrictions?
  1265.  
  1266.     A non-commercial license of SSL Plus is not available, only
  1267.     commercial licenses. However, evaluation versions are available upon
  1268.     signing a non-disclosure and beta test agreement.
  1269.  
  1270.     The price for SSL Plus is $40,000, and includes a one-year standard
  1271.     support contract. Premium support is available for an additional
  1272.     fee.  The license agreement is a flat one-time fee, not a recurring
  1273.     royalty.
  1274.  
  1275.     SSL Plus toolkit may not be exported. However, products built with
  1276.     SSL Plus may limit the encryption options to exportable algorithms
  1277.     and thus be able to be exported.
  1278.  
  1279.     SSL Plus does not include an RSA/BSAFE license for cryptographic
  1280.     functions required.  Most users would use BSAFE or RSAREF:
  1281.  
  1282.         For BSAFE information contact RSA at
  1283.             <http://www.rsa.com/>
  1284.  
  1285.         For RSAREF information contact Consensus Development at
  1286.             <http://www.consensus.com/rsaref/>
  1287.  
  1288.  
  1289.     Copies of the evaluation NDA and beta agreement, the standard
  1290.     product license agreement, and standard support contract for
  1291.     SSL Plus are located at
  1292.         <http://www.consensus.com/sslplus/sslplus_contracts.html>
  1293.  
  1294.  
  1295. 7.2.4) Is there any relationship between SSL Plus and Winsock 1.1 or
  1296. Winsock 2.0? Which Winsock would you recommend using to test our
  1297. SSL? Does it matter if Winsock 1.1 or 2.0 architecture is used?
  1298.  
  1299.     No -- SSL Plus is designed to be transport independent and work with
  1300.     both socket and stream styles of I/O. SSL Plus includes some
  1301.     examples of using WinSock 1.1 in the Win32 builds of our sample
  1302.     code. However, we recommend that you write your own callback code if
  1303.     you want better handling of your I/O than what our sample routines
  1304.     provide.
  1305.  
  1306.  
  1307. 7.2.5) How does the data flow within the application, WinSock, SSL,
  1308. TCP/IP stack layers?
  1309.  
  1310.     The short answer is that you insert SSL Plus between your I/O and
  1311.     your application code.
  1312.  
  1313.     Basically, you call SSL Plus instead of your read and write. SSL
  1314.     Plus does its stuff and calls your callback code to do the I/O. Data
  1315.     comes through your I/O routines, through SSL Plus, and then finally
  1316.     to your application.  SSL Plus only manages the data flowing through
  1317.     the connection; it does not handle setting up and tearing down the
  1318.     underlying network connection; your application should open the
  1319.     network connection, then hand it off to SSL Plus for SSL handshaking
  1320.     and data transfer. (This step is not shown in the diagram).
  1321.  
  1322.     Normal:
  1323.  
  1324.          -------------
  1325.         | Application |
  1326.          -------------
  1327.              ^
  1328.              | I/O Calls
  1329.              v
  1330.          -------------
  1331.         | WinSock     |
  1332.          -------------
  1333.              ^
  1334.              | TCP Calls
  1335.              v
  1336.          -------------
  1337.         | Internet    |
  1338.          -------------
  1339.  
  1340.  
  1341.     SSL Plus:
  1342.  
  1343.          -------------
  1344.         | Application |
  1345.          -------------
  1346.              ^
  1347.              | SSL I/O Calls
  1348.              v
  1349.          -------------     I/O Callbacks   --------------------
  1350.         | SSL Plus    | <---------------->| Your Callback Code |
  1351.          -------------                     --------------------
  1352.                                                     ^
  1353.                                                     | I/O Calls
  1354.                                                     v
  1355.                                                -------------
  1356.                                               | WinSock     |
  1357.                                                -------------
  1358.                                                     ^
  1359.                                                     | TCP Calls
  1360.                                                     v
  1361.                                                -------------
  1362.                                               | Internet    |
  1363.                                                -------------
  1364.  
  1365.  
  1366. 7.2.6) A part of my impression is that with the WinSock 2.0
  1367. architecture, the application need only chose an appropriate SSL
  1368. enabled service provider. Does SSL Plus support this?
  1369.  
  1370.     As you noted, with WinSock 2.0 there is some discussion of
  1371.     functionality that allows you to create a module that you could add
  1372.     to WinSock 2.0.
  1373.  
  1374.     At this time we do not believe that this functionality is actually
  1375.     shipping (as Microsoft was supporting PCT but is now supporting
  1376.     SSL 3), but we do know that it is part of their plans. See the
  1377.     MS-ISF (Microsoft Internet Security Framework) description at
  1378.         <http://www.microsoft.com/intdev/security/>
  1379.  
  1380.     We can't speak to when or if Microsoft will add it to their system
  1381.     software, or if another third-party offers such a module.
  1382.  
  1383.     Meanwhile, there has been some discussion on what changes might be
  1384.     required under WinSock 2.0 to do SSL located at
  1385.         <http://home.netscape.com/newsref/std/ssl_integration.html>
  1386.  
  1387.     In the future (post version 1.1, see our features page) we may offer
  1388.     either more robust sample callback code for WinSock 1.1 and/or 2, or
  1389.     we may actually write our own WinSock 1.1 substitute or 2.0 module
  1390.     that you call as you would call WinSock and avoid the callbacks
  1391.     all together. Neither would be available before the end of the year.
  1392.  
  1393.  
  1394. 7.2.7) Does SSL Plus support yielding?
  1395.  
  1396.     SSL Plus 1.0 includes support for processor yielding during
  1397.     cryptographic operations. Because developers provide their own I/O
  1398.     routines, they can do yielding during I/O. Our examples do not
  1399.     demonstrate I/O yielding.
  1400.  
  1401.  
  1402. 7.2.8) I don't understand the nomenclatures of constants such as
  1403. "SSL_RSA_EXPORT_WITH_RC4_40_MD5" -- where are they defined?
  1404.  
  1405.     They are found in include/cryptype.h, but are actually defined
  1406.     by the SSL 3.0 spec.
  1407.  
  1408.  
  1409. 7.2.9) Where are these cipher suites defined?
  1410.  
  1411.     In the file ciphers.c there is an array of values and implementation
  1412.     pointers for supported cipher suites.
  1413.  
  1414.  
  1415. 7.2.10) Can I change the order of the values in ciphers.c?
  1416.  
  1417.     Yes. The order affects the preference; in general, the highest one
  1418.     on the client's list which the server supports will be selected.
  1419.  
  1420.  
  1421. 7.2.11) Can this be done programmatically in the API?
  1422.  
  1423.     No, it is configured at compile time. We will be adding runtime
  1424.     support in the near future because it will be needed for future test
  1425.     frameworks.
  1426.  
  1427.  
  1428. 7.2.12) Does SSL Plus support compression?
  1429.  
  1430.     Not at this time. If there is a specific customer requirement, or if
  1431.     a compression cipher suite is defined we expect to support it in the
  1432.     future, but otherwise we have no plans here.
  1433.  
  1434.  
  1435. 7.2.13) In sslrec.c function SSLWriteRecord(), the data buffer is
  1436. copied, encrypted, then enqueued on the SSL write queue. The function
  1437. then returns. What thread services the write queue? How is the
  1438. thread created?
  1439.  
  1440.     The write queue is serviced by the public function called
  1441.     SSLServiceWriteQueue(). It is called in a number of places in
  1442.     ssltrspt.c, including with every call to SSLWrite(). Data to be
  1443.     written is sent to the I/O layer as you exit out of the write
  1444.     function (for example, right near the bottom of SSLWrite).
  1445.  
  1446.     If SSLWrite() returns SSLWouldBlockError, then make a call to
  1447.     SSLServiceWriteQueue() to service the write queue. (You could
  1448.     instead make a call to SSLWrite() with more data to be written, but
  1449.     this is unlikely.)
  1450.  
  1451.     The write queue is not serviced by a separate execution thread. The
  1452.     write queue mechanism was designed to support non-blocking I/O
  1453.     without undue overhead.
  1454.  
  1455.  
  1456. 7.2.14) When I call SSLRead(), according to the docs, on returning,
  1457. the length argument should be replaced with the number of bytes
  1458. actually read. In practice, this doesn't seem to be happening. What
  1459. am I doing wrong?
  1460.  
  1461.     The difficulty is that it's hard for SSL to precisely emulate the
  1462.     behavior of Unix-style socket calls.
  1463.  
  1464.     The problem is that you are using SSL Plus in its blocking mode; if
  1465.     you return SSLWouldBlock from your I/O Read callback, the library
  1466.     will return the data it has along with the SSLWouldBlock error.
  1467.  
  1468.     The best way to solve this is to always know how much data you're
  1469.     waiting for and request exactly that much. I know this doesn't work
  1470.     with a lot of free-form Internet protocols.
  1471.  
  1472.     Alternatively, you would like the call to block until it gets some
  1473.     data, then return it to you, even if it's less than 512 bytes.
  1474.     Ideally, you'd like to do this without busy-looping the CPU waiting
  1475.     for data. The best way to do this using SSL Plus is to write a
  1476.     wrapper for SSLRead() which does the following:
  1477.  
  1478.         * Make a blocking select() call until there is some data
  1479.           available on the TCP/IP connection over which you're speaking
  1480.           SSL. This will cause you to block in a friendly way until data
  1481.           arrives.
  1482.  
  1483.         * Call SSLRead(). If zero bytes are returned from the read,
  1484.           loop and do the select() again. Otherwise, return whatever
  1485.           came back.
  1486.  
  1487.         * Make your Read() callback non-blocking. The easiest thing to
  1488.           do is to check how much data is available on the incoming
  1489.           connection and return SSLWouldBlockErr if you can't completely
  1490.           fulfill the request. (You can optionally read what data there
  1491.           is and return it first; this won't affect functionality).
  1492.  
  1493.     This will result in the following behavior:
  1494.  
  1495.     1. Your program will block gracefully in the select() call until
  1496.        something arrives on the connection.
  1497.  
  1498.     2. You will then ask SSL Plus to read some data.
  1499.  
  1500.     3. SSL Plus will ask the Read() callback to read the header of the
  1501.        next record (3 or 5 bytes).
  1502.  
  1503.     4. The Read() callback will fulfill that, if possible
  1504.  
  1505.     5. SSL Plus will ask to read the body of the record (whose length
  1506.        will be equal to how much data was sent by the other side, plus
  1507.        MAC and encryption padding).
  1508.  
  1509.     6. The Read() callback will fulfill that, if possible.
  1510.  
  1511.     7. If the amount of data received is greater than or equal to how
  1512.        much was requested in 2., the data will be returned
  1513.  
  1514.     8. Otherwise, go back to 3.
  1515.  
  1516.     What will happen in practice looks something like this: because the
  1517.     SSL peer on the other end of the connection generates record layer
  1518.     records monolithically, and they're relatively small, the header and
  1519.     content of a record will arrive at your machine all together. Thus,
  1520.     when your select() call returns, you will be able to successfully
  1521.     read a header and body without blocking. When SSL Plus goes to read
  1522.     another one, your Read() callback will see that there's no data
  1523.     available on the connection (assuming another record hasn't arrived)
  1524.     and return SSLWouldBlockErr. SSL Plus will then return the data it
  1525.     has received and the error SSLWouldBlockErr; you can return that
  1526.     data as a partial completion of the desired read.
  1527.  
  1528.     If a partial record arrives, your select() will wake up, but SSL
  1529.     Plus won't be able to decrypt and check a complete record before the
  1530.     Read() callback returns SSLWouldBlockErr; thus, your read will
  1531.     return with zero bytes returned. Since this isn't the behavior your
  1532.     client expects, you should select() again until more data arrives,
  1533.     hopefully completing the record.
  1534.  
  1535.     Long term (SSL Plus 1.1 time frame) we'd like to develop a more
  1536.     elegant solution and API to this type of problem. We welcome
  1537.     suggestions.
  1538.  
  1539.  
  1540. 7.2.15) If session cache is stored in a database, can multiple Unix
  1541. processes share the same session data?
  1542.  
  1543.     There is no information stored in the session database which can't
  1544.     be passed between processes. Specifically, there is no pointer
  1545.     indirection. Of course, you'll have to figure out how to pass
  1546.     session database records (and their changes or deletions) between
  1547.     processes; that is not part of SSL Plus.
  1548.  
  1549.  
  1550. ------------------------------
  1551.  
  1552. 7.3) SSLEAY QUESTIONS
  1553.  
  1554. This sub-section contains information specific to the SSLeay
  1555. toolkit developed by Eric Young <eay@mincom.com>
  1556.  
  1557.  
  1558. 7.3.1) Where is the SSLeay FAQ?
  1559.  
  1560.     There is a very complete SSLeay FAQ at:
  1561.         <http://www.psy.uq.oz.au/~ftp/Crypto/>
  1562.  
  1563.  
  1564. ------------------------------------------------------------------------
  1565. ..Christopher Allen                  Consensus Development Corporation..
  1566. ..<ChristopherA@consensus.com>                 1563 Solano Avenue #355..
  1567. ..                                             Berkeley, CA 94707-2116..
  1568. ..Home of "SSL Plus:                      o510/559-1500  f510/559-1505..
  1569. ..  SSL 3.0 Integration Suite(tm)" <http://www.consensus.com/SSLPlus/>..
  1570.  
  1571.  
  1572.