<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version  -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc comments="yes"?>

<rfc docName="draft-birk-pep-06" category="std">

  <front>
    <title abbrev="pretty Easy privacy (pEp)">pretty Easy privacy (pEp): Privacy by Default</title>

    <author initials="V." surname="Birk" fullname="Volker Birk">
      <organization>pEp Foundation</organization>
      <address>
        <postal>
          <street>Oberer Graben 4</street>
          <city>CH-8400 Winterthur</city>
          <country>Switzerland</country>
        </postal>
        <email>volker.birk@pep.foundation</email>
        <uri>https://pep.foundation/</uri>
      </address>
    </author>
    <author initials="H." surname="Marques" fullname="Hernani Marques">
      <organization>pEp Foundation</organization>
      <address>
        <postal>
          <street>Oberer Graben 4</street>
          <city>CH-8400 Winterthur</city>
          <country>Switzerland</country>
        </postal>
        <email>hernani.marques@pep.foundation</email>
        <uri>https://pep.foundation/</uri>
      </address>
    </author>
    <author initials="B." surname="Hoeneisen" fullname="Bernie Hoeneisen">
      <organization>pEp Foundation</organization>
      <address>
        <postal>
          <street>Oberer Graben 4</street>
          <city>CH-8400 Winterthur</city>
          <country>Switzerland</country>
        </postal>
        <email>bernie.hoeneisen@pep.foundation</email>
        <uri>https://pep.foundation/</uri>
      </address>
    </author>

    <date year="2020" month="November" day="03"/>

    
    
    

    <abstract>


<t>The pretty Easy privacy (pEp) model and protocols describe a set of conventions
for the automation of operations traditionally seen as barriers to
the use and deployment of secure, privacy-preserving end-to-end interpersonal
messaging. These include, but are not limited to, key management, key
discovery, and private key handling (including peer-to-peer synchronization of
private keys and other user data across devices). Human Rights-enabling
principles like Data Minimization, End-to-End and Interoperability are
explicit design goals. For the goal of usable privacy, pEp
introduces means to verify communication between peers and proposes a 
trust-rating system to denote secure types of communications and signal the
privacy level available on a per-user and per-message level.
Significantly, the pEp protocols build on already available security
formats and message transports (e.g., PGP/MIME with email), and are written
with the intent to be interoperable with already widely-deployed systems
in order to ease adoption and implementation.
This document outlines the general design choices and principles of pEp.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Secure and private communications are vital for many different
reasons, and there are particular properties that privacy-preserving
protocols need to fulfill in order to best serve users. In
particular, <xref target="RFC8280"/> has identified and documented important
principles such as data minimization, the end-to-end principle, and
interoperability as integral properties which enable access to
Human Rights. Today’s applications widely lack privacy support that ordinary 
users can easily adapt. The pretty Easy privacy (pEp) protocols generally
conform to the principles outlined in <xref target="RFC8280"/>, and, as such, can
facilitate the adoption and correct usage of secure and private
communications technology.</t>

<t>The pretty Easy privacy (pEp) protocols are propositions to the
Internet community to create software for peers to automatically
encrypt, anonymize (where possible), and verify their daily written
digital communications.  This is achieved by building upon already
existing standards and tools and automating each step a user needs to
carry out in order to engage in secure end-to-end encrypted
communications.  Significantly, the pEp protocols describe how do to
this without dependence on centralized infrastructures.</t>

<t>The pEp project emerged from the CryptoParty movement. During
that time, the initiators learned that while step-by-step guides can
help some users engage in secure end-to-end communications, it is both
more effective and convenient for the vast majority of users if these
step-by-step guides are put into running code (following a protocol), which
automates the initial configuration and general usage of cryptographic
tools. To facilitate this goal, pEp proposes the automation of key
management, key discovery, and key synchronization through an in-band
approach which follows the end-to-end principle.</t>

<t>To mitigate man-in-the-middle attacks (MITM) by an active adversary,
and as the only manual step users carry out in the course of the
protocols, the proposed Trustwords <xref target="I-D.birk-pep-trustwords"/>
mechanism uses natural language representations of two peers’
fingerprints for users to verify their trust in a paired
communication channel.</t>

<t>The privacy-by-default principles that pEp introduces are in
accordance with the perspective outlined in <xref target="RFC7435"/>, aiming to
provide opportunistic security in the sense of “some protection most
of the time”.  This is done, however, with the subtle but important
difference that when privacy is weighed against security, the choice
defaults to privacy.  Therefore, data minimization is a primary goal
in pEp (e.g., hiding subject lines and headers unnecessary for email
transport inside the encrypted payload of a message).</t>

<t>The pEp propositions are focused on (but not limited to) written
digital communications and cover asynchronous (offline) types of
communications like email as well as synchronous (online) types such
as chat.</t>

<t>pEp’s goal is to bridge different standardized and widely-used
communications channels such that users can reach communications
partners in the most privacy-enhancing way possible.</t>

<!-- # Rewritten Inroduction from CL: HM to check for merging.

The pretty Easy privacy (pEp) model and protocols represent an
implementation guideline for bringing Human Rights privacy
principles like data minimization, the end-to-end principle, and
interoperability to existing messaging applications. The pretty Easy
privacy (pEp) protocols are a proposition to the Internet community
to create interoperable software to allow the users to encrypt,
anonymize (where possible), and verify their daily written
communication without application boundaries. pEp does cross-device
trust management such that users are assisted in their privacy
preservation and end-to-end security. Users remain in control of
expressing their personal trust in the correspondents in an easy
way, an information which should be respected by as many
applications as possible.

Balancing security and privacy in remote communication protocols is
vital for many different reasons, and there are unique properties
that protocols prioritizing privacy-preservation need to fulfill in
order to best serve users. In particular, {{RFC8280}} has identified
and documented essential principles required from a Human Rights
perspective when accessing the Internet, such as data minimization,
the end-to-end principle, and interoperability. While (partial)
implementations of these concepts are already available, today's
applications widely lack privacy support that ordinary users can
easily handle. The pretty Easy privacy (pEp) propositions generally
conform with the principles outlined in {{RFC8280}} as a matter of
course, and as such can be used to facilitate the adoption and
correct usage of secure and private communication technology.

The pEp initiators learned from the CryptoParty movement, from which
the project emerged, that manually engaging cryptographic services
is only for the few. It is largely more effective and convenient to
automatically bootstrap the security context, and have humans just
do a verification whenever they prefer, and eventually re-use such
pre-verified trust anchors to authenticate further transports
automatically (multi-factor authentication).

The privacy-by-default principles that pEp introduces are in
accordance with the perspective outlined in {{RFC7435}}, aiming to
provide opportunistic security in the sense of "some protection most
of the time". This is done, however, with the subtle but important
difference that when privacy is weighed against security, the choice
defaults to privacy.

To mitigate man-in-the-middle attacks (MITM) by an active adversary,
the only manual step users carry out in the course of the pEp
protocol, is the proposed Trustwords {{I-D.birk-pep-trustwords}}
mechanism using natural language representations of two peers'
fingerprints for users to verify their trust in a paired
communication channel.

The pEp propositions are focused on written digital communication,
but it is not excluded to other forms of communication may build
upon pEp. pEp covers both asynchronous (offline) types of
communication like email as well as synchronous (online) types of
communication such as chat protocols.

-->

<section anchor="relationship-to-other-pep-documents" title="Relationship to other pEp documents">

<!-- TODO (HM): Merge -->

<t>While this document outlines the general design choices and
principles of pEp, other related documents specialize in more
particular aspects of the model, or the application of pEp on a
specific protocol like as follows:</t>

<t><list style="numbers">
  <t>pEp-enabled applications (e.g., pEp email
<xref target="I-D.pep-email"/>).</t>
  <t>Helper functions for peer interaction, which facilitate understanding 
and handling of the cryptographic aspects of pEp implementation for 
users (e.g., pEp Handshake <xref target="I-D.marques-pep-handshake"/>).</t>
  <t>Helper functions for interactions between a user’s own devices, which give 
the user the ability to run pEp applications on different devices at the same 
time, such as a computer, mobile phone, or tablets (e.g., pEp KeySync
<xref target="I-D.hoeneisen-pep-keysync"/>).</t>
</list></t>

<t>In addition, there are documents that do not directly depend on this
one, but provide generic functions needed in pEp, e.g., IANA
Registration of Trustword Lists <xref target="I-D.birk-pep-trustwords"/>.</t>

<t>[[ Note: At this stage it is not yet clear to us how many of our
  implementation details should be part of new RFCs and where
  we can safely refer to already existing RFCs to clarify which RFCs
  we rely on. ]]</t>

<!-- # Terms -->
<!-- # Normative language -->

</section>
<section anchor="requirements-language" title="Requirements Language">

<t>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 <xref target="RFC2119"/>.</t>

<!-- ## Terms -->

</section>
<section anchor="terms" title="Terms">

<t>The following terms are defined for the scope of this document:</t>

<t><list style="symbols">
  <t>pEp Handshake: The process of one user contacting another over an
independent channel in order to verify Trustwords (or fingerprints
as a fallback). This can be done in-person or through established
verbal communication channels, like a phone
call. <xref target="I-D.marques-pep-handshake"/>  <vspace blankLines='1'/>
    <!-- comment to enfore linefeed in html rendering -->
  </t>
  <t>Trustwords: A scalar-to-word representation of 16-bit numbers (0 to
65535) to natural language words. When doing a Handshake, peers are
shown combined Trustwords of both public keys involved to ease the
comparison. <xref target="I-D.birk-pep-trustwords"/>  <vspace blankLines='1'/>
    <!--
  
[KRB] If my suggestions above are kept [[pEp Handshake]], there is no
need to have the second sentence about the Handshake, as it's already
been related in the Handshake definition.
  
-->
  </t>
  <t>Trust On First Use (TOFU): cf. <xref target="RFC7435"/>, which states: “In a
protocol, TOFU calls for accepting and storing a public key or
credential associated with an asserted identity, without
authenticating that assertion. Subsequent communication that is
authenticated using the cached key or credential is secure against
an MiTM attack, if such an attack did not succeed during the
vulnerable initial communication.”</t>
</list></t>

<!-- TODO: Make clear that we use TOFU without T. -->

<t><list style="symbols">
  <t>Man-in-the-middle (MITM) attack: cf. <xref target="RFC4949"/>, which states: “A
form of active wiretapping attack in which the attacker intercepts
and selectively modifies communicated data to masquerade as one or
more of the entities involved in a communication association.”  <vspace blankLines='1'/>
Note: Historically, MITM has stood for ‘<spanx style="emph">Man</spanx>-in-the-middle’.
However, to indicate that the entity in the middle is not always a
human attacker, MITM can also stand for ‘Machine-in-the-middle’ or
‘Meddler-in-the-middle’.</t>
</list></t>

<!-- Out of scope:
Qualified Electronic Signature
: An electronic signature created with the intention to comply with official regulations or mutual agreements, usually to settle contractual terms electronically on par with traditional methods. Technically they may build upon the same protocols as pEp does, but pEp does not give them any particular meaning. Qualified Electronic Signatures are defined for example by the Swiss Federal Law Nr 943.03 on Certification Services, and the EU Regulation No 910/2014 (eIDAS Regulation).
-->

<!-- To be discussed (if left in, adjust formating): 
OUTGOING MESSAGE
: A message which is being prepared with the intent to, or was already sent to other correspondents. Outgoing messages may be transient and quickly discarded, or being archived.

INCOMING MESSAGE
: A message which is being received, or was previously received from other correspondents. Incoming messages are always persistent and never discarded, and may be archived.
-->

</section>
</section>
<section anchor="protocols-core-design-principles" title="Protocol’s Core Design Principles">

<section anchor="privacy-by-default" title="Privacy by Default">

<t>pEp’s most important goal is to ensure privacy above all else. To clarify,
pEp’s protocol defaults are designed to maximize both security and privacy,
but in the few cases where achieving both more privacy and more security are in
conflict, pEp chooses more privacy.</t>

<t>In contrast to pEp’s prioritization of user privacy, OpenPGP’s
Web-of-Trust (WoT) releases user and trust level relationships to the public.
In addition, queries to OpenPGP keyservers dynamically disclose the social 
graph, indicating a user’s intent to communicate with specific peers.
Similar issues exist in other security protocols that rely upon a 
centralized trust model, such as the certificate revocation protocols used in 
XPKI (S/MIME).</t>

<t>[[<spanx style="strong">TODO</spanx>: Fix the wording and reference to XPKI, S/MIME]].</t>

<t>In pEp messaging (e.g., when using HTML) content and information
SHALL NOT be obtained from remote locations as this constitutes a
privacy breach.</t>

