Skip to main content

HTTP Strict Transport Security (HSTS)
draft-ietf-websec-strict-transport-sec-06

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 6797.
Authors Jeff Hodges , Collin Jackson , Adam Barth
Last updated 2012-03-12
Replaces draft-hodges-strict-transport-sec
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state WG Document
Document shepherd (None)
IESG IESG state Became RFC 6797 (Proposed Standard)
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD Peter Saint-Andre
Send notices to websec-chairs@tools.ietf.org, draft-ietf-websec-strict-transport-sec@tools.ietf.org
draft-ietf-websec-strict-transport-sec-06
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

   [GoodDhamijaEtAl05]
              Good, N., Dhamija, R., Grossklags, J., Thaw, D.,
              Aronowitz, S., Mulligan, D., and J. Konstan, "Stopping
              Spyware at the Gate: A User Study of Privacy, Notice and
              Spyware", In Proceedings of Symposium On Usable Privacy
              and Security (SOUPS) Pittsburgh, PA, USA, July 2005, <http
              ://people.ischool.berkeley.edu/~rachna/papers/
              spyware_study.pdf>.

   [I-D.ietf-tls-ssl-version3]
              Freier, A., Karlton, P., and P. Kocher, "The SSL Protocol
              Version 3.0", draft-ietf-tls-ssl-version3-00 (work in
              progress), November 1996, <http://tools.ietf.org/html/
              draft-ietf-tls-ssl-version3-00>.

              This is the canonical reference for SSLv3.0.

   [JacksonBarth2008]
              Jackson, C. and A. Barth, "Beware of Finer-Grained
              Origins", Web 2.0 Security and Privacy Oakland, CA, USA,
              2008,
              <http://www.adambarth.com/papers/2008/
              jackson-barth-b.pdf>.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, November 1987.

   [RFC4732]  Handley, M., Rescorla, E., and IAB, "Internet Denial-of-
              Service Considerations", RFC 4732, December 2006.

   [RFC4949]  Shirey, R., "Internet Security Glossary, Version 2",
              RFC 4949, August 2007.

   [RFC6265]  Barth, A., "HTTP State Management Mechanism", RFC 6265,
              April 2011.

   [RFC6454]  Barth, A., "The Web Origin Concept", RFC 6454,
              December 2011.

   [SunshineEgelmanEtAl09]
              Sunshine, J., Egelman, S., Almuhimedi, H., Atri, N., and
              L. Cranor, "Crying Wolf: An Empirical Study of SSL Warning
              Effectiveness", In Proceedings of 18th USENIX Security
              Symposium Montreal, Canada, Augus 2009, <http://
              www.usenix.org/events/sec09/tech/full_papers/
              sunshine.pdf>.

   [W3C.REC-wsc-ui-20100812]

Hodges, et al.         Expires September 13, 2012              [Page 34]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

              Saldhana, A. and T. Roessler, "Web Security Context: User
              Interface Guidelines", World Wide Web Consortium
              Recommendation REC-wsc-ui-20100812, August 2010,
              <http://www.w3.org/TR/2010/REC-wsc-ui-20100812>.

   [WEBSEC]   "WebSec -- HTTP Application Security Minus Authentication
              and Transport",
              <https://www.ietf.org/mailman/listinfo/websec>.

              Mailing list for IETF WebSec Working Group.  [RFCEditor:
              please remove this reference upon publication as an RFC.]

   [WebTracking]
              Schmucker, N., "Web Tracking", SNET2 Seminar Paper Summer
              Term, 2011, <http://www.snet.tu-berlin.de/fileadmin/fg220/
              courses/SS11/snet-project/web-tracking_schmuecker.pdf>.

   [owaspTLSGuide]
              Coates, M., Wichers, d., Boberski, M., and T. Reguly,
              "Transport Layer Protection Cheat Sheet", Accessed: 11-
              Jul-2010, <http://www.owasp.org/index.php/
              Transport_Layer_Protection_Cheat_Sheet>.

Appendix A.  Design Decision Notes

   This appendix documents various design decisions.

   1.  Cookies aren't appropriate for HSTS Policy expression as they are
       potentially mutable (while stored in the UA), therefore an HTTP
       header field is employed.

   2.  We chose to not attempt to specify how "mixed security context
       loads" (aka "mixed content loads") are handled due to UA
       implementation considerations as well as classification
       difficulties.

   3.  A HSTS Host may update UA notions of HSTS Policy via new HSTS
       header field parameter values.  We chose to have UAs honor the
       "freshest" information received from a server because there is
       the chance of a web site sending out an errornous HSTS Policy,
       such as a multi-year max-age value, and/or an incorrect
       includeSubDomains flag.  If the HSTS Host couldn't correct such
       errors over protocol, it would require some form of annunciation
       to users and manual intervention on the users' part, which could
       be a non-trivial problem for both web application providers and
       their users.

