<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.3.8) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-autocrypt-openpgp-v2-cert-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Autocrypt v2 Certificates and TSKs">Autocrypt v2 OpenPGP Certificates and Transferable Secret Keys</title>

    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization abbrev="ACLU">American Civil Liberties Union</organization>
      <address>
        <email>dkg@fifthhorseman.net</email>
      </address>
    </author>
    <author initials="H." surname="Krekel" fullname="Holger Krekel">
      <organization>merlinux gmbh</organization>
      <address>
        <email>holger@merlinux.eu</email>
      </address>
    </author>
    <author initials="F." surname="Ziegelmayer" fullname="Friedel Ziegelmayer">
      <organization>n0 Inc.</organization>
      <address>
        <email>me@dignifiedquire.com</email>
      </address>
    </author>

    <date year="2026" month="January" day="28"/>

    <area>int</area>
    <workgroup>openpgp</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 70?>

<t>This document describes the "Autocrypt v2 Certificate",
a standard structure for an OpenPGP certificate for Internet messaging (such as email)
that offers a defense against both store-now-decrypt-later attacks
from quantum computer and future key exfiltration attacks.
It is also structured to support reasonable in-band transmission,
using established mechanisms like the Autocrypt header field.
This document also describes the structure, use, and maintenance of
the OpenPGP Transferable Secret Key that corresponds with the Autocrypt v2 Certificate.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://autocrypt2.codeberg.page/autocrypt-v2-cert/"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-autocrypt-openpgp-v2-cert/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        OpenPGP Working Group mailing list (<eref target="mailto:openpgp@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/openpgp/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/openpgp/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://codeberg.org/autocrypt2/autocrypt-v2-cert/"/>.</t>
    </note>


  </front>

  <middle>


<?line 81?>

<section anchor="introduction"><name>Introduction</name>

<t>An OpenPGP certificate can be structured in a bewildering variety of ways.
The "Autocrypt v2 Certificate" is a modern OpenPGP structure
that aims toward robustness, cryptographic resilience, and straightforward deployment in the Internet messaging context.</t>

<t>An OpenPGP implementation that produces and can handle certificates and secret keys
structured in this way can provide the user with reasonable protection
against a variety of plausible attacks,
while slotting cleanly into existing mechanisms for
end-to-end cryptographically protected email and other messaging systems.</t>

<t>This mechanism also enables an archiving messenger to support
robust deletion of a received message in a way that the deleted message will not be recoverable,
even by an adversary who can capture messages in transit,
and later compromises the user's message archive and secret keys.</t>

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

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="terminology"><name>Terminology</name>

<t><list style="symbols">
  <t>"OpenPGP certificate" or just "certificate" refers to an OpenPGP Transferable Public Key (see <xref section="10.1" sectionFormat="of" target="RFC9580"/>).
This specification distinguishes between outgoing certificates
as distributed by the keyholder, with a fixed structure and size,
and incoming certificates as received and stored by a peer.
This specification does not prescribe any particular mechanism for
how certificates are transferred between parties.</t>
  <t>"Transferable Secret Key" or just "TSK" refers to an OpenPGP Transferable Secret Key (see <xref section="10.2" sectionFormat="of" target="RFC9580"/>).</t>
  <t>"Component key" refers to a single cryptographic object found within an OpenPGP certificate.
A certificate's primary key is a "component key", and any subkey in the certificate is also a "component key".</t>
  <t>"Keyholder" is the party that has legitimate access to the secret key material corresponding to the component keys in a certificate.
The keyholder can sign messages that can be verified with the certificate, decrypt messages that were encrypted to the certificate, and update the certificate itself over time.</t>
  <t>"User Messaging Agent" or UMA refers to a program used to compose, send, receive, and render messages.
This term is similar to "Mail User Agent" (MUA),
but the variation in naming emphasizes that
Autocrypt v2 certificates do not prescribe a specific transport mechanism
nor do they prescribe a particular message content format.
A Keyholder may have one or more UMAs
that share access to the same secret key material,
messaging inbox,
and other account details.</t>
  <t>"Peer" means a party who communicates with the keyholder via messages, as well as potentially with other peers.
The peer does not have access to the keyholder's asymmetric secret key material,
but typically has access to a copy of each message exchanged between the peer and keyholder.</t>
  <t>"Reliable Deletion" refers to the property that enables a keyholder
to render a message unrecoverable after deletion,
even if an attacker has archived all messages in transit
and subsequently obtains the keyholder's secret key material and message archive.
Reliable deletion therefore requires the destruction of both
secret key material and message cleartext.
This property is commonly referred to as "Forward Secrecy";
however, this specification uses the term "Reliable Deletion"
to emphasize the keyholder's ability to permanently delete messages.</t>
</list></t>

</section>
<section anchor="goals"><name>Goals</name>

<t>A certificate following this specification has the following goals:</t>

<t><list style="symbols">
  <t>Post-quantum confidentiality.
It should defend against a store-now-decrypt-later attack from a cryptographically relevant quantum computer.</t>
  <t>Size matters.
When network conditions are constrained by limited bandwidth, high latency, or intermittent connectivity,
there often is a heightened need for encryption with reliably deletable messages.
To preserve availability under such conditions, the size of cryptographic material should be minimized
and it should be possible to include transmission of a few dozen certificates in a single message
without impairing common messaging infrastructure.</t>
  <t>Computational resources matter.
It should be possible to promptly encrypt a single message to
up to a few dozen of these certificates with low-powered devices.
The same hardware should be able to quickly and cheaply verify a signature from one of these certificates.
And with access to the corresponding secret keys,
it should be inexpensive to decrypt a message encrypted to one, or to sign a message with one.</t>
  <t>Reliable deletion.
The keyholder should be able to robustly and permanently delete
an encrypted message received some time in the past,
rendering it unrecoverable even to
a powerful attacker in the future (see <xref target="deletable-threat-model"/>).</t>
  <t>No network synchronization needed.
The keyholder should be able to encrypt and decrypt messages with local key material only,
without requiring network synchronization between their own devices or with peers.
To the extent that a keyholder has multiple UMAs of their own,
each UMA should be able to operate independently with no ongoing network synchronization between them
beyond the initial configuration.</t>
  <t>Backward compatibility.
It must be possible for a keyholder with an Autocrypt v1 key
to sign a message that is encrypted to an Autocrypt v2 certificate, and vice versa.
It must also be possible to encrypt a message to a mixed group of Autocrypt v1 and v2 certificates
(though such a message may not meet the "Reliable deletion" goal).</t>
  <t>Drop-in OpenPGP replacement for existing peers.
The keyholder might need to update
their OpenPGP implementation, UMA(s), and regular workflow
to use the secret key material to meet these goals successfully.
But a peer whose UMA supports Autocrypt v1.1 already
only needs to update their OpenPGP implementation in order to interoperate.</t>
</list></t>

</section>
<section anchor="non-goals"><name>Non-Goals</name>

<t>This specification does not attempt to accommodate all possible scenarios
that might occur with OpenPGP, email, or other messaging systems.
The following concerns are explicitly not in-scope for this specification:</t>

<t><list style="symbols">
  <t>No support for legacy OpenPGP clients.
The keyholder needs to use an up-to-date OpenPGP implementation, and expects their peers to do the same.
There is no attempt at backward compatibility for a peer with a legacy OpenPGP implementation.</t>
  <t>No in-cert human-readable identifiers.
There is no attempt to store a “real name" or other human-readable identity information in the certificate.
If human-readable identity information is to be associated with the certificate,
it is expected to be supplied elsewhere,
such as with a local petname system, or some external cryptographic bindings.</t>
  <t>No in-cert transport-layer addressing.
There is no attempt to bind transport-layer routing information (e.g., email addresses) to the certificate.
Information about how to get an encrypted message to the keyholder is presumed
to be transmitted via some other channel, such as the <spanx style="verb">Autocrypt</spanx> header field.</t>
  <t>No defense against quantum impersonation.
While the certificate is designed to defend against store-now-decrypt-later attacks,
it does not defend against an adversary with a cryptographically relevant quantum computer
that breaks the signing key and updates the certificate
in order to compromise future messages encrypted to the certificate.
Such an attacker must expose themselves to the peer at least
(putting the attacker at risk due to visibility),
and these attacks cannot take place retroactively.</t>
  <t>No transitioning from old certs.
There is no specific support for transitioning older or alternative OpenPGP certificate formats
to the structure defined in this specification.
Such a migration path may be defined in future specifications,
but this document is limited to new adopters going forward.</t>
  <t>No certificate discovery and no refresh.
This specification does not define a mechanism
to request a refreshed certificate from a peer.
Reliable message deletion depends on timely updates of each correspondent's certificate,
but imposing a particular mechanism
is unlikely to accommodate the constraints of diverse messaging implementations.
That said, this specification does not preclude
the use of discovery or refresh mechanisms.</t>
  <t>No coordinated deletion of messages.
This specification addresses unilateral deletability,
protecting against a future attacker who compromises the keyholder's UMA or secret key storage.
Messages are typically stored in multiple locations,
across peers, devices, and UMAs.
Guaranteeing deletion of all copies of a message,
including through negotiated “disappearing messages” mechanisms,
is outside the scope of this draft.</t>
  <t>No post-compromise security.
Some messaging schemes attempt to defend against
an attacker who has compromised the user's secret key material
at some point in the past,
typically by regularly mixing new entropy into the secret key material
and coordinating those updates across the user's shared devices.
This specification does not defend against such an attacker.
In the case of past key compromise, the user may need to move to an entirely new certificate.</t>
</list></t>

</section>
</section>
<section anchor="certificate-structure"><name>Certificate Structure</name>

<t>An Autocrypt v2 certificate is composed of a specific sequence of version 6 OpenPGP packets.
The precise requirements for these packets including algorithm IDs, key flags,
and binding signatures are detailed in <xref target="packet-composition"/>.</t>

<figure title="Autocrypt v2 Certificate Structure"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="424" viewBox="0 0 424 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,144" fill="none" stroke="black"/>
<path d="M 416,48 L 416,144" fill="none" stroke="black"/>
<path d="M 8,32 L 400,32" fill="none" stroke="black"/>
<path d="M 8,64 L 416,64" fill="none" stroke="black"/>
<path d="M 24,160 L 400,160" fill="none" stroke="black"/>
<path d="M 400,32 C 408.83064,32 416,39.16936 416,48" fill="none" stroke="black"/>
<path d="M 24,160 C 15.16936,160 8,152.83064 8,144" fill="none" stroke="black"/>
<path d="M 400,160 C 408.83064,160 416,152.83064 416,144" fill="none" stroke="black"/>
<g class="text">
<text x="28" y="52">A.</text>
<text x="72" y="52">Primary</text>
<text x="120" y="52">Key</text>
<text x="176" y="52">(Ed25519)</text>
<text x="52" y="84">B.</text>
<text x="92" y="84">Direct</text>
<text x="136" y="84">key</text>
<text x="168" y="84">sig</text>
<text x="232" y="84">(cert+sign,</text>
<text x="292" y="84">no</text>
<text x="336" y="84">expire)</text>
<text x="28" y="100">C.</text>
<text x="76" y="100">Fallback</text>
<text x="140" y="100">Subkey</text>
<text x="248" y="100">(ML-KEM-768+X25519)</text>
<text x="52" y="116">D.</text>
<text x="92" y="116">Subkey</text>
<text x="152" y="116">binding</text>
<text x="200" y="116">sig</text>
<text x="256" y="116">(encrypt,</text>
<text x="308" y="116">no</text>
<text x="352" y="116">expire)</text>
<text x="28" y="132">E.</text>
<text x="76" y="132">Rotating</text>
<text x="140" y="132">Subkey</text>
<text x="248" y="132">(ML-KEM-768+X25519)</text>
<text x="52" y="148">F.</text>
<text x="92" y="148">Subkey</text>
<text x="152" y="148">binding</text>
<text x="200" y="148">sig</text>
<text x="256" y="148">(encrypt,</text>
<text x="328" y="148">expires</text>
<text x="372" y="148">in</text>
<text x="396" y="148">R)</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
.-------------------------------------------------.
| A. Primary Key (Ed25519)                         |
+--------------------------------------------------+
|    B. Direct key sig (cert+sign, no expire)      |
| C. Fallback Subkey (ML-KEM-768+X25519)           |
|    D. Subkey binding sig (encrypt, no expire)    |
| E. Rotating Subkey (ML-KEM-768+X25519)           |
|    F. Subkey binding sig (encrypt, expires in R) |
 '------------------------------------------------'

]]></artwork></artset></figure>

<section anchor="encryption-subkey-rotation"><name>Encryption subkey rotation</name>

<t>The expiring encryption subkey is rotated on a regular schedule.
The window of subkey validity (from creation and binding to expiration) is known as <spanx style="verb">max_rd</spanx>.
When the current subkey has only <spanx style="verb">min_rd</spanx> time left until expiration,
the keyholder adds a new rotating subkey.
A rotating subkey <spanx style="verb">N+1</spanx> is created exactly at <spanx style="verb">min_rd</spanx> away
from the end of the validity window of rotating subkey <spanx style="verb">N</spanx>.
By convention, <spanx style="verb">max_rd</spanx> is 10 days (864000 seconds), and <spanx style="verb">min_rd</spanx> is 5 days (43200 seconds).
See <xref target="determining-minmaxrd"/> for the formal definition and concrete guidance about <spanx style="verb">min_rd</spanx> and <spanx style="verb">max_rd</spanx>.</t>

<t>In order for the keyholder to use the same TSK across multiple UMAs without explicit network coordination,
the values of <spanx style="verb">min_rd</spanx> and <spanx style="verb">max_rd</spanx> <bcp14>MUST</bcp14> be known to the keyholder's UMAs.
See <xref target="custom-ratcheting-schedules"/> for more information.</t>

<t>This arrangement means the validity window of each subsequent rotating subkey overlaps with
the validity window of the prior rotating subkey.
See <xref target="subkey-validity-windows"/> for more discussion about temporal layout of subkey validity windows.</t>

</section>
<section anchor="packet-composition"><name>Packet Composition</name>

<t>An outbound certificate consists of the following six packets:</t>

<t><list style="symbols">
  <t>A. "Primary" Public Key Packet (packet type ID 6), version 6, public key algorithm Ed25519 (algorithm ID 27), creation time T</t>
  <t>B. Direct Key Signature (packet type ID 2), version 6, signature type 0x1f, hashed subpackets include:  <list style="symbols">
      <t>signature creation time (probably T)</t>
      <t>key flags: certify, sign</t>
      <t>issuer fingerprint (fingerprint of A)</t>
      <t>features: SEIPDv2</t>
      <t>preferred AEAD ciphersuites: AES-256+OCB ## TBD: do we need this?</t>
      <t>no expiration subpacket</t>
    </list></t>
  <t>C. "Fallback" Public Subkey Packet (packet type 14), version 6, public key algorithm ML-KEM-768+X25519 (algorithm ID 35) (see <xref section="4.2" sectionFormat="of" target="I-D.ietf-openpgp-pqc-14"/>), creation time T</t>
  <t>D. Subkey binding signature (packet type ID 2), version 6, signature type 0x18, hashed subpackets include:  <list style="symbols">
      <t>signature creation time (probably matching time in B)</t>
      <t>key flags: encrypt to storage, encrypt to comms</t>
      <t>issuer fingerprint (fingerprint of A)</t>
      <t>no expiration subpacket</t>
    </list></t>
  <t>E. "Rotating" Public Subkey Packet (packet type 14), version 6, public key algorithm ML-KEM-768+X25519 (algorithm ID 35) (see <xref section="4.2" sectionFormat="of" target="I-D.ietf-openpgp-pqc-14"/>), creation time T or later</t>
  <t>F. Subkey binding signature (packet type ID 2), version 6, signature type 0x18, hashed subpackets:  <list style="symbols">
      <t>signature creation time (same as creation time of E)</t>
      <t>key expiration time: <spanx style="verb">max_rd</spanx> (by convention, 10 days = 864000 seconds)</t>
      <t>key flags: encrypt to comms</t>
      <t>issuer fingerprint (fingerprint of A)</t>
    </list></t>
</list></t>

</section>
<section anchor="certificate-size"><name>Certificate Size</name>

<t>An outbound certificate is 2938 octets in binary form.</t>

<t>A certificate for a peer should be merged into the locally cached certificate
which may thus contain multiple rotating subkeys and grow accordingly.</t>

</section>
<section anchor="openpgp-format"><name>Use of OpenPGP format</name>

<t>OpenPGP has two different packet framing formats:
the "OpenPGP format" (<xref section="4.2.1" sectionFormat="of" target="RFC9580"/>) and
the "Legacy format" (<xref section="4.2.2" sectionFormat="of" target="RFC9580"/>).
Autocrypt v2 certificates and TSKs use only the OpenPGP format.</t>

<t>This is particularly relevant for the deterministic ratcheting step described in <xref target="ac2-ratchet"/>
because that step needs a canonical octet-string representation of several OpenPGP packets.</t>

</section>
</section>
<section anchor="identifying-an-autocrypt-v2-transferable-secret-key"><name>Identifying an Autocrypt v2 Transferable Secret Key</name>

<t>Peers interacting with an Autocrypt v2 certificate do not need to identify it as
an Autocrypt v2 certificate at all.
They simply need to apply common OpenPGP semantics to the certificate.</t>

<t>However, all UMAs operated by the keyholder
need to identify an Autocrypt v2 Transferable Secret Key (TSK)
in order to perform aligned key ratcheting <xref target="ac2-ratchet"/>
and achieve reliable deletion for the keyholder.</t>

<section anchor="identification-by-tsk-structure"><name>Identification By TSK Structure</name>

<t>A Transferable Secret Key (TSK) is identified as an Autocrypt v2 TSK
if its internal structure corresponds to the packets defined in <xref target="packet-composition"/>.
The keyholder's UMA must recognize this structure to perform the aligned
key ratcheting necessary for reliable deletion.</t>

</section>
<section anchor="determining-minmaxrd"><name>Determining min_rd and max_rd</name>

<t>The subkey rotation cadence is derived from
the Key Expiration Time subpacket (<xref section="5.2.3.13" sectionFormat="of" target="RFC9580"/>)
found in Packet F of <xref target="packet-composition"/>.</t>

<t>By definition, the value of the Key Expiration Time subpacket
(which is measured as an integer number of seconds) is <spanx style="verb">max_rd</spanx>.
The default value for <spanx style="verb">max_rd</spanx> is 864000 seconds.
<spanx style="verb">max_rd</spanx> represents the maximum possible time that
the peer can send a reliably deletable message to the keyholder,
starting from when the peer retrieves a fresh copy of the keyholder's certificate.</t>

<t><spanx style="verb">min_rd</spanx> is derived from <spanx style="verb">max_rd</spanx>.
By convention, <spanx style="verb">min_rd</spanx> is half of <spanx style="verb">max_rd</spanx>.
In particular, when <spanx style="verb">max_rd</spanx> is the default value of 864000 seconds,
<spanx style="verb">min_rd</spanx> is 432000 seconds.
<spanx style="verb">min_rd</spanx> represents the minimum possible time
that the peer will be able to send a reliably deletable message to the keyholder,
starting from when the peer retrieves a fresh copy of the keyholder's certificate.</t>

<t>Anyone designing a similar system with a different ratcheting cadence
where <spanx style="verb">min_rd</spanx> that is anything other than half of <spanx style="verb">max_rd</spanx>
<bcp14>MUST</bcp14> explicitly coordinate <spanx style="verb">min_rd</spanx> somehow with all other UMAs
and <bcp14>MUST</bcp14> set <spanx style="verb">max_rd</spanx> to something other than 864000.</t>

</section>
</section>
<section anchor="reliable-deletion-strategy"><name>Reliable Deletion Strategy</name>

<t>An Autocrypt v2 certificate evolves over time,
as new rotating encryption subkeys are added to it.
It also sees older rotating encryption subkeys expire and potentially be removed.
This requires reasonable behavior by the keyholder and their peers.</t>

<section anchor="keyholder-certificate-and-secret-key-management"><name>Keyholder Certificate and Secret Key Management</name>

<t>The keyholder must update the certificate regularly by
ratcheting its secret key material forward to a new subkey.
Since the ratchet is deterministic, based on time and the old key material,
and the ratcheting schedule is standardized,
each UMA that the keyholder uses will ratchet forward in the same
way, without needing any additional network coordination.</t>

<section anchor="ac2-ratchet"><name>Subkey Ratchet</name>

<t>Each successive encryption-capable subkey is derived deterministically from the subkey before it.</t>

<t>This section describes how to derive
the secret key material and a deterministic subkey binding signature
for the new encryption-capable subkey based on the following values:</t>

<t><list style="symbols">
  <t><spanx style="verb">secret_key</spanx>, the Transferable Secret Key to be ratcheted.</t>
  <t><spanx style="verb">start</spanx>, the creation timestamp for the new subkey, represented as a number of seconds
elapsed since 1970-01-01T00:00:00Z, as a big-endian, 32-bit unsigned integer.</t>
</list></t>

<t>Note that both <spanx style="verb">start</spanx>, and the non-secret parts of <spanx style="verb">secret_key</spanx>
(that is, <spanx style="verb">secret_key</spanx> with <spanx style="verb">get_public()</spanx> applied to all its Secret Key packets)
are publicly visible.</t>

<t>The ratchet function relies on several deterministic subfunctions:</t>

<t><list style="symbols">
  <t><spanx style="verb">get_primary_key(TSK) -&gt; K</spanx>
 takes a Transferable Secret Key and
 returns the Secret Key packet of its primary key.</t>
  <t><spanx style="verb">get_last_rotating_subkey(TSK) -&gt; (K, sbs)</spanx>
 takes a Transferable Secret Key and
 returns the  Secret Subkey packet and corresponding Subkey Binding Signature packet of
 it latest-expiring subkey that is marked with "encrypt to comms"</t>
  <t><spanx style="verb">extract_secret_key_material(K) -&gt; M</spanx> retrieves 96 octets of secret key material <spanx style="verb">M</spanx> from
an OpenPGP ML-KEM-768+X25519 secret key packet <spanx style="verb">K</spanx>.
The octets of <spanx style="verb">M</spanx> are structured exactly as they are on the wire.
(32 octets of X25519 key material + a 64 octet seed of ML-KEM-768).</t>
  <t><spanx style="verb">get_public(K) -&gt; P</spanx> takes an OpenPGP Secret Key (or Subkey) packet and produces
the corresponding OpenPGP Public Key (or Subkey) packet in OpenPGP format.</t>
  <t><spanx style="verb">make_secret_subkey(M,T) -&gt; K</spanx> takes 96 octets of secret key material <spanx style="verb">M</spanx> and
OpenPGP timestamp <spanx style="verb">T</spanx> and produces a ML-KEM-768+X25519 secret subkey packet
with creation time <spanx style="verb">T</spanx>.</t>
  <t><spanx style="verb">normalize_x25519_scalar(M) -&gt; M</spanx>
takes 96 octets of OpenPGP ML-KEM-768+X25519 secret key material, and
normalizes the first 32 octets, which are an X25519 secret key.
The full 96 octets are returned after normalization.
Normalization clears the three least-significant bits of the first octet,
clears the most-significant bit of the 32nd octet, and
sets the second-most-significant bit of the 32nd octet,
as described in <spanx style="verb">decodeScalar25519</spanx> in <xref section="5" sectionFormat="of" target="RFC7748"/>.</t>
  <t><spanx style="verb">get_hashed_subpackets(S) -&gt; subpackets</spanx>
takes a Signature packet and returns the ordered list of hashed subpackets
from that Signature.</t>
  <t><spanx style="verb">get_expiration_duration(S) -&gt; secs</spanx>
takes a Signature packet with a hashed Key Expiration subpacket and
returns the contents of the hashed Key Expiration subpacket,
represented as four octets, interpretable as a big-endian unsigned integer number of seconds.</t>
  <t><spanx style="verb">replace_creation_time(subpackets, T) -&gt; subpackets</spanx>
takes an ordered list of OpenPGP signature subpackets <spanx style="verb">sps</spanx> and
returns the same list but with
the value of the Signature Creation Time subpacket replaced by <spanx style="verb">T</spanx>.</t>
  <t><spanx style="verb">bind_subkey(P,K,T,sps,salt) -&gt; S</spanx>
takes primary Ed25519 secret key <spanx style="verb">P</spanx>, public subkey <spanx style="verb">K</spanx>,
timestamp <spanx style="verb">T</spanx>,
an ordered list of OpenPGP signature subpackets <spanx style="verb">subp</spanx>,
and a 16-octet <spanx style="verb">salt</spanx>, and
produces an OpenPGP v6 Subkey Binding Signature <spanx style="verb">S</spanx> using an Ed25519 signature.
Ed25519 signatures are deterministic as described in <xref section="8.2" sectionFormat="of" target="RFC8032"/>.</t>
</list></t>

<t>The next secret subkey and subkey binding signature are derived via <xref target="HKDF"/> using SHA2-512,
with the following construction,
where <spanx style="verb">||</spanx> represents concatenation:</t>

