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


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

]>


<rfc ipr="trust200902" docName="draft-gallagher-email-unobtrusive-signatures-01" category="info" submissionType="IETF" updates="3156" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Unobtrusive End-to-End Email Signatures</title>

    <author fullname="Andrew Gallagher" role="editor">
      <organization>PGPKeys.EU</organization>
      <address>
        <email>andrewg@andrewg.com</email>
      </address>
    </author>
    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization>ACLU</organization>
      <address>
        <email>dkg@fifthhorseman.net</email>
      </address>
    </author>
    <author fullname="Kai Engert">
      <organization>Thunderbird</organization>
      <address>
        <email>kaie@thunderbird.net</email>
      </address>
    </author>

    <date year="2025" month="June" day="25"/>

    <area>int</area>
    <workgroup>none</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 40?>

<t>This document deals with end-to-end cryptographically signed email.
It introduces a novel structure for signed email that is designed to avoid creating any disturbance in legacy email clients.
This "unobtrusive" signature structure removes disincentives for signing email.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://andrewgdotcom.gitlab.io/unobtrusive-signatures/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-gallagher-email-unobtrusive-signatures/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://gitlab.com/andrewgdotcom/unobtrusive-signatures/"/>.</t>
    </note>


  </front>

  <middle>


<?line 46?>

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

<t>Several different standard structures for end-to-end cryptographically signed email exist (see Sections <xref target="I-D.ietf-lamps-e2e-mail-guidance" section="4.1.1.1" sectionFormat="bare"/>, <xref target="I-D.ietf-lamps-e2e-mail-guidance" section="4.1.1.2" sectionFormat="bare"/> and <xref target="I-D.ietf-lamps-e2e-mail-guidance" section="4.1.2.1" sectionFormat="bare"/> of <xref target="I-D.ietf-lamps-e2e-mail-guidance"/>).
But the existing mechanisms have some undesirable properties which can make such mail difficult for the recipient to handle in some instances, particularly when read by legacy email clients that don't understand the signing structure.
This document offers another signed email structure, which is designed to be transparent to legacy email clients.</t>

<t>The goal of this mechanism is to help email clients commit to signing every outbound message, which reduces complexity for the user of the mail client.
The mechanism is capable of working with any signature mechanism, as well as transporting multiple signatures over a single message.
It is specified initially for <xref target="OpenPGP"/>, but can be easily extended to be used with <xref target="CMS"/> or other signature formats.</t>

<t>This mechanism is intended only for signed-only messages.
A message that is encrypted-and-signed <bcp14>MUST NOT</bcp14> use this mechanism, since any existing MUA that can decrypt an encrypted-and-signed message already handles the signatures on such a message correctly.</t>

<t>This document updates <xref target="RFC3156"/> by providing an additional mechanism for producing and consuming OpenPGP-signed MIME email.</t>

</section>
<section anchor="conventions-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t><list style="symbols">
  <t>"Signed Mail" is used to refer to Internet Mail Messages that are cryptographically signed by the sender of the message, and expected to be validated by the recipient of the message.
This document does not consider any cryptographic signature mechanism that is not end-to-end (such as <xref target="DKIM"/>), and should be agnostic to and non-interfering with any such mechanism.</t>
  <t>"OpenPGP Signature" refers to a single OpenPGP Signature Packet as described by <xref section="5.2" sectionFormat="of" target="OpenPGP"/>.</t>
  <t>"MUA" refers to a Mail User Agent, which is also known as an email client.
For end-to-end signed mail, the sender's MUA performs message composition and injection into the mail system, and the receiver's MUA performs message ingestion from the mail system and rendering to the user.</t>
  <t>"Legacy MUA" refers to a MUA that does not know about this specification.</t>
  <t>"MTA" refers to a Message Transfer Agent, for example an SMTP server that relays Internet mail messages from one point to another.</t>
  <t>"<spanx style="verb">CRLF</spanx>" refers to "Carriage Return followed by Line Feed", the standard email line-ending sequence of two octets, <spanx style="verb">CR</spanx> (0x0D) and <spanx style="verb">LF</spanx> (0x0A).</t>
</list></t>

</section>
<section anchor="problems-with-existing-signature-schemes"><name>Problems With Existing Signature Schemes</name>

<t>Existing end-to-end signature schemes for mail can trigger a set of annoyances for a recipient who uses a MUA that doesn't understand these structures.
These annoyances can cause the recipient to complain to the sender.
The easiest way for the sender to try to accommodate the recipient in this case is to simply not sign mail.</t>

<t>The Unobtrusive Signature scheme defined in this document is intended to minimize or eliminate all of these problems.</t>

<section anchor="unreadable-signed-mail"><name>Unreadable Signed Mail</name>

<t>A signed mail message that uses the S/MIME PKCS #7 <spanx style="verb">signed-data</spanx> Cryptographic Layer described in <xref section="4.1.1.2" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/> is unreadable by a receiving MUA that doesn't understand <xref target="CMS"/>.</t>

<t>By contrast, a mail message signed with an Unobtrusive Signature should render normally by any legacy MUA.</t>

</section>
<section anchor="unknown-attachment"><name>Unknown Attachment</name>

<t>A signed mail message that uses the S/MIME Multipart Signed Cryptographic Layer described in <xref section="4.1.1.1" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/> or the PGP/MIME Signing Cryptographic Layer (multipart/signed) described in <xref section="4.1.2.1" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/> has a separate MIME part that contains the message signature.</t>

<t>A receiving MUA that doesn't understand these structures will often render the signature as an "attachment".
This can cause confusion and anxiety to the user of the MUA, and they will sometimes respond to the sender with the complaint "I can't open your attachment".</t>

<t>By contrast, a mail message signed with an Unobtrusive Signature is merely encapsulated in a <spanx style="verb">multipart/mixed</spanx> outer layer.
Legacy MUAs do not render such an encapsulation as an attachment.</t>

<section anchor="reducing-confusion-with-name-parameter"><name>Reducing Confusion with name Parameter</name>

<t>For existing end-to-end multipart signature schemes, one partial mitigation to this problem is to mark the signature part with an explicit filename that a legacy MUA is likely to display to the recipient.
Concretely, some signing MUAs that generate <spanx style="verb">multipart/signed</spanx> messages using PGP/MIME (<xref target="RFC3156"/>) will add a <spanx style="verb">name="openpgp-digital-signature.asc"</spanx> parameter to the <spanx style="verb">Content-Type</spanx> header of the <spanx style="verb">application/pgp-signature</spanx> MIME part.</t>