Hodges, et al.         Expires September 13, 2012              [Page 35]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

   4.  HSTS Hosts are identified only via domain names -- explicit IP
       address identification of all forms is excluded.  This is for
       simplification and also is in recognition of various issues with
       using direct IP address identification in concert with PKI-based
       security.

Appendix B.  Differences between HSTS Policy and Same-Origin Policy

   HSTS Policy has the following primary characteristics:

      HSTS Policy stipulates requirements for the security
      characteristics of UA-to-host connection establishment, on a per-
      host basis.

      Hosts explicitly declare HSTS Policy to UAs.  Conformant UAs are
      obliged to implement hosts' declared HSTS Policies.

      HSTS Policy is conveyed over protocol from the host to the UA.

      The UA maintains a cache of Known HSTS Hosts.

      UAs apply HSTS Policy whenever making a HTTP connection to a Known
      HSTS Host, regardless of host port number.  I.e., it applies to
      all ports on a Known HSTS Host.  Hosts are unable to affect this
      aspect of HSTS Policy.

      Hosts may optionally declare that their HSTS Policy applies to all
      subdomains of their host domain name.

   In contrast, the Same-Origin Policy (SOP) [RFC6454] has the following
   primary characteristics:

      An origin is the scheme, host, and port of a URI identifying a
      resource.

      A UA may dereference a URI, thus loading a representation of the
      resource the URI identifies.  UAs label resource representations
      with their origins, which are derived from their URIs.

      The SOP refers to a collection of principles, implemented within
      UAs, governing the isolation of and communication between resource
      representations within the UA, as well as resource
      representations' access to network resources.

   In summary, although both HSTS Policy and SOP are enforced by UAs,
   HSTS Policy is optionally declared by hosts and is not origin-based,
   while the SOP applies to all resource representations loaded from all

Hodges, et al.         Expires September 13, 2012              [Page 36]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

   hosts by conformant UAs.

Appendix C.  Acknowledgments

   The authors thank Devdatta Akhawe, Michael Barrett, Tobias Gondrom,
   Paul Hoffman, Alexey Melnikov, Yoav Nir, Laksh Raghavan, Marsh Ray,
   Julian Reschke, Tom Ritter, Peter Saint-Andre, Sid Stamm, Maciej
   Stachowiak, Andy Steingrubl, Brandon Sterne, Martin Thomson, Daniel
   Veditz, as well as all the websec working group participants and
   others for their review and contributions.

   Thanks to Julian Reschke for his elegant re-writing of the effective
   request URI text, which he did when incorporating the ERU notion into
   the HTTPbis work.  Subsequently, the ERU text in this spec was lifted
   from Julian's work in [I-D.draft-ietf-httpbis-p1-messaging-17] and
   adapted to the [RFC2616] ABNF.

Appendix D.  Change Log

   [RFCEditor: please remove this section upon publication as an RFC.]

   Changes are grouped by spec revision listed in reverse issuance
   order.

D.1.  For draft-ietf-websec-strict-transport-sec

      Changes from -05 to -06:

      1.  Addressed various editorial comments provided by Tobias G.
          This addresses issue ticket #38.
          <http://trac.tools.ietf.org/wg/websec/trac/ticket/38>

      Changes from -04 to -05:

      1.  Fixed up references to move certain ones back to the normative
          section -- as requested by Alexey M. Added explanation for
          referencing obsoleted [RFC3490] and [RFC3492].  This addresses
          issue ticket #36.
          <http://trac.tools.ietf.org/wg/websec/trac/ticket/36>

      2.  Made minor change to Strict-Transport-Security header field
          ABNF in order to address further feedback as appended to
          ticket #33.  This addresses issue ticket #33.
          <http://trac.tools.ietf.org/wg/websec/trac/ticket/33>

