merge heads

master
Claudio Luck 4 years ago
commit 1d363b488c

@ -13,6 +13,7 @@ $(DRAFT).xml: $(NAME).mkd \
../shared/author_tags/alexey_melnikov.mkd \
../shared/author_tags/daniel_kahn_gillmor.mkd \
../shared/text-blocks/key-words-rfc2119.mkd \
../shared/text-blocks/terms-intro.mkd \
../shared/text-blocks/mitm.mkd \
#../shared/text-blocks/implementation-status.mkd \
#../shared/author_tags/claudio_luck.mkd \

@ -375,44 +375,44 @@
<link href="#rfc.toc" rel="Contents">
<link href="#rfc.section.1" rel="Chapter" title="1 Introduction">
<link href="#rfc.section.2" rel="Chapter" title="2 Conventions Used in This Document">
<link href="#rfc.section.2.1" rel="Chapter" title="2.1 Terminology">
<link href="#rfc.section.3" rel="Chapter" title="3 Problem Statement">
<link href="#rfc.section.4" rel="Chapter" title="4 Use Cases">
<link href="#rfc.section.4.1" rel="Chapter" title="4.1 Interactions">
<link href="#rfc.section.4.2" rel="Chapter" title="4.2 Protection Levels">
<link href="#rfc.section.5" rel="Chapter" title="5 Requirements">
<link href="#rfc.section.5.1" rel="Chapter" title="5.1 General Requirements">
<link href="#rfc.section.5.1.1" rel="Chapter" title="5.1.1 Sending Side">
<link href="#rfc.section.5.1.2" rel="Chapter" title="5.1.2 Receiving Side">
<link href="#rfc.section.5.2" rel="Chapter" title="5.2 Additional Requirements for Backward-Compatibility With Legacy Clients Unaware of Header Protection">
<link href="#rfc.section.5.2.1" rel="Chapter" title="5.2.1 Sending side">
<link href="#rfc.section.5.2.2" rel="Chapter" title="5.2.2 Receiving side">
<link href="#rfc.section.5.3" rel="Chapter" title="5.3 Additional Requirements for Backward-Compatibility with Legacy Header Protection Systems (if supported)">
<link href="#rfc.section.5.3.1" rel="Chapter" title="5.3.1 Sending Side">
<link href="#rfc.section.5.3.2" rel="Chapter" title="5.3.2 Receiving Side">
<link href="#rfc.section.6" rel="Chapter" title="6 Options to Achieve Header Protection">
<link href="#rfc.section.1.1" rel="Chapter" title="1.1 Requirements Language">
<link href="#rfc.section.1.2" rel="Chapter" title="1.2 Terms">
<link href="#rfc.section.2" rel="Chapter" title="2 Problem Statement">
<link href="#rfc.section.3" rel="Chapter" title="3 Use Cases">
<link href="#rfc.section.3.1" rel="Chapter" title="3.1 Interactions">
<link href="#rfc.section.3.2" rel="Chapter" title="3.2 Protection Levels">
<link href="#rfc.section.4" rel="Chapter" title="4 Requirements">
<link href="#rfc.section.4.1" rel="Chapter" title="4.1 General Requirements">
<link href="#rfc.section.4.1.1" rel="Chapter" title="4.1.1 Sending Side">
<link href="#rfc.section.4.1.2" rel="Chapter" title="4.1.2 Receiving Side">
<link href="#rfc.section.4.2" rel="Chapter" title="4.2 Additional Requirements for Backward-Compatibility With Legacy Clients Unaware of Header Protection">
<link href="#rfc.section.4.2.1" rel="Chapter" title="4.2.1 Sending side">
<link href="#rfc.section.4.2.2" rel="Chapter" title="4.2.2 Receiving side">
<link href="#rfc.section.4.3" rel="Chapter" title="4.3 Additional Requirements for Backward-Compatibility with Legacy Header Protection Systems (if supported)">
<link href="#rfc.section.4.3.1" rel="Chapter" title="4.3.1 Sending Side">
<link href="#rfc.section.4.3.2" rel="Chapter" title="4.3.2 Receiving Side">
<link href="#rfc.section.5" rel="Chapter" title="5 Options to Achieve Header Protection">
<link href="#rfc.section.5.1" rel="Chapter" title="5.1 Option 1: Memory Hole">
<link href="#rfc.section.5.2" rel="Chapter" title="5.2 Option 2: Wrapping with message/rfc822 or message/global">
<link href="#rfc.section.5.2.1" rel="Chapter" title="5.2.1 Content-Type property &#8220;forwarded&#8221;">
<link href="#rfc.section.5.2.2" rel="Chapter" title="5.2.2 Handling of S/MIME protected header">
<link href="#rfc.section.5.2.3" rel="Chapter" title="5.2.3 Mail User Agent Algorithm for deciding which version of a header">
<link href="#rfc.section.5.3" rel="Chapter" title="5.3 Option 3: Progressive Header Disclosure">
<link href="#rfc.section.5.4" rel="Chapter" title="5.4 Design principles">
<link href="#rfc.section.5.5" rel="Chapter" title="5.5 Candidate Header Fields for Header Protection">
<link href="#rfc.section.5.6" rel="Chapter" title="5.6 Stub Outside Headers">
<link href="#rfc.section.5.7" rel="Chapter" title="5.7 More information">
<link href="#rfc.section.6" rel="Chapter" title="6 Examples">
<link href="#rfc.section.6.1" rel="Chapter" title="6.1 Option 1: Memory Hole">
<link href="#rfc.section.6.2" rel="Chapter" title="6.2 Option 2: Wrapping with message/rfc822 or message/global">
<link href="#rfc.section.6.2.1" rel="Chapter" title="6.2.1 Content-Type property &#8220;forwarded&#8221;">
<link href="#rfc.section.6.2.2" rel="Chapter" title="6.2.2 Handling of S/MIME protected header">
<link href="#rfc.section.6.2.3" rel="Chapter" title="6.2.3 Mail User Agent Algorithm for deciding which version of a header">
<link href="#rfc.section.6.3" rel="Chapter" title="6.3 Option 3: Progressive Header Disclosure">
<link href="#rfc.section.6.4" rel="Chapter" title="6.4 Design principles">
<link href="#rfc.section.6.5" rel="Chapter" title="6.5 Candidate Header Fields for Header Protection">
<link href="#rfc.section.6.6" rel="Chapter" title="6.6 Stub Outside Headers">
<link href="#rfc.section.6.7" rel="Chapter" title="6.7 More information">
<link href="#rfc.section.7" rel="Chapter" title="7 Examples">
<link href="#rfc.section.7.1" rel="Chapter" title="7.1 Option 1: Memory Hole">
<link href="#rfc.section.7.2" rel="Chapter" title="7.2 Option 2: Wrapping with message/rfc822 or message/global">
<link href="#rfc.section.7.3" rel="Chapter" title="7.3 Option 3 Progressive Header Disclosure">
<link href="#rfc.section.8" rel="Chapter" title="8 Security Considerations">
<link href="#rfc.section.9" rel="Chapter" title="9 Privacy Considerations">
<link href="#rfc.section.10" rel="Chapter" title="10 IANA Considerations">
<link href="#rfc.section.11" rel="Chapter" title="11 Acknowledgements">
<link href="#rfc.references" rel="Chapter" title="12 References">
<link href="#rfc.references.1" rel="Chapter" title="12.1 Normative References">
<link href="#rfc.references.2" rel="Chapter" title="12.2 Informative References">
<link href="#rfc.section.6.3" rel="Chapter" title="6.3 Option 3 Progressive Header Disclosure">
<link href="#rfc.section.7" rel="Chapter" title="7 Security Considerations">
<link href="#rfc.section.8" rel="Chapter" title="8 Privacy Considerations">
<link href="#rfc.section.9" rel="Chapter" title="9 IANA Considerations">
<link href="#rfc.section.10" rel="Chapter" title="10 Acknowledgements">
<link href="#rfc.references" rel="Chapter" title="11 References">
<link href="#rfc.references.1" rel="Chapter" title="11.1 Normative References">
<link href="#rfc.references.2" rel="Chapter" title="11.2 Informative References">
<link href="#rfc.appendix.A" rel="Chapter" title="A Document Changelog">
<link href="#rfc.appendix.B" rel="Chapter" title="B Open Issues">
<link href="#rfc.authors" rel="Chapter">
@ -423,7 +423,7 @@
<meta name="dct.creator" content="Melnikov, A., Hoeneisen, B., and D. Gillmor" />
<meta name="dct.identifier" content="urn:ietf:id:draft-ietf-lamps-header-protection-req-00" />
<meta name="dct.issued" scheme="ISO8601" content="2019-06-23" />
<meta name="dct.issued" scheme="ISO8601" content="2019-06-24" />
<meta name="dct.abstract" content="Issues with email header protection in S&#8203;/&#8203;MIME have been recently raised in the IETF LAMPS Working Group. The need for amendments to the existing specification regarding header protection was expressed." />
<meta name="description" content="Issues with email header protection in S&#8203;/&#8203;MIME have been recently raised in the IETF LAMPS Working Group. The need for amendments to the existing specification regarding header protection was expressed." />
@ -447,7 +447,7 @@
<td class="right">B. Hoeneisen</td>
</tr>
<tr>
<td class="left">Expires: December 25, 2019</td>
<td class="left">Expires: December 26, 2019</td>
<td class="right">Ucom.ch</td>
</tr>
<tr>
@ -460,7 +460,7 @@
</tr>
<tr>
<td class="left"></td>
<td class="right">June 23, 2019</td>
<td class="right">June 24, 2019</td>
</tr>
@ -478,7 +478,7 @@
<p>This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.</p>
<p>Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.</p>
<p>Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."</p>
<p>This Internet-Draft will expire on December 25, 2019.</p>
<p>This Internet-Draft will expire on December 26, 2019.</p>
<h1 id="rfc.copyrightnotice"><a href="#rfc.copyrightnotice">Copyright Notice</a></h1>
<p>Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
<p>This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.</p>
@ -490,81 +490,81 @@
<li>1. <a href="#rfc.section.1">Introduction</a>
</li>
<li>2. <a href="#rfc.section.2">Conventions Used in This Document</a>
<ul><li>1.1. <a href="#rfc.section.1.1">Requirements Language</a>
</li>
<ul><li>2.1. <a href="#rfc.section.2.1">Terminology</a>
<li>1.2. <a href="#rfc.section.1.2">Terms</a>
</li>
</ul><li>3. <a href="#rfc.section.3">Problem Statement</a>
</ul><li>2. <a href="#rfc.section.2">Problem Statement</a>
</li>
<li>4. <a href="#rfc.section.4">Use Cases</a>
<li>3. <a href="#rfc.section.3">Use Cases</a>
</li>
<ul><li>4.1. <a href="#rfc.section.4.1">Interactions</a>
<ul><li>3.1. <a href="#rfc.section.3.1">Interactions</a>
</li>
<li>4.2. <a href="#rfc.section.4.2">Protection Levels</a>
<li>3.2. <a href="#rfc.section.3.2">Protection Levels</a>
</li>
</ul><li>5. <a href="#rfc.section.5">Requirements</a>
</ul><li>4. <a href="#rfc.section.4">Requirements</a>
</li>
<ul><li>5.1. <a href="#rfc.section.5.1">General Requirements</a>
<ul><li>4.1. <a href="#rfc.section.4.1">General Requirements</a>
</li>
<ul><li>5.1.1. <a href="#rfc.section.5.1.1">Sending Side</a>
<ul><li>4.1.1. <a href="#rfc.section.4.1.1">Sending Side</a>
</li>
<li>5.1.2. <a href="#rfc.section.5.1.2">Receiving Side</a>
<li>4.1.2. <a href="#rfc.section.4.1.2">Receiving Side</a>
</li>
</ul><li>5.2. <a href="#rfc.section.5.2">Additional Requirements for Backward-Compatibility With Legacy Clients Unaware of Header Protection</a>
</ul><li>4.2. <a href="#rfc.section.4.2">Additional Requirements for Backward-Compatibility With Legacy Clients Unaware of Header Protection</a>
</li>
<ul><li>5.2.1. <a href="#rfc.section.5.2.1">Sending side</a>
<ul><li>4.2.1. <a href="#rfc.section.4.2.1">Sending side</a>
</li>
<li>5.2.2. <a href="#rfc.section.5.2.2">Receiving side</a>
<li>4.2.2. <a href="#rfc.section.4.2.2">Receiving side</a>
</li>
</ul><li>5.3. <a href="#rfc.section.5.3">Additional Requirements for Backward-Compatibility with Legacy Header Protection Systems (if supported)</a>
</ul><li>4.3. <a href="#rfc.section.4.3">Additional Requirements for Backward-Compatibility with Legacy Header Protection Systems (if supported)</a>
</li>
<ul><li>5.3.1. <a href="#rfc.section.5.3.1">Sending Side</a>
<ul><li>4.3.1. <a href="#rfc.section.4.3.1">Sending Side</a>
</li>
<li>5.3.2. <a href="#rfc.section.5.3.2">Receiving Side</a>
<li>4.3.2. <a href="#rfc.section.4.3.2">Receiving Side</a>
</li>
</ul></ul><li>6. <a href="#rfc.section.6">Options to Achieve Header Protection</a>
</ul></ul><li>5. <a href="#rfc.section.5">Options to Achieve Header Protection</a>
</li>
<ul><li>6.1. <a href="#rfc.section.6.1">Option 1: Memory Hole</a>
<ul><li>5.1. <a href="#rfc.section.5.1">Option 1: Memory Hole</a>
</li>
<li>6.2. <a href="#rfc.section.6.2">Option 2: Wrapping with message/rfc822 or message/global</a>
<li>5.2. <a href="#rfc.section.5.2">Option 2: Wrapping with message/rfc822 or message/global</a>
</li>
<ul><li>6.2.1. <a href="#rfc.section.6.2.1">Content-Type property &#8220;forwarded&#8221;</a>
<ul><li>5.2.1. <a href="#rfc.section.5.2.1">Content-Type property &#8220;forwarded&#8221;</a>
</li>
<li>6.2.2. <a href="#rfc.section.6.2.2">Handling of S/MIME protected header</a>
<li>5.2.2. <a href="#rfc.section.5.2.2">Handling of S/MIME protected header</a>
</li>
<li>6.2.3. <a href="#rfc.section.6.2.3">Mail User Agent Algorithm for deciding which version of a header</a>
<li>5.2.3. <a href="#rfc.section.5.2.3">Mail User Agent Algorithm for deciding which version of a header</a>
</li>
</ul><li>6.3. <a href="#rfc.section.6.3">Option 3: Progressive Header Disclosure</a>
</ul><li>5.3. <a href="#rfc.section.5.3">Option 3: Progressive Header Disclosure</a>
</li>
<li>6.4. <a href="#rfc.section.6.4">Design principles</a>
<li>5.4. <a href="#rfc.section.5.4">Design principles</a>
</li>
<li>6.5. <a href="#rfc.section.6.5">Candidate Header Fields for Header Protection</a>
<li>5.5. <a href="#rfc.section.5.5">Candidate Header Fields for Header Protection</a>
</li>
<li>6.6. <a href="#rfc.section.6.6">Stub Outside Headers</a>
<li>5.6. <a href="#rfc.section.5.6">Stub Outside Headers</a>
</li>
<li>6.7. <a href="#rfc.section.6.7">More information</a>
<li>5.7. <a href="#rfc.section.5.7">More information</a>
</li>
</ul><li>7. <a href="#rfc.section.7">Examples</a>
</ul><li>6. <a href="#rfc.section.6">Examples</a>
</li>
<ul><li>7.1. <a href="#rfc.section.7.1">Option 1: Memory Hole</a>
<ul><li>6.1. <a href="#rfc.section.6.1">Option 1: Memory Hole</a>
</li>
<li>7.2. <a href="#rfc.section.7.2">Option 2: Wrapping with message/rfc822 or message/global</a>
<li>6.2. <a href="#rfc.section.6.2">Option 2: Wrapping with message/rfc822 or message/global</a>
</li>
<li>7.3. <a href="#rfc.section.7.3">Option 3 Progressive Header Disclosure</a>
<li>6.3. <a href="#rfc.section.6.3">Option 3 Progressive Header Disclosure</a>
</li>
</ul><li>8. <a href="#rfc.section.8">Security Considerations</a>
</ul><li>7. <a href="#rfc.section.7">Security Considerations</a>
</li>
<li>9. <a href="#rfc.section.9">Privacy Considerations</a>
<li>8. <a href="#rfc.section.8">Privacy Considerations</a>
</li>
<li>10. <a href="#rfc.section.10">IANA Considerations</a>
<li>9. <a href="#rfc.section.9">IANA Considerations</a>
</li>
<li>11. <a href="#rfc.section.11">Acknowledgements</a>
<li>10. <a href="#rfc.section.10">Acknowledgements</a>
</li>
<li>12. <a href="#rfc.references">References</a>
<li>11. <a href="#rfc.references">References</a>
</li>
<ul><li>12.1. <a href="#rfc.references.1">Normative References</a>
<ul><li>11.1. <a href="#rfc.references.1">Normative References</a>
</li>
<li>12.2. <a href="#rfc.references.2">Informative References</a>
<li>11.2. <a href="#rfc.references.2">Informative References</a>
</li>
</ul><li>Appendix A. <a href="#rfc.appendix.A">Document Changelog</a>
</li>
@ -587,16 +587,16 @@
<ul class="empty"><li>In order to protect outer, non-content-related message header fields (for instance, the &#8220;Subject&#8221;, &#8220;To&#8221;, &#8220;From&#8221;, and &#8220;Cc&#8221; fields), the sending client MAY wrap a full MIME message in a message/rfc822 wrapper in order to apply S&#8203;/&#8203;MIME security services to these header fields.</li></ul>
<p id="rfc.section.1.p.5">No mechanism for header protection has been standardized for PGP (Pretty Good Privacy) yet.</p>
<p id="rfc.section.1.p.6">End-to-end protection for the email headers section is currently not widely implemented &#8211; neither for messages protected by means of S&#8203;/&#8203;MIME nor PGP. At least two variants of header protection are known to be implemented.</p>
<p id="rfc.section.1.p.7">This document describes the problem statement, generic use cases (<a href="#use-cases" class="xref">Section 4</a>) and requirements for header protection (<a href="#requirements" class="xref">Section 5</a>) Additionally it drafts possible solutions to address the challenge. However, the final solution will be determined by the IETF LAMPS WG. Finally, some best practices are collected.</p>
<p id="rfc.section.1.p.7">This document describes the problem statement, generic use cases (<a href="#use-cases" class="xref">Section 3</a>) and requirements for header protection (<a href="#requirements" class="xref">Section 4</a>) Additionally it drafts possible solutions to address the challenge. However, the final solution will be determined by the IETF LAMPS WG. Finally, some best practices are collected.</p>
<p id="rfc.section.1.p.8">[&#8230;]</p>
<h1 id="rfc.section.2">
<a href="#rfc.section.2">2.</a> <a href="#conventions-used-in-this-document" id="conventions-used-in-this-document">Conventions Used in This Document</a>
<h1 id="rfc.section.1.1">
<a href="#rfc.section.1.1">1.1.</a> <a href="#requirements-language" id="requirements-language">Requirements Language</a>
</h1>
<p id="rfc.section.2.p.1">The key words &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;, &#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8220;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this document are to be interpreted as described in <a href="#RFC2119" class="xref">[RFC2119]</a>.</p>
<h1 id="rfc.section.2.1">
<a href="#rfc.section.2.1">2.1.</a> <a href="#terminology" id="terminology">Terminology</a>
<p id="rfc.section.1.1.p.1">The key words &#8220;MUST&#8221;, &#8220;MUST NOT&#8221;, &#8220;REQUIRED&#8221;, &#8220;SHALL&#8221;, &#8220;SHALL NOT&#8221;, &#8220;SHOULD&#8221;, &#8220;SHOULD NOT&#8221;, &#8220;RECOMMENDED&#8221;, &#8220;MAY&#8221;, and &#8220;OPTIONAL&#8221; in this document are to be interpreted as described in <a href="#RFC2119" class="xref">[RFC2119]</a>.</p>
<h1 id="rfc.section.1.2">
<a href="#rfc.section.1.2">1.2.</a> <a href="#terms" id="terms">Terms</a>
</h1>
<p id="rfc.section.2.1.p.1">The following terms are defined in this document:</p>
<p id="rfc.section.1.2.p.1">The following terms are defined for the scope of this document:</p>
<p></p>
<ul>
@ -610,27 +610,27 @@
<ul><li>Man-in-the-middle attack (MITM): cf. <a href="#RFC4949" class="xref">[RFC4949]</a>
</li></ul>
<h1 id="rfc.section.3">
<a href="#rfc.section.3">3.</a> <a href="#problem-statement" id="problem-statement">Problem Statement</a>
<h1 id="rfc.section.2">
<a href="#rfc.section.2">2.</a> <a href="#problem-statement" id="problem-statement">Problem Statement</a>
</h1>
<p id="rfc.section.3.p.1">The LAMPS charter contains the folllowing Work Item:</p>
<p id="rfc.section.2.p.1">The LAMPS charter contains the folllowing Work Item:</p>
<p></p>
<ul class="empty"><li>Update the specification for the cryptographic protection of email headers &#8211; both for signatures and encryption &#8211; to improve the implementation situation with respect to privacy, security, usability and interoperability in cryptographically-protected electronic mail. Most current implementations of cryptographically-protected electronic mail protect only the body of the message, which leaves significant room for attacks against otherwise-protected messages.</li></ul>
<p id="rfc.section.3.p.3">[&#8230;]</p>
<h1 id="rfc.section.4">
<a href="#rfc.section.4">4.</a> <a href="#use-cases" id="use-cases">Use Cases</a>
<p id="rfc.section.2.p.3">[&#8230;]</p>
<h1 id="rfc.section.3">
<a href="#rfc.section.3">3.</a> <a href="#use-cases" id="use-cases">Use Cases</a>
</h1>
<p id="rfc.section.4.p.1">In the following, we show the generic use cases that need to be addressed independently of whether S&#8203;/&#8203;MIME, PGP/MIME or any other technology is used for which Header Protection (HP) is to be applied to.</p>
<h1 id="rfc.section.4.1">
<a href="#rfc.section.4.1">4.1.</a> <a href="#interactions" id="interactions">Interactions</a>
<p id="rfc.section.3.p.1">In the following, we show the generic use cases that need to be addressed independently of whether S&#8203;/&#8203;MIME, PGP/MIME or any other technology is used for which Header Protection (HP) is to be applied to.</p>
<h1 id="rfc.section.3.1">
<a href="#rfc.section.3.1">3.1.</a> <a href="#interactions" id="interactions">Interactions</a>
</h1>
<p id="rfc.section.4.1.p.1">The main interaction case for Header Protection (HP) is:</p>
<p id="rfc.section.3.1.p.1">The main interaction case for Header Protection (HP) is:</p>
<pre>
1) Both peers (sending and receiving side) fully support HP
</pre>
<p id="rfc.section.4.1.p.2">For backward compatibility of legacy clients &#8211; unaware of any HP &#8211; the following intermediate interactions need to be considered as well:</p>
<p id="rfc.section.3.1.p.2">For backward compatibility of legacy clients &#8211; unaware of any HP &#8211; the following intermediate interactions need to be considered as well:</p>
<pre>
2) The sending side fully supports HP, while the receiving side does
not support any HP
@ -642,7 +642,7 @@
(trivial case)
</pre>
<p id="rfc.section.4.1.p.3">The following intermediate use cases may need to be considered as well for backward compatibility with legacy HP systems, such as S&#8203;/&#8203;MIME since version 3.1 (cf. <a href="#RFC8551" class="xref">[RFC8551]</a>), in the following designated as legacy HP:</p>
<p id="rfc.section.3.1.p.3">The following intermediate use cases may need to be considered as well for backward compatibility with legacy HP systems, such as S&#8203;/&#8203;MIME since version 3.1 (cf. <a href="#RFC8551" class="xref">[RFC8551]</a>), in the following designated as legacy HP:</p>
<pre>
5) The sending side fully supports HP, while the receiving side
supports legacy HP only
@ -659,22 +659,22 @@
supports legacy HP only (trivial case)
</pre>
<p id="rfc.section.4.1.p.4">Note: It is to be decided whether to ensure legacy HP systems do not conflict with any new solution for HP at all or whether (and to which degree) backward compatibility to legacy HP systems shall be maintained.</p>
<h1 id="rfc.section.4.2">
<a href="#rfc.section.4.2">4.2.</a> <a href="#protection-levels" id="protection-levels">Protection Levels</a>
<p id="rfc.section.3.1.p.4">Note: It is to be decided whether to ensure legacy HP systems do not conflict with any new solution for HP at all or whether (and to which degree) backward compatibility to legacy HP systems shall be maintained.</p>
<h1 id="rfc.section.3.2">
<a href="#rfc.section.3.2">3.2.</a> <a href="#protection-levels" id="protection-levels">Protection Levels</a>
</h1>
<p id="rfc.section.4.2.p.1">The following protection levels need to be considered:</p>
<p id="rfc.section.4.2.p.2">a) signature and encryption</p>
<p id="rfc.section.4.2.p.3">b) signature only</p>
<p id="rfc.section.4.2.p.4">c) encryption only [[ TODO: verify whether relevant ]]</p>
<h1 id="rfc.section.5">
<a href="#rfc.section.5">5.</a> <a href="#requirements" id="requirements">Requirements</a>
<p id="rfc.section.3.2.p.1">The following protection levels need to be considered:</p>
<p id="rfc.section.3.2.p.2">a) signature and encryption</p>
<p id="rfc.section.3.2.p.3">b) signature only</p>
<p id="rfc.section.3.2.p.4">c) encryption only [[ TODO: verify whether relevant ]]</p>
<h1 id="rfc.section.4">
<a href="#rfc.section.4">4.</a> <a href="#requirements" id="requirements">Requirements</a>
</h1>
<p id="rfc.section.5.p.1">In the following a list of requirements that need to be addressed independently of whether S&#8203;/&#8203;MIME, PGP/MIME or any other technology is used to apply HP to.</p>
<h1 id="rfc.section.5.1">
<a href="#rfc.section.5.1">5.1.</a> <a href="#general-requirements" id="general-requirements">General Requirements</a>
<p id="rfc.section.4.p.1">In the following a list of requirements that need to be addressed independently of whether S&#8203;/&#8203;MIME, PGP/MIME or any other technology is used to apply HP to.</p>
<h1 id="rfc.section.4.1">
<a href="#rfc.section.4.1">4.1.</a> <a href="#general-requirements" id="general-requirements">General Requirements</a>
</h1>
<p id="rfc.section.5.1.p.1">This subsection is listing the requirements to address use case 1) (cf. <a href="#interactions" class="xref">Section 4.1</a>).</p>
<p id="rfc.section.4.1.p.1">This subsection is listing the requirements to address use case 1) (cf. <a href="#interactions" class="xref">Section 3.1</a>).</p>
<pre>
G1: Define the format for HP for all protection levels. This includes
MIME structure, Content-Type (including charset and name),
@ -695,8 +695,8 @@ G4: Ensure that man-in-the-middle attack (MITM) cf. {{RFC4949}}, in
</pre>
<h1 id="rfc.section.5.1.1">
<a href="#rfc.section.5.1.1">5.1.1.</a> <a href="#sending-side" id="sending-side">Sending Side</a>
<h1 id="rfc.section.4.1.1">
<a href="#rfc.section.4.1.1">4.1.1.</a> <a href="#sending-side" id="sending-side">Sending Side</a>
</h1>
<pre>
GS1: Determine which Header Fields (HFs) should or must be protected
@ -715,8 +715,8 @@ GS3: Determine which HF should not or must not be included in the
GS4: Determine which HF to not to include to any HP part (e.g. Bcc).
</pre>
<h1 id="rfc.section.5.1.2">
<a href="#rfc.section.5.1.2">5.1.2.</a> <a href="#receiving-side" id="receiving-side">Receiving Side</a>
<h1 id="rfc.section.4.1.2">
<a href="#rfc.section.4.1.2">4.1.2.</a> <a href="#receiving-side" id="receiving-side">Receiving Side</a>
</h1>
<pre>
GR1: Determine how HF should be displayed to the user in case of
@ -727,18 +727,18 @@ GR2: Ensure that man-in-the-middle attack (MITM) cf. {{RFC4949}}, in
particular downgrade attacks, can be detected.
</pre>
<h1 id="rfc.section.5.2">
<a href="#rfc.section.5.2">5.2.</a> <a href="#additional-requirements-for-backward-compatibility-with-legacy-clients-unaware-of-header-protection" id="additional-requirements-for-backward-compatibility-with-legacy-clients-unaware-of-header-protection">Additional Requirements for Backward-Compatibility With Legacy Clients Unaware of Header Protection</a>
<h1 id="rfc.section.4.2">
<a href="#rfc.section.4.2">4.2.</a> <a href="#additional-requirements-for-backward-compatibility-with-legacy-clients-unaware-of-header-protection" id="additional-requirements-for-backward-compatibility-with-legacy-clients-unaware-of-header-protection">Additional Requirements for Backward-Compatibility With Legacy Clients Unaware of Header Protection</a>
</h1>
<p id="rfc.section.5.2.p.1">This sub-section addresses the use cases 2) - 4) (cf. <a href="#interactions" class="xref">Section 4.1</a>)</p>
<p id="rfc.section.4.2.p.1">This sub-section addresses the use cases 2) - 4) (cf. <a href="#interactions" class="xref">Section 3.1</a>)</p>
<pre>
B1: Depending on the solution, define a means to distinguish between
forwarded messages and encapsulated messages using new HP
mechanism.
</pre>
<h1 id="rfc.section.5.2.1">
<a href="#rfc.section.5.2.1">5.2.1.</a> <a href="#sending-side-1" id="sending-side-1">Sending side</a>
<h1 id="rfc.section.4.2.1">
<a href="#rfc.section.4.2.1">4.2.1.</a> <a href="#sending-side-1" id="sending-side-1">Sending side</a>
</h1>
<pre>
BS1: Define how full HP support can be indicated to outgoing
@ -751,17 +751,17 @@ BS3: Ensure a HP unaware receiving side easily can display the
"Subject" HF to the user.
</pre>
<h1 id="rfc.section.5.2.2">
<a href="#rfc.section.5.2.2">5.2.2.</a> <a href="#receiving-side-1" id="receiving-side-1">Receiving side</a>
<h1 id="rfc.section.4.2.2">
<a href="#rfc.section.4.2.2">4.2.2.</a> <a href="#receiving-side-1" id="receiving-side-1">Receiving side</a>
</h1>
<pre>
BR1: Define how full HP support can be detected in incoming messages.
</pre>
<h1 id="rfc.section.5.3">
<a href="#rfc.section.5.3">5.3.</a> <a href="#additional-requirements-for-backward-compatibility-with-legacy-header-protection-systems-if-supported" id="additional-requirements-for-backward-compatibility-with-legacy-header-protection-systems-if-supported">Additional Requirements for Backward-Compatibility with Legacy Header Protection Systems (if supported)</a>
<h1 id="rfc.section.4.3">
<a href="#rfc.section.4.3">4.3.</a> <a href="#additional-requirements-for-backward-compatibility-with-legacy-header-protection-systems-if-supported" id="additional-requirements-for-backward-compatibility-with-legacy-header-protection-systems-if-supported">Additional Requirements for Backward-Compatibility with Legacy Header Protection Systems (if supported)</a>
</h1>
<p id="rfc.section.5.3.p.1">This sub-section addresses the use cases 5) - 9) (cf. <a href="#interactions" class="xref">Section 4.1</a>).</p>
<p id="rfc.section.4.3.p.1">This sub-section addresses the use cases 5) - 9) (cf. <a href="#interactions" class="xref">Section 3.1</a>).</p>
<pre>
LS1: Depending on the solution, define a means to distinguish between
forwarded messages, legacy encapsulated messages, and
@ -772,8 +772,8 @@ LS2: The solution should be backward compatible to existing solutions
for existing solutions.
</pre>
<h1 id="rfc.section.5.3.1">
<a href="#rfc.section.5.3.1">5.3.1.</a> <a href="#sending-side-2" id="sending-side-2">Sending Side</a>
<h1 id="rfc.section.4.3.1">
<a href="#rfc.section.4.3.1">4.3.1.</a> <a href="#sending-side-2" id="sending-side-2">Sending Side</a>
</h1>
<pre>
LSS1: Determine how legacy HP support can be indicated to outgoing
@ -783,47 +783,47 @@ LSS2: Determine how legacy HP support of the receiver can be detected
or guessed.
</pre>
<h1 id="rfc.section.5.3.2">
<a href="#rfc.section.5.3.2">5.3.2.</a> <a href="#receiving-side-2" id="receiving-side-2">Receiving Side</a>
<h1 id="rfc.section.4.3.2">
<a href="#rfc.section.4.3.2">4.3.2.</a> <a href="#receiving-side-2" id="receiving-side-2">Receiving Side</a>
</h1>
<pre>
LSR1: Determine how legacy HP support can be detected in incoming
messages.
</pre>
<h1 id="rfc.section.6">
<a href="#rfc.section.6">6.</a> <a href="#options-to-achieve-header-protection" id="options-to-achieve-header-protection">Options to Achieve Header Protection</a>
<h1 id="rfc.section.5">
<a href="#rfc.section.5">5.</a> <a href="#options-to-achieve-header-protection" id="options-to-achieve-header-protection">Options to Achieve Header Protection</a>
</h1>
<p id="rfc.section.6.p.1">In the following a set of Options to achieve Email Header Protection. It is expected that the IETF LAMPS WG chooses an option to update <a href="#RFC8551" class="xref">[RFC8551]</a> wrt. Header Protection.</p>
<h1 id="rfc.section.6.1">
<a href="#rfc.section.6.1">6.1.</a> <a href="#memory-hole" id="memory-hole">Option 1: Memory Hole</a>
<p id="rfc.section.5.p.1">In the following a set of Options to achieve Email Header Protection. It is expected that the IETF LAMPS WG chooses an option to update <a href="#RFC8551" class="xref">[RFC8551]</a> wrt. Header Protection.</p>
<h1 id="rfc.section.5.1">
<a href="#rfc.section.5.1">5.1.</a> <a href="#memory-hole" id="memory-hole">Option 1: Memory Hole</a>
</h1>
<p id="rfc.section.6.1.p.1">Memory Hole approach works by copying the normal message header fields into the MIME header section of the top level protected body part. Since the MIME body part header section is itself covered by the protection mechanisms (signing and/or encryption) it shares the protections of the message body.</p>
<p id="rfc.section.6.1.p.2">[[ TODO: [DKG] add more information on memory hole]]</p>
<h1 id="rfc.section.6.2">
<a href="#rfc.section.6.2">6.2.</a> <a href="#rfc822-wrapping" id="rfc822-wrapping">Option 2: Wrapping with message/rfc822 or message/global</a>
<p id="rfc.section.5.1.p.1">Memory Hole approach works by copying the normal message header fields into the MIME header section of the top level protected body part. Since the MIME body part header section is itself covered by the protection mechanisms (signing and/or encryption) it shares the protections of the message body.</p>
<p id="rfc.section.5.1.p.2">[[ TODO: [DKG] add more information on memory hole]]</p>
<h1 id="rfc.section.5.2">
<a href="#rfc.section.5.2">5.2.</a> <a href="#rfc822-wrapping" id="rfc822-wrapping">Option 2: Wrapping with message/rfc822 or message/global</a>
</h1>
<p id="rfc.section.6.2.p.1">Wrapping with message/rfc822 (or message/global) works by copying the normal message header fields into the MIME header section of the top level protect body part</p>
<p id="rfc.section.6.2.p.2">[[ HB: Not sure this is well expressed: In option 2 the whole message is copied into the MIME body part as message/rfc822 element. ]]</p>
<p id="rfc.section.6.2.p.3">and then prepending them with &#8220;Content-Type: message/rfc822; forwarded=no\r\n&#8221; or &#8220;Content-Type: message/global; forwarded=no\r\n&#8221;, where \r\n is US-ASCII CR followed by US-ASCII LF. Since the MIME body part header section is itself covered by the protection mechanisms (signing and/or encryption) it shares the protections of the message body.</p>
<h1 id="rfc.section.6.2.1">
<a href="#rfc.section.6.2.1">6.2.1.</a> <a href="#content-type-property-forwarded" id="content-type-property-forwarded">Content-Type property &#8220;forwarded&#8221;</a>
<p id="rfc.section.5.2.p.1">Wrapping with message/rfc822 (or message/global) works by copying the normal message header fields into the MIME header section of the top level protect body part</p>
<p id="rfc.section.5.2.p.2">[[ HB: Not sure this is well expressed: In option 2 the whole message is copied into the MIME body part as message/rfc822 element. ]]</p>
<p id="rfc.section.5.2.p.3">and then prepending them with &#8220;Content-Type: message/rfc822; forwarded=no\r\n&#8221; or &#8220;Content-Type: message/global; forwarded=no\r\n&#8221;, where \r\n is US-ASCII CR followed by US-ASCII LF. Since the MIME body part header section is itself covered by the protection mechanisms (signing and/or encryption) it shares the protections of the message body.</p>
<h1 id="rfc.section.5.2.1">
<a href="#rfc.section.5.2.1">5.2.1.</a> <a href="#content-type-property-forwarded" id="content-type-property-forwarded">Content-Type property &#8220;forwarded&#8221;</a>
</h1>
<p id="rfc.section.6.2.1.p.1">This section outlines how the new &#8220;forwarded&#8221; Content-Type header field parameter could be defined (probabely in a separate document) and how header section wrapping works:</p>
<p id="rfc.section.6.2.1.p.2">This document defines a new Content-Type header field parameter <a href="#RFC2045" class="xref">[RFC2045]</a> with name &#8220;forwarded&#8221;. The parameter value is case- insensitive and can be either &#8220;yes&#8221; or &#8220;no&#8221;. (The default value being &#8220;yes&#8221;). The parameter is only meaningful with media type &#8220;message/rfc822&#8221; and &#8220;message/global&#8221; <a href="#RFC6532" class="xref">[RFC6532]</a> when used within S&#8203;/&#8203;MIME signed or encrypted body parts. The value &#8220;yes&#8221; means that the message nested inside &#8220;message/rfc822&#8221; (&#8220;message/global&#8221;) is a forwarded message and not a construct created solely to protect the inner header section.</p>
<p id="rfc.section.6.2.1.p.3">Instructions in <a href="#RFC8551" class="xref">[RFC8551]</a> describing how to protect the Email message header section <a href="#RFC5322" class="xref">[RFC5322]</a>, by wrapping the message inside a message/ rfc822 container <a href="#RFC2045" class="xref">[RFC2045]</a> are thus updated to read:</p>
<p id="rfc.section.5.2.1.p.1">This section outlines how the new &#8220;forwarded&#8221; Content-Type header field parameter could be defined (probabely in a separate document) and how header section wrapping works:</p>
<p id="rfc.section.5.2.1.p.2">This document defines a new Content-Type header field parameter <a href="#RFC2045" class="xref">[RFC2045]</a> with name &#8220;forwarded&#8221;. The parameter value is case- insensitive and can be either &#8220;yes&#8221; or &#8220;no&#8221;. (The default value being &#8220;yes&#8221;). The parameter is only meaningful with media type &#8220;message/rfc822&#8221; and &#8220;message/global&#8221; <a href="#RFC6532" class="xref">[RFC6532]</a> when used within S&#8203;/&#8203;MIME signed or encrypted body parts. The value &#8220;yes&#8221; means that the message nested inside &#8220;message/rfc822&#8221; (&#8220;message/global&#8221;) is a forwarded message and not a construct created solely to protect the inner header section.</p>
<p id="rfc.section.5.2.1.p.3">Instructions in <a href="#RFC8551" class="xref">[RFC8551]</a> describing how to protect the Email message header section <a href="#RFC5322" class="xref">[RFC5322]</a>, by wrapping the message inside a message/ rfc822 container <a href="#RFC2045" class="xref">[RFC2045]</a> are thus updated to read:</p>
<p></p>
<ul class="empty"><li>In order to protect outer, non-content-related message header fields (for instance, the &#8220;Subject&#8221;, &#8220;To&#8221;, &#8220;From&#8221;, and &#8220;Cc&#8221; fields), the sending client MAY wrap a full MIME message in a message/rfc822 wrapper in order to apply S&#8203;/&#8203;MIME security services to these header fields. It is up to the receiving client to decide how to present this &#8220;inner&#8221; header section along with the unprotected &#8220;outer&#8221; header section.</li></ul>
<p></p>
<ul class="empty"><li>When an S&#8203;/&#8203;MIME message is received, if the top-level protected MIME entity has a Content-Type of message/rfc822 or message/global without the &#8220;forwarded&#8221; parameter or with the &#8220;forwarded&#8221; parameter set to &#8220;no&#8221;, it can be assumed that the intent was to provide header protection. This entity SHOULD be presented as the top-level message, taking into account header section merging issues as previously discussed.</li></ul>
<h1 id="rfc.section.6.2.2">
<a href="#rfc.section.6.2.2">6.2.2.</a> <a href="#handling-of-smime-protected-header" id="handling-of-smime-protected-header">Handling of S/MIME protected header</a>
<h1 id="rfc.section.5.2.2">
<a href="#rfc.section.5.2.2">5.2.2.</a> <a href="#handling-of-smime-protected-header" id="handling-of-smime-protected-header">Handling of S/MIME protected header</a>
</h1>
<p id="rfc.section.6.2.2.p.1">[[This section needs more work. Don&#8217;t treat anything in it as unchangeable.]]</p>
<p id="rfc.section.6.2.2.p.2">For a signed-only message, it is RECOMMENDED that all &#8220;outer&#8221; header fields are copied into the &#8220;inner&#8221; protected body part. This would mean that all header fields are signed. In this case, the &#8220;outer&#8221; header fields simply match the protected header fields. And in the case that the &#8220;outer&#8221; header fields differ, they can simply be replaced with their protected versions when displayed to the user.</p>
<p id="rfc.section.6.2.2.p.3">When generating encrypted or encrypted+signed S&#8203;/&#8203;MIME messages which protect header fields:</p>
<p id="rfc.section.5.2.2.p.1">[[This section needs more work. Don&#8217;t treat anything in it as unchangeable.]]</p>
<p id="rfc.section.5.2.2.p.2">For a signed-only message, it is RECOMMENDED that all &#8220;outer&#8221; header fields are copied into the &#8220;inner&#8221; protected body part. This would mean that all header fields are signed. In this case, the &#8220;outer&#8221; header fields simply match the protected header fields. And in the case that the &#8220;outer&#8221; header fields differ, they can simply be replaced with their protected versions when displayed to the user.</p>
<p id="rfc.section.5.2.2.p.3">When generating encrypted or encrypted+signed S&#8203;/&#8203;MIME messages which protect header fields:</p>
<p></p>
<ol>
@ -831,46 +831,46 @@ LSR1: Determine how legacy HP support can be detected in incoming
<li>The outer header section SHOULD be minimal in order to avoid disclosure of confidential information. It is recommended that the outer header section only contains &#8220;Date&#8221; (set to the same value as in the inner header field, or, if the Date value is also sensitive, to Monday 9am of the same week), possibly &#8220;Subject&#8221; and &#8220;To&#8221;/&#8221;Bcc&#8221; header fields. In particular, Keywords, In-Reply- To and References header fields SHOULD NOT be included in the outer header; &#8220;To&#8221; and &#8220;Cc&#8221; header fields should be omitted and replaced with &#8220;Bcc: undisclosed-recipients;&#8221;. <br><br> But note that having key header fields duplicated in the outer header is convenient for many message stores (e.g. IMAP) and clients that can&#8217;t decode S&#8203;/&#8203;MIME encrypted messages. In particular, Subject/To/Cc/Bcc/Date header field values are returned in IMAP ENVELOPE FETCH data item <a href="#RFC3501" class="xref">[RFC3501]</a>, which is frequently used by IMAP clients in order to avoid parsing message header.</li>
<li>The &#8220;Subject&#8221; header field value of the outer header section SHOULD either be identical to the inner &#8220;Subject&#8221; header field value, or contain a clear indication that the outer value is not to be used for display (the inner header field value would contain the true value).</li>
</ol>
<p id="rfc.section.6.2.2.p.5">Note that recommendations listed above typically only apply to non MIME header fields (header fields with names not starting with &#8220;Content-&#8220; prefix), but there are exception, e.g. Content-Language.</p>
<p id="rfc.section.6.2.2.p.6">Note that the above recommendations can also negatively affect antispam processing.</p>
<p id="rfc.section.6.2.2.p.7">When displaying S&#8203;/&#8203;MIME messages which protect header fields (whether they are signed-only, encrypted or encrypted+signed):</p>
<p id="rfc.section.5.2.2.p.5">Note that recommendations listed above typically only apply to non MIME header fields (header fields with names not starting with &#8220;Content-&#8220; prefix), but there are exception, e.g. Content-Language.</p>
<p id="rfc.section.5.2.2.p.6">Note that the above recommendations can also negatively affect antispam processing.</p>
<p id="rfc.section.5.2.2.p.7">When displaying S&#8203;/&#8203;MIME messages which protect header fields (whether they are signed-only, encrypted or encrypted+signed):</p>
<p></p>
<ol><li>The outer headers might be tampered with, so a receiving client SHOULD ignore them, unless they are protected in some other way(<em>). If a header field is present in the inner header, only the inner header field value MUST be displayed (and the corresponding outer value must be ignored). If a particular header field is only present in the outer header, it MAY be ignored (not displayed) or it MAY be displayed with a clear indicator that it is not trustworthy(</em>). <br><br> (*) - this only applies if the header field is not protected is some other way, for example with a DKIM signature that validates and is trusted.</li></ol>
<h1 id="rfc.section.6.2.3">
<a href="#rfc.section.6.2.3">6.2.3.</a> <a href="#mail-user-agent-algorithm-for-deciding-which-version-of-a-header" id="mail-user-agent-algorithm-for-deciding-which-version-of-a-header">Mail User Agent Algorithm for deciding which version of a header</a>
<h1 id="rfc.section.5.2.3">
<a href="#rfc.section.5.2.3">5.2.3.</a> <a href="#mail-user-agent-algorithm-for-deciding-which-version-of-a-header" id="mail-user-agent-algorithm-for-deciding-which-version-of-a-header">Mail User Agent Algorithm for deciding which version of a header</a>
</h1>
<p id="rfc.section.6.2.3.p.1">field to display</p>
<p id="rfc.section.6.2.3.p.2">[[TBD: describe how to recurse to find the innermost protected root body part, extract header fields from it and propogate them to the top level. This should also work for triple-wrapped messages.]]</p>
<h1 id="rfc.section.6.3">
<a href="#rfc.section.6.3">6.3.</a> <a href="#progressive-header-disclosure" id="progressive-header-disclosure">Option 3: Progressive Header Disclosure</a>
<p id="rfc.section.5.2.3.p.1">field to display</p>
<p id="rfc.section.5.2.3.p.2">[[TBD: describe how to recurse to find the innermost protected root body part, extract header fields from it and propogate them to the top level. This should also work for triple-wrapped messages.]]</p>
<h1 id="rfc.section.5.3">
<a href="#rfc.section.5.3">5.3.</a> <a href="#progressive-header-disclosure" id="progressive-header-disclosure">Option 3: Progressive Header Disclosure</a>
</h1>
<p id="rfc.section.6.3.p.1">This option is similar to Option 2 (cf. <a href="#rfc822-wrapping" class="xref">Section 6.2</a>). It also makes use the Content-Type property &#8220;forwarded&#8221; (cf. <a href="#content-type-property-forwarded" class="xref">Section 6.2.1</a>).</p>
<h1 id="rfc.section.6.4">
<a href="#rfc.section.6.4">6.4.</a> <a href="#design-principles" id="design-principles">Design principles</a>
<p id="rfc.section.5.3.p.1">This option is similar to Option 2 (cf. <a href="#rfc822-wrapping" class="xref">Section 5.2</a>). It also makes use the Content-Type property &#8220;forwarded&#8221; (cf. <a href="#content-type-property-forwarded" class="xref">Section 5.2.1</a>).</p>
<h1 id="rfc.section.5.4">
<a href="#rfc.section.5.4">5.4.</a> <a href="#design-principles" id="design-principles">Design principles</a>
</h1>
<p id="rfc.section.6.4.p.1">pretty Easy privacy (pEp) <a href="#I-D.birk-pep" class="xref">[I-D.birk-pep]</a> is working on bringing state-of-the-art automatic cryptography known from areas like TLS to electronic mail (email) communication. pEp is determined to evolve the existing standards as fundamentally and comprehensively as needed to gain easy implementation and integration, and for easy use for regular Internet users. pEp for email wants to attaining to good security practice while still retaining backward compatibility for implementations widespread.</p>
<p id="rfc.section.6.4.p.2">To provide the required stability as a foundation for good security practice, pEp for email defines a fixed MIME structure for its innermost message structure, so to remove most attack vectors which have permitted the numerous EFAIL vulnerabilities. (TBD: ref)</p>
<p id="rfc.section.6.4.p.3">Security comes just next after privacy in pEp, for which reason the application of signatures without encryption to messages in transit is not considered purposeful. pEp for email herein referenced, and further described in <a href="#I-D.marques-pep-email" class="xref">[I-D.marques-pep-email]</a>, either expects to transfer messages in cleartext without signature or encryption, or transfer them encrypted and with enclosed signature and necessary public keys so that replies can be immediately upgraded to encrypted messages.</p>
<p id="rfc.section.6.4.p.4">The pEp message format is equivalent to the S&#8203;/&#8203;MIME standard in ensuring header protection, in that the whole message is protected instead, by wrapping it and providing cryptographic services to the whole original message. The pEp message format is different compared to the S&#8203;/&#8203;MIME standard in that the pEp protocols propose opportunistic end-to-end security and signature, by allowing the transport of the necessary public key material along with the original messages.</p>
<p id="rfc.section.6.4.p.5">For the purpose of allowing the insertion of such public keys, the root entity of the protected message is thus nested once more into an additional multipart/mixed MIME entity. The current pEp proposal is for PGP/MIME, while an extension to S&#8203;/&#8203;MIME is next.</p>
<p id="rfc.section.6.4.p.6">pEp&#8217;s proposal is strict in that it requires that the cryptographic services applied to the protected message MUST include encryption. It also mandates a fixed MIME structure for the protected message, which always MUST include a plaintext and optionally an HTML representation (if HTML is used) of the same message, and requires that all other optional elements to be eventually presented as attachments. Alternatively the whole protected message could represent in turn a wrapped pEp wrapper, which makes the message structure fully recursive on purpose (e.g., for the purpose of anonymization through onion routing).</p>
<p id="rfc.section.6.4.p.7">For the purpose of implementing mixnet routing for email, it is foreseen to nest pEp messages recursively. A protected message can in turn contain a protected message due for forwarding. This is for the purpose to increase privacy and counter the necessary leakage of plaintext addressing in the envelope of the email.</p>
<p id="rfc.section.6.4.p.8">The recursive nature of the pEp message format allows for the implementation of progressive disclosure of the necessary transport relevant header fields just as-needed to the next mail transport agents along the transmission path.</p>
<p id="rfc.section.6.4.p.9">pEp has also implemented the above (in <a href="#content-type-property-forwarded" class="xref">Section 6.2.1</a>) described Content-Type property &#8220;forwarded&#8221; to distinguish between encapsulated and forwarded emails.</p>
<h1 id="rfc.section.6.5">
<a href="#rfc.section.6.5">6.5.</a> <a href="#candidate-header-fields-for-header-protection" id="candidate-header-fields-for-header-protection">Candidate Header Fields for Header Protection</a>
<p id="rfc.section.5.4.p.1">pretty Easy privacy (pEp) <a href="#I-D.birk-pep" class="xref">[I-D.birk-pep]</a> is working on bringing state-of-the-art automatic cryptography known from areas like TLS to electronic mail (email) communication. pEp is determined to evolve the existing standards as fundamentally and comprehensively as needed to gain easy implementation and integration, and for easy use for regular Internet users. pEp for email wants to attaining to good security practice while still retaining backward compatibility for implementations widespread.</p>
<p id="rfc.section.5.4.p.2">To provide the required stability as a foundation for good security practice, pEp for email defines a fixed MIME structure for its innermost message structure, so to remove most attack vectors which have permitted the numerous EFAIL vulnerabilities. (TBD: ref)</p>
<p id="rfc.section.5.4.p.3">Security comes just next after privacy in pEp, for which reason the application of signatures without encryption to messages in transit is not considered purposeful. pEp for email herein referenced, and further described in <a href="#I-D.marques-pep-email" class="xref">[I-D.marques-pep-email]</a>, either expects to transfer messages in cleartext without signature or encryption, or transfer them encrypted and with enclosed signature and necessary public keys so that replies can be immediately upgraded to encrypted messages.</p>
<p id="rfc.section.5.4.p.4">The pEp message format is equivalent to the S&#8203;/&#8203;MIME standard in ensuring header protection, in that the whole message is protected instead, by wrapping it and providing cryptographic services to the whole original message. The pEp message format is different compared to the S&#8203;/&#8203;MIME standard in that the pEp protocols propose opportunistic end-to-end security and signature, by allowing the transport of the necessary public key material along with the original messages.</p>
<p id="rfc.section.5.4.p.5">For the purpose of allowing the insertion of such public keys, the root entity of the protected message is thus nested once more into an additional multipart/mixed MIME entity. The current pEp proposal is for PGP/MIME, while an extension to S&#8203;/&#8203;MIME is next.</p>
<p id="rfc.section.5.4.p.6">pEp&#8217;s proposal is strict in that it requires that the cryptographic services applied to the protected message MUST include encryption. It also mandates a fixed MIME structure for the protected message, which always MUST include a plaintext and optionally an HTML representation (if HTML is used) of the same message, and requires that all other optional elements to be eventually presented as attachments. Alternatively the whole protected message could represent in turn a wrapped pEp wrapper, which makes the message structure fully recursive on purpose (e.g., for the purpose of anonymization through onion routing).</p>
<p id="rfc.section.5.4.p.7">For the purpose of implementing mixnet routing for email, it is foreseen to nest pEp messages recursively. A protected message can in turn contain a protected message due for forwarding. This is for the purpose to increase privacy and counter the necessary leakage of plaintext addressing in the envelope of the email.</p>
<p id="rfc.section.5.4.p.8">The recursive nature of the pEp message format allows for the implementation of progressive disclosure of the necessary transport relevant header fields just as-needed to the next mail transport agents along the transmission path.</p>
<p id="rfc.section.5.4.p.9">pEp has also implemented the above (in <a href="#content-type-property-forwarded" class="xref">Section 5.2.1</a>) described Content-Type property &#8220;forwarded&#8221; to distinguish between encapsulated and forwarded emails.</p>
<h1 id="rfc.section.5.5">
<a href="#rfc.section.5.5">5.5.</a> <a href="#candidate-header-fields-for-header-protection" id="candidate-header-fields-for-header-protection">Candidate Header Fields for Header Protection</a>
</h1>
<p id="rfc.section.6.5.p.1">By default, all headers of the original message SHOULD be wrapped with the original message, with one exception:</p>
<p id="rfc.section.5.5.p.1">By default, all headers of the original message SHOULD be wrapped with the original message, with one exception:</p>
<p></p>
<ul><li>the header field &#8220;Bcc&#8221; MUST NOT be added to the protected headers.</li></ul>
<h1 id="rfc.section.6.6">
<a href="#rfc.section.6.6">6.6.</a> <a href="#stub-outside-headers" id="stub-outside-headers">Stub Outside Headers</a>
<h1 id="rfc.section.5.6">
<a href="#rfc.section.5.6">5.6.</a> <a href="#stub-outside-headers" id="stub-outside-headers">Stub Outside Headers</a>
</h1>
<p id="rfc.section.6.6.p.1">The outer message requires a minimal set of headers to be in place for being eligible for transport. This includes the &#8220;From&#8221;, &#8220;To&#8221;, &#8220;Cc&#8221;, &#8220;Bcc&#8221;, &#8220;Subject&#8221; and &#8220;Message-ID&#8221; header fields. The protocol hereby defined also depends on the &#8220;MIME-Version&#8221;, &#8220;Content-Type&#8221;, &#8220;Content-Disposition&#8221; and eventually the &#8220;Content-Transport-Encoding&#8221; header field to be present.</p>
<p id="rfc.section.6.6.p.2">Submission and forwarding based on SMTP carries &#8220;from&#8221; and &#8220;receivers&#8221; information out-of-band, so that the &#8220;From&#8221; and &#8220;To&#8221; header fields are not strictly necessary. Nevertheless, &#8220;From&#8221;, &#8220;Date&#8221;, and at least one destination header field is mandatory as per <a href="#RFC5322" class="xref">[RFC5322]</a>. They SHOULD be conserved for reliability.</p>
<p id="rfc.section.6.6.p.3">The following header fields should contain a verbatim copy of the header fields of the inner message:</p>
<p id="rfc.section.5.6.p.1">The outer message requires a minimal set of headers to be in place for being eligible for transport. This includes the &#8220;From&#8221;, &#8220;To&#8221;, &#8220;Cc&#8221;, &#8220;Bcc&#8221;, &#8220;Subject&#8221; and &#8220;Message-ID&#8221; header fields. The protocol hereby defined also depends on the &#8220;MIME-Version&#8221;, &#8220;Content-Type&#8221;, &#8220;Content-Disposition&#8221; and eventually the &#8220;Content-Transport-Encoding&#8221; header field to be present.</p>
<p id="rfc.section.5.6.p.2">Submission and forwarding based on SMTP carries &#8220;from&#8221; and &#8220;receivers&#8221; information out-of-band, so that the &#8220;From&#8221; and &#8220;To&#8221; header fields are not strictly necessary. Nevertheless, &#8220;From&#8221;, &#8220;Date&#8221;, and at least one destination header field is mandatory as per <a href="#RFC5322" class="xref">[RFC5322]</a>. They SHOULD be conserved for reliability.</p>
<p id="rfc.section.5.6.p.3">The following header fields should contain a verbatim copy of the header fields of the inner message:</p>
<p></p>
<ul>
@ -880,15 +880,15 @@ LSR1: Determine how legacy HP support can be detected in incoming
<li>Cc (*)</li>
<li>Bcc (*)</li>
</ul>
<p id="rfc.section.6.6.p.5">The entries with an asterisk mark (*) should only be set if also present in the original message.</p>
<h1 id="rfc.section.6.7">
<a href="#rfc.section.6.7">6.7.</a> <a href="#more-information" id="more-information">More information</a>
<p id="rfc.section.5.6.p.5">The entries with an asterisk mark (*) should only be set if also present in the original message.</p>
<h1 id="rfc.section.5.7">
<a href="#rfc.section.5.7">5.7.</a> <a href="#more-information" id="more-information">More information</a>
</h1>
<p id="rfc.section.6.7.p.1">More information on progressive header disclosure can be found in <a href="#I-D.marques-pep-email" class="xref">[I-D.marques-pep-email]</a> and <a href="#I-D.luck-lamps-pep-header-protection" class="xref">[I-D.luck-lamps-pep-header-protection]</a>. The latter is a predecessor of this document.</p>
<h1 id="rfc.section.7">
<a href="#rfc.section.7">7.</a> <a href="#examples" id="examples">Examples</a>
<p id="rfc.section.5.7.p.1">More information on progressive header disclosure can be found in <a href="#I-D.marques-pep-email" class="xref">[I-D.marques-pep-email]</a> and <a href="#I-D.luck-lamps-pep-header-protection" class="xref">[I-D.luck-lamps-pep-header-protection]</a>. The latter is a predecessor of this document.</p>
<h1 id="rfc.section.6">
<a href="#rfc.section.6">6.</a> <a href="#examples" id="examples">Examples</a>
</h1>
<p id="rfc.section.7.p.1">Examples in subsequent sections assume that an email client is trying to protect (sign) the following initial message:</p>
<p id="rfc.section.6.p.1">Examples in subsequent sections assume that an email client is trying to protect (sign) the following initial message:</p>
<pre>
Date: Mon, 25 Sep 2017 17:31:42 +0100 (GMT Daylight Time)
From: "Alexey Melnikov" &lt;alexey.melnikov@example.net&gt;
@ -931,10 +931,10 @@ O: boundary=.cbe16d2a-e1a3-4220-b821-38348fc97237
</pre>
<h1 id="rfc.section.7.1">
<a href="#rfc.section.7.1">7.1.</a> <a href="#memory-hole-example" id="memory-hole-example">Option 1: Memory Hole</a>
<h1 id="rfc.section.6.1">
<a href="#rfc.section.6.1">6.1.</a> <a href="#memory-hole-example" id="memory-hole-example">Option 1: Memory Hole</a>
</h1>
<p id="rfc.section.7.1.p.1">The following example demonstrates how header section and payload of a protect body part might look like. For example, this will be the first body part of a multipart/signed message or the signed and/or encrypted payload of the application/pkcs7-mime body part. Lines prepended by &#8220;O: &#8220; are the outer header section. Lines prepended by &#8220;I: &#8220; are the inner header section.</p>
<p id="rfc.section.6.1.p.1">The following example demonstrates how header section and payload of a protect body part might look like. For example, this will be the first body part of a multipart/signed message or the signed and/or encrypted payload of the application/pkcs7-mime body part. Lines prepended by &#8220;O: &#8220; are the outer header section. Lines prepended by &#8220;I: &#8220; are the inner header section.</p>
<pre>
O: Date: Mon, 25 Sep 2017 17:31:42 +0100 (GMT Daylight Time)
O: Message-ID: &lt;e4a483cb-1dfb-481d-903b-298c92c21f5e@mattingly.example.net&gt;
@ -968,10 +968,10 @@ I: Content-Type: text/plain; charset=us-ascii
--.cbe16d2a-e1a3-4220-b821-38348fc97237--
</pre>
<h1 id="rfc.section.7.2">
<a href="#rfc.section.7.2">7.2.</a> <a href="#rfc822-wrapping-example" id="rfc822-wrapping-example">Option 2: Wrapping with message/rfc822 or message/global</a>
<h1 id="rfc.section.6.2">
<a href="#rfc.section.6.2">6.2.</a> <a href="#rfc822-wrapping-example" id="rfc822-wrapping-example">Option 2: Wrapping with message/rfc822 or message/global</a>
</h1>
<p id="rfc.section.7.2.p.1">The following example demonstrates how header section and payload of a protect body part might look like. For example, this will be the first body part of a multipart/signed message or the signed and/or encrypted payload of the application/pkcs7-mime body part. Lines prepended by &#8220;O: &#8220; are the outer header section. Lines prepended by &#8220;I: &#8220; are the inner header section. Lines prepended by &#8220;W: &#8220; are the wrapper.</p>
<p id="rfc.section.6.2.p.1">The following example demonstrates how header section and payload of a protect body part might look like. For example, this will be the first body part of a multipart/signed message or the signed and/or encrypted payload of the application/pkcs7-mime body part. Lines prepended by &#8220;O: &#8220; are the outer header section. Lines prepended by &#8220;I: &#8220; are the inner header section. Lines prepended by &#8220;W: &#8220; are the wrapper.</p>
<pre>
O: Date: Mon, 25 Sep 2017 17:31:42 +0100 (GMT Daylight Time)
O: Message-ID: &lt;e4a483cb-1dfb-481d-903b-298c92c21f5e@mattingly.example.net&gt;
@ -1007,35 +1007,35 @@ I: Content-Type: text/plain; charset=us-ascii
--.cbe16d2a-e1a3-4220-b821-38348fc97237--
</pre>
<h1 id="rfc.section.7.3">
<a href="#rfc.section.7.3">7.3.</a> <a href="#progressive-header-disclosure-example" id="progressive-header-disclosure-example">Option 3 Progressive Header Disclosure</a>
<h1 id="rfc.section.6.3">
<a href="#rfc.section.6.3">6.3.</a> <a href="#progressive-header-disclosure-example" id="progressive-header-disclosure-example">Option 3 Progressive Header Disclosure</a>
</h1>
<p id="rfc.section.6.3.p.1">This looks similar as in option 2. Specific examples can be found in <a href="#I-D.luck-lamps-pep-header-protection" class="xref">[I-D.luck-lamps-pep-header-protection]</a>.</p>
<h1 id="rfc.section.7">
<a href="#rfc.section.7">7.</a> <a href="#security-considerations" id="security-considerations">Security Considerations</a>
</h1>
<p id="rfc.section.7.3.p.1">This looks similar as in option 2. Specific examples can be found in <a href="#I-D.luck-lamps-pep-header-protection" class="xref">[I-D.luck-lamps-pep-header-protection]</a>.</p>
<p id="rfc.section.7.p.1">This document talks about UI considerations, including security considerations, when processing messages protecting header fields. One of the goals of this document is to specify UI for displaying such messages which is less confusing/misleading and thus more secure.</p>
<p id="rfc.section.7.p.2">The document is not defining new protocol, so it doesn&#8217;t create any new security concerns not already covered by S&#8203;/&#8203;MIME <a href="#RFC8551" class="xref">[RFC8551]</a>, MIME <a href="#RFC2045" class="xref">[RFC2045]</a> and Email <a href="#RFC5322" class="xref">[RFC5322]</a> in general.</p>
<h1 id="rfc.section.8">
<a href="#rfc.section.8">8.</a> <a href="#security-considerations" id="security-considerations">Security Considerations</a>
<a href="#rfc.section.8">8.</a> <a href="#privacy-considerations" id="privacy-considerations">Privacy Considerations</a>
</h1>
<p id="rfc.section.8.p.1">This document talks about UI considerations, including security considerations, when processing messages protecting header fields. One of the goals of this document is to specify UI for displaying such messages which is less confusing/misleading and thus more secure.</p>
<p id="rfc.section.8.p.2">The document is not defining new protocol, so it doesn&#8217;t create any new security concerns not already covered by S&#8203;/&#8203;MIME <a href="#RFC8551" class="xref">[RFC8551]</a>, MIME <a href="#RFC2045" class="xref">[RFC2045]</a> and Email <a href="#RFC5322" class="xref">[RFC5322]</a> in general.</p>
<p id="rfc.section.8.p.1">[[ TODO ]]</p>
<h1 id="rfc.section.9">
<a href="#rfc.section.9">9.</a> <a href="#privacy-considerations" id="privacy-considerations">Privacy Considerations</a>
<a href="#rfc.section.9">9.</a> <a href="#iana-considerations" id="iana-considerations">IANA Considerations</a>
</h1>
<p id="rfc.section.9.p.1">[[ TODO ]]</p>
<p id="rfc.section.9.p.1">This document requests no action from IANA.</p>
<p id="rfc.section.9.p.2">[[ RFC Editor: This section may be removed before publication. ]]</p>
<h1 id="rfc.section.10">
<a href="#rfc.section.10">10.</a> <a href="#iana-considerations" id="iana-considerations">IANA Considerations</a>
</h1>
<p id="rfc.section.10.p.1">This document requests no action from IANA.</p>
<p id="rfc.section.10.p.2">[[ RFC Editor: This section may be removed before publication. ]]</p>
<h1 id="rfc.section.11">
<a href="#rfc.section.11">11.</a> <a href="#acknowledgements" id="acknowledgements">Acknowledgements</a>
<a href="#rfc.section.10">10.</a> <a href="#acknowledgements" id="acknowledgements">Acknowledgements</a>
</h1>
<p id="rfc.section.11.p.1">Special thanks go to Krista Bennett and Volker Birk for valuable input to this draft and Hernani Marques for reviewing.</p>
<p id="rfc.section.11.p.2">[[ TODO [AM]: Do we need to mention: Wei Chuang, Steve Kille, David Wilson and Robert Williams (copied from Acknowledgements section of <a href="#I-D.melnikov-lamps-header-protection" class="xref">[I-D.melnikov-lamps-header-protection]</a> ]]</p>
<p id="rfc.section.11.p.3">Special thanks to Claudio Luck who authored a predecessor of this document. Essential parts of his work have been merged into this one.</p>
<p id="rfc.section.11.p.4">David Wilson came up with the idea of defining a new Content-Type header field parameter to distinguish forwarded messages from inner header field protection constructs.</p>
<p id="rfc.section.10.p.1">Special thanks go to Krista Bennett and Volker Birk for valuable input to this draft and Hernani Marques for reviewing.</p>
<p id="rfc.section.10.p.2">[[ TODO [AM]: Do we need to mention: Wei Chuang, Steve Kille, David Wilson and Robert Williams (copied from Acknowledgements section of <a href="#I-D.melnikov-lamps-header-protection" class="xref">[I-D.melnikov-lamps-header-protection]</a> ]]</p>
<p id="rfc.section.10.p.3">Special thanks to Claudio Luck who authored a predecessor of this document. Essential parts of his work have been merged into this one.</p>
<p id="rfc.section.10.p.4">David Wilson came up with the idea of defining a new Content-Type header field parameter to distinguish forwarded messages from inner header field protection constructs.</p>
<h1 id="rfc.references">
<a href="#rfc.references">12.</a> References</h1>
<a href="#rfc.references">11.</a> References</h1>
<h1 id="rfc.references.1">
<a href="#rfc.references.1">12.1.</a> Normative References</h1>
<a href="#rfc.references.1">11.1.</a> Normative References</h1>
<table><tbody>
<tr>
<td class="reference"><b id="RFC2045">[RFC2045]</b></td>
@ -1059,7 +1059,7 @@ I: Content-Type: text/plain; charset=us-ascii
</tr>
</tbody></table>
<h1 id="rfc.references.2">
<a href="#rfc.references.2">12.2.</a> Informative References</h1>
<a href="#rfc.references.2">11.2.</a> Informative References</h1>
<table><tbody>
<tr>
<td class="reference"><b id="I-D.birk-pep">[I-D.birk-pep]</b></td>

@ -5,10 +5,10 @@
Network Working Group A. Melnikov
Internet-Draft Isode Ltd
Intended status: Informational B. Hoeneisen
Expires: December 25, 2019 Ucom.ch
Expires: December 26, 2019 Ucom.ch
D. Gillmor
American Civil Liberties Union
June 23, 2019
June 24, 2019
Problem Statement and Requirements for Header Protection
@ -43,7 +43,7 @@ Status of This Memo
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 25, 2019.
This Internet-Draft will expire on December 26, 2019.
Copyright Notice
@ -53,7 +53,7 @@ Copyright Notice
Melnikov, et al. Expires December 25, 2019 [Page 1]
Melnikov, et al. Expires December 26, 2019 [Page 1]
Internet-Draft Header Protection requirements June 2019
@ -71,55 +71,55 @@ Internet-Draft Header Protection requirements June 2019
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Conventions Used in This Document . . . . . . . . . . . . . . 4
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
3. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 4
4. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4.1. Interactions . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Protection Levels . . . . . . . . . . . . . . . . . . . . 6
5. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 6
5.1. General Requirements . . . . . . . . . . . . . . . . . . 6
5.1.1. Sending Side . . . . . . . . . . . . . . . . . . . . 6
5.1.2. Receiving Side . . . . . . . . . . . . . . . . . . . 7
5.2. Additional Requirements for Backward-Compatibility With
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4
1.2. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 4
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1. Interactions . . . . . . . . . . . . . . . . . . . . . . 5
3.2. Protection Levels . . . . . . . . . . . . . . . . . . . . 6
4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 6
4.1. General Requirements . . . . . . . . . . . . . . . . . . 6
4.1.1. Sending Side . . . . . . . . . . . . . . . . . . . . 6
4.1.2. Receiving Side . . . . . . . . . . . . . . . . . . . 7
4.2. Additional Requirements for Backward-Compatibility With
Legacy Clients Unaware of Header Protection . . . . . . . 7
5.2.1. Sending side . . . . . . . . . . . . . . . . . . . . 7
5.2.2. Receiving side . . . . . . . . . . . . . . . . . . . 8
5.3. Additional Requirements for Backward-Compatibility with
4.2.1. Sending side . . . . . . . . . . . . . . . . . . . . 7
4.2.2. Receiving side . . . . . . . . . . . . . . . . . . . 8
4.3. Additional Requirements for Backward-Compatibility with
Legacy Header Protection Systems (if supported) . . . . . 8
5.3.1. Sending Side . . . . . . . . . . . . . . . . . . . . 8
5.3.2. Receiving Side . . . . . . . . . . . . . . . . . . . 8
6. Options to Achieve Header Protection . . . . . . . . . . . . 8
6.1. Option 1: Memory Hole . . . . . . . . . . . . . . . . . . 8
6.2. Option 2: Wrapping with message/rfc822 or message/global 9
6.2.1. Content-Type property "forwarded" . . . . . . . . . . 9
6.2.2. Handling of S/MIME protected header . . . . . . . . . 10
6.2.3. Mail User Agent Algorithm for deciding which version
4.3.1. Sending Side . . . . . . . . . . . . . . . . . . . . 8
4.3.2. Receiving Side . . . . . . . . . . . . . . . . . . . 8
5. Options to Achieve Header Protection . . . . . . . . . . . . 8
5.1. Option 1: Memory Hole . . . . . . . . . . . . . . . . . . 8
5.2. Option 2: Wrapping with message/rfc822 or message/global 9
5.2.1. Content-Type property "forwarded" . . . . . . . . . . 9
5.2.2. Handling of S/MIME protected header . . . . . . . . . 10
5.2.3. Mail User Agent Algorithm for deciding which version
of a header . . . . . . . . . . . . . . . . . . . . . 11
6.3. Option 3: Progressive Header Disclosure . . . . . . . . . 11
6.4. Design principles . . . . . . . . . . . . . . . . . . . . 11
6.5. Candidate Header Fields for Header Protection . . . . . . 13
6.6. Stub Outside Headers . . . . . . . . . . . . . . . . . . 13
6.7. More information . . . . . . . . . . . . . . . . . . . . 14
7. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 14
7.1. Option 1: Memory Hole . . . . . . . . . . . . . . . . . . 15
7.2. Option 2: Wrapping with message/rfc822 or message/global 16
7.3. Option 3 Progressive Header Disclosure . . . . . . . . . 17
8. Security Considerations . . . . . . . . . . . . . . . . . . . 17
5.3. Option 3: Progressive Header Disclosure . . . . . . . . . 11
5.4. Design principles . . . . . . . . . . . . . . . . . . . . 11
5.5. Candidate Header Fields for Header Protection . . . . . . 13
5.6. Stub Outside Headers . . . . . . . . . . . . . . . . . . 13
5.7. More information . . . . . . . . . . . . . . . . . . . . 14
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.1. Option 1: Memory Hole . . . . . . . . . . . . . . . . . . 15
6.2. Option 2: Wrapping with message/rfc822 or message/global 16
6.3. Option 3 Progressive Header Disclosure . . . . . . . . . 17
7. Security Considerations . . . . . . . . . . . . . . . . . . . 17
Melnikov, et al. Expires December 25, 2019 [Page 2]
Melnikov, et al. Expires December 26, 2019 [Page 2]
Internet-Draft Header Protection requirements June 2019
9. Privacy Considerations . . . . . . . . . . . . . . . . . . . 18
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 18
12.1. Normative References . . . . . . . . . . . . . . . . . . 18
12.2. Informative References . . . . . . . . . . . . . . . . . 19
8. Privacy Considerations . . . . . . . . . . . . . . . . . . . 18
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 18
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 18
11.1. Normative References . . . . . . . . . . . . . . . . . . 18
11.2. Informative References . . . . . . . . . . . . . . . . . 19
Appendix A. Document Changelog . . . . . . . . . . . . . . . . . 20
Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . 20
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20
@ -159,13 +159,13 @@ Internet-Draft Header Protection requirements June 2019
to be implemented.
This document describes the problem statement, generic use cases
(Section 4) and requirements for header protection (Section 5)
(Section 3) and requirements for header protection (Section 4)
Additionally it drafts possible solutions to address the challenge.
Melnikov, et al. Expires December 25, 2019 [Page 3]
Melnikov, et al. Expires December 26, 2019 [Page 3]
Internet-Draft Header Protection requirements June 2019
@ -175,15 +175,15 @@ Internet-Draft Header Protection requirements June 2019
[...]
2. Conventions Used in This Document
1.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
2.1. Terminology
1.2. Terms
The following terms are defined in this document:
The following terms are defined for the scope of this document:
o Header Field:: cf. [RFC5322]
@ -196,7 +196,7 @@ Internet-Draft Header Protection requirements June 2019
o Man-in-the-middle attack (MITM): cf. [RFC4949]
3. Problem Statement
2. Problem Statement
The LAMPS charter contains the folllowing Work Item:
@ -211,7 +211,7 @@ Internet-Draft Header Protection requirements June 2019
[...]
4. Use Cases
3. Use Cases
In the following, we show the generic use cases that need to be
addressed independently of whether S/MIME, PGP/MIME or any other
@ -221,12 +221,12 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 4]
Melnikov, et al. Expires December 26, 2019 [Page 4]
Internet-Draft Header Protection requirements June 2019
4.1. Interactions
3.1. Interactions
The main interaction case for Header Protection (HP) is:
@ -277,12 +277,12 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 5]
Melnikov, et al. Expires December 26, 2019 [Page 5]
Internet-Draft Header Protection requirements June 2019
4.2. Protection Levels
3.2. Protection Levels
The following protection levels need to be considered:
@ -292,16 +292,16 @@ Internet-Draft Header Protection requirements June 2019
c) encryption only [[ TODO: verify whether relevant ]]
5. Requirements
4. Requirements
In the following a list of requirements that need to be addressed
independently of whether S/MIME, PGP/MIME or any other technology is
used to apply HP to.
5.1. General Requirements
4.1. General Requirements
This subsection is listing the requirements to address use case 1)
(cf. Section 4.1).
(cf. Section 3.1).
G1: Define the format for HP for all protection levels. This includes
MIME structure, Content-Type (including charset and name),
@ -322,7 +322,7 @@ Internet-Draft Header Protection requirements June 2019
5.1.1. Sending Side
4.1.1. Sending Side
@ -333,7 +333,7 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 6]
Melnikov, et al. Expires December 26, 2019 [Page 6]
Internet-Draft Header Protection requirements June 2019
@ -354,7 +354,7 @@ Internet-Draft Header Protection requirements June 2019
GS4: Determine which HF to not to include to any HP part (e.g. Bcc).
5.1.2. Receiving Side
4.1.2. Receiving Side
GR1: Determine how HF should be displayed to the user in case of
conflicting information between the protected and unprotected
@ -364,17 +364,17 @@ Internet-Draft Header Protection requirements June 2019
particular downgrade attacks, can be detected.
5.2. Additional Requirements for Backward-Compatibility With Legacy
4.2. Additional Requirements for Backward-Compatibility With Legacy
Clients Unaware of Header Protection
This sub-section addresses the use cases 2) - 4) (cf. Section 4.1)
This sub-section addresses the use cases 2) - 4) (cf. Section 3.1)
B1: Depending on the solution, define a means to distinguish between
forwarded messages and encapsulated messages using new HP
mechanism.
5.2.1. Sending side
4.2.1. Sending side
BS1: Define how full HP support can be indicated to outgoing
messages.
@ -389,20 +389,20 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 7]
Melnikov, et al. Expires December 26, 2019 [Page 7]
Internet-Draft Header Protection requirements June 2019
5.2.2. Receiving side
4.2.2. Receiving side
BR1: Define how full HP support can be detected in incoming messages.
5.3. Additional Requirements for Backward-Compatibility with Legacy
4.3. Additional Requirements for Backward-Compatibility with Legacy
Header Protection Systems (if supported)
This sub-section addresses the use cases 5) - 9) (cf. Section 4.1).
This sub-section addresses the use cases 5) - 9) (cf. Section 3.1).
LS1: Depending on the solution, define a means to distinguish between
forwarded messages, legacy encapsulated messages, and
@ -413,7 +413,7 @@ Internet-Draft Header Protection requirements June 2019
for existing solutions.
5.3.1. Sending Side
4.3.1. Sending Side
LSS1: Determine how legacy HP support can be indicated to outgoing
messages.
@ -422,19 +422,19 @@ Internet-Draft Header Protection requirements June 2019
or guessed.
5.3.2. Receiving Side
4.3.2. Receiving Side
LSR1: Determine how legacy HP support can be detected in incoming
messages.
6. Options to Achieve Header Protection
5. Options to Achieve Header Protection
In the following a set of Options to achieve Email Header Protection.
It is expected that the IETF LAMPS WG chooses an option to update
[RFC8551] wrt. Header Protection.
6.1. Option 1: Memory Hole
5.1. Option 1: Memory Hole
Memory Hole approach works by copying the normal message header
fields into the MIME header section of the top level protected body
@ -445,14 +445,14 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 8]
Melnikov, et al. Expires December 26, 2019 [Page 8]
Internet-Draft Header Protection requirements June 2019
[[ TODO: [DKG] add more information on memory hole]]
6.2. Option 2: Wrapping with message/rfc822 or message/global
5.2. Option 2: Wrapping with message/rfc822 or message/global
Wrapping with message/rfc822 (or message/global) works by copying the
normal message header fields into the MIME header section of the top
@ -468,7 +468,7 @@ Internet-Draft Header Protection requirements June 2019
protection mechanisms (signing and/or encryption) it shares the
protections of the message body.
6.2.1. Content-Type property "forwarded"
5.2.1. Content-Type property "forwarded"
This section outlines how the new "forwarded" Content-Type header
field parameter could be defined (probabely in a separate document)
@ -501,7 +501,7 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 9]
Melnikov, et al. Expires December 26, 2019 [Page 9]
Internet-Draft Header Protection requirements June 2019
@ -512,7 +512,7 @@ Internet-Draft Header Protection requirements June 2019
top-level message, taking into account header section merging
issues as previously discussed.
6.2.2. Handling of S/MIME protected header
5.2.2. Handling of S/MIME protected header
[[This section needs more work. Don't treat anything in it as
unchangeable.]]
@ -557,7 +557,7 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 10]
Melnikov, et al. Expires December 26, 2019 [Page 10]
Internet-Draft Header Protection requirements June 2019
@ -588,7 +588,7 @@ Internet-Draft Header Protection requirements June 2019
some other way, for example with a DKIM signature that validates
and is trusted.
6.2.3. Mail User Agent Algorithm for deciding which version of a header
5.2.3. Mail User Agent Algorithm for deciding which version of a header
field to display
@ -596,12 +596,12 @@ Internet-Draft Header Protection requirements June 2019
body part, extract header fields from it and propogate them to the
top level. This should also work for triple-wrapped messages.]]
6.3. Option 3: Progressive Header Disclosure
5.3. Option 3: Progressive Header Disclosure
This option is similar to Option 2 (cf. Section 6.2). It also makes
use the Content-Type property "forwarded" (cf. Section 6.2.1).
This option is similar to Option 2 (cf. Section 5.2). It also makes
use the Content-Type property "forwarded" (cf. Section 5.2.1).
6.4. Design principles
5.4. Design principles
pretty Easy privacy (pEp) [I-D.birk-pep] is working on bringing
state-of-the-art automatic cryptography known from areas like TLS to
@ -613,7 +613,7 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 11]
Melnikov, et al. Expires December 26, 2019 [Page 11]
Internet-Draft Header Protection requirements June 2019
@ -669,7 +669,7 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 12]
Melnikov, et al. Expires December 26, 2019 [Page 12]
Internet-Draft Header Protection requirements June 2019
@ -679,18 +679,18 @@ Internet-Draft Header Protection requirements June 2019
relevant header fields just as-needed to the next mail transport
agents along the transmission path.
pEp has also implemented the above (in Section 6.2.1) described
pEp has also implemented the above (in Section 5.2.1) described
Content-Type property "forwarded" to distinguish between encapsulated
and forwarded emails.
6.5. Candidate Header Fields for Header Protection
5.5. Candidate Header Fields for Header Protection
By default, all headers of the original message SHOULD be wrapped
with the original message, with one exception:
o the header field "Bcc" MUST NOT be added to the protected headers.
6.6. Stub Outside Headers
5.6. Stub Outside Headers
The outer message requires a minimal set of headers to be in place
for being eligible for transport. This includes the "From", "To",
@ -725,18 +725,18 @@ Internet-Draft Header Protection requirements June 2019
Melnikov, et al. Expires December 25, 2019 [Page 13]
Melnikov, et al. Expires December 26, 2019 [Page 13]
Internet-Draft Header Protection requirements June 2019
6.7. More information
5.7. More information
More information on progressive header disclosure can be found in
[I-D.marques-pep-email] and [I-D.luck-lamps-pep-header-protection].
The latter is a predecessor of this document.
7. Examples <