<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4880 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4880.xml">
]>


<rfc ipr="trust200902" docName="draft-huigens-openpgp-signature-salt-notation-00" category="std" consensus="true" submissionType="IETF" updates="4880" tocDepth="4" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>OpenPGP Signature Salt Notation</title>

    <author initials="D." surname="Huigens" fullname="Daniel Huigens" role="editor">
      <organization>Proton AG</organization>
      <address>
        <postal>
          <street>Route de la Galaise 32</street>
          <city>Plan-les-Ouates</city>
          <code>1228</code>
          <country>Switzerland</country>
        </postal>
        <email>d.huigens@protonmail.com</email>
      </address>
    </author>

    <date year="2024" month="June" day="26"/>

    <area>sec</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines the "salt" Notation Name for OpenPGP version 4 signatures.
This can be used to salt version 4 signatures in a backwards-compatible way.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://twisstle.gitlab.io/openpgp-signature-salt-notation/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-huigens-openpgp-signature-salt-notation/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        OpenPGP Working Group mailing list (<eref target="mailto:openpgp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/openpgp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/openpgp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/twisstle/openpgp-signature-salt-notation"/>.</t>
    </note>


  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>The crypto refresh <xref target="crypto-refresh"></xref> of the OpenPGP standard <xref target="RFC4880"></xref> introduces version 6 signatures, which are salted.
This has several benefits, such as preventing fault attacks against EdDSA signatures.
This document introduces a "salt" Notation Name so that version 4 signatures can benefit from some of the same advantages in a backwards-compatible way.
Note, however, that the notations are not hashed first in the signature, and thus this does not automatically benefit from <em>all</em> benefits described in Section 13.2 of <xref target="crypto-refresh"></xref>.
Therefore, this proposal is not intended to delay or remove the necessity for deploying version 6 keys and signatures.</t>

</section>
<section anchor="conventions-used-in-this-document"><name>Conventions Used in This Document</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"></xref>.
Any implementation that adheres to the format and methods specified in this document is called a compliant application.
Compliant applications are a subset of the broader set of OpenPGP applications described in <xref target="RFC4880"></xref> and the OpenPGP crypto refresh <xref target="crypto-refresh"></xref>.
Any <xref target="RFC2119"></xref> keyword within this document applies to compliant applications only.</t>

</section>
<section anchor="motivation"><name>Motivation</name>

<t>Salting signatures can prevent certain attacks, such as fault attacks against EdDSA <xref target="PSSLR17"></xref>.
In version 6 signatures, a salt was added (see Section 5.2.3 and Section 13.2 of <xref target="crypto-refresh"></xref>).
For version 4 signatures, some implementations (originating with Sequoia-PGP) add a signature notation to add a salt in a backwards-compatible manner.
To comply with <xref target="crypto-refresh"></xref>, implementations have created implementation-specific notation names under a domain they control (such as "salt@notations.sequoia-pgp.org").
However, this adds some overhead for each created signature, compared to a shorter notation name in the IETF namespace.
Additionally, it adds to the distinguishability of OpenPGP artifacts, unless all implementations use the same notation name.
For implementations that wish to disguise which implementation created any given artifact, it may be preferable to use only notations from the IETF namespace.</t>

</section>
<section anchor="notation"><name>Notation Data Subpacket Type</name>

<t>This document defines a new Notation Data Subpacket Type for use with OpenPGP, extending Table 7 of <xref target="crypto-refresh"></xref>.</t>

<texttable title="Signature Salt Notation registration" anchor="new-notation">
      <ttcol align='left'>Notation Name</ttcol>
      <ttcol align='left'>Data Type</ttcol>
      <ttcol align='left'>Allowed Values</ttcol>
      <c>salt</c>
      <c>binary</c>
      <c>random data</c>
</texttable>

<t>This notation can be used to store a random salt in version 4 signatures (see section 5.2 of <xref target="crypto-refresh"></xref>).
The length of the salt MUST match the "V6 signature salt size" value defined for the hash algorithm as specified in Table 23 of <xref target="crypto-refresh"></xref>.
The "human-readable" flag MUST NOT be set for this notation name.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Unlike the salt in version 6 signatures (as defined in Section 5.2.3 of <xref target="crypto-refresh"></xref>), which is hashed at the start before all other data, a salt in a Notation Data subpacket is hashed after the data to be signed (see Section 5.2.3.6 of <xref target="crypto-refresh"></xref>).
Because of this, the salt notation may not prevent chosen prefix collision attacks like version 6 signatures do (see Section 13.2 of <xref target="crypto-refresh"></xref>).
Therefore, this mechanism is not intended to replace or delay the deployment of version 6 signatures.
It should only be used when the use of version 4 signatures is required (e.g. for compatibility reasons).</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>IANA is requested to add the registration in <xref target="new-notation"/> to the "OpenPGP Signature Notation Data Subpacket Types" registry, with a reference to this document in the "Reference" column.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The idea and first implementation of a salt notation came from Sequoia-PGP.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