Hodges, et al.         Expires September 13, 2012              [Page 37]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

      Changes from -03 to -04:

      1.   Clarified that max-age=0 will cause UA to forget a known HSTS
           host, and more generally clarified that the "freshest" info
           from the HSTS host is cached, and thus HSTS hosts are able to
           alter the cached max-age in UAs.  This addresses issue ticket
           #13. <http://trac.tools.ietf.org/wg/websec/trac/ticket/13>

      2.   Updated section on "Constructing an Effective Request URI" to
           remove remaining reference to RFC3986 and reference RFC2616
           instead.  Further addresses issue ticket #14.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/14>

      3.   Addresses further ABNF issues noted in comment:1 of issue
           ticket #27.  <http://trac.tools.ietf.org/wg/websec/trac/
           ticket/27#comment:1>

      4.   Reworked the introduction to clarify the denotation of "HSTS
           policy" and added the new Appendix B summarizing the primary
           characteristics of HSTS Policy and Same-Origin Policy, and
           identifying their differences.  Added ref to [RFC4732].  This
           addresses issue ticket #28.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/28>

      5.   Reworked language in Section 2.3.1.3. wrt "mixed content",
           more clearly explain such vulnerability, disambiguate "mixed
           content" in web security context from its usage in markup
           language context.  This addresses issue ticket #29.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/29>

      6.   Expanded Denial of Service discussion in Security
           Considerations.  Added refs to [RFC4732] and [CWE-113].  This
           addresses issue ticket #30.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/30>

      7.   Mentioned in prose the case-insensitivity of directive names.
           This addresses issue ticket #31.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/31>

      8.   Added Section 10.3 "Implications of includeSubDomains".  This
           addresses issue ticket #32.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/32>

      9.   Further refines text and ABNF definitions of STS header field
           directives.  Retains use of quoted-string in directive
           grammar.  This addresses issue ticket #33.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/33>

Hodges, et al.         Expires September 13, 2012              [Page 38]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

      10.  Added Section 14.7 "Creative Manipulation of HSTS Policy
           Store", including reference to [WebTracking].  This addresses
           issue ticket #34.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/34>

      11.  Added Section 14.1 "Ramifications of HSTS Policy
           Establishment only over Error-free Secure Transport" and made
           some accompanying editorial fixes in some other sections.
           This addresses issue ticket #35.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/35>

      12.  Refined references.  Cleaned out un-used ones, updated to
           latest RFCs for others, consigned many to Informational.
           This addresses issue ticket #36.
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/36>

      13.  Fixed-up some inaccuracies in the "Changes from -02 to -03"
           section.

      Changes from -02 to -03:

      1.  Updated section on "Constructing an Effective Request URI" to
          remove references to RFC3986.  Addresses issue ticket #14.
          <http://trac.tools.ietf.org/wg/websec/trac/ticket/14>

      2.  Reference RFC5890 for IDNA, retaining subordinate refs to
          RFC3490.  Updated IDNA-specific language, e.g. domain name
          canonicalization and IDNA dependencies.  Addresses issue
          ticket #26
          <http://trac.tools.ietf.org/wg/websec/trac/ticket/26>.

      3.  Completely re-wrote the STS header ABNF to be fully based on
          RFC2616, rather than a hybrid of RFC2616 and httpbis.
          Addresses issue ticket #27
          <http://trac.tools.ietf.org/wg/websec/trac/ticket/27>.

      Changes from -01 to -02:

      1.   Updated Section 8.2 "URI Loading and Port Mapping" fairly
           thoroughly in terms of refining the presentation of the
           steps, and to ensure the various aspects of port mapping are
           clear.  Nominally fixes issue ticket #1
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/1>

      2.   Removed dependencies on
           [I-D.draft-ietf-httpbis-p1-messaging-15].  Thus updated STS
           ABNF in Section 6.1 "Strict-Transport-Security HTTP Response
           Header Field" by lifting some productions entirely from

Hodges, et al.         Expires September 13, 2012              [Page 39]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

           [I-D.draft-ietf-httpbis-p1-messaging-15] and leveraging
           [RFC2616].  Addresses issue ticket #2
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/2>.

      3.   Updated Effective Request URI section and definition to use
           language from [I-D.draft-ietf-httpbis-p1-messaging-15] and
           ABNF from [RFC2616].  Fixes issue ticket #3
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/3>.

      4.   Added explicit mention that the HSTS policy applies to all
           TCP ports of a host advertising the HSTS policy.  Nominally
           fixes issue ticket #4
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/4>

      5.   Clarified the need for the "includeSubDomains" directive,
           e.g. to protect Secure-flagged domain cookies.  In
           Section 14.2 "The Need for includeSubDomains".  Nominally
           fixes issue ticket #5
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/5>

      6.   Cited Firesheep as real-live threat in Section 2.3.1.1
           "Passive Network Attackers".  Nominally fixes issue ticket #6
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/6>.

      7.   Added text to Section 11 "User Agent Implementation Advice"
           justifying connection termination due to tls warnings/errors.
           Nominally fixes issue ticket #7
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/7>.

      8.   Added new subsection Section 8.5 "Interstitially Missing
           Strict-Transport-Security Response Header Field".  Nominally
           fixes issue ticket #8
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/8>.

      9.   Added text to Section 8.3 "Errors in Secure Transport
           Establishment" explicitly note revocation check failures as
           errors causing connection termination.  Added references to
           [RFC5280] and [RFC2560].  Nominally fixes issue ticket #9
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/9>.

      10.  Added a sentence, noting that distributing specific end-
           entity certificates to browsers will also work for self-
           signed/private-CA cases, to Section 10 "Server Implementation
           and Deployment Advice" Nominally fixes issue ticket #10
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/10>.

      11.  Moved "with no user recourse" language from Section 8.3
           "Errors in Secure Transport Establishment" to Section 11