<t>For recipients who understand what an OpenPGP digital signature is (even if their MUA can't interpret it), this might reduce the amount of pushback they provide to the sender.</t>

<t>The Unobtrusive Signature scheme described in this document intends to offer even less friction to the recipient using a Legacy MUA by hiding the signature entirely.</t>

</section>
</section>
<section anchor="broken-signature"><name>Broken Signature</name>

<t>In some cases, mail is tampered with in transit, whether deliberately or maliciously.
In this case, for a MUA that does understand these messages, some MUAs will visibly complain to the recipient that there is a failed signature.</t>

<t>If unsigned mail receives no comparable warning, then the act of adding a signature to a message that might traverse a modifiable path is risky.
An MUA compliant with <xref section="6.4" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/> will not create such a warning, but many MUAs do not yet comply with that guidance.</t>

<t>By contrast, a legacy MUA won't render anything about the cryptographic status of an Unobtrusively Signed message at all.
And an MUA compatible with this specification that encounters a message with a broken Unobtrusive Signtature will never render an error that it wouldn't have rendered on an unsigned message anyway, which removes this disincentive to sign.</t>

</section>
</section>
<section anchor="unobtrusively-signed-message"><name>Unobtrusively Signed Message</name>

<t>An Unobtrusively Signed Message has a specific MIME structure and uses a specific header field.</t>

<section anchor="mime-structure"><name>MIME structure</name>

<t>The top-level <spanx style="verb">Content-Type</spanx> of an unobtrusively signed message is <spanx style="verb">multipart/mixed</spanx>, and it has a single MIME subpart, which this specification refers to as the "Protected Part".
The Protected Part's header sections' first header field is <spanx style="verb">Sig</spanx>, described in <xref target="sig"/>.</t>

<t>We hereby specify a third PGP/MIME format in addition to the two listed in <xref section="4.1.2" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/>:</t>

<section anchor="pgpmime-unobtrusive-signing-cryptographic-layer-multipartmixed"><name>PGP/MIME Unobtrusive Signing Cryptographic Layer (multipart/mixed)</name>

<figure><artwork type="ascii-art"><![CDATA[
└┬╴multipart/mixed
 └─╴[protected part]
]]></artwork></figure>

<t>This MIME layer offers authenticity and integrity if and only if the Protected Part contains one or more valid <spanx style="verb">Sig</spanx> headers.</t>

<t>This format is a Simple Cryptographic Envelope as specified in <xref section="4.4.1" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/>, and the Protected Part (with all leading <spanx style="verb">Sig</spanx> Header Fields removed) is the Cryptographic Payload.</t>

<t>This MIME structure <bcp14>MUST NOT</bcp14> be used as part of a Multilayer Cryptographic Envelope.
If it is found anywhere but the outside of the message it <bcp14>MUST NOT</bcp14> be treated as a Cryptographic Layer.</t>

</section>
</section>
<section anchor="sig"><name>Sig Header Field</name>

<t>This specification defines a new header field, named <spanx style="verb">Sig</spanx>.
<spanx style="verb">Sig</spanx> is only meaningful if it appears in the Protected Part of an Unobtrusively Signed Message, before any non-<spanx style="verb">Sig</spanx> header field.</t>

<t>It contains parameters, only two of which are currently defined.</t>

<t><list style="symbols">
  <t>The <spanx style="verb">t</spanx> parameter indicates the type of the signature with its value, and the only value currently defined is <spanx style="verb">p</spanx>, meaning an OpenPGP signature.
See <xref target="t-param"/>.</t>
  <t>The <spanx style="verb">b</spanx> parameter contains a base64-encoded blob that contains the cryptographic signature object of the type described by <spanx style="verb">t</spanx>.
Whitespace is ignored in this value and <bcp14>MUST</bcp14> be ignored when reassembling the original signature.
In particular, the signing process can safely insert Folding White Space (<xref section="3.2.2" sectionFormat="of" target="RFC5322"/>) in this value in arbitrary places to conform to line-length limits.</t>
</list></t>

<t>Note that if multiple <spanx style="verb">Sig</spanx> header fields appear in a single message, each <spanx style="verb">Sig</spanx> header field represents a signature over the Protected Part (with all leading <spanx style="verb">Sig</spanx> Header Fields removed).
That is, each <spanx style="verb">Sig</spanx> signs the same content, and the order of the <spanx style="verb">Sig</spanx> header fields among themselves doesn't matter as long as every <spanx style="verb">Sig</spanx> header field precedes all non-<spanx style="verb">Sig</spanx> header fields in the Header Section of the Protected Part.
<spanx style="verb">Sig</spanx> header fields <bcp14>MUST NOT</bcp14> appear in a non-leading position.</t>

</section>
<section anchor="line-ending-normalization"><name>Line Ending Normalization</name>

<t>Line endings in the message <bcp14>MUST</bcp14> be converted to <spanx style="verb">CRLF</spanx> format before signing or verification.
This ensures that an OpenPGP signature over the message will be invariant for both binary and text mode signatures.</t>

</section>
</section>
<section anchor="sender-guidance"><name>Sender Guidance</name>

<section anchor="always-use-header-protection"><name>Always Use Header Protection</name>

<t>A message signed with an unobtrusive signature <bcp14>MUST</bcp14> always use <xref target="I-D.ietf-lamps-header-protection"/>, signing every header field known to the sending MUA at message composition time.</t>

</section>
<section anchor="message-composition"><name>Message Composition</name>

<t>This updates the message composition function found in <xref section="5.1" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/>, using the same parameters.</t>

<t><list style="symbols">
  <t><spanx style="verb">origbody</spanx>: the traditional unprotected message body as a well-formed MIME tree (possibly just a single MIME leaf part).
As a well-formed MIME tree, <spanx style="verb">origbody</spanx> already has structural header fields present.</t>
  <t><spanx style="verb">origheaders</spanx>: the intended non-structural header fields for the message, represented here as a list of <spanx style="verb">(h,v)</spanx> pairs, where <spanx style="verb">h</spanx> is a header field name and <spanx style="verb">v</spanx> is the associated value.</t>
  <t><spanx style="verb">crypto</spanx>: an indication that the message is to be signed with one or more Unobtrusive Signatures.
This contains a list of one or more secret keys.
Each key will make one signature.</t>
</list></t>

<t>The algorithm returns a MIME object that is ready to be injected into the mail system:</t>

<t><list style="numbers" type="1">
  <t>Create MIME tree <spanx style="verb">inner</spanx> as a copy of <spanx style="verb">origbody</spanx></t>
  <t>Ensure <spanx style="verb">Content-Type</spanx> Header Field of <spanx style="verb">inner</spanx> has parameter <spanx style="verb">hp</spanx> set to <spanx style="verb">"clear"</spanx></t>
  <t>For each header name and value <spanx style="verb">(h,v)</spanx> in <spanx style="verb">origheaders</spanx>:
  <list style="numbers" type="a">
      <t>If <spanx style="verb">h</spanx> is <spanx style="verb">Sig</spanx>, skip that header, otherwise</t>
      <t>Add header <spanx style="verb">h</spanx> to <spanx style="verb">inner</spanx> with value <spanx style="verb">v</spanx></t>
    </list></t>
  <t>Canonicalize <spanx style="verb">inner</spanx> (see <xref target="message-canonicalization"/>)</t>
  <t>Convert <spanx style="verb">inner</spanx> to bytestring <spanx style="verb">innerbytes</spanx></t>
  <t>For each signing key <spanx style="verb">key</spanx> in <spanx style="verb">crypto</spanx>:
  <list style="numbers" type="a">
      <t>Sign <spanx style="verb">innerbytes</spanx> with <spanx style="verb">key</spanx>, yielding signature <spanx style="verb">sig</spanx></t>
      <t>Prepend a Header Field named <spanx style="verb">Sig</spanx> to <spanx style="verb">inner</spanx> with two parameters, <spanx style="verb">t</spanx> (set to the literal string <spanx style="verb">p</spanx>) and <spanx style="verb">b</spanx> (set to the base64-encoded value of <spanx style="verb">sig</spanx>).</t>
    </list></t>
  <t>Create new MIME tree <spanx style="verb">output</spanx> with <spanx style="verb">Content-Type</spanx> <spanx style="verb">multipart/mixed</spanx>, with a single subpart, set to <spanx style="verb">inner</spanx></t>
  <t>For each header name and value <spanx style="verb">(h,v)</spanx> in <spanx style="verb">origheaders</spanx>:
  <list style="numbers" type="a">
      <t>Add header <spanx style="verb">h</spanx> to <spanx style="verb">outer</spanx> with value <spanx style="verb">v</spanx></t>
    </list></t>
  <t>Return <spanx style="verb">output</spanx></t>
</list></t>

</section>
<section anchor="do-not-use-unobtrusive-signature-when-encrypting"><name>Do Not Use Unobtrusive Signature When Encrypting</name>

<t>In accordance with <xref section="5.2" sectionFormat="of" target="I-D.ietf-lamps-e2e-mail-guidance"/>, when sending end-to-end encrypted messages an MUA <bcp14>MUST</bcp14> place end-to-end signatures inside the encrypted data.
This mechanism is therefore not applicable to encrypted messages.</t>

</section>
<section anchor="message-canonicalization"><name>Message Canonicalization</name>

<t>The Protected Part (with all leading <spanx style="verb">Sig</spanx> Header Fields removed) <bcp14>SHOULD</bcp14> be canonicalized following the patterns described in <xref section="3" sectionFormat="of" target="RFC3156"/>:</t>

<t><list style="symbols">
  <t>Content-Encoding is used to make the message 7-bit clean</t>
  <t>End of line trailing whitespace is stripped or encoded to non-whitespace</t>
  <t>If any line begins with the string "From ", either the Quoted-Printable or Base64 MIME encoding <bcp14>MUST</bcp14> be applied, and if Quoted-Printable is used, at least one of the characters in the string "From " <bcp14>MUST</bcp14> be encoded</t>
</list></t>

<t>The canonicalized Protected Part <bcp14>MUST</bcp14> then be line ending normalized as per <xref target="line-ending-normalization"/> before creating the signature.
A signature over a message is more likely to be verifiable if the message is canonicalized into a format robust against MTA modification in transit.</t>

</section>
<section anchor="openpgp-signature-details"><name>OpenPGP Signature Details</name>

<t>The OpenPGP Signature is made over the canonical bytestring, and binary mode (OpenPGP Signature Type 0x00) <bcp14>SHOULD</bcp14> be used.</t>

</section>
</section>
<section anchor="recipient-guidance"><name>Recipient Guidance</name>

<section anchor="detecting-an-unobtrusive-signature"><name>Detecting an Unobtrusive Signature</name>

<t>A receiving MUA detects the presence of an unobtrusive signature on a message by verifying that:</t>

<t><list style="symbols">
  <t>the message <spanx style="verb">Content-Type</spanx> is <spanx style="verb">multipart/mixed</spanx>, and</t>
  <t>there is exactly one top-level subpart (though that subpart itself may be multipart), and</t>
  <t>the <spanx style="verb">Content-Type</spanx> of that top-level subpart has parameter <spanx style="verb">hp="clear"</spanx>, and</t>
  <t>the first header field of the top-level subpart is named <spanx style="verb">Sig</spanx>, and</t>
  <t>the top-level subpart has a <spanx style="verb">From</spanx> header field, and its <spanx style="verb">addr-spec</spanx> matches the <spanx style="verb">addr-spec</spanx> in the message's <spanx style="verb">From</spanx> header field.</t>
</list></t>

<t>This last requirement (matching <spanx style="verb">From</spanx> <spanx style="verb">addr-spec</spanx>s) is an anti-spoofing measure, by analogy with <xref section="4.4" sectionFormat="of" target="I-D.ietf-lamps-header-protection"/>.</t>

</section>
<section anchor="validating-an-unobtrusive-signature"><name>Validating an Unobtrusive Signature</name>

<t>When validating an unobtrusive signature, the signature data (that is, the value of the <spanx style="verb">b</spanx> field) is converted from Base64 to binary format to recover the signature packet.
The signed object is extracted from the <spanx style="verb">multipart/mixed</spanx> part by selecting every octet that comes after the <spanx style="verb">CRLF</spanx> that terminates the last leading <spanx style="verb">Sig</spanx> header, and before the <spanx style="verb">CRLF</spanx> that immediately precedes the trailing MIME boundary.
The signed object is then normalized as described in <xref target="line-ending-normalization"/>.
The normalized data is then passed to the signature verification routine as a raw bytestream.</t>

</section>
<section anchor="message-rendering-and-the-cryptographic-summary"><name>Message Rendering and the Cryptographic Summary</name>

<t>If the message has at least one Unobtrusive Signature which validates, then the MUA <bcp14>SHOULD</bcp14> render the message as though the top-level subpart is the message itself.
The Cryptographic Summary of the message <bcp14>SHOULD</bcp14> indicate that the message is <spanx style="verb">signed-only</spanx>, and that all header fields present in the top-level subpart share that Cryptographic Status.</t>

<section anchor="example-rendering"><name>Example Rendering</name>

<t>For example, consider a message with this structure:</t>

<figure><artwork type="ascii-art"><![CDATA[
A └┬╴multipart/mixed
B  └┬╴multipart/alternative; hp="clear" [Cryptographic Payload]
C   ├─╴text/plain
D   └─╴text/html
]]></artwork></figure>

<t>If at least one Unobtrusive Signature is present as a leading <spanx style="verb">Sig</spanx> header field in <spanx style="verb">B</spanx>, and it validates correctly, the message should be rendered the same way as this message:</t>

<figure><artwork type="ascii-art"><![CDATA[
B └┬╴multipart/alternative
C  ├─╴text/plain
D  └─╴text/html
]]></artwork></figure>

<t>And its Cryptographic Status will be <spanx style="verb">signed-only</spanx>.</t>

</section>
<section anchor="unprotected-header-fields-added-in-transit"><name>Unprotected Header Fields Added In Transit</name>

<t>As noted in <xref section="7" sectionFormat="of" target="I-D.ietf-lamps-header-protection"/>, it's possible that a MUA encounters some Header Fields on the outer message (in the Header Section of <spanx style="verb">A</spanx> in the example above) which could not have been known by the sender.</t>

<t>If any such fields would normally be rendered in some fashion by the MUA on an <spanx style="verb">unsigned</spanx> message, it <bcp14>MAY</bcp14> consider rendering them even on a <spanx style="verb">signed-only</spanx> Unobtrusively Signed message, but it should take care to indicate that they do not share the <spanx style="verb">signed-only</spanx> Cryptographic Status with the rest of the message.</t>

</section>
</section>
<section anchor="signature-failure-handling"><name>Signature Failure Handling</name>

<t>Sometimes a receiving MUA encounters an unobtrusively signed message where all unobtrusive signatures fail to validate.
The receiving MUA <bcp14>MUST NOT</bcp14> present the user with a cryptographic status that is different from a message with no signature at all.
That is, the message's Cryptographic Status <bcp14>SHOULD</bcp14> be <spanx style="verb">unprotected</spanx>.</t>

<t>If a message gets tampered with in such a way that all unobtrusive signatures are broken, the recipient should see the message as though it were a normal unsigned message.</t>

</section>
<section anchor="handling-multiple-signatures"><name>Handling Multiple Signatures</name>

<t>If more than one unobtrusive signature is present in a message, the receiving MUA <bcp14>MUST</bcp14> verify each signature against the known certificates associated with the indicated sender.
As long as one of the signatures validates, the message should be treated as correctly signed, even if all the other signatures are invalid.</t>

</section>
<section anchor="ignore-out-of-place-unobtrusive-signatures"><name>Ignore Out-of-place Unobtrusive Signatures</name>

<t>An unobtrusive signature <spanx style="verb">Sig</spanx> header field <bcp14>MUST NOT</bcp14> be evaluated unless:</t>

<t><list style="symbols">
  <t>it is within the MIME headers of the only subpart of a <spanx style="verb">multipart/mixed</spanx> message, and</t>
  <t>it appears before any non-<spanx style="verb">Sig</spanx> header field</t>
</list></t>

<t>Evaluating a <spanx style="verb">Sig</spanx> header outside of this location might mean that a modified message could still appear to be successfully verified.
For example, an unobtrusively signed message might be included as a sub-part of another multipart message, or be transformed into a non-MIME message with different message headers than the original email.
This could conceivably be used by an attacker to make subtle changes to the meaning of a message without altering the content of the Protected Part.</t>

</section>
</section>
<section anchor="mta-guidance"><name>MTA Guidance</name>

<t>An MTA or any other message relay service that observes a message with Content-Type <spanx style="verb">multipart/mixed</spanx> that is a single part <bcp14>MUST NOT</bcp14> alter the content of this message body in any way, including, but not limited to, changing the content transfer encoding of the body part or any of its encapsulated body parts.
This corresponds to the guidance in <xref section="2.1" sectionFormat="of" target="RFC1847"/> about the first section of <spanx style="verb">multipart/signed</spanx> messages.</t>

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

<t>Based on the principle that "a broken signature is the same as no signature", a receiving MUA <bcp14>MUST NOT</bcp14> display any warnings if an Unobtrusive Signature fails to verify, unless the user has requested debugging output.
This is because if an MITM can modify a message in transit, then they can choose whether or not to also remove the (now invalid) signature.
If the receiving MUA displayed a more severe warning for a broken signature than for a missing one (or vice versa), the MITM could choose to modify the message in such a way that would result in the less-severe warning.
The warning message is thus attacker-controlled.</t>

<t>Otherwise, the security properties are equivalent to those of a multipart/signed message.</t>

</section>
<section anchor="performance-considerations"><name>Performance Considerations</name>

<section anchor="rationale-for-signature-in-mime-part"><name>Rationale for Signature in MIME Part</name>

<t>An alternate design considered for unobtrusive signatures was to simply place the <spanx style="verb">Sig</spanx> header in the Outer Header Section of the message itself, without requiring any additional MIME structure.
This was rejected in favor of the MIME structure described in <xref target="mime-structure"/> for the following reasons:</t>

<t><list style="symbols">
  <t>Unobtrusive signatures always offer Header Protection aligned with <xref target="I-D.ietf-lamps-header-protection"/>, so the signature needs to be able to cover those Header Fields generated by the sending MUA.
But we know that most received messages contain a mix of Header Fields generated by the sending MUA and Header Fields injected by MTAs that touch the message in transit.</t>
  <t>Placing the signature as a Header Field in the Outer Header Section raises challenges in identifying which Header Fields are covered by the signature.</t>
  <t>An MTA is more likely to modify, reorder, or enforce limits on Header Fields in the message's Outer Header Section than it is to corrupt Header Fields in the subpart.</t>
  <t>Any DKIM signature that includes the body of the message will cover the end-to-end signature if it is part of the message body.
If the end-to-end signature was in the message's Outer Header Section it would not normally be signed by DKIM, and would be vulnerable to inadvertent breakage by naive MTAs.</t>
</list></t>

</section>
<section anchor="no-one-pass-message-generation"><name>No One-pass Message Generation</name>

<t>Because the signature is included first in the message, it is not possible to generate the message in a single pass.</t>

<t>A sending MUA that needs to generate a signed outbound message in a single pass should use another end-to-end signing mechanism, like <spanx style="verb">multipart/signed</spanx>.</t>

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

<section anchor="sig-header"><name>Register the Sig Header Field</name>

<t>IANA is requested to update the Permanent Message Header Field Names registry to add the following entry:</t>

<texttable title="Permanent Message Header Field Names">
      <ttcol align='left'>Header Field Name</ttcol>
      <ttcol align='left'>Protocol</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>Sig</c>
      <c>MIME</c>
      <c>This document</c>
</texttable>

<t>Note that the Template, Status, and Trace columns are empty and therefore not included in the table.</t>

</section>
<section anchor="sig-header-parameters"><name>Create Registry for Sig Message Header Parameters</name>

<t>IANA is requested to create a registry titled "Sig Message Header Parameters" in the "Message Headers" group of registries, with the following initial contents:</t>

<texttable title="Sig Message Header Parameters">
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">t</spanx></c>
      <c>Type of Signature (see <xref target="t-param"/>)</c>
      <c>This document</c>
      <c><spanx style="verb">b</spanx></c>
      <c>Base64-encoded Signature Content (whitespace permitted and ignored)</c>
      <c>This document</c>
</texttable>

<t>(( TODO: do we need a registry for this? Are we expecting any new parameters? ))</t>

</section>
<section anchor="t-param"><name>Create Registry For t Parameter</name>

<t>IANA is requested to create a registry titled "Sig Message Header Signature Types" in the "Message Headers" group of registries, with the following initial contents:</t>

<texttable title="Sig Message Header Signature Types">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Description</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c><spanx style="verb">p</spanx></c>
      <c>A single OpenPGP Signature packet</c>
      <c>This document</c>
</texttable>

</section>
<section anchor="update-multipartmixed-to-refer-here"><name>Update multipart/mixed to Refer Here</name>

<t>IANA is requested to update the "multipart/mixed" entry in the Media Types registry, to add a reference to this document.</t>

</section>
<section anchor="registration-policies"><name>Registration Policies</name>

<t>IANA is requested to set all registries within this document to use the SPECIFICATION <bcp14>REQUIRED</bcp14> registration policy, see <xref section="4.6" sectionFormat="of" target="RFC8126"/>.
This policy means that review and approval by a designated expert is required, and that the IDs and their meanings must be documented in a permanent and readily available public specification, in sufficient detail so that interoperability between independent implementations is possible.</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">




<reference anchor="I-D.ietf-lamps-e2e-mail-guidance">
   <front>
      <title>Guidance on End-to-End E-mail Security</title>
      <author fullname="Daniel Kahn Gillmor" initials="D. K." surname="Gillmor">
         <organization>American Civil Liberties Union</organization>
      </author>
      <author fullname="Bernie Hoeneisen" initials="B." surname="Hoeneisen">
         <organization>pEp Project</organization>
      </author>
      <author fullname="Alexey Melnikov" initials="A." surname="Melnikov">
         <organization>Isode Ltd</organization>
      </author>
      <date day="8" month="January" year="2025"/>
      <abstract>
	 <t>   End-to-end cryptographic protections for e-mail messages can provide
   useful security.  However, the standards for providing cryptographic
   protection are extremely flexible.  That flexibility can trap users
   and cause surprising failures.  This document offers guidance for
   mail user agent implementers to help mitigate those risks, and to
   make end-to-end e-mail simple and secure for the end user.  It
   provides a useful set of vocabulary as well as recommendations to
   avoid common failures.  It also identifies a number of currently
   unsolved usability and interoperability problems.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-e2e-mail-guidance-17"/>
   
</reference>
<reference anchor="RFC8126">
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname="M. Cotton" initials="M." surname="Cotton"/>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <author fullname="T. Narten" initials="T." surname="Narten"/>
    <date month="June" year="2017"/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="26"/>
  <seriesInfo name="RFC" value="8126"/>
  <seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>
<reference anchor="OpenPGP">
  <front>
    <title>OpenPGP</title>
    <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
    <author fullname="D. Huigens" initials="D." surname="Huigens"/>
    <author fullname="J. Winter" initials="J." surname="Winter"/>
    <author fullname="Y. Niibe" initials="Y." surname="Niibe"/>
    <date month="July" year="2024"/>
    <abstract>
      <t>This document specifies the message formats used in OpenPGP. OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.</t>
      <t>This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format. It is not a step-by-step cookbook for writing an application. It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network. It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t>
      <t>This document obsoletes RFCs 4880 ("OpenPGP Message Format"), 5581 ("The Camellia Cipher in OpenPGP"), and 6637 ("Elliptic Curve Cryptography (ECC) in OpenPGP").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9580"/>
  <seriesInfo name="DOI" value="10.17487/RFC9580"/>
</reference>
<reference anchor="RFC3156">
  <front>
    <title>MIME Security with OpenPGP</title>
    <author fullname="M. Elkins" initials="M." surname="Elkins"/>
    <author fullname="D. Del Torto" initials="D." surname="Del Torto"/>
    <author fullname="R. Levien" initials="R." surname="Levien"/>
    <author fullname="T. Roessler" initials="T." surname="Roessler"/>
    <date month="August" year="2001"/>
    <abstract>
      <t>This document describes how the OpenPGP Message Format can be used to provide privacy and authentication using the Multipurpose Internet Mail Extensions (MIME) security content types described in RFC 1847. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3156"/>
  <seriesInfo name="DOI" value="10.17487/RFC3156"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC5322">
  <front>
    <title>Internet Message Format</title>
    <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
    <date month="October" year="2008"/>
    <abstract>
      <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5322"/>
  <seriesInfo name="DOI" value="10.17487/RFC5322"/>
</reference>

<reference anchor="I-D.ietf-lamps-header-protection">
   <front>
      <title>Header Protection for Cryptographically Protected E-mail</title>
      <author fullname="Daniel Kahn Gillmor" initials="D. K." surname="Gillmor">
         <organization>American Civil Liberties Union</organization>
      </author>
      <author fullname="Bernie Hoeneisen" initials="B." surname="Hoeneisen">
         <organization>pEp Project</organization>
      </author>
      <author fullname="Alexey Melnikov" initials="A." surname="Melnikov">
         <organization>Isode Ltd</organization>
      </author>
      <date day="6" month="January" year="2025"/>
      <abstract>
	 <t>   S/MIME version 3.1 introduced a mechanism to provide end-to-end
   cryptographic protection of e-mail message headers.  However, few
   implementations generate messages using this mechanism, and several
   legacy implementations have revealed rendering or security issues
   when handling such a message.

   This document updates the S/MIME specification (RFC8551) to offer a
   different mechanism that provides the same cryptographic protections
   but with fewer downsides when handled by legacy clients.
   Furthermore, it offers more explicit usability, privacy, and security
   guidance for clients when generating or handling e-mail messages with
   cryptographic protection of message headers.

   The Header Protection scheme defined here is also applicable to
   messages with PGP/MIME cryptographic protections.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-header-protection-25"/>
   
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC1847">
  <front>
    <title>Security Multiparts for MIME: Multipart/Signed and Multipart/Encrypted</title>
    <author fullname="J. Galvin" initials="J." surname="Galvin"/>
    <author fullname="S. Murphy" initials="S." surname="Murphy"/>
    <author fullname="S. Crocker" initials="S." surname="Crocker"/>
    <author fullname="N. Freed" initials="N." surname="Freed"/>
    <date month="October" year="1995"/>
    <abstract>
      <t>This document defines a framework within which security services may be applied to MIME body parts. [STANDARDS-TRACK] This memo defines a new Simple Mail Transfer Protocol (SMTP) [1] reply code, 521, which one may use to indicate that an Internet host does not accept incoming mail. This memo defines an Experimental Protocol for the Internet community. This memo defines an extension to the SMTP service whereby an interrupted SMTP transaction can be restarted at a later time without having to repeat all of the commands and message content sent prior to the interruption. This memo defines an Experimental Protocol for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="1847"/>
  <seriesInfo name="DOI" value="10.17487/RFC1847"/>
</reference>

<reference anchor="I-D.bre-openpgp-samples">
   <front>
      <title>OpenPGP Example Keys and Certificates</title>
      <author fullname="Bjarni Rúnar Einarsson" initials="B. R." surname="Einarsson">
         <organization>Mailpile ehf</organization>
      </author>
      <author fullname="&quot;juga&quot;" initials="" surname="&quot;juga&quot;">
         <organization>Independent</organization>
      </author>
      <author fullname="Daniel Kahn Gillmor" initials="D. K." surname="Gillmor">
         <organization>American Civil Liberties Union</organization>
      </author>
      <date day="8" month="May" year="2025"/>
      <abstract>
	 <t>   The OpenPGP development community benefits from sharing samples of
   signed or encrypted data.  This document facilitates such
   collaboration by defining a small set of OpenPGP certificates and
   keys for use when generating such samples.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-bre-openpgp-samples-03"/>
   
</reference>
<reference anchor="CMS">
  <front>
    <title>Cryptographic Message Syntax (CMS)</title>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <date month="September" year="2009"/>
    <abstract>
      <t>This document describes the Cryptographic Message Syntax (CMS). This syntax is used to digitally sign, digest, authenticate, or encrypt arbitrary message content. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="70"/>
  <seriesInfo name="RFC" value="5652"/>
  <seriesInfo name="DOI" value="10.17487/RFC5652"/>
</reference>
<reference anchor="DKIM">
  <front>
    <title>DomainKeys Identified Mail (DKIM) Signatures</title>
    <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
    <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
    <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
    <date month="September" year="2011"/>
    <abstract>
      <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
      <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="76"/>
  <seriesInfo name="RFC" value="6376"/>
  <seriesInfo name="DOI" value="10.17487/RFC6376"/>
</reference>



    </references>


<?line 398?>

<section anchor="test-vectors"><name>Test Vectors</name>

<t>These test vectors show different examples of unobtrusive signed messages.</t>

<section anchor="from-alice-to-bob"><name>From Alice to Bob</name>

<t>The message below is a common <spanx style="verb">multipart/alternative</spanx> email, signed with an unobtrusive signature.
The signature should be verifiable using the "Alice" v4 certificate found in <xref section="2.1.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-0.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="5d6"
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: Bob Babbage <bob@openpgp.example>
Subject: This is a Test
Date: Thu, 01 May 2025 22:16:15 -0400
Message-ID: <uosig-0@openpgp.example>

--5d6
Sig: t=p; b=wnUEABYKAB0WIQTrhbtfozp14V6UTmPyMVUMT0fjjgUCaBQq
 7wAKCRDyMVUMT0fjjr+3AP4nGDsaptk9I6EePoXftyevyH6luB2aSAzrD8o
 xQVNWDQD/VQ/s85C3v6SAxtFDcBsn2H32Hd/yW5BsDx62gmpL7Aw=
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: Bob Babbage <bob@openpgp.example>
Subject: This is a Test
Date: Thu, 01 May 2025 22:16:15 -0400
Message-ID: <uosig-0@openpgp.example>
Content-Type: multipart/alternative; boundary="913"; hp="clear"

--913
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Hi Bob,

This is Alice.  I need you to:

- read this message
- reply to it
- delete it promptly.

Thanks,
Alice
--913
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<html><head></head><body><p>Hi Bob,</p>
<p>This is Alice.  I need you to:</p>
<ul>
<li>read this message</li>
<li>reply to it</li>
<li>delete it promptly.</li>
</ul>
<p>Thanks,
Alice</p></body></html>
--913--

--5d6--
]]></sourcecode></figure>