<reference anchor="crypto-refresh" target="https://datatracker.ietf.org/doc/html/draft-ietf-openpgp-crypto-refresh-13">
  <front>
    <title>OpenPGP</title>
    <author initials="P." surname="Wouters">
      <organization></organization>
    </author>
    <author initials="D." surname="Huigens">
      <organization></organization>
    </author>
    <author initials="J." surname="Winter">
      <organization></organization>
    </author>
    <author initials="N." surname="Yutaka">
      <organization></organization>
    </author>
    <date year="2024" month="January"/>
  </front>
</reference>
&RFC2119;
&RFC4880;


    </references>

    <references title='Informative References'>

<reference anchor="PSSLR17" target="https://eprint.iacr.org/2017/1014">
  <front>
    <title>Attacking Deterministic Signature Schemes using Fault Attacks</title>
    <author initials="D." surname="Poddebniak">
      <organization></organization>
    </author>
    <author initials="J." surname="Somorovsky">
      <organization></organization>
    </author>
    <author initials="S." surname="Schinzel">
      <organization></organization>
    </author>
    <author initials="M." surname="Lochter">
      <organization></organization>
    </author>
    <author initials="P." surname="Rösler">
      <organization></organization>
    </author>
    <date year="2017" month="October"/>
  </front>
</reference>


    </references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA4VY7Y7bthL9r6cgnD8JYMm73rRJDVwgvvEm2WK/ut5tUQRF