<figure><artwork><![CDATA[
AC2_Ratchet(secret_key
            start)
            -> (next_secret_subkey, subkey_binding_sig):
  primary_key = get_primary_key(secret_key)
  (base_subkey, oldsbs) = get_last_rotating_subkey(secret_key)
  max_rd = get_expiration_duration(oldsbs)

  salt = start || get_public(base_key)
  info = "Autocrypt_v2_ratchet" || get_public(primary_key) || max_rd
  IKM = extract_secret_key_material(base_key)
  IKM = normalize_x25519_scalar(IKM)
  L = 160
  ks = HKDF_SHA2_512(salt, info, IKM, L)
  bssalt = SHA2_512(ks[0:64])[0:16]
  new_secret = normalize_x25519_scalar(ks[64:160])
  new_subkey = make_secret_subkey(new_secret, start)
  subp = replace_creation_time(get_hashed_subpackets(oldsbs), start)
  binding_sig = bind_subkey(primary_key,
                            get_public(new_subkey),
                            subp, bssalt)
  return (new_subkey, binding_sig)
]]></artwork></figure>

<t>The <spanx style="verb">"Autocrypt_v2_ratchet"</spanx> string is 20 octets as represented in US-ASCII.</t>

<figure><artwork><![CDATA[
000  41 75 74 6f 63 72 79 70 |Autocryp|
008  74 5f 76 32 5f 72 61 74 |t_v2_rat|
010  63 68 65 74             |chet|
014
]]></artwork></figure>

<t>Note that a UMA without access to the secret key material of the primary key
can still use parts of <spanx style="verb">AC2_Ratchet</spanx> to derive the new secret key subkey
without producing the subkey binding signature.
Such a UMA would be able to decrypt incoming new messages.</t>

<section anchor="ac2ratchet-diagram"><name>AC2_Ratchet Diagram</name>

<t>The core of the algorithm above can be visualized as follows:</t>

<figure title="AC2_Ratchet Diagram"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="800" width="512" viewBox="0 0 512 800" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 8,32 L 8,64" fill="none" stroke="black"/>
<path d="M 16,480 L 16,512" fill="none" stroke="black"/>
<path d="M 16,672 L 16,720" fill="none" stroke="black"/>
<path d="M 16,752 L 16,784" fill="none" stroke="black"/>
<path d="M 24,64 L 24,336" fill="none" stroke="black"/>
<path d="M 40,96 L 40,128" fill="none" stroke="black"/>
<path d="M 56,368 L 56,392" fill="none" stroke="black"/>
<path d="M 64,128 L 64,336" fill="none" stroke="black"/>
<path d="M 64,512 L 64,552" fill="none" stroke="black"/>
<path d="M 72,592 L 72,664" fill="none" stroke="black"/>
<path d="M 80,160 L 80,192" fill="none" stroke="black"/>
<path d="M 104,96 L 104,128" fill="none" stroke="black"/>
<path d="M 120,480 L 120,512" fill="none" stroke="black"/>
<path d="M 136,368 L 136,392" fill="none" stroke="black"/>
<path d="M 152,432 L 152,472" fill="none" stroke="black"/>
<path d="M 176,192 L 176,280" fill="none" stroke="black"/>
<path d="M 176,320 L 176,336" fill="none" stroke="black"/>
<path d="M 192,672 L 192,720" fill="none" stroke="black"/>
<path d="M 208,32 L 208,64" fill="none" stroke="black"/>
<path d="M 216,368 L 216,392" fill="none" stroke="black"/>
<path d="M 296,512 L 296,552" fill="none" stroke="black"/>
<path d="M 296,672 L 296,720" fill="none" stroke="black"/>
<path d="M 312,592 L 312,744" fill="none" stroke="black"/>
<path d="M 328,480 L 328,512" fill="none" stroke="black"/>
<path d="M 328,752 L 328,784" fill="none" stroke="black"/>
<path d="M 400,160 L 400,192" fill="none" stroke="black"/>
<path d="M 408,96 L 408,128" fill="none" stroke="black"/>
<path d="M 432,32 L 432,64" fill="none" stroke="black"/>
<path d="M 504,32 L 504,64" fill="none" stroke="black"/>
<path d="M 8,32 L 504,32" fill="none" stroke="black"/>
<path d="M 8,64 L 504,64" fill="none" stroke="black"/>
<path d="M 40,96 L 408,96" fill="none" stroke="black"/>
<path d="M 40,128 L 408,128" fill="none" stroke="black"/>
<path d="M 80,160 L 400,160" fill="none" stroke="black"/>
<path d="M 80,192 L 400,192" fill="none" stroke="black"/>
<path d="M 120,288 L 240,288" fill="none" stroke="black"/>
<path d="M 120,320 L 240,320" fill="none" stroke="black"/>
<path d="M 80,352 L 120,352" fill="none" stroke="black"/>
<path d="M 192,352 L 200,352" fill="none" stroke="black"/>
<path d="M 48,400 L 232,400" fill="none" stroke="black"/>
<path d="M 48,432 L 232,432" fill="none" stroke="black"/>
<path d="M 16,480 L 328,480" fill="none" stroke="black"/>
<path d="M 16,512 L 328,512" fill="none" stroke="black"/>
<path d="M 40,560 L 96,560" fill="none" stroke="black"/>
<path d="M 240,560 L 360,560" fill="none" stroke="black"/>
<path d="M 40,592 L 96,592" fill="none" stroke="black"/>
<path d="M 240,592 L 360,592" fill="none" stroke="black"/>
<path d="M 16,672 L 296,672" fill="none" stroke="black"/>
<path d="M 16,720 L 296,720" fill="none" stroke="black"/>
<path d="M 16,752 L 328,752" fill="none" stroke="black"/>
<path d="M 16,784 L 328,784" fill="none" stroke="black"/>
<path d="M 120,288 C 111.16936,288 104,295.16936 104,304" fill="none" stroke="black"/>
<path d="M 240,288 C 248.83064,288 256,295.16936 256,304" fill="none" stroke="black"/>
<path d="M 120,320 C 111.16936,320 104,312.83064 104,304" fill="none" stroke="black"/>
<path d="M 240,320 C 248.83064,320 256,312.83064 256,304" fill="none" stroke="black"/>
<path d="M 40,352 C 31.16936,352 24,344.83064 24,336" fill="none" stroke="black"/>
<path d="M 40,352 C 48.83064,352 56,359.16936 56,368" fill="none" stroke="black"/>
<path d="M 80,352 C 71.16936,352 64,344.83064 64,336" fill="none" stroke="black"/>
<path d="M 120,352 C 128.83064,352 136,359.16936 136,368" fill="none" stroke="black"/>
<path d="M 192,352 C 183.16936,352 176,344.83064 176,336" fill="none" stroke="black"/>
<path d="M 200,352 C 208.83064,352 216,359.16936 216,368" fill="none" stroke="black"/>
<path d="M 48,400 C 39.16936,400 32,407.16936 32,416" fill="none" stroke="black"/>
<path d="M 232,400 C 240.83064,400 248,407.16936 248,416" fill="none" stroke="black"/>
<path d="M 48,432 C 39.16936,432 32,424.83064 32,416" fill="none" stroke="black"/>
<path d="M 232,432 C 240.83064,432 248,424.83064 248,416" fill="none" stroke="black"/>
<path d="M 40,560 C 31.16936,560 24,567.16936 24,576" fill="none" stroke="black"/>
<path d="M 96,560 C 104.83064,560 112,567.16936 112,576" fill="none" stroke="black"/>
<path d="M 240,560 C 231.16936,560 224,567.16936 224,576" fill="none" stroke="black"/>
<path d="M 360,560 C 368.83064,560 376,567.16936 376,576" fill="none" stroke="black"/>
<path d="M 40,592 C 31.16936,592 24,584.83064 24,576" fill="none" stroke="black"/>
<path d="M 96,592 C 104.83064,592 112,584.83064 112,576" fill="none" stroke="black"/>
<path d="M 240,592 C 231.16936,592 224,584.83064 224,576" fill="none" stroke="black"/>
<path d="M 360,592 C 368.83064,592 376,584.83064 376,576" fill="none" stroke="black"/>
<polygon class="arrowhead" points="320,744 308,738.4 308,749.6" fill="black" transform="rotate(90,312,744)"/>
<polygon class="arrowhead" points="304,552 292,546.4 292,557.6" fill="black" transform="rotate(90,296,552)"/>
<polygon class="arrowhead" points="224,392 212,386.4 212,397.6" fill="black" transform="rotate(90,216,392)"/>
<polygon class="arrowhead" points="184,280 172,274.4 172,285.6" fill="black" transform="rotate(90,176,280)"/>
<polygon class="arrowhead" points="160,472 148,466.4 148,477.6" fill="black" transform="rotate(90,152,472)"/>
<polygon class="arrowhead" points="144,392 132,386.4 132,397.6" fill="black" transform="rotate(90,136,392)"/>
<polygon class="arrowhead" points="80,664 68,658.4 68,669.6" fill="black" transform="rotate(90,72,664)"/>
<polygon class="arrowhead" points="72,552 60,546.4 60,557.6" fill="black" transform="rotate(90,64,552)"/>
<polygon class="arrowhead" points="64,392 52,386.4 52,397.6" fill="black" transform="rotate(90,56,392)"/>
<g class="text">
<text x="108" y="52">&quot;Autocrypt_v2_ratchet&quot;</text>
<text x="244" y="52">public</text>
<text x="304" y="52">primary</text>
<text x="352" y="52">key</text>
<text x="396" y="52">packet</text>
<text x="468" y="52">max_rd</text>
<text x="72" y="116">start</text>
<text x="136" y="116">prior</text>
<text x="196" y="116">rotating</text>
<text x="260" y="116">public</text>
<text x="316" y="116">subkey</text>
<text x="372" y="116">packet</text>
<text x="112" y="180">prior</text>
<text x="172" y="180">rotating</text>
<text x="236" y="180">subkey</text>
<text x="292" y="180">secret</text>
<text x="356" y="180">material</text>
<text x="224" y="228">input</text>
<text x="8" y="244">-</text>
<text x="40" y="244">-</text>
<text x="56" y="244">-</text>
<text x="80" y="244">-</text>
<text x="96" y="244">-</text>
<text x="112" y="244">-</text>
<text x="128" y="244">-</text>
<text x="144" y="244">-</text>
<text x="160" y="244">-</text>
<text x="192" y="244">-</text>
<text x="208" y="244">-</text>
<text x="224" y="244">-</text>
<text x="240" y="244">-</text>
<text x="256" y="244">-</text>
<text x="272" y="244">-</text>
<text x="288" y="244">-</text>
<text x="304" y="244">-</text>
<text x="320" y="244">-</text>
<text x="336" y="244">-</text>
<text x="352" y="244">-</text>
<text x="368" y="244">-</text>
<text x="384" y="244">-</text>
<text x="400" y="244">-</text>
<text x="416" y="244">-</text>
<text x="432" y="244">-</text>
<text x="448" y="244">-</text>
<text x="464" y="244">-</text>
<text x="180" y="308">normalize_x25519</text>
<text x="28" y="372">info</text>
<text x="108" y="372">salt</text>
<text x="192" y="372">IKM</text>
<text x="76" y="420">HKDF</text>
<text x="140" y="420">H=SHA2_512</text>
<text x="208" y="420">L=160</text>
<text x="44" y="500">64</text>
<text x="80" y="500">bytes</text>
<text x="196" y="500">96</text>
<text x="232" y="500">bytes</text>
<text x="68" y="580">SHA2_512</text>
<text x="300" y="580">normalize_x25519</text>
<text x="8" y="628">-</text>
<text x="24" y="628">-</text>
<text x="40" y="628">-</text>
<text x="56" y="628">-</text>
<text x="88" y="628">-</text>
<text x="104" y="628">-</text>
<text x="120" y="628">-</text>
<text x="136" y="628">-</text>
<text x="152" y="628">-</text>
<text x="168" y="628">-</text>
<text x="184" y="628">-</text>
<text x="200" y="628">-</text>
<text x="216" y="628">-</text>
<text x="232" y="628">-</text>
<text x="248" y="628">-</text>
<text x="264" y="628">-</text>
<text x="280" y="628">-</text>
<text x="296" y="628">-</text>
<text x="328" y="628">-</text>
<text x="344" y="628">-</text>
<text x="360" y="628">-</text>
<text x="376" y="628">-</text>
<text x="392" y="628">-</text>
<text x="408" y="628">-</text>
<text x="424" y="628">-</text>
<text x="440" y="628">-</text>
<text x="456" y="628">-</text>
<text x="236" y="644">output</text>
<text x="36" y="692">16</text>
<text x="68" y="692">byte</text>
<text x="108" y="692">salt</text>
<text x="144" y="692">for</text>
<text x="172" y="692">v6</text>
<text x="240" y="692">...</text>
<text x="52" y="708">subkey</text>
<text x="112" y="708">binding</text>
<text x="160" y="708">sig</text>
<text x="240" y="708">(discard)</text>
<text x="44" y="772">next</text>
<text x="100" y="772">rotating</text>
<text x="164" y="772">subkey</text>
<text x="220" y="772">secret</text>
<text x="284" y="772">material</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
+------------------------+---------------------------+--------+
| "Autocrypt_v2_ratchet" | public primary key packet | max_rd |
+-+----------------------+---------------------------+--------+
  |
  | +-------+-------------------------------------+
  | | start | prior rotating public subkey packet |
  | +--+----+-------------------------------------+
  |    |
  |    | +---------------------------------------+
  |    | | prior rotating subkey secret material |
  |    | +-----------+---------------------------+
  |    |             |
  |    |             |   input
- | - -| - - - - - - | - - - - - - - - - - - - - - - - - -
  |    |             |
  |    |             v
  |    |     .----------------.
  |    |    | normalize_x25519 |
  |    |     '-------+--------'
  |    |             |
   '-.  '------.      '--.
 info |    salt |     IKM |
      v         v         v
    .------------------------.
   |   HKDF H=SHA2_512 L=160  |
    '-------------+----------'
                  |
                  v
 +------------+-------------------------+
 |  64 bytes  |        96 bytes         |
 +-----+------+---------------------+---+
       |                            |
       v                            v
   .--------.               .----------------.
  | SHA2_512 |             | normalize_x25519 |
   '----+---'               '---------+------'
        |                             |
- - - - | - - - - - - - - - - - - - - | - - - - - - - - -
        |                 output      |
        v                             |
 +---------------------+------------+ |
 | 16 byte salt for v6 |    ...     | |
 | subkey binding sig  | (discard)  | |
 +---------------------+------------+ |
                                      v
 +--------------------------------------+
 | next rotating subkey secret material |
 +--------------------------------------+
]]></artwork></artset></figure>

</section>
</section>
<section anchor="ratcheting-schedule"><name>Ratcheting Schedule</name>

<t>This section describes a straightforward algorithm for
a keyholder's UMA to decide when to create a new encryption-capable subkey.
A UMA can execute this algorithm at any time,
and <bcp14>SHOULD</bcp14> execute it in at least two specific cases:</t>

<t><list style="symbols">
  <t>When preparing to extract an OpenPGP certificate for publication or transmission to a peer, and</t>
  <t>When receiving an encrypted message that is encrypted to a key that the implementation does not know about.</t>
</list></t>

<t>Note that this algorithm is specifically about new subkey creation.
Please see <xref target="key-destruction-timing"/> for recommendations about subkey destruction.</t>

<t>Knowing when to produce a new secret subkey requires knowledge of four distinct values.
All timestamps referenced here are values computed in the OpenPGP standard,
that is, as an integer number of seconds elapsed since 1970-01-01T00:00:00Z.</t>

<t>Two values are taken from the Autocrypt v2 TSK:</t>

<t><list style="symbols">
  <t><spanx style="verb">base_start</spanx>, the creation timestamp of the most recent rotating subkey.</t>
  <t><spanx style="verb">max_rd</spanx>, the number of seconds that the rotating subkey will expire.</t>
</list></t>

<t>One value is derived from the above:</t>

<t><list style="symbols">
  <t><spanx style="verb">min_rd</spanx> is typically half of <spanx style="verb">max_rd</spanx> (see <xref target="determining-minmaxrd"/>)</t>
</list></t>

<t>And a final value is taken from general consensus:</t>

<t><list style="symbols">
  <t><spanx style="verb">now</spanx>, the current "wall-clock" timestamp.</t>
</list></t>

<t>Add new rotating subkeys with the following routine:</t>

<t><list style="numbers" type="1">
  <t>If <spanx style="verb">now &lt; base_start</spanx>, abort.
(something is probably wrong with the system clock or the secret key material)</t>
  <t>Let <spanx style="verb">next_start</spanx> be <spanx style="verb">base_start + max_rd - min_rd</spanx>.</t>
  <t>If <spanx style="verb">now &lt; next_start</spanx>, terminate successfully (no need to ratchet).</t>
  <t>Generate new secret subkey <spanx style="verb">next_key</spanx>, using key material deterministically derived from
the certificate's primary key, the most recent rotating secret subkey, <spanx style="verb">max_rd</spanx>, and <spanx style="verb">next_start</spanx>.
Bind <spanx style="verb">next_key</spanx> as an encryption-capable subkey,
using a deterministic subkey binding signature packet.
<spanx style="verb">next_key</spanx>'s creation timestamp (and the subkey binding signature) is <spanx style="verb">next_start</spanx>.
See <xref target="ac2-ratchet"/> for how to deterministically derive the new secret key and subkey binding signature.</t>
  <t>Restart this process, using the new subkey.</t>
</list></t>

<t>Note that the recursive nature of the above scheduler may end up generating multiple secret subkeys
if the device has been offline for a long time.</t>

</section>
<section anchor="custom-ratcheting-schedules"><name>Custom Ratcheting Schedules</name>

<t>While this specification defines a 10-day validity window with a 50% overlap as the standard convention,
a system could be designed with a different rotation window
or a different overlap algorithm.
Such a system <bcp14>MUST</bcp14> guarantee
that all the keyholder's own UMAs
follow an identical adjusted rotation schedules and key destruction logic
in order to maintain synchronization.</t>

<t>A peer receiving an incoming certificate produced under a custom schedule
does not need to be aware of the keyholder's specific rotation logic.
Because these certificates adhere to standard OpenPGP structures,
the peer will properly handle them by merging the new subkeys into their local cache
using standard OpenPGP semantics (see <xref target="receiving-and-merging"/>).
As long as the primary key remains constant,
the peer's UMA will simply see a sequence of valid encryption subkeys
and can continue to encrypt messages following the logic described in <xref target="encrypting-to-v2"/>.</t>

</section>
<section anchor="key-destruction-timing"><name>Timing of Secret Key Destruction</name>

<t>To achieve reliable deletion,
a keyholder <bcp14>SHOULD</bcp14> destroy the secret key material for a rotating encryption subkey
as soon as it is no longer required for decryption.
Because message delivery is not instantaneous,
a subkey should be retained for a grace period beyond its validity window.
This delay accounts for the maximum expected transit time of the underlying transport mechanism.
For example, a 10-day delay (864000 seconds) is reasonable for Internet mail.</t>

<t>The destruction process is tied to the successful retrieval and processing of messages.
A UMA <bcp14>SHOULD</bcp14> follow this routine:</t>

<t><list style="numbers" type="1">
  <t>Track Transport Endpoints: For every transport endpoint associated with a certificate,
the UMA maintains a <spanx style="verb">last_checked</spanx> timestamp and an expected maximum delivery <spanx style="verb">delay</spanx>.</t>
  <t>Determine the Safety Horizon: The UMA calculates an <spanx style="verb">oldest_update</spanx> timestamp,
which is the minimum value of <spanx style="verb">(last_checked - delay)</spanx> across all associated transport endpoints.</t>
  <t>Destroy Expired Material: Any rotating secret subkey with an expiration time earlier than
the <spanx style="verb">oldest_update</spanx> is destroyed.</t>
</list></t>

<t>In cases of persistent transport unreachability,
a UMA must balance the need for decryption with the goal of reliable deletion.
If a transport endpoint remains inaccessible for a prolonged period,
the UMA <bcp14>SHOULD</bcp14> eventually disassociate that endpoint from the certificate.
Failing to do so would prevent <spanx style="verb">oldest_update</spanx> from advancing,
indefinitely stalling key destruction and widening the window of recoverability (see <xref target="recoverability-window"/>).
Once the UMA gives up on fetching messages from an inaccessible transport,
it can proceed with the standard destruction of the corresponding secret key material.</t>

</section>
<section anchor="autocrypt-v2-tsk-and-certificate-timeline"><name>Autocrypt v2 TSK and Certificate Timeline</name>

<t>The following diagram illustrates the timeline for evolution of an Autocrypt v2 TSK and Cert.</t>

<figure title="Autocrypt V2 TSK and Certificate Timeline"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="464" width="536" viewBox="0 0 536 464" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 32,184 L 32,208" fill="none" stroke="black"/>
<path d="M 48,56 L 48,96" fill="none" stroke="black"/>
<path d="M 88,192 L 88,256" fill="none" stroke="black"/>
<path d="M 104,80 L 104,168" fill="none" stroke="black"/>
<path d="M 104,184 L 104,264" fill="none" stroke="black"/>
<path d="M 104,280 L 104,336" fill="none" stroke="black"/>
<path d="M 136,48 L 136,416" fill="none" stroke="black"/>
<path d="M 160,64 L 160,144" fill="none" stroke="black"/>
<path d="M 160,176 L 160,240" fill="none" stroke="black"/>
<path d="M 160,272 L 160,320" fill="none" stroke="black"/>
<path d="M 160,352 L 160,400" fill="none" stroke="black"/>
<path d="M 480,80 L 480,128" fill="none" stroke="black"/>
<path d="M 504,288 L 504,304" fill="none" stroke="black"/>
<path d="M 520,192 L 520,224" fill="none" stroke="black"/>
<path d="M 528,368 L 528,384" fill="none" stroke="black"/>
<path d="M 136,64 L 464,64" fill="none" stroke="black"/>
<path d="M 64,112 L 104,112" fill="none" stroke="black"/>
<path d="M 160,144 L 464,144" fill="none" stroke="black"/>
<path d="M 104,176 L 120,176" fill="none" stroke="black"/>
<path d="M 136,176 L 504,176" fill="none" stroke="black"/>
<path d="M 48,224 L 88,224" fill="none" stroke="black"/>
<path d="M 160,240 L 504,240" fill="none" stroke="black"/>
<path d="M 104,272 L 120,272" fill="none" stroke="black"/>
<path d="M 136,272 L 488,272" fill="none" stroke="black"/>
<path d="M 56,320 L 104,320" fill="none" stroke="black"/>
<path d="M 160,320 L 488,320" fill="none" stroke="black"/>
<path d="M 136,352 L 512,352" fill="none" stroke="black"/>
<path d="M 160,400 L 512,400" fill="none" stroke="black"/>
<path d="M 120,64 C 111.16936,64 104,71.16936 104,80" fill="none" stroke="black"/>
<path d="M 464,64 C 472.83064,64 480,71.16936 480,80" fill="none" stroke="black"/>
<path d="M 64,112 C 55.16936,112 48,104.83064 48,96" fill="none" stroke="black"/>
<path d="M 464,144 C 472.83064,144 480,136.83064 480,128" fill="none" stroke="black"/>
<path d="M 104,176 C 95.16936,176 88,183.16936 88,192" fill="none" stroke="black"/>
<path d="M 504,176 C 512.83064,176 520,183.16936 520,192" fill="none" stroke="black"/>
<path d="M 48,224 C 39.16936,224 32,216.83064 32,208" fill="none" stroke="black"/>
<path d="M 504,240 C 512.83064,240 520,232.83064 520,224" fill="none" stroke="black"/>
<path d="M 104,272 C 95.16936,272 88,264.83064 88,256" fill="none" stroke="black"/>
<path d="M 120,272 C 111.16936,272 104,279.16936 104,288" fill="none" stroke="black"/>
<path d="M 120,272 C 111.16936,272 104,264.83064 104,256" fill="none" stroke="black"/>
<path d="M 488,272 C 496.83064,272 504,279.16936 504,288" fill="none" stroke="black"/>
<path d="M 56,320 C 47.16936,320 40,312.83064 40,304" fill="none" stroke="black"/>
<path d="M 488,320 C 496.83064,320 504,312.83064 504,304" fill="none" stroke="black"/>
<path d="M 120,352 C 111.16936,352 104,344.83064 104,336" fill="none" stroke="black"/>
<path d="M 512,352 C 520.83064,352 528,359.16936 528,368" fill="none" stroke="black"/>
<path d="M 512,400 C 520.83064,400 528,392.83064 528,384" fill="none" stroke="black"/>
<polygon class="arrowhead" points="144,416 132,410.4 132,421.6" fill="black" transform="rotate(90,136,416)"/>
<g class="text">
<text x="140" y="36">Time</text>
<text x="52" y="52">max_rd</text>
<text x="200" y="84">primary</text>
<text x="248" y="84">key</text>
<text x="272" y="84">+</text>
<text x="316" y="84">fallback</text>
<text x="380" y="84">subkey</text>
<text x="440" y="84">created</text>
<text x="192" y="100">first</text>
<text x="252" y="100">rotating</text>
<text x="316" y="100">subkey</text>
<text x="376" y="100">created</text>
<text x="188" y="116">cert</text>
<text x="248" y="116">generated</text>
<text x="188" y="132">cert</text>
<text x="260" y="132">distribution</text>
<text x="340" y="132">begins</text>
<text x="36" y="180">min_rd</text>
<text x="184" y="196">new</text>
<text x="236" y="196">rotating</text>
<text x="300" y="196">subkey</text>
<text x="360" y="196">derived</text>
<text x="448" y="196">(AC2_Ratchet)</text>
<text x="184" y="212">new</text>
<text x="228" y="212">subkey</text>
<text x="328" y="212">deterministically</text>
<text x="424" y="212">bound</text>
<text x="460" y="212">to</text>
<text x="492" y="212">cert</text>
<text x="188" y="228">cert</text>
<text x="268" y="228">redistribution</text>
<text x="356" y="228">begins</text>
<text x="52" y="292">max(T.delay)</text>
<text x="192" y="292">first</text>
<text x="252" y="292">rotating</text>
<text x="316" y="292">subkey</text>
<text x="376" y="292">expires</text>
<text x="192" y="308">peers</text>
<text x="236" y="308">drop</text>
<text x="280" y="308">first</text>
<text x="332" y="308">subkey</text>
<text x="380" y="308">from</text>
<text x="428" y="308">merged</text>
<text x="476" y="308">cert</text>
<text x="188" y="372">msgs</text>
<text x="276" y="372">recv'd+processed</text>
<text x="364" y="372">from</text>
<text x="400" y="372">all</text>
<text x="460" y="372">transports</text>
<text x="512" y="372">T</text>
<text x="200" y="388">destroy</text>
<text x="256" y="388">first</text>
<text x="316" y="388">rotating</text>
<text x="380" y="388">secret</text>
<text x="436" y="388">subkey</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
                Time
    max_rd       |
      |       .- +--+--------------------------------------.
      |      |   |  | primary key + fallback subkey created |
      |      |   |  | first rotating subkey created         |
       '-----+   |  | cert generated                        |
             |   |  | cert distribution begins              |
             |   |  +--------------------------------------'
             |   |
  min_rd    .--- +--+-------------------------------------------.
    |      | |   |  | new rotating subkey derived (AC2_Ratchet)  |
    |      | |   |  | new subkey deterministically bound to cert |
     '-----+ |   |  | cert redistribution begins                 |
           | |   |  +-------------------------------------------'
           | |   |
            '-+- +--+-----------------------------------------.
 max(T.delay)|   |  | first rotating subkey expires            |
     |       |   |  | peers drop first subkey from merged cert |
      '------+   |  +-----------------------------------------'
             |   |
              '- +--+--------------------------------------------.
                 |  | msgs recv'd+processed from all transports T |
                 |  | destroy first rotating secret subkey        |
                 |  +--------------------------------------------'
                 v

]]></artwork></artset></figure>

