<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cutler-httpbis-partitioned-cookies-01" category="info" consensus="true" submissionType="IETF" updates="6265" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.2 -->
  <front>
    <title abbrev="CHIPS spec">Cookies Having Independent Partitioned State specification</title>
    <seriesInfo name="Internet-Draft" value="draft-cutler-httpbis-partitioned-cookies-01"/>
    <author fullname="Dylan Cutler">
      <organization>Google LLC</organization>
      <address>
        <email>dylancutler@google.com</email>
      </address>
    </author>
    <date year="2022" month="November" day="10"/>
    <workgroup>HTTP</workgroup>
    <keyword>cookies</keyword>
    <keyword>partitioned cookies</keyword>
    <keyword>privacy</keyword>
    <keyword>third-party cookies</keyword>
    <abstract>
      <t>This document updates RFC6265bis, defining a new attribute, Partitioned, which restricts the contexts in which a cookie is available to only those whose top-level document is same-site with the top-level document that initiated the request that created the cookie.
These cookies are referred to as "partitioned cookies" and allow embedded sites which are cross-site with the top-level frame to have access to HTTP state which cannot be used for tracking across multiple top-level sites.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://DCtheTall.github.io/CHIPS-spec/draft-cutler-httpbis-partitioned-cookies.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-cutler-httpbis-partitioned-cookies/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/DCtheTall/CHIPS-spec"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>In order to increase privacy on the web, browser vendors are either planning or already shipping restrictions on cross-site tracking. This includes phasing out support for third-party cookies, as defined in
<xref section="7.1" sectionFormat="of" target="RFC6265bis"/>.</t>
      <t>Although third-party cookies can enable third-party sites to track user behavior across different top-level sites, there are some cookie use cases on the web today where cross-domain subresources require some notion of session or persistent state that is scoped to a user's activity on a single top-level site.</t>
      <t>In order to meet these use cases, this document proposes changes to RFC6265bis to support a new cookie attribute, Partitioned, which restricts the contexts that a cookie is available to only those whose top-level document is same-site with the top-level document that the cookie was created in.
This attribute will allow embedded sites to use HTTP state without giving them the capability to link user behavior across distinct top-level sites.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <section anchor="the-partitioned-attribute">
        <name>The Partitioned attribute</name>
        <t>Below is the definition of the Partitioned attribute. This could be added as a new subsection of Section <xref target="RFC6265bis" section="4.1.2" sectionFormat="bare">Semantics (Non-Normative)</xref> of <xref target="RFC6265bis"/>:</t>
        <blockquote>
          <t>The Partitioned attribute limits the scope of the cookie such that it will only be sent when the site of the top-document (defined in section 5.2) is same-site with the top-document when the &gt; cookie was created. Cookies set with this attribute are referred to as "partitioned cookies".</t>
        </blockquote>
      </section>
      <section anchor="computing-the-cookie-partition-key">
        <name>Computing the cookie partition key</name>
        <t>Below is the algorithm that browsers can use to compute a request's cookie partition key.
This algorithm could be added after Section <xref target="RFC6265bis" section="5.2" sectionFormat="bare">"Same-site" and "cross-site" Requests</xref> of <xref target="RFC6265bis"/>:</t>
        <blockquote>
          <ol spacing="normal" type="1"><li>Let top-document be the active document in document's browsing context's top-level browsing context.</li>
            <li>Let "cookie-partition-key" be the site of the top-document when the user agent made the request.</li>
            <li>If the cookie is being read or written via a "non-HTTP" API, then cookie-partition-key is the site (as defined in <xref target="HTML"/>) of the top-document of the document associated with the non-HTTP API.</li>
          </ol>
        </blockquote>
      </section>
      <section anchor="using-set-cookie-with-partitioned">
        <name>Using Set-Cookie with Partitioned</name>
        <t>Below is the algorithm that browsers can use to parse cookie lines with this attribute.
This algorithm could be added as a new subsection of Section <xref target="RFC6265bis" section="5.4" sectionFormat="bare">The Set-Cookie Header Field</xref> of <xref target="RFC6265bis"/>:</t>
        <blockquote>
          <t>If an attribute-name case-insensitively matches the string "Partitioned" then the user-agent MUST append an attribute to the cookie-attribute-list with an attribute-name of "Partitioned" and an empty attribute value.</t>
        </blockquote>
        <t>We could add an attribute to the cookie storage model described in the first paragraph of 5.5 (Storage Model) to include a new attribute on each cookie called the partition-key (to differentiate it from cookie-partition-key defined in a prior section).
