source: draft-ietf-httpbis-security-properties/05/draft-ietf-httpbis-security-properties-05.html @ 1852

Last change on this file since 1852 was 790, checked in by julian.reschke@…, 13 years ago

snapshot draft-ietf-httpbis-security-properties-05

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/html;charset=utf-8
File size: 43.4 KB
1<!DOCTYPE html
2  PUBLIC "-//W3C//DTD HTML 4.01//EN">
3<html lang="en">
4   <head profile="">
5      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6      <title>Security Requirements for HTTP</title><style type="text/css" title="Xml2Rfc (sans serif)">
7a {
8  text-decoration: none;
10a.smpl {
11  color: black;
13a:hover {
14  text-decoration: underline;
16a:active {
17  text-decoration: underline;
19address {
20  margin-top: 1em;
21  margin-left: 2em;
22  font-style: normal;
24body {
25  color: black;
26  font-family: verdana, helvetica, arial, sans-serif;
27  font-size: 10pt;
29cite {
30  font-style: normal;
32dd {
33  margin-right: 2em;
35dl {
36  margin-left: 2em;
39ul.empty {
40  list-style-type: none;
42ul.empty li {
43  margin-top: .5em;
45dl p {
46  margin-left: 0em;
48dt {
49  margin-top: .5em;
51h1 {
52  font-size: 14pt;
53  line-height: 21pt;
54  page-break-after: avoid;
55} {
57  page-break-before: always;
59h1 a {
60  color: #333333;
62h2 {
63  font-size: 12pt;
64  line-height: 15pt;
65  page-break-after: avoid;
67h3, h4, h5, h6 {
68  font-size: 10pt;
69  page-break-after: avoid;
71h2 a, h3 a, h4 a, h5 a, h6 a {
72  color: black;
74img {
75  margin-left: 3em;
77li {
78  margin-left: 2em;
79  margin-right: 2em;
81ol {
82  margin-left: 2em;
83  margin-right: 2em;
85ol p {
86  margin-left: 0em;
88p {
89  margin-left: 2em;
90  margin-right: 2em;
92pre {
93  margin-left: 3em;
94  background-color: lightyellow;
95  padding: .25em;
97pre.text2 {
98  border-style: dotted;
99  border-width: 1px;
100  background-color: #f0f0f0;
101  width: 69em;
103pre.inline {
104  background-color: white;
105  padding: 0em;
107pre.text {
108  border-style: dotted;
109  border-width: 1px;
110  background-color: #f8f8f8;
111  width: 69em;
113pre.drawing {
114  border-style: solid;
115  border-width: 1px;
116  background-color: #f8f8f8;
117  padding: 2em;
119table {
120  margin-left: 2em;
122table.header {
123  border-spacing: 1px;
124  width: 95%;
125  font-size: 10pt;
126  color: white;
127} {
129  vertical-align: top;
131td.topnowrap {
132  vertical-align: top;
133  white-space: nowrap;
135table.header td {
136  background-color: gray;
137  width: 50%;
139td.reference {
140  vertical-align: top;
141  white-space: nowrap;
142  padding-right: 1em;
144thead {
145  display:table-header-group;
147ul.toc {
148  list-style: none;
149  margin-left: 1.5em;
150  margin-right: 0em;
151  padding-left: 0em;
153li.tocline0 {
154  line-height: 150%;
155  font-weight: bold;
156  font-size: 10pt;
157  margin-left: 0em;
158  margin-right: 0em;
160li.tocline1 {
161  line-height: normal;
162  font-weight: normal;
163  font-size: 9pt;
164  margin-left: 0em;
165  margin-right: 0em;
167li.tocline2 {
168  font-size: 0pt;
170ul p {
171  margin-left: 0em;
174.comment {
175  background-color: yellow;
176} {
178  text-align: center;
180.error {
181  color: red;
182  font-style: italic;
183  font-weight: bold;
185.figure {
186  font-weight: bold;
187  text-align: center;
188  font-size: 9pt;
190.filename {
191  color: #333333;
192  font-weight: bold;
193  font-size: 12pt;
194  line-height: 21pt;
195  text-align: center;
197.fn {
198  font-weight: bold;
200.hidden {
201  display: none;
203.left {
204  text-align: left;
206.right {
207  text-align: right;
209.title {
210  color: #990000;
211  font-size: 18pt;
212  line-height: 18pt;
213  font-weight: bold;
214  text-align: center;
215  margin-top: 36pt;
217.vcardline {
218  display: block;
220.warning {
221  font-size: 14pt;
222  background-color: yellow;
226@media print {
227  .noprint {
228    display: none;
229  }
231  a {
232    color: black;
233    text-decoration: none;
234  }
236  table.header {
237    width: 90%;
238  }
240  td.header {
241    width: 50%;
242    color: black;
243    background-color: white;
244    vertical-align: top;
245    font-size: 12pt;
246  }
248  ul.toc a::after {
249    content: leader('.') target-counter(attr(href), page);
250  }
252  a.iref {
253    content: target-counter(attr(href), page);
254  }
256  .print2col {
257    column-count: 2;
258    -moz-column-count: 2;
259    column-fill: auto;
260  }
263@page {
264  @top-left {
265       content: "Internet-Draft";
266  }
267  @top-right {
268       content: "March 2010";
269  }
270  @top-center {
271       content: "Security Requirements for HTTP";
272  }
273  @bottom-left {
274       content: "Hodges & Leiba";
275  }
276  @bottom-center {
277       content: "Informational";
278  }
279  @bottom-right {
280       content: "[Page " counter(page) "]";
281  }
284@page:first {
285    @top-left {
286      content: normal;
287    }
288    @top-right {
289      content: normal;
290    }
291    @top-center {
292      content: normal;
293    }
295</style><link rel="Author" href="#rfc.authors">
296      <link rel="Copyright" href="#rfc.copyrightnotice">
297      <link rel="Chapter" title="1 Introduction" href="#rfc.section.1">
298      <link rel="Chapter" title="2 Existing HTTP Security Mechanisms" href="#rfc.section.2">
299      <link rel="Chapter" title="3 Revisions To HTTP" href="#rfc.section.3">
300      <link rel="Chapter" title="4 IANA Considerations" href="#rfc.section.4">
301      <link rel="Chapter" title="5 Security Considerations" href="#rfc.section.5">
302      <link rel="Chapter" href="#rfc.section.6" title="6 References">
303      <link rel="Appendix" title="A Acknowledgements" href="#rfc.section.A">
304      <link rel="Appendix" title="B Document History" href="#rfc.section.B">
305      <meta name="generator" content=", Revision 1.510, 2010-02-20 17:14:25, XSLT vendor: SAXON 8.9 from Saxonica">
306      <link rel="schema.dct" href="">
307      <meta name="dct.creator" content="Hodges, J.">
308      <meta name="dct.creator" content="Leiba, B.">
309      <meta name="dct.identifier" content="urn:ietf:id:draft-ietf-httpbis-security-properties-05">
310      <meta name="dct.issued" scheme="ISO8601" content="2010-03-11">
311      <meta name="dct.abstract" content="Recent IESG practice dictates that IETF protocols must specify mandatory-to-implement (MTI) security mechanisms, so that all conformant implementations share a common baseline. This document examines all widely deployed HTTP security technologies, and analyzes the trade-offs of each.">
312      <meta name="description" content="Recent IESG practice dictates that IETF protocols must specify mandatory-to-implement (MTI) security mechanisms, so that all conformant implementations share a common baseline. This document examines all widely deployed HTTP security technologies, and analyzes the trade-offs of each.">
313   </head>
314   <body>
315      <table class="header">
316         <tbody>
317            <tr>
318               <td class="left">Network Working Group</td>
319               <td class="right">J. Hodges</td>
320            </tr>
321            <tr>
322               <td class="left">Internet-Draft</td>
323               <td class="right">PayPal</td>
324            </tr>
325            <tr>
326               <td class="left">Intended status: Informational</td>
327               <td class="right">B. Leiba</td>
328            </tr>
329            <tr>
330               <td class="left">Expires: September 12, 2010</td>
331               <td class="right">Huawei Technologies</td>
332            </tr>
333            <tr>
334               <td class="left"></td>
335               <td class="right">March 11, 2010</td>
336            </tr>
337         </tbody>
338      </table>
339      <p class="title">Security Requirements for HTTP<br><span class="filename">draft-ietf-httpbis-security-properties-05</span></p>
340      <h1 id="rfc.abstract"><a href="#rfc.abstract">Abstract</a></h1>
341      <p>Recent IESG practice dictates that IETF protocols must specify mandatory-to-implement (MTI) security mechanisms, so that all
342         conformant implementations share a common baseline. This document examines all widely deployed HTTP security technologies,
343         and analyzes the trade-offs of each.
344      </p>
345      <h1><a id="rfc.status" href="#rfc.status">Status of this Memo</a></h1>
346      <p>This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79.</p>
347      <p>Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note
348         that other groups may also distribute working documents as Internet-Drafts.
349      </p>
350      <p>Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other
351         documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work
352         in progress”.
353      </p>
354      <p>The list of current Internet-Drafts can be accessed at <a href=""></a>.
355      </p>
356      <p>The list of Internet-Draft Shadow Directories can be accessed at <a href=""></a>.
357      </p>
358      <p>This Internet-Draft will expire in September 12, 2010.</p>
359      <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1>
360      <p>Copyright © 2010 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
361      <p>This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (<a href=""></a>) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights
362         and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License
363         text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the BSD License.
364      </p>
365      <p>This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November
366         10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to
367         allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s)
368         controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative
369         works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate
370         it into languages other than English.
371      </p>
372      <hr class="noprint">
373      <h1 id="rfc.section.1" class="np"><a href="#rfc.section.1">1.</a>&nbsp;Introduction
374      </h1>
375      <p id="rfc.section.1.p.1">Recent IESG practice dictates that IETF protocols be required to specify mandatory-to-implement (MTI) security mechanisms.
376         "The IETF Standards Process" <a href="#RFC2026"><cite title="The Internet Standards Process -- Revision 3">[RFC2026]</cite></a> does not require that protocols specify mandatory security mechanisms. "Strong Security Requirements for IETF Standard Protocols" <a href="#RFC3365"><cite title="Strong Security Requirements for Internet Engineering Task Force Standard Protocols">[RFC3365]</cite></a> requires that all IETF protocols provide a mechanism for implementers to provide strong security. RFC 3365 does not define
377         the term "strong security".
378      </p>
379      <p id="rfc.section.1.p.2">"Security Mechanisms for the Internet" <a href="#RFC3631"><cite title="Security Mechanisms for the Internet">[RFC3631]</cite></a> is not an IETF procedural RFC, but it is perhaps most relevant. Section 2.2 states:
380      </p>
381      <div id="rfc.figure.u.1"></div> <pre>
382  We have evolved in the IETF the notion of "mandatory to implement"
383  mechanisms.  This philosophy evolves from our primary desire to
384  ensure interoperability between different implementations of a
385  protocol.  If a protocol offers many options for how to perform a
386  particular task, but fails to provide for at least one that all
387  must implement, it may be possible that multiple, non-interoperable
388  implementations may result.  This is the consequence of the
389  selection of non-overlapping mechanisms being deployed in the
390  different implementations.
391                </pre> <p id="rfc.section.1.p.4">This document examines the effects of applying security constraints to Web applications, documents the properties that result
392         from each method, and will make Best Current Practice recommendations for HTTP security in a later document version. At the
393         moment, it is mostly a laundry list of security technologies and tradeoffs.
394      </p>
395      <p id="rfc.section.1.p.5">[[ OVERALL ISSUE: It isn't entirely clear to the present editors what the purpose of this document is. On one hand it could
396         be a compendium of peer-entity authentication mechanisms (as it is presently) and make MTI recommendations thereof, or it
397         could be a place for various security considerations (either coalesced here from the other httpbis specs, or reserved for
398         the more gnarly cross-spec composite ones), or both. This needs to be clarified. ]]
399      </p>
400      <hr class="noprint">
401      <h1 id="rfc.section.2" class="np"><a href="#rfc.section.2">2.</a>&nbsp;Existing HTTP Security Mechanisms
402      </h1>
403      <p id="rfc.section.2.p.1">For HTTP, the IETF generally defines "security mechanisms" as some combination of access authentication and/or a secure transport.</p>
404      <p id="rfc.section.2.p.2">[[ There is a suggestion that this section be split into "browser-like" and "automation-like" subsections. See: </p>
405      <ul class="empty">
406         <li></li>
407         <li></li>
408      </ul>
409      <p> ]]</p>
410      <p id="rfc.section.2.p.3">[[ NTLM (shudder) was brought up in the WG a few times in the discussion of the -00 draft. Should we add a section on it?
411         See..
412      </p>
413      <ul class="empty">
414         <li></li>
415         <li></li>
416      </ul>
417      <p> ]]</p>
418      <h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;Forms And Cookies
419      </h2>
420      <p id="rfc.section.2.1.p.1">[[ JH: I am not convinced that this subsection properly belongs in this overall section in that "HTTP+HTML Form based authentication"
421         &lt;; is not properly a part of HTTP itself. Rather, it is
422         a piece of applications layered on top of HTTP. Use of cookies for state management (e.g. session maintanence) can be considered
423         such, however (although there is no overall specification for HTTP user agents stipulating that they must implement cookies
424         (nominally <a href="#RFC2109"><cite title="HTTP State Management Mechanism">[RFC2109]</cite></a>)). Perhaps this section should be should be retitled "HTTP Authentication".
425      </p>
426      <p id="rfc.section.2.1.p.2">Note: The httpstate WG was recently chartered to develop a successor to <a href="#RFC2109"><cite title="HTTP State Management Mechanism">[RFC2109]</cite></a>. See..
427      </p>
428      <ul class="empty">
429         <li></li>
430      </ul>
431      <p id="rfc.section.2.1.p.3">]]</p>
432      <p id="rfc.section.2.1.p.4">Almost all HTTP authentication that involves a human using a web browser is accomplished through HTML forms, with session
433         identifiers stored in cookies. For cookies, most implementations rely on the "Netscape specification", which is described
434         loosely in section 10 of "HTTP State Management Mechanism" <a href="#RFC2109"><cite title="HTTP State Management Mechanism">[RFC2109]</cite></a>. The protocol in RFC 2109 is relatively widely implemented, but most clients don't advertise support for it. RFC 2109 was
435         later updated <a href="#RFC2965"><cite title="HTTP State Management Mechanism">[RFC2965]</cite></a>, but the newer version is not widely implemented.
436      </p>
437      <p id="rfc.section.2.1.p.5">Forms and cookies have many properties that make them an excellent solution for some implementers. However, many of those
438         properties introduce serious security trade-offs.
439      </p>
440      <p id="rfc.section.2.1.p.6">HTML forms provide a large degree of control over presentation, which is an imperative for many websites. However, this increases
441         user reliance on the appearance of the interface. Many users do not understand the construction of URIs <a href="#RFC3986"><cite title="Uniform Resource Identifier (URI): Generic Syntax">[RFC3986]</cite></a>, or their presentation in common clients <a href="#PhishingHOWTO"><cite title="Phishing Tips and Techniques">[PhishingHOWTO]</cite></a>. As a result, forms are extremely vulnerable to spoofing.
442      </p>
443      <p id="rfc.section.2.1.p.7">HTML forms provide acceptable internationalization if used carefully, at the cost of being transmitted as normal HTTP content
444         in all cases (credentials are not differentiated in the protocol).
445      </p>
446      <p id="rfc.section.2.1.p.8">Many Web browsers have an auto-complete feature that stores a user's information and pre-populates fields in forms. This is
447         considered to be a convenience mechanism, and convenience mechanisms often have negative security properties. The security
448         concerns with auto-completion are particularly poignant for web browsers that reside on computers with multiple users. HTML
449         forms provide a facility for sites to indicate that a field, such as a password, should never be pre-populated. However, it
450         is clear that some form creators do not use this facility when they should.
451      </p>
452      <p id="rfc.section.2.1.p.9">The cookies that result from a successful form submission make it unnecessary to validate credentials with each HTTP request;
453         this makes cookies an excellent property for scalability. Cookies are susceptible to a large variety of XSS (cross-site scripting)
454         attacks, and measures to prevent such attacks will never be as stringent as necessary for authentication credentials because
455         cookies are used for many purposes. Cookies are also susceptible to a wide variety of attacks from malicious intermediaries
456         and observers. The possible attacks depend on the contents of the cookie data. There is no standard format for most of the
457         data.
458      </p>
459      <p id="rfc.section.2.1.p.10">HTML forms and cookies provide flexible ways of ending a session from the client.</p>
460      <p id="rfc.section.2.1.p.11">HTML forms require an HTML rendering engine for which many protocols have no use.</p>
461      <h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a>&nbsp;HTTP Access Authentication
462      </h2>
463      <p id="rfc.section.2.2.p.1">HTTP 1.1 provides a simple authentication framework, "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>, which defines two optional mechanisms. Both of these mechanisms are extremely rarely used in comparison to forms and cookies,
464         but some degree of support for one or both is available in many implementations. Neither scheme provides presentation control,
465         logout capabilities, or interoperable internationalization.
466      </p>
467      <h3 id="rfc.section.2.2.1"><a href="#rfc.section.2.2.1">2.2.1</a>&nbsp;Basic Authentication
468      </h3>
469      <p id="rfc.section.2.2.1.p.1">Basic Authentication (normally called just "Basic") transmits usernames and passwords in the clear. It is very easy to implement,
470         but not at all secure unless used over a secure transport.
471      </p>
472      <p id="rfc.section.2.2.1.p.2">Basic has very poor scalability properties because credentials must be revalidated with every request, and because secure
473         transports negate many of HTTP's caching mechanisms. Some implementations use cookies in combination with Basic credentials,
474         but there is no standard method of doing so.
475      </p>
476      <p id="rfc.section.2.2.1.p.3">Since Basic credentials are clear text, they are reusable by any party. This makes them compatible with any authentication
477         database, at the cost of making the user vulnerable to mismanaged or malicious servers, even over a secure channel.
478      </p>
479      <p id="rfc.section.2.2.1.p.4">Basic is not interoperable when used with credentials that contain characters outside of the ISO 8859-1 repertoire.</p>
480      <h3 id="rfc.section.2.2.2"><a href="#rfc.section.2.2.2">2.2.2</a>&nbsp;Digest Authentication
481      </h3>
482      <p id="rfc.section.2.2.2.p.1">In Digest Authentication, the client transmits the results of hashing user credentials with properties of the request and
483         values from the server challenge. Digest is susceptible to man-in-the-middle attacks when not used over a secure transport.
484      </p>
485      <p id="rfc.section.2.2.2.p.2">Digest has some properties that are preferable to Basic and Cookies. Credentials are not immediately reusable by parties that
486         observe or receive them, and session data can be transmitted alongside credentials with each request, allowing servers to
487         validate credentials only when absolutely necessary. Authentication data session keys are distinct from other protocol traffic.
488      </p>
489      <p id="rfc.section.2.2.2.p.3">Digest includes many modes of operation, but only the simplest modes enjoy any degree of interoperability. For example, most
490         implementations do not implement the mode that provides full message integrity. Perhaps one reason is that implementation
491         experience has shown that in some cases, especially those involving large requests or responses such as streams, the message
492         integrity mode is impractical because it requires servers to analyze the full request before determining whether the client
493         knows the shared secret or whether message-body integrity has been violated and hence whether the request can be processed.
494      </p>
495      <p id="rfc.section.2.2.2.p.4">Digest is extremely susceptible to offline dictionary attacks, making it practical for attackers to perform a namespace walk
496         consisting of a few million passwords for most users.
497      </p>
498      <p id="rfc.section.2.2.2.p.5">Many of the most widely-deployed HTTP/1.1 clients are not compliant when GET requests include a query string <a href="#Apache_Digest"><cite title="Apache HTTP Server - mod_auth_digest">[Apache_Digest]</cite></a>.
499      </p>
500      <p id="rfc.section.2.2.2.p.6">Digest either requires that authentication databases be expressly designed to accommodate it, or requires access to cleartext
501         passwords. As a result, many authentication databases that chose to do the former are incompatible, including the most common
502         method of storing passwords for use with Forms and Cookies.
503      </p>
504      <p id="rfc.section.2.2.2.p.7">Many Digest capabilities included to prevent replay attacks expose the server to Denial of Service attacks.</p>
505      <p id="rfc.section.2.2.2.p.8">Digest is not interoperable when used with credentials that contain characters outside of the ISO 8859-1 repertoire.</p>
506      <h3 id="rfc.section.2.2.3"><a href="#rfc.section.2.2.3">2.2.3</a>&nbsp;Authentication Using Certificates in TLS
507      </h3>
508      <p id="rfc.section.2.2.3.p.1">Running HTTP over TLS provides authentication of the HTTP server to the client. HTTP over TLS can also provides authentication
509         of the client to the server using certificates. Although forms are a much more common way to authenticate users to HTTP servers,
510         TLS client certificates are widely used in some environments. The public key infrastructure (PKI) used to validate certificates
511         in TLS can be rooted in public trust anchors or can be based on local trust anchors.
512      </p>
513      <h3 id="rfc.section.2.2.4"><a href="#rfc.section.2.2.4">2.2.4</a>&nbsp;Other Access Authentication Schemes
514      </h3>
515      <p id="rfc.section.2.2.4.p.1">There are many niche schemes that make use of the HTTP Authentication framework, but very few are well documented. Some are
516         bound to transport layer connections.
517      </p>
518      <h4 id="rfc.section."><a href="#rfc.section."></a>&nbsp;Negotiate (GSS-API) Authentication
519      </h4>
520      <p id="rfc.section.">Microsoft has designed an HTTP authentication mechanism that utilizes SPNEGO <a href="#RFC4178"><cite title="The Simple and Protected Generic Security Service Application Program Interface (GSS-API) Negotiation Mechanism">[RFC4178]</cite></a> GSSAPI <a href="#RFC4559"><cite title="SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows">[RFC4559]</cite></a>. In Microsoft's implementation, SPNEGO allows selection between Kerberos and NTLM (Microsoft NT Lan Manager protocols).
521      </p>
522      <p id="rfc.section.">In Kerberos, clients and servers rely on a trusted third-party authentication service which maintains its own authentication
523         database. Kerberos is typically used with shared secret key cryptography, but extensions for use of other authentication mechnanisms
524         such as PKIX certificates and two-factor tokens are also common. Kerberos was designed to work under the assumption that packets
525         traveling along the network can be read, modified, and inserted at will.
526      </p>
527      <p id="rfc.section.">Unlike Digest, Negotiate authentication can take multiple round trips (client sending authentication data in Authorization,
528         server sending authentication data in WWW-Authenticate) to complete.
529      </p>
530      <p id="rfc.section.">Kerberos authentication is generally more secure than Digest. However the requirement for having a separate network authentication
531         service might be a barrier to deployment.
532      </p>
533      <h4 id="rfc.section."><a href="#rfc.section."></a>&nbsp;OAuth
534      </h4>
535      <p id="rfc.section.">[[ See.. </p>
536      <ul class="empty">
537         <li></li>
538         <li></li>
539      </ul>
540      <p> ]]</p>
541      <h2 id="rfc.section.2.3"><a href="#rfc.section.2.3">2.3</a>&nbsp;Centrally-Issued Tickets
542      </h2>
543      <p id="rfc.section.2.3.p.1">Many large Internet services rely on authentication schemes that center on clients consulting a single service for a time-limited
544         ticket that is validated with undocumented heuristics. Centralized ticket issuing has the advantage that users may employ
545         one set of credentials for many services, and clients don't send credentials to many servers. This approach is often no more
546         than a sophisticated application of forms and cookies.
547      </p>
548      <p id="rfc.section.2.3.p.2">All of the schemes in wide use are proprietary and non-standard, and usually are undocumented. There are many standardization
549         efforts in progress, as usual.
550      </p>
551      <h2 id="rfc.section.2.4"><a href="#rfc.section.2.4">2.4</a>&nbsp;Web Services
552      </h2>
553      <p id="rfc.section.2.4.p.1">Many security properties mentioned in this document have been recast in XML-based protocols, using HTTP as a substitute for
554         TCP. Like the amalgam of HTTP technologies mentioned above, the XML-based protocols are defined by an ever-changing combination
555         of standard and vendor-produced specifications, some of which may be obsoleted at any time <a href="#WS-Pagecount"><cite title="WS-Pagecount">[WS-Pagecount]</cite></a> without any documented change control procedures. These protocols usually don't have much in common with the Architecture
556         of the World Wide Web. It's not clear why the term "Web" is used to group them, but they are obviously out of scope for HTTP-based
557         application protocols.
558      </p>
559      <p id="rfc.section.2.4.p.2">[[ This section could really use a good definition of "Web Services" to differentiate it from REST. See.. </p>
560      <ul class="empty">
561         <li></li>
562      </ul>
563      <p> ]]</p>
564      <h2 id="rfc.section.2.5"><a href="#rfc.section.2.5">2.5</a>&nbsp;Transport Layer Security
565      </h2>
566      <p id="rfc.section.2.5.p.1">In addition to using TLS for client and/or server authentication, it is also very commonly used to protect the confidentiality
567         and integrity of the HTTP session. For instance, both HTTP Basic authentication and Cookies are often protected against snooping
568         by TLS.
569      </p>
570      <p id="rfc.section.2.5.p.2">It should be noted that, in that case, TLS does not protect against a breach of the credential store at the server or against
571         a keylogger or phishing interface at the client. TLS does not change the fact that Basic Authentication passwords are reusable
572         and does not address that weakness.
573      </p>
574      <hr class="noprint">
575      <h1 id="rfc.section.3" class="np"><a href="#rfc.section.3">3.</a>&nbsp;Revisions To HTTP
576      </h1>
577      <p id="rfc.section.3.p.1">Is is possible that HTTP will be revised in the future. "HTTP/1.1" <a href="#RFC2616"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a> and "Use and Interpretation of HTTP Version Numbers" <a href="#RFC2145"><cite title="Use and Interpretation of HTTP Version Numbers">[RFC2145]</cite></a> define conformance requirements in relation to version numbers. In HTTP 1.1, all authentication mechanisms are optional, and
578         no single transport substrate is specified. Any HTTP revision that adds a mandatory security mechanism or transport substrate
579         will have to increment the HTTP version number appropriately. All widely used schemes are non-standard and/or proprietary.
580      </p>
581      <hr class="noprint">
582      <h1 id="rfc.section.4" class="np"><a href="#rfc.section.4">4.</a>&nbsp;IANA Considerations
583      </h1>
584      <p id="rfc.section.4.p.1">This document has no actions for IANA.</p>
585      <hr class="noprint">
586      <h1 id="rfc.section.5" class="np"><a href="#rfc.section.5">5.</a>&nbsp;Security Considerations
587      </h1>
588      <p id="rfc.section.5.p.1">This entire document is about security considerations.</p>
589      <hr class="noprint">
590      <h1 id="rfc.references" class="np"><a id="rfc.section.6" href="#rfc.section.6">6.</a> References
591      </h1>
592      <h2 class="np" id="rfc.references.1"><a href="#rfc.section.6.1" id="rfc.section.6.1">6.1</a> Normative References
593      </h2>
594      <table>
595         <tr>
596            <td class="reference"><b id="RFC2026">[RFC2026]</b></td>
597            <td class="top"><a href="" title="Harvard University">Bradner, S.</a>, “<a href="">The Internet Standards Process -- Revision 3</a>”, BCP&nbsp;9, RFC&nbsp;2026, October&nbsp;1996.
598            </td>
599         </tr> 
600         <tr>
601            <td class="reference"><b id="RFC2145">[RFC2145]</b></td>
602            <td class="top"><a href="" title="Western Research Laboratory">Mogul, J.C.</a>, <a href="" title="Department of Information and Computer Science">Fielding, R.T.</a>, <a href="" title="MIT Laboratory for Computer Science">Gettys, J.</a>, and <a href="" title="W3 Consortium">H.F. Nielsen</a>, “<a href="">Use and Interpretation of HTTP Version Numbers</a>”, RFC&nbsp;2145, May&nbsp;1997.
603            </td>
604         </tr> 
605         <tr>
606            <td class="reference"><b id="RFC2616">[RFC2616]</b></td>
607            <td class="top"><a href="" title="Department of Information and Computer Science">Fielding, R.</a>, <a href="" title="World Wide Web Consortium">Gettys, J.</a>, <a href="" title="Compaq Computer Corporation">Mogul, J.</a>, <a href="" title="World Wide Web Consortium">Frystyk, H.</a>, <a href="" title="Xerox Corporation">Masinter, L.</a>, <a href="" title="Microsoft Corporation">Leach, P.</a>, and <a href="" title="World Wide Web Consortium">T. Berners-Lee</a>, “<a href="">Hypertext Transfer Protocol -- HTTP/1.1</a>”, RFC&nbsp;2616, June&nbsp;1999.
608            </td>
609         </tr> 
610         <tr>
611            <td class="reference"><b id="RFC2617">[RFC2617]</b></td>
612            <td class="top"><a href="" title="Northwestern University, Department of Mathematics">Franks, J.</a>, <a href="" title="Verisign Inc.">Hallam-Baker, P.M.</a>, <a href="" title="AbiSource, Inc.">Hostetler, J.L.</a>, <a href="" title="Agranat Systems, Inc.">Lawrence, S.D.</a>, <a href="" title="Microsoft Corporation">Leach, P.J.</a>, Luotonen, A., and <a href="" title="Open Market, Inc.">L. Stewart</a>, “<a href="">HTTP Authentication: Basic and Digest Access Authentication</a>”, RFC&nbsp;2617, June&nbsp;1999.
613            </td>
614         </tr> 
615         <tr>
616            <td class="reference"><b id="RFC2965">[RFC2965]</b></td>
617            <td class="top"><a href="" title="Bell Laboratories, Lucent Technologies">Kristol, D. M.</a> and <a href="" title=", Inc.">L. Montulli</a>, “<a href="">HTTP State Management Mechanism</a>”, RFC&nbsp;2965, October&nbsp;2000.
618            </td>
619         </tr> 
620         <tr>
621            <td class="reference"><b id="RFC3365">[RFC3365]</b></td>
622            <td class="top">Schiller, J., “<a href="">Strong Security Requirements for Internet Engineering Task Force Standard Protocols</a>”, BCP&nbsp;61, RFC&nbsp;3365, August&nbsp;2002.
623            </td>
624         </tr> 
625         <tr>
626            <td class="reference"><b id="RFC3631">[RFC3631]</b></td>
627            <td class="top">Bellovin, S., Schiller, J., and C. Kaufman, “<a href="">Security Mechanisms for the Internet</a>”, RFC&nbsp;3631, December&nbsp;2003.
628            </td>
629         </tr> 
630         <tr>
631            <td class="reference"><b id="RFC3986">[RFC3986]</b></td>
632            <td class="top"><a href="" title="World Wide Web Consortium">Berners-Lee, T.</a>, <a href="" title="Day Software">Fielding, R.</a>, and <a href="" title="Adobe Systems Incorporated">L. Masinter</a>, “<a href="">Uniform Resource Identifier (URI): Generic Syntax</a>”, STD&nbsp;66, RFC&nbsp;3986, January&nbsp;2005.
633            </td>
634         </tr> 
635         <tr>
636            <td class="reference"><b id="RFC4178">[RFC4178]</b></td>
637            <td class="top">Zhu, L., Leach, P., Jaganathan, K., and W. Ingersoll, “<a href="">The Simple and Protected Generic Security Service Application Program Interface (GSS-API) Negotiation Mechanism</a>”, RFC&nbsp;4178, October&nbsp;2005.
638            </td>
639         </tr> 
640         <tr>
641            <td class="reference"><b id="RFC4559">[RFC4559]</b></td>
642            <td class="top">Jaganathan, K., Zhu, L., and J. Brezak, “<a href="">SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows</a>”, RFC&nbsp;4559, June&nbsp;2006.
643            </td>
644         </tr> 
645         <tr>
646            <td class="reference"><b id="Apache_Digest">[Apache_Digest]</b></td>
647            <td class="top">Apache Software Foundation, , “<a href="">Apache HTTP Server - mod_auth_digest</a>”, &lt;<a href=""></a>&gt;.
648            </td>
649         </tr> 
650         <tr>
651            <td class="reference"><b id="PhishingHOWTO">[PhishingHOWTO]</b></td>
652            <td class="top">Gutmann, P., “<a href="">Phishing Tips and Techniques</a>”, February&nbsp;2008, &lt;<a href=""></a>&gt;.
653            </td>
654         </tr> 
655         <tr>
656            <td class="reference"><b id="WS-Pagecount">[WS-Pagecount]</b></td>
657            <td class="top">Bray, T., “<a href="">WS-Pagecount</a>”, September&nbsp;2004, &lt;<a href=""></a>&gt;.
658            </td>
659         </tr>
660      </table>
661      <h2 id="rfc.references.2"><a href="#rfc.section.6.2" id="rfc.section.6.2">6.2</a> Informative References
662      </h2>
663      <table>
664         <tr>
665            <td class="reference"><b id="RFC2109">[RFC2109]</b></td>
666            <td class="top"><a href="" title="Bell Laboratories, Lucent Technologies">Kristol, D.M.</a> and <a href="" title="Netscape Communications Corp.">L. Montulli</a>, “<a href="">HTTP State Management Mechanism</a>”, RFC&nbsp;2109, February&nbsp;1997.
667            </td>
668         </tr>
669      </table>
670      <hr class="noprint">
671      <div class="avoidbreak">
672         <h1 id="rfc.authors" class="np"><a href="#rfc.authors">Authors' Addresses</a></h1>
673         <address class="vcard"><span class="vcardline"><span class="fn">Jeff Hodges</span><span class="n hidden"><span class="family-name">Hodges</span><span class="given-name">Jeff</span></span></span><span class="org vcardline">PayPal</span><span class="vcardline">EMail: <a href=""><span class="email"></span></a></span></address>
674         <address class="vcard"><span class="vcardline"><span class="fn">Barry Leiba</span><span class="n hidden"><span class="family-name">Leiba</span><span class="given-name">Barry</span></span></span><span class="org vcardline">Huawei Technologies</span><span class="vcardline tel">Phone: <a href="tel:+16468270648"><span class="value">+1 646 827 0648</span></a></span><span class="vcardline">EMail: <a href=""><span class="email"></span></a></span><span class="vcardline">URI: <a href="" class="url"></a></span></address>
675      </div>
676      <hr class="noprint">
677      <h1 id="rfc.section.A" class="np"><a href="#rfc.section.A">A.</a>&nbsp;Acknowledgements
678      </h1>
679      <p id="rfc.section.A.p.1">Much of the material in this document was written by Rob Sayre, who first promoted the topic. Many others on the HTTPbis Working
680         Group have contributed to this document in the discussion.
681      </p>
682      <hr class="noprint">
683      <h1 id="rfc.section.B" class="np"><a href="#rfc.section.B">B.</a>&nbsp;Document History
684      </h1>
685      <p id="rfc.section.B.p.1">[This entire section is to be removed when published as an RFC.]</p>
686      <h2 id="rfc.section.B.1"><a href="#rfc.section.B.1">B.1</a>&nbsp;Changes between draft-sayre-http-security-variance-00 and                 draft-ietf-httpbis-security-properties-00
687      </h2>
688      <p id="rfc.section.B.1.p.1">Changed the authors to Paul Hoffman and Alexey Melnikov, with permission of Rob Sayre.</p>
689      <p id="rfc.section.B.1.p.2">Made lots of minor editorial changes.</p>
690      <p id="rfc.section.B.1.p.3">Removed what was section 2 (Requirements Notation), the reference to RFC 2119, and any use of 2119ish all-caps words.</p>
691      <p id="rfc.section.B.1.p.4">In 3.2.1 and 3.2.2, changed "Latin-1 range" to "ISO 8859-1 repertoire" to match the definition of "TEXT" in RFC 2616.</p>
692      <p id="rfc.section.B.1.p.5">Added minor text to the Security Considerations section.</p>
693      <p id="rfc.section.B.1.p.6">Added URLs to the two non-RFC references.</p>
694      <h2 id="rfc.section.B.2"><a href="#rfc.section.B.2">B.2</a>&nbsp;Changes between -00 and -01
695      </h2>
696      <p id="rfc.section.B.2.p.1">Fixed some editorial nits reported by Iain Calder.</p>
697      <p id="rfc.section.B.2.p.2">Added the suggestions about splitting for browsers and automation, and about adding NTLM, to be beginning of 2.</p>
698      <p id="rfc.section.B.2.p.3">In 2.1, added "that involves a human using a web browser" in the first sentence.</p>
699      <p id="rfc.section.B.2.p.4">In 2.1, changed "session key" to "session identifier".</p>
700      <p id="rfc.section.B.2.p.5">In 2.2.2, changed </p>
701      <div id="rfc.figure.u.2"></div><pre>
702Digest includes many modes of operation, but only the simplest modes
703enjoy any degree of interoperability.  For example, most
704implementations do not implement the mode that provides full message
705integrity.  Additionally, implementation experience has shown that
706the message integrity mode is impractical because it requires servers
707to analyze the full request before determining whether the client
708knows the shared secret.
709</pre><p> to </p>
710      <div id="rfc.figure.u.3"></div><pre>
711Digest includes many modes of operation, but only the simplest
712modes enjoy any degree of interoperability.  For example, most
713implementations do not implement the mode that provides full message
714integrity.  Perhaps one reason is that implementation experience has
715shown that in some cases, especially those involving large requests
716or responses such as streams, the message integrity mode is
717impractical because it requires servers to analyze the full request
718before determining whether the client knows the shared secret or
719whether message-body integrity has been violated and hence whether
720the request can be processed.
721</pre><p id="rfc.section.B.2.p.6">In 2.4, asked for a definition of "Web Services".</p>
722      <p id="rfc.section.B.2.p.7">In A, added the WG.</p>
723      <h2 id="rfc.section.B.3"><a href="#rfc.section.B.3">B.3</a>&nbsp;Changes between -01 and -02
724      </h2>
725      <p id="rfc.section.B.3.p.1">In section 2.1, added more to the paragraph on auto-completion of HTML forms.</p>
726      <p id="rfc.section.B.3.p.2">Added the section on TLS for authentication.</p>
727      <p id="rfc.section.B.3.p.3">Filled in section 2.5.</p>
728      <h2 id="rfc.section.B.4"><a href="#rfc.section.B.4">B.4</a>&nbsp;Changes between -02 and -03
729      </h2>
730      <p id="rfc.section.B.4.p.1">Changed IPR licensing from "full3978" to "pre5378Trust200902".</p>
731      <h2 id="rfc.section.B.5"><a href="#rfc.section.B.5">B.5</a>&nbsp;Changes between -03 and -04
732      </h2>
733      <p id="rfc.section.B.5.p.1">Changed authors to be Jeff Hodges (JH) and Barry Leiba (BL) with permission of Paul Hoffman, Alexey Melnikov, and Mark Nottingham
734         (httpbis chair).
735      </p>
736      <p id="rfc.section.B.5.p.2">Added "OVERALL ISSUE" to introduction.</p>
737      <p id="rfc.section.B.5.p.3">Added links to email messages on mailing list(s) where various suggestions for this document were brought up. I.e. added various
738         links to those comments herein delimited by "[[...]]" braces.
739      </p>
740      <p id="rfc.section.B.5.p.4">Noted JH's belief that "HTTP+HTML Form based authentication" aka "Forms And Cookies" doesn't properly belong in the section
741         where it presently resides. Added link to httpstate WG.
742      </p>
743      <p id="rfc.section.B.5.p.5">Added references to OAuth. Section needs to be filled-in as yet.</p>
744      <p id="rfc.section.B.5.p.6">Moved ref to RFC2109 to new "Informative References" section, and added a placeholder "IANA Considerations" section in order
745         to satisfy IDnits checking.
746      </p>
747      <h2 id="rfc.section.B.6"><a href="#rfc.section.B.6">B.6</a>&nbsp;Changes between -04 and -05
748      </h2>
749      <p id="rfc.section.B.6.p.1">Fixed incorrect &lt;date&gt; year from 2009 to 2010. mea culpa.</p>
750   </body>
Note: See TracBrowser for help on using the repository browser.