</section>
</section>
<section anchor="receiving-and-merging"><name>Receiving and Merging Certificates</name>

<t>An outbound Autocrypt v2 certificate always has the same primary key,
but new encryption-capable subkeys appear on a regular basis.
A peer UMA that encounters a certificate
<bcp14>SHOULD</bcp14> merge the known subkeys into the locally cached certificate,
using a mechanism like <spanx style="verb">sop merge-certs</spanx> (<xref section="5.2.6" sectionFormat="of" target="I-D.dkg-openpgp-stateless-cli"/>).</t>

<t>A peer that replaces but does not merge certificates
may end up encrypting a message to a subkey with a wider window of recoverability than necessary.</t>

<section anchor="minimization-and-pruning-of-autocrypt-v2-certificates"><name>Minimization and pruning of Autocrypt v2 certificates</name>

<t>To ensure good data hygiene and minimize storage use,
implementations should regularly prune Autocrypt v2 certificates,
for example when merging incoming certificates.
According to the ratcheting schedule algorithm (<xref target="ac2-ratchet"/>),
a merged Autocrypt v2 certificate typically can contain
at most two valid rotating subkeys at any given time.</t>

<t>Because expired subkeys can no longer be used for encryption,
it is <bcp14>RECOMMENDED</bcp14> that implementations drop all expired encryption subkeys
(and their corresponding subkey binding signatures) from certificates on a continuous basis.
This maintenance strategy keeps the certificate size minimal
while allowing communication with reliable deletion.</t>

<t>Note that deletion of secret key material
(as opposed to the public key material in certificates)
happens at a different cadence, see <xref target="key-destruction-timing"/>.</t>

</section>
</section>
<section anchor="encrypting-to-v2"><name>Encrypting to an Autocrypt v2 Certificate</name>

<t>When encrypting a message to an Autocrypt v2 certificate,
the peer should encrypt the message to only one of the encryption-capable subkeys.</t>

<t>If any rotating encryption subkey is valid,
the peer <bcp14>MUST NOT</bcp14> encrypt to the fallback encryption subkey.</t>

<t>If no rotating encryption subkey is valid,
and the peer has no way to update the certificate,
the peer <bcp14>MAY</bcp14> encrypt the message to the fallback encryption subkey.</t>

<t>If more than one rotating encryption subkey is currently valid,
the peer <bcp14>SHOULD</bcp14> encrypt to the valid rotating encryption subkey with the nearest revocation date.
This hastens the time when the message becomes reliably deletable.</t>

</section>
<section anchor="message-deletion"><name>Message Deletion</name>

<t>When a message is to be deleted,
the UMA <bcp14>MUST</bcp14> delete all known copies of the message,
as well as any set-aside session keys.
It <bcp14>MUST</bcp14> also remove traces of the message from
any index it may have created, as indexing tends
to create an equivalent copy of the indexed content.
The message will be unrecoverable by the adversary
once the rotating subkey's secret key material
has been destroyed (see <xref target="key-destruction-timing"/>).</t>

<section anchor="message-processing"><name>Keyholder Processing of Encrypted Messages</name>

<t>To facilitate robust deletion of some messages
while retaining the ability to read others from its archive,
a UMA needs to plan how to process a message upon ingestion.</t>

<t>When the keyholder first receives an encrypted message,
their UMA typically places the message in an archive visible to the UMA.
If the archive contains only the original ciphertext as received,
then the message will be useless in the archive when the rotating subkey's secret key material is destroyed
(see <xref target="key-destruction-timing"/>).
The goal is to have the message available in the archive when access is desired,
and to be able to safely remove it from the archive when deletion is desired.</t>

<t>There are at least three sensible ways to handle the message so that it can be deleted safely in the future:</t>

<t><list style="symbols">
  <t>Archiving cleartext</t>
  <t>Stashing session keys</t>
  <t>Re-encrypting</t>
</list></t>

<section anchor="archiving-cleartext"><name>Archiving Cleartext</name>

<t>The simplest model is that the keyholder's UMA retains the cleartext of each message,
entirely discarding the in-transit form.</t>

<t>The UMA can re-visit the content of such a message trivially,
regardless of whether the asymmetric secret key used for decryption has been destroyed or not.</t>

<t>This approach presumes that the message archive is not typically accessible
to the adversary.</t>

</section>
<section anchor="stashing-session-keys"><name>Stashing Session Keys</name>

<t>In this approach, the keyholder's UMA retains the in-transit form of the message,
but associates the OpenPGP session key of the encrypted content with the message.
For example, the UMA could store the session keys in a separate look-aside table, indexed by Message-ID.</t>

<t>In this case, the UMA can access the cleartext of the message
by decrypting it with the set-aside session key, even when the asymmetric secret key has been destroyed.</t>

<t>This approach can be used where the adversary has regular access to the archive,
effectively treating the archive as though it were as at-risk as the message in transit.
But the area where the session keys are stored
<bcp14>MUST NOT</bcp14> be typically accessible to the adversary.
If message cleartext is indexed, the session key storage <bcp14>MUST</bcp14> be
at least as secure from the adversary as the message index.</t>

</section>
<section anchor="re-encrypting"><name>Re-Encrypting</name>

<t>Finally, if the UMA retains some other long-term secret key for archival access,
it can process each message by re-encrypting it to the long-term archival key.
This can be done either by prepending each OpenPGP Encrypted Message
with a new Public Key Encrypted Session Key (PKESK) packet (See <xref section="5.1" sectionFormat="of" target="RFC9580"/>)
that contains the existing message's session key,
or by unwrapping the SEIPD packet entirely,
and re-encrypting it to the long-term archival key.</t>

<t>This approach presumes that the message archive is not typically
accessible to the adversary.
If the archive were regularly accessible to the adversary,
the adversary could store the re-encrypted message before deletion.
Then, during the compromise of the user's long-term key,
the adversary could unlock their copy of the previously deleted message.</t>

</section>
</section>
<section anchor="summary-of-message-processing-strategies"><name>Summary of Message Processing Strategies</name>

<texttable title="Message Archiving Strategies">
      <ttcol align='right'>Archiving Strategy</ttcol>
      <ttcol align='left'>raw message retained?</ttcol>
      <ttcol align='left'>simple indexing</ttcol>
      <ttcol align='left'>OpenPGP packet handling</ttcol>
      <ttcol align='left'>Deletable if adversary can access archive</ttcol>
      <c>Archived Cleartext</c>
      <c>N</c>
      <c>Y</c>
      <c>N</c>
      <c>N</c>
      <c>Stashed Session Key</c>
      <c>Y</c>
      <c>N</c>
      <c>N</c>
      <c>Y</c>
      <c>Re-encrypted Message</c>
      <c>N</c>
      <c>N</c>
      <c>Y</c>
      <c>N</c>
</texttable>

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

<t>See the discussion of quantum impersonation in <xref target="non-goals"/>.</t>

<t>A message encrypted to the long-term fallback encryption subkey can not be reliably deleted,
because an adversary who captures the message
and in the future exfiltrates the keyholder's secret key material will be able to decrypt their stored copy of the message.</t>

<section anchor="deletable-threat-model"><name>Reliable Deletion Threat Model</name>

<t>The threat model for reliable deletion of messages has three core expectations:</t>

<t><list style="symbols">
  <t>The adversary has access to any message in transit,
and can retain the in-transit form of each message indefinitely.</t>
  <t>At some point in the future,
the adversary can compromise the keyholder's UMA to be able to get access to their secret key material.</t>
  <t>The archive maintained by the keyholder's UMA is subject
to the same level of threat as the keyholder's secret key storage.</t>
</list></t>

<t>The goal for the keyholder is that
when the adversary compromises either the keyholder's archive or the keyholder's secret key material (or both),
any message that has been deleted by the keyholder is in fact unrecoverable by the adversary.</t>

</section>
<section anchor="the-cleartext-is-the-targeted-asset"><name>The Cleartext Is The Targeted Asset</name>

<t>Some "Forward Secrecy" schemes emphasize key ephemerality so heavily
that they lose track of the adversary's goal.</t>

<t>This document uses the "Reliable Deletion" framing because
the adversary wants to compromise the confidentiality of the message itself,
which means the key is only an intermediate target.</t>

<t>Many UMAs are effectively systems both for messaging and for archiving.
For archiving UMAs, exfiltration of the archive is often
as easy as (or even easier than) exfiltration of the secret key.
This means that confidentiality protection needs to consider
being able to delete the message cleartext
from the archive as well as the relevant secret key material.</t>

</section>
<section anchor="key-destruction-time-based-vs-message-based"><name>Key Destruction: Time-based vs. Message-based</name>

<t>Automated encryption key destruction is a necessary component to achieving reliable deletion.
There are two main approaches to scheduling key destruction: time-based and message-based.</t>

<t>Some messaging protocols (e.g., <xref target="Double-Ratchet"/>) ratchet keys on every message (or nearly every message).
This message-based key destruction schedule gives
a narrower window of temporal availability for each key, and fewer messages are encrypted to each key.</t>

<t>The time-based approach used in this specification is simpler
and relies primarily on all UMAs controlled by a single keyholder to have a shared sense of the global clock.</t>

<t>While the temporal window of key availability is often wider in the time-based approach,
its simplicity means much less inter-client coordination.
And the narrower temporal window of key validity offered by the message-based approach
is often not the limiting factor in the temporal window of message recoverability (see <xref target="recoverability-window"/>.</t>

</section>
<section anchor="recoverability-window"><name>The Window of Recoverability</name>

<t>Any message system offering reliable deletion has a frame of time during which the message
cannot be robustly deleted because it can be recovered by an attacker.
For example, in a scheme where each message is encrypted to its own unique key,
if one of the recipients of the message has not yet received the message,
a copy of that key must be available on the lagging recipient's device.</t>

<t>An adversary who is capable of:</t>

<t><list style="symbols">
  <t>capturing a copy of the message in transit, and</t>
  <t>preventing its delivery to one of the recipients, and</t>
  <t>compromising the recipient's device</t>
</list></t>

<t>will be able to recover the message cleartext even if
all other parties involved with the message
have deleted it long ago.</t>

<t>Realistically, a message is only deleted
once every cleartext copy of it has been destroyed, and
every system with access to the message's secret key
has destroyed the secret key.
At a minimum, a message that is in flight is not yet deletable,
and for a message sent to a group, message deletion is only
as robust as the slowest, most detached and uncoordinated member of the group.</t>

<t>Automated message deletion policies
(such as "disappearing messages" functionality common in many messenger apps)
can assist in message deletion, but they are similarly bound by
the duration of secret key retention.</t>

<t>Schemes with rapid key rotation tend to need
more complex internal state,
and are more likely to result in unreadable messages.
For initial messages, these schemes might require
all parties to a communication to be online at the same time,
or require any offline participants to distribute
some introductory key material ("prekeys") to a
reliably online third party.
A "prekey" scheme is itself at risk of attacks that can
cause initial messages to lose the desired deletability property,
or can expose additional metadata to an attacker
(see, for example, <xref target="PREKEY-POGO"/>).</t>

<t>This document accepts a wider window of message recovery (at most 20 days, by default)
which lets implementers avoid the need for any network synchronization between the keyholder's UMAs.
This tradeoff provides a decentralized and robust way to achieve reliable deletion.</t>

</section>
<section anchor="system-clock-reliance"><name>System Clock Reliance</name>

<t>A wrong system clock can have three serious impacts on a system interacting with Autocrypt v2 keys and certificates.
A UMA should confirm that its system clock is within a reasonable range of the global consensus on what time it is.</t>

<t>There are at least three possible security-relevant failures that could happen as a result of a broken system clock:</t>

<t><list style="symbols">
  <t>With a system clock set too far in the past,
a UMA might encrypt a message to an actually-expired encryption subkey.
If the recipient has already destroyed their secret key material according to schedule,
such a message would be undecryptable.</t>
  <t>With a system clock set too far in the future,
a UMA might decide that no rotating encryption subkey is available for a peer,
and therefore encrypt a message to the fallback encryption key,
thereby losing the reliable deletion property for that message.</t>
  <t>With a system clock set too far in the future, the UMA of a keyholder with an Autocrypt v2 secret key
might ratchet their secret key very far forward and
destroy secret key material that is still being used to encrypt messages to them.
This would render all incoming messages undecryptable.</t>
</list></t>

<section anchor="avoiding-system-clock-skew"><name>Avoiding System Clock Skew</name>

<t>There are several ways to try to ensure that the local system clock matches
the general consensus about what time it is.
Broadly, the UMA (or the device on which it runs) can glean an understanding about the consensus time
from dedicated time servers,
from servers that it otherwise communicates with directly,
or from the peers that send it messages.</t>

<t>An attacker in control of any of these sources of time consensus might use their influence to try
to defeat reliable deletion (e.g., by forcing a message to be encrypted to the fallback key,
or by delaying secret key deletion),
or to create a denial of service (e.g., by encouraging encryption of messages to an already deleted subkey,
or by encouraging early deletion of a secret key).</t>

<t>One approach to learning about the local clock's skew from consensus time is
to use <xref target="NTP"/> against one or more known-good time servers.</t>

<t>Another approach is to glean a reasonable time bounds from the transport layer the UMA connects with.
For example, when using using <xref target="TLS"/> (or <xref target="QUIC"/> with the <xref target="TLS"/> handshake),
it's possible to infer a range of plausible times the server operator thinks it could be by looking at the
<spanx style="verb">Validity</spanx> member (from <spanx style="verb">notBefore</spanx> to <spanx style="verb">notAfter</spanx>) of the server's <xref target="X.509"/> certificate.
Narrower <spanx style="verb">Validity</spanx> members are more common today than they were in the past
and can help to detect a clock skew that is greater than the bounds of <spanx style="verb">Validity</spanx>.</t>

<t>To the extent that the server participates in <xref target="Certificate-Transparency"/>,
the UMA could also determine reasonable time bounds from timestamp member of the SignedCertificateTimestamp extension.
If the server offers a stapled <xref target="OCSP"/> response via the OCSP Status Request extension,
the various timestamps (e.g. <spanx style="verb">producedAt</spanx> and <spanx style="verb">thisUpdate</spanx> and <spanx style="verb">nextUpdate</spanx>) in a stapled OCSPResponse
can also be used as an estimate of the server's rough sense of the wall clock.
Estimates like these based on information provided from the server in the TLS handshake
are valuable because the UMA has typically not yet authenticated to the server during the handshake,
which makes a targeted attack from the server in this context less likely.</t>

<t>The UMA can also get a rough estimate of their correspondents' view of the wall clock time
by looking, for example, at the <spanx style="verb">Date</spanx> header in recently-received e-mail messages.</t>

<t>These methods can generate estimates of the likelihood of clock skew.
In the event that the keyholder's UMA believes that its clock is substantially advanced beyond the consensus time,
it <bcp14>MAY</bcp14> postpone secret key deletion until it is more confident in its clock alignment.</t>

</section>
</section>
</section>
<section anchor="usability-considerations"><name>Usability Considerations</name>

<t>The keyholder needs to regularly update their certificate,
and re-transmit it to those peers who might want to write them a confidential message.</t>

<t>Refreshing the encryption-capable subkeys might be done
with a suitable invocation of <spanx style="verb">sop update-key</spanx> (see <xref section="5.2.5" sectionFormat="of" target="I-D.dkg-openpgp-stateless-cli"/>).</t>

<t>After subkey rollover, re-transmission to peers might be done with <xref target="Autocrypt"/> or some other in-band communication process.
Alternately, if the keyholder's peers refresh certificates before sending mail,
the updated certificate could be uploaded to keyservers using <xref target="HKP"/> or a comparable protocol.</t>

<t>If a peer is willing to encrypt to an expired encryption key,
they will create a message that the keyholder cannot decrypt,
because the keyholder regularly destroys the secret key material associated with expired subkeys.
The peer <bcp14>MUST NOT</bcp14> encrypt to an expired encryption key.</t>

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

<t>This document does not require any action from IANA.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <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>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC9580">
  <front>
    <title>OpenPGP</title>
    <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
    <author fullname="D. Huigens" initials="D." surname="Huigens"/>
    <author fullname="J. Winter" initials="J." surname="Winter"/>
    <author fullname="Y. Niibe" initials="Y." surname="Niibe"/>
    <date month="July" year="2024"/>
    <abstract>
      <t>This document specifies the message formats used in OpenPGP. OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.</t>
      <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>This document obsoletes RFCs 4880 ("OpenPGP Message Format"), 5581 ("The Camellia Cipher in OpenPGP"), and 6637 ("Elliptic Curve Cryptography (ECC) in OpenPGP").</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9580"/>
  <seriesInfo name="DOI" value="10.17487/RFC9580"/>
</reference>

<reference anchor="I-D.ietf-openpgp-pqc-14">
   <front>
      <title>Post-Quantum Cryptography in OpenPGP</title>
      <author fullname="Stavros Kousidis" initials="S." surname="Kousidis">
         <organization>BSI</organization>
      </author>
      <author fullname="Johannes Roth" initials="J." surname="Roth">
         <organization>MTG AG</organization>
      </author>
      <author fullname="Falko Strenzke" initials="F." surname="Strenzke">
         <organization>MTG AG</organization>
      </author>
      <author fullname="Aron Wussler" initials="A." surname="Wussler">
         <organization>Proton AG</organization>
      </author>
      <date day="13" month="November" year="2025"/>
      <abstract>
	 <t>   This document defines a post-quantum public-key algorithm extension
   for the OpenPGP protocol.  Given the generally assumed threat of a
   cryptographically relevant quantum computer, this extension provides
   a basis for long-term secure OpenPGP signatures and ciphertexts.
   Specifically, it defines composite public-key encryption based on ML-
   KEM (formerly CRYSTALS-Kyber), composite public-key signatures based
   on ML-DSA (formerly CRYSTALS-Dilithium), both in combination with
   elliptic curve cryptography, and SLH-DSA (formerly SPHINCS+) as a
   standalone public key signature scheme.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-openpgp-pqc-14"/>
   
</reference>
<reference anchor="RFC7748">
  <front>
    <title>Elliptic Curves for Security</title>
    <author fullname="A. Langley" initials="A." surname="Langley"/>
    <author fullname="M. Hamburg" initials="M." surname="Hamburg"/>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <date month="January" year="2016"/>
    <abstract>
      <t>This memo specifies two elliptic curves over prime fields that offer a high level of practical security in cryptographic applications, including Transport Layer Security (TLS). These curves are intended to operate at the ~128-bit and ~224-bit security level, respectively, and are generated deterministically based on a list of required properties.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7748"/>
  <seriesInfo name="DOI" value="10.17487/RFC7748"/>
</reference>
<reference anchor="RFC8032">
  <front>
    <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8032"/>
  <seriesInfo name="DOI" value="10.17487/RFC8032"/>
</reference>
<reference anchor="HKDF">
  <front>
    <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
    <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
    <author fullname="P. Eronen" initials="P." surname="Eronen"/>
    <date month="May" year="2010"/>
    <abstract>
      <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5869"/>
  <seriesInfo name="DOI" value="10.17487/RFC5869"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="Autocrypt" target="https://autocrypt.org/">
  <front>
    <title>Autocrypt - Convenient End-to-End Encryption for E-Mail</title>
    <author initials="V." surname="Breitmoser" fullname="Vincent Breitmoser">
      <organization></organization>
    </author>
    <author initials="H." surname="Krekel" fullname="Holger Krekel">
      <organization></organization>
    </author>
    <author initials="D. K." surname="Gillmor" fullname="Daniel Kahn Gillmor">
      <organization></organization>
    </author>
    <date year="2019" month="February" day="10"/>
  </front>
</reference>
<reference anchor="Double-Ratchet" target="https://signal.org/docs/specifications/doubleratchet/">
  <front>
    <title>The Double Ratchet Algorithm</title>
    <author initials="T." surname="Perrin" fullname="Trevor Perrin">
      <organization></organization>
    </author>
    <author initials="M." surname="Marlinspike" fullname="Moxie Marlinspike">
      <organization></organization>
    </author>
    <author initials="R." surname="Schmidt" fullname="Rolfe Schmidt">
      <organization></organization>
    </author>
    <date year="2025" month="November" day="04"/>
  </front>
</reference>



<reference anchor="I-D.dkg-openpgp-stateless-cli">
   <front>
      <title>Stateless OpenPGP Command Line Interface</title>
      <author fullname="Daniel Kahn Gillmor" initials="D. K." surname="Gillmor">
         <organization>American Civil Liberties Union</organization>
      </author>
      <date day="2" month="January" year="2026"/>
      <abstract>
	 <t>   This document defines a generic stateless command-line interface for
   dealing with OpenPGP messages, certificates, and secret key material,
   known as sop.  It aims for a minimal, well-structured API covering
   OpenPGP object security and maintenance of credentials and secrets.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-dkg-openpgp-stateless-cli-15"/>
   
</reference>
<reference anchor="PREKEY-POGO">
  <front>
    <title>Prekey Pogo: Investigating Security and Privacy Issues in WhatsApp's Handshake Mechanism</title>
    <author fullname="Gabriel K. Gegenhuber" initials="G." surname="Gegenhuber">
      <organization/>
    </author>
    <author fullname="Philipp É. Frenzel" initials="P." surname="Frenzel">
      <organization/>
    </author>
    <author fullname="Maximilian Günther" initials="M." surname="Günther">
      <organization/>
    </author>
    <author fullname="Aljosha Judmayer" initials="A." surname="Judmayer">
      <organization/>
    </author>
    <date year="2025"/>
  </front>
  <seriesInfo name="DOI" value="10.48550/ARXIV.2504.07323"/>
<refcontent>arXiv</refcontent></reference>
<reference anchor="NTP">
  <front>
    <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
    <author fullname="D. Mills" initials="D." surname="Mills"/>
    <author fullname="J. Martin" initials="J." role="editor" surname="Martin"/>
    <author fullname="J. Burbank" initials="J." surname="Burbank"/>
    <author fullname="W. Kasch" initials="W." surname="Kasch"/>
    <date month="June" year="2010"/>
    <abstract>
      <t>The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet. This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family. NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs. It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required. It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5905"/>
  <seriesInfo name="DOI" value="10.17487/RFC5905"/>
</reference>
<reference anchor="TLS">
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <date month="August" year="2018"/>
    <abstract>
      <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8446"/>
  <seriesInfo name="DOI" value="10.17487/RFC8446"/>
</reference>
<reference anchor="QUIC">
  <front>
    <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
    <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
    <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
    <date month="May" year="2021"/>
    <abstract>
      <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9000"/>
  <seriesInfo name="DOI" value="10.17487/RFC9000"/>
</reference>
<reference anchor="X.509">
  <front>
    <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
    <author fullname="D. Cooper" initials="D." surname="Cooper"/>
    <author fullname="S. Santesson" initials="S." surname="Santesson"/>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="W. Polk" initials="W." surname="Polk"/>
    <date month="May" year="2008"/>
    <abstract>
      <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5280"/>
  <seriesInfo name="DOI" value="10.17487/RFC5280"/>
</reference>
<reference anchor="Certificate-Transparency">
  <front>
    <title>Certificate Transparency</title>
    <author fullname="B. Laurie" initials="B." surname="Laurie"/>
    <author fullname="A. Langley" initials="A." surname="Langley"/>
    <author fullname="E. Kasper" initials="E." surname="Kasper"/>
    <date month="June" year="2013"/>
    <abstract>
      <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
      <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6962"/>
  <seriesInfo name="DOI" value="10.17487/RFC6962"/>
</reference>
<reference anchor="OCSP">
  <front>
    <title>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</title>
    <author fullname="M. Myers" initials="M." surname="Myers"/>
    <author fullname="R. Ankney" initials="R." surname="Ankney"/>
    <author fullname="A. Malpani" initials="A." surname="Malpani"/>
    <author fullname="S. Galperin" initials="S." surname="Galperin"/>
    <author fullname="C. Adams" initials="C." surname="Adams"/>
    <date month="June" year="1999"/>
    <abstract>
      <t>This document specifies a protocol useful in determining the current status of a digital certificate without requiring CRLs. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2560"/>
  <seriesInfo name="DOI" value="10.17487/RFC2560"/>
</reference>

<reference anchor="HKP">
   <front>
      <title>OpenPGP HTTP Keyserver Protocol</title>
      <author fullname="Daphne Shaw" initials="D." surname="Shaw">
         <organization>Jabberwocky Tech</organization>
      </author>
      <author fullname="Andrew Gallagher" initials="A." surname="Gallagher">
         <organization>PGPKeys.EU</organization>
      </author>
      <author fullname="Daniel Huigens" initials="D." surname="Huigens">
         <organization>Proton AG</organization>
      </author>
      <date day="3" month="November" year="2025"/>
      <abstract>
	 <t>   This document specifies a series of conventions to implement an
   OpenPGP keyserver using the Hypertext Transfer Protocol (HTTP).  As
   this document is a codification and extension of a protocol that is
   already in wide use, strict attention is paid to backward
   compatibility with these existing implementations.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-gallagher-openpgp-hkp-09"/>
   
</reference>

<reference anchor="I-D.brown-pgp-pfs">
   <front>
      <title>Forward Secrecy Extensions for OpenPGP</title>
      <author fullname="Ian Brown" initials="I." surname="Brown">
         </author>
      <author fullname="Ben Laurie" initials="B." surname="Laurie">
         <organization>A.L. Digital Ltd</organization>
      </author>
      <date day="8" month="October" year="2001"/>
      <abstract>
	 <t>The confidentiality of encrypted data depends on the secrecy of the
key needed to decrypt it. If one key is able to decrypt large
quantities of data, its compromise will be disastrous. This memo
describes three methods for limiting this vulnerability for OpenPGP
messages: reducing the lifetime of confidentiality keys; one-time
keys; and the additional use of lower-layer security services.
	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-brown-pgp-pfs-03"/>
   
</reference>



    </references>

</references>


<?line 1040?>

<section anchor="historical-notes"><name>Historical notes</name>

<t>Prior work on "forward secrecy" in OpenPGP dates back decades,
including <xref target="I-D.brown-pgp-pfs"/>.
Much of the guidance in that document is useful, and it is worth reading.
As far as the authors are aware, the mechanisms described there were never widely adopted,
and no tooling is currently available to make certificates compliant with the policies or "single-use" subpackets outlined there.
That specification also never grappled with the complexities of coordinating ephemeral subkeys across multiple UMAs,
or considering how "reply all" would work in a group messaging context for single-use keys.</t>

</section>
<section anchor="design-choices"><name>Design Choices</name>

<section anchor="subkey-validity-windows"><name>Subkey Validity Windows</name>

<t>When designing the subkey rotation mechanism,
it's possible to create back-to-back, overlapping, or superset validity windows.</t>

<section anchor="back-to-back-validity-windows"><name>Back-to-Back Validity Windows</name>

<t>With back-to-back validity windows,
Each subkey is valid for a period that doesn't overlap with any other subkey.</t>

<figure title="Back-to-Back Validity Windows"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="536" viewBox="0 0 536 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 56,32 L 56,64" fill="none" stroke="black"/>
<path d="M 56,192 L 56,224" fill="none" stroke="black"/>
<path d="M 144,32 L 144,96" fill="none" stroke="black"/>
<path d="M 232,64 L 232,128" fill="none" stroke="black"/>
<path d="M 320,96 L 320,160" fill="none" stroke="black"/>
<path d="M 408,128 L 408,192" fill="none" stroke="black"/>
<path d="M 56,48 L 88,48" fill="none" stroke="black"/>
<path d="M 112,48 L 144,48" fill="none" stroke="black"/>
<path d="M 144,80 L 176,80" fill="none" stroke="black"/>
<path d="M 200,80 L 232,80" fill="none" stroke="black"/>
<path d="M 232,112 L 264,112" fill="none" stroke="black"/>
<path d="M 288,112 L 320,112" fill="none" stroke="black"/>
<path d="M 320,144 L 352,144" fill="none" stroke="black"/>
<path d="M 376,144 L 408,144" fill="none" stroke="black"/>
<path d="M 408,176 L 432,176" fill="none" stroke="black"/>
<path d="M 56,208 L 528,208" fill="none" stroke="black"/>
<polygon class="arrowhead" points="536,208 524,202.4 524,213.6" fill="black" transform="rotate(0,528,208)"/>
<g class="text">
<text x="100" y="52">K0</text>
<text x="188" y="84">K1</text>
<text x="276" y="116">K2</text>
<text x="364" y="148">K3</text>
<text x="456" y="180">...</text>
<text x="20" y="212">Time</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
      .          .
      +----K0----+
      '          |          .
                 +----K1----+
                 '          |          .
                            +----K2----+
                            '          |          .
                                       +----K3----+
                                       '          |
                                                  +--- ...
      .                                           '
Time  +---------------------------------------------------------->
      '
]]></artwork></artset></figure>