The following could also be added as an additional step to section 5.4:</t>
        <blockquote>
          <ol spacing="normal" type="1"><li>If the cookie-attribute-list does not contain an attribute with an attribute-name of "Partitioned", set partition-key to null.<br/><br/>
  If the cookie-attribute-list does contain an attribute with an attribute-name of "Partitioned" and the secure-only-flag is false, abort these steps and ignore the cookie entirely.<br/><br/>
  Otherwise, set partition-key to cookie-partition-key defined in section 5.X.X.</li>
          </ol>
        </blockquote>
      </section>
      <section anchor="partitioned-cookies-with-the-same-namedomainpath">
        <name>Partitioned Cookies with the Same Name/Domain/Path</name>
        <t>In order to prevent cross-partition leaks, we need to allow sites to set cookies with the same name, domain, and path as long as they have different partition keys.
In order to achieve this, we suggest the following edit to step 22 of Section <xref target="RFC6265bis" section="5.5" sectionFormat="bare">Storage Model</xref> of <xref target="RFC6265bis"/>, note that steps b-d below are not changed.</t>
        <blockquote>
          <ol spacing="normal" type="1"><li>If the cookie store contains a cookie with the same name, domain, host-only-flag, path, and partition-key as the newly-created cookie:<br/><br/>
  a.  Let old-cookie be the existing cookie with the same name, domain, host-only-flag, path, and partition-key as the newly-created cookie. (Notice that this algorithm maintains the invariant that there is at most one such cookie.)<br/><br/>
  b.  If the newly-created cookie was received from a "non-HTTP" API and the old-cookie's http-only-flag is true, abort these steps and ignore the newly created cookie entirely.<br/><br/>
  c.  Update the creation-time of the newly-created cookie to match the creation-time of the old-cookie.<br/><br/>
  d.  Remove the old-cookie from the cookie store.</li>
          </ol>
        </blockquote>
      </section>
      <section anchor="attaching-a-partitioned-cookie-to-a-request">
        <name>Attaching a Partitioned Cookie to a Request</name>
        <t>The following could be added to the first step of the algorithm in section 5.6.3 (Retrieval Algorithm):</t>
        <blockquote>
          <ul spacing="normal">
            <li>If the cookie's partition-key is null, skip this step.<br/><br/>
  Otherwise only include the cookie if the cookie's partition-key is same-site with the retrieval's cookie-partition-key.</li>
          </ul>
        </blockquote>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="partitioned-requires-secure">
        <name>Partitioned requires Secure</name>
        <t>This proposal takes the opportunity of defining the semantics of a new cookie attribute in order to require the Secure attribute, restricting this feature to secure protocols.</t>
      </section>
      <section anchor="partitioned-cookies-and-xss-attacks">
        <name>Partitioned cookies and XSS attacks</name>
        <t>Sites are more susceptible to XSS attacks as embedded frames since these contexts rely on cross-site cookies for a notion of user session/state.
Partitioning cross-site cookies makes them less vulnerable to being leaked via XSS, since an attacker would need to navigate the user's browser to the top-level site the cookie was created on in order for the browser to send the cookie at all.</t>
      </section>
      <section anchor="partitioned-cookies-and-csrf-attacks">
        <name>Partitioned cookies and CSRF attacks</name>
        <t>Cross-site cookies with the Partitioned attribute are less susceptible to CSRF attacks than unpartitioned, third-party cookies.
This is because a partitioned cookie is only sent in requests when the browser is visiting the top-level site the cookie was created in, so a malicious top-level site will not be able to forge a request with an existing partitioned cookie unless they have compromised the top-level site that the cookie was sent from.</t>
      </section>
      <section anchor="state-proliferation-for-denial-of-service">
        <name>State proliferation for denial of service</name>
        <t>Partitioning cross-site cookies inevitably will lead to more state proliferation on user's machines, so there is a possible DoS risk from partitioning cross-site cookies where a malicious embedded site could set many cookies across different partitions to take up memory on clients' machines.
To help mitigate this, we suggest limiting the number of cookies a domain can set on a particular top-level site in the section below.</t>
      </section>
      <section anchor="partitioned-cookies-improve-user-privacy">
        <name>Partitioned cookies improve user privacy</name>
        <t>The proposal suggests an alternate design for cross-site cookies which does not introduce a vector for cross-site tracking.
This is a step towards making a larger privacy improvement for the web: removing third-party cookies.</t>
      </section>
      <section anchor="avoiding-cross-partition-leaks">
        <name>Avoiding cross-partition leaks</name>
        <t>One important privacy consideration is that partitioned cookies must not be subject to the 180 global per-domain cookie limit, otherwise they risk introducing a side channel for cross-site tracking.
Instead, partitioned cookie limits should be counted separately across different top-level sites to not leak any information about a user's activity on each respective site.</t>
        <t>Another privacy consideration is that when a site sends the Clear-Site-Data header that contains "cookies", the user agent should only clear partitioned cookies whose partition key is same-site with the current top-level site.
