master
Bernie Hoeneisen 3 years ago
parent 3122db5d0a
commit e0a2fe4958

@ -155,8 +155,14 @@ contradict with security goals, the privacy goals SHALL have precedence.
Examples:
<!-- HB:
RFC2119 language is only useful, if specifying a protocol. Not sure this
should already be used in the introduction section.
Also condider s/SHALL/MUST/g
-->
* pEp implementers SHALL NOT make queries to public key servers by default,
so as to make it more expensive for centralized network actors to learn
in order to make it more expensive for centralized network actors to learn
a user's social graph. This is also problematic security-wise, as
centralized cryptgraphic key subversion at-scale is made cheaper.
* Instead, key distribution SHALL be handled in-band while communicating with
@ -167,17 +173,17 @@ Examples:
transitive trust information is held centrally: that is, while pEp MUST be
able to work with OpenPGP keys which carry trust information, this trust
information SHALL not be used to signal any trust level.
* pEp-enlabed MUAs SHALL either engage in a signed-and-encrypted communication
* pEp-enabled MUAs SHALL either engage in a signed-and-encrypted communication
or in unsigned plaintext communication. While the signatures attached to
plaintext messages can be verified, this cannot enhance the perceived
quality of the message in the user interface, while an invalid signature
degrades the perception: signed-only messages per se don't increase security
if no authentication was done and--taken alone--are without positive influence
on privacy.
degrades the perception: signed-only messages per se do not increase security,
if no authentication was done and are -- as sole measure -- without positive
influence on privacy.
## Data Minimization
Data Minimization includes data spareness and hiding all technically
Data Minimization includes data spareness and hiding of all technically
concealable information whenever possible.
### Metadata Protection
@ -186,23 +192,26 @@ Email metadata (i.e., headers) MUST either be omitted or encrypted whenever
possible.
The PGP/MIME specification {{RFC3156}} provides no facility for
metadata protection. The only protection possible for information
represented by the header field values is to ensure they are encrypted
as part of the message body.
metadata protection. However, it is possible to protect the
information contained in header field values by encapsulating the
whole message into a new message body to be singed and encrypted.
The S/MIME Message Specification {{RFC8551}} instead proposes a way to
secure header fields, which currently is seldomly used in practice:
The S/MIME Message Specification {{RFC8551}}, on the other hand,
defines a way to protect also the header section in addition to the
content of a message:
> The sending client MAY wrap a full MIME message in a
> message/rfc822 wrapper in order to apply S/MIME security
> services to header fields.
<!-- HB to much S/MIME
S/MIME {{RFC8551}} provides no further guidance in deciding which header
fields are transport-relevant and thus might be copied to the wrapper.
-->
### Support for multiple formats
What concerns any kind of email (metadata) encryption: implementors
What concerns any kind of email (metadata) encryption: implementers
of pEp SHOULD be liberal in accepting other approaches to encrypt
email headers, but MUST use the strict and interoperable pEp
format (cf. {{pef-1-0}}) for any outgoing communication.
@ -210,10 +219,10 @@ format (cf. {{pef-1-0}}) for any outgoing communication.
## Interoperability
While pEp implementers SHALL make sure that any communication between
pEp users is maximizing for privacy, interoperability between other
approches to encrypt payloads and hide metadata SHOULD be supported to
the widest extent. To reduce artefacts between non-pEp users, pEp
implementers are
pEp users is maximized for privacy, interoperability between other
approches to encrypt payloads and hide metadata SHOULD be supported to
the widest extent. To mitigate artefacts in the presentation of messages
sent from non-pEp to pEp implementions (and vice versa).
## End-to-End {#end-to-end}
@ -221,7 +230,7 @@ An email endpoint in pEp is the MUA on a user's end-device: that is,
encryption and decryption of messages SHALL be end-device-based and
MUST NOT happen on a server infrastructure.
\[\[ **TODO**: Add corporate settings with Key Escrow / Extra Keys \]\]
\[\[ **TODO**: Add enterprise settings with Key Escrow / Extra Keys \]\]
## Peer-to-Peer {#peer-to-peer}
@ -250,9 +259,10 @@ be done using a structured format, to faciliate the synchronization of state
information across various devices, taking into account multi-device scenarios,
which are common today.
In pEp's reference implementation, keys are hold using the key store of the
cryptographic library used, while peer-specific state information, including
trust information is held in a simple relational database.
In pEp's reference implementation (cf. {{implementation-status}}),
keys are hold using the key store of the cryptographic library used,
while peer-specific state information, including trust information is
held in a simple relational database.
\[\[ **TODO**: Check optimal order the following sections. \]\]
@ -265,7 +275,7 @@ the network address.
For now, a key in pEp for email is an OpenPGP key. Each
identity has a default key attached to it. This is the public
key to be used to encrypto communications to it.
key to be used to encrypt communications to it.
### User {#elements-user}
@ -278,6 +288,9 @@ Each user has at last one identity.
An identity in pEp for email is represented by an email
address, like mailto:alice@example.org.
<!-- HB:
address vs. URI
-->
This can be Alice with her real name, using this identity for
private purposes. Should Alice create another address, like
@ -287,10 +300,14 @@ pair when a new email account is being configured, such as to
not allow correlation by using the same key. If in turn, Alice
wants different addresses of her to be collapsed into one
single identity with one single key, then the user has to configure
them as an aliases.
them as aliases.
If various email addresses represent the same identity, this
is called an alias.
is called an alias (cf. {{elements-alias}}).
<!-- HB:
This section needs rework, e.g. Alice vs. the user, consistency using alias
-->
### Alias {#elements-alias}
@ -306,6 +323,11 @@ formats, which ensure messages to be signed and encrypted. In accordance with
pEp's privacy (and not security) focus, signed-only messages SHALL NOT be
supported. <!-- todo: addreason --> While pEp-enabled clients MUST be able to
render all pEp Email Formats properly, it's RECOMMENDED to use pEp Email Format 2.1.
<!-- HB
- why restricted to PGP/MIME? How about S/MIME?
- Better distinguish by sending and receiving side
-->
Since pEp Email Format 2.0, a compatibility format (i.e., pEp Email Format
1.0, cf. {{pef-1-0}}) exists, which SHOULD be applied towards non-pEp users,
@ -314,6 +336,10 @@ for which trustworthy public keys are available according to the local database.
In case no suitable encryption key is available, an unencrypted, unsigned
MIME email is sent out. This message SHALL contain the sender's public
key, unless Passive Mode (cf. {{passive-mode}}) is active.
<!-- HB
not only in unencrypted case
-->
### Unencrypted pEp Format {#pef-0}
@ -322,6 +348,9 @@ This is the format to be used when unencrypted messages are sent out.
The unencrypted pEp format is a multipart/mixed MIME format, which
by default ensures the delivery of the sender's public key disposed
as an attachment.
<!-- HB
disposed? sounds like trashed
--->
In its simplest form, such an email looks like the following:
@ -331,6 +360,10 @@ In its simplest form, such an email looks like the following:
{::include ../shared/fence-line.mkd}
<!-- HB
Added BEGIN and END lines (for key) to the example
-->
The "pEpkey.asc" file attachment holds the sender's OpenPGP public key in
ASCII-armored format, which is suitable for manual key import by non-pEp
users. Thus, a user of any OpenPGP-enabled MUA is able to manually import the
@ -363,35 +396,57 @@ which in case of a simple text-only email without attachments and
other Content-Types has (1) a text/plain Content-Type with the
PGP-encrypted content and (2) the sender's tranferable public key
at the very end.
<!-- HB
This is too prominent for something that is deprecates.
should rather be some side remark at the end of this section.
Condider not to name the actual version "modern version"
-->
The modern version of PEF-1.0 instead, has a multipart/encrypted MIME
node on the wire format with an OpenPGP encrypted and signed filename
"msg.asc" to be disposed inline.
By default, the subject SHALL be set to "pEp" or alternatively to its
UTF-8 representation as =?utf-8?Q?p=E2=89=A1p?=. This is the only header
field which can be protected in this format. To achieve this, the intended
subject value is moved in encrypted form into the very first text/plain
Content-Type--as the first line, like this:
By default, the subject SHALL be set to "pEp" or alternatively to its
UTF-8 representation as =?utf-8?Q?p=E2=89=A1p?=. This is the only
header field which can be protected in this format. To achieve its
protection, the real subject value is added to the top of the content
section of the very first MIME entity with media type "text/plain",
that is encrypted, e.g.:
> Subject: Credentials
Thus, legacy clients not aware of pEp's subject encryption, are still able
to grasp the actual subject (in the above example: "Credentials") disposed
inline. That subject line MUST also be rendered by pEp-implementing MUAs
if it is written as "subject:" or "SUBJECT:" (i.e., this mechanism is not
case-sensitive).
<!-- HB
- SHALL is too strong here, as this does not impact interoperability
- should be made more readable
-->
Thus, legacy clients not aware of pEp's subject encryption, still
display the actual subject (in the above example: "Credentials") to
the user. Whenever the first encrypted "text/plain" MIME entity
contains such a subject line, pEp-implementing MUAs MUST render it to
the user. Note that this mechanism inherits the case-insensitiveness,
e.g. also "subject:" or "SUBJECT:" are to be rendered.
For clients not implementing the pEp functionality, but which only aim to
stay as interoperable as possible with pEp-enabled MUAs, it's OPTIONAL to add
<!-- HB
It is a good idea to allow for the latter variation? IMHO there should
be one (and only one way) of putting the Subject to the MIME content.
-->
Clients not (fully) implementing pEp, but still aim to
stay as interoperable as possible with pEp-enabled MUAs, it is OPTIONAL to add
the header "X-pEp-Version: 1.0" when using this format: this is considered
implicitly the case. The reason for that is that pEp implementers are only
REQUIRED to hold users exposing "X-pEp-Version: 2.0" or higher as actual
pEp users. Very ancient pEp users and not pEp users are served with this
compatibiltiy format.
<!-- HB
should be rewritten
-->
A modern pEp-enabled MUA, however, SHALL add the X-pEp-Version header with
its highest value (preferly with value "2.1" as for pEp Email Format
2.1 {{pef-2-1}}) when producing this format, so as to announce oneself as
2.1 {{pef-2-1}}) when producing this format, in order to announce oneself as
a pEp MUA with the capability to receive and render more privacy-preserving
formats. That is, upgrading both sides to modern pEp-enabled MUAs, allows
them to upgrade to more privacy-enhancing formats, also protecting (more)
@ -438,7 +493,7 @@ Decrypting the enclosed "msg.msc" part yields the following:
{::include ../shared/fence-line.mkd}
Note that in either case, the actual subject's value is encrypted in
the very first text/plain MIME part under a multipart/mixed MIME node.
the very first text/plain MIME entity under a multipart/mixed MIME node.
### pEp Email Format 2.0 {#pef-2-0}

Loading…
Cancel
Save