QUu0RaxEqiS1rpP0te4L3BfrGVKyrV05u0ARmSI5M2fOnBk1juPISVeICbuq
hLr+eM3mcqW4q41gc144dqkdd1KrKNOp4iU2ZoYvXZzXciWUjTWOVasqtu2x
2OJYrJpj8dFRlHInVtpsJsy6LJKVmTBnauvGR0c/HY2jusqwwU7Y67dvjyJu
BMdGkUb3YrPWJpuwM+WEUcLFM7IcWcdV9icvtIIzSke2XpTSWhi73VRYOju9
/RBVchIx5nQ6YRthw2MmKpfDDH5ZbZwRS9u+tZty9/NBqFrQ8ZXRdTVhgwaa
AV3jTQx+0+ZeqhX7SDtoveSywHqDxjsp3DLRZkWvuElhdZA7V9nJaEQ7aUk+
iKTdNqKF0cLotRWj5o4RnTWi0ntnV0gVXySpLkdujZiRuNEzCaBbCsLX7d3T
Hk6aC6V+7hp4w2uXa0O4xPiPMamA1yxhnwIT/FpgyIwrKYrOC6OJYyKTThu/
gKgn7NpopxWbfvRLFikRcPNG106wTMBv9pEXXFrBTsZ+S6ozXHM8Hr8NP6UD
q64LruJC2PiqpkCbjbVyRLn5WrovwmBL5l+IkKksaQj8rvI+0CrhGiltSkT8
4AmQmk3ldAxqGGHzib+gWy5+ifgLXrGfuaq52bDx0fi1f7GDjP7i5t8GuuuE
/UaRGtv//hG0T97/jPOSSqP/9WXCfq8dv+fBa25WhG3LALjMneHpvTA7FqLE
R7kri1EocVrf1ncXivj4BNfefHg/Pj7+aRIeqXwnkVTLfQSv5/Pzm+M3k14n
RGUQQCJ5arz98dHxm9Hx0fHrfaCnzsFNKraZQLClVNI6me7rVJqLUlhWW9r1
gdeQrXDKPp8FoHyts0wslOT3B4Ge61Ib/WDvN/1b5gl5IdUXUfRvuEjYuU7z
g9kCGW7+/z9bNO8Do65SpxfCMMIliuOY8YWlpLkous2lZchXXQrlUCtLqYCA
ywUbUN0OtrrNLlGSDDnZCvwDGEcvXrNtrdskXJhyxRYCQIoMgsnopt7t8Jlx
tgDCa24yG6NwKlhbFIKt+SaJvLOlzLJCRNELEnCjszr1fQSWRFNYrGET+9xl
1x9ML30srcte8mGJfW549gc8CHfCmdbDH/c8HLJ1LtMc4it8GCJrQsy5RXfB
EV4gVAXgHDbbmvZaVhm8Uo54tPQ84oFHjK848uTYaTabT58Ct83Enlu8PxVW
IzR+ANeQAO8VWxpdYjeONGhYOs6zB64cXz2fBJgVQ5brNUU7DEbpmlbSrQcH
vwiTHBlfSmMpgmCsdWrIgD2WaqKXDxWm6RTKSlOhp7woNl2v0Z2LP7fwgp42
NXIBE7h8LjwP2PFJMqbIHueeEBX4ocm0twiFrjSgZDIYJtFTWaBoJgq+QTMB
lUr9IEKAAvBbtAZPe3T9Qm8oozueYLSwPqz9RIKo77Xy6Sdw7mzw1+d31uQ3
sBfHGY0mlg0u7ua3g2H4l11e+eeb01/uzm5OZ/Q8/zQ9P98+tDvmn67uzme7
p93J91cXF6eXs3D4Yvr7IMA/uLq+Pbu6nJ4PQn72KUdZBBKoW98NQGGwncjc
gf1zI9bAd6o2TJZVIeh4YKYnB88IeEuXEYxBx735UkBBEa6tRCqXMtzY9cKr
R1GQZUZMLCQn3yo8pN5GEr3vWw4s5KjAhRWupTpGIZ5B+ZqlVgc6556EF4Qh
sHWnHc9ITYBjiw5rpk6GsSF/CjXZDwj1xmiZVsXGU+lCowWGyTmiQZoI+KjQ
G7FhqTCOUzEHrdmp0fck6HPTWRHAmToggTwo+BpX8YwK5qUVYluAPyTj5MTD
9VxJvkqiD6ikPsUaBoXq0smyl9rIlcQeCpughI2/ai15jJS8Im/IuW0HbyWJ
gG3ekeOHBa7kSmFyiW6bRGyCkceOD584lvMH6j6CU410X8YNu9OdOzTOYq5Q
REUOGpQ8qOMGVknoCyDa5Mpr/buttia2iRezk/8QAIafdlIsfUZsI+9YzAXP
vFwJjvtaB/dE2AdvgugBHgw0qPWup6100wdQcL3iqQDBM4zd2EQ6DURcMN1U
eUbTlFrV0uZ8IQtSzf2CM04uMXAgz7XCiA23i+IJqJgXdg2q41IgzuP9Xm3w
CZJ7BZeWrIumYT8SphYJjiJdYaZUW5d8JCWnzkOVtERHJ2bgRnKH6nCv0/mu
1IcNKnXbnmeYidm8XlQ0FjtGX5Ps64v2kn8ODV0cDWf9/VsoseSVJ2mD7ZCJ
v6mPUYXcetff9LfD6OskzML/GRz4Noe4rSRNhv6Dj72AP/HO7e748S046N36
xqZFAVJm7Fde1Phyijt/3w48018UKrT9+8YWqHZ8+vhnA1EB3vSN0YC2JcXj
CROfg6T+zYm26ntnIy9edideB5SKGnQh1ApIb+cm3OobNPoZKOan5F/3pDLs
sPKLGLAHQqLJbahI2k4TEqi/gqy5vKR677TCkL/xycF5Bp/eNTQLizyjvQO2
LPiKtVMDQUKtLpjbxysUEVgKja4NVSdmFCshSIHZUXSnCnkvdoHK/m7AXvqJ
IIS1N4aFLtAHZTtCh6GZBsRmgMQ0bhxcXvrcQQ80Vo1P97Aj3d2asNua2Ltx
SSrmdYi2hDGGnO5tVsmPB3L+X5FyX/VLD99wh8YWSFIKGh63TTfXVvgevJR/
Q12LQnrM2m7rQe0FMtNd177TNR9PsqVIc47v17JvlDUYVKFJzM+sNNV6WPz0
6vUGJvr8Qf931A/qIguq15bXOhehHzTI9H/IWdj9q5bUWV6KZJV4DradNvQD
kNaCaq88D8+ml9MnHPSLzVXCuqZLZWEQ2xcn4sXXrx19+qftRIOn/wfye6Jq
B+3NaGpeWDnzbUCoVIQ7ux9mwchNu2VASa9L5aOapvdKrzG9rnzvsWHOR4jc
D0jNl1G3NQFS/ohkqf/Wpl6zN+4k0b9Fb86eZhUAAA==

-->

</rfc>