</section>
<section anchor="from-david-to-alice"><name>From David to Alice</name>

<t>The message below is a simple <spanx style="verb">text/plain</spanx> email, signed with an unobtrusive signature.
The signature should be verifiable using the "David" certificate found in <xref section="5.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-1.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="a21"
MIME-Version: 1.0
From: David Deluxe <david@openpgp.example>
To: Alice Lovelace <alice@openpgp.example>
Subject: Checking in
Date: Fri, 02 May 2025 13:01:07 -0400
Message-ID: <uosig-1@openpgp.example>

--a21
Sig: t=p; b=wpIGABsIAAAAKSIhBkGZ2eqmaCp41aU09iv3YiKlTk3rx4Xb
 5qbFs0WGAm/iBQJoFPpTAAAACgkQQZnZ6qZoKnhDIRA9tgkt50eA1ckzilm
 9KndQt3t4iYlab66bvtP+kP9D7zaNzvC1vE+B6jPY1gUBOQMyF5CK3yC/xZ
 Ol2ww+x8Y3PZ7OpZ1dPUlshDL5gA7ZAw==
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: David Deluxe <david@openpgp.example>
To: Alice Lovelace <alice@openpgp.example>
Subject: Checking in
Date: Fri, 02 May 2025 13:01:07 -0400
Message-ID: <uosig-1@openpgp.example>
Content-Type: text/plain; charset="us-ascii"; hp="clear"