This will prevent abuse of partitioned cookies and the Clear-Site-Data header to establish identifiers that persist across different top-level sites.</t>
        <t>Another privacy consideration is that the privacy guarantees of partitioned cookies can be circumvented by browser extensions with host permissions. Extensions' background contexts can query and store cookies across partitions, meaning they could store a cross-site identifier across partitions.
Unfortunately, this type of attack is unavoidable due to the nature of extensions.
Even if we block partitioned cookies (or even all cookies) from extensions' background contexts, an extension could still use content scripts to write cross-site identifiers to the DOM which the site's own script could copy to the site's partitioned cookie jar.</t>
        <t>Finally, sites should be able to set partitioned cookies with the same name, domain, and path in different partitions.
Otherwise, the presence or absence of a cookie with a particular name/domain/path would allow sites to learn about that user's activity on different top-level sites that make subresource requests to the cookie's domain.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="applying-limits-to-partitioned-cookie-jars">
        <name>Applying Limits to Partitioned Cookie Jars</name>
        <t>The following could be added as a new subsection of section 6.1 (Limits):</t>
        <blockquote>
          <t>User agents SHOULD enforce a separate per-domain limit for partitioned cookies for a particular cookie-partition-key.
This limit SHOULD be lower than the per-domain limit for cookies without the Partitioned attribute to prevent cookies set on different top-level sites from reaching implementation memory limits.
Since memory is the main concern, in addition to limiting the number of cookies a domain may use per partition, a user agent MAY limit how many bytes a domain's cookies occupy on the user agent's device to only 10 kilobytes per top-level partition.
The user agent SHOULD consider memory occupied by each cookie to be the sum of the number of octets in the cookie-name and cookie-value.</t>
        </blockquote>
      </section>
      <section anchor="third-party-cookie-controls">
        <name>Third-Party Cookie Controls</name>
        <t>We may also want to add a paragraph about partitioned cookies to section 7.1 (Third-Party Cookies):</t>
        <blockquote>
          <t>Cross-site cookies which are set with the Partitioned attribute are only available on the top-level site in which they were created and therefore do not have the same privacy issues as other cross-site cookies.
Due to this difference, user agents MAY exclude cross-site partitioned cookies from third-party cookie blocking controls.</t>
        </blockquote>
      </section>
      <section anchor="partitioned-cookies-and-clear-site-data">
        <name>Partitioned Cookies and Clear-Site-Data</name>
        <t>We also can propose changes to the Clear-Site-Data header specification to prevent abuse of that header and partitioned cookies for cross-site tracking.
The following could be added after step 2 in section 4.2.1 of <xref target="Clear-Site-Data"/>:</t>
        <blockquote>
          <ol spacing="normal" type="1"><li>For each cookie in cookie-list, do the following:<br/><br/>
  a.  If the cookie's cookie-partition-key attribute is null, skip this step.<br/><br/>
  b.  Otherwise, if the top-document is not same-site with the cookie's partition-key then remove the cookie from cookie-list.</li>
          </ol>
        </blockquote>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="Clear-Site-Data" target="https://www.w3.org/TR/clear-site-data/">
          <front>
            <title>Clear Site Data</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="HTML" target="https://html.spec.whatwg.org/">
          <front>
            <title>HTML</title>
            <author>
              <organization>WHATWG</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC6265bis">
          <front>
            <title>Cookies: HTTP State Management Mechanism</title>
            <author fullname="Steven Bingler" initials="S." surname="Bingler">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Mike West" initials="M." surname="West">
              <organization>Google LLC</organization>
            </author>
            <author fullname="John Wilander" initials="J." surname="Wilander">
              <organization>Apple, Inc</organization>
            </author>
            <date day="7" month="November" year="2022"/>
            <abstract>
              <t>   This document defines the HTTP Cookie and Set-Cookie header fields.
   These header fields can be used by HTTP servers to store state
   (called cookies) at HTTP user agents, letting the servers maintain a
   stateful session over the mostly stateless HTTP protocol.  Although
   cookies have many historical infelicities that degrade their security
   and privacy, the Cookie and Set-Cookie header fields are widely used
   on the Internet.  This document obsoletes RFC 6265.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-rfc6265bis-11"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="CHIPS-Explainer" target="https://github.com/privacycg/CHIPS">
          <front>
            <title>Cookies Having Independent Partitioned State (CHIPS) explainer</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The editors would also like to thank the following individuals for feedback, insight, and implementation of this draft and its predecessors (in alphabetical order):
Kaustubha Govind,
Johann Hofmann,
Jeffrey Yasskin,</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