<t>Because of the inherent privacy risks in using remote or
centralized infrastructures, implementations of pEp messaging, by default, 
SHALL NOT obtain content and information from remote or centralized locations,
as this constitutes a privacy breach. In email this issue exists with HTML
mails.</t>

<!-- ### Linking Correspondents to Contact Cards -->

<!-- TODO: To be discussed; not only because of the content / the phrasing,
     but also because of the location.

Users tend to manage databases of contact information about other
correspondents. Such databases contain information about different
addresses used by other correspondents which the user considers to be
reaching the same correspondent (potentially with different degrees of
end-to-end confidentiality).

A software usually can't properly infere these relationships just
from the addresses. Engineers usually improve the result of their
software by handing out personalized tokens (e.g. HTTP cookies) and
looking for them in incoming correspondence, to do cross-channel
correlation and tracking.

Such technology represents an attempt to breack privacy. pEp software
MUST NOT actively employ such technology, but SHOULD integrate with
contacts management and other information bases to passively learn
these associations which the local user already made.

Basically speaking, it should be the user who actively breaks other
users' privacy, not the software, which should not anticipate and
automate the privacy breaking.


\[\ **NOTE**: having a hard time to specify this in exact terms, as
most terms are not yet introcuced at this point: identities, users,
end-to-end, ... \]\]

-->

</section>
<section anchor="data-minimization" title="Data Minimization">

<t>Data minimization keeps data spare and hides all technically 
concealable information whenever possible. It is an important design goal of
pEp.</t>

</section>
<section anchor="interoperability" title="Interoperability">

<t>The proposed pEp protocols seek interoperability with established message 
formats, as well as cryptographic security protocols and their widespread 
implementations.</t>

<!-- TODO: Understandability difficult; to be discussed. 

Two integration strategies are considered:

 1. install asymmetric keys which have been produced and transferred
 under control of pEp into the existing cryptographic security
 services of a transport, to measure and defend the end-to-end
 principle,
 
 1. wrapping messages, for transparently transporting them over
 alternative transports.

Seamless communication between users of software, which implement pEp,
and users of other software, which employ the same encryption services
and technically allow for maintaining the same level of end-to-end
encryption, MUST be guaranteed.

-->

<t>To achieve this interoperability, pEp MUST follow Postel’s Robustness 
Principle outlined in <xref target="RFC1122"/>: “Be liberal in what you accept, and 
conservative in what you send.”</t>

<t>Particularly, pEp applies Postel’s principle as follows:</t>

<t><list style="symbols">
  <t>pEp is conservative (strict) in requirements for pEp
implementations and how they interact with pEp or other compatible
implementations.</t>
  <t>pEp liberally accepts input from non-pEp implementations. For example, in 
email, pEp will not produce outgoing messages, but will transparently 
support decryption of incoming PGP/INLINE messages.</t>
  <t>Finally, where pEp requires divergence from established RFCs due to privacy 
