p≡p I-Ds (IETF Internet-Drafts)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1289 lines
45 KiB

  1. Network Working Group B. Hoeneisen
  2. Internet-Draft pEp Foundation
  3. Intended status: Informational A. Melnikov
  4. Expires: December 30, 2020 Isode Ltd
  5. June 28, 2020
  6. Header Protection for S/MIME
  7. draft-ietf-lamps-header-protection-00
  8. Abstract
  9. Privacy and security issues with email header protection in S/MIME
  10. have been identified for some time. However, the desire to fix these
  11. issues has only recently been expressed in the IETF LAMPS Working
  12. Group. The existing S/MIME specification is to be updated regarding
  13. header protection.
  14. This document describes the problem statement, generic use cases, and
  15. the S/MIME specification for header protection.
  16. Status of This Memo
  17. This Internet-Draft is submitted in full conformance with the
  18. provisions of BCP 78 and BCP 79.
  19. Internet-Drafts are working documents of the Internet Engineering
  20. Task Force (IETF). Note that other groups may also distribute
  21. working documents as Internet-Drafts. The list of current Internet-
  22. Drafts is at https://datatracker.ietf.org/drafts/current/.
  23. Internet-Drafts are draft documents valid for a maximum of six months
  24. and may be updated, replaced, or obsoleted by other documents at any
  25. time. It is inappropriate to use Internet-Drafts as reference
  26. material or to cite them other than as "work in progress."
  27. This Internet-Draft will expire on December 30, 2020.
  28. Copyright Notice
  29. Copyright (c) 2020 IETF Trust and the persons identified as the
  30. document authors. All rights reserved.
  31. This document is subject to BCP 78 and the IETF Trust's Legal
  32. Provisions Relating to IETF Documents
  33. (https://trustee.ietf.org/license-info) in effect on the date of
  34. publication of this document. Please review these documents
  35. carefully, as they describe your rights and restrictions with respect
  36. Hoeneisen & Melnikov Expires December 30, 2020 [Page 1]
  37. Internet-Draft Header Protection S/MIME June 2020
  38. to this document. Code Components extracted from this document must
  39. include Simplified BSD License text as described in Section 4.e of
  40. the Trust Legal Provisions and are provided without warranty as
  41. described in the Simplified BSD License.
  42. Table of Contents
  43. 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
  44. 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 4
  45. 1.2. Terms . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  46. 2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 6
  47. 2.1. Privacy . . . . . . . . . . . . . . . . . . . . . . . . . 6
  48. 2.2. Security . . . . . . . . . . . . . . . . . . . . . . . . 6
  49. 2.3. Usability . . . . . . . . . . . . . . . . . . . . . . . . 6
  50. 2.4. Interoperability . . . . . . . . . . . . . . . . . . . . 6
  51. 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  52. 3.1. Interactions . . . . . . . . . . . . . . . . . . . . . . 7
  53. 3.1.1. Main Case for Header Protection . . . . . . . . . . . 7
  54. 3.1.2. Backward Compatibility . . . . . . . . . . . . . . . 7
  55. 3.2. Protection Levels . . . . . . . . . . . . . . . . . . . . 7
  56. 4. Specification . . . . . . . . . . . . . . . . . . . . . . . . 7
  57. 4.1. Main Use Case . . . . . . . . . . . . . . . . . . . . . . 8
  58. 4.1.1. MIME Format . . . . . . . . . . . . . . . . . . . . . 8
  59. 4.1.2. Inner Message Header Fields . . . . . . . . . . . . . 13
  60. 4.1.3. Wrapper . . . . . . . . . . . . . . . . . . . . . . . 13
  61. 4.1.4. Outer Message Header Fields . . . . . . . . . . . . . 13
  62. 4.1.5. Receiving User Facing Message Header Fields . . . . . 15
  63. 4.1.6. Header Field Flow . . . . . . . . . . . . . . . . . . 15
  64. 4.1.7. Sending Side Message Processing . . . . . . . . . . . 17
  65. 4.1.8. Receiving Side Message Processing . . . . . . . . . . 18
  66. 4.2. Backward Compatibility Use Case . . . . . . . . . . . . . 18
  67. 5. Security Considerations . . . . . . . . . . . . . . . . . . . 19
  68. 6. Privacy Considerations . . . . . . . . . . . . . . . . . . . 19
  69. 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19
  70. 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 19
  71. 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 19
  72. 9.1. Normative References . . . . . . . . . . . . . . . . . . 19
  73. 9.2. Informative References . . . . . . . . . . . . . . . . . 20
  74. 9.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 21
  75. Appendix A. Additional information . . . . . . . . . . . . . . . 21
  76. A.1. Stored Variants of Messages with Bcc . . . . . . . . . . 21
  77. Appendix B. Document Changelog . . . . . . . . . . . . . . . . . 22
  78. Appendix C. Open Issues . . . . . . . . . . . . . . . . . . . . 22
  79. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23
  80. Hoeneisen & Melnikov Expires December 30, 2020 [Page 2]
  81. Internet-Draft Header Protection S/MIME June 2020
  82. 1. Introduction
  83. A range of protocols for the protection of electronic mail (email)
  84. exist, which allow to assess the authenticity and integrity of the
  85. email headers section or selected header fields (HF) from the domain-
  86. level perspective, specifically DomainKeys Identified Mail (DKIM)
  87. [RFC6376] and Sender Policy Framework (SPF) [RFC7208], and Domain-
  88. based Message Authentication, Reporting, and Conformance (DMARC)
  89. [RFC7489]. These protocols, while essential to responding to a range
  90. of attacks on email, do not offer (full) end-to-end protection to the
  91. header section and are not capable of providing privacy for the
  92. information contained therein.
  93. The need for means of Data Minimization, which includes data
  94. spareness and hiding all technically concealable information whenever
  95. possible, has grown in importance over the past several years.
  96. A standard for end-to-end protection of the email header section
  97. exists for S/MIME version 3.1 and later. (cf. [RFC8551]):
  98. In order to protect outer, non-content-related message header
  99. fields (for instance, the "Subject", "To", "From", and "Cc"
  100. fields), the sending client MAY wrap a full MIME message in a
  101. message/RFC822 wrapper in order to apply S/MIME security services
  102. to these header fields.
  103. No mechanism for header protection (HP) has been standardized for
  104. PGP/MIME (Pretty Good Privacy) [RFC3156] yet.
  105. Several varying implementations of end-to-end protections for email
  106. header sections exist, though the total number of such
  107. implementations appears to be rather low.
  108. Some LAMPS WG participants expressed the opinion that whatever
  109. mechanism will be chosen, it should not be limited to S/MIME, but
  110. also applicable to PGP/MIME.
  111. This document describes the problem statement (Section 2), generic
  112. use cases (Section 3) and the specification for Header Protection
  113. (Section 4).
  114. [I-D.ietf-lamps-header-protection-requirements] defines the
  115. requirements that this specification is based on.
  116. This document is in early draft state and contains a proposal to base
  117. the upcoming discussions on. In any case, the final solution is to
  118. be determined by the IETF LAMPS WG.
  119. Hoeneisen & Melnikov Expires December 30, 2020 [Page 3]
  120. Internet-Draft Header Protection S/MIME June 2020
  121. 1.1. Requirements Language
  122. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  123. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
  124. document are to be interpreted as described in [RFC2119].
  125. 1.2. Terms
  126. The following terms are defined for the scope of this document:
  127. o Man-in-the-middle (MITM) attack: cf. [RFC4949], which states: "A
  128. form of active wiretapping attack in which the attacker intercepts
  129. and selectively modifies communicated data to masquerade as one or
  130. more of the entities involved in a communication association."
  131. o S/MIME: Secure/Multipurpose Internet Mail Extensions (cf.
  132. [RFC8551])
  133. o PGP/MIME: MIME Security with OpenPGP (cf. [RFC3156])
  134. o Message: An Email Message consisting of header fields
  135. (collectively called "the Header Section of the message")
  136. followed, optionally, by a Body; cf. [RFC5322].
  137. o Transport: The entity taking care of the transport of a Message
  138. towards the receiver or from the sender. The Transport on the
  139. sending side typically determines the destination recipients by
  140. reading the To, Cc and Bcc Header Fields (of the Outer Message).
  141. The Transport is typically implemented by an MTA (Mail Transfer
  142. Agent).
  143. o Header Field (HF): cf. [RFC5322] Header Fields are lines beginning
  144. with a field name, followed by a colon (":"), followed by a field
  145. body (value), and terminated by CRLF; cf. [RFC5322].
  146. Note: To avoid ambiguity, this document does not use the terms
  147. "Header" or "Headers" in isolation, but instead always uses
  148. "Header Field" to refer to the individual field and "Header
  149. Section" to refer to the entire collection; cf. [RFC5322].
  150. o Header Section (HS): The Header Section is a sequence of lines of
  151. characters with special syntax as defined in [RFC5322]. It is the
  152. (top) section of a message containing the Header Fields.
  153. o Body: The Body is simply a sequence of characters that follows the
  154. Header Section and is separated from the Header Section by an
  155. empty line (i.e., a line with nothing preceding the CRLF); cf
  156. [RFC5322]. It is the (bottom) section of Message containing the
  157. Hoeneisen & Melnikov Expires December 30, 2020 [Page 4]
  158. Internet-Draft Header Protection S/MIME June 2020
  159. payload of a Message. Typically, the Body consists of a
  160. (multipart) MIME [RFC2045] construct.
  161. o MIME Header Fields: Header Fields describing the MIME structure of
  162. its body as defined in [RFC2045].
  163. o MIME Header Section (part): The collection of MIME Header Fields.
  164. "MIME Header Section" refers to a Header Sections that contains
  165. only MIME Header Fields, whereas "MIME Header Section part" refers
  166. to the MIME Header Fields of a Header Section that - in addition
  167. to MIME Header Fields - also contains non-MIME Header Fields.
  168. o Header Protection (HP): cryptographic protection of email Header
  169. Sections (or parts of it) for signatures and/or encryption
  170. o Protection Levels (PL): One of 'signature and encryption',
  171. 'signature only' or 'encryption only' (cf. Section 3.2)
  172. o Original Message (OrigM): The message to be protected before any
  173. protection related processing has been applied on the sending
  174. side.
  175. o Inner Message (InnerM): The message to be protected, i.e. which
  176. wrapping and protection measures are applied to on the sending
  177. side or the result of decryption and unwrapping on the receiving
  178. side respectively. Typically, the Inner Message is in clear text.
  179. The Inner Message is a subset of (or the same as) the Original
  180. Message (cf. Section 4.1.2). The Inner Message must be the same
  181. on the sending and the receiving side.
  182. o Outer Message (OuterM): The Message as handed over to the
  183. Transport or received from the Transport respectively. The Outer
  184. Message normally differs on the sending and the receiving side
  185. (e.g. new Header Fields are added by intermediary nodes).
  186. o Receiving User Facing Message (RUFM): The message used for
  187. rendering at the receiving side after the Outer Message Header
  188. Section has been merged with the Inner Message Header Section.
  189. o Essential Header Fields (EHF): The minimum set of Header Fields an
  190. Outer Message Header Section SHOULD contain; cf. Section 4.1.4.
  191. o Protected: Protected refers to the parts of a message where
  192. protection measures of any Protection Level have been applied to.
  193. o Protected Message: A message that protection measures of any
  194. Protection Levels have been applied to.
  195. Hoeneisen & Melnikov Expires December 30, 2020 [Page 5]
  196. Internet-Draft Header Protection S/MIME June 2020
  197. o Unprotected: Unprotected refers to the parts of a message where no
  198. protection measures of any Protection Levels have been applied to.
  199. o Unprotected Message: A message that no protection measures of any
  200. Protection Levels have been applied to.
  201. o Data Minimization: Data spareness and hiding of all technically
  202. concealable information whenever possible.
  203. 2. Problem Statement
  204. The LAMPS charter contains the following Work Item:
  205. Update the specification for the cryptographic protection of email
  206. headers - both for signatures and encryption - to improve the
  207. implementation situation with respect to privacy, security,
  208. usability and interoperability in cryptographically-protected
  209. electronic mail. Most current implementations of
  210. cryptographically-protected electronic mail protect only the body
  211. of the message, which leaves significant room for attacks against
  212. otherwise-protected messages.
  213. In the following a set of challenges to be addressed:
  214. [[ TODO: enhance this section, add more items to the following ]]
  215. 2.1. Privacy
  216. o Data Minimization, which includes data spareness and hiding all
  217. technically concealable information whenever possible
  218. 2.2. Security
  219. o MITM attacks (cf. [RFC4949])
  220. 2.3. Usability
  221. o User interaction / User experience
  222. 2.4. Interoperability
  223. o Interoperability with [RFC8551] implementations
  224. 3. Use Cases
  225. In the following, the reader can find a list of the generic use cases
  226. that need to be addressed for messages with Header Protection (HP).
  227. Hoeneisen & Melnikov Expires December 30, 2020 [Page 6]
  228. Internet-Draft Header Protection S/MIME June 2020
  229. These use cases apply independently of whether S/MIME, PGP/MIME or
  230. any other technology is used to achieve HP.
  231. 3.1. Interactions
  232. 3.1.1. Main Case for Header Protection
  233. Both peers (sending and receiving side) fully support Header
  234. Protection as specified in this document or the receiving side is at
  235. least compliant with the MIME specification [RFC2045], ff.; cf.
  236. Section 4.1.
  237. 3.1.2. Backward Compatibility
  238. The sending side fully supports Header protection as specified in
  239. this document, while the receiving side does not support the MIME
  240. specification [RFC2045], ff. correctly; see Section 4.2.
  241. Note: The compatibility of legacy HP systems with this new solutions,
  242. and how to handle issues surrounding future maintenance for these
  243. legacy systems, will be decided by the LAMPS WG.
  244. 3.2. Protection Levels
  245. The following protection levels need to be considered:
  246. a) Signature and encryption
  247. Messages containing a cryptographic signature, which are also
  248. encrypted.
  249. b) Signature only
  250. Messages containing a cryptographic signature, but which are not
  251. encrypted.
  252. c) Encryption only
  253. Messages that are encrypted, but do not contain a cryptographic
  254. signature.
  255. 4. Specification
  256. This section contains the specification for Header Protection in
  257. S/MIME to update and clarifies Section 3.1 of [RFC8551] (S/MIME 4.0).
  258. This specification is likely to be integrated into S/MIME at some
  259. later stage.
  260. Hoeneisen & Melnikov Expires December 30, 2020 [Page 7]
  261. Internet-Draft Header Protection S/MIME June 2020
  262. Furthermore, it is likely that PGP/MIME [RFC3156] will also take over
  263. this specification or parts of it.
  264. This specification applies to the protection levels "signature &
  265. encryption" and "signature only" (cf. Section 3.2):
  266. Sending and receiving sides SHOULD implement "signature and
  267. encryption", which is the default to use on the sending side.
  268. Certain implementations MAY decide to send "signature only" messages,
  269. depending on the circumstances and customer requirements. Sending
  270. side MAY and receiving sides SHOULD implement "signature only".
  271. It generally is NOT RECOMMENDED to send a message with protection
  272. level "encryption only". On the other hand, messages with protection
  273. level "encryption only" might arrive at the receiving side. While
  274. not targeted to protection level "encryption only", this
  275. specification is assumed to also function for "encryption only".
  276. Receiving sides SHOULD implement "encryption only".
  277. Note: It is for further study whether or not more guidance for
  278. handling messages with protection level "encryption only" at the
  279. receiving side is needed.
  280. 4.1. Main Use Case
  281. This section applies to the Interaction (cf. Section 3.1), where all
  282. involved parties (sending and receiving side) implement this
  283. specification or the receiving side is at least compliant with the
  284. MIME specification [RFC2045], ff. (For backward compatibility cases
  285. cf. Section 4.2).
  286. 4.1.1. MIME Format
  287. Currently there are two options in discussion:
  288. 1. The option according to the current S/MIME specification (cf.
  289. [RFC8551])
  290. 2. An alternative option that is based on the former "memory hole"
  291. approach (cf. [I-D.autocrypt-lamps-protected-headers])
  292. 4.1.1.1. S/MIME Specification
  293. As per S/MIME version 3.1 and later (cf. [RFC8551]), the sending
  294. client MAY wrap a full MIME message in a message/RFC822 wrapper in
  295. order to apply S/MIME security services to these header fields.
  296. Hoeneisen & Melnikov Expires December 30, 2020 [Page 8]
  297. Internet-Draft Header Protection S/MIME June 2020
  298. To help the receiving side to distinguish between forwarded and
  299. wrapped message, a Content-Type header field parameter "forwarded" is
  300. added as defined in [I-D.melnikov-iana-reg-forwarded]. Certain
  301. mailing applications might display the Inner Message as attachment
  302. otherwise.
  303. The MIME structure of an Email message looks as follows:
  304. <Outer Message Header Section (unprotected)>
  305. <Outer Message Body (protected)>
  306. <MIME Header Section (wrapper)>
  307. <Inner Message Header Section>
  308. <Inner Message Body>
  309. The following example demonstrates how header section and payload of
  310. a protected body part might look like. For example, this will be the
  311. first body part of a multipart/signed message or the signed and/or
  312. encrypted payload of the application/pkcs7-mime body part. Lines
  313. prepended by "O: " are the Outer Message Header Section. Lines
  314. prepended by "I: " are the Inner Message Header Section. Lines
  315. prepended by "W: " are the wrapper (MIME Header Section):
  316. Hoeneisen & Melnikov Expires December 30, 2020 [Page 9]
  317. Internet-Draft Header Protection S/MIME June 2020
  318. O: Date: Mon, 25 Sep 2017 17:31:42 +0100 (GMT Daylight Time)
  319. O: Message-ID: <e4a483cb-1dfb-481d-903b-298c92c21f5e@matt.example.net>
  320. O: Subject: Meeting at my place
  321. O: From: "Alexey Melnikov" <alexey.melnikov@example.net>
  322. O: To: somebody@example.net
  323. O: MIME-Version: 1.0
  324. O: Content-Type: multipart/signed; charset=us-ascii; micalg=sha1;
  325. O: protocol="application/pkcs7-signature";
  326. O: boundary=.cbe16d2a-e1a3-4220-b821-38348fc97237
  327. This is a multipart message in MIME format.
  328. --.cbe16d2a-e1a3-4220-b821-38348fc97237
  329. W: Content-Type: message/RFC822; forwarded=no
  330. W:
  331. I: Date: Mon, 25 Sep 2017 17:31:42 +0100 (GMT Daylight Time)
  332. I: From: "Alexey Melnikov" <alexey.melnikov@example.net>
  333. I: Message-ID: <e4a483cb-1dfb-481d-903b-298c92c21f5e@matt.example.net>
  334. I: MIME-Version: 1.0
  335. I: MMHS-Primary-Precedence: 3
  336. I: Subject: Meeting at my place
  337. I: To: somebody@example.net
  338. I: X-Mailer: Isode Harrier Web Server
  339. I: Content-Type: text/plain; charset=us-ascii
  340. This is an important message that I don't want to be modified.
  341. --.cbe16d2a-e1a3-4220-b821-38348fc97237
  342. Content-Transfer-Encoding: base64
  343. Content-Type: application/pkcs7-signature
  344. [[base-64 encoded signature]]
  345. --.cbe16d2a-e1a3-4220-b821-38348fc97237--
  346. The Outer Message Header Section is unprotected, while the remainder
  347. (Outer Message Body) is protected. The Outer Message Body consists
  348. of the wrapper (MIME Header Section) and the Inner Message (Header
  349. Section and Body).
  350. The wrapper is a simple MIME Header Section with media type "message/
  351. RFC822" containing a Content-Type header field parameter
  352. "forwarded=no" followed by an empty line.
  353. The Inner Message Header Section is the same as (or a subset of) the
  354. Original Message Header Section (cf. Section 4.1.2).
  355. The Inner Message Body is the same as the Original Message Body.
  356. Hoeneisen & Melnikov Expires December 30, 2020 [Page 10]
  357. Internet-Draft Header Protection S/MIME June 2020
  358. The Original Message itself may contain any MIME structure.
  359. There may also be an additional MIME layer with media type
  360. "multipart/mixed" in the Outer Message Body to contain the Inner
  361. Message (wrapped in a "message/RFC822") along with other MIME
  362. part(s).
  363. 4.1.1.2. Alternative Option Autocrypt "Protected Headers" (Ex-"Memory
  364. Hole")
  365. An alternative option (based on the former autocrypt "Memory Hole"
  366. approach) to be considered, is described in
  367. [I-D.autocrypt-lamps-protected-headers].
  368. Unlike the option described in Section 4.1.1.1, this option does not
  369. use a "message/RFC822" wrapper to unambigously delimit the Inner
  370. Message.
  371. Note: it is for further study, whether or not this option is (fully)
  372. compliant with the MIME standard, in particuar also [RFC2046],
  373. Section 5.1. (Multipart Media Type).
  374. The MIME structure of an Email message looks as follows:
  375. <Outer Message Header Section (unprotected)>
  376. <Outer Message Body (protected)>
  377. <Inner Message Header Section>
  378. <Inner Message Body>
  379. The following example demonstrates how header section and payload of
  380. a protect body part might look like. For example, this will be the
  381. first body part of a multipart/signed message or the signed and/or
  382. encrypted payload of the application/pkcs7-mime body part. Lines
  383. prepended by "O: " are the outer header section. Lines prepended by
  384. "I: " are the inner header section.
  385. Hoeneisen & Melnikov Expires December 30, 2020 [Page 11]
  386. Internet-Draft Header Protection S/MIME June 2020
  387. O: Date: Mon, 25 Sep 2017 17:31:42 +0100 (GMT Daylight Time)
  388. O: Message-ID: <e4a483cb-1dfb-481d-903b-298c92c21f5e@matt.example.net>
  389. O: Subject: Meeting at my place
  390. O: From: "Alexey Melnikov" <alexey.melnikov@example.net>
  391. O: MIME-Version: 1.0
  392. O: Content-Type: multipart/signed; charset=us-ascii; micalg=sha1;
  393. O: protocol="application/pkcs7-signature";
  394. O: boundary=.cbe16d2a-e1a3-4220-b821-38348fc97237
  395. This is a multipart message in MIME format.
  396. --.cbe16d2a-e1a3-4220-b821-38348fc97237
  397. I: Date: Mon, 25 Sep 2017 17:31:42 +0100 (GMT Daylight Time)
  398. I: From: "Alexey Melnikov" <alexey.melnikov@example.net>
  399. I: Message-ID: <e4a483cb-1dfb-481d-903b-298c92c21f5e@matt.example.net>
  400. I: MIME-Version: 1.0
  401. I: MMHS-Primary-Precedence: 3
  402. I: Subject: Meeting at my place
  403. I: To: somebody@example.net
  404. I: X-Mailer: Isode Harrier Web Server
  405. I: Content-Type: text/plain; charset=us-ascii
  406. This is an important message that I don't want to be modified.
  407. --.cbe16d2a-e1a3-4220-b821-38348fc97237
  408. Content-Transfer-Encoding: base64
  409. Content-Type: application/pkcs7-signature
  410. [[base-64 encoded signature]]
  411. --.cbe16d2a-e1a3-4220-b821-38348fc97237--
  412. The Outer Message Header Section is unprotected, while the remainder
  413. (Outer Message Body) is protected. The Outer Message Body consists
  414. of the Inner Message (Header Section and Body).
  415. The Inner Message Header Section is the same as (or a subset of) the
  416. Original Message Header Section (cf. Section 4.1.2).
  417. The Inner Message Body is the same as the Original Message Body.
  418. The Original Message itself may contain any MIME structure.
  419. There may also be an additional MIME layer with media type
  420. "multipart/mixed" in the Outer Message Body to contain the Inner
  421. Message along with other MIME part(s).
  422. Hoeneisen & Melnikov Expires December 30, 2020 [Page 12]
  423. Internet-Draft Header Protection S/MIME June 2020
  424. 4.1.2. Inner Message Header Fields
  425. It is RECOMMEND that the Inner Messages contains all the Header
  426. Fields of the Original Message with the exception of the following
  427. Header Field, which MUST NOT be included to the Inner Message nor to
  428. any other protected part of the message:
  429. o Bcc
  430. [[ TODO: Bcc handling needs to be further specified (see also
  431. Appendix A.1). Certain MUAs cannot properly decrypt messages with
  432. Bcc recipients. ]]
  433. 4.1.3. Wrapper
  434. The wrapper is a simple MIME Header Section followed by an empty line
  435. preceding the Inner Message (inside the Outer Message Body). The
  436. media type of the wrapper MUST be "message/RFC822" and SHOULD contain
  437. the Content-Type header field parameter "forwarded=no" as defined in
  438. [I-D.melnikov-iana-reg-forwarded]. The wrapper delimits unambigously
  439. the Inner Message from the rest of the message.
  440. 4.1.4. Outer Message Header Fields
  441. To maximize Privacy, it is strongly RECOMMENDED to follow the
  442. principle of Data Minimization (cf. Section 2.1).
  443. However, the Outer Message Header Section SHOULD contain the
  444. Essential Header Fields and, in addition, MUST contain the Header
  445. Fields of the MIME Header Section part to describe the encryption or
  446. signature as per [RFC8551].
  447. The following Header Fields are defined as the Essential Header
  448. Fields:
  449. o From
  450. o To (if present in the OrigM)
  451. o Cc (if present in the OrigM)
  452. o Bcc (if present in the OrigM, see also Section 4.1.2 and
  453. Appendix A.1)
  454. o Date
  455. o Message-ID
  456. Hoeneisen & Melnikov Expires December 30, 2020 [Page 13]
  457. Internet-Draft Header Protection S/MIME June 2020
  458. o Subject
  459. Some of these Header Fields are needed by the Transport (e.g. to
  460. determine the destination). Furthermore, not including certain
  461. Header Fields may trigger spam detection to flag the message as spam
  462. and/or lead to user experience (UX) issues.
  463. For further Data Minimization the value of the Subject Header Field
  464. SHOULD be obfuscated. In addition, the value of other Essential
  465. Header Fields MAY be obfuscated. Further Header Fields MAY be
  466. obfuscated, though simply not adding those to the Outer Message
  467. Header SHOULD be prefered over obfuscation. Header Field obfuscation
  468. is further specified in Section 4.1.4.1. Header Fields not
  469. obfuscated SHOULD contain the same values as in the Original Message.
  470. The MIME Header Section part is the collection of MIME Header Fields
  471. describing the following MIME structure as defined in [RFC2045]. A
  472. MIME Header Section part typically includes the following Header
  473. Fields:
  474. o MIME-Version
  475. o Content-Type
  476. o Content-Transfer-Encoding
  477. o Content-Disposition
  478. The following example shows the MIME header of an S/MIME signed
  479. message (using application/pkcs7-mime with SignedData):
  480. MIME-Version: 1.0
  481. Content-Type: application/pkcs7-mime; smime-type=signed-data;
  482. name=smime.p7m
  483. Content-Transfer-Encoding: base64
  484. Content-Disposition: attachment; filename=smime.p7m
  485. Depending on the scenario, further Header Fields MAY be exposed in
  486. the Outer Message Header Section, which is NOT RECOMMENDED unless
  487. justified. Such Header Fields may include e.g.:
  488. o References
  489. o Reply-To
  490. o In-Reply-To
  491. Hoeneisen & Melnikov Expires December 30, 2020 [Page 14]
  492. Internet-Draft Header Protection S/MIME June 2020
  493. 4.1.4.1. Obfuscation of Outer Message Header Fields
  494. If the values of the following Outer Message Header Fields are
  495. obfuscated, those SHOULD assume the following values:
  496. * Subject: ...
  497. * Message-ID: <new randomly generated Message-ID>
  498. * Date: Thu, 01 Jan 1970 00:00:00 +0000 (UTC)
  499. [[ TODO: Consider alternatives for Date e.g. set to Monday 9am of the
  500. same week. ]]
  501. In certain implementations also the From, To, and/or Cc Header Field
  502. MAY be obfucated. Those may be replaced by e.g.
  503. o To: Obfuscated anonymous@anonymous.invalid [1]
  504. Such implementations need to ensure that the Transport has access to
  505. these Header Fields in clear text and is capable of processing those.
  506. A use case for obfuscation of all Outer Message Header Fields is
  507. mixnet netwerks, i.e. "onion routing" for email (e.g.[pEp.mixnet]).
  508. Note: It is for further study to what extent Header Field obfuscation
  509. (adversely) impacts spam filtering.
  510. 4.1.5. Receiving User Facing Message Header Fields
  511. The Receiving User Facing Message is constructed as follows:
  512. o The Header Section of the Receiving User Facing Message MUST
  513. consist of the Outer Message Header Fields that are not contained
  514. in the Inner Message Header Section, and the Inner Message Header
  515. Fields (i.e. the Inner Message Header Field MUST always take
  516. precedence).
  517. o The Body of the Receiving User Facing Message Body MUST be the
  518. same as the Inner Message Body.
  519. [[ TODO: Do we need to take special care for HFs, which may appear
  520. multiple times, e.g. Received HF? ]]
  521. 4.1.6. Header Field Flow
  522. The Following figure depicts the different message representations
  523. (OrigM, InnerM, OuterM, RUFM) and which parts those are constructed
  524. from:
  525. Hoeneisen & Melnikov Expires December 30, 2020 [Page 15]
  526. Internet-Draft Header Protection S/MIME June 2020
  527. OrigM InnerM Outer(S) OuterM(R) RUFM
  528. <Trans-HF> > <Trans-HF>
  529. From (OrigM) = From
  530. To (OrigM) = To
  531. Cc (OrigM) = Cc
  532. Bcc (OrigM) = Bcc* > Bcc
  533. Date (OrigM) = Date
  534. Message-ID (OrigM)= Message-ID
  535. Subject (new) = Subject
  536. <MIME-HSp> (new) = <MIME-HSp>
  537. PROTECTED: PROTECTED:
  538. <Wrapper> (new) = <Wrapper>
  539. From > From > From = From > From
  540. To > To > To = To > To
  541. Cc* > Cc > Cc = Cc > Cc
  542. Bcc*
  543. Date > Date > Date = Date > Date
  544. Message-ID > Message-ID > Message-ID = Message-ID > Message-ID
  545. Subject > Subject > Subject = Subject > Subject
  546. <More HF> > <More HF> > <More HF> = <More HF> > <More-HF>
  547. <MIME-HSp> > <MIME-HSp> > <MIME-HSp> = <MIME-HSp> > <MIME-HSp>
  548. <Body> > <Body> > <Body> = <Body> > <Body>
  549. <Signature>* (new)= <Signature>
  550. Legend:
  551. o OuterM(S): Outer Message (OuterM) at sending side (before
  552. processing by Transport)
  553. o OuterM(R): Outer Message at receiving side (as received by
  554. Transport)
  555. o InnerM: Inner Message (that protection is applied to)
  556. o RUFM: Receiving User Facing Message
  557. o More-HF: Additional Header Fields (HF) in the Original Message
  558. (OrigM)
  559. o Wrapper: MIME Header Section; with media type (message/RFC822) to
  560. unambigously delimit the inner message from the rest of the
  561. message.
  562. o MIME-HSp: MIME Header Section part to describe the encryption or
  563. signature as per [RFC8551]
  564. Hoeneisen & Melnikov Expires December 30, 2020 [Page 16]
  565. Internet-Draft Header Protection S/MIME June 2020
  566. o Trans-HF: Header Fields added in Transit (between sending and
  567. receiving side)
  568. o >: taken over / copied from last column
  569. o =: propagates unchanged, unless something unusual (e.g. attack)
  570. happens
  571. o *: HF that is often not present (also further HF may not be
  572. present). If a HF is not present, naturally it can neither be
  573. taken over nor propagated.
  574. o (new) / (OrigM): HF or MIME-HSp is generated depending on the
  575. decision in Section 4.1.7.1, while '(new)' / '(OrigM)' designate
  576. the default.
  577. 4.1.7. Sending Side Message Processing
  578. For a protected message the following steps are applied before a
  579. message is handed over to the Transport:
  580. 4.1.7.1. Step 1: Decide on Protection Level and Information Disclosure
  581. The entity applying protection to a message must decide:
  582. o Which Protection Level (signature and/or encryption) is applied to
  583. the message? This depends on user request and/or local policy as
  584. well as availability of cryptographic keys.
  585. o Which Header Fields of the Orignial Message shall be part of the
  586. Outer Message Header Section? This typically depends on local
  587. policy. By default the Essential Header Fields are part of the
  588. Outer Message Header Section; cf. Section 4.1.4.
  589. o Which of these Header Fields are to be obfuscated? This depends
  590. on local policy and/or specific Privacy requirements of the user.
  591. By default only the Subject Header Field is obfuscated; cf.
  592. Section 4.1.4.1.
  593. 4.1.7.2. Step 2: Compose the Outer Message Header Section
  594. Depending on the decision in Section 4.1.7.1, compose the Outer
  595. Message Header Section. (Note that this also includes the necessary
  596. MIME Header Section part for the following protection layer.)
  597. Outer Header Fields that are not obfuscated should contain the same
  598. values as in the Original Message (except for MIME Header
  599. Hoeneisen & Melnikov Expires December 30, 2020 [Page 17]
  600. Internet-Draft Header Protection S/MIME June 2020
  601. Section part, which depends on the protection level selected in
  602. Section 4.1.7.1).
  603. 4.1.7.3. Step 3: Apply Protection to the Original Message
  604. Depending on the Protection Level selected in Section 4.1.7.1 apply
  605. signature and/or encryption to the Original Message including the
  606. wrapper (as per [RFC8551]) and set the result to the message as Outer
  607. Message Body.
  608. The resulting (Outer) Message is then typically handed over to the
  609. Transport.
  610. [[ TODO: Example ]]
  611. 4.1.8. Receiving Side Message Processing
  612. When a protected message is received the following steps are applied:
  613. 4.1.8.1. Step 1: Decrypt message and/or check signature
  614. Depending on the protection level the received message is decrypted
  615. and/or its signature is checked as per [RFC8551].
  616. 4.1.8.2. Step 2: Construct the Receiving User Facing Message
  617. The Receiving User Facing Message is constructed according to
  618. Section 4.1.5.
  619. The resulting message is handed over for further processing, which
  620. typically involves rendering it to the user.
  621. Note: It is for further study whether and, if yes, how the Outer
  622. Message Header Section (as received from the Transport) is preserved
  623. for the user.
  624. 4.2. Backward Compatibility Use Case
  625. [I-D.autocrypt-lamps-protected-headers] describes a possibility to
  626. achieve backward compatibility with existing S/MIME (and PGP/MIME)
  627. implementations unaware of this specification (Legacy Display). It
  628. mainly focuses on email clients that do not render emails using
  629. header protection (nicely) and may confuse the user. While this has
  630. been observed occasionally in PGP/MIME (cf. [RFC3156]), the extent
  631. of this problem with S/MIME implementations is still unclear. (Note:
  632. At this time, none of the samples in
  633. [I-D.autocrypt-lamps-protected-headers] applies header protection as
  634. Hoeneisen & Melnikov Expires December 30, 2020 [Page 18]
  635. Internet-Draft Header Protection S/MIME June 2020
  636. specified in Section 3.1 of [RFC8551], which is wrapping as Media
  637. Type "message/RFC822".)
  638. Should serious backward compatibility issues with rendering at the
  639. receiver reveal, the Legacy Display format described in
  640. [I-D.autocrypt-lamps-protected-headers] may serve as a basis to
  641. mitigate those (backward compatibility use case).
  642. Another variant of backward compatibility has been implemented by pEp
  643. [I-D.pep-email], i.e. pEp Email Format 1.0. At this time pEp has
  644. implemented this for PGP/MIME (but not yet S/MIME).
  645. 5. Security Considerations
  646. [[ TODO ]]
  647. 6. Privacy Considerations
  648. [[ TODO ]]
  649. 7. IANA Considerations
  650. This document requests no action from IANA.
  651. [[ RFC Editor: This section may be removed before publication. ]]
  652. 8. Acknowledgments
  653. The authors would like to thank the following people who have
  654. provided helpful comments and suggestions for this document: Claudio
  655. Luck, David Wilson, Hernani Marques, Krista Bennett, Kelly Bristol,
  656. Robert Williams, Sofia Balicka, Steve Kille, Volker Birk, and Wei
  657. Chuang.
  658. 9. References
  659. 9.1. Normative References
  660. [I-D.ietf-lamps-header-protection-requirements]
  661. Melnikov, A. and B. Hoeneisen, "Problem Statement and
  662. Requirements for Header Protection", draft-ietf-lamps-
  663. header-protection-requirements-01 (work in progress),
  664. October 2019.
  665. [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
  666. Extensions (MIME) Part One: Format of Internet Message
  667. Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996,
  668. <https://www.rfc-editor.org/info/rfc2045>.
  669. Hoeneisen & Melnikov Expires December 30, 2020 [Page 19]
  670. Internet-Draft Header Protection S/MIME June 2020
  671. [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
  672. Extensions (MIME) Part Two: Media Types", RFC 2046,
  673. DOI 10.17487/RFC2046, November 1996,
  674. <https://www.rfc-editor.org/info/rfc2046>.
  675. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
  676. Requirement Levels", BCP 14, RFC 2119,
  677. DOI 10.17487/RFC2119, March 1997,
  678. <https://www.rfc-editor.org/info/rfc2119>.
  679. [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322,
  680. DOI 10.17487/RFC5322, October 2008,
  681. <https://www.rfc-editor.org/info/rfc5322>.
  682. [RFC8551] Schaad, J., Ramsdell, B., and S. Turner, "Secure/
  683. Multipurpose Internet Mail Extensions (S/MIME) Version 4.0
  684. Message Specification", RFC 8551, DOI 10.17487/RFC8551,
  685. April 2019, <https://www.rfc-editor.org/info/rfc8551>.
  686. 9.2. Informative References
  687. [I-D.autocrypt-lamps-protected-headers]
  688. Einarsson, B., juga, j., and D. Gillmor, "Protected
  689. Headers for Cryptographic E-mail", draft-autocrypt-lamps-
  690. protected-headers-02 (work in progress), December 2019.
  691. [I-D.melnikov-iana-reg-forwarded]
  692. Melnikov, A. and B. Hoeneisen, "IANA Registration of
  693. Content-Type Header Field Parameter 'forwarded'", draft-
  694. melnikov-iana-reg-forwarded-00 (work in progress),
  695. November 2019.
  696. [I-D.pep-email]
  697. Marques, H., "pretty Easy privacy (pEp): Email Formats and
  698. Protocols", draft-marques-pep-email-02 (work in progress),
  699. October 2018.
  700. [pEp.mixnet]
  701. pEp Foundation, "Mixnet", June 2020,
  702. <https://dev.pep.foundation/Mixnet>.
  703. [RFC3156] Elkins, M., Del Torto, D., Levien, R., and T. Roessler,
  704. "MIME Security with OpenPGP", RFC 3156,
  705. DOI 10.17487/RFC3156, August 2001,
  706. <https://www.rfc-editor.org/info/rfc3156>.
  707. Hoeneisen & Melnikov Expires December 30, 2020 [Page 20]
  708. Internet-Draft Header Protection S/MIME June 2020
  709. [RFC4949] Shirey, R., "Internet Security Glossary, Version 2",
  710. FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007,
  711. <https://www.rfc-editor.org/info/rfc4949>.
  712. [RFC6376] Crocker, D., Ed., Hansen, T., Ed., and M. Kucherawy, Ed.,
  713. "DomainKeys Identified Mail (DKIM) Signatures", STD 76,
  714. RFC 6376, DOI 10.17487/RFC6376, September 2011,
  715. <https://www.rfc-editor.org/info/rfc6376>.
  716. [RFC7208] Kitterman, S., "Sender Policy Framework (SPF) for
  717. Authorizing Use of Domains in Email, Version 1", RFC 7208,
  718. DOI 10.17487/RFC7208, April 2014,
  719. <https://www.rfc-editor.org/info/rfc7208>.
  720. [RFC7489] Kucherawy, M., Ed. and E. Zwicky, Ed., "Domain-based
  721. Message Authentication, Reporting, and Conformance
  722. (DMARC)", RFC 7489, DOI 10.17487/RFC7489, March 2015,
  723. <https://www.rfc-editor.org/info/rfc7489>.
  724. 9.3. URIs
  725. [1] mailto:anonymous@anonymous.invalid
  726. Appendix A. Additional information
  727. A.1. Stored Variants of Messages with Bcc
  728. Messages containing at least one recipient address in the Bcc header
  729. field may appear in up to three different variants:
  730. 1. The message for the recipient addresses listed in To or Cc header
  731. fields, which must not include the Bcc header field neither for
  732. signature calculation nor for encryption.
  733. 2. The message(s) sent to the recipient addresses in the Bcc header
  734. field, which depends on the implementation:
  735. a) One message for each recipient in the Bcc header field
  736. separately with a Bcc header field containing only the address of
  737. the recipient it is sent to
  738. b) The same message for each recipient in the Bcc header field
  739. with a Bcc header field containing an indication such as
  740. "Undisclosed recipients" (but no addressees)
  741. c) The same message for each recipient in the Bcc header field
  742. which does not include a Bcc header field (this message is
  743. identical to 1. / cf. above)
  744. Hoeneisen & Melnikov Expires December 30, 2020 [Page 21]
  745. Internet-Draft Header Protection S/MIME June 2020
  746. 3. The message stored in the 'Sent'-Folder of the sender, which
  747. usually contains the Bcc unchanged from the original message,
  748. i.e. with all recipient addresses.
  749. The most privacy preserving is to standardize 2a, as in the other
  750. cases (2b and 2c) information about hidden recipients is revealed via
  751. keys. In any case the message has to be cloned and adjusted
  752. depending on the recipient.
  753. Appendix B. Document Changelog
  754. [[ RFC Editor: This section is to be removed before publication ]]
  755. o draft-ietf-lamps-header-protection-00
  756. * Initial version (text partialy taken over from
  757. [I-D.ietf-lamps-header-protection-requirements]
  758. Appendix C. Open Issues
  759. [[ RFC Editor: This section should be empty and is to be removed
  760. before publication. ]]
  761. o Ensure "protected header" (Ex-Memory-Hole) option is (fully)
  762. compliant with the MIME standard, in particuar also [RFC2046],
  763. Section 5.1. (Multipart Media Type) Section 4.1.1.2.
  764. o Decide on format of obfuscated HFs, in particular Date HF
  765. (Section 4.1.4.1)
  766. o Impact on spam filtering, if HFs are obfuscated (Section 4.1.4.1)
  767. o More examples (e.g. in Section 4.1.7)
  768. o Should Outer Message Header Section (as received) be preserved for
  769. the user? (Section 4.1.8.2)
  770. o Do we need to take special care of HFs that may appear multiple
  771. times, e.g. Received HF? (Section 4.1.8.2)
  772. o Change adding Content-Type header field parameter "forwarded" from
  773. SHOULD to MUST (Section 4.1.3)?
  774. o Decide on whether or not merge requirements from
  775. [I-D.ietf-lamps-header-protection-requirements] into this
  776. document.
  777. Hoeneisen & Melnikov Expires December 30, 2020 [Page 22]
  778. Internet-Draft Header Protection S/MIME June 2020
  779. o Decide what parts of [I-D.autocrypt-lamps-protected-headers] to
  780. merge into this document.
  781. o Enhance Introduction and Problem Statement sections
  782. o Decide on whether or not specification for more legacy HP
  783. requirements should be added to this document
  784. o Improve definitions in Section 3.2
  785. o Privacy Considerations Section 6
  786. o Security Considerations Section 5
  787. Authors' Addresses
  788. Bernie Hoeneisen
  789. pEp Foundation
  790. Oberer Graben 4
  791. CH-8400 Winterthur
  792. Switzerland
  793. Email: bernie.hoeneisen@pep.foundation
  794. URI: https://pep.foundation/
  795. Alexey Melnikov
  796. Isode Ltd
  797. 14 Castle Mews
  798. Hampton, Middlesex TW12 2NP
  799. UK
  800. Email: alexey.melnikov@isode.com
  801. Hoeneisen & Melnikov Expires December 30, 2020 [Page 23]