Alice!

So good to see you earlier.

I hope you will have a chance to check out
our new website: https://openpgp.example/
and tell me what you think.

All the best,

David

--a21--
]]></sourcecode></figure>

</section>
<section anchor="from-alice-to-david"><name>From Alice to David</name>

<t>The message below is a <spanx style="verb">multipart/alternative</spanx> email with an image attached, signed with an unobtrusive signature.
The signature should be verifiable using the "Alice" v4 certificate found in <xref section="2.1.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-2.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="3e4"
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Fri, 02 May 2025 17:03:35 -0400
Message-ID: <uosig-2@openpgp.example>
In-Reply-To: <uosig-1@openpgp.example>
References: <uosig-1@openpgp.example>

--3e4
Sig: t=p; b=wnUEABYKAB0WIQTrhbtfozp14V6UTmPyMVUMT0fjjgUCaBUz
 JwAKCRDyMVUMT0fjjmnRAQDKnIfyPyvE2lVlVOQl+H99TK+VFCvBaTZyTAV
 xnKgJ1gEAjVDQ3idx4Z4wSN+pLhWS1LdpVbWdH7mW58gS0GBz5AM=
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Fri, 02 May 2025 17:03:35 -0400
Message-ID: <uosig-2@openpgp.example>
In-Reply-To: <uosig-1@openpgp.example>
References: <uosig-1@openpgp.example>
Content-Type: multipart/mixed; boundary="d64"; hp="clear"

--d64
Content-Type: multipart/alternative; boundary="f4f"
MIME-Version: 1.0

--f4f
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Hi David,

I think the attached logo might look good
on the website.

Thanks,
Alice

--f4f
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<html><head></head><body><p>Hi David,</p>
<p>I think the attached logo might look good
on the website.</p>
<p>Thanks,
Alice</p></body></html>
--f4f--

--d64
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="logo.png"

iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAcElEQVR42uVTOxbA
MAgS739nO3TpRw20dqpbfARQEjOywiwYnCtkDKnbcLk66sqlT+zt9cidkE+6KwkZ
sgrzfcqVMpL2jo0447gYDpeArk+OnJHkIhAfTPRicihAf5YJrw7vjv0ZWRWM/uli
vdPf1QZ2kDD9xppd8wAAAABJRU5ErkJggg==

--d64--

--3e4--
]]></sourcecode></figure>

</section>
<section anchor="alice-to-david-followup"><name>Alice to David Followup</name>

<t>The message below is a <spanx style="verb">multipart/alternative</spanx> email that is a self-reply from about a week later.
In the meantime, Alice has gotten a new OpenPGP certificate, so the message is signed with both her old key and her new key.
This message's signatures should be verifiable respectively using either the "Alice" v4 certificate found in <xref section="2.1.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/> or the "Alice" v6 certificate found in <xref section="2.2.1" sectionFormat="of" target="I-D.bre-openpgp-samples"/>.</t>

