Skip to content
This repository has been archived by the owner on Jan 15, 2024. It is now read-only.

Consider proposed text for draft-00 #14

Merged
merged 14 commits into from
Nov 4, 2019
Merged

Consider proposed text for draft-00 #14

merged 14 commits into from
Nov 4, 2019

Conversation

dkg
Copy link
Member

@dkg dkg commented Nov 4, 2019

We have an IETF draft filing deadline today. I'm proposing submitting this as version -00.

I know it's a lot of churn, but i've been re-reading and thinking about overall document structure and i think it's an improvement.

dkg added 14 commits November 3, 2019 21:58
The summary is an important part of the document.  Someone who reads
the summary and understands cryptographic e-mail in general should get
a sense of what's happening here without reading much more.

I've moved it to a more prominent place in the document, and i've
stripped it of language that blends together "what are the underlying
changes?" with "how should one construct such a message?" -- we want
this section to focus on the former, and leave details of the latter
to later sections.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
I think this structure makes the algorithm more understandable, and
provides a simple contrast with the steps that legacy MUA clients are
doing.

It also makes it easier to parameterize the process.  At the moment, i
think we want the defaults to be `legacy` = True and `obscures` =
`{'Subject': '...'}`.  But in the future, some MUAs might experiment
with adjusting either variable and can report back on that experience,
all while still using the same message composition algorithm.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
This is a simple enough concept, and it belongs up in the Terminology section.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
In practice, you can't do all this header shuffling if you also
shuffle things like "Content-Type".

This change just makes that explicit.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
These are minor changes, trying to make the document read more
smoothly and use more consistent terminology.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
We want to be able to show the reader what this stuff looks like
inside the encrypted layer, even if they can't do the work themselves.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
This tab marker was present because it is expected in a diff.  But now
that we are rendering the cleartext, it's clear that kramdosn complains:

    *** Input contains HT ("tab") characters. Undefined behavior will ensue.

We work around this by just removing the tab character from the
included file.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
The "Examples" section contained a text that was difficult to read, in
a non-standard format.  It was particularly unclear to me what the E:
and S: prefixes were supposed to mean, and it was distracting to see
pieces that are not actual parts of the message rendered in brackets.

Most examples also included unnecessary/distracting text like a MIME
preamble.

Furthermore, the Legacy Display parts included unobscured headers,
which is not a recommended practice.

Now that the Test Vectors include the cleartext, most of this
functionality is superceded anyway, and it is superceded by messages
that can be parsed directly in tests.

If there are flaws in the Test Vectors, we should fix those.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
I think readers will want to get the bigger picture about message
composition before wading into the specific algorithms.

Signed-off-by: Daniel Kahn Gillmor <[email protected]>
Signed-off-by: Daniel Kahn Gillmor <[email protected]>
@BjarniRunar
Copy link
Contributor

I like this! :-)

There are a few FIXMEs still in there, and at least one unwritten section. I'm going to merge this PR into my own branch, make some quick fixes to those things and file another PR with the combination. You can then either merge or cherry-pick as you prefer?

Copy link
Contributor

@juga0 juga0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i went through the commits, then run make and read the resulting html. It makes sense to me. It's also great that now all the parts of the test vectors are generated automatically.
i just added some comments, mostly about the style in which the terms should appear. I've not gone through all the instances of those terms.

@@ -59,7 +59,7 @@ normative:
RFC8174:
--- abstract

This document describes a common strategy to extend the cryptographic protections provided by PGP/MIME, etc. to protect message headers in addition to message bodies.
This document describes a common strategy to extend the end-to-end cryptographic protections provided by PGP/MIME, etc. to protect message headers in addition to message bodies.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, something like kuvert could protect headers, but it's not end-to-end. Isn't the end-to-end part something transversal?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what you mean by "transversal" but the point of this document is to try to focus on the PGP/MIME and S/MIME use cases, where cryptographic transformations are typically applied by the composing mail user agent. (e.g. as opposed to DKIM, which is designed for application by middleware transport).

Even if there are some systems (kuvert isn't the only one) that apply these transformations off of the client box, i think we can keep the "end-to-end" term as a distinguishing characteristic.


All headers known to the MUA at composition time MUST be copied verbatim into the header of the target MIME part.
All non-structural headers known to the composing MUA are copied to the MIME header of the Cryptographic Payload.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should MIME header be defined or clarified?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see now #15 :)

@@ -75,7 +75,7 @@ This document defines a scheme, "Protected Headers for Cryptographic E-mail", wh

This document describes how these protections can be applied to cryptographically signed messages, and also discusses some of the challenges of encrypting many transit-oriented headers.

It offers guidance for encrypting non-transit-oriented headers like Subject, and also offers a means to preserve backwards compatibility so that an encrypted Subject remains available to recipients using software that does not implement support for the Protected Headers scheme.
It offers guidance for protecting the confidentiality of non-transit-oriented headers like Subject, and also offers a means to preserve backwards compatibility so that an encrypted Subject remains available to recipients using software that does not implement support for the Protected Headers scheme.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i understand what transit-header means, but is it defined somewhere?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've opened #20 about this.


When a message is encrypted, the Subject should be obscured by replacing the Exposed Subject with three periods: `...`

This value (`...`) was chosen because it is believed to be language agnostic and avoids communicating any potentially misleading information to the recipient (see {{common-pitfalls}} for a more detailed discussion).
This value (`...`) was chosen because it is believed to be language agnostic and avoids communicating any potentially misleading information to the recipient (see {{misunderstood-obscured-subjects}} for a more detailed discussion).
Copy link
Contributor

@juga0 juga0 Nov 4, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also in non-occidental languages?, but this is a different discussion...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hm, yes, this is a concern. I've opened #19 to keep track of it.

- `Cc`
- `Date`

The above is a complete list. No other headers are considered "user-facing".
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should all defined terms appear in ```` or with 1st letter capitalized?,
s/"user-facing"/User-Facing/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been trying to use code style to indicate literal textual elements, and Upper Case to indicate defined terms.


Details:
All non-structural headers known to the composing MUA are copied to the MIME header of the Cryptographic Payload.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should all defined terms appear in ```` or with 1st letter capitalized?, here:
s/All non-strucutural headers/All non-Structural Headers/

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been trying to use code style to indicate literal textual elements, and Upper Case to indicate defined terms.


Legacy Display {#legacy-display}
==============
A reasonable sequential algorithm for composing a message *with* protected headers takes two more parameters in addition to `origbody`, `origheaders`, and `crypto`:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/reasonable//?


Other headers may affect the visible rendering of the message (e.g., `References` and `In-Reply-To` may affect the placement of a message in a threaded discussion), but they are not directly displayed to the user and so are not considered "typically visible" for the purposes of this document.
This section presents a workaround to mitigate this risk by restructuring the Cryptographic Payload before encrypting to include a "Legacy Display" part.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/"Legacy Display"/Legacy Display/?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been trying to use code style to indicate literal textual elements, and Upper Case to indicate defined terms.

Copy link
Contributor

@hpk42 hpk42 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks good to me. thanks for pushing ahead!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants