<?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.29 (Ruby 3.3.8) -->


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

]>


<rfc ipr="trust200902" docName="draft-ietf-mailmaint-unobtrusive-signatures-00" 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="December" day="02"/>

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

    <abstract>


<?line 44?>

<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-ietf-mailmaint-unobtrusive-signatures/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        MAILMAINT Working Group mailing list (<eref target="mailto:mailmaint@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/mailmaint/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/mailmaint/"/>.
      </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 50?>

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

<t>Several different standard structures for end-to-end cryptographically signed email exist (see Sections <xref target="RFC9787" section="4.1.1.1" sectionFormat="bare"/>, <xref target="RFC9787" section="4.1.1.2" sectionFormat="bare"/> and <xref target="RFC9787" section="4.1.2.1" sectionFormat="bare"/> of <xref target="RFC9787"/>).
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 an OpenPGP Detached Signature as described by <xref section="10.4" 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="RFC9787"/> 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="RFC9787"/> or the PGP/MIME Signing Cryptographic Layer (multipart/signed) described in <xref section="4.1.2.1" sectionFormat="of" target="RFC9787"/> 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="RFC9787"/> 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="RFC9787"/>:</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="RFC9787"/>, 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="RFC9788"/>, 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="RFC9787"/>, 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>The signing system takes <spanx style="verb">innerbytes</spanx> and the signing key <spanx style="verb">key</spanx>, yielding a respective signature payload <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="RFC9787"/>, 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="RFC9788"/>.</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.
When <spanx style="verb">t=p</spanx>, this decoding yields a binary-format OpenPGP Detached Signature.
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 renders 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>
<section anchor="consistency-with-summary-view-for-tampered-messages"><name>Consistency with Summary View for Tampered Messages</name>

<t>Many MUAs have two different views of a given message:</t>

<t><list style="symbols">
  <t>A summary view, when rendering an overview of the contents of a mailbox, for example showing only <spanx style="verb">From</spanx>, <spanx style="verb">Subject</spanx>, <spanx style="verb">Date</spanx>, and "unread" status information for any given message, and</t>
  <t>A message view, for displaying the message itself, with its header context, cryptographic summary, and full contents.</t>
</list></t>

<t>The user reasonably expects that, for any given message, the information available in the summary view should match the message view.</t>

<t>Some MUAs render the summary view after ingesting the full message, but other MUAs might render the summary view without ever accessing anything other than the Outer Header Section.
If the latter style of MUA gains access to a full message that has a valid unobtrusive signature, it can construct a candidate summary view using the signed header field information.
If the candidate summary view differs from the already displayed summary view, then the Outer Header Section has most likely been tampered with in transit.</t>

<t>The MUA <bcp14>MUST NOT</bcp14> render the message view in such a way that its header information does not match the summary view, as this will lead to user confusion about the message itself.</t>

<t>In such a situation, the MUA has two reasonable choices:</t>

<t><list style="symbols">
  <t>The MUA <bcp14>MAY</bcp14> treat the unobtrusive signature as invalid, and show a message view that aligns with the already displayed summary view by rendering only the Outer Header Section.
Such a message would have a cryptographic summary of <spanx style="verb">unprotected</spanx>.</t>
  <t>The MUA <bcp14>MAY</bcp14> accept the unobtrusive signature (yielding a cryptographic summary of <spanx style="verb">signed-only</spanx>), and update the summary view to use the candidate summary view instead.
Such an updated summary view may surprise a user who is used to the summary view only sustaining minor changes (e.g., from "unread" to "read") upon rendering the message view.</t>
</list></t>

<t>A more complex approach in such a situation would be for the MUA to alert the user that the message may have been tampered with in transit, and allow them to choose to view either form of the message.
This is similar to the approach described in <xref section="6.2.1.1" sectionFormat="of" target="RFC9787"/>.</t>

<t>Note that an MUA that renders the summary view only after evaluating the full message will never encounter this problem, as the summary view will be fully aligned with the message view from the start.</t>

<t>Note also that this concern applies to all forms of signed-only mail with header protection, not just to mail protected with an unobtrusive signature.</t>

<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="RFC9788"/>, 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>

<t>Note that when a message is signed by multiple keys, the composer <bcp14>MAY</bcp14> structure the message with each OpenPGP signature packet (see <xref section="5.2" sectionFormat="of" target="OpenPGP"/> in its own <spanx style="verb">Sig: t=p</spanx> header field, or it <bcp14>MAY</bcp14> pack the OpenPGP signature packets together into a single OpenPGP Detached Signature (see <xref section="10.4" sectionFormat="of" target="OpenPGP"/> and place them in a single <spanx style="verb">Sig: t=p</spanx> header field.
The verifying implementation <bcp14>MUST</bcp14> consider all appropriately placed <spanx style="verb">Sig: t=p</spanx> header fields, regardless of how many signature packets are included in each header field.
It <bcp14>MAY</bcp14> coalesce the decoded <spanx style="verb">b=</spanx> data from multiple <spanx style="verb">Sig: t=p</spanx> header fields into a single OpenPGP Detached Signature (by simply concatenating the base64-decoded <spanx style="verb">b</spanx> values) before attempting verification.</t>

<t>Some MIME parsers have a fixed upper bound on the size of any MIME header field.
A composer signing the message with more than one key should consider the size of the OpenPGP signatures when generating the <spanx style="verb">Sig: t=p</spanx> header fields to avoid breaking the message for recipients who use those constrained parsers.
If the total size of the cumulative signature packets are very large, the composer <bcp14>MAY</bcp14> split up the OpenPGP Detached Signature at OpenPGP Signature packet boundaries, and place each disaggregated OpenPGP Detached Signature into a separate header field.</t>

<t>A good rule of thumb is to ensure each <spanx style="verb">Sig: t=p</spanx> header field is no larger than 50 KiB.</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="RFC9788"/>, 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'>Status</ttcol>
      <ttcol align='left'>Trace</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>Sig</c>
      <c>MIME</c>
      <c>informational</c>
      <c>no</c>
      <c>This document</c>
</texttable>

<t>The registration template called for in <xref section="4.2.1" sectionFormat="of" target="RFC3864"/> is:</t>

<texttable title="Permanent Message Header Field Registration Template for Sig">
      <ttcol align='left'>Template Field</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>Header field name</c>
      <c><spanx style="verb">Sig</spanx></c>
      <c>Applicable protocol</c>
      <c>MIME</c>
      <c>Status</c>
      <c>informational</c>
      <c>Author/Change controller</c>
      <c>IETF</c>
      <c>Specification document(s)</c>
      <c>This document</c>
      <c>Related information</c>
      <c>RFC9580 describes OpenPGP detached signatures</c>
</texttable>

</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>An OpenPGP Detached Signature</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='References' anchor="sec-combined-references">

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



<reference anchor="RFC9787">
  <front>
    <title>Guidance on End-to-End Email Security</title>
    <author fullname="D. K. Gillmor" initials="D. K." role="editor" surname="Gillmor"/>
    <author fullname="A. Melnikov" initials="A." role="editor" surname="Melnikov"/>
    <author fullname="B. Hoeneisen" initials="B." role="editor" surname="Hoeneisen"/>
    <date month="August" year="2025"/>
    <abstract>
      <t>End-to-end cryptographic protections for email 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 (MUA) implementers to help mitigate those risks and to make end-to-end email 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="RFC" value="9787"/>
  <seriesInfo name="DOI" value="10.17487/RFC9787"/>
</reference>
<reference anchor="RFC9788">
  <front>
    <title>Header Protection for Cryptographically Protected Email</title>
    <author fullname="D. K. Gillmor" initials="D. K." surname="Gillmor"/>
    <author fullname="B. Hoeneisen" initials="B." surname="Hoeneisen"/>
    <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
    <date month="August" year="2025"/>
    <abstract>
      <t>S/MIME version 3.1 introduced a mechanism to provide end-to-end cryptographic protection of email 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.</t>
      <t>This document updates the S/MIME specification (RFC 8551) 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 email messages with cryptographic protection of message headers.</t>
      <t>The Header Protection scheme defined here is also applicable to messages with PGP/MIME (Pretty Good Privacy with MIME) cryptographic protections.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9788"/>
  <seriesInfo name="DOI" value="10.17487/RFC9788"/>
</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>



    </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>
<reference anchor="RFC3864">
  <front>
    <title>Registration Procedures for Message Header Fields</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="J. Mogul" initials="J." surname="Mogul"/>
    <date month="September" year="2004"/>
    <abstract>
      <t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications. 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="90"/>
  <seriesInfo name="RFC" value="3864"/>
  <seriesInfo name="DOI" value="10.17487/RFC3864"/>
</reference>



    </references>

</references>


<?line 452?>

<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-02-and-draft-ietf-mailmaint-unobtrusive-signatures-00"><name>Changes Between draft-gallagher-email-unobtrusive-signatures-02 and draft-ietf-mailmaint-unobtrusive-signatures-00</name>

<t><list style="symbols">
  <t>Working group adoption.</t>
</list></t>

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

<t><list style="symbols">
  <t>Align IANA registration section with requests from IANA.</t>
  <t>Update references for drafts which are now RFCs.</t>
  <t>Permit multiple OpenPGP signature packets in each <spanx style="verb">Sig</spanx> header, aligning with OpenPGP "detached signature".</t>
  <t>Clarify signing process.</t>
  <t>Guidance for possible discrepancy between "summary" and "message" views if headers are not aligned.</t>
</list></t>

</section>
<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 and Barry Leiba offered useful feedback on the draft.</t>

</section>


  </back>

<!-- ##markdown-source:
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
AAA=

-->

</rfc>