Hodges, et al.         Expires September 13, 2012              [Page 40]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

           "User Agent Implementation Advice".  This nominally fixes
           issue ticket #11
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/11>.

      12.  Removed any and all dependencies on
           [I-D.draft-ietf-httpbis-p1-messaging-15], instead depending
           on [RFC2616] only.  Fixes issue ticket #12
           <http://trac.tools.ietf.org/wg/websec/trac/ticket/12>.

      13.  Removed the inline "XXX1" issue because no one had commented
           on it and it seems reasonable to suggest as a SHOULD that web
           apps should redirect incoming insecure connections to secure
           connections.

      14.  Removed the inline "XXX2" issue because it was simply for
           raising consciousness about having some means for
           distributing secure web application metadata.

      15.  Removed "TODO1" because description prose for "max-age" in
           the Note following the ABNF in Section 6 seems to be fine.

      16.  Decided for "TODO2" that "the first STS header field wins".
           TODO2 had read: "Decide UA behavior in face of encountering
           multiple HSTS headers in a message.  Use first header?
           Last?".  Removed TODO2.

      17.  Added Section 1.1 "Organization of this specification" for
           readers' convenience.

      18.  Moved design decision notes to be a proper appendix
           Appendix A.

      Changes from -00 to -01:

      1.  Changed the "URI Loading" section to be "URI Loading and Port
          Mapping".

      2.  [HASMAT] reference changed to [WEBSEC].

      3.  Changed "server" -> "host" where applicable, notably when
          discussing "HSTS Hosts".  Left as "server" when discussing
          e.g. "http server"s.

      4.  Fixed minor editorial nits.

      Changes from draft-hodges-strict-transport-sec-02 to
      draft-ietf-websec-strict-transport-sec-00:

Hodges, et al.         Expires September 13, 2012              [Page 41]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

      1.  Altered spec metadata (e.g. filename, date) in order to submit
          as a WebSec working group Internet-Draft.

D.2.  For draft-hodges-strict-transport-sec

      Changes from -01 to -02:

      1.   updated abstract such that means for expressing HSTS Policy
           other than via HSTS header field is noted.

      2.   Changed spec title to "HTTP Strict Transport Security (HSTS)"
           from "Strict Transport Security".  Updated use of "STS"
           acronym throughout spec to HSTS (except for when specifically
           discussing syntax of Strict-Transport-Security HTTP Response
           Header field), updated "Terminology" appropriately.

      3.   Updated the discussion of "Passive Network Attackers" to be
           more precise and offered references.

      4.   Removed para on nomative/non-normative from "Conformance
           Criteria" pending polishing said section to IETF RFC norms.

      5.   Added examples subsection to "Syntax" section.

      6.   Added OWS to maxAge production in Strict-Transport-Security
           ABNF.

      7.   Cleaned up explanation in the "Note:" in the "HTTP-over-
           Secure-Transport Request Type" section, folded 3d para into
           "Note:", added conformance clauses to the latter.

      8.   Added exaplanatory "Note:" and reference to "HTTP Request
           Type" section.  Added "XXX1" issue.

      9.   Added conformance clause to "URI Loading".

      10.  Moved "Notes for STS Server implementors:" from "UA
           Implementation dvice " to "HSTS Policy expiration time
           considerations:" in "Server Implementation Advice", and also
           noted another option.

      11.  Added cautionary "Note:" to "Ability to delete UA's cached
           HSTS Policy on a per HSTS Server basis".

      12.  Added some informative references.

      13.  Various minor editorial fixes.

Hodges, et al.         Expires September 13, 2012              [Page 42]
Internet-Draft    HTTP Strict Transport Security (HSTS)       March 2012

      Changes from -00 to -01:

      1.  Added reference to HASMAT mailing list and request that this
          spec be discussed there.

Authors' Addresses

   Jeff Hodges
   PayPal
   2211 North First Street
   San Jose, California  95131
   US

   Email: Jeff.Hodges@PayPal.com

   Collin Jackson
   Carnegie Mellon University

   Email: collin.jackson@sv.cmu.edu

   Adam Barth
   Google, Inc.

   Email: ietf@adambarth.com
   URI:   http://www.adambarth.com/

Hodges, et al.         Expires September 13, 2012              [Page 43]