<t>In this arrangement, it is unambiguous which subkey to encrypt to, and validity windows can be shorter.
But toward the end of one subkey's validity window, the keyholder needs to distribute the next subkey as well as the current subkey,
in case an incoming message is produced after the cutover.
When the keyholder does this, they are distributing two subkeys (which makes the certificate larger).</t>

<t>Also, the upcoming subkey will have a creation time and signature creation time in the future,
and peer implementation support for subkeys with creation times or subkey binding times in the future is dubious.
Some peers may reject the subkey for being "from the future", and strip it before storing the certificate.
Those peers won't have it available when they need it,
and might end up having to encrypt to the fallback subkey.
Other peers may ignore the creation timestamps, and go ahead and encrypt to the subkey before its validity window begins.</t>

<t>Policy needs a decision about when to start distributing the new subkey,
but that decision does not affect the wireformat.</t>

<t>If keyholder's UMA X distributes the new subkey earlier than keyholder's UMA Y,
and a peer encrypts a message to the new subkey before the new subkey is valid,
keyholder's UMA Y may need to trial-ratchet until it finds the right subkey.</t>

</section>
<section anchor="overlapping-validity-windows"><name>Overlapping Validity Windows</name>

<t>With overlapping validity windows, each subsequent rotating subkey's validity starts during the validity
window of the prior rotating subkey.</t>

<figure title="Overlapping Validity Windows"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="536" viewBox="0 0 536 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 56,32 L 56,64" fill="none" stroke="black"/>
<path d="M 56,192 L 56,224" fill="none" stroke="black"/>
<path d="M 144,64 L 144,96" fill="none" stroke="black"/>
<path d="M 184,32 L 184,64" fill="none" stroke="black"/>
<path d="M 232,96 L 232,128" fill="none" stroke="black"/>
<path d="M 272,64 L 272,96" fill="none" stroke="black"/>
<path d="M 320,128 L 320,160" fill="none" stroke="black"/>
<path d="M 360,96 L 360,128" fill="none" stroke="black"/>
<path d="M 408,160 L 408,192" fill="none" stroke="black"/>
<path d="M 448,128 L 448,160" fill="none" stroke="black"/>
<path d="M 56,48 L 112,48" fill="none" stroke="black"/>
<path d="M 136,48 L 184,48" fill="none" stroke="black"/>
<path d="M 144,80 L 192,80" fill="none" stroke="black"/>
<path d="M 216,80 L 272,80" fill="none" stroke="black"/>
<path d="M 232,112 L 280,112" fill="none" stroke="black"/>
<path d="M 304,112 L 360,112" fill="none" stroke="black"/>
<path d="M 320,144 L 368,144" fill="none" stroke="black"/>
<path d="M 392,144 L 448,144" fill="none" stroke="black"/>
<path d="M 408,176 L 472,176" fill="none" stroke="black"/>
<path d="M 56,208 L 528,208" fill="none" stroke="black"/>
<polygon class="arrowhead" points="536,208 524,202.4 524,213.6" fill="black" transform="rotate(0,528,208)"/>
<g class="text">
<text x="124" y="52">K0</text>
<text x="204" y="84">K1</text>
<text x="292" y="116">K2</text>
<text x="380" y="148">K3</text>
<text x="496" y="180">...</text>
<text x="20" y="212">Time</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
      .               .
      +-------K0------+
      '          .    '          .
                 +------K1-------+
                 '          .    '          .
                            +------K2-------+
                            '          .    '          .
                                       +------K3-------+
                                       '          .    '
                                                  +-------- ...
      .                                           '
Time  +---------------------------------------------------------->
      '
]]></artwork></artset></figure>

<t>The validity window for any subkey in this scheme is wider than back-to-back.
Keyholder only needs to distribute a single rotating subkey.</t>

<t>Policy needs a decision about how much the validity windows should overlap, which affects the wireformat.
This document records the convention that the validity windows overlap by 50% (new subkey created halfway through the prior subkey's validity).</t>

<t>The keyholder's UMAs can blindly coordinate subkey distribution by
only distributing subkeys whose validity window is currently active.</t>

</section>
<section anchor="superset-validity-windows"><name>Superset Validity Windows</name>

<t>With superset validity windows, each rotating subkey has an identical creation time,
but each subsequent subkey has a later expiration date.</t>

<figure title="Superset Validity Windows"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="536" viewBox="0 0 536 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
<path d="M 56,32 L 56,224" fill="none" stroke="black"/>
<path d="M 144,32 L 144,64" fill="none" stroke="black"/>
<path d="M 232,64 L 232,96" fill="none" stroke="black"/>
<path d="M 320,96 L 320,128" fill="none" stroke="black"/>
<path d="M 408,128 L 408,160" fill="none" stroke="black"/>
<path d="M 56,48 L 88,48" fill="none" stroke="black"/>
<path d="M 112,48 L 144,48" fill="none" stroke="black"/>
<path d="M 56,80 L 128,80" fill="none" stroke="black"/>
<path d="M 152,80 L 232,80" fill="none" stroke="black"/>
<path d="M 56,112 L 176,112" fill="none" stroke="black"/>
<path d="M 200,112 L 320,112" fill="none" stroke="black"/>
<path d="M 56,144 L 232,144" fill="none" stroke="black"/>
<path d="M 256,144 L 408,144" fill="none" stroke="black"/>
<path d="M 56,176 L 432,176" fill="none" stroke="black"/>
<path d="M 56,208 L 528,208" fill="none" stroke="black"/>
<polygon class="arrowhead" points="536,208 524,202.4 524,213.6" fill="black" transform="rotate(0,528,208)"/>
<g class="text">
<text x="100" y="52">K0</text>
<text x="140" y="84">K1</text>
<text x="188" y="116">K2</text>
<text x="244" y="148">K3</text>
<text x="456" y="180">...</text>
<text x="20" y="212">Time</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
      .          .
      +----K0----+
      |          '          .
      +---------K1----------+
      |                     '          .
      +---------------K2---------------+
      |                                '          .
      +----------------------K3-------------------+
      |                                           '
      +----------------------------------------------- ...
      |
Time  +---------------------------------------------------------->
      '
]]></artwork></artset></figure>

<t>This scheme relies on the keyholder's machines delaying generation of each subsequent rotating subkey,
as a prematurely-generated (and distributed) subkey might get used by a peer.</t>

</section>
<section anchor="validity-window-conclusion"><name>Validity Window Conclusion</name>

<t>Decision: better to go with overlapping,
so that the common case is a certificate with only a single rotating subkey.</t>

</section>
</section>
<section anchor="ed25519-for-primary-key"><name>Ed25519 for Primary Key</name>

<t>Why not go with PQ/T primary key?
Because signatures from all PQ/T keys are very large,
and each cert needs at least three signatures in it.</t>

<t>Why not go with Ed448 primary key?
Because Ed25519 implementations have endured significantly more scrutiny than Ed448 implementations.
Also, Ed25519 is already mandatory-to-implement in OpenPGP, and signatures are marginally smaller.</t>

</section>
<section anchor="balancing-rotation-and-reliable-deletion-timing"><name>Balancing Rotation and Reliable Deletion Timing</name>

<t>The default 5-day rotation period, 10-day expiration, and 20-day deletion
schedule balance reliability with security.
The 10-day buffer after expiration accounts for potential message
transmission delays in systems like SMTP.
Deleting the secret key material after 20 days ensures that reliable
message deletion occurs in the near future.
This timeline prevents secret keys from being stored longer than necessary
while remaining compatible with the pace of modern email.</t>

</section>
<section anchor="no-explicit-annotations"><name>No Explicit Annotations</name>

<t>An Autocrypt v2 certificate is identifiable by its structure and parameterization alone.
There is no attempt to mark a certificate explicitly as an attempt at Autocrypt v2.</t>

<t>The design goal of interop with peers with a merely upgraded OpenPGP implementation
suggests that an explicit indicator would be unnecessary.</t>

</section>
<section anchor="seed-free-ratcheting"><name>Seed-free Ratcheting</name>

<t>When ratcheting a secret subkey forward,
this design only uses secret entropy from
the current ratcheting subkey's secret key material.</t>

<t>Introducing additional data in the form of a seed would require special coordination
between cooperating peers for the initial synchronization of that seed,
which complicates the goal of minimizing network synchronization.</t>

<t>For example, a keyholder that adds another UMA to their account currently needs
to transfer an OpenPGP TSK to the new UMA.
How would a distinct seed be transmitted to the other UMA in such a way that it would
not be be accidentally re-transmitted to a peer by legacy tooling that extracts
an OpenPGP certificate from the TSK?</t>

<t>Another choice of additional seed material could be the secret key material of the
primary key itself, or of the fallback's secret key material.
By not including any of that secret key material in the input to the ratchet,
we enable the keyholder to distribute these two long-term keys to their various UMAs
via a tamper-resistant hardware device.</t>

</section>
</section>
<section anchor="test-vectors"><name>Test vectors</name>

<section anchor="key-and-certificate-created"><name>Key and Certificate Created</name>

<t>At
2025-11-01T17:33:45Z,
this Autocrypt v2 secret key was created, with the associated certificate.</t>

<section anchor="initial-certificate"><name>Initial Certificate</name>

<t>This outbound certificate is distributed to peers that the key holder wants to communicate with.</t>

<figure><sourcecode type="application/pgp-keys" name="initial.cert"><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
K3H73ZjWMHxBCQ==
-----END PGP PUBLIC KEY BLOCK-----

]]></sourcecode></figure>

</section>
<section anchor="initial-tsk"><name>Initial TSK</name>

<t>This secret key is made available only to the keyholder's own devices.</t>

<figure><sourcecode type="application/pgp-keys" name="initial.key"><![CDATA[
-----BEGIN PGP PRIVATE KEY BLOCK-----

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
-----END PGP PRIVATE KEY BLOCK-----

]]></sourcecode></figure>

</section>
</section>
<section anchor="after-new-subkey-added"><name>After New Subkey Added</name>

<t>After
2025-11-06T17:33:45Z
(<spanx style="verb">min_rd</spanx> after the initial key creation), a new rotating subkey is added.</t>

<t>The new subkey is derived via HKDF as described in <xref target="ac2-ratchet"/>, with the following parameters:</t>

<t>Salt:</t>

<figure><sourcecode type="text/plain" name="salt.hexdump"><![CDATA[
000  69 0c db f9 ce c4 0a 06  69 06 44 79 23 00 00 04
010  c0 98 24 64 8a b5 b9 09  83 5d b9 c1 09 b3 9d 0e
020  7b 05 d3 20 3a 5d fb 50  51 0f cf 37 c7 ae 4a 9a
030  6a 5b 63 c5 40 05 77 65  73 8b a7 20 4e f2 9c c3
040  57 4c 9b d6 91 5f 23 50  4d c7 51 17 a7 e2 4f 54
050  52 5c d1 90 5d ee c0 a8  78 e9 50 a7 f7 84 a1 9b
060  0e eb b3 9c 14 e3 84 17  73 b6 b2 b3 46 29 6b 75
070  c5 56 78 e8 30 4a 3e 0b  c3 79 36 a2 d0 8a 92 07
080  a6 62 63 80 48 d5 1a 1f  3f 13 5d 20 e4 50 93 73
090  6b 31 f1 70 23 77 3c 69  6c b4 5c 94 a6 a0 a4 05
0a0  25 69 b3 e3 60 83 a8 c2  83 88 65 3b 3d 0b 1d 39
0b0  c2 0c b8 f7 5a 44 70 55  2f 58 05 9b 74 b6 f1 56
0c0  1f 6d ab 53 1d 57 61 49  76 25 3c 3a 1b c8 83 62
0d0  c7 74 ad 8a 00 ae e1 f2  00 50 c1 a4 88 cb 49 fe
0e0  9a 1c bf d4 72 77 81 c7  fc 17 14 ca 7c c4 0f 02
0f0  1d 98 9b 45 b9 a1 5a 9c  d4 74 d8 02 51 2e 72 02
100  95 65 99 79 e5 35 f5 6c  39 dd f5 00 eb e7 6a cd
110  11 c7 f9 14 52 32 49 bc  59 6c 37 3f ba 69 84 47
120  c4 fa a0 85 d7 99 b2 ed  51 12 9d 8a 77 78 59 2b
130  56 57 85 c4 04 61 2f a0  1d a0 eb 98 a0 28 8f af
140  97 c6 c7 f3 3d 15 d9 7c  e7 49 c2 1f 28 ce 6a 34
150  49 b5 7b 92 5c ba 01 9a  7b 0f 41 c5 a3 4a ba 8b
160  7a 74 b4 fe f2 7e c8 a1  3a 8e 2c 74 33 83 94 b1
170  71 c0 8d 5a c2 d2 b7 01  db 43 62 36 39 76 0f 40
180  29 5e 44 cc 1b 38 80 eb  50 8b 05 a9 0c d7 77 89
190  d9 37 a4 b4 cb 78 05 39  88 a0 41 c9 a6 96 3c 79
1a0  03 6e 1e 69 a9 b8 a4 9d  08 e0 03 d5 95 89 d1 ca
1b0  90 b2 29 6a cc ca 23 98  ac a4 19 cb 77 18 a1 4a
1c0  72 70 c3 0a c1 74 76 61  2f 6a 41 ac 0f 23 9e d6
1d0  b2 8e bb 2a c4 00 8d 8b  d6 07 7f 7b b7 4b 11 cc
1e0  4d c5 17 a7 91 c2 59 08  66 5c b7 da b2 7c e8 c0
1f0  c9 e0 55 e8 41 69 04 d9  84 c6 26 b8 77 0a 8f 0a
200  d9 c5 96 25 88 f3 3c 37  40 30 9e 8b 92 c1 1b dc
210  b5 d8 70 63 e1 19 3d 66  25 a1 98 eb 05 8b 1b 4f
220  37 a0 9a 48 78 31 4c 5c  13 9e 09 17 ce e6 8b aa
230  45 1f 35 f7 ac 11 c9 2a  1d e6 44 4a 2a 02 a2 ab
240  2e 0f 22 22 f3 21 00 ae  48 b7 27 09 40 70 a9 7e
250  3b 14 b4 01 91 bb c6 d0  cf 9c b0 ae 8d d7 29 05
260  56 30 9e 77 80 83 33 27  f9 01 c8 68 f2 71 fd e9
270  76 dd ba 73 d6 59 7c f2  6a cd 9b a2 22 c3 c7 c1
280  e8 40 37 69 91 77 a9 b9  c5 8d 49 0f ae a0 b5 62
290  64 bc 96 f5 8a 5a fb 69  8c 08 7a e8 c9 19 c9 53
2a0  2c 2e d7 25 0d a4 80 7e  c7 b2 96 e0 5c 74 60 3f
2b0  24 4a 12 6a d5 60 44 b8  41 fc 02 6d 7d 9a 65 24
2c0  93 b9 63 06 c7 4b 1b 9a  39 43 09 31 88 04 81 45
2d0  6b b8 d8 81 fa 85 c1 75  ab 94 f1 66 ac 01 98 3c
2e0  63 e4 02 aa 53 10 e8 c8  12 e5 dc 41 1d 96 7c ff
2f0  f8 cc f0 70 03 f1 65 05  3f f9 57 84 75 b4 c7 7c
300  b5 08 d4 25 ed 24 2a 55  48 c8 c9 f3 7a 68 4b 13
310  ed 7c 7c 74 02 77 38 d7  07 13 f8 84 69 f0 12 59
320  b4 5d 90 0a 06 42 f1 0d  c8 da bb 6c 13 b9 c8 b7
330  8a 59 45 85 74 45 b1 af  c0 cc 73 9c 7d 99 f7 b3
340  f5 70 29 b2 71 c6 09 69  71 96 92 08 70 35 be 9d
350  70 89 cf b5 7a fc d5 64  71 70 80 71 e3 88 20 5a
360  01 70 90 b7 52 86 8e bc  a6 68 3a d1 c5 9c 8a 81
370  0a c4 6c 01 04 87 1a 42  af a9 24 30 e8 a9 50 b6
380  01 4f 1c 01 39 07 75 98  73 ac 8f 1a 45 77 df 59
390  7e 31 b0 9d 3f e1 af f5  34 8d 05 d2 6c 6f 65 17
3a0  ce d5 08 e0 d2 87 d8 a6  43 d2 3a 69 f2 8c 39 58
3b0  28 29 99 44 ab f3 95 89  2f d0 b2 f4 57 a4 61 0b
3c0  0d ae 68 a0 e1 83 7b 22  67 38 1f 05 4a 1c 1b 06
3d0  7c 91 a4 d8 ec af fa d2  a0 b8 c7 9a 2a 22 59 dc
3e0  b4 23 79 f1 c8 4c 38 75  3b 60 63 73 69 40 af 81
3f0  b5 13 51 6b 07 20 6b 7b  c8 b7 fe 02 29 29 99 3a
400  bd 22 39 32 8c b9 2e 6a  4d 1b 54 24 29 13 01 f2
410  05 28 91 56 aa 36 08 59  86 77 35 3a c1 1f 1d 00
420  58 ae b1 07 cb 60 22 c5  f1 7f 39 97 80 e4 11 8a
430  70 b1 88 ad 50 8b 3e 3c  c0 76 52 83 95 bb 56 49
440  85 b0 76 d2 ba e6 4c c4  99 f7 61 06 b8 18 af cb
450  8a c9 a2 ce 6d 23 7b 7b  67 c8 11 90 3f 4d d8 bc
460  a6 47 7c 53 db 18 2f f6  9f 91 37 18 25 48 cd 96
470  97 13 33 10 3f cc a8 3a  b6 d1 aa 42 77 9a 41 41
480  37 44 ab b7 a9 dc 14 c6  b4 0b 4e e5 ad 98 f2 cc
490  6b 99 ca 83 e1 3b 0f 37  b0 a6 31 57 52 51 79 e8
4a0  f5 4d 51 2a 32 a0 38 8f  97 c2 7e cc 5c 0b 0d 27
4b0  47 5f d9 99 e6 a3 35 93  d4 8e ba 71 c3 a8 be 55
4c0  f9 5c c9 60 84 eb 26 b4  f0 43 89 98 89 2c 22 02
4d0  39                                              
4d1
]]></sourcecode></figure>

<t>Info:</t>

<figure><sourcecode type="text/plain" name="info.hexdump"><![CDATA[
000  41 75 74 6f 63 72 79 70  74 5f 76 32 5f 72 61 74
010  63 68 65 74 c6 2a 06 69  06 44 79 1b 00 00 00 20
020  71 12 55 45 47 6a 19 33  4c 9f 0c 13 79 06 6f fa
030  8f 17 89 a0 dd 55 34 e9  5e 78 cf 34 7d 85 47 8c
040  00 0d 2f 00                                     
044
]]></sourcecode></figure>

<t>IKM:</t>

<figure><sourcecode type="text/plain" name="ikm.hexdump"><![CDATA[
000  a0 d7 c7 5b f6 52 19 1a  27 60 2f f2 8c 55 b1 a6
010  90 e4 93 0b 3c 1c a6 dd  9b 89 dc af a8 e1 18 72
020  9c ac 36 0e 74 e2 5c 9c  d6 8d a9 f7 e0 d2 e9 ff
030  97 81 66 f6 7e 09 ca 82  92 15 17 5c de b9 2d 31
040  a4 55 62 46 32 2a cc 50  ac 31 eb b6 66 61 60 c2
050  e8 c7 db 75 76 38 d9 6a  1e 46 bf 11 3f 79 98 2e
060
]]></sourcecode></figure>