<figure><sourcecode type="message/rfc822" name="uosig-3.eml"><![CDATA[
Content-Type: multipart/mixed; boundary="0cd"
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Thu, 08 May 2025 18:41:05 -0400
Message-ID: <uosig-3@openpgp.example>
In-Reply-To: <uosig-2@openpgp.example>
References: <uosig-2@openpgp.example>

--0cd
Sig: t=p; b=wnUEABYKAB0WIQTrhbtfozp14V6UTmPyMVUMT0fjjgUCaB0z
 AQAKCRDyMVUMT0fjjtCJAQCLvEeDH/grJ9szJTEPumRz0lvQm1f3GHNuTnS
 W9+SV/wD/YpPK4oMy2Cbrzo9JagpO4uxXkbCWQIHI9HFlwkz8Hg0=
Sig: t=p; b=wpIGABsIAAAAKSIhBuRqR5oGQqpTb/U1uxxDl7NeiBI/TgFl
 Z9LvdROjBBHyBQJoHTMBAAAACgkQ5GpHmgZCqlOwFhA99dXXagDzmkcTALm
 p1ZYQ0IyBvaqxRgRwNHw7VdYBSZ66F1vAjY44pdc8ynahPGHexB4AdfXFeb
 K1GcqiREQgwF74RoCegJ6ZZkRfWCr3Cw==
MIME-Version: 1.0
From: Alice Lovelace <alice@openpgp.example>
To: David Deluxe <david@openpgp.example>
Subject: Re: Checking in
Date: Thu, 08 May 2025 18:41:05 -0400
Message-ID: <uosig-3@openpgp.example>
In-Reply-To: <uosig-2@openpgp.example>
References: <uosig-2@openpgp.example>
Content-Type: multipart/alternative; boundary="97a"; hp="clear"

--97a
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

Hey David,

Also, please spell my name correctly in the
website's acknowledgements section.

Kind regards,
Alice

--97a
Content-Type: text/html; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

<html><head></head><body><p>Hey David,</p>
<p>Also, please spell my name correctly in the
website's acknowledgements section.</p>
<p>Kind regards,
Alice</p></body></html>
--97a--

--0cd--
]]></sourcecode></figure>

