<?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  (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-amsuess-core-edhoc-grease-00" category="info" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.0 -->
  <front>
    <title>Applying Generate Random Extensions And Sustain Extensibility (GREASE) to EDHOC Extensibility</title>
    <seriesInfo name="Internet-Draft" value="draft-amsuess-core-edhoc-grease-00"/>
    <author initials="C." surname="Amsüss" fullname="Christian Amsüss">
      <organization/>
      <address>
        <postal>
          <country>Austria</country>
        </postal>
        <email>christian@amsuess.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="27"/>
    <workgroup>CoRE</workgroup>
    <abstract>
      <t>This document applies the extensibility mechanism GREASE (Generate Random Extensions And Sustain Extensibility),
which was pioneered for TLS,
to the EDHOC ecosystem.
It reserves a set of non-critical EAD labels and unusable cipher suites
that may be included in messages
to ensure peers correctly handle unknown values.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Constrained RESTful Environments Working Group mailing list (core@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://gitlab.com/chrysn/core-edhoc-grease"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>[ See abstract ]</t>
      <t>The introduction of <xref target="RFC8701"/> provides comprehensive motivation for adding such extensions.</t>
      <t>The extension points of the EDHOC protocol (<xref target="I-D.ietf-lake-edhoc"/>) are
cipher suites,
methods,
EADs (External Authorization Data items)
and COSE headers.
Of these,
EADs and cipher suites
can be used in such a way that even in the presence of an unknown value,
a connection can still be established.</t>
      <t>Unlike in TLS GREASE,
EDHOC is operating on tight bandwidth and message size budget,
with some messages just barely fitting within relevant networks' fragmentation limits.
Thus,
more than with TLS GREASE,
it is up to implementations to decide
whether in their particular use case
they can afford to send addtional data.</t>
    </section>
    <section anchor="the-grease-ead-labels">
      <name>The GREASE EAD labels</name>
      <t>This document registers the following EAD labels as GREASE EADs:</t>
      <t>161, 41121, 43691, 44976</t>
      <t>These EADs are available in all EDHOC messages.
The EADs are only used in their negative (non-critical) form.</t>
      <section anchor="use-of-grease-eads-by-message-senders">
        <name>Use of GREASE EADs by message senders</name>
        <t>A sender of an EDHOC message MAY send a GREASE EAD using the non-critical (negative) form at any time,
with any or no EAD value (that is, with or without a byte string of any usable length),
in any message.</t>
        <t>Senders SHOULD consider the properties of the network their messages are sent over,
and refrain from adding GREASE when its use would be detrimental to the network
(for example, when the added size causes fragmentation of the message).</t>
        <t>On networks where the data added by the grease EADs does not significantly impact the network,
senders SHOULD irregularly send arbitrary (possibly random) GREASE EADs with their messages
to ensure that errors resulting from the use of GREASE are detected.</t>
        <t>The GREASE messages MAY be used as an alternative form of padding.</t>
        <section anchor="suggested-pattern">
          <name>Pattern for limited fingerprinting</name>
          <t>A method of deciding how to apply GREASE is suggested as follows:</t>
          <ul spacing="normal">
            <li>For every message, use GREASE with a random probability of 1 in 64.</li>
            <li>Pick a random GREASE label out of the uniform distribution of available options.</li>
            <li>Pick a random length from the uniformly distributed interval 9 to 40 (inclusive).</li>
            <li>Add the selected GREASE label with a value of the selected length,
filled with random bytes.</li>
          </ul>
        </section>
      </section>
      <section anchor="use-of-grease-eads-by-message-recipients">
        <name>Use of GREASE EADs by message recipients</name>
        <t>A party receiving a GREASE EAD MUST NOT alter its behavior
in any way that would allow random GREASE EADs
to alter the security context that gets established.</t>
        <t>It MAY alter its behavior in other ways;
in particular, it is SHOULD randomly insert GREASE EADs
in later messages of an exchange in which any were received.</t>
        <t>As the EADs are only used in non-critical form,
the behavior of a recipient that is unaware of the GREASE options
is to ignore them.
This satisfies the requirements on GREASE processing.</t>
      </section>
    </section>
    <section anchor="grease-cipher-suites">
      <name>GREASE cipher suites</name>
      <t>This document registers the following cipher suites:</t>
      <t>160, 41120, -41121, 43690</t>
      <t>An initiator may insert a GREASE cipher suite
at any position in its sequence of preferred cipher suites.</t>
      <t>A responder MUST NOT support any of these cipher suites,
and MUST treat them like any other cipher suite it does not support.</t>
      <t>An initiator whose choice of a GREASE cipher suite is accepted
MUST discontinue the protocol.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy considerations</name>
      <t>The way in which GREASE is applied
can contribute to identifying which implementation of EDHOC
is being used.
Implementers of EDHOC are encouraged to use the algorithm described in <xref target="suggested-pattern"/>,
both to reduce the likelihood of their implementation to be identified through the use of GREASE
and to increase the anonymity set of other users of the same algorithm.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The use of the GREASE option has no impact on security
in a correct EDHOC implementation.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA considerations</name>
      <section anchor="edhoc-eads">
        <name>EDHOC EADs</name>
        <t>IANA is requested to register
four new entries into the EDHOC External Authorization Data Registry
established in <xref target="I-D.ietf-lake-edhoc"/>:</t>
        <t>161, 41121, 43691, 44976</t>
        <t>All share the name "GREASE",
the description "Arbitrary data to ensure extensibility",
and this document as a reference.</t>
      </section>
      <section anchor="edhoc-cipher-suites">
        <name>EDHOC cipher suites</name>
        <t>IANA is requested to register
four new values into the EDHOC Cipher Suites Registry
established in <xref target="I-D.ietf-lake-edhoc"/>:</t>
        <t>160, 41120, -41121, 43690</t>
        <t>All share the name "GREASE",
the array N/A,
the description "Unimplementable cipher suite to ensure extensibility",
and this document as a reference.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.ietf-lake-edhoc">
          <front>
            <title>Ephemeral Diffie-Hellman Over COSE (EDHOC)</title>
            <author fullname="Göran Selander" initials="G." surname="Selander">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="John Preuß Mattsson" initials="J. P." surname="Mattsson">
              <organization>Ericsson AB</organization>
            </author>
            <author fullname="Francesca Palombini" initials="F." surname="Palombini">
              <organization>Ericsson AB</organization>
            </author>
            <date day="3" month="February" year="2023"/>
            <abstract>
              <t>   This document specifies Ephemeral Diffie-Hellman Over COSE (EDHOC), a
   very compact and lightweight authenticated Diffie-Hellman key
   exchange with ephemeral keys.  EDHOC provides mutual authentication,
   forward secrecy, and identity protection.  EDHOC is intended for
   usage in constrained scenarios and a main use case is to establish an
   OSCORE security context.  By reusing COSE for cryptography, CBOR for
   encoding, and CoAP for transport, the additional code size can be
   kept very low.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lake-edhoc-19"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8701">
          <front>
            <title>Applying Generate Random Extensions And Sustain Extensibility (GREASE) to TLS Extensibility</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin">
              <organization/>
            </author>
            <date month="January" year="2020"/>
            <abstract>
              <t>This document describes GREASE (Generate Random Extensions And Sustain Extensibility), a mechanism to prevent extensibility failures in the TLS ecosystem. It reserves a set of TLS protocol values that may be advertised to ensure peers correctly handle unknown values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8701"/>
          <seriesInfo name="DOI" value="10.17487/RFC8701"/>
        </reference>
      </references>
    </references>
    <section anchor="open-questions">
      <name>Open questions</name>
      <t>Do the GREASE EADs add any value that padding does not already add?</t>
      <t>Probably yes, because padding is "special enough" that it could be handled in a hard-coded fashion.
(Then again, there's nothing but the effort stopping anyone else from doing the same with the GREASE EADs, right?)</t>
      <t>Can anything be done about extra methods and COSE headers?</t>
      <t>They would not result in successful operations,
but maybe there is still some value in registering one or two --
using them would mean sacrificing the full connection,
but it may still be possible to conclude that the extension points are in order
from watching the EDHOC exchange fail in the predicted way.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA6VYwXIbuRG94ytQ8mGlFMlIjssbKweHJWl3XbVruSz5kMqm
UuAMyEE0A0wADGmuSn+WW34srxuY4QytbFybEyUM0Gi8fv26gfl8LqKJtb6U
J8u2rffGbuT32mqvopYflS1dI28+R22DcTbIpS3lXReiMrYfXpnaxL08/f7j
zfLu5kxGJ2+uf7i9mn4/EaUrrGqwUenVOs5VEzodwrxwXs91WblivvFaBT0/
Pxem9Zcyemz08vz8zflLgR1t+XdVO6v5gxaFipfS2LUTu82lvHIfb4TqYuX8
pZhjPGBsIZdN+Pe/QhBSpq2vKm9CNMqOvhSus9HvL+US23mjMKQbZepLWfSz
/5ydXRSuEdb5RkWz1ZeY+W5+vTA6rue1esjHuBTk1WjOx++u/vjt+cWlEGI+
n0u1wjaqiELcVyZIwNI12kapAL/RQcZKSz2BttFFpawJjUwYA+vfEKGzmdhV
pqjkTgXZYq7WXpcSrsr7H+9mAnGjrVPsdOHCPkTdLMS7KL0O2m/hm5JBR+nW
0jo7L7yJplC1vFley1qtdI0J2L2zXVCrWsvCtJX2MnQm6iBipaJs1F6uNOJT
1F2J3eFkA2DVhiY4CW87r2UL1wIC470uYr2XOH0Je519sG5n5VbViMYiwdmY
Et+EeCHfIYyu7IqIs8nHF2b075MQP/9V3mk9oC9//hsFgFwZrcLJHh9zvJ6e
ZOvd1pSaXGlarysCc6tl4xBaxQsIPVWWlDWhA7Z6CMQimR8GZOuwVaAtDjBj
g+gKV8vTx8dnqPT0dCaVB9fHQM5Eo8HzEn8A+CBPKcreIg5L5r/5Jbl2raKS
WNCEM0FhuboFcyqtSmC7ELfsRtDZCE2YhqtAkiBSXUhR4tMpcGcvOZB6qy2N
01la4octNJ0NqyZhmgkF9KzVCWCyipSqa7KtwdJVbUKlS6D1ydbmgeJBdMxM
h3eME/LEtcR4AhpmotlUUa7g9c6UsWL3M49kML9ouerKjY5gvMHX4Bo90Ez+
A8mBpV6DWGsT2SRNw8YY01uFXLQ67px/CN/ItVcbSs+EaW0aE4HefdVRHCBd
hIbl9RO3TSSfu5bU0DRtrQcbgYZKXYBXyEdEEpAnHI2XrfJIqa5WnoAHWkEj
b/SecVNrsK2k5UC7JNqRPcS9RKQXlAFEuCwRh5w81hmvN1A1SjCK3drVtdsR
BuMsDiMzAcJ18fpiJl9dXLyknz+8fkM/r958+5o5DkcTh4CG2kI5OflxJoUw
p/j14C84J4bZziIGPcMSAlZvWDjl6VhizijRGjrjC/kpMNFGDsrV/hB9QIOz
CbHMf2ZSTvyQPy3/kkEc49UFwoFQmcjbae9T8kKC/coiDUyjM8HoXwiBdWyG
eS9POU1MmCVy4DP9ug6L4S+km4oNsXnNy7Nk1tpuYgWpJvjscCyc/C4dTN79
cPvpx2vKqWDoeCkBKTsiVY8sL5nAGdSB+wR6IBK4rfYzlgWvQXHstvaoI1nK
MiagJ3IcmkVc3LmuLilrSw3Hmc61zDUj7yZOSQ71Z0WEn6Xl9BlWEWLOy0LB
VjjKquxz9vIMh721QwqSGU4zzTzPxlZ7HkkdQyJB6WDYuoiNNtasETpLtQPZ
R3I/cnMmwhRLgzqzoaTD9MQKvzKoEh5dTesCCig+eK60ZxPecWSnEI+qWNJJ
7x12gkJ2NUsN40zedBMeU2SALGSSxXCUyUPwiLS9IiuSbCQYKz/nC1MT9toU
Q86VF/KDijSF6xSLF1V8fNa+BfvYoccXodvAPj7N2zT9idInVRkyyWpFUyu3
o5BTp7Lv3YO0DOvJrSQoJBq/k98RHcC0gcczPnVPL06dDCxxeKVyw4M9L0gS
Xr9awMoHUzwc5uXFrFSS0imzp0PMCYLSUGKtup5ZB0VybUyF+dhkSrpRZJIp
nHEwxhIFaJDb8g1h8OpcnnIXQx3BGdlcliWvDigiFMWpp/mwSRuyy8PM5MAM
veIapREDPDt7R2IRvkb60CyZ1iCrWP2olOxpTJstxW6idD99uruX72/vE4M4
x1e6UlvjfK88Q6VPia8oqkcxIAeI78lIOlHReYog5Cmi9UkWUInDUbFHU0l0
/nJ7CrvjoggHwp/Im0NRnMlUV3PeJm8oxy360zhxC+tqRcaH9El1QH+mXnrD
9Sm1w3xYkpiEFbu3TMXx+UI1KQ5ElBnV6MMJaKNDMGSuA2CV2rGtFPzsbCal
MNwXQLlST0GNN5ftgOwO6/5e4PU/O+O5mQjUB2UjyJ0Cx8xp349O+7mv7AIm
i7jyn6fKj5/5qAM4B0jUAAIGFXFoauxzGNRzDohcNaGnhlPTpNIScKK+d0Qf
uYZe6qNWlOJBAto6rucDd0PXts4nsy63s/KoVaYKxwsiKgVXAaQ7tZm8iHk2
XkH8OtSRZH9xdNJd5Wifypnc8T53XAq4KgrdIr0FOwApoaQwttN9zebWnyP2
weNCUeyHqp46xVQGdoxsJutBdNN1seQ+nQwnmWISlQiwWfNVPq2adqDkNLdD
RLqVpmlEbdz0+mlEi34S8x8Rch1qtub2kzSc63q9wXUjVhBdHZARq5Qfj49f
FpSnmVg5KpYOkcRtKxmgSNSmcqnMpEJ65CsW0H0xHcnQ/pV33ab6soRyrOn4
tkhdAbuIZN03pEj54ppijoV+6JWCakZn4Xjc9Tp29UxA8q5fJDGuqUScvuPA
QC+HrKn9fTbDOj0n7/pu+X75BQUg+/k5hWRN8BwTWAlSzWVIUzKLNaKENmeH
gIEQ4DGK1vha/2tXxY9sxO/FSKlTOJ+9mf7qrWCJzj9UKvdt9PYiTxJWJ0ks
E2ESbCfLod3iDu/QQU2eQU5SNsfpo0lgrYVskIgsRnAdqd9X4paeFo5hu0q2
7tjWbwLqv4vo/0JKeQ8BeP/75TPAfbIHFh0/uPx/MNLLykoVD0TL2xZ9PKOW
GHntxtxPNRK9Dylqam+44uU+9CCnqkZalnua+1aID9zuoaruIdNIcb4YDIvg
20loUUJBVW0p309yHY30XpcuIulViKFX+MeX88LR3WCtQsUpdXpPNxC1wfVm
Ri57/Q27UtEWUMv01Ea3aoh9dG3LfZLdO4vhGu5wR1i6/lbIQtH3/OPzz6Sn
B4m3Z0JcKW6f8h6IFxlTK2pUEQavcludXlzGTzJvWVz2ud0iwNKdIT++UH1f
d3X/DIJAQFE7flBb6XQ4bsX5bYUfPFIs+FUjsTy9nWi6iuIeJOdzMVx4m7xt
o+l9RoFhuD/1x8a29egNJ+1r0lve8JaT70lMO8zl570UstF75uEVjAhPnZ4v
KfsI5p2KRdVvmR8h+15tjRZ+9NhUGu6aURgX4j9+3xZTwRYAAA==

-->

</rfc>