<t>The HKDF output is:</t>

<figure><sourcecode type="text/plain" name="ks.hexdump"><![CDATA[
000  46 d0 19 07 17 f2 68 a0  d1 52 26 2e e9 28 48 23
010  f9 db dc a5 99 54 00 b3  77 6c a8 8a c5 e5 6b 01
020  2e b4 11 60 a4 9e f9 f9  d5 e8 6f 41 6b 09 bf d3
030  a1 34 56 52 93 02 d4 c5  d1 f8 28 9b 5e 5a f6 f2
040  04 1f b5 2f c6 4d f7 01  bc 75 3d d4 5d d0 5a 19
050  98 fc 39 9a 13 26 18 c4  d6 f2 79 92 fb be 3f 51
060  89 80 49 b1 cb 63 fc 2a  68 47 5c a3 57 58 96 e8
070  ae a8 36 c1 10 6a 3f 23  ec 4d 1c 06 46 58 6e e8
080  b3 24 97 b3 13 a4 77 fa  1d 23 80 b0 6f 96 d4 ac
090  f3 84 f8 d0 46 ab 27 1a  7f b3 10 15 29 9d bc 22
0a0
]]></sourcecode></figure>

<t>The first 64 octets of this is fed through SHA2_512 to create the salt for the subkey binding signature.</t>

<t>The remaining octets are used to initialize the new subkey's secret key material.</t>

<t>This results in a new TSK and a new cert.</t>

<section anchor="new-subkey"><name>Certificate With New Subkey</name>

<t>This updated outbound certificate should be distributed to the keyholder's peers starting on
2025-11-06T17:33:45Z.</t>

<figure><sourcecode type="application/pgp-keys" name="old-subkey-removed.cert"><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
aWzDxicPfxBFCw==
-----END PGP PUBLIC KEY BLOCK-----

]]></sourcecode></figure>

</section>
<section anchor="tsk-with-new-subkey"><name>TSK With New Subkey</name>

<t>Every device from the keyholder should be able to derive this exact secret key from the TSK found in <xref target="initial-tsk"/>.</t>

<figure><sourcecode type="application/pgp-keys" name="new-subkey-added.key"><![CDATA[
-----BEGIN PGP PRIVATE KEY BLOCK-----

xUsGaQZEeRsAAAAgcRJVRUdqGTNMnwwTeQZv+o8XiaDdVTTpXnjPNH2FR4wAET8I
Q3fQeNm71dOZSkB/260JmbL1QIX/q4ugYzBOFKLCkgYfGwgAAAAzBYJpBkR5ApsD
Ah4IIiEGH0FrgTQndqxcVMDB0oQzP8aKmI9bzomuqD7i+bPY0t4DJwkCAAAAAGXj
ENl3uzg/tNOjW2+khGm+tpsbjJOiUZOJ9I7TZsmLWtcH1k6y4YJfsZTJl6A4Xdf7
n+t3bz8im8Z5aPRfp1SL3OrBK+2DY3GX7xBa1EAgljoNx8RrBmkGRHkjAAAEwMnQ
yYCYyPLlqXKM8d+oKEe+a1maw5IdqzQRl3fDQA8WlOlA/Ywqa+MA9Ni7ZMBE9pBR
UKefJGZOu2NuNIJSzsB4c1tYPDqrMSR29JqqnOxXpISJVOmIxhC1j5VAKqnO4AuJ
8zEa3imhDxUr4JORP8eRi5gwkgu8BMQJfDA9kBgeYzQzx5JMJ5Mh/dW8/WOLdzIE
77I8L6dX2NB0v6uAV0A6eFy+LCuivxV/aDRH/9SW1tDGWocNMYqQ75JkFSpE4RVc
YvVBE1iO6XBInjGAm/hSzwE6RglwbpQdy3WaJfYsVuqLQgRpqZhuKmu18vaij0JG
HRhAEDNJuvmBtdgnCneezGtbOPF4zcax5Da+EekANUKhaClxZjSAFpAcpii0GElE
QIpYxaWas6C2fsNxmhsh57d/U0p0SAAiOrmVLrdCC6kpCNuqRiQ8jAC0+/tmZRe3
YVi6lBiNHlVXtcoUCOCH4jWiMAMB04sTb1uz+3EtAJktECDJ5muyIHhCBBQMKBKI
9rMCujJfIQApZ1IHq8qOl2G1NfcdGfsUQ9sbnKZRyik65FBMIOsco+Q7Xppgxyeh
KSmEpxJfwCtfC6YIosud5GSDOZMzCVQViDUawRk58KIIS8YDRNq9SrdqY9uLx4gq
23Jyvfmkald7EsbAaOKbPQNgPaRpJTO7W9QGmFdCL4KkO4hOoVZHltq5Pko+/zYQ
ick7kro5pvPDUaVhxuEu/GIlZWNoR9fO4TIItZwmIjwR5YN0MVC7CyFEaBySPHhY
ZDdJJ7dj+EKncGts02cO7HmM8WUDPAAELlViZ/k10KjH5oO+jWM6YBZrkLOPVngJ
SMB43EpJICeYSsGc2qCNK5NMtLvNSGsvsuUdr/WDtANTrWI2XOw9oVs9APpuiKrH
T+OGQTKnK+lKhUlJMEV6Iqt/6jt2ereLCzgls8B1fceG6disSDiz6jKn/1APsSIn
lcsQqyR8MwoaE5g1tKx8SGFL3xK3VvMrSMED/8g4bsGayfEOM7lKrOIrv8nCyXrI
NOdrW5SgmmmOl2GR63l0qdybFsqZ0BFmlWWlTRFKekRomeMB21yZXbc/qVhqILS4
1oYtUhSxFjBBbClKcAlHIzxNJeJaofALanq2VbKEbnBTpCm+0HhH8Xu+/ACtZew8
QliFrcoRsPM2zcy/nqPAN4QsvRFkykoDiDcId3cjwfAAEKWKIshR5jNZoSwS+fcK
cGk1hoYBhVY0WhQiZTSwNZsOOqaujNNhLgKZ5bebExqzAkIrEhozfSS0ZBtzjCs1
IMRchHOhzgpv3HWl0ZuwtxKu9MY1h+dOjbqxFai7IwOs3xC0PMN03GIWkcNL8UAC
rLNEFPW6sVwE1ROXcTy5Lde63WsmxipfJEtdWfEqrvxZ97yDKfRMGILApbY2CFuA
PkYLiQd+lFGwytNxYbqI7pJKOdlVZ5s/7kBhlCwSedZ91uK/3JijNotlNrt/7ata
saSk2kKjFpRGpUvArJRJGdVJszm5sBZ0PTWn94ZxunazICo15jhCENG++qdEJ6Zb
GHwMX8O7LWNXHUClYtRVTUR0mSFE2mwxLPFeeRJlIOkYFzqWfDCMwXTwl1BLbyLQ
Whk/JW9MNw+ewkrxPD4AaGZh9fcInOX2yYpJXNKEnHCNh08uWEosBWRDzpeOVGja
b3dBAAafhaFGEhx4WqVYOan5ZDw/WNqlTVIRdLWvDuQjHvRMLCoqgQ/E+04G6uS6
arNh3q8Bzija4mELayyhwosGGBsIAAAALAWCaQZEeQKbDCIhBh9Ba4E0J3asXFTA
wdKEMz/GipiPW86Jrqg+4vmz2NLeAAAAAEenEM+ZdQDjkb6Lwo+Abt3gvdgZE2Ny
1BE7wK+hxckt/i5b/R77s3BCf4vnMPTCrqJctCV8x2mX5MGipwP0g3tJ82KXtwhP
oxo9wOM9rg6+IyAAx8RrBmkGRHkjAAAEwJgkZIq1uQmDXbnBCbOdDnsF0yA6XftQ
UQ/PN8euSppqW2PFQAV3ZXOLpyBO8pzDV0yb1pFfI1BNx1EXp+JPVFJc0ZBd7sCo
eOlQp/eEoZsO67OcFOOEF3O2srNGKWt1xVZ46DBKPgvDeTai0IqSB6ZiY4BI1Rof
PxNdIORQk3NrMfFwI3c8aWy0XJSmoKQFJWmz42CDqMKDiGU7PQsdOcIMuPdaRHBV
L1gFm3S28VYfbatTHVdhSXYlPDobyINix3StigCu4fIAUMGkiMtJ/pocv9Ryd4HH
/BcUynzEDwIdmJtFuaFanNR02AJRLnIClWWZeeU19Ww53fUA6+dqzRHH+RRSMkm8
WWw3P7pphEfE+qCF15my7VESnYp3eFkrVleFxARhL6AdoOuYoCiPr5fGx/M9Fdl8
50nCHyjOajRJtXuSXLoBmnsPQcWjSrqLenS0/vJ+yKE6jix0M4OUsXHAjVrC0rcB
20NiNjl2D0ApXkTMGziA61CLBakM13eJ2TektMt4BTmIoEHJppY8eQNuHmmpuKSd
COAD1ZWJ0cqQsilqzMojmKykGct3GKFKcnDDCsF0dmEvakGsDyOe1rKOuyrEAI2L
1gd/e7dLEcxNxRenkcJZCGZct9qyfOjAyeBV6EFpBNmExia4dwqPCtnFliWI8zw3
QDCei5LBG9y12HBj4Rk9ZiWhmOsFixtPN6CaSHgxTFwTngkXzuaLqkUfNfesEckq
HeZESioCoqsuDyIi8yEArki3JwlAcKl+OxS0AZG7xtDPnLCujdcpBVYwnneAgzMn
+QHIaPJx/el23bpz1ll88mrNm6Iiw8fB6EA3aZF3qbnFjUkPrqC1YmS8lvWKWvtp
jAh66MkZyVMsLtclDaSAfseyluBcdGA/JEoSatVgRLhB/AJtfZplJJO5YwbHSxua
OUMJMYgEgUVruNiB+oXBdauU8WasAZg8Y+QCqlMQ6MgS5dxBHZZ8//jM8HAD8WUF
P/lXhHW0x3y1CNQl7SQqVUjIyfN6aEsT7Xx8dAJ3ONcHE/iEafASWbRdkAoGQvEN
yNq7bBO5yLeKWUWFdEWxr8DMc5x9mfez9XApsnHGCWlxlpIIcDW+nXCJz7V6/NVk
cXCAceOIIFoBcJC3UoaOvKZoOtHFnIqBCsRsAQSHGkKvqSQw6KlQtgFPHAE5B3WY
c6yPGkV331l+MbCdP+Gv9TSNBdJsb2UXztUI4NKH2KZD0jpp8ow5WCgpmUSr85WJ
L9Cy9FekYQsNrmig4YN7Imc4HwVKHBsGfJGk2Oyv+tKguMeaKiJZ3LQjefHITDh1
O2Bjc2lAr4G1E1FrByBre8i3/gIpKZk6vSI5Moy5LmpNG1QkKRMB8gUokVaqNghZ
hnc1OsEfHQBYrrEHy2AixfF/OZeA5BGKcLGIrVCLPjzAdlKDlbtWSYWwdtK65kzE
mfdhBrgYr8uKyaLObSN7e2fIEZA/Tdi8pkd8U9sYL/afkTcYJUjNlpcTMxA/zKg6
ttGqQneaQUE3RKu3qdwUxrQLTuWtmPLMa5nKg+E7DzewpjFXUlF56PVNUSoyoDiP
l8J+zFwLDSdHX9mZ5qM1k9SOunHDqL5V+VzJYITrJrTwQ4mYiSwiAjkAoNfHW/ZS
GRonYC/yjFWxppDkkws8HKbdm4ncr6jhGHKcrDYOdOJcnNaNqffg0un/l4Fm9n4J
yoKSFRdc3rktMaRVYkYyKsxQrDHrtmZhYMLox9t1djjZah5GvxE/eZguwpEGGBsI
AAAAMgWCaQZEeQUJAA0vAAKbBCIhBh9Ba4E0J3asXFTAwdKEMz/GipiPW86Jrqg+
4vmz2NLeAAAAAH8pEOM21AeRkG8kLTZCfV+wQVbxRLOQlx0LgGZKg3CXqIHnMrP/
zlnA6EWH6YkSehlaCBL1kz1jWOGKMU1gB6LzVFw7+Pw8IwIrcfvdmNYwfEEJx8Rr
BmkM2/kjAAAEwMBWWv1cxUbcJIAerc3Z5ay9iq8x+hH0s12jrTLwlYo7AEWwwMFO
nnwll1toQWY30OpBWOfC7hLLDuw3EpGnF6iTK+J3fxMLBsgxFLW4u+iMGrk2eQcz
0BKQGEtQK8Ek9XYNeUyubluNJnwHM5TIU7mcTjc9E+cxNowtUeIrzLUvvLNkLxd2
MzdE19Jm9MBthIUByLbHoyXKZjAxp9IXokPMPkp8kepijSGvR1cOGYF50PBw3nMa
wWlWRZw5I1pcyTaFdnh0RmWPMhEW2gd/1lxmg0xzN6NoultBahilpIZSZslsNYNM
6jp0oIQie0Yvefk0s3eJALwk3KSFq9g1fGFoKbd8ktib2dQks5ixZwzD86MFZDWR
AoWSJKwiO0pv3fg9BHghzwG9AFGcA3VpnSJAGtqtXBcFVZoYKsUOzWI1VsEeXcoF
uXtbUPg6UaeGqxZoLldh8IYuuxBGHsjJ3ThRmBIDX4cmzdGJszm5EJksajAOEZIr
V0YRCaqDOseg9CtIywYemai+QzYaavkC3/C2/gSjKeab95EgmvK1Ehsrsjkt+DA3
ffAuVqcpoHO4OBQM0XXDxHQKd9GDjiDCnNxxU7MAz6QeV5hn8igXE/pe5didb1OF
uoAA/oRqwOZFqVKUGjJcYbcQ8wcgn1A+oFZMPkCIiFtVMjwUK9vJbtkbEWEkIUsJ
eba6W+BpcvtXHwfLjCUqntC+rtmNEKosG5RBkgCiwZmFridQ4+tzcsyPuOtNEdCC
WMTHUgesBtYBoLOaFcauBqQKVBFzcMODPsIX39mSNtxWgLSM1upur8aRPwh9RLgj
JSWcBmRoMBijR0CyjFSPrnKseiM8VjJdmud6B+obn8M05SUxyKLKqAEiL4cDRfUe
Z0DMIkOWnkuPPDy11RsaBiuU++sWqsQcQnzBvkS+yHmi1VdySZaCwkYzNLNrDBmP
aHHHoVoz+lhnSgdM/5Oy3Yw7hBhgLPRKOHbHQxMWAmGF0xQ82IhJArKK4gJ7i/Ns
6LMVI+OrR2t2RZF6n5wua9zMEMDFA3AP0/HGu/uetPZkhyKPmGY+mlRI97opZwpp
cOCRHhZWstxraDekmwYmp+ZGt2oyrFOZ0raWJJIWF5s3D5K96NS1BzQFwZBirXLF
5CNEfGsQ5UOSycNNxqGU6YFXvXmcCBw0MnCPkJAdMeF/xUAitJZtqmo05ppTYTwu
Kuyn7RikOoMJzcbBrHaJB/eyD+U87vkKwgoXhgjG8ANo5HnHpQnDemN4AOBfvNtv
Fmp+48Kq9VOH+wZGDodo51hJ5jmAlyJLgUZE6Llybzo9doRUzbo/6LOKqpNasavO
TBeeizOFtKCBMpSxMTUO3Tyo3vIRJkkljcStKxmdXPsi3oWnNjGjx+fGSABmboc9
uZdR1kpLDQLGrtIwejRml8pYhWApHsBOknpTOCgzXgqduoZYHOdguOBmpGs+9rvJ
IMSoG3EKbdpItCi5nCUo+MaJj+qF30gbVgSRzWBwqUZbblkwfjxcm8UoCiYx1fme
77Q3MAu46QFFzeEfvYAM0RS1tNAw8mHBVrxUy2FpePZcQQQgTMeqxZQYLv/A1KVB
JkXSZAc2tdfteydcQl/VdPtbjqi+XKfQ/Z8AAB+1L8ZN9wG8dT3UXdBaGZj8OZoT
JhjE1vJ5kvu+P1GJgEmxy2P8KmhHXKNXWJborqg2wRBqPyPsTRwGRlhu6LMkl7MT
pHf6HSOAsG+W1KzzhPjQRqsnGn+zEBUpnbwiwpEGGBsIAAAAMgWCaQzb+QUJAA0v
AAKbBCIhBh9Ba4E0J3asXFTAwdKEMz/GipiPW86Jrqg+4vmz2NLeAAAAAHTeEGkO
XCrhUMNIvX5qs3If1NkLjpoppsxuzC4pkM0wGGvKKgRfabFhlMmh9lrqpQdXaV+D
FXIqbDbf10yT0zuaV4VS4qWWztNpbMPGJw9/EEUL
-----END PGP PRIVATE KEY BLOCK-----

]]></sourcecode></figure>

</section>
<section anchor="merged-certificate"><name>Merged Certificate</name>

<t>A peer that had received the original certificate and then the subsequent certificate
would have merged the two into this object:</t>

<figure><sourcecode type="application/pgp-keys" name="new-subkey-added.cert"><![CDATA[
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
-----END PGP PUBLIC KEY BLOCK-----

]]></sourcecode></figure>

<t>After
2025-11-11T17:33:45Z
(when the first subkey expires and is no longer usable),
the peer can prune the merged certificate,
which should bring it back to the certificate found in <xref target="new-subkey"/>.</t>

</section>
</section>
<section anchor="old-subkey-removed"><name>Old Subkey Removed</name>

<t>When the key and certificate are no longer useful, they can be removed.</t>

<section anchor="tsk-with-old-subkey-removed"><name>TSK With Old Subkey Removed</name>