</section>
</section>
<section anchor="document-history"><name>Document History</name>

<t>Note to RFC Editor: this section should be removed before publication.</t>

<section anchor="changes-between-draft-gallagher-email-unobtrusive-signatures-00-and-draft-gallagher-email-unobtrusive-signatures-01"><name>Changes Between draft-gallagher-email-unobtrusive-signatures-00 and draft-gallagher-email-unobtrusive-signatures-01</name>

<t><list style="symbols">
  <t>Made explicit that <spanx style="verb">Sig</spanx> <bcp14>MUST NOT</bcp14> appear in a non-leading position.</t>
  <t>Expanded design rationale section.</t>
  <t>Clarified use of Quoted-Printable encoding.</t>
  <t>Terminology and reference cleanup.</t>
</list></t>

</section>
<section anchor="changes-between-draft-gallagher-email-invisible-signatures-00-and-draft-gallagher-email-unobtrusive-signatures-00"><name>Changes Between draft-gallagher-email-invisible-signatures-00 and draft-gallagher-email-unobtrusive-signatures-00</name>

<t><list style="symbols">
  <t>Updated sender canonicalization guidance from <bcp14>MUST</bcp14> to <bcp14>SHOULD</bcp14>.</t>
  <t>Registries changed to SPECIFICATION <bcp14>REQUIRED</bcp14>.</t>
  <t>Improved test vectors.</t>
  <t>Renamed to "Unobtrusive Signatures".</t>
  <t>Explicitly allow folding whitespace.</t>
  <t>Document existing convention re attachment filenames.</t>
  <t>Fixed references.</t>
  <t>Various clarifications to wording.</t>