concerns (e.g., from OpenPGP propositions as defined in <xref target="OpenPGP"/>, options 
SHOULD be implemented which empower the user to override pEp’s defaults.</t>
</list></t>

<!-- (e.g., from OpenPGP propositions as defined in {{TLS}}; TLS? -->

<!-- TODO: Discuss contents on this and references for next I-D revision.

\[\[ **TODO**: Keyreset and Keysync are ASN.1 specified, so that vendor-independent integration is easily possible. \]\]

\[\[ **TODO**: tcpdump dissector anyone? \]\]

-->

<!-- Review (HM), maybe link to existing RFCs:

## End-to-End {#end-to-end}

\[\[ **TODO**: Peer-to-Peer means that all nodes have symmetric
capabilities; it does not exclude hierarchies or even central
infrastructure. Some P2P networks have "super nodes", some have
central lists to boostrap the network. While End-to-End means that a
network can not be partitioned in any way to learn from the
communication flowing over the intercepted vertices. They are
complementary but independent concepts. \]\]

-->

</section>
<section anchor="peer-to-peer" title="Peer-to-Peer">

<t>Messaging and verification processes in pEp are designed to work in a
peer-to-peer (P2P) manner, without the involvement of intermediaries.</t>

<t>This means there MUST NOT be any pEp-specific central services
whatsoever needed for pEp implementations, both in the case of 
verification of peers and for the actual encryption.</t>

<t>However, implementers of pEp MAY provide options for interoperation with
providers of centralized infrastructures (e.g., to enable users to
communicate with their peers on platforms with vendor lock-in).</t>

<!-- TODO - to be discussed: Perhaps approaches of Qualified Signatures are, 
     technically speaking, covered by this; this can also be generalized under 
     an own chapter. -->

<t>Trust provided by global Certificate Authorities (e.g., commercial
X.509 CAs) SHALL NOT be signaled as trustworthy
(cf. <xref target="I-D.marques-pep-rating"/>) to users of pEp (e.g., when
interoperating with peers using S/MIME) by default.</t>

</section>
<section anchor="user-interaction" title="User Interaction">

<!-- TODO (HM): Decide whether parts of this goes to handshake draft -->

<t>Implementers of pEp MUST NOT expose users to technical terms and views, 
especially those specific to cryptography, like “keys”, “certificates”, or 
“fingerprints”. Users may explicitly opt-in to see such terms wanting seeking 
for more options; i.e., advanced settings MAY be available, and in some cases, 
these options may be required.</t>

<t>The authors believe that widespread adoption of end-to-end cryptography is
possible if users are not required to understand cryptography and key 
management. This belief forms the central goal of pEp, which is that users
can simply rely on the principles of Privacy by Default.</t>

<t>On the other hand, to preserve usability, users MUST NOT be required to wait
for cryptographic tasks such as key generation to complete before being able to
use their respective message client for its default purpose. In short, pEp
implementers MUST ensure that the ability to draft, send, and receive messages
is always preserved, even if that means a message is sent unencrypted, in
accordance with the Opportunistic Security approach outlined in <xref target="RFC7435"/>.</t>

<t>In turn, pEp implementers MUST ensure that a distinguishable privacy status is
clearly visible to the user, both on a per-contact as well as per-message
level. This allows users to assess both the privacy level for the 
message and the trust level of its intended recipients before choosing to send
it.</t>

<t>[[ <spanx style="strong">NOTE</spanx>: We are aware of the fact that usually UX requirements are
not part of RFCs. However, in order to encourage massive adoption of
secure end-to-end encryption while at the same time avoiding putting
users at risk, we believe certain straightforward signaling
requirements for users to be a good idea, just as it is currently done
for already-popular instant messaging services. ]]</t>

<!-- TODO [nk]:

**[nk] I think this point could be strengthened, maybe something like: By including a UX structure that is so without any complexities or possibilities for the user to make mistakes pEp enables and accelerates the Human Right respecting aspects of the underlying technology.

-->

<!-- TODO: The concrete, respective dialogs belong to the Handshaking and Sync 
     drafts. 

Possibly to be included:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

../shared/ascii-arts/trustwords_schematic.mkd

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{: #pEp_Fig_Trustwords_Schematic title="Trustwords (schematic)" artwork-align="center" }


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

../shared/ascii-arts/handshaking_dialog_insecure.mkd

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{: #pEp_Fig_Handshaking_Dialog_Insecure title="Handshaking Dialog (Insecure)" artwork-align="center" }


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

../shared/ascii-arts/handshaking_dialog_secure.mkd

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{: #pEp_Fig_Handshaking_Dialog_Secure title="Handshaking Dialog (Secure)" artwork-align="center" }


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

../shared/ascii-arts/sync/pep_sync_handshaking_dialog.mkd

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

-->

</section>
</section>
<section anchor="identity-system" title="Identity System">

<t>Everyone has the right to choose how to reveal themselves to the world, both 
offline and online. This is an important element to maintain psychological,
physical, and digital privacy. As such, pEp users MUST have the option to
choose their identity, and they MUST have the ability to maintain multiple
identities.</t>

<t>These different identities MUST NOT be externally correlatable with
each other by default.  On the other hand, combining different
identities when such information is known MUST be supported (alias
support).</t>

<section anchor="user" title="User">

<t>A user is a real world human being or a group of human beings. If it is a 
single human being, it can be called person.</t>

<t>A user is identified by a user ID (user_id). The user_id SHOULD be a UUID, it 
MAY be an arbitrary unique string.</t>

<t>The own user can have a user_id like all other users. If the own user does not
have a user_id, then it is assigned a “pEp_own_userId” instead.</t>

<t>A user can have a default key.
[[ TODO: Provide ref explaining this. ]]</t>

<!-- TODO: To be discussed.

To provide for this separation, pEp will create dedicated keys for
every identity defined.

 * By default, all identities MUST NOT be externally correlatable.
 The user MAY override this through advanced usage, e.g., by importing
 external keys.

-->

<!-- Identities != Aliases; to be refined later.

pEp assists the user in learning different identities of
correspondents (aliases).

\[\[ **TODO**: Define how the incoming own identity must be matched
when multiple identities are matched from To, Cc etc. \]\]

-->

<!--

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{::  include ../shared/ascii-arts/pep_id_system.mkd}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

\[\[ TODO: Verify figure \]\]


## Terms

\[\[ TODO: Adjust Terms to figure, formulate more understandable,
     maybe leave out some details of data model that are specific to
     implementation. \[\]

-->

</section>
<section anchor="address" title="Address">

<t>A pEp address is a network address, e.g., an SMTP address or another
Universal Resource Identifier (URI).</t>

<t>[[ Note: It might be necessary to introduce further addressing
schemes through IETF contributions or IANA registrations, e.g.,
implementing pEp to bridge to popular messaging services with no URIs
defined. ]]</t>

</section>
<section anchor="key" title="Key">

<t>A key is an OpenPGP-compatible asymmetric cryptographic key pair.</t>

<t>Keys in pEp are identified by the full fingerprint (fpr) of the public key. 
The fingerprint is to be obtained from the specific cryptographic service used 
to handle the keys. The canonical representation in pEp is upper-case 
hexadecimal with zero-padding and no separators or spaces.</t>

</section>
<section anchor="identity" title="Identity">

<t>An identity is a representation of a user, encapsulating how this user appears 
within the network of a messaging system. This representation may or may not 
be pseudonymous in nature.</t>

<t>An identity is defined by mapping a user_id to an address. If no user_id is
known, it is guessed by mapping a username to an address.</t>

<t>An identity can have a temporary user_id as a placeholder until a
real user_id is known.</t>

<t>In pEp a different key pair for each (e.g., email) account MUST be created. 
This allows a user to retain different identities, which are not correlated by 
the usage of the same key for all of those. This is beneficial in terms of 
privacy.</t>

<t>A user MAY have a default key; each identity a user has MAY have a default key
(of its own).  When both an Identity and the related User have a default key 
set, the Identity’s default key MUST override the User’s default key.</t>

<t>[[ TODO: Provide ref explaining this. ]]</t>

<t>In <xref target="pep-identity"/>, the definition of a pEp identity can be found
according to the reference implementation by the pEp engine.</t>

<!-- TODO: To be discussed:

## Trust Reflection

The pEp model is designed such that users can choose one of their
identities (pseudonymous) and express their trust in other
correspondents (mainly the trust in them to preserve privacy).

Reasons for an user to mistrust correspondents are both rational and
irrational. Some of the rational reasons for mistrusting an ongoing
correspondence can be automated by pEp. Mainly, weak cryptography is
a reason to assume no privacy guarantees. 

-->

<!-- Detecting tracking
cookies would be another reason -->
<!--
For the computation of the trust rating, pEp requires a data model
which accumulates the learnings from the user, their inputs, and the
learnings from past correspondence.
-->

<!-- TODO: To be discussed. 

### Key {#elements-key}

In some cryptographic services the key is stored in a certificate,
which encodes additional information collected from third-parties,
like signatures from certificate authorities or attestations from
identity systems. E.g. in OpenPGP, keys are analogous to certificates
and contain (non-local) third-party signatures, if not carefully
stripped.

When keys are to be distributed via the pEp protocols to other
correspondents, all third-party signatures and all metadata which is
not required to prove possession of the private key, MUST be stripped
from the copy which is being transferred. The key basically is to be
reduced to a self-signed key only. Note that the same limitation does
not apply for the purpose of keysync among an established device
group.


\[\[ **TODO**: must probably intro certificate-signing-requests here
\]\]

The same asymmetric keys MAY be reused with different cryptographic
services<!-\- cryptotech -\->. Converted copies of the original key MAY
be generated, stored and distributed.

\[\[ **TODO**: CL: Whenever possible, this SHOULD++ be avoided.
Instead new keys SHOULD be generated, and a proof of holding both
keys should be sent to the peers which extend the trust according to
their estimate of the hardness of the new crypto. Otherwise the keys
weaken by the sum of bugs in all crypto services used concurrently.
\]\]

Temporary symmetric keys (secrets), for example channel session keys,
may be obtained or generated and mapped to a key (Key Mapping).

-->

<!-- TODO: To be discussed 

#### Keygrip {#elements-keygrip}

\[\[ **TODO**: \]\]

Given that we envision to reuse keys across protocols, we should
study the Keygrip further (or do we use it already?)

\[2\] The keygrip is a unique identifier for a key pair, it is
independent of any protocol, so that the same key can be used with
different protocols. PKCS-15 calls this a subjectKeyHash; it can be
calculated using Libgcrypt's gcry_pk_get_keygrip ().

\[\[ **TODO**: http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=agent/keyformat.txt;h=42c4b1f06faf1bbe71ffadc2fee0fad6bec91a97;hb=refs/heads/master \]\]

-->

<!--

### User {#elements-user}

\[\[ TODO: user or person? KB: User. Person is an internal DB term.
\]\]

A user is a supposed distinct physical person or a supposed uniform
group of people eventually participating in a conversation, i.e.
sending and receiving messages. The attribution depends on the
knowledge and point-of-view of the participant, and may differ among
participants of the same conversation.

A user is locally represented by just a user ID (user_id), which MUST
NOT be disclosed to other participants. The user_id MUST be a unique
string, it MAY be an arbitrary unique string, e.g., a pointer or
foreign primary key into a contacts management application. In lack
of a better source, it SHOULD be a UUID.

No constrain on the user_id exists for the local pEp user itself. In
lack of a better user_id for the local user, instead of an UUID, the
user_id SHOULD be "pEp_own_userId" (without the quotes).

-->

<!-- TODO: To be discussed

#### User's Default Key

Any user can be optionally assigned a default key (cf. {{elements-key}}).

<!-\- Multiple default keys per crypto type -\->

TODO: A different default key can be assigned to each cryptographic
system supported, e.g. a default key for ECDSA, one for ED25519, and
one for RSA.

A default key which is considered weak MUST be ignored.

A default key MUST otherwise override any automatically elected key.

Keys which are generated automatically by pEp to bootstrap the
protocol MUST NOT be set as default keys automatically.

-->

<!-- TODO: To be discussed

### Identity {#elements-identity}

While a user's user_id is an element for matching the messages to
correspondents only in the local context and is not to be disclosed,
Identities are those elements signaled between correspondents and are
potentially encoded with the message (connection oriented transports
may not do this, but routing oriented transports require this
information).

An identity is a label (possibly a pseudonymous) notified by a
sender. Multiple correspondents may use the same label, such that
there is generally no one-to-one mapping from an identity to an user.

Matching of users is possible in the context of a message. There are
three properties considered:

 * is the address known
 * are the users related to the address trusted
 * \[\[ **TODO** \]\]

An identity is defined as a mapping of a user_id to an address (cf.
{{elements-address}}). If no user_id is known at the time of processing an
address, the Identity has to be appropriately guessed. Guessing
depends on context, and may involve querying a local contact list
manager.

\[\[ **TODO**: add an exhaustive intro/teaser why we need contact
list integration to perform well. \]\]

An Identity can have a temporary user_id as a placeholder until a
real user_id is known.

\[\[ **TODO**: should such a temporary user_id be exclusive to this
Identity, should it be "garbage collected", should it be available to
match with other Identities... lots of questions about the
referencial DB / OO model here. \]\]

An Identity can have a default key (cf. {{elements-key}}). When both an
Identity and the related User have a default key set, the Identity's
default key MUST override the User's default key.

\[\[ **TODO**: see User's Default Key for copy+paste MUST/SHOULD here\]\]

\[\[ **NOTE**: This is the reason why in current pEp implementations
for each (email) account a different key pair is created, which
allows a user to retain different identities. \]\]

In {{pep-identity}} you can find how a pEp identity is defined in the
reference implementation of the pEp Engine.

-->

<!--

### Alias {#elements-alias}

\[\[TODO\]\]

### Address {#elements-address}

-->

<!--
Original:
An address is a network address, e.g., an SMTP address or another URI.

The problem with this definition is that: - it is not "functional",
so it assumes there is a solid static address out there in every type
of network/channel. - it leads to assume that an incoming message may
usually be labeled with a source address, which is a strong
requirement. -->

<!-- TODO: To be discussed.

An address is a resource identifier, which can be associated to a
network interface, and which the network interface can use to send a
message to a correspondent. It is either an SMTP address or an URI.

\[\[ **TODO**: what about channels that don't tell us where a
message comes from? \]\]

\[\[ **TODO**: question will arise: why not use mailto:// for SMTP
address ? \]\]

\[\[ **NOTE**: It might be necessary to introduce further addressing
schemes through IETF contributions or IANA registrations, e.g.,
implementing pEp to bridge to popular messaging services with no URIs
defined. \]\]

-->

<!--

## Opportunistic Protection

Opportunistic protection provides for cryptographic keys to be
exchanged end-to-end, such that messages can be eventually verified
and encrypted.

### Handshake Initialization Protocol

The basic protocol of pEp is a simple two-step handshake which is
continuously running.

 * In every message delivered, the public key of the sender, and any
 pending revocation certificate concerning the sender, MUST be
 additionally delivered (guarding some exceptional use cases
 described later).

-->

<!-- this is to keep XML2RFC happy for a picture followin a list element -->

<!-- TODO: to be discussed; consider commented out until Message Archiving and Journaling -->

<!-- TODO: To be discussed

The sequence diagram of the basic protocol is rather trivial. 

Possibly to be included:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

../shared/ascii-art/basic_pep_protocol_interchange.mkd

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{: #pEp_Fig_Basic_pEp_protocol_interchange title="Basic pEp protocol interchange" artwork-align="center" }

-->

<!-- To be discussed

With no auxiliary support like pre-shared secrets, or exercising
trust in external third-parties, this is the fastest way to
automatically assist Bob in starting an encrypted conversation with
Alice.

-->
<!-- 
The protocol has two advantages: it requires no external input to
start functioning, and it works fully asynchronous and in-band. The
protocol has two drawbacks though, which pEp explicitely accepts;
first, Alice may totally renounce privacy in her first message, i.e.,
until she receives a reply from Bob; and second, both won't
immediately authenticate their channel once they start the encrypted
communication.

**[KRB] The pEp protocol has two advantages: it requires no external input in order to start functioning, and it works fully asynchronous and in-band.  The protocol has two drawbacks, however, which pEp explicitly acknowledges: first, a user may totally renounce privacy in their first message for whatever reason (e.g., until they receive a reply from the intended recipient), and second, both users won't (don't might be better here) immediately authenticate their channel once encrypted communication has begun."

But still, it is a huge advancement over sticking with plaintext
communication forever; at this point, a passive eavesdropper is
already locked out. And an active attacker only has a short
window-of-opportunity to attack. 

**[KRB] "Despite these drawbacks, the pEp protocol is a huge improvement over plaintext communication in that a passive eavesdropper is already locked out of the communication, and an active attacker has their attack window-of-opportunity shortened drastically."

-->

<!-- To be discussed

The exact format is transport specific, in particular, the
cryptographic material may be sent in three different ways.

 1. On a transport for structured messages (e.g. {{MIME}} based email), it 
may be bundled with the original message, resulting in a replacement framing 
message
 0. The cryptographic service may embed it into the cryptographic envelope in a transport specific way (e.g. {{SMIME}})
 0. Additional technical messages may be sent precursing the actual message. \[\[TODO: Such messages MUST be cryptographically interlinked such that partial reception remains totally useless to the recipient.\]\]

Different variants of the above may be used during initialization and
in the loop state.

Let's say Alice sets up a second device, and configures it with her
same identity. pEp MUST first create a new key. Alice now ends up
with two separate keys on two devices. Alice immediately sends a
second message to Bob from her new device (Message 3 in {{pEp_F_2}}).
Her new device has not yet learned the public key of Bob, so Message
3 is sent unencrypted again.

Check figure:

../shared/ascii-art/todo_second_device_in_use.mkd

Neither Alice nor Bob really care about the details, and if it was
not for the pEp protocol, they would continue to send and receive
messages in clear text. pEp wants to improve this, and wants to
provide encryption whenever possible. But pEp never stops anyone from
sending a message, if by no means it can't start encrypting
automatically.

 * pEp, in it's default configuration, MUST NOT, ever, prevent the
 user from sending a message or interrupt this process with questions
 * It MUST clearly signal the predicted privacy rating for the
 outgoing message though.

\[\[ **TODO**: we just introduced rating *prediction* without prior
explanation \]\]

Alice, who is sending her first message to Bob on her additional
device, will clearly see that pEp predicts a low privacy for her
outgoing message.

Check figure:

../shared/ascii-art/todo_received_message_from_unlinked_additional_device.mkd

Now Bob sees a message and a new PubKey_A2 from Alice, while he
previously learned PubKey_A from her. Bob's pEp is giving this a low
rating. As Bob and Alice have not expressed trust in their
connection yet, pEp now accepts Alice's second key. Still, the
first learned key is preferred, which is Alices first key, which
residing on her first computer.

 * For any identity, pEp MUST use the first learned key for
 encryption, otherwise a man-in-the-middle could succesfully install
 an additional key by forging a message. - The recipient MUST
 maintain the validity records of learned keys independently, but the
 validity MUST NOT exceed those encoded in the received keys.

\[\[ **TODO**: add note if pEp requires valid network time, I think
it could be designed such that it's not required\]\]

\[\[ **TODO**: why not encrypt to all still valid keys on a given
transport?\]\]

Note that the case above depicts the worst case scenario. When Alice
started using her new computer, she may have re-read Message 2 of Bob
on the new device, and pEp would have immediately learned Bob's
public key, so that outgoing Message 3 would've already been
encrypted. This is covered in the transports model with the incoming
and outgoing messages property, described later. TODO

-->

<!-- TODO: Eventually move this to another chapter or the Key Sync draft

### Private Device Pairing

To read Bob's message on her second device, she needs to pair them,
which engages the keysync protocol. Ideally, Alice's oldest key would
automatically find its way onto all of her devices. Unfortunately,
pEp synchronization cannot occur fully automatically. Alice first
needs to be guided through another function of pEp, which is mutual
authentication. For this, Alice operates both of her devices, and
once she has selected the common account or has entered an address of the
other device, she has to compare the public key fingerprints of both
devices (simplified through the use of Trustwords). If she confirms
on both devices, each of them will mark the other's public key as
trusted, and register it under the same "own" user.

TODO; check candidate figure:

../shared/ascii-art/todo_device_pairing.mkd

Note that the transport for synchronization messages and the
transport for the users messages MAY be separate transports.

### Automatic Key Management {#pEp-key-mgmt}

#### Synchronization

At this point in time both devices disclose all of their private keys
(one each) to each other, and Alice can now read Bob's messages
on both of her devices.

-->

<!-- TODO: To be discussed

## Pervasive Forwarding {#pEp-forwarding}

### Transports and Selection

Applications implementing the pEp protocol SHOULD subsidiarily offer
their transport service for use by other applications. pEp will
automatically prefer Transports with higher privacy or security
properties.

Messages are addressed to identities; and identities are supposed at
a number of network addresses. Upon sending, network addresses are
translated to a transport selection and the establishment of a
channel; the message is then encoded specifically for the transport,
and eventually tagged as a pEp message.

A transport MAY be realized over an object store to which the
participants have shared access.

In particular, for exchanging sync messages between the users own
devices, one or more object store per identity, and one or more
identities per object store may be used to relay the messages. A
common example of such an object store is an IMAP Mailbox.

<!-\- the sync protocol MUST run independent instances for each identity, for 
not leaking information over a disjoint subset of shared mailboxes -\->

Other than a shared object store or, more generally, a shared
database, the following integration patterns may be encountered:

 * message queues, eventually supporting point-to-point (unicast),
 multipoint (multicast), one-to-all (broadcast) delivery, with
 address-sharing (load-balancing at receiver or sender side) and
 depending on the topology and address as a context (anycast).
 * file passing (e.g. key import)
 * remote procedure calling (RPC)

Note that integration patters are a functional model; and for any
transport natively designed to best suit one of them, there exists
concepts to adapt software written for another one. Some functional
guarantees are usually not maintained through such a layer of
virtualization. pEp tries to predict the conservation of privacy
across such layers of virtualization.


### Use to Cryptographic Services

<!-\- The proper title would be "Implementation of Cryptographic
Services", but most people associate other meaning to
"implementation" as it is meant in object oriented programming -\->

pEp in itself does not introduce a new cryptographic service. It
requires the transport to have default encryption services and
standards for encoding and decoding such messages. pEp defines an
interface which must be implemented by the transport's cryptographic
service. One transport MAY have multiple cryptographic services.

pEp requires access

 * to the public key
 * to the fingerprint
 * the ciphersuite in use for a message
 * the list of private keys
 * encryption and decryption function
 * signature and verification function

pEp must also be able to

 * create a new key pair
 * revoke a key pair
 * import private keys

-->

<!-- NOTE: a system architecture design comment __
 
 - export private keys

The requirement "export a private key" would be VERY limiting. PKCS
#11 (OASIS Standard) is important here. - People want private keys to
be managed by secure elements, and their main job is to NOT hand out
the private key. Instead, what is often possible is to bring two such
secure elements "in touch", and obtain a "transport cetificate" from
the receiving one, hand it to the sending one, and if the sending one
validates it, it will hand out the private key encrypted to the
transport certificate. - This is not too dissimilar on what we do
with keysync. Making this requirement "functional" instead of
"procedural", gives us more room to integrate with existing crypto
services. 

 * transfer a private key to a remote key store

-->

<!-- TODO: To be discussed.

### Message Decoding and Encoding {#message-codec}

If a transport already has a facility to use end-to-end keys (and the
transport is generally considered integral), pEp should convert and
install the "own" key.<!-\- CL: reuse of keys is bad practice -\->

\[\[ **TODO**: we have a problem here: we don't always hold the
private key in a file. \]\]

The trust rating of a transport depends on the protocol, and an
ongoing analysis of the general community. \[\[ **TODO**: Online
registry ahead? \]\]

Whenever the transport of a message is not sufficiently rated
trustworthy, pEp will engage the handshake protocol, and eventually
protect messages cryptographically by wrapping them.

Each iteration of wrapping is an operation in three stages, which
each is to be done according to the specific transport selected and
the specific cryptographic services in use:

 * stage 1 - encoding a pEp structured message into an "inner"
 message

 * stage 2 - wrapping a cleartext message with an "outer" message,
 which may also contain public keys and revocation certifications,
 and then represents the cleartext to be submitted to the
 cryptographic functions;

 * stage 3 - cryptographically protect the "outer" message for
 confidentiality and integrity and encode it such that it can be
 transported ("transport" message)

-->

<!-- TODO: To be discussed; especially to be discussed in which I-Ds
     and when to add it. For the general draft, explanations to
     email-specific.

### Message Wrapping and Tunneling

\[\[ **TODO**: Quick Intro to Tunneling vs Transport, and various Onion Schemes, and Mixnet \]\]

Routed networks require that a message carries a destination address,
and often also a source address. This is metadata being leaked, and
most often it is cleartext information. {{pEp_F_5}} shows in a
sequence diagram how an eavesdropper (here depicted as a Three-Letter
Agency), sees a message directed from Alice to Bob being sent from
Alice to Bob.

Check figure:

../shared/ascii-art/todo_eavesdropping_in_transit.mkd

A workaround for Alice is to start wrapping the messages and
directing them to a relaying party. In the simplest case she requires
Bobs Corporation Transfer Agent to cooperate, so that she can link
the message to a generic corporate address. {{pEp_F_6}} depicts how
the eavesdropper now only sees Alice communicating with Bobs
Corporation.

Check figure:

../shared/ascii-art/todo_onion_routing.mkd


Alice can apply the wrapping recursively. An Internet Service
Provider may also offer a relying service. {{pEp_F_7}} shows that by
double wrapping the message, the eavesdropper starts to read less and
less meaningful metadata from the messages, in this case a message
from Alices ISP to Bobs Corporation.

Check figure:

../shared/ascii-art/todo_multiple_wrapping_onion_routing.mkd

Nesting of messages is an important concept in pEp.

 * On a transport which supports structured messages and an
 extensible schema, an encoding for wrapping messages MUST be
 defined.

 * On a transport which supports message types and new message types
 can be allocated, a message type and an coding for a pEp message
 MUST be provided.

See {{message-codec}} for more technical
specification.

\[\[ **TODO**: add the steps for wrapping a message, using the
various abstracted elements \]\]

\[\[ **TODO**: add a paragraph about wrapping when a final public key
is not known \]\]

-->

<!-- TODO: This - with the mention of "server" - mostly belongs to email; to
     be discussed how to frame that.

## Message Archiving and Journaling

\[\[ **TODO**: say more on archival/journal. \]\]

Check figure:

../shared/ascii-art/todo_trusted_and_untrusted_server.mkd -->

<!-- TODO: To be discussed / maybe commented out

## Information Base Synchronization

While the pEp protocol is applied to incoming and outcoing messages,
information is accumulated which will enhance the future
qualification of trust and increase the protection of messages.
Cryptographic details, connected transports and applications, trust
and mistrust input form the user, and the address book is among the
information collected.

For the user experience across the data terminal equipment (e.g.
MUAs) to remain consistent, Synchronization of these properties is
necessary.

\[\[ **TODO**: give an overview on what object types the sync stack
needs (pEp elements, contacts, keys, ...) \]\]

-->

<!-- TODO: Fill out TODOs.

### Base Protocol

base_prepare_message
base_decorate_message
base_extract_message


### Device Groups

\[\[TODO\]\]

### Private Keys

\[\[TODO\]\]

### Trust Records

\[\[TODO\]\]

### Public Keys

\[\[TODO\]\]

-->

</section>
</section>
<section anchor="key-management" title="Key Management">

<t>In order to achieve the goal of widespread adoption of secure
communications, key management in pEp MUST be automated.</t>

<section anchor="key-generation" title="Key Generation">

<t>A pEp implementation MUST ensure that cryptographic keys for every
configured identity are available. If a corresponding key pair for the
identity of a user is found and said identity fulfills the
requirements (e.g., for email, as set out in
<xref target="I-D.pep-email"/>), said key pair MUST be reused. Otherwise a
new key pair MUST be generated. This may be carried out instantly upon
its configuration.</t>

<t>On devices with limited processing power (e.g., mobile devices) the key
generation may take more time than a user is willing to wait. If this
is the case, users SHOULD NOT be stopped from communicating, i.e., the
key generation process SHOULD be carried out in the background.</t>

</section>
<section anchor="private-keys" title="Private Keys">

<section anchor="storage" title="Storage">

<t>Private keys in pEp implementations MUST always be held on the end
user’s device(s): pEp implementers MUST NOT rely on private keys
stored in centralized remote locations. This applies even for key
storages where the private keys are protected with sufficiently long
passphrases. It is considered a violation of pEp’s P2P design
principle to rely on centralized infrastructures
(cf. <xref target="peer-to-peer"/>). This also applies for pEp implementations
created for applications not residing on a user’s device (e.g.,
web-based MUAs). In such cases, pEp implementations MUST be done in a
way such that the locally-held private key can neither be directly accessed 
nor leaked to the outside world.</t>

<t>[[ Note: It is particularly important that browser add-ons implementing pEp
  functionality do not obtain their cryptographic code from a
  centralized (cloud) service, as this must be considered a
  centralized attack vector allowing for backdoors, negatively
  impacting privacy. ]]</t>

<t>Cf. <xref target="private-key-synchronization"/> for a means to synchronize
private keys among different devices of the same network address in a 
secure manner.</t>

</section>
<section anchor="passphrase" title="Passphrase">

<t>Passphrases to protect a user’s private key MUST be supported by pEp
implementations, but MUST NOT be enforced by default. That is, if a
pEp implementation finds a suitable (i.e., secure enough) cryptographic
setup, which uses passphrases, pEp implementations MUST provide a way
to unlock the key. However, if a new key pair is generated for a given
identity, no passphrase MUST be put in place. The authors assume that
the enforcement of secure (i.e., unique and long enough) passphrases
would massively reduce the number of pEp users (by hassling them),
while providing little to no additional privacy for the common
cases of passive monitoring being carried out by corporations or
state-level actors.</t>

</section>
</section>
<section anchor="key-reset" title="Key Reset">

<!-- TODO: discuss that with backup / reformulate; less informal style.

Now, Bob was unlucky and got his computer infected, so that he is
setting it up anew. On the fresh system, while his previous key is
recovered from the backup, the key itself was compromised, such that
it needs to be replaced.

 * When a key is recovered from backup, it SHOULD be replaced.

-->

<!-- TODO: Check what can be kept here. -->

<!-- To be discussed

Assume Bob chooses to "reset" pEp. This means that pEp is resetting
his "own" identity, revoking all keys and creating a new one alongside
with a key revocation certificate for the old key. From now on, all of 
Bob's messages will contain the new public key, whereas the old ones 
will be revoked.


 * When pEp receives a revocation certificate through a pEp specific
 transport format, it MUST mark all the learned keys as revoked,
 while,

 * when pEp receives a revocation certificate through a non-pEp
 specific transport format, it MUST mark only the specified key as
 revoked.
 
 * Revocation certificates MUST be accepted from any source, given
 that they pass cryptographic scrutiny (i.e., that they are valid).
 
 * The message delivering the revocation certificate MAY be signed by
 the key the revoked certificate concerns.
 
 * A revocation certificate for an "own" key MAY be received; in such
 a case, an "own" identity reset must be triggered.
 
 * It is a considered a good course of action to submit revocation
 certificates or private keys to the issuer, shall third-party
 private keys be found in leaked datasets. Submission MAY be
 anonymous.
 
 * Receiving an "own" private key from a non-"own" identity MUST
 trigger an "own" identity reset.

Bob has now replaced his key. Alice wouldn't know anything of Bob's
new key until receiving a message from Bob. This is why Bobs pEp
sends a technical message to all recent correspondents. If Alice is
not a recent correspondent, and she suddenly starts writing to Bob
again, she will see a lowered rating because of the timeframe<!-\-
MUST! -\->, and she'll be using Bob's deprecated key which she
still considers valid. Bob can then still decrypt the received
message, but will also see a lowered rating, because of the revoked
key being used. For opportunistic protection, it is still better to
use a deprecated key, than sending messages plaintext.

This key rollover was almost transparent for Bob and Alice. The
previous time Bob went through this, he hadn't done a backup, and things
didn't go as smoothly. He had lost his previous key, and pEp could not
deliver the revocation certificate automatically. Bob then needed
\[\[ **TODO**: Bob does not really know this need \]\] to write Alice
a short enquiry, to please reset the trust on his identity. Alice
heard about Bob's issue before, and followed up, and Alice's pEp then
blacklisted all the previously acquired keys. The most recent key attached
was then the new oldest valid key learned, ready to be used.

-->

<!-- TODO: to be discuss in relation to actual practice

### Private Key Export / Import

A private key can be exported from one device for import onto
another device.  When pEp's Key Sync (cf. {{private-key-synchronization}}) is 
not available or not desired to be used, this is largely a manual process.

-->

</section>
<section anchor="public-key-distribution" title="Public Key Distribution">

<t>As the key is available (cf. <xref target="key-generation"/>) implementers
of pEp are REQUIRED to ensure that the identity’s public key is
attached to every outgoing message. However, this MAY be omitted if
the peer has previously received a message encrypted with the public key
of the sender.</t>

<t>The sender’s public key SHOULD be sent encrypted whenever possible,
i.e., when a public key of the receiving peer is available.
If no encryption key of the recipient is available, the sender’s
public key MAY be sent unencrypted. In either case, this approach
ensures that messaging clients (e.g., MUAs that at least implement
OpenPGP) do not need to have pEp implemented to see a user’s public
key. Such peers thus have the chance to (automatically) import the
sender’s public key.</t>

<t>If there is already a known public key from the sender of a message
and it is still valid and not expired, new keys MUST NOT be used for
future communication unless they are signed by the previous key (to
avoid a MITM attack). Messages MUST always be encrypted with the
receiving peer’s oldest public key, as long as it is valid and not
expired.</t>

<section anchor="ux-considerations" title="UX Considerations">

<t>Implementers of pEp SHALL prevent the display of public keys attached to
messages (e.g, in email) to the user in order to prevent
user confusion by files they are potentially unaware of how to handle.</t>

</section>
<section anchor="no-addition-of-unnecessary-metadata" title="No addition of unnecessary metadata">

<t>Metadata, such as email headers, MUST NOT be added in order to announce 
a user’s public key. This is considered unnecessary information leakage, may 
affect user privacy, and may be subject to a country’s data retention laws (cf. <xref target="data-minimization"/>). Furthermore, this may affect interoperability to 
existing users that have no knowledge of such header fields, such as users of 
OpenPGP in email, and lose the ability to import any keys distributed in this 
way as a result. The ability to extract and receive public keys from such
metadata SHOULD be supported, however, in the event these approaches become
widespread.</t>

</section>
<section anchor="no-centralized-public-key-storage-or-retrieval-by-default" title="No centralized public key storage or retrieval by default">

<t>Keyservers or generally intermediate approaches to obtain a peer’s
public key SHALL NOT be used by default. On the other hand, the user
MAY be provided with the option to opt-in for remote locations to
obtain keys, considering the widespread adoption of such approaches
for key distribution.</t>

<t>Keys generated or obtained by pEp clients MUST NOT be uploaded to any
(intermediate) keystore locations without the user’s explicit consent.</t>

</section>
<section anchor="example-message-flow" title="Example message flow">

<t>The following example roughly describes a pEp scenario with a typical
initial message flow to demonstrate key exchange and basic trust
management:</t>

<t>The following example describes a pEp scenario between two users – Alice 
and Bob – in order to demonstrate the message flow that occurs when exchanging
keys and determining basic trust management for the first time:</t>

<t><list style="numbers">
  <t>Alice – knowing nothing of Bob – sends a message to Bob. As Alice
has no public key from Bob, this message is sent out
unencrypted. However, Alice’s public key is automatically attached.</t>
  <t>Bob receives Alice’s message and her public key. He is able to reply to her
and encrypt the message. His public key is automatically attached to the 
message. Because he has her public key now, Alice’s rating in his message 
client changes to ‘encrypted’. From a UX perspective, this status is 
displayed in yellow (cf. <xref target="trust-rating"/>).</t>
  <t>Alice receives Bob’s key. As of now Alice is also able to send
secure messages to Bob. The rating for Bob changes to “encrypted”
(with yellow color) in Alice’s messaging client
(cf. <xref target="trust-rating"/>).</t>
  <t>Alice receives Bob’s reply with his public key attached. Now, Alice can 
send secure messages to Bob as well. The rating for Bob changes to yellow, 
or ‘encrypted’, in Alice’s messaging client <xref target="trust-rating"/>.</t>
  <t>If Alice and Bob want to prevent man-in-the-middle (MITM) attacks,
they can engage in a pEp Handshake comparing their so-called
Trustwords (cf. <xref target="handshake"/>) and confirm this process if those
match. After doing so, their identity rating changes to “encrypted
and authenticated” (cf. <xref target="trust-rating"/>), which (UX-wise) can be
displayed using a green color. See also <xref target="trust-management"/>.</t>
  <t>Alice and Bob can encrypt now, but they are not yet authenticated, leaving 
them vulnerable to man-in-the-middle (MitM) attacks. To prevent this from 
occurring, Alice and Bob can engage in a pEp Handshake to compare their 
Trustwords (cf. <xref target="handshake"/>) and confirm if they match. After this step 
is performed, their respective identity ratings change to 
“encrypted and authenticated”, which is represented by a green color 
(cf. <xref target="trust-management"/>.</t>
</list></t>

<figure><artwork><![CDATA[
          -----                                       -----
          | A |                                       | B |
          -----                                       -----
            |                                           |
+------------------------+                 +------------------------+
| auto-generate key pair |                 | auto-generate key pair |
|    (if no key yet)     |                 |    (if no key yet)     |
+------------------------+                 +------------------------+
            |                                           |
+-----------------------+                   +-----------------------+
| Privacy Status for B: |                   | Privacy Status for A: |
|     *Unencrypted*     |                   |     *Unencrypted*     |
+-----------------------+                   +-----------------------+
            |                                           |
            |   A sends message to B (Public Key        |
            |   attached) / optionally signed, but      |
            |               NOT ENCRYPTED               |
            +------------------------------------------>|
            |                                           |
            |                               +-----------------------+
            |                               | Privacy Status for A: |
            |                               |      *Encrypted*      |
            |                               +-----------------------+
            |                                           |
            |      B sends message to A (Public Key     |
            |      attached) / signed and ENCRYPTED     |
            |<------------------------------------------+
            |                                           |
+-----------------------+                               |
| Privacy Status for B: |                               |
|      *Encrypted*      |                               |
+-----------------------+                               |
            |                                           |
            |   A and B successfully compare their      |
            |   Trustwords over an alternative channel  |
            |   (e.g., phone line)                      |
            |<-- -- -- -- -- -- -- -- -- -- -- -- -- -->|
            |                                           |
+-----------------------+                   +-----------------------+
| Privacy Status for B: |                   | Privacy Status for A: |
|       *Trusted*       |                   |       *Trusted*       |
+-----------------------+                   +-----------------------+
            |                                           |



]]></artwork></figure>

</section>
</section>
<section anchor="key-reset-1" title="Key Reset">

<t>[[ TODO: This section will explain how to deal with invalid keys, e.g.,
if expired or (potentially) leaked. ]]</t>

<!-- TODO: Perhaps comment out. -->

</section>
</section>
<section anchor="trust-management" title="Trust Management">

<t>[[ TODO: Intro ]]</t>

<section anchor="privacy-status" title="Privacy Status">

<t>The trust status for an identity can change due to a number of factors.
These shifts will cause the color code assigned to this identity to change 
accordingly, and is applied to future communications with this identity.</t>

<t>For end-users, the most important component of pEp, which MUST be made
visible on a per-recipient and per-message level, is the Privacy
Status.</t>

<t>By colors, symbols and texts a user SHALL immediately understand how
private</t>

<t><list style="symbols">
  <t>a communication channel with a given peer was or ought to be and</t>
  <t>a given message was or ought to be.</t>
</list></t>

</section>
<section anchor="handshake" title="Handshake">

<t>To establishing trust between peers and to upgrade Privacy Status, pEp
defines a handshake, which is specified in
<xref target="I-D.marques-pep-handshake"/>.</t>

<t>In pEp, Trustwords <xref target="I-D.birk-pep-trustwords"/> are used for users to
compare the authenticity of peers in order to mitigate MITM attacks.</t>

<t>By default, Trustwords MUST be used to represent two peers’
fingerprints of their public keys in pEp implementations.</t>

<t>In order to retain compatibility with peers not using pEp
implementations (e.g., Mail User Agents (MUAs) with OpenPGP
implementations without Trustwords), it is REQUIRED that pEp
implementers give the user the choice to show both peers’ fingerprints
instead of just their common Trustwords.</t>

</section>
<section anchor="trust-rating" title="Trust Rating">

<t>pEp includes a Trust Rating system defining Rating and Color Codes to
express the Privacy Status of a peer or message
<xref target="I-D.marques-pep-rating"/>. The ratings are labeled, e.g., as “Unencrypted”,
“Encrypted”, “Trusted”, “Under Attack”, etc. The Privacy Status in
its most general form is expressed with traffic lights semantics (and
respective symbols and texts), whereas the three colors yellow, green
and red can be applied for any peer or message – like this
immediately indicating how secure and trustworthy (and thus private) a
communication was or ought to be considered.</t>

<!-- In cases no (special) Privacy Status can be inferred for peers or
messages, no color (or the gray color) MUST be shown and respective
texts -\- being "unknown" or "unreliable" -\- MUST be shown.  -->

<t>The pEp Trust Rating system with all its states and respective
representations to be followed is outlined in
<xref target="I-D.marques-pep-rating"/>.</t>

<t>Note: An example for the rating of communication types, the definition of
the data structure by the pEp Engine reference implementation
is provided in <xref target="pep-communication-type"/>.</t>

</section>
<section anchor="trust-revoke" title="Trust Revoke">

<t>[[ TODO: This section will explain how to deal with the situation
     when a peer can no longer be trusted, e.g., if a peer’s device is
     compromised. ]]</t>

</section>
</section>
<section anchor="synchronization" title="Synchronization">

<t>An important feature of pEp is to assist the user to run pEp applications
on different devices, such as personal computers, mobile phones and tablets, 
at the same time. Therefore, state needs to be synchronized among the different
devices.</t>

<section anchor="private-key-synchronization" title="Private Key Synchronization">

<t>The pEp KeySync protocol (cf. <xref target="I-D.hoeneisen-pep-keysync"/>) is a 
decentralized proposition which defines how pEp users can distribute their
private keys among their different devices in a user-authenticated manner.
This allows users to read their messages across their various devices, as long
as they share a common address, such as an email account.</t>

</section>
<section anchor="trust-synchronization" title="Trust Synchronization">

<t>[[ TODO: This section will explain how trust and other related state
is synchronized among different devices in a user-authenticated manner. ]]</t>

</section>
</section>
<section anchor="interoperability-1" title="Interoperability">

<t>pEp aims to be interoperable with existing applications designed to
enable privacy, e.g., OpenPGP and S/MIME in email.</t>

</section>
<section anchor="options-in-pep" title="Options in pEp">

<t>In this section a non-exhaustive selection of options is provided.</t>

<section anchor="option-passive-mode" title="Option “Passive Mode”">

<t>By default, the sender attaches its public key to any outgoing message
(cf. <xref target="public-key-distribution"/>). For situations where a sender wants
to ensure that it only attaches a public key to an Internet user which
has a pEp implementation, a Passive Mode MUST be made available.</t>

</section>
<section anchor="option-disable-protection" title="Option “Disable Protection”">

<t>Using this option, protection can be disabled generally or selectively.
Implementers of pEp MUST provide an option “Disable Protection” to
allow a user to disable encryption and signing for:</t>

<t><list style="numbers">
  <t>all communication</t>
  <t>specific contacts</t>
  <t>specific messages</t>
</list></t>

<t>The public key still attached, unless the option “Passive Mode”
(cf. <xref target="option-passive-mode"/>) is activated at the same time.</t>

</section>
<section anchor="option-extra-keys" title="Option “Extra Keys”">

<section anchor="use-case-for-organizations" title="Use Case for Organizations">

<t>For internal or enterprise environments, authorized personnel may need to
centrally decrypt user messages for archival or other legal purposes.
Therefore, pEp implementers MAY provide an “Extra Keys” option in which a
message is encrypted with at least one additional public key.
The corresponding secret key(s) are intended to be secured by CISO staff or
other authorized personnel for the organization.</t>

<t>However, it is crucial that the “Extra Keys” feature MUST NOT be activated by
default for any network address, and is intended to be an option used only for
organization-specific identities, as well as their corresponding network
addresses and accounts. The “Extra Keys” feature SHOULD NOT be applied to the
private identities, addresses, or accounts a user might possess once it is
activated.</t>

</section>
<section anchor="use-case-for-key-synchronization" title="Use Case for Key Synchronization">

<t>The “Extra Keys” feature also plays a role during pEp’s KeySync protocols,
where the additional keys are used to decipher message transactions by both
parties involved during the negotiation process for private key
synchronization. During the encrypted (but untrusted) transactions, KeySync
messages are not just encrypted with the sending device’s default key,
but also with the default keys of both parties involved in the synchronization
process.</t>

</section>
</section>
<section anchor="option-blacklist-keys" title="Option “Blacklist Keys”">

<t>A “Blacklist Keys” option MAY be provided for an advanced user,
allowing them to disable keys of peers that they no longer want to use in
new communications. However, the keys SHALL NOT be deleted. It MUST still
be possible to verify and decipher past communications that used these keys.</t>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>By attaching the sender’s public key to outgoing messages, Trust on
First Use (TOFU) is established. However, this is prone to MITM
attacks.  Cryptographic key subversion is considered Pervasive
Monitoring (PM) according to <xref target="RFC7258"/>. Those attacks can be
mitigated, if the involved users compare their common Trustwords. This
possibility MUST be made easily accessible to pEp users in the user
interface implementation. If for compatibility reasons (e.g., with
OpenPGP users) no Trustwords can be used, then a comparatively easy way
to verify the respective public key fingerprints MUST be implemented.</t>

<t>As the use of passphrases for private keys is not advised, devices
themselves SHOULD use encryption.</t>

</section>
<section anchor="privacy-considerations" title="Privacy Considerations">

<t>[[ TODO ]]</t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document has no actions for IANA.</t>

</section>
<section anchor="implementation-status" title="Implementation Status">

<section anchor="introduction-1" title="Introduction">

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation
here does not imply endorsement by the IETF. Furthermore, no effort
has been spent to verify the information presented here that was
supplied by IETF contributors.  This is not intended as, and must not
be construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.</t>

<t>According to <xref target="RFC7942"/>, “[…] this will allow reviewers and
working groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented protocols
more mature. It is up to the individual working groups to use this
information as they see fit.”</t>

</section>
<section anchor="current-software-implementations-of-pep" title="Current software implementations of pEp">

<t>The following software implementations of the pEp protocols (to varying
degrees) already exists:</t>

<t><list style="symbols">
  <t>pEp for Outlook as add-on for Microsoft Outlook, release <xref target="SRC.pepforoutlook"/></t>
  <t>pEp for iOS (implemented in a new MUA), release <xref target="SRC.pepforios"/></t>
  <t>pEp for Android (based on a fork of the K9 MUA), release <xref target="SRC.pepforandroid"/></t>
  <t>pEp for Thunderbird as a new add-on for Thunderbird, beta <xref target="SRC.pepforthunderbird"/></t>
  <t>Enigmail/pEp as add-on for Mozilla Thunderbird, release (will be discontinued late 2020/early 2021) <xref target="SRC.enigmailpep"/></t>
</list></t>

<t>pEp for Android, iOS, Outlook and Thunderbird are provided by pEp Security, 
a commercial entity specializing in end-user pEp implementations while 
Enigmail/pEp is pursued as community project, supported by the pEp Foundation.</t>

<t>All software is available as Free and Open Source Software and published also 
in source form.</t>

</section>
<section anchor="reference-implementation-of-peps-core" title="Reference implementation of pEp’s core">

<t>The pEp Foundation provides a reference implementation of pEp’s core
principles and functionalities, which go beyond the documentation
status of this Internet-Draft. <xref target="SRC.pepcore"/></t>

<t>pEp’s reference implementation is composed of pEp Engine and pEp
Adapters (or bindings), alongside with some libraries which pEp Engine
relies on to function on certain platforms (like a NetPGP fork we
maintain for the iOS platform).</t>

<t>The pEp engine is a Free Software library encapsulating
implementations of:</t>

<t><list style="symbols">
  <t>Key Management</t>
</list></t>

<t><list style='empty'>
  <t>Key Management in pEp engine is based on GnuPG key chains (NetPGP
  on iOS).  Keys are stored in an OpenPGP compatible format and
  can be used for different crypto implementations.</t>
</list></t>

<t><list style="symbols">
  <t>Trust Rating</t>
</list></t>

<t><list style='empty'>
  <t>pEp engine is sporting a two phase trust rating system. In phase
  one there is a rating based on channel, crypto and key security
  named “comm_types”. In phase 2 these are mapped to user
  representable values which have attached colors to present them
  in traffic light semantics.</t>
</list></t>

<t><list style="symbols">
  <t>Abstract Crypto API</t>
</list></t>

<t><list style='empty'>
  <t>The Abstract Crypto API is providing functions to encrypt and
  decrypt data or full messages without requiring an application
  programmer to understand the different formats and standards.</t>
</list></t>

<t><list style="symbols">
  <t>Message Transports</t>
</list></t>

<t><list style='empty'>
  <t>pEp engine will support a growing list of Message Transports to
  support any widespread text messaging system including email,
  SMS, XMPP and many more.</t>
</list></t>

<t>pEp engine is written in C99 programming language. It is not meant to be used in
application code directly. Instead, pEp engine is coming together with
a list of software adapters for a variety of programming languages and
development environments, which are:</t>

<t><list style="symbols">
  <t>pEp COM Server Adapter</t>
  <t>pEp JNI Adapter</t>
  <t>pEp JSON Adapter</t>
  <t>pEp ObjC (and Swift) Adapter</t>
  <t>pEp Python Adapter</t>
  <t>pEp Qt Adapter</t>
</list></t>

</section>
<section anchor="abstract-crypto-api-examples" title="Abstract Crypto API examples">

<t>A selection of code excerpts from the pEp Engine reference
implementation (encrypt message, decrypt message, and obtain
trustwords) can be found in <xref target="abstract-crypto-api-examples-1"/>.</t>

</section>
</section>
<section anchor="notes" title="Notes">

<t>The pEp logo and “pretty Easy privacy” are registered trademarks owned
by the non-profit pEp Foundation based in Switzerland.</t>

<t>Primarily, we want to ensure the following:</t>

<t><list style="symbols">
  <t>Software using the trademarks MUST be backdoor-free.</t>
  <t>Software using the trademarks MUST be accompanied by a serious (detailed) 
code audit carried out by a reputable third-party, for any proper release.</t>
</list></t>

<t>The pEp Foundation will help to support any community-run
(non-commercial) project with the latter, be it organizationally or
financially.</t>

<t>Through this, the foundation wants to make sure that software using
the pEp trademarks is as safe as possible from a security and privacy
point of view.</t>

<!-- TODO: to be discussed:

## Qualified Electronic Signatures 

pEp uses cryptographic services to establish end-to-end transport
security. The original message is transported unmodified, provided
that message wrapping is used, so that additional features applied on
the original message remain undamaged. The encryption and signature
applied by pEp are discarded upon reception of the protected message.
pEp signatures thus have no utility as a "qualified electronic
signature" to later prove the authenticity of a message. This
function must be provided by other means.

 * pEp User Agents MUST discard the signature and encryption of a
 protected message upon receipt, and eventually replace it with an
 "own" signature and encryption for the purpose of storing the
 message.

 * A symmetric key (session key) previously used to protect the
 message in transit MAY be reused, to avoid re-encrypting large
 quantities of data. \[\[ TODO: Double check that. \]\]

 * Qualified electronic signatures MUST be applied prior to
 protecting messages with pEp

 * The application of qualified electronic signatures MUST preceed
 the message processing through pEp, and the verification MUST be
 following the processing through pEp.

-->

</section>
<section anchor="acknowledgments" title="Acknowledgments">

<t>The authors would like to thank the following people who provided
substantial contributions, helpful comments or suggestions for this
document: Alexey Melnikov, Athena Schumacher, Ben Campbell, Brian
Trammell, Bron Gondwana, Claudio Luck, Daniel Kahn Gillmor, Enrico
Tomae, Eric Rescorla, Gabriele Lenzini, Hans-Peter Dittler, Iraklis
Symeonidis, Kelly Bristol, Krista Bennett, Mirja Kuehlewind, Nana
Kerlstetter, Neal Walfield, Pete Resnick, Russ Housley, S. Shelburn,
and Stephen Farrel.</t>

<t>This work was initially created by pEp Foundation, and then reviewed and
extended with funding by the Internet Society’s Beyond the Net Programme on
standardizing pEp. <xref target="ISOC.bnet"/></t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC4949" target='https://www.rfc-editor.org/info/rfc4949'>
<front>
<title>Internet Security Glossary, Version 2</title>
<author initials='R.' surname='Shirey' fullname='R. Shirey'><organization /></author>
<date year='2007' month='August' />
<abstract><t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='FYI' value='36'/>
<seriesInfo name='RFC' value='4949'/>
<seriesInfo name='DOI' value='10.17487/RFC4949'/>
</reference>



<reference  anchor="RFC7435" target='https://www.rfc-editor.org/info/rfc7435'>
<front>
<title>Opportunistic Security: Some Protection Most of the Time</title>
<author initials='V.' surname='Dukhovni' fullname='V. Dukhovni'><organization /></author>
<date year='2014' month='December' />
<abstract><t>This document defines the concept &quot;Opportunistic Security&quot; in the context of communications protocols.  Protocol designs based on Opportunistic Security use encryption even when authentication is not available, and use authentication when possible, thereby removing barriers to the widespread use of encryption on the Internet.</t></abstract>
</front>
<seriesInfo name='RFC' value='7435'/>
<seriesInfo name='DOI' value='10.17487/RFC7435'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC1122" target='https://www.rfc-editor.org/info/rfc1122'>
<front>
<title>Requirements for Internet Hosts - Communication Layers</title>
<author initials='R.' surname='Braden' fullname='R. Braden' role='editor'><organization /></author>
<date year='1989' month='October' />
<abstract><t>This RFC is an official specification for the Internet community.  It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='STD' value='3'/>
<seriesInfo name='RFC' value='1122'/>
<seriesInfo name='DOI' value='10.17487/RFC1122'/>
</reference>



<reference  anchor="OpenPGP" target='https://www.rfc-editor.org/info/rfc4880'>
<front>
<title>OpenPGP Message Format</title>
<author initials='J.' surname='Callas' fullname='J. Callas'><organization /></author>
<author initials='L.' surname='Donnerhacke' fullname='L. Donnerhacke'><organization /></author>
<author initials='H.' surname='Finney' fullname='H. Finney'><organization /></author>
<author initials='D.' surname='Shaw' fullname='D. Shaw'><organization /></author>
<author initials='R.' surname='Thayer' fullname='R. Thayer'><organization /></author>
<date year='2007' month='November' />
<abstract><t>This document is maintained in order to publish all necessary information needed to develop interoperable applications based on the OpenPGP format.  It is not a step-by-step cookbook for writing an application.  It describes only the format and methods needed to read, check, generate, and write conforming packets crossing any network.  It does not deal with storage and implementation questions. It does, however, discuss implementation issues necessary to avoid security flaws.</t><t>OpenPGP software uses a combination of strong public-key and symmetric cryptography to provide security services for electronic communications and data storage.  These services include confidentiality, key management, authentication, and digital signatures.  This document specifies the message formats used in OpenPGP.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4880'/>
<seriesInfo name='DOI' value='10.17487/RFC4880'/>
</reference>



<reference  anchor="RFC7258" target='https://www.rfc-editor.org/info/rfc7258'>
<front>
<title>Pervasive Monitoring Is an Attack</title>
<author initials='S.' surname='Farrell' fullname='S. Farrell'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2014' month='May' />
<abstract><t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t></abstract>
</front>
<seriesInfo name='BCP' value='188'/>
<seriesInfo name='RFC' value='7258'/>
<seriesInfo name='DOI' value='10.17487/RFC7258'/>
</reference>



<reference  anchor="RFC7942" target='https://www.rfc-editor.org/info/rfc7942'>
<front>
<title>Improving Awareness of Running Code: The Implementation Status Section</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author>
<author initials='A.' surname='Farrel' fullname='A. Farrel'><organization /></author>
<date year='2016' month='July' />
<abstract><t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section.  This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t><t>This process is not mandatory.  Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications.  This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t></abstract>
</front>
<seriesInfo name='BCP' value='205'/>
<seriesInfo name='RFC' value='7942'/>
<seriesInfo name='DOI' value='10.17487/RFC7942'/>
</reference>



<reference  anchor="RFC8280" target='https://www.rfc-editor.org/info/rfc8280'>
<front>
<title>Research into Human Rights Protocol Considerations</title>
<author initials='N.' surname='ten Oever' fullname='N. ten Oever'><organization /></author>
<author initials='C.' surname='Cath' fullname='C. Cath'><organization /></author>
<date year='2017' month='October' />
<abstract><t>This document aims to propose guidelines for human rights considerations, similar to the work done on the guidelines for privacy considerations (RFC 6973).  The other parts of this document explain the background of the guidelines and how they were developed.</t><t>This document is the first milestone in a longer-term research effort.  It has been reviewed by the Human Rights Protocol Considerations (HRPC) Research Group and also by individuals from outside the research group.</t></abstract>
</front>
<seriesInfo name='RFC' value='8280'/>
<seriesInfo name='DOI' value='10.17487/RFC8280'/>
</reference>



<reference anchor="I-D.pep-email">
<front>
<title>pretty Easy privacy (pEp): Email Formats and Protocols</title>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<date month='July' day='10' year='2020' />

<abstract><t>The proposed pretty Easy privacy (pEp) protocols for email are based upon already existing email and encryption formats (as PGP/MIME) and designed to allow for easily implementable and interoperable opportunistic encryption.  The protocols range from key distribution, secret key synchronization between own devices, to mechanisms of metadata and content protection.  The metadata and content protection is achieved by moving the whole message (not only the body part) into the PGP/MIME encrypted part.  The proposed pEp Email Formats not only achieve simple forms of metadata protection (like subject encryption), but also allow for sending email messages through a mixnet.  Such enhanced forms of metadata protection are explicitly discussed within the scope of this document.  The purpose of pEp for email is to simplify and automate operations in order to make usage of email encryption a viability for a wider range of Internet users, with the goal of achieving widespread implementation of data confidentiality and privacy practices in the real world.  The proposed operations and formats are targeted towards to Opportunistic Security scenarios and are already implemented in several applications of pretty Easy privacy (pEp).</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-pep-email-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-pep-email-00.txt' />
</reference>



<reference anchor="I-D.birk-pep-trustwords">
<front>
<title>IANA Registration of Trustword Lists: Guide, Template and IANA Considerations</title>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<date month='January' day='9' year='2020' />

<abstract><t>This document specifies the IANA Registration Guidelines for Trustwords, describes corresponding registration procedures, and provides a guideline for creating Trustword list specifications.  Trustwords are common words in a natural language (e.g., English), which hexadecimal strings are mapped to.  Such a mapping makes verification processes like fingerprint comparisons more practical, and less prone to misunderstandings.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-birk-pep-trustwords-05' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-birk-pep-trustwords-05.txt' />
</reference>



<reference anchor="I-D.marques-pep-rating">
<front>
<title>pretty Easy privacy (pEp): Mapping of Privacy Rating</title>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<date month='January' day='8' year='2020' />

<abstract><t>In many Opportunistic Security scenarios end-to-end encryption is automatized for Internet users.  In addition, it is often required to provide the users with easy means to carry out authentication.  Depending on several factors, each communication channel to different peers may have a different Privacy Status, e.g., unencrypted, encrypted and encrypted as well as authenticated.  Even each message from/to a single peer may have a different Privacy Status.  To display the actual Privacy Status to the user, this document defines a Privacy Rating scheme and its mapping to a traffic-light semantics.  A Privacy Status is defined on a per-message basis as well as on a per-identity basis.  The traffic-light semantics (as color rating) allows for a clear and easily understandable presentation to the user in order to optimize the User Experience (UX).  This rating system is most beneficial to Opportunistic Security scenarios and is already implemented in several applications of pretty Easy privacy (pEp).</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-marques-pep-rating-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-marques-pep-rating-03.txt' />
</reference>



<reference anchor="I-D.marques-pep-handshake">
<front>
<title>pretty Easy privacy (pEp): Contact and Channel Authentication through Handshake</title>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<date month='July' day='8' year='2020' />

<abstract><t>In interpersonal messaging, end-to-end encryption means for public key distribution and verification of its authenticity are needed; the latter to prevent man-in-the-middle (MITM) attacks.  This document proposes a new method to easily verify a public key is authentic by a Handshake process that allows users to easily authenticate their communication channel.  The new method is targeted to Opportunistic Security scenarios and is already implemented in several applications of pretty Easy privacy (pEp).</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-marques-pep-handshake-05' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-marques-pep-handshake-05.txt' />
</reference>



<reference anchor="I-D.hoeneisen-pep-keysync">
<front>
<title>pretty Easy privacy (pEp): Key Synchronization Protocol (KeySync)</title>

<author initials='B' surname='Hoeneisen' fullname='Bernie Hoeneisen'>
    <organization />
</author>

<author initials='H' surname='Marques' fullname='Hernani Marques'>
    <organization />
</author>

<author initials='K' surname='Bristol' fullname='Kelly Bristol'>
    <organization />
</author>

<date month='October' day='31' year='2019' />

<abstract><t>This document describes the pEp KeySync protocol, which is designed to perform secure peer-to-peer synchronization of private keys across devices belonging to the same user.  Modern users of messaging systems typically have multiple devices for communicating, and attempting to use encryption on all of these devices often leads to situations where messages cannot be decrypted on a given device due to missing private key data.  Current approaches to resolve key synchronicity issues are cumbersome and potentially unsecure.  The pEp KeySync protocol is designed to facilitate this personal key synchronization in a user-friendly manner.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-hoeneisen-pep-keysync-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-hoeneisen-pep-keysync-01.txt' />
</reference>


<reference anchor="SRC.pepcore" target="https://pep.foundation/dev/">
  <front>
    <title>Core source code and reference implementation of pEp (engine and adapters)</title>
    <author >
      <organization></organization>
    </author>
    <date year="2018" month="July"/>
  </front>
</reference>
<reference anchor="ISOC.bnet" target="https://www.internetsociety.org/blog/2017/06/12-innovative-projects-selected-for-beyond-the-net-funding/">
  <front>
    <title>Beyond the Net. 12 Innovative Projects Selected for Beyond the Net Funding. Implementing Privacy via Mass Encryption: Standardizing pretty Easy privacy’s protocols</title>
    <author initials="I." surname="Simao" fullname="Ilda Simao">
      <organization></organization>
    </author>
    <date year="2017" month="June"/>
  </front>
</reference>
<reference anchor="SRC.pepforandroid" target="https://pep-security.lu/gitlab/android/pep">
  <front>
    <title>Source code for pEp for Android</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020" month="November"/>
  </front>
</reference>
<reference anchor="SRC.pepforios" target="https://pep-security.ch/dev/repos/pEp_for_iOS/">
  <front>
    <title>Source code for pEp for iOS</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020" month="November"/>
  </front>
</reference>
<reference anchor="SRC.pepforoutlook" target="https://pep-security.lu/dev/repos/pEp_for_Outlook/">
  <front>
    <title>Source code for pEp for Outlook</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020" month="November"/>
  </front>
</reference>
<reference anchor="SRC.enigmailpep" target="https://enigmail.net/index.php/en/download/source-code">
  <front>
    <title>Source code for Enigmail/pEp</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020" month="November"/>
  </front>
</reference>
<reference anchor="SRC.pepforthunderbird" target="https://pep-security.lu/dev/repos/pEp_for_Thunderbird/">
  <front>
    <title>Source code for pEp for Thunderbird</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020" month="November"/>
  </front>
</reference>


    </references>


<section anchor="code-excerpts" title="Code Excerpts">

<t>This section provides excerpts of the running code from the pEp
reference implementation pEp engine (C99 programming language).</t>

<section anchor="pep-identity" title="pEp Identity">

<t>How the pEp identity is defined in the data structure
(cf. src/pEpEngine.h):</t>

<figure><artwork><![CDATA[
typedef struct _pEp_identity {
    char *address;            // C string with address UTF-8 encoded
    char *fpr;                // C string with fingerprint UTF-8
                              // encoded
    char *user_id;            // C string with user ID UTF-8 encoded
    char *username;           // C string with user name UTF-8
                              // encoded
    PEP_comm_type comm_type;  // type of communication with this ID
    char lang[3];             // language of conversation
                              // ISO 639-1 ALPHA-2, last byte is 0
    bool me;                  // if this is the local user
                              // herself/himself
    identity_flags_t flags;   // identity_flag1 | identity_flag2
                              // | ...
} pEp_identity;
]]></artwork></figure>

<section anchor="corresponding-sql" title="Corresponding SQL">

<t>Relational table scheme excerpts (in SQL) used in current pEp implementations,
held locally for every pEp installation in a SQLite database:</t>

<figure><artwork><![CDATA[
CREATE TABLE person (
   id text primary key,
   username text not null,
   main_key_id text
       references pgp_keypair (fpr)
       on delete set null,
   lang text,
   comment text,
   device_group text,
   is_pep_user integer default 0
);

CREATE TABLE identity (
   address text,
   user_id text
       references person (id)
       on delete cascade on update cascade,
   main_key_id text
       references pgp_keypair (fpr)
       on delete set null,
   comment text,
   flags integer default 0,
   is_own integer default 0,
   timestamp integer default (datetime('now')),
   primary key (address, user_id)
);

CREATE TABLE pgp_keypair (
   fpr text primary key,
   created integer,
   expires integer,
   comment text,
   flags integer default 0
);
CREATE INDEX pgp_keypair_expires on pgp_keypair (
   expires
);
]]></artwork></figure>

</section>
</section>
<section anchor="pep-communication-type" title="pEp Communication Type">

<t>In the following, is an example for the rating of communication types as
defined by a data structure (cf. src/pEpEngine.h <xref target="SRC.pepcore"/>):</t>

<figure><artwork><![CDATA[
typedef enum _PEP_comm_type {
    PEP_ct_unknown = 0,

    // range 0x01 to 0x09: no encryption, 0x0a to 0x0e:
    // nothing reasonable

    PEP_ct_no_encryption = 0x01, // generic
    PEP_ct_no_encrypted_channel = 0x02,
    PEP_ct_key_not_found = 0x03,
    PEP_ct_key_expired = 0x04,
    PEP_ct_key_revoked = 0x05,
    PEP_ct_key_b0rken = 0x06,
    PEP_ct_my_key_not_included = 0x09,

    PEP_ct_security_by_obscurity = 0x0a,
    PEP_ct_b0rken_crypto = 0x0b,
    PEP_ct_key_too_short = 0x0c,

    PEP_ct_compromized = 0x0e, // known compromized connection
    PEP_ct_mistrusted = 0x0f, // known mistrusted key

    // range 0x10 to 0x3f: unconfirmed encryption

    PEP_ct_unconfirmed_encryption = 0x10, // generic
    PEP_ct_OpenPGP_weak_unconfirmed = 0x11, // RSA 1024 is weak

    PEP_ct_to_be_checked = 0x20, // generic
    PEP_ct_SMIME_unconfirmed = 0x21,
    PEP_ct_CMS_unconfirmed = 0x22,

    PEP_ct_strong_but_unconfirmed = 0x30, // generic
    PEP_ct_OpenPGP_unconfirmed = 0x38, // key at least 2048 bit
                                       // RSA or EC
    PEP_ct_OTR_unconfirmed = 0x3a,

    // range 0x40 to 0x7f: unconfirmed encryption and anonymization

    PEP_ct_unconfirmed_enc_anon = 0x40, // generic
    PEP_ct_pEp_unconfirmed = 0x7f,

    PEP_ct_confirmed = 0x80, // this bit decides if trust
                             // is confirmed

    // range 0x81 to 0x8f: reserved
    // range 0x90 to 0xbf: confirmed encryption

    PEP_ct_confirmed_encryption = 0x90, // generic
    PEP_ct_OpenPGP_weak = 0x91, // RSA 1024 is weak (unused)

    PEP_ct_to_be_checked_confirmed = 0xa0, //generic
    PEP_ct_SMIME = 0xa1,
    PEP_ct_CMS = 0xa2,

    PEP_ct_strong_encryption = 0xb0, // generic
    PEP_ct_OpenPGP = 0xb8, // key at least 2048 bit RSA or EC
    PEP_ct_OTR = 0xba,

    // range 0xc0 to 0xff: confirmed encryption and anonymization

    PEP_ct_confirmed_enc_anon = 0xc0, // generic
    PEP_ct_pEp = 0xff
} PEP_comm_type;
]]></artwork></figure>

</section>
<section anchor="abstract-crypto-api-examples-1" title="Abstract Crypto API examples">

<t>The following code excerpts are from the pEp Engine reference
implementation, to be found in src/message_api.h.</t>

<t>[[ Note: Just a selection; more functionality is available. ]]</t>

<section anchor="encrypting-a-message" title="Encrypting a Message">

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

<figure><artwork><![CDATA[
// encrypt_message() - encrypt message in memory
//
//  parameters:
//      session (in)     session handle
//      src (in)         message to encrypt
//      extra (in)       extra keys for encryption
//      dst (out)        pointer to new encrypted message or NULL if
//                       no encryption could take place
//      enc_format (in)  encrypted format
//      flags (in)       flags to set special encryption features
//
//  return value:
//      PEP_STATUS_OK           on success
//      PEP_KEY_HAS_AMBIG_NAME  at least one of the recipient
//                              keys has an ambiguous name
//      PEP_UNENCRYPTED         no recipients with usable key, 
//                              message is left unencrypted,
//                              and key is attached to it
//
//  caveat:
//      the ownership of src remains with the caller
//      the ownership of dst goes to the caller
DYNAMIC_API PEP_STATUS encrypt_message(
        PEP_SESSION session,
        message *src,
        stringlist_t *extra,
        message **dst,
        PEP_enc_format enc_format,
        PEP_encrypt_flags_t flags
);
]]></artwork></figure>

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

</section>
<section anchor="decrypting-a-message" title="Decrypting a Message">

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

<figure><artwork><![CDATA[
// decrypt_message() - decrypt message in memory
//
//  parameters:
//      session (in)   session handle
//      src (in)       message to decrypt
//      dst (out)      pointer to new decrypted message
//                     or NULL on failure
//      keylist (out)  stringlist with keyids
//      rating (out)   rating for the message
//      flags (out)    flags to signal special decryption features
//
//  return value:
//      error status 
//      or PEP_DECRYPTED if message decrypted but not verified
//      or PEP_CANNOT_REENCRYPT if message was decrypted (and
//         possibly verified) but a reencryption operation is
//         expected by the caller and failed
//      or PEP_STATUS_OK on success
//
//  flag values:
//      in:
//          PEP_decrypt_flag_untrusted_server
//              used to signal that decrypt function should engage in 
//              behaviour specified for when the server storing the 
//              source is untrusted
//      out:
//          PEP_decrypt_flag_own_private_key
//              private key was imported for one of our addresses
//              (NOT trusted or set to be used - handshake/trust is
//              required for that)
//          PEP_decrypt_flag_src_modified
//              indicates that the src object has been modified. At
//              the moment, this is always as a direct result of the 
//              behaviour driven by the input flags. This flag is the 
//              ONLY value that should be relied upon to see if such 
//              changes have taken place.
//          PEP_decrypt_flag_consume
//              used by sync 
//          PEP_decrypt_flag_ignore
//              used by sync 
//
//
// caveat:
//      the ownership of src remains with the caller - however, the
//      contents might be modified (strings freed and allocated anew 
//      or set to NULL, etc) intentionally; when this happens,
//      PEP_decrypt_flag_src_modified is set.
//      the ownership of dst goes to the caller
//      the ownership of keylist goes to the caller
//      if src is unencrypted this function returns PEP_UNENCRYPTED
//      and sets
//      dst to NULL
DYNAMIC_API PEP_STATUS decrypt_message(
        PEP_SESSION session,
        message *src,
        message **dst,
        stringlist_t **keylist,
        PEP_rating *rating,
        PEP_decrypt_flags_t *flags
);
]]></artwork></figure>

</section>
<section anchor="obtain-common-trustwords" title="Obtain Common Trustwords">

<t>Cf. src/message_api.h <xref target="SRC.pepcore"/>:</t>

<figure><artwork><![CDATA[
// get_trustwords() - get full trustwords string
//                    for a *pair* of identities
//
//    parameters:
//        session (in)  session handle
//        id1 (in)      identity of first party in communication
//                      - fpr can't be NULL  
//        id2 (in)      identity of second party in communication
//                      - fpr can't be NULL
//        lang (in)     C string with ISO 639-1 language code
//        words (out)   pointer to C string with all trustwords
//                      UTF-8 encoded, separated by a blank each
//                      NULL if language is not supported or
//                      trustword wordlist is damaged or unavailable
//        wsize (out)   length of full trustwords string
//        full (in)     if true, generate ALL trustwords for these
//                      identities.
//                      else, generate a fixed-size subset.
//                      (TODO: fixed-minimum-entropy subset
//                      in next version)
//
//    return value:
//        PEP_STATUS_OK            trustwords retrieved
//        PEP_OUT_OF_MEMORY        out of memory
//        PEP_TRUSTWORD_NOT_FOUND  at least one trustword not found
//
//    caveat:
//        the word pointer goes to the ownership of the caller
//        the caller is responsible to free() it
//        (on Windoze use pEp_free())
//
DYNAMIC_API PEP_STATUS get_trustwords(
  PEP_SESSION session, const pEp_identity* id1,
  const pEp_identity* id2, const char* lang,
  char **words, size_t *wsize, bool full
);
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="document-changelog" title="Document Changelog">

<t>[[ RFC Editor: This section is to be removed before publication ]]</t>

<t><list style="symbols">
  <t>draft-birk-pep-06:
  <list style="symbols">
      <t>Minor changes</t>
    </list></t>
  <t>draft-birk-pep-05:
  <list style="symbols">
      <t>Change authors</t>
      <t>Minor changes, especially in identity system</t>
    </list></t>
  <t>draft-birk-pep-04:
  <list style="symbols">
      <t>Fix internal reference</t>
      <t>Add IANA Considerations section</t>
      <t>Add other use case of Extra Keys</t>
      <t>Add Claudio Luck as author</t>
      <t>Incorporate review changes by Kelly Bristol and Nana Karlstetter</t>
    </list></t>
  <t>draft-birk-pep-03:
  <list style="symbols">
      <t>Major restructure of the document</t>
      <t>Adapt authors to the actual authors and extend Acknowledgments section</t>
      <t>Added several new sections, e.g., Key Reset, Trust Revoke, Trust 
Synchronization, Private Key Export / Import, Privacy Considerations
(content yet mostly TODO)</t>
      <t>Added reference to HRPC work / RFC8280
      <list style="symbols">
          <t>Added text and figure to better explain pEp’s automated Key
Exchange and Trust management (basic message flow)</t>
        </list></t>
      <t>Lots of improvement in text and editorial changes</t>
    </list></t>
  <t>draft-birk-pep-02:
  <list style="symbols">
      <t>Move (updated) code to Appendix</t>
      <t>Add Changelog to Appendix</t>
      <t>Add Open Issue section to Appendix</t>
      <t>Fix description of what Extra Keys are</t>
      <t>Fix Passive Mode description</t>
      <t>Better explain pEp’s identity system</t>
    </list></t>
  <t>draft-birk-pep-01:
  <list style="symbols">
      <t>Mostly editorial</t>
    </list></t>
  <t>draft-birk-pep-00:
  <list style="symbols">
      <t>Initial version</t>
    </list></t>
</list></t>

</section>
<section anchor="open-issues" title="Open Issues">

<t>[[ RFC Editor: This section should be empty and is to be removed
     before publication ]]</t>

<t><list style="symbols">
  <t>Shorten Introduction and Abstract</t>
  <t>References to RFC6973 (Privacy Considerations)</t>
  <t>Add references to prior work, and what differs here - PEM (cf. RFC1421-1424)</t>
  <t>Better explain Passive Mode</t>
  <t>Better explain / illustrate pEp’s identity system</t>
  <t>Explain Concept of Key Mapping (e.g. to S/MIME, which is to be
refined in pEp application docs auch as pEp email
<xref target="I-D.pep-email"/>)</t>
  <t>Add more information to deal with organizational requirements</t>
  <t>Add text to Key Reset (<xref target="key-reset"/>) as well as reference as soon as available</t>
  <t>Add text to Trust Revoke (<xref target="trust-revoke"/>) as well as reference as
soon as available</t>
  <t>Add text to Trust Synchronization (<xref target="trust-synchronization"/>) as well
as reference as soon as available</t>
</list></t>

<!-- TODO: Check relevance in pEp of that.

 * Add references to Private Key Export / Import
  ({{private-key-export-import}}) as soon as reference available -->

<t><list style="symbols">
  <t>Add text to Privacy Considerations (<xref target="privacy-considerations"/>)</t>
  <t>Scan for leftovers of email-specific stuff and move it to pEp email
I-D <xref target="I-D.pep-email"/>, while replacing it herein with
generic descriptions.</t>
</list></t>

<!--
LocalWords:  utf docname toc sortrefs symrefs SRC pepcore CryptoParty
LocalWords:  interoperable fpr UUID USERID userId SMTP uid MUAs ons
LocalWords:  keystore NetPGP iOS Crypto JNI JSON ObjC crypto api Bron
LocalWords:  Shelburn Alexey Melnikov Trammell Gondwana Kahn Gillmor
LocalWords:  Tomae Rescorla Dittler Iraklis Symeonidis Mirja Walfield
LocalWords:  Kuehlewind Resnick Housley Farrel ISOC bnet src typedef
LocalWords:  struct lang bool SQLite pgp keypair datetime enum rken
LocalWords:  compromized RSA SMIME CMS OTR anonymization xbf xa xb xc
LocalWords:  xba xff dst AMBIG stringlist keylist keyids REENCRYPT
LocalWords:  reencryption untrusted trustword wordlist HRPC
LocalWords:  wsize Windoze const Changelog PEM anonymize automatation
LocalWords:  Keyservers Gabriele Lenzini interoperation correlatable
-->

</section>


  </back>

<!-- ##markdown-source:
H4sIAOuVoF8AA9y96XIb2ZUu+n8/RTbrR5FqABpqpo7bl5KoKnZpoEWqbYft
YCSABJAWkAlnJkjBZd24r3Ff7z7JXd8a9pAAKVWV233iMKpCJJDDHtZe47fW
Gg6HblJPy2p+nG262fBb57qyWxbH2cG6Kbpum53m7TZbN+V1Ptlmh+vT9dFx
dq5/jrfZs2KWb5bdgcvH46a4Ps5uvc1N60mVr+jR0yafdcNx2bwbrov18MHX
bpJ3xbxutsdZ202da7u8ml7ly7qiq7dF69blcfanrp4MsrZuuqaYtfTbdiW/
TOrVqqi69i/O5ZtuUTfHzmXZkP7PsrJqj7P/GmVP6GX8gYzgv+rlu6IJn9YN
zZ8GmT2vN9U078q64s9belfRHWevx0VD13/f5OOiyr7k7yZlR+N9+sPw2y8f
PMh+X1Zd0XSLTSNf0nM6zOfipuz+XjRLmhB/UazycnmcXfMARliD/4vWYDRL
37tpaMKLrlu3x/fvp9/f703uh1H2Mm/+tqFVCvP7oWiqvCqTb/7lc1zIIEYr
GcSvnOeTUfZDXVRF2RZVNNMn9JKy6H31L5/qmEcxWtgofv5cq7pZ0e/XxTFd
/Ob50y+/+/I7/fWbL7/4iki6rGa9ax4+fPTo2H2WZS/PXp4e45NHD778ir57
vS6q8+/P+aMvv/32Aa658Bd99c1XD/EJ/fr1d998YW959NW39ut3Xz7SX799
9O0DfsXliwu++dsvv/yavjobPhvh7Mr89QN/ortm03Y3dTNt7SulAf62oTkQ
v9nzzYKWtV3k7wr70i8of/2u2LbbasLH++LNUwxgUjd8cZZ1eTPH3t6ywtPi
+r5cJ+ztKd1IzGTTTAra3WmR0asz4idEGBV9VK7WywJche/O6hmT02FRzctK
rs2n+ZpIpD3ip9Jb6KGPHjz8dvjgG4zv7OL109G4ohHtHd3Nzc2ISYyuaOtJ
WXTbEVHt/fGynt+nx3xz/8HX9x8+GpZVVV/zng/XTf3XYtK1w7ZY0r/FdEj0
MBwX27qaDrtFMaRHDWc0YVrcZKoHT/iajK7JXhXdKHv4KDvzzyVmLs/NLvS5
GT03S+/JnstzR9mZLQz95eXAdZkTq2nb7LSaNNs1loyOCph43kzLv+PSPWLh
//t//t+Wfq+Jr9fL9oCHbAw8y8IRP1tO8+yiXOW1fsz84GwUfeaX/xtIk4iI
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
acbjikG+Mm5G96BITSuqWagV4Ly3d1oIHol9CGEiMdLEPLpSsAs2LM3toXlh
aERgVrgf9kHwwOAb86CkVeS46pkYcFmmbp4dPYQLMwofDXk2rNgB8Eb3Jfqd
1569cRcr4L32bCZfRzwNqb+orlm7PS4Kx/UyIlH0g+hRY4uhryWRAbXsNF/B
18oKW0K3lZ82KpPseJi/+Yl6RRZSbScdErxkYeaN75wZLx6eJic1E9Jlfva5
X8LP1VGfQ5tB7851waV4dQ8QWtqwAMaDVG8RcbEtQOEmHJl6hjIG6T3oKcUv
sljq4slj2QVXgQfWC6ZAVxcEhDdamNa0ISMkHLGohKKESPz0Dvz0DvAQ7tBo
453Uy7o5wgTSPQ+KP9/yc2cl5KClVtJ6Q0Z12Su/XWyDy/ykNvaeSUIKS2et
uycr8xrw4+jbaGsHd81yZ3YyOe/DNM7DybhBv9xTj+8QGvmRquTIgMpE2Zww
XnsuSVvK9EKPDqkapcKqREfQIc5Dwdse6j/ZTviMORjpvqotQzijopycIUua
D58hdOmi3ZrBCzhlo7utB/q24HiWdd1LPHas48rjaPi5lzYstH749g9DgMmO
fO5UfG7E7Zpn80aaHBItkukHmxDUbw8NTNi2Jd2TSehNIDxAiw+Kgm/Fb5Nh
D6Aes/Gj+7PKrjdLiHc9cfv2tezCvo4QnwxGTKmaHlMdZI20jt03ztsoIC0d
RpvyM3de0qG36UYr1yrW/LSytSZ12oWlhCJlPK5PBW1mjS9qvvsgKgS8QwZR
sbZeW99kd7MdbtLb3F/eySPzP0P8ZJ/2w9dG9/4jO6H/P+3nH9mT7B//pPdm
n/xWvtb9+/CWn3/fufj2S90/WPiaz68IUJXdwdx+qeOLD0t2YOFjOm1Ht0zp
9kv/STP656/o7utvHwBW9FxhLReiK7CIOt47lr3Xnhzbimb33gbd7t6tM7r1
2n/SjHbf9Wk//9i580QV4VgNzg4jZ/Wtd5rScJTdj/s/i4tM+P0td8Y/sMpO
Xz1988fzy9Nnd472VgLb/fmPu99518/Pu/Ofs0O309zPewr/3DtNSe5/ZEbJ
tfvufLJLdic7ZLf3zpjsrNM4Sl0kNNS78399Oun8q7hVeufP4VD9O/lnd9f/
G0eb/PWRq+++80T0MK2UraWyU43rljsjJczKF+ZL7oDEapO13dlzp4ZM1gvE
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

-->

</rfc>