<t><spanx style="verb">max_rd</spanx> time after the old rotating subkey expires (that is, any time after
2025-11-21T17:33:45Z,
the keyholder's device checks for all incoming messages and processes them.</t>

<t>Once they have all been received and processed, the keyholder's device destroys the expired rotating secret subkey, leaving this TSK.</t>

<figure><sourcecode type="application/pgp-keys" name="old-subkey-removed.key"><![CDATA[
-----BEGIN PGP PRIVATE KEY BLOCK-----

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
-----END PGP PRIVATE KEY BLOCK-----

]]></sourcecode></figure>

</section>
</section>
</section>
<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

</section>
<section numbered="false" anchor="document-history"><name>Document History</name>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA9S953LjWJMo+B9PgauOjS6tRIleVO30fEMrei9R5MRECwRA
EiIIkADoVNUT90F2I/ZZ9lHuk+zJPAaGpLr03dmIu/pMSSRwTJ486U0sFpM8
wzP173J+69mqc1x78i4pd9a61X3qykXd8YyZoSqe7sqKpclDR7Hcme4oU1OX
B7rq6J7c0I+upEynjr6LDHP6+qDhSpqtWsqKTKk5ysyLKfyNmE1mXc/XsV0y
ppI3Y/G4BK/Obef4XTasmS1JZIaUZKyd77LnbF0vGY8/xpOS4ugKPOFJe9tZ
zh17u/4us9GkpX4kn2rf5Zrl6Y6le7ESzCu52+nKcF3DtobHNVlNrTysSJLr
kXX+qZi2RT466q60Nr7L/05WeCu7tuM5+swlvx1X8Mt/SEtHWWn23vrTXntk
IPe7JMuW7nq69qdt/umRcd3vcuJWVm5lQ5LIThe2Q56Jkcdksl7yZelObtzJ
T4ZprmwHP6awKSmWoZtyQ1lYoW9tZ06AvNIdAlVLLho7w5SbxhQATWD8bJFV
4HPiPIrNZ/xAXymGSWC+nP/bzJh5C7ISl3xm3RGIhFZUJSty9KVuBlZTtc25
7gQ/x3WQZZiGtT3I89V0EZxlgc//G//+Tt+GpqjcyRNDn+vmSjnqwV1XHEPX
yLaj3+JsVpwcoXoXnGel/5tmzC2CY7q22RqOfqfaK2mnW1sdjoJhwhVD5yvy
kYdnfTUieGJYc/kJnoDP6XhXDGn+zdC92R2ZFb5SHHVBvlp43tr9fn8PT8JH
xk6/44/dwwf3U8feu/o9G+Me3nX0tR14V7U1nZzVnL7DET/p/8pxH1824d54
gdf9N+7ESGtlrp99Hy6Ms1I8sk4CC3EvvyP8PMWZ62Tok5FxZfSRKF2IyUXb
IrA1dMuTy5YW8+wY+Yf8it8TzJPJjHI51iIQwiE0soHvcjKeeIzFk7FEnGIm
vwXwQ5GCH/+LYakweMHRDW9lu+z0Gda83J18EX79FEvPonTkrUs37fwFLdlb
QvpifcVTF/oFYLoEJRUTIUlonXvvrnWVkkGgEeQzGMKhI9yHAJXMxBKJWDx9
CiixaLbqIbndBNhd3XEM6/wjLftg6HJLgTvoro2lfv6xvm3OCC1XFytD84In
P1zobLsy266cNwkxNrzFSpJisRghMq7nKKonScOF4cpks9sVnJ+mu6pDiJIr
e2SMq0s84epWUmQkuIqjkV+creptHR2xiBA3zoRU/w38itNxcvtdV5nDNf7m
btWFrLiULlxL3kLxZHtGGBXhO2Q5M91ydVmZKwQSnjy1vQWZznb0mGXvY5pO
rw5cNzKx5ynq0pVmjr2SN1vF8rYrmVCV9Ra/Jfg+2+IqCV+R9cPMMAkIEPnZ
m3dSzZMJNBTTtf1NabJH/tqu14SJEKqguLaFPNSwYlMY1APGyvjRrbR1YVfk
8pNnDHdB3l7p6oIgqrtyZZMcJQLWh+tCVzSyOkIGTe0uchi4jvCJiFXdyluX
/B8sgACOwNVSyA0kkJPgMX4AF5i+jFBWbcfR3bVtaa68J6gRWVn4xO8o3hBM
00xdkn6Ds3RsjSwG+JaUP3/owOmmehCWBoE2+WhvmGTbAKqdQjiHdyQrl/fK
0QUYfIZ4eD7yitBQx59SjE/RRzEIrD17D7jp2FMibRDOTpg/DmjPHWW9MFRy
lK5hEoqoMjDChTDmC48gKr6p6WvTPuJBkEUDbM6gr2qTzw7eXQgCxmpt6vAi
xS5c0xqBxYQpAAvBCQLJILTody49pSWIZmG4eYAcBEb4OhlvZ2gUmwgmOPQE
A+hJHvB0ejr89ihBYK9NheAqPMmw/1baLwzyp2vanod7M3XFMo8gndnkvhgu
fhpAZwIpSafcRIddBcGrmORNtgayfLzduD9yg8lqfQi6RyJ0rci5U+QXw1Ps
13EzABmZcm66BNfVLWAY/s2U6EGTUzN1hDrZokLgoeqEi2psPp2iH8AQDwWA
hy8EniCYacqW7QHektftHb09t5JOGKg8PeJSNPKpqzhHeb+w8ThUZY2khY3i
4nnB5TM8QirJtimJAmpEqJPhsusMJ/e7K+ZmwkkUDwhsfvtN7usoJwFeuXJT
seZb8oqE1wUIGkjKrnzVeh4Mr27pv3K7g7/3y73nWr9cgt8H1XyzKX6R2BOD
aue5WfJ/898sdlqtcrtEXyafyqGPpKtWfnxF789Vpzusddr55pVAVp+SEdCQ
s5rCARA4rB0EuUI0CkbdEMELxe7/838n0vKPH/+tXykmE4nHv/5if+QSD2ny
x36hW3Q2GzCT/kkAeZSU9VpXHDxfcn7kOAyPINAtcBZ3QeR8QmgdIGL/+78D
ZP7ju/wvU3WdSP8r+wA2HPqQwyz0IcLs9JOTlykQz3x0ZhoBzdDnEUiH15sf
h/7mcA98+C//IJKDLscSuX/8q4TYM9SdlWHZpj0/EkouBOsg/bkiwrr8Dpfo
KvQpUZiAG5PzC7D2EGfpElGDUFTgLN9cXSdnNqCkR07E7xJwFeEMHzO5+F9/
XYMagFc9JFzJGqUvW2CaLsEUb6+T+2ZvvbmNxChAJ0Gyd/EFgjpbwKTpEa8T
uQdEfyGs4ZaSQ4Xw1YMeFFDwZhkf5DrL+DsRW8l1jIwPowvKQVmD7dBZFHmt
686lLdjkXSAdBL8pWpO3CRVUyNDqlqgeAeo2Q1mVYGZkZrgoDLQ4JYMDjqED
JSBnd4GrB86PaOu/cm4BieD03JIn5wZzFwkFIxq2hZQpNIcMkg9wtBCXtafv
ZEiy3S2BIxwK3NCzwgIANR/8gBDGtWOsgMwCgUPGf6WG5qe0AIDsbqf4EOXU
QRmEC3QnL9MNNTjOoGgBLwOsGYNYEEww9bnhkWWQoRSVcHDcLcpigkLL8K1j
KGZApgKkYg+GpnUpD4psfBjEXuQooIr47IQKbFSaIrwH1WZfaAsMdiszoTjy
7p6QP8JN8Ssq0p68CKDcrkGhOYWh5+rmTAZmSHSMlU5B9wxyR0tw8vycbBGR
8LmVD2EG4XkEH1bA7nBqBAiIr4SNa7f8rtEVOOQjISAAxrOrRgC8ghNyjRVo
8TDMFairMq6Czf2t9Zy/hrtNyAJuAgQeejkJ1InWhML5ak3OlRABChpAu6C0
GbqPmh290OLO03uKWoG41mBEIvvXELrH0GshKkDZPQqPFlwO0PYp/gt0JDh1
JPhHpAGCOgBUosTqAFkgf3ik7gKoRQQniWJ4DjEBJr7MZVhT+8BJIBXIyDDk
ioL85BGgMkLT1eFarIgY6LIdMInHXq22FgORwEIff3eGIg4QWfBeJ0yZ/Lu2
YcMGCof4Hp0caKrLrwH84ZNShEB4j2Ke34FSH1crnfAB9dKuEROOayaRwoX2
RyPX0F6jNKwrRAvl56If4DjnAfLr8XUBwMT8FEh93TSQmpaY6BmkiviiY691
QVKEROuPAwdqc8QXkJO3VkD+lJUZCJBcvIWdoUBqzFAgRRGefI/7o1KkhpLQ
GYGUnTuhmC4RKcl5ELjYUw90hBP4nqNxqHOGJVY4OwEHIYLD2eozQFuHyq4u
k7gpP2ZSOuj05PW/mwm0EYfqWowiCLiS3wEjUSRE0DOlncDiqsK0OWR16vHq
/6Bcl8DOuaVCapiHb7lojvTmzOHSwxI05BQjp0SrhMO2CcaQe21RAFM1I0DW
QCh7sglnIqpjxFBimvYe2cfp8uB8YUb/oTmM8R0wsWu7Xsy3e1gzoh/iZSPL
AaDVgGTYW1OjZhVN9vXCz00qMlpUlDMKnkN2tSMTnphb8GoMAD7kMD12u0dE
XJeJ/gymfligZqBZDYUe8icq4BaVs0xC5VGwIyiwNzRvcSsviHKOapSlHm+B
IKIqQR5DGkret0B22ZHN3iKFBIZnk0tjUclhoYNyr8P4lk7+D+xRum//ZOoz
njY7LTz3EB+ykaLrDpCkHRiT2Vlv8eaiJcvf1i0lyAADguVhqUhgODsQwiEI
ayJ7/tA1Lpl6gS8Jt6S6OsEqIrKaW00P2Z2otjvT94RwfpAdh3gYyhtMOGPb
IXPAhol0DcYKxXCoLQPuUIhNzBxFyM54pEU8X8RFsnoCDHvrgFWDnnIYyyLr
BsV3DVeBQf1kUeQh8v52TSmzvxmyNwJJN2IrwQMjdyC2tkG2AaTeGaou2Ahy
QsIhtT2gl78khS2HECR1aR6pPWahK2vyO0pWR1zY3FKoRRNQHznwuVUgz2aC
bYRLhSXBgDYP2Bk6XILzByIOu6D5e7aQ33xGEBLbyFoQ+8H0ASKiErBcAEO1
6EGdUONTKfMUJtSGwoBySr0QMwOr4RMLXcm1CcxBPuRy+Jqgzy06Uyxm7iM7
D/M15GJ48kTCgKOcbU2fn7FxmOGWKSnidsa8haMrXgzMgSZXUdq2oDHu0VIX
jm0ZH5R6wsXXtV+BhMBRSzsVqBnqERIYZlfAgG4DV4tyPdj1pQUF5AvDkcFM
wbAYThin8UUjilaEAQK5o3bOwBaAMay2pmesTSolMoSlw6K4ACIOSOanuwU+
imI+OaU1HBUeOs5vAcZRFfwXNgEC8FQ/2mAWX8B4hke1IsKM5ltqbcdDKpDj
Rb4MDIN8TAkpox8r0GGD1APdCoHN0utmBeX2BHxNeXPkWiCoCAsI3aLwy8lT
RQhOQUYrX3BRqEhG6JpPznw6Bn+g5QH9mHAUoaXiBMmoTeMbYA3hcdQjIkYD
PQAk4ZWuU53m6uRuX6EUQNG/RKSimOFr2I6+NhUVzYaU53FDbkjo9mG7AjZJ
WSTZB9UHKT8lqHTewn0LaPXNveYK3By1HMCVGSHQ9FCIXHVRaSZf882Rp1Cg
ASAANSXEwES0KGw9ZnwBDcTVKSZT268bgu4dga9JyIIG6IAyIWzG9Xfz6V6A
4tiORm3LKGGwy0EltrZtxZjU9pkBCLghYXaICSryVZwYBHKBOq5KVAHHsF3q
tKBwt1V1y/Cbre+W2s6R5l+0nQ9DIiG5bgS1mGBFeItpqAZcaFiZYcVcovTQ
O3UqYH5nFJT7u+ApU58r6tE32YDTxDuDOT6YwWNHROk1eAZw45fwBvAFmJ/q
uexUECuRDfoKLZvKQVsOIUgcugRq07N0hBEMii3UEBjZRHghnG8Q4MCdlBdb
wvligEPU04dy9Mzw78vJUoDsgAxNZvof//3/JG+a6KO98k/t7JigvHBnP8W9
iOUFic/s1152mYldcV1bNRTvkoWIyh9AERHy9KKDl46cuQl2Jd109T1sEh7l
/lkOR2R7a92z0NKACIi4ibwfuJMDkmFY3J0aKAW5UTgLCwpRN46gbmgakZlA
KvwEzjDYyZuEzHpMZBUA+abfze9uueuJDq2712dsXwjlwJvKFNg3GGfJs3Pd
Oy/2RM0RMuqkurtdoRBPgcqkdA9eBLMIgoliBBgZLJ3cbA5iGO1NkLK3iG+Y
gi7qEeeKF0Fogp5EKuey3gideWeMoUT9JgySnnpEEfwbzzrDHEHlompkyDFG
0eULKiM3a00Jmi+ZtxsihMipArfwrZNudFewrADV9p1sXG4UkttnBlAA2gBP
ImBPQa5P7olN2dfK1c2d7lt20CTkEeJC5Fzg4GQjHtXcdX8M8oBjuEtZ2yLO
7AyXkalrboKjjI9BGcy8AF1PWeoy8m4CM8+xFdBudeCGFBOYNYccN8xI9RQi
1sGOTsiUsFkG6Xp4AIrCQDdNvMMw2aVADnJNXIrhoZgEQAhU4Ln/L8RafPgC
r2ORF4RmL1DCmYbeZucWDr/x7bpB16LhCmOBB5L/niChvQaTg0zFVubP52AL
bkUzXFREKHZZYIObkQu8+Dv/Dl0pymi+4RdNeJutjgYVNpCuhUFH7SjchSTk
OE5RhOWMiuFEhrdQnSLXhqM+t1X66iUBwu9ulMBPqWZvYzSKctYFBbfGJcoY
BKWYx6ioQlVYZpPxcF7NgMutBw0EIS7KsA4s04qhnbWuBT1kaMWgkiVKDDgD
Pw+ChwyEgYADcYQ2ueuGhRwu6O8/8RmEJxcsgGzaQMJGGBXTJfE+AuB42ASA
TZjHGDqKG81s4CFXftAGCLIpsERf1gXKSpYGK2txYoS+PmGZZj5GgvxCjQNe
KzBfUR0iOVL56JariVSCAnUPRn7aKuRKe7oOqw8FQoBL3F4bFH+EaoH0HK1J
lGY5qH5Y+tz2qPhARBlyJNS1zgMvYOn/47//X4FjuaWYRFimyyNSqIiJGijc
VYja5Ye3BitlgEQTIG0dpvsNgDkGxFuVUFwAlM/8wyyHGiRCxwJ6sD+6Foyy
OKN6wAAe5clrQiy8qN3CP57pkSs25A+i21GFeE84CiHNaxYkc0HBYVReoC2F
NrAUfqvZ4QYXC86diFHrU4IU4uMRNkblG3qnFXrVYIe4SB9Yt34wEeqcTAVc
2dQuhTKQZzg6alT7MOuUfgtGackDEZAFcVGXNG1muAfmqlHE9PkUeiYwoA21
cNhtVrCjNezKY3oPkBJAJCcYH0O1G+Cq7NkAois8FFKulcgNAiDMTGXu0kAd
Jqv6JkB6UalfjF7QHz/ooDG6eGShf/1FgPDjO43A/ONi/JoPmau/pP/8z/+U
FcXdzaW72Fd/7qSfcv5O7jIHObrwy1oyk0k8XsuXfn5KN1+eKHZDZiI/hTu5
RMCrMnpmzOVvcJQ3AKdb4J1ESiLfX/OZfsrFO7lC7g6oaITxo3v+W6sZa5Rb
sYds7ub1ZLE/6UylO/544CyINE9lt+hc8FL5Tu7bHr1YX5mp8jcz0WnQgt6/
Ji/Jv38VeL9LcMpoOggEW7NgBcemjJMGceFk6J8+eZDcE3wWromF0gU1sQCB
1LamTi8C0f01orKQG8Ne2ymmoYGa+A0FDxVspcgIA2juMWDiN9cw09ICOyQh
o28r5fCno73dSei4QeqxJVKH5fEJgNiiheVtZVjwKDX+mvoMrLweUbv8sW+l
sLJEuDG4ZYCSOPzs6LB3Uj76kfzWvkm8Ib2ATYCOeiDyMFiqPX9yZa8cafQv
WkotjdlAfUD4IDqdgOyzAOQQAuWpdYIDAOZNxGVNObryt1w2HY/HgcxD4Cyz
eYklkCcz7MF0Khl47k4aMNs1Oq1A5I6Rf8gMjvbXX5xeUeHapAKmIQ4LDDoQ
MifPt4aGcb5UQ/V3jmvgxyXVuDbEh/XBHjTFgQY/HDQ49wmbj7kRm9uPAo47
zsb4oRLwbqlocXZBMgbYEQGfYtYZLz4VYCiAVKJx2asYC7IHMHEsdxmcMBAi
oOjz0FHFccBrj1oBjVm4cPYoQPvu7xNcABHUVNYUBtKFQahn3wBBNYq+dCP0
rxh/NUZfDW0C5N0tdeDRAwU5xwax1FSO8PeZu8yGoebILvIh9MoxPiT/+O0M
c0I2TAacYhhWKEKbiJeG63F3QcCK6BoHzjzRKki4zRVjN1fBiD+2hm/0WUzT
IYxVzpKrITj3rbymL6AmL/gvY1jytyBLlpMP17c+sUKKMkSfgeBAMO1AuOii
MyfDM/u+PHwgfkjMboFygXJGgBuWD3SyVUi0CLwVXsk3IixN0Uc8vKZPCvnh
OwPskc5JvzVcd4s2HIhXJvhC0O1b8A9wDbCBZjqVN77Lg3KtW9ol6cdrEdKQ
L+dLsmqsiWLvbonGS57MlwexZCZ70ykWZIjyLJS+g+V0rzPxjdyLf9BhrCCh
9zeOTl1yspxTi6NljPHc6SbSv3C2J/w3csqpzHU06DDNYg5rsRLmZ4m0wvVG
jSXSf/11Hi/Oygv/LG7k/ktwYwXUC9krc4YWTpGF+42Y6Rj0seBnoIq7X8ah
T06ZCElXXEr6/9kpgzKNCjvs46zQ9l953H97zMg4FTfyMdlTOXDKgWOAr7/7
7PDbNCxmcNHiDzkiW3yGMl9GD2AXIUXE+NAvswXCTpOPqZxsqx69AABsUDSA
696dhiwJd0sgoEV35qgvMYaPngMTslfUiF0MEk9Uagb0FlsX4yKVoCEkwmFp
oszcIYwYTFYgjczRLkq2+EzVW64pUiGBMEWOZPQDwhD5ExhRtbcJL4akMxAH
GA7NHBouyuyd31EQuAoPfCV/CyE2DXb3Y6ZhofS9JvU/XXgtGX6NSMAXI1J5
Mja1mYHwHUz44qGkVCICh4Sw/AVt71wuFNKo60FGlJC5CEXS13IoOePHD0VN
crHsr7+kqa4qVJIECwo8Tv1/CtivbQgONSn2xCBMnwzp6Bg8xf2sINpAFB55
7ESth/Qy6nM7osIeMSFciGGXpC46D9Frq1Ab3plIgbAJggX4cmMHc/Udwc+h
uNJnb0IAhmmi6gX68Gpt+jYTZQ1/sYAqkaUGSdsEzu5Z54NU5VGJYK2jERzU
83ya3iCdLPcXQSR/I6hzLQW9JWQOQBoyK/UKoWLqI0L02DHenvA2slQeLhew
W5/oG/RSssPkZiuiZoHaETQSfb5gQGThhIW8odP9DhqSMYM4dXr84IP0/RLB
TEfuumGsPeB0uGTWGZ5qK9QvBGFMc4sGgYJtTswXACt6gihopQhoLR0iHBhR
PQUmBV3J1xdlqlyxnE/gJYSundUnqUEhYmUg91JDkxr6AB0M2AJlGekTgLrs
c6whMDTBEYPUKkOoVeoukQoTLInmdxAgMkmiAt9ftJMVjgEN91YWOiRXQj5d
jfSNsgtMFlRczI6kGAEnD1mB1nY1BV/WTHBSeNjXj4dI+WYKYS9sXjiAoLYf
ZsR3kvhOEDGqXJKPjdV2FYgHgqViVoHwD2IyB1pnP4kvPdGKb6GeheMJ195+
EQxDB4cgXEEgt9RLwgPZo6p1mMYE7RRBHAgA58QG4r+xUCAHZBZ4uGYFGMwt
XWQQjt4JpMnrYeDehhaFRpMQ4Nl3UcBDtGwU8JJI6mSRH4SQBqLc/lc5hLx1
hIBS6oen/jme1ELjKbjz3BdJAlSD3WIJAzQChjcW5aZYRw81DxpjQD62Ts5N
QoNMIDDId6j5A4JTBCIg6FoIJOmAmIACFAjHcHXPP28AMXnpZHp63sjVT8Lp
gQlAoZjj544CfWej310kIN1K5MqHbIcnVlNqt1c0jbFKD9P7aW6/DmOhPeyz
96n5lwbDBhJXMDEYvCI8YV9kNwTSr6f6QtmBdSjKu7nD3xBpL0Dm/bSfoIwO
jwZ4YUuxFGrfksJMibKjC7lbvttqepQCiAS88lw0Hs9/xyhGALEwa0GNDxye
jUKpSECCvJWnikuN1EgI2VYxLiGcl8O/CYqczMyHSV6stATEw99KInJV3G9/
55ivgTedL4qvn7nyQFmT9srxVlg0QXiiYuUR0MNgwezn7Jt4OL9xfZPX0vjx
W1AmkqQytSdiwCJETfioFFOVNaKDb8jnZDcEOMQrYblmD09p7owhxHmX8WC/
JAQLUaJjSpfiK1Fmi8j67gUVWuIiHHVuXtqIf84hmyG1BKO58I2u5E/y9Btl
8ReLUWCgFAMnXCp4Geguey+kZpMvVms5uEi6olufQzB54FQMgCBosOuCto+4
nHh8iMfiCfLfYTz+Hf87uaUvT405FDUwFMIDU8nYFOPWWeAUkzPIsbRtj2lA
WJlELJujN1GEYuxEgE9SG3kAMNI3RrdvQx9Tovs2J39Sq8u36zfUKQymXhB0
h+sbACKTZ6+hohYz1UBCg4Hc8Y7SC3FDthZFJGCFOkaZcFXsBEn4s+xQcUnU
CAwrpdJ57F/lxpuE5XSWyA0vnTRowzJkAxBMY+b5ky0AiGBvgdTfOzG1qbje
n5xk/0lPXqzhW+NWdqfu9T+7FP41u+1sOdT/EszlYN8X2NXxDdFiAzAyQRha
BSomHHvs7nBWTba35DGaV1HTzhXuWT9glZ4/fdz4k9/qb3TTrbeAHPKY5QYb
ivQnlOCNPI4yvxxMwj414gXeZZt6a7zxiF9/ChgOs2v8OiXCL+fSFFj4mpGJ
PVT5gii5VDIwBpsxtMwbcnDZNH0ImDU68vxVXvsIwa4HhUX3jR+7v7egKkmI
Bj276+Dh8sosLBQpfNZ8mGCFg9NhAuH2wgATA8FoqfOjY7jauh2y+8KW+ktH
RpGVT+GTwbfhW2gLBGwXz9INYjVLUolYMMlwdOEWeiEJ8/3zgGP86RIOpTjf
WgzlJPnc6n8JnYQIwDYlpmJ5jYZDJBmBIKBSgK6HkpwlnwzHURLSBAKLUTDl
FG428AJMnOXziFDEdvADml3KEj8Xjq7TkM6YS0vUqWAzmxoBLxkuE2eDMKHA
2yv79DX+VioJLml8ie3e1Zk+QzlU7BffZgUwgua5N02HwnIDPCgE0xu1aQjF
nZdzeHhI51ALZ1eI2r//9O3f3wZ4zP4H/nkrp9SOpnz4VBQNS2RNpuHi0k/M
62QwJukQMiiG89fjG87/1FjKEF+Rrn6+FqY3sSkjVgTfnEFhH1w0y8QX5/s3
I9CUtpC4MbO3jkBaUeSGZm6H5YkTOeJUUKHAYJk7f/JL+idc0m8+IG/l4eWD
sk4OQpghBdQCHq43d+2+nQEMujpwBIgoRX+4fGqv8Q+iyAlKxILE9oKmTEFm
QPjkhLF727gd3pJV3LqK6eG+Bv52uDDAHcYBgvLWfRO+KR7L0XjD4L0gnaSh
1l8FCvn9jQdpK3IiG6Ms6Q3W+MYvcaC0lxhvl70sJrwN3mRaJo68IHbkXwT5
9EMRgxYQzqIUwL/qOb92Sy6eSuJlH6K0fPAi7IAVAjjvTaNzUnUFchd+/Phv
1Uap8gcZN5PLQnEmuo1BNZ+MZRLJW0nkm4SSkUS6/y23Wvz8GbLoQHwLJHbz
FCQImcoXk38yheubL/5IwXA2lLavQx+BGAjbDLPdW7bHP9ke/yR7vP6ORydE
WfkPOSrc+tPCJN9A5xEDEu0TZE321lm5NPw6s9jS58/RODYiOB8BvciTuD/5
5085IOngItiQEANDHvODDf/cJf9kQv5V5L3Avq7hK7ociAtttMgYnwmawSnp
05fkA/ItPNQkjySyUDN0CV5NwJk/AUf+JDjyDfZ2i0u/hdFu5Sa8MnXZnsVz
S/ff49+z6f+4Jv8ksv8BooK+Z+v7ZAnktWyavBD/j2v+CkXvP+Qz4pg/5K2P
TXDryePnye95jsnOLjBIANPIWEFKFziJ2xDuRn8Cp+fv4/rzd2BNtwya14KW
y4EBboNLu6bRiUAc3s6j0ZvM3HfgEY4LAcsN8T9CfZ4HsfygWKvd0dsLRlw5
nZAfMvJDWs7O5GxKfkjKD4/yQ1z+yWf6SZ7LyfBEZiY/ZEHug1+ScjYBH/7k
KyHPJch4ZIxsTs7ikMGfn7BSeCZNt+Nr5Qqajbjh5+/LN/lxXVz3lNB874GB
aevqAS0+QJ/efBuMb5UIxP4j3CW+CsoueJbQJeJ7J7FcGdxANGGbp6SL8mUw
Zai2yG+/yYEVyiVDgQpM9KhV2xGs24/WUKYQ6M1rTBnuFq8XE26AmoMJIBDh
fDp6KKT5YqTxZyHI4jsIOr5E1zi3DxYHY2IGp2sY6Xxhol+cH4KEyf/km+hX
n/7ge+Q/jHRHIwTDcgpfNJ/n5qvzyHyRcnClv/7u6QLZyhj2intxYZZPQem/
ErqrFz4Gi4m13npELvwpx+QY/p/4T/ivC//50oS78McnAfh3oe9/nvCb6Lg8
MlyA5PfLyyEP34k37mT+PpkSOTq+gOyQvgo89yej+jt/A6GtnNlBcCc4EvBh
ufoH57By8w/CJtmKIpHtgYP9/Qy/+XnmM7KKmwtDnGIGWU42TXQBCGjxAUQU
ePaRP89NcLDzY97QMdkrpys7s+7dZ08hPAU47yLfXsAUAdUoXp9FHApuWPjv
keF/D20rBP9Pt0aG/bXLcubbT2YgDItcygj0Pgeff2rnDsr/A577SeREPHOK
72DWJ5oTLuPu7o6tCZ875ZPw1TeIoFYc7Zo996vz/tJPFKMv/yBGo3b1C4T0
l8dkiSO/cb8TqlrMSXbRI6Sc1LH2OTzUHFVOQlmoOAGZe9S9bbMcC+b9u+gD
gjQNeB8kBv2gq1uPxcEERAoPnWzMYQvOTFoFlz9uoOmUJ1BjGJ7IAINENep0
wOwTImyuaRIiZqygtvJZqXnKaVmomRMulkVrUuoYa0U0eDYDrWLE1PIz2f5n
y8jIwqAPwlSklIhIz4PEBxrhH/IZRaAVTO8DfyBNCfBdXMJaeyd1AWAgwkJg
LWQZBGrqxQi4yS5YngHEKK3IkjSF1VrDQdmAgbfIwhoW1dg5GjC7BvcCh+wG
wuUNWzN1bY4CJRrBaCFflQV8EGk0T2RnYYtxaYU+CGHQsCYzWhlYBgkrBSB8
t359d+oOvpWEu+xvIn5+wdEHRhGCcGxqTMYlCqLlu2GjAWbUA0atAJ+7J5ls
DdZcRKvTHJM76h/AwAk6zOkWBFpFiQq6u2lwAtlEx+LWuGhQD8r3INXTlQfC
bIIFMcOxIX6NrXN5StcQpqFhXWVwmYtpA5Cb6xZ6EsHuo1vuljkOCZpweLEc
sqs9WUBMNW1IOhCwg/gYTTuXFhaoNOpbl2jdD9hg4g4KpcA88r/IoUMiIHCw
aiTZm4hPofUjabT+3rF5qCiqZDQIB1cmM0fzGWXxGqZsgjWQGpxwNtCdAigi
33CFJMai997uwisNvHsrU5ADCQuWPyLauy0iS5kadI3DPCGsPf3MBaWLos53
aqULKbqn0QehkEBZjoaRhIsx336C38Fl3AaQHFPCAtvFEwHraGCt7Fpf5Dlo
/GC2018MaGBaFs7mT/S7e+7efuN++0uD0UDC6CZovlcoThZpr4jOOA/rc7aC
z+yxeOR9nSKWxyqgqtjZgoIkHBERYTVYpm/rYIAKgww3AaDiz8NvaPK3jtVW
2GWmfR94MH7ogF2IuqVRflgxDaLpp1i4fTbDEvQ0NcC0WS4MC6gpYpLfOcHG
lSReueY03R1jdUHGScRjmnKSFMf9P5n4/8Zz+HhZHdGrJhDbCC1s2FXn9hVR
G+c0Ao9H0dKpJNyW/7WYjnNzYb9hU2C43JwXaGB9SoAxRkIFIUMSY+wojUMm
h5HPEE+vaFDeXdf81YjcSF6ZOFRd17TnhhqK9sZeMZBbESnihykdLKoxIAad
K4/P5QKNlT1VZJqyKdYiCbmHEy2wXGEZzjOxkULgE3vCVd9JBZFgcFL7U9FQ
csDMKXauJ61g3Fs/BBcZJi0XjCwPO6+Qb1fgjoI8ldPb44rEFcNhRa8wcYU1
+DmdVwT3MwYq4BhTwLFLJ6G5HS69Dww1g2YsB4pVWS51mpDx/D0wYR13wpIN
YB4lXCkB7sOZSEaJN50BP6dhbUN1C0VxpGDhYZ2eQtTDxIcmu/Ls2I66luBC
D1HmhDUEAi5KAVT88dsFMZVIYfbljILboMLC1QccxT5etOJSmnM5shNiR13b
xiR3WgmNMFg4EkR/FGxpfWBmZsX7wdExUKvHwFI1hssK6+GJKZZub12kLUwD
FAlR4A/GXAO6vrkDpZ0IShq2xotmQohBhKjxplBEoD3yKu2ivoUIQPdLudGi
TiIlDR7Ce2piKs2ZmvV3UgXLQiqgvNz6xJXOGM13x1oEfphruKuXYpjM1Rik
QoxLoZxo+KW3fBGHRzCxUEX2PMMn36pN1U2GA4w8IpcICYFDB+pNDMU+y5aG
pV2geSHsE8/MB4POvj6pmqdESyrhojH3g9FQYERv6PkjdIHIGKz8ARUlaF8K
/1z4QQm0eUP4UnGQJ3lQkWCgzKBHU5Uwkg/bot3cqKJtQpw9TQKT3+BKkLlp
1G9galyrSJEIBssLn/3bt+CyiWyKa4EYQ1oJQMFq/QIep9By2bLpPcQQCfJc
i13A73LeOl6QCEVGViQ/Utah2x0LGefQju6RVq+DOSFMFLIP0EqA9Wwgy9Ol
tXHFcqHSMCEtoryT4ufuTBVT4eHMoh64f999bQDKkWLBiNP8nBqUrDmDSpyK
E1GexgT7NWwJbiOh0djFpwQ+gNdQDtnbUinRcMUhyKx3AJtBqHehzIIKuX/M
QqJBLD7zG60dHPQEmrQambYjcCBv3UpQ/ReTcnQsR0XWwNWG4G1WsNw1EUk4
owjU1OBlnWkRTp8RBj5lZRCQEXb4AcD+5wZEMEKxXKJI6ix92udNuFYrDFIB
erJ2j3dFU/Vg3UvBpyNNB04j/c4wEsbbonYABEEwTB9iXUDYlSJ1WDXqFpMJ
z966mOfAIszY87Qe7842t6JQ12lam5jtQn2hl8/XFPLJRS2c8BB+yJTUsJ2X
W4PvYsI59fc/d+GXf9L//QxJOTfyjNcFClq2dC06tXibxttF7SD8rYDhmf78
ziy97G2sNcpUmcDjkZ+IWVjMjW+LZlMGFryew/X+hbd/EWi/n3kZQkZovp9M
nQ5fOITASQhIiv2cMa0I5f9bwKt7zTd1fgjxZlS5pcnkHq20yOHCTyQMVcI0
/g6uUdD+/CJoT+H7U8DX//mdQPZr8CXQJZfm2/COss6/wVReSOp0Vz/FqvhF
wRxmjSgrbCw2BFJAllMfhCz3GN18FSwXkC4Mlq8inbj/4ZF/yit3jk3Vdr9r
N0zA42ZKVIM5KXfl4TkHDY7B5f4ojEPyxTmkEWN8aStnPJ87v5xXP6AnE9GH
KZGhvuk/fjuvBIbLLlxOMDehIapo+YKhmEEbnDRl7oGL5jJXZm0RQ1XDpgqR
lO64vi/yqsgooFvQxrvB6gxMMkHco+o71nGK6smfFHjgbXEDBVNpL9w3l6A5
DowFod23aKpxFrjiP6BUiLaci0ohLtRCMwkKxVTToH0f2G5wJyxyy8WYVWGM
oOsP1dwPWLp8zTZayD8kt6Lo41yWeTDhUSR2MwGiRVu7+MXX1s7WYurNxUIP
qBeDAd0BGZSoiERoU+TFcW7oFs2s4x1jePkY7AgsRWqycv3TzwKEyfXL895K
M18dpL4gbiE52yyRIBKvwcE1u3NJfb6b61vEVHoNcjkjbBfvgu+w4GYMImFL
UDbfZo5Davs4rRRCXZAgXVrcAslVeZ3pLfxZGNq3BEx12q8u3CgIRU2ihwSa
czLXYATuSMEV4ag5a5bh9mbDiQqjF0zARP+mpfyCZAYvN7Ps2FuX32/aTjfQ
G9plqbaEeOjrkyLatFMR4pRislbAih/Eyxu+Cd3oXL0C394crD57riLqN6gc
uKaVP3lFBr++kLDkGOFWRtfSAgiaRY81YH5lSdG3f+MRvQsVYqQIGxW5g0L0
j99ODF4SLYZ4kVx80lfEt0eyOylyvhahFHQs6uK3HPqEvIMOPEP8vmzsAmTF
uxGYn3e8DRYUQr8aF8tPRqEzQYXsX5mIu1FwMuBf5EVsumxfSFIOri0/vgSY
X1ki1tVDKgwQ/Hy1zBNpHk8AxJXxMHgiJOZ0TKF2WoTp6ugc29nceYEqOl5K
AhFPt3xd0K8rwDc7Ba89JpRHaxVQFGY1pEUaPcNKHxVFMwjW3tq3M+DZs250
QJ4oM/erQweWgUn2vHUjNlnVvZiCRZ5dnYZSUCyseXRYTK6nufEg0aknI1Lv
IgwFxoYDWF9Fm0umzaFrH7/FCwpl0KVATAq5eputQU6CNn3z6y3gK7rGU3lo
lY9QU+9ptKUiS80XTQskWyS4h9nIheLRwtkljFLc5nGJAF0ziaAhTNrdkLGz
LIJLRJXwH7+xTcR8uyg1ms8UFYQOzPE/bX7u+rW0iTBB6Tm1QHPDTaBTIXQW
oSUbmKnF8EQfSW42E+1diHBlcd8mt+0GulausZEJmZQxBVE81rfjMwGetg1z
z8bbIMIaTDwVzJ/JdUGMov2Eeed0lvDMbyx5G810uF32CBMeXL94FhFM5hjP
QGsrQpPJYAtoXEr4fgp8clEM5fEqfApxn38Jj0JmTenvMWjIrZL0kuPlCS6O
tSY09bPLYkHwrBGIo3NybYdKpSgzHeuF4VU2AgbH0FgC3/zRqP2fhfX4kV2Y
UwnxIHg6qNfg0rknTizetZk4JdodMwrG1xTqCEcLk+KSUEzhPUKh+aSnuAuq
HvqkChvjxXzmzSPlxQhFMQItoYRSnQtiJlkGtadHS1Awzxy9W0ys4qNEW8ve
SqKEOotc5JfRIEfMXDesxJ5v9ofYtBhgthdMVqTFYUOtwjyH7AIuyq1E5H0y
OiIneY6clkfrsegXWuYKUTdgAz9D32zIpBUFKYgwBn1JFrztTQA8kQax3Evm
X2XfjiuxyyroME9gEEc4YEfYgCOUaqy7CJ/99m/PIwLcEzYHeqIwtbvh0DMf
eyLymM9rfL7PRoy41DjrpWEGtE8U9V36mMm6dEKQIxB007aXjNUi278V/I0w
LcYbYrXSnQ8N8IQEplLETT9ByMBCpelRHDiWhAlYzs/x+lvarlHQt/O4dIo3
JwjD7jZiHc0JDGEADsHtFeG0HcGVdCL8s5Y4BPF13lbBRzm0m2BLC4P1Pwcx
xothMx7lhIswDLmTCqx3OKFgSmBxodOiVQ+gY4ckhOmpfha95VP0rgm3ZuBk
DJef8W10PqHhs0rakiCsiksbaOgBCi2AeLJHMjq/W4QMlgNksAL8j9ANmYXz
BG9QoGUVqMYx7IwcOG70bCHMwYGL+w47ZMjhhfprYy+NABWG8xE2JD6BGBFF
+yFFccoQQLLXDVzQFJusQ7MclMhhFn5zT2QpiZlwwGQWqOfgPxcgM/K3bqMM
dUV4BbxBqIZtJlrokwb0CNECyQRvtMi2jczfv0kSrQ21tfYOuRUcd7HyM5+U
8wrKob8Ksv9pEi39HQ6H5AHdCZaa+uRVqor4WBqliv4+A9HXrBaSb2sg3NG6
lbWtwyEXaCnDwx5oJxUfPgj2c5NvLYz15JYYX6kA16lhb13RAlfzSTyrDLVC
eyzUJ2FLDUj0rLiZAdY833fHH/SlDv+5q7+kk4+PaLt2FJHhJyJJ/gGJESii
+BrTz0g5VSpk0W9KouIdtI33geAzC3ac0jl7+PefFwzlp59fevJzZwLbOgGy
EMNw6+0TOzw1549PPjn/JH4joTQRueVnBrk01GeDj6V+EGn5AV9e+eng55dB
Vy79BlFV2CVJLkK9fk2nkRMErYAuAaYGWgkQXDzbFZCGcEFJKmyxiuaw/Pkm
02G6ctnmwkymHg1vCtoqQK/gJYLDjQGhd5ayplUNgqKIYmlh4Z5Q0JlhBvzm
obDBM3pUtOAjz5Kl95o12Ape7+BdPlObcIjdpeUWyv5QavVs22kqqdOPmJ5w
tp5rMJiJOXVAKcJkXBompPiFtoYn0pAvBYH55FRu4WUqqLqAMZ4XRN8QLw4G
fWBVjvy5flj0QG5Z7Y8w5QgQ3nNyeFixxGaaQXnOcC5EXjAYMPbCY67OFENm
80C08Hb6TsAo+Z0JsXoJEVlZZjcekfIpMolGbb6afdpEhemBki8HBxiK3xaO
ySjR2fieosNewGqoNwXV5cBPEjh5ZOMBSZtyp5NqkyhVgqko2nc9avyilwA2
7RPfmosfDBVnjqPnXRd6CWCbtqsKyy/DgE/1eCXatemrNVkXeBPQ9b2GTx0F
TU1Eu1/oys4gwgUXQ46E0LjUXLgUEel8Ub+7eARcmBFNH7e8697Vya29EoXb
GfmJcPy9gjVk7SjeYo9yjRb5hKVGDJeG5+rm7JaXqhftZZgpGW1JLCHJWeka
jdlCuJHFt+DgsKQ3dmQOKC6sgzMtH4h9YUT3O7jMvmhtQE/cSvBPHPDWJ5KB
yKaARGfPiIYKdlyiLqBG8I0GQVrwAY+3uz47SrDMFnUmsV1TSTcELd420bZ8
O6HKWBXhA7gfQZXR9hwErm+3ObEzBSzQVDhkFewvhWtFA4+/Y5BTjNar3Ll3
QnnGTyQstL+iHaV85haNeTNopyperhvLWVsYashDlzEX6dQj5pvCwEUJREwI
5LSLLPOPngm0+46uAbZwdPcGF37HbqGPLnACtmqbLu97/ONHyd4Ct+oLT6uo
AIk6LNkYjYblxwCoAZ4LgpehL67F+QdWcAIk4erFSD6JAExxHHsf8paL/kbM
Rul360amhBYGxHt9Lxqds+S8kHzCn2ZkOggpru+gaeFsI1pkFSg1O0yxwiqY
NLTCQN+bX4MfVDrHNk1KW6FSszU3Iw210AKr8JaNLvZnZndobtpTMCyDfnHn
p7boPiR84GD+TxAu/PqyoAPGi89sFtRttieo6HxkN3UF1kFmnyZXJEY7t0cK
3OZ5qVJ+WhdWJsLSbXS6ClYTRgq+IkmsHVVKECehSS8gKvAi29/N6Wy+lvOF
cFKffY3EQP3wABiOc+ZdrMjtG6Bpvg7u8uytptIYchl6zODBY4oo5Q5BqZY1
c55yH01Ak+TisW/qZutjuBbs3xmyJ1JTIXJbZp8Ki3SRJGWsW7iHunPGZqtT
LZjofwEPM3TQXBvBAnh8LOq89eSjLvw1WsRFGJCoFUaQMcA66IhgFUBNZT6n
MGXz/e6yxDEsix7REtDiQ/3d9gylYqo3UKf7GTk+KA2zzG4W+2ywetci+h7d
7Gf2z98TwgE3L5wuWZKi+gY7vvOsjTJdYyb5tdSxdD62l8Ty5tqJHVlCysLx
BSrKYt7Q3Cbg6uuKKYIub8OuX5RG2GvUqUnpub8YDj3DO2OtpUCgr4Qq0ocM
sUGzFufF6BL1vQVRKSLvYfNvzEYILpnn1oOkakLtAm6LArQTahc1g9E4enFb
OReGdkDb9e1pK20GDhCBmJeUx9OZhNy5BFMwhAj6u2LYGvaZt4Itplc6z8xG
ig7z3AUFh5Mp1zaQYcIDv1H/jCtfnW2jfCUqMVMhivWLgc5HXNLXMRSJvOpe
YyUqxYUsB3wkMust643Oau6yjgIiHnd6RDmYV5uLxOVAc0mL+WsHTIynUT7K
2mA9YXh6Hrjkaat1glwYbgGXxQRvvt95BWM6MAfG0WlMht9mHAyRJu4B8zO0
YAsGl5I6bA1CBuKfokXc1YWKsUIkYblaeKP4XUJcCIcrUQ2UIAH2bPd8zZDW
pbBF0hdq1jxxlfa1MNZcXRCRyrqE+rEBcoG2BV52jChsV4TqgIR1dY3LkYRl
hK2BiCREb4IJsIgGe5wrUHgRUNuAxaKzAjIDkBVw6VuxJMY7IoCCCak+tdC5
SzbU45ylQXrUAE1rd0AYVrAS/oo8jdGGNKCJcyF0Td/KsyAr+vHjH91+uVEe
x7qdp84fpU7tLhG/S+cymfi94rwau7tkJp6+iz+kkika/hBW5ICkrCHW4CSw
MiIFEP7Po/2StF/arYzOK2wucs30MhOblfFIPAxl3dkGE3B4lg+cMi/2H0mD
JYji7fVovILoUIprJxxG0wmWACR3ZNEupqJDErzDK6aBUElpDYt6upjfSMWW
ASWyRbRCo0YLHT4IatDKBKGCBCo29NjxOsUupBFtcdNErmLBgOyFk0ZYodC0
JW+kFonmRGsKi1BDNc9ZcZe8G16KQYmEQYOLRU4gdmGNCsC8GgQscI+qP3ZG
BEr/WciA6O/C28TH/B5mRLhgRkRUSGG9NDyQVtxlZAb7ik8dGwpUBFdPS8tQ
j1BoV9DTxLMhvEYIqbwdPMsfQ+LDY8Oi4X8E3pi+FbsY94nd2COCBxUqTSCH
xzADPW8g8xvfBbRINNBFQgJE6UBIAsWFsCiyX968b/sLbp+VDELY/21YoC8I
+p0Cub0SJCHq3DkLUVzBGfszKwaBb0/RhuRLalGBnZM8ZslTRM7zPwEG4R1F
vPLVwLON5gKCkcx5FtPAT04WaRzMJ+o2YXFhnvNwDge42ETLU1Iry5ZF1J5k
d1NYrmjFdLi5LCyc5vBDQwke3S1eiaIMhsoAPUXnVJBmDZb6PniLeTsJHujj
UZGbhbMLDyTNqw9BHjunEtEJaUe0lAyrXnRCPwpE59TMo38430R/Q6xKgTQH
E2LJAWwt9xqpKNHjFQwew/xozBSkdip7KwJt2LzYXQptU5quIaXU6AII+QWV
5ZZ+yf7i5JKK+XuwMPoSCZesNGxlbFI+LMxeNPuH9lTUMSE8WNYz7zNjDI2m
tgmaOMiVIZCS7K3DYy9hkf4+KA6yqgoGDDIzafUAekgS2uegEfGZa8TsSlO8
R+pJ6PP0jA9J3NyAxxsTpiIZl3yOa3woWIIMEk1pAi4AFw7TXwZmrDjU/BUg
DUE/C6PJgrCyUDJWTIYuKDQMisxBl40SWOc1K7ckjEwgbZFXrDDesHIRgM+g
HZG7waL2Q/hEMFdi3diJFNUedrGu9mM889dfRMWDMAKP6qisWTgG6sYwFSSI
eogWVJ8Uy6KBgQy/g6wZX0SFwPVxzs9gJgfD1FcarmRZOsgUgK8REwR6PmhS
D/1/soVhcwBbyKXTWbIFuILkw95zrQifPsbjcfKp0HB//CCPkw/AO+0ulKV+
DUYsqDJk+3EDBD2xwIiQKNYmkXpFvzfeOgHgwJpl4r03rCUWdhBlXZBB2Es8
JTwi6e2FmbPeuHr3jfbBI6AsIDvCor7wZx76R7xd+1ZxmI4slGzu9S4Tf8Rj
S0IUSDgbu80Naidzub5WxFQ+z9YUljyEGhxGUwSED1HAY6Gba15TCArgcX4F
OMbZwRzvjiOG4wcOif9iKXcYQkzjVGjWPCfKDJ5C//HQQgHbDaRGxGiBBQUK
uR0BAtnHbPKvv/wwcwp7DAjXRHWDTzFRlE4I69sDLMgTmHooHsSVuzwVP4gL
YLyjtRCVNZhuyeI7xQHesGQmC0dFk21cHQvbw6vwPUQceuR69qGmCrl+YgK6
r51CZe1AMTskRvIbL4mT92hDljewOj+zPHtR+Ip9cM0MeGxtMHGfrYbq+AA0
HhzHCmIRFg9s/wQJHYxvC5mcoawaNziX2XsuTbej7EH07oJqs9CthslIoMwE
KscxWDIsJLfVv6sSr9nHWt2JQj149OjbFoFw3IyjbMn3WMcowB/YHIEwHjGH
cLWxZh8ed0JSDnh+nQY12IOFC+3e1OgQCaZF+KIjmoEvAt1QNhYYBX8nSKLv
T+FLxQKfuER0Y3af3kqIBQvCgegyacU0E1QZZlDVY1A6Jcjph3hSUKzO1mjg
G89fF6sVtlrcpLEAxkA+8QnCHY0N1WlNCfli5PIU/B87XYgtrq/eEUaJVW1o
40NaK0IX1WpOZSSM+4MMHkLFPfCRnWPyRN4iAiurvMOoIPMmAnj8BWDf3BUm
c0jQ2ZubMKIxMMOQx1v4H/1oND/pCM42mHbEAutYeVBPhNWBRYTKYmCJpmIT
eI7h2z3RQ1n5KCXkCA2oFX0dO4JyrP4kQ5eOzcIaeYiiuzVYnJYlEoiwdZy9
ZpuJLaFcHvOJBDNmM7+cMYt9kUSTYNO0sfu0Dw1RLJUCIrRQysh//BDqDiGp
BPcDoaKGFZvS3mlBWxyLB4WioGgrhLATEXQaREw6p6OzxqrBfEcWC+iyoE+4
OpQ+U8iEG9kLGWC7NomSQEkPAJ6J6kJ6qTa6fwDU5gTVlTnZgYDdYrmmu0PD
IgRow8lwfyvLwaN5YwbtRcnU8kD6GC94c+JnxpWzkp5C6A3ZxcPxHMyfxBSz
WylIfP2nfNRn+qPoMnVqSIjUPYokxdJ0k4tZgxf3RZu459v5M7c1aAAU6dlB
G6xC0RlJPIwBenosJoMmAcNWDYjSwYp45E0IruxiFXu06JH3rrgK7fLQlECD
No3iELAQAkSCERCsbKnmVmOIAEgwdUDWhsNfzzBQrgVWFW7S2hoaJtQiy4Fk
V74ZA/BJn21pdzNG4ciqMF1W0TCGI++ils+cEMAVbSYQYok8VlmTp8kHe/yg
rYOKhhbo12gyRbJsrz2ex2PZYLgwWYlTP8PRN8FgFcBlpKIemvANJZjLwL0Y
gPlX1O0dI7u7CnZIIhqPiUFZuDbAFVBcQ8525LZ0vXOIdDaDfi7mOTA8lnzo
u6ZBF+ORQ34yNy1PJUpRYgQM2rEZjsFrkJl2BSUAjmDWuGKGDsQNlLvQgRMI
nOACA/Buf5sss1GCDuyQfi0XF7YBXQIlvx8sF6aZy9lluW5+Y2e8c5Eu7OJo
z+g7jAAAckK6Mfx7y0tLrlHAgDVuIaZT96KF4ljfD7nA3oZ/zy0RYB+c4WSc
W97QNpTVK0x3WK+O4b3uWr/7xS+ZDezIOIBIy/VDnz9d25lSRYHi+7ywCAYQ
N+IYS8wroATDZU9eCPzQdxPBdwM/vzzMyYjJCyP+Tw5+Mk/q7+e5MOWvvhOZ
Eqrwnx7F388sYfu3r5VbCf/8Kz9bWnBF5Hw5aAsAanvL6OvWUlZTY46lD6jK
wPusBjkwpchRVOeBFy4hwh7EWWDuj037X6PchjI1CrI8gzMyRiT7zBc/fYch
cz8d/K5r4aA2XhGbm6UMWtcuVIA14N0X9VdpZ0s6ggeX8O5csi1yWADere8d
9ssuAZWCsvuMwn4LKl04ckCWMkEFc1B2JESdbny7ZgsM1iZnAVHh7qJY2lhU
ZQ5/F3E1YI0UlKfCBfUJ6UM7FZLqYFHwcC1nWXwtKmjQz8Ph5SCGbKeg0d/R
YDom5yrgD4dA4iD9himphf1KaJ50nCuKWgDQNaAkF09BROG5KUG70DCoXNhA
PxFc5E2fR/PA4iP1WkJ0N634Qj1PWLEG+sufyJkhoysnwB0abSJ2Rw6BJ9uc
FsGmITDynMh2oLLiH5EJov3JT+4Eq+RFEKULQsSRXQr0kxqoVXBDPu00QEta
h5FyEeruLdHgBsXzhxCSo4LxtFQ3N9CXRDvw1mYnqu5r4Fa6kTlCFShP3hyz
cAaKlwwg7qmvKjAeg0/kU79KxskUeDi8ZrIH0jmvkuOrzDODtgbQZQeRQTBZ
YP0dX1S4xPkD0sQp46dxZKD0Y1HhkzpmQeqHZ+YGTTf8KykQ77nQz3eYCkkF
ny37c6GA/h2UDIRwcFY8uIv+fUFG4FLC3woKvzDgmbGTl8f+r5jmzIypX5rx
s8n/SQkCf/6XESOGATTltIqHhPD7yUOGRTAOjUxBqhCUm+8kv4oHBtyd4/wi
YPgU/z8njaDFYPyud7pkUdSLXWbRJRsJoXtCCcMaNwTUOJroe8yq4fu2hpPJ
uHg/PWJl/W/RjjTQyEUxZxjqsqAWVf/enxCO67uIwY5F11BRjGiTGhT5EuF3
os5kqFAklGoxj2GOIQQC5K/RUw4rw5h+IVI4mT51gWJe1LcYuYzWelyw1jSi
an+Ix1JOFqWzwVdlE703gfrItHRQgGBeXPI/rUIFdJIzZMa/gIIsnn83eHk/
GyZCB39txK8NzudInfnwl+cJTvn5PBd/ArTv5/8H9MynVCyNwT4NXltB+Bk0
zhCud97Xg5qV/4brYxkoKF2tr1B2N48xv5gulrDzCZ52zXGZyqrgZkE/FiZP
gOzEbl0Ec8FKqJpbF2tZlRgp/A7heB7NsSDy6D4iv9xKvFgMMyWBJxUVJyNS
wpK9ijlalwkylIZjjbeBJ3RZqU1C5cGwQz1ZfBnd3v0wWIzzH6KoYKBnt6hu
ik+LuhEY6YO6FJUpEfxY0pXxgkjVHH9A9I7cna6mrKXTufPL4TuKlidEnYNo
Elu09YK9CkCF1BFdMq7qAFllTmk6QWSMO6YGiin8CLYVVN2GyFhgluK1gBn2
NqwOMo+44sxpHQrZXZF/GLLIBazVDmfV51Y0ePtMwi4WSeIdCDAyVM5gMwNh
fmNl13mTA5/K0hUlRe8DWldNJDXxevE0LIb6oRD2PDCRGsrZsNPtDCMXZhFK
HurfsLa9sN9ICjle8LLimfMkQfThDlrD7p1Et8xNjOfM+jg1C5VlgVfMw8cj
e6STwHVbhQ5BXE2GVDCm4/LQV164nKVVBEP/GbpTHZnlWrNKmuGiqKIW2YrV
IkOnikcLQwnjs0I7mkA+tWPJOmstQZChbUO/AcxzkvPgC+F+hfzl0osYUo38
eGbw5FeMZuXNYmhVVgVSegB+vFQrWb/Ok/holxDFg4QljxrRnWWEzOhsYeaR
+e354wTqwbX5TTLAssw7DGC4rs3MqMw+QN2BKx1LRm3XcwddWNyXEb6Qkrud
Q9k1dszUNUMBBVYQFaNjAvGg4TK10MVKi82A4vhtmZhFO1DQVYRD+XaRPevM
x4qAzS1KaTFHlz0MwdGQcYLl/4Imr2Cp2E9KpGGdI080zg7EqmOcOrfrsAR3
WCN4GViEI/UroVcCgwn97DeJh3uTD9e80RWFPE/65gH20UBxnu8EM/FQBepE
UUW9An6wrFAvDH4h7pzsL9KEJZBgiIepAWNgcV4srZ66sxlJCUi3yEWwqBaQ
E6RDvvsLegUETBVYIK8KrbNovI7fvRFBONV550wvELXhrwKIE403ptI/DXvE
sSSW9gb5UaqKtw8pe8DbLppook0F4ij0uaIehQOLlqWmvT6hh9H5Zp/cGkd2
9g8/Fk5Fdw1ig48suCdBIoVr+BINpQYMKdi6gKWBg4WRmTe4te0S4haOrD0Q
dzGKUE3lbBYzR2bshh2pqEwQDZg2deMtIlmoYXuzS1OOQ8VvAjUXeCgTthqD
ECgIsIFiITHCJgyM+SAigqNh1y6RovebPISwqJ0OWS+uSLeO9p4oUq2QHIYn
JePJTCyBnTcTD99Tqe/pzIQRiwuh0gSVXL8YqOAIAT91yJyK0mSN3dLAKphw
LMqsR9hBQGT1QxyC/naZB3YH6gXwEF4WEQkaGY21VQmbilmEe/xxxQjGHczH
1bH1mveivQef8hIrEcJPofxUa8uA0t3nQrNWlBvlsVxodooN/FqSDob9pPQm
Zb3v5snPXO3XX/rP2uZp2G5Z+/1Q7012N3bu1VBK2stwuH613rvtarLST38U
l/PxTHraz+HFj8K4vi4s+5n82i3lF+lazSg/VeMVZz7sWdrmoL60SoW43fvo
5pTGqvY4/bBX203pwZBupt1x3EuX6vtlEUbKP72+l9tmavsxv/fanfdR8ma5
eFrdeGt3+l7vGM+TTv2x9jCcuKvmyFOrUmKZPabH9Zk7GdbNbD79qs0erBsv
Nf3IGavcJKN0+7N1YtBMdZxC4yZZGqeeXh8OBSVRzs/Nd7stfbi9RmG1fOpX
l+9k/vK+ZfWO4+L42G2am9dGK6fd2I2yfqMkVso+U9M2H72+mZqVevncyOyY
eel+vN8oN638Y9t4mLQK5cd1of/c0Gf1p0lnm2xv27X64MMtpNWEN+6WNk5r
0E8+1jcbq3N4XdcGdemls6odFsXEe+Yl3yAfp/Pbeu6jrKSM1aJ0eHbS9U6/
m9P7Rma+X863uUKrV5+V8o/Lwlwff/Q+pEOm3qpnWot7bZS7H3Wa2ket/PBQ
yzWz2muyXYjvstv8Szyf1SvHm2Zxa+wOL/dKqV+9fxyMEl7pSRrZars13vQe
MvVlZbAup/sv6nj3UignjE72tVCz3p/yq/vF4GNfzvbn5n667mnH1Eipz8bu
y3bTlHrz/nozWWwbq20it1OM93j9qdpf5Muldn27WxU8bW4VCef4ePKmnW4l
/aEqh0xJuSnry3z7ubGQlKJ5mLwP8pV1Xl0bRvypbJZ7tfX4oIwUN1tMztz2
YbVwF5kH7f45vo4P8nmj46xemo5WLGaXa6nY3m76Ri/3ni/Gb+691aSvp8Yv
RtYsGO2q+fLqqfZzsVOspt9HRivfKsTT7nCa2H7cpMpevr70pHKxVM+stsda
dVEsFHqtRqFRe3Raxe17fVbr5deTRK26yW06ZvIp0Z6p2tPMfe49ulOrMekf
jWVWylQKrVrHVe2b3sPrej0/HPVFY7Aqrw/12b7ozYrZcc12t1rmaVDqTFof
xZfei1F6Vvb9ZSbXqNWkQW5c6rc3jwNH24wft81Der5JpurH3Wy1VEztoexO
80qnMe322vOu0l/Xh52H0WPvaVXRis10Yyl10ouO/TKpmt4m013aN/cf456h
Lh+Wjp1Z77pkrpfFYVve3j/VzMmobfcfZ530sFbzJvtV7X3flzLjdrz1Unwo
HitlpXAcdKuL8aSk1esP2vtNuWGpT54bT6qdh+qqlRs9l7rkvjTNF2Nyv0zE
G+9VKWN3bt5Hrey4MHGWzU73xZrXB61COlVe12tFfTxwn9TkpthuZNotr7lr
D57cnbt91pz7UcnLt4eSM6olXzv7R/vFfcx311uj4VSHN52n3rBhNW7MxuLZ
rLfKL9naxrvPvntJIro2ix9z080VEjNVf5KyhPQOSsZH9r1h3SfyXXdQs0zV
7W2O/VxrbyvlzDzhNQ65wVOlmTo0Ui+7ljNolUv3uXl66j4p0nFW7rQezIbT
qTm7nFU8vjq1dkdzRpnBfLVawfn3sykzvtGO04q7mcQLlZU5GpnDfqWhL/s2
0XtahWTiOHmdqvebl8Wm1hykE/bYe14MDpX3QmFaNBtq3qzWPg7tul5X7Fm+
qVib5Mu0UZ5ahaG0Lq5u4tVFNfe6vbnPF72Jvs/1TKPiqHbf7baSH+rx3tp0
8+10z931K8vj0i4ZJbWmpdT3/Syfl8qNUaPmLvqZ9/bEHuwHNzO1oT4tEwt7
XFi8jOOjRc+YDAf79sTtdDbK9r3dXjTnjUlmqk/Lh82HlF/WnPLC/pgNBvFJ
wft4L7qJWquvLqqdxcd8vUtVR2Z8st17h8b2sTVOLG60zvt0c6goxkNt33Gl
1KEY77ba8dRTbbRU283cc77oNNvlSneUdV/25US/86oOj5mmpmdTI3d1MNaz
etnTRrPyxtkdJtLjw7HUmPVbT7Vmfj0dJ4uVbb67HDeNnnZjVp72R699GE83
tYd1vdHRzJdJxr1/WBYWZnE/0LXJo5TYNu5TdeO9bXtm2/HuH4gk7yqDZXLZ
eK+s+0/r513eqffrT9pL3f1YZdzCJN4djqzH9OSwtZQPqVa0E5n3RbHcfrq5
2WjlenYyfaruW6+5zkNz1H6tPhfNsdd/GT7346tBpZxc7Q/NbkXX+3Wz1lmO
pcrHZjQrFVv71+HeTBSa02OzN1os7+ujx1Z7f6Pvl86hW3ooGvvxmPFRN8BH
W9KvMlHGQ5F99rNq7yNjJvKdTl/a2bvie7qwTenFx2RhORynms/lIdl3tlo5
DlI3TXP3WN1tP9Ry/d64UfePrcbWNo/x+utHVZnMltJeaVj5+0FJj1sf47We
KpZv3p/eU/n0R3JbctLvtXypc8gzGWLQIvMP86tif2mQ21IctzVpS4Z2M/GO
ToBQK621m0ShX8rlUodsprFakYPNveQLr5qpprcW4VlHq9V+HdZ3o+VL7v25
nKpKz33dSi8fn5/Nj/6yktruG4t09qVIjmmwWO0fHDezf06ne6/qg3J04+O1
knqtvFjvdqts3xRz7YzU3jR7xrpWXa/q7/Py+8vTIndfTsTnmUpxqCbdQ+41
/659HNbTZl81G8p8nX82lWn3fVzr2Hu7U5MmQ/exeIhn9vNj+jGxLquV590o
P5pqzenhZfHobRIt7SVZqWvGc66z2NXmyWZVayQb+cbDIjcv9AgQB7Vj3LpZ
LY73iWo9NVdnucph2Ji1et38IjlexUcZ+2WjJqrDcd4sb9V542UyMTOZ4Wti
WrI06bFXcjJJp11WZ5lKpXYcTA+TaUm9365W5X5umLVrr6+radN77jeICqCl
RwNv9JJ+LReeyju7kJxL2Ywxb9RudmZuWs19xF+Srx/WQK3NGq3Mpl1eJfRM
Xd3OnxR9/1g4KG2CBF5Waw5vctZDzR5uOlKz2vuYZwYHVS22R25z4O2r016y
luy8jru9oqn3W/tpp1ZynmtuZdP7eNXS1qSdHcSPqXmlMzbmUk9drcz3Qyaf
TOuKskqv6/FaOt99McdW/7guHhsjp3U0OmOn0ZscU+rYfl4f1VarsX/tJ8eD
x43UU/bdWuZh5NrZh4bby7+Pd6NC6vHBi7v9j3KqUsnq/b25rE3MYyrp1HPZ
VqmerrzavdGynBwPn6S6s0gV7VwjqY5G9fH7R7ek5Vv1bHPplqep5utYfeou
noaJVV15Gmf3o+ZTPJey6+uaXqq0XgsdXSr2Z52MTYSMfi7xmN33jwNbyyz7
jca8YWyO6W7NaH7UesXtoKlaxefCfvOafqg0e4XldPcUb92oktvIthPHZeXl
vahr6WKpdZxl8kSRzFnVx+zrVNta3dHo9eOouMmpbTRLh1zV7pW09fJVX2/V
UVsa9G62dpNw2+Zx9EhQ/Sa5ahWrjn3sW/Xn436bOD6317XCzeGhMUpXDvFx
KbccLOqbxKhQ3parOSm/SjyuVs/L5YP5XnC15lPGzvT2y4ORHxT6o206Watm
F2olsckMD5PNvrAqHd4zRCR9PpTsY6FpSqlyWTOtj/ub1sdezXcPk97z/c2L
Xtamw+qs+VxLFF+9enH9Mmi913OptT04dL1Z9RDPW2o6sVeH0k2tv84V6hOv
kuwV55NirpeqJR3PLT9YNS+9nvTHL/H+9Gm3bx0+rGpy8vjQTajF1VFVx3Xl
9WkkLeeLfXua1dSa1fVenVxi1D+otcIhnZ7PR/PKftnUBgs7m1uv5tm4OlIN
u9w4PO0LhZqq9DY3a6leKtmbl2Iy/5xT88NlVZssPpxaTum/zmaj1/TBrcfv
08p9ol2LV+Krw25Cjj3Re5/H7dl4vewOpM7KOr6XzHGjSGTMxu7DHC938WYz
/pLtL4r75FZplBbzlGtMPuazwrOtPu0nuaUyHD807rPxTTFNpHV7UzMt1Su2
Mzl10epUnx/GT+0P5bm4m0+fh88jt1p78h6OzdlN3liuV8PNY+19eXxvLrfK
Mj6VXoq9dXlfPRYGRv9lYxPeuHrSPp4JTua0fMXYur1Zc1xsVnKvuYyZLi3L
4/XeHRseuZ03XSKbSM9252WbmNQX00Iy7jirYWsweUyWn7YFY3dMO3XbzXi1
lPcwyc37y9JjO9k8rvqpwzB5mO8e1zd9qX2Ym4NWcmQeWh9EdGptSptkXFkX
tcy60Btq5c2Dvk4Vhk9e3utklOQ45x6clboppYdut/1QXEmtF23w/GrZj8+J
fuO9Me/Ubl731kPrNe+263FtlpxYK/tjNEzUsllV7dg78zXz2jLni4678rqF
kmRMjHqzWCt21Ea/sJhPUXks1SpzqslVir18u7nPF1f7nlHrjWe90bbQLmpJ
p3J43reqA2lRat0f7M34PbHrGErW7m6bGffxfZBCRly4b/RL722vV11OCrt6
MZ7sWYmZW66Mcs+Dj2Vd1aRiurAa2O29mTUKmY/Gx30uM9l3FpXFzapetuzJ
aD4fPE5aj+PE+8J4r7THed3IJfpq5/491y22ilIjVX1ITYi0XD0Uir0//qA6
e7ld+kxjZ/3hfJsEWNx+/MbMAjHPXf7F/Xa+yQM7NWnhikm0WErUlweFnKg9
xv0bAwSUFPmC/aFfe8kPy6cGiGf3nzRA7PPlYa4m9VKznt5ePSS0zmSwLNwn
s/E64YWJXu31fpPezscfhU6l0URrxTljhfQVa8U5Y4X0FWvFOWOF9BVrxSHX
d6LGCukr1opzxgrpK9aKc8YK6SvWinPGCukr1opzxgrpK9aKc8YK6SvWinPG
Cukr1opzxgrpK9aKc8YK6SvWinPGCukr1opzxgrpK9aKc8YK6SvWinPGCukr
1opzxgrpK9aKc8YK6SvWinPGCukr1opzxgrpK9aKc8YK6SvWinPGCukr1opz
xgrpK9aKc8YK6SvWinPGCukr1opzxgrpK9aKc8YK6SvWinPGCukr1opzxgrp
1FqRzitPk8XjjIjfndfkcbyuv7YbZatabC/iue2obLuFUb/0sdY7L0/vijRN
aYV8XpktlMpTeXFIjzYv445iZSal/f2ovTGHL7W+1hztStvee3XXbzWL9mbe
uy/fxNNP2e0gKylOe5Ha5AofxruSXpWbyvG42Nvu01PBrQEDbuZHRZQfeo1p
qVhbFBaPBSVdjtdTivtaGealvdYotz7un4y10R3lsnVnM79J71YfyXZTRxZe
1q1y62ai9Urvy2m2ubdv8lMvNd9p80k52T5KiUL5Yd+4WRzUpXdvZKb3/YcH
N1UoztI7q9UdFp1NnUjyL7lDcvWaaZF59t34POXVc8nGq7dfdCX7YD/uO61H
Z569qR3z+RMWXp8vJ7VNYttblV7JjSpOO1rJcivxYz77OvN60nPvvtvO6dvB
er0ZJbuVXv4lNXntNNfHQie3/ii9xI/TxLoyqyUK7UOi/Lq+qXdfKnWVXAbt
wS3akt4xe+t7vWyTC5R96KiVTqdcSXWSrtN+aoy8xOFlks6WCo3ufFfSh4oR
r20GhezEGKcLtUTfnkndQ1urdfq9ZarttGaVfS2l5pTRMf5aH6zsRq9SH60+
0sliadNqlIyn54duz9U6aq217WpKv1p4kZqJeWWVGiRzL+PZVPGG1RdtMXgd
m92SPT3W2sYhNfCMeXGbntXyz62npdHy6vdrW9099o9aulqV7gvq89Eiusa+
pq3qXmWrVBSr3Y8n8/V+06oVCUmb6Ppz4nG0z6Rmz/nsDZF8+tXqTb8/aC1X
OWk02qe6D+v1ojwr32yKlURmdXx4KQ+s8TqlV5bOi6lXDvn+opnNa3ZnO7aL
RtfJzJ4O963HimbmpEzcKlaP7x3lvV/3XreD16ZdWFlut6eO3gfOpqlbg/j9
rn5zbJSz78Yh3kp3nt3Xav79xSnGHbUgJeNto/1uJkvx/Pp1OWw9fRj5bKLY
LCjLViKl15NDfem1vHRhuKrZ5Wp9vR7n9F57W12t1tvGgCgcnXwpMRnV4+qm
5xrm5qNlv68ax+WT6qWeGpWGapVKRYI32qq8U5ZPbunY0RNOo7M9OuV8LdmU
EnPtXn/QmmX10D70dWup1ifFp4nqPW6Os857/qgXXrLlyrrQXpUPhpLW9ptu
0bMqpjGq5T72KalXKupGpll4ejwmktXCe7q/fJwYo8Wq41aMg9dtZ4vKoDo/
DCv7oTVfvn5sleZm+Txrz3S3rC43UlWflAeGTW65uy0da0buWM47SyNV35t5
tWHedA6DeH7y9HDwSl2LyH7vmrouvIz3lqXn5x8tS7rpVWtKt364181karr+
SJhmLrdy2qtszdjnZoVsOZ9SJpXUZmpV3p+XXWdTTIxXg5y5GzVGO28tvecX
2WxrOTm+tNymp5olZZCfufrR3BaIkJS/r5ftgeK9zPvNReE+X/dmk7VZr3cy
4/20OjhsFanz3Kq3xvPy/PnF2baNwo39WtCU7XOOSH75yTw3vukVN2arl23N
BxntUKhOJrn7+/dWrpovESGkInXvzddFdRQ/pI6JYrtnPgx6m5fn99px1s4q
ZXf48Hoganw91Wmr1fK9UVZm+cFo2teWefuptyu3pWN78zAtdDLHpt4YPY8q
Wnl0cHKllpo5PK5m+sfjK1FsrOpTkajn5rpWU0ujG+u1WP94eMnet1+Wkvpa
zKt6p1ar2AW1Xkw920pn15jYHa9asWqbQtEl2lhvUH1aNnabQW+fbZg9b17p
VvPlTCE1Gktq9th9Wr6kUgnzpjUtat2bp93jcNAuaHV3mnx+/fCea+l2o5ps
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
j9zpPUfFgd1GT8fz+02+72bTWWXoxYLyR6NRuS273ik7O2lkf4jzJ79vZKCj
dLpYWfNRMFq2tqsV5pBplwo3ziZaZVlCOpEPH7Oakqb4Dc+8WnE3buUNpbPY
3H21swe2MdR4bcF8jMz7xz2+Lbw8e1qLwtz3itNqrMrlxWsuFyqc91ejzHPr
W1v5RpwXzb649DzzxpXPajj3mMp3J5OxOxRr3hAtVZo5rN4th42nH6rddEiJ
/dkgMeuluJk7z3A2a6/mRtoPd49dEfb1hrHP/UU+0SI7Hn60G+1wm3i3a1Ey
4uWy3q+bO2Xdn2d5dcjnpT3pwkCvRv5E/4ifRm+jyI/catJyl6VHU9FmpTg6
jy7LsxEXM0Gb68ljdntQQxiwoFhXdTsf9RrPNMqoFNlsIh4L7fScTNONN5Cm
p2fQlWpUrjZdUH5I07l1vcz82n/MqbUex4duPrxZfd2+OK293sz59bPkH+PV
JM9Px9C5WW0R7Rb1gS/d8+xoHtteYjqaXgRlqFJ3L1qx+WVqLKdmdRs38XFV
nJTLPnO1y6jW5/n5sp73026XXqN76e1H8yi9z/XiYtY9tXpMqLHtlCY/ANK5
jG/9g3jub8qe7U+OveuQZ9JgmzqrztWb68YLglPeJMc2LJQNTBv2LZsUMSXL
S97W7oK0HA67eJA89prNrBz2NtMapYBJUdVuntzwEi+8cLlcpms7Bt5Z7qeP
D40Fj6Em+c7xtJC7Rcktfkbh8vSxjRa34Hg99HZWsvzwFE3Te+xU8WZqYyrR
mt/sIh3m50dl7pVrapIdB+xjIuaPe2/BmpN0ULRPbqFYRTbaWbOdOwlKCKJc
s9Kvi+eiXq8ac3XK7oDg/CTba+oySqSRM9dqs+eyVtdli+Nyda3P5rnXDfTN
5Rw0hx+h/PdI3gW9z0hOfSeU/xrJ1/HAzOfUrl9lG3s2fuzEa82PExYi1vFS
Xi51e+/6wiW3mcY0H5aVrhI/GGYnu8jUU3W9LKOdv+0Z1HA3vgZGkLDMc83A
dGQrbB3h6rrdbXYJ7IU5adSPwWAz/daxEX+h7bhK4+jXu0e015025EKRzMdb
iMKYnOVA7s+pDuSes1+qTbGe9fbj9u6fLuP76RnqdUkPubqteHWKD+M9L4cz
qUvFC08CvLr6T4rJ/+aLm3ep6bvU9F1q+i41fZeavktN36Wm71LT/+5S0/ct
Je9bSt63lLxvKXnfUvK+peR9S8n3bykJ5QH4w8WYPcRxA/3bhrY9VerO3pp8
39FGV37GxW792F8fdgKJ+xSCaykxT2XiWvNGH9aQG6wvojLxosAfDIuZalyX
2+O5uQvOs5Fh9mStLm1c5s/HIeKVdb8JxpS9ctj79FEe9as4O+cjW9UcyKGm
AER9sthyxu5kV4UYHB1P0bv55jmci+eBwC9Wi7O99m1quh0dLOXJTuVnB868
i442v5oljvdYa8HeGWrhgWsl+/Qs9o3tJ85QmhidIVrJZHTdl0xGVUy0M7JC
jyOjCWdiZ9bDyzZ3w7kz83d2zmU7T4gG3unYjVfDWzlKVC/0ypkddvHRn14C
aumWwISOuSmCSWC4xnpeSpHVH4zPN3PKn8XZdMYfln1lMnvmmf/Yz3Zt5vcL
PplM94V63lCT6Xxfu6HdfMyPurtk86U1zA9OPT7erEDlhcVyJYxDRX8s9dVZ
m7G+xxyWeuVX22anb12fMvvV0KjZw2wb6KMTb+nBSXZZQ5ifzHN2rV2/L+72
Sd+cVvVylcnjZ8QIGy91NLY3mtT8ijoEtnhf9b2pWTZGZjoWG5mDZXFNu2pU
LpYwO6lNSF/KR25zZlGJ2u2juT2EQfk8F8VHvKLGk+p5W40DSx6L0yRtZjzf
TE/+2fL17m6kG2M2ZBtlxfTPySoFomwuXRhu551m9/LRKd5T3se4HLYLaXff
7c+uus6Cq6YtpIFfG8XKPzknvXzuTJMfLOzReKIuF1fdXRuidhhnwXY9Vqhh
/xE8Xdkz22E26Q+n/V3B3U+P1N9N5S3EsafQnKyLvHxcZe+46l+n+n2z9MZa
WZte5gtnajNfVCE/tY/ysVqvRsv0dBy0MOGutMDV/H5XZDuzSv28f1quQt4w
0k7uD9UPLz8G4bbsM9RxFlyD64eZr5VxsnGE8XNzOmte7hsaAC3S6rLdHCXx
CSo9Lob7586rznGaXE3xw5jNNyfKDg+H5zXVx4feSGN27KiItK4/MU4XcXrs
GuUWbQIz3VenxaMaXqvBaDBRmkAcPOpMLG/bHRXmhZvWE9PunM5vGu/IZW0r
DX3747L3mHK0XvTW9Y2z58Jyv+93jHPMuJax18N0kmWRvaEWs8PYWVrPwx1m
ysKjC+aHbugsjlcmqqLcXcWXXjgtHmGnG1q7nDWGumjb6iGfqzXnjcMDdRSz
YnG5bJxFLFluaPk7I81XgrutpqHPpfxlUpuTa1KsquhqX9t1AWnq6eA4wywO
YELiUI/4uLktQ0YPzeX+yj7beHlcjdpqMN8aeX021qGfneaFvpVZ8ayl4cyY
NEexvxytR1kCmTw1rhw38C/X2dz3N9xAmR6q+tKDtNy4Gv2QNxu/5Q7LhK/T
j9NiLov9emwNhf24fWiGP1+JVCttJg1/Ocaake7kLoBM95rcF/3rY7vOPmpz
lUojfx7tnXgvppPw4AhDczU/iGGhSIudP6C2NicteofucL2u3cqsuryBMFN3
WeCk6dra1OsBa9wY5TqTnwPHm0z2/KByau+87eTxTRpSl27flkpybvNU8wpp
tAiK3SbyLKdh+u1VduxRyXiXxHLH29Raydr6MpE2XVrarGCdg6tJuXp33k+P
qXddVYuHLz8dY3DVby2Qju9Ml+XdA19YHM3D/uOaRerYZPeDPGTT0DqZLid6
lD0SlN3kMbS0srCjnXi+95hZp03v81wH8GcjmdOMGe62Wy/txSRrtr6ytW+Z
vztyu8FgQI0H3QiIZ2P25Y9m5pyWjgepzHI0q3Y7eVefd4NJwu7WsitIEFif
Z2bBJT9/A0D98SuA734DQP3xK4DvfgNA/fErgP/iNwD/h+0avx4OzbI/Hw7d
/FjOfx2/8XlyRtxeDlVckwX/Q02fX5e0xxV9r3Hjxv/A29Hj19cHoX+mL9X9
/Dou43PJ/6cvBP5KNdkhzH7b+lHh8ROHG4330f84qOLn7xh+2ubx01kY/0kO
z6Dn0MLnURmr10EUFOX+kCD/vOb9l28sqviX0cfJ/fRXfPpJBh6Qw0DIgRZ/
2NXyVU//XvgtOUj7dijin07TLuHZPx6a/UOD/0y+XjnUf4WhPX968TdzcH+4
dP7XYzs+t9KEWRzmNTnfxD+dQDthWWBnRVzXfvppqEtVhvB7jHfExwUIND+H
8UtW8nUMvhnEoKzfvuj5+a3or39zZshn51Fc32DmRZr9lOtneV/bdV5i/5U+
xf4D/0y+5wFt/uMnirz357z357z357z357z357z357z357z357z353xvf84/
XNRLfVXV+52iXuqrqt7vFPVSX1X1fqeol/qqqvc7Rb3UV1W93ynqpb6q6v1O
US/1VVXvd4p6qa+qer9T1Et9VdX7naJe6quq3u8U9VJfVfV+p6iX+qqq9ztF
vdRXVb3fKeqlvqrq/U5RL/VVVe93inqpr6p6v1PUS31V1fudol7qq6re7xT1
Ul9V9X6nqJf6qqr3O0W91FdVvd8p6qW+qur9TlEv9VVV73eKeqmvqnq/U9RL
fVXV+52iXuqrqt7vFPVSX1X1fqeo96f9Of+1JT3qq6re7yzpUV9V9f4/KOr9
j38934sA0v/of/1T4p/q+J/+k/oLrYX5uWxOcZTGRXy+1X/2nFGGd3yAHh3q
W1k9qf8NHuEGW6trAQA=

-->

</rfc>