</list></t>

</section>
</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The authors would like to thank the attendees of the 9th OpenPGP Email Summit for feedback and suggestions.
Additionally, Anarcat offered useful feedback on the draft.</t>

</section>


  </back>

<!-- ##markdown-source:
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
oLX9HnxJtTP5poX4r8zXX+Mjym6G9vE7/OkqEoMo0oGHImsHDwW+Ssh0H4sh
XqyCH1MSmLrcJNWUGZb2cIOYYXxUw0sIMaaeqW7q407N33MprX35UY0PieOR
UsXXvJGVhRhn1OTlca9KF5w0OSjikBXlss2zGJkeu9fmfRUeW3vnj/mOKryM
EAOY/8qoee072MR1tfG9UPPD9MzqzqV6oP5s766s765/Da2tVcxzHDYu0VE3
cGlf0TOb4Ui/aWaBVr8FiN98AlP3qgzEx+Fl66J9Eh735+fz6cFacBvcnl0E
T492dq5Pnt4e7k/35PX7+XXrFoF4eDJ4tTo4aH24bV+s+97dxvuN2dWbp/Hr
4dur1ddefNt96x1tj99uPhtcrbzc+7TZOv1eQPy/NXsfrC/e1kYFqodPf3V8
0N/oV2seDghf/svCBGJsnd0BGWmyYsZEiiAaRLoFLYiiEfkT8AacONPOoDIO
+No+/sWRAG/RxgL//D6dcOLbUB42b6B8hYCQJ1qOw8FXN8hH1fNH2n5q7hHB
P/6Gp3v+YO+lfbGEm2jCmCSX/u3e2eVs5eTlIEIk9+bqZnhwM4Cf9i7w95v9
1jsEeG/8y5U3+EHvIDi4uL3cWJvcXp/ddVvAjNbgant9Jzxbv44vZ2sr3se4
229dXhx8OJvP/Nm7cD8bge3q9l6PtrbSj8H100/ZTs/3RgdPt05mI8B26SD5
1O99vD2NX699iFY2NrYH79qxaiWjp2fhq6PR8bDVvz6/9Hs+/LD57lUy255+
mK68f3v59hTiJv9Rbeqd91cv3q+N2u2duzj2ns1wrXuvLm82D5LRq8FggPBQ
E9nQG0y1AyOKCALvfgLUMIn/SSjhtPipoN/gcJC7uqnbDe8+USP6u3eJvkGV
+xqxj72uF4MNX4Mowzup+dY0kxR3IIPtD3E6kVy8QvfyUBMXXmSjuLyHv+N4
8Ls9727K7U4vSyWGwSY/hCbUhMqAxjmE/T1xjbmP3I659e0x134LVlr/Dlhp
pef958JKnNl65jjTZ7sbEGt8zZmuP9CZVjndCmda9RgqINDqt2ClFcRKrYsS
Vsr2X7Uu9l9PD1T7aHmQvNpJP726PjifjC8/rQTTi/Fqf/3l0ZvJdXgFb7/d
eXp1uzxrL7+Lz082otP52n43+RTtvJKD+GxjcvfLqLv/9uL46Hjn6DCYjT49
OxqsvPhGGD25/Hi5Gb28+Bhfd5dvVid3d+1g+43y946XrweHAcz6fuf11Ls8
+7C3dzTHMPro+nTPhNGbL+Oj8eD9/sfgbHY4bO3seL/8IgftT+NR77r1GsPo
ePX9u4uV4/neVH68uxxczt4czbZvvXd7V++3tg5Xp60P7zY2Yq/3bB7K4fnL
I3W3t9Hy+r8cKgzhT1Zf9j76lwcXg9nh9sZltK8Gr7bevx9d9t/uJ+v794XR
/196f1Oad1tWpXm35b8Iv4HZzwFcK0ijuojxuKPCwhmG4HO+TSY/OsI1z0c1
jWnAL8getggGyhtQXSw1bdoE6058qs4NZOKVwN19m/yXgju7fwvNvjcR7MBV
lLgnibstDRIBQ2iRiGib6u6Rn2YRHnfmbp4IS7TigP4Y7C7nnU2nvHt+lO6I
MYdcuDxq/ugRdjbokxR7uub56/7C8Aqhh1/7V4lrvwf19VT+JxIIHHF/8K+4
LfH34uAulnSTm25QTmxrs2EDPLQfSD5AQ6XxqOJaF3PeAZ++pmP6EV2ewBVm
U8Wni20m8a8hmx/y9fW/nWgrSDTuajCnxET59q78eAXhSr48JtKn/HBvl3n3
AB+goRRfdaMAPn88xqI+PuWUr3kgvksD/zhV9SmwJc0e4i8W6BE8Y0OKV7wG
CB+z8m3/YEf+NxJFopw/AmJjFlrFIfV0WAbRZ7fA62gC+2Om93S1HhaKf1WR
eIx4L5yMu9i7CwG1DFIFEA/wvlVl0mR9ix39aWdzLJc6HKmbQ+aBIDJD2aNo
O4CuDSrXf9d7Qn8JFRuP+kp59Acl6C/STQb6T5/hn9+0bex4FLwVyqQn9V93
ZcHF+47t6zq+JBFq1v4NyFRi42J8AAA=

-->

</rfc>

