<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd' []>
<rfc ipr="trust200902" category="std" docName="draft-ietf-sidrops-signed-tal-06">
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc private=""?>
<?rfc topblock="yes"?>
<?rfc comments="no"?>
<front>
  <title abbrev="RPKI signed object for TAL">RPKI Signed Object for Trust Anchor Keys
  </title>

<author initials="C." surname="Martinez" fullname="Carlos Martinez">
  <organization>LACNIC
  </organization>
<address>
<postal>
  <street>
  </street>
  <city>
  </city>
  <code>
  </code>
  <country>
  </country>
  <region>
  </region>
</postal>
<phone>
</phone>
<email>carlos@lacnic.net
</email>
<uri>https://www.lacnic.net/
</uri>
</address>
</author>
<author initials="G." surname="Michaelson" fullname="George G. Michaelson">
  <organization abbrev="APNIC">Asia Pacific Network Information Centre
  </organization>
<address>
<postal>
  <street>6 Cordelia St
  </street>
  <city>South Brisbane
  </city>
  <code>4101
  </code>
  <country>Australia
  </country>
  <region>QLD
  </region>
</postal>
<phone>
</phone>
<email>ggm@apnic.net
</email>
<uri>
</uri>
</address>
</author>
<author initials="T." surname="Harrison" fullname="Tom Harrison">
  <organization abbrev="APNIC">Asia Pacific Network Information Centre
  </organization>
<address>
<postal>
  <street>6 Cordelia St
  </street>
  <city>South Brisbane
  </city>
  <code>4101
  </code>
  <country>Australia
  </country>
  <region>QLD
  </region>
</postal>
<phone>
</phone>
<email>tomh@apnic.net
</email>
<uri>
</uri>
</address>
</author>
<author initials="T." surname="Bruijnzeels" fullname="Tim Bruijnzeels">
  <organization>NLnet Labs
  </organization>
<address>
<postal>
  <street>
  </street>
  <city>
  </city>
  <code>
  </code>
  <country>
  </country>
  <region>
  </region>
</postal>
<phone>
</phone>
<email>tim@nlnetlabs.nl
</email>
<uri>https://www.nlnetlabs.nl/
</uri>
</address>
</author>
<author initials="R." surname="Austein" fullname="Rob Austein">
  <organization>Dragon Research Labs
  </organization>
<address>
<postal>
  <street>
  </street>
  <city>
  </city>
  <code>
  </code>
  <country>
  </country>
  <region>
  </region>
</postal>
<phone>
</phone>
<email>sra@hactrn.net
</email>
<uri>
</uri>
</address>
</author>

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

<area>Internet
</area>
<workgroup>
</workgroup>


<abstract>
  <t>A Trust Anchor Locator (TAL)
  <xref target="I-D.ietf-sidrops-https-tal"/> is used by Relying Parties (RP) in the
RPKI to locate and validate a Trust Anchor (TA) CA certificate used in RPKI validation.  This document
defines an RPKI signed object for a set of Trust Anchor Keys (TAK), that can be used by TA creators and publishers
to signal their set of current keys and the location(s) of the accompanying CA certificates to
RPs, as well as changes to this set in the form of revoked keys and new keys, in
order to support both planned and unplanned key rolls without impacting RPKI validation.
</t>
</abstract>


</front>

<middle>

<section anchor="requirements-notation" title="Requirements notation">
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;,
&quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; 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>
</section>

<section anchor="overview" title="Overview">
<t>A Trust Anchor Locator (TAL) [I-D.ietf-sidrops-https-tal] is used by a Relying Party (RP) in the RPKI
to locate and validate Trust Anchor (TA) CA certificates used in RPKI validation. However, until now
there has been no formal way of notifying RP of updates to a TAL. Such
updates may be needed in particular in case a TA needs to perform a planned or
unplanned key roll.
</t>
<t>This document defines a new RPKI signed object that can be used to document the current set
of keys and the location(s) of the accompanying CA certificates, as well as any changes to this
set. This allows RPs to be notified automatically of such changes, and enables TAs
to pre-stage a number of operational keys so that planned and unplanned key rolls can be
performed without risking the invalidation of the RPKI tree under the TA. We call this object the
Trust Anchor Keys (TAK) object.
</t>
<t>When RPs are first bootstrapped, they use any current TAL to discover a key
and location(s) of the TA certificate(s) for a TA. The RP can then retrieve and validate the TA
certificate, and subsequently validate the manifest
<xref target="RFC6486"/> and CRL published by that TA
[section 5 of @!RFC6487]. However, before processing any other objects it will then first validate
the TAK object, if present. All enumerated new keys (and locations) are then added to a new list
of current TA keys for this TA. The RP will then recursively fetch and validate the TA certificates,
manifest, CRL and TAK objects for each of these keys. As a part of this process the RP will also
compile a list of revoked keys enumerated by any of the validly signed TAK objects. As the final
step the RP will then filter out any revoked TA keys from its new set. This new set now replaces
the previous set.
</t>
<t>This process allows Trust Anchors to operate a set of N current keys, where any key can
effectively revoke any or all of the other keys to perform either a planned, or an unplanned, key
roll. This also allows Trust Anchors to produce long lived TAK objects  as forward pointers to
RPs, and retire its old key when doing a key roll. While the generic process is quite involved,
the amount of work needed to support an envisioned normal key roll is fairly limited. Under normal
circumstances a TA will typically have two current keys, so that is can perform an emergency
roll over in case one of the keys is lost. This means that the RP will need to validate one
additional CA certificate, a CRL, a manifest and two TAK objects.
</t>
<t>When a key roll is executed a TA will remove one old key, and introduce one new (back-up) key.
The RP will remove the old key from its set, and it will not be queried again, and it will add the
new key and its TA certificate location(s).
</t>
<t>Only in a situation where an RP is very outdated can it be expected that the RP will have to
discover several chained TAK object. But, since it will remove the outdated TALs in this process,
this presents a one time cost only.
</t>
</section>

<section anchor="tak-object-definition" title="TAK Object definition">
  <t>The TAK object makes use of the template for RPKI digitally signed objects
  <xref target="RFC6488"/>,
  which defines a Cryptographic Message Syntax (CMS)
  <xref target="RFC5652"/> wrapper for the Signed
TALs content as well as a generic validation procedure for RPKI signed objects. Therefore, to
complete the specification of the TAK object (see Section 4 of
<xref target="RFC6488"/>), this document
defines:
</t>
<t>
<list style="symbols">
  <t>The OID defined in
  <xref target="content_type"/> that identifies the signed object as being a TAK. (This OID
appears within the eContentType in the encapContentInfo object as well as the content-type
signed attribute in the signerInfo object).
  </t>
  <t>The ASN.1 syntax for the TAK eContent defined in
  <xref target="e_content"/>.
  </t>
  <t>Additional steps to the validation steps specified in
  <xref target="RFC6488"/> required to validate the TAK,
  defined in
  <xref target="validation"/>.
  </t>
</list>
</t>

<section anchor="content_type" title="The TAK Object Content Type">
<t>This document requests an OID for TAK objects as follows:
</t>

<figure align="center">
  <artwork align="center" type="ascii-art">
   signed-Tal OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840)
              rsadsi(113549) pkcs(1) pkcs9(9) 16 id-smime (1) TBD }
  </artwork>
</figure>
<t>This OID MUST appear both within the eContentType in the encapContentInfo object as well as
the content-type signed attribute in the signerInfo object (see
<xref target="RFC6488"/>)
</t>
</section>

<section anchor="e_content" title="The TAK Object eContent">
<t>The content of a TAK object is ASN.1 encoded using the Distinguished Encoding Rules (DER)
<xref target="X.690"/>, and is defined as follows:
</t>

<figure align="center">
  <artwork align="center" type="ascii-art">
   TAK ::= SEQUENCE {
      version   INTEGER DEFAULT 0,
      current   ::= SEQUENCE SIZE (1..MAX) OF CurrentKey,
      revoked   ::= SEQUENCE OF SubjectPublicKeyInfo
   } 

   CurrentKey ::= SEQUENCE {
      certificateURIs       SEQUENCE SIZE (1..MAX) OF CertificateURI,
      subjectPublicKeyInfo  SubjectPublicKeyInfo
   }

   CertificateURI ::= IA5String

   SubjectPublicKeyInfo ::= SEQUENCE {
        algorithm            AlgorithmIdentifier,
        subjectPublicKey     BIT STRING
   }
  </artwork>
</figure>

<section anchor="version" title="version">
<t>The version number of the TAK object MUST be 0.
</t>
</section>

<section anchor="current_keys" title="current">
<t>This field defines the set of current keys (CurrentKey) according to the signer of this Signed
TALs object.
</t>

<section anchor="currentkey" title="CurrentKey">
<t>This field defines a current TA Key, equivalent to [I-D.ietf-sidrops-https-tal]. This structure
contains a sequence of one or more URIs and a SubjectPublicKeyInfo.
</t>

<section anchor="certificateuris" title="certificateURIs">
  <t>This field is equivalent to the URI section in section 2.1 of
  <xref target="I-D.ietf-sidrops-https-tal"/>. It MUST
contain at least one CertificateURI element. Each CertificateURI element contains the IA5String
representation of either an rsync URI
<xref target="RFC5781"/>, or an HTTPS URI
<xref target="RFC7230"/>.
</t>
</section>

<section anchor="subjectpublickeyinfo" title="subjectPublicKeyInfo">
<t>This field contains a SubjectPublicKeyInfo [section 4.1.2.7 or @!RFC5280] in DER format
<xref target="X.690"/>.
</t>
</section>
</section>
</section>

<section anchor="revoked_keys" title="revoked">
<t>This field contains the list of keys, identified by SubjectPublicKeyInfo, that are no longer to be
used according to the signer of this document.
</t>
</section>
</section>

<section anchor="validation" title="TAK Object Validation">
<t>To determine whether a TAK object is valid, the RP MUST perform the following steps in
addition to those specified in
<xref target="RFC6488"/>:
</t>
<t>
<list style="symbols">
  <t>The eContentType OID matches the OID described in
  <xref target="content_type"/>
  </t>
  <t>The TAK object appears as the product of a Trust Anchor CA certificate.
  </t>
<t>This Trust Anchor CA has published only one TAK object in its repository for this key, and this
object appears on the Manifest as the only entry using the &quot;.tak&quot; extension (see
<xref target="RFC6481"/>).
In case more than one TAK object is found, all such objects MUST be considered invalid.
</t>
<t>The EE certificate of this TAK object describes its Internet Number Resources (INRs) using
the &quot;inherit&quot; attribute
</t>
<t>The decoded TAK content conforms to the format defined in
<xref target="e_content"/>.
</t>
</list>
</t>
<t>If the above procedure indicates that the manifest is invalid, then the TAK object MUST be
discarded and treated as though no TAK object were present.
</t>
</section>
</section>

<section anchor="mnt_obj" title="TAK Object Generation and Publication">
<t>A TA MAY choose to use TAK objects to communicate its set of current, and revoked keys. If a
TA chooses to use TAK objects, then it SHOULD generate and publish TAK objects under
each of its current keys. An exception to this rule exists when a TA has lost permanent access
to one of its keys or the accompanying repository publication point. In such cases however, the
key in question MUST be revoked as described below in
<xref target="perf_roll"/>.
</t>
<t>A non-normative guideline for naming this object is that the filename chosen for the Signed TAL
Object in the publication repository be a value derived from the public key part of the entity's
key pair, using the algorithm described for CRLs in section 2.2 of
<xref target="RFC6481"/> for generation
of filenames.  The filename extension of &quot;.tak&quot; MUST be used to denote the object as a TAK.
Note that this is in-line with filename extensions defined in section 7.2 of
<xref target="RFC6481"/>
</t>
<t>In order to generate the TAK Objects, the TA MUST perform the following actions:
</t>
<t>
<list style="symbols">
  <t>The TA MUST generate a key pair for a &quot;one-time-use&quot; EE certificate to use for the TAK
  </t>
  <t>The TA MUST generate a one-time-use EE certificate for the TAK
  </t>
<t>This EE certificate MUST have an SIA extension access description field with an
accessMethod OID value of id-ad-signedobject, where the associated accessLocation
references the publication point of the TAK as an object URL.
</t>
<t>As described in
<xref target="RFC6487"/>, an
<xref target="RFC3779"/> extension is required in the EE certificate used
for this object.  However, because the resource set is irrelevant to this object type, this
certificate MUST describe its Internet Number Resources (INRs) using the &quot;inherit&quot; attribute,
rather than explicit description of a resource set.
</t>
<t>This EE certificate MUST have a &quot;notBefore&quot; time that matches, or predates the moment that
the TAK will be published.
</t>
<t>This EE certificate MUST have a &quot;notAfter&quot; time that reflects the intended duration for which
this TAK will be published.  If the EE certificate for a Signed TAL is expired, it MUST no longer
be published, but it MAY be replaced by a newly generated TAK object with equivalent
content and an updated &quot;notAfter&quot; time.
</t>
<t>The same set of current keys (see
<xref target="current_keys"/>) MUST be included on each TAK object for
each current key.
</t>
<t>The TAK object MUST include all revoked keys (see
<xref target="revoked_keys"/>) that became revoked
while the key signing the TAK in question was current.
</t>
</list>
</t>
</section>

<section anchor="rp_use" title="Relying Party Use">
<t>Relying Parties MUST keep a record of all current keys for each configured Trust Anchor, as
well as the URI(s) where the CA certificate for each of these keys may be retrieved. This
record MAY be bootstrapped by the use of a pre-configured (and unsigned) TAL file
<xref target="I-D.ietf-sidrops-https-tal"/>, but it MUST be updated with authoritative signed information
found in valid TAK objects found in subsequent validation runs.
</t>
<t>When performing top-down validation RPs MUST first validate and process any TAK objects for
each of its known current keys for a TA by performing the following steps:
</t>
<t>
<list style="symbols">
<t>A CA certificate is retrieved and validated from the known URIs as described in
sections 3 and 4 of
<xref target="I-D.ietf-sidrops-https-tal"/>.
</t>
<t>The manifest and CRL for this certificate are then validated first as described
in
<xref target="RFC6487"/> and
<xref target="RFC6486"/>.
</t>
<t>The TAK file, if present, is validated as described in
<xref target="validation"/>.
</t>
</list>
</t>
<t>For each valid TAK file thus found all current keys, i.e. SubjectPublicKeyInfo and URIs, are
kept. If any previously unknown keys are added to the set of current keys, then they MUST
also be processed as described above.
</t>
<t>Once the TAK objects for all keys are processed the set of current keys and URIs for the
TA is updated as follows:
* All new current keys found on any valid TAK object are added to the set of current keys.
* The set of URIs for each current key is replaced by the union of all URIs for this key
  found on all valid TAK objects.
* Finally, any current key that matches any revoked key on any valid TAK object is
  removed from the set of current keys.
</t>
<t>Note that if a current key does not occur on any valid TAK object, but it is not revoked
either, then it and any previously known URIs for it are kept. Also note that if an RP was
bootstrapped using a TAL file
<xref target="I-D.ietf-sidrops-https-tal"/>, the keys and URIs will now
have been replaced by values found on TAK objects.
</t>
<t>After this the RP can choose any one of the valid CA certificates for any key that is
still in the set of current keys for this TA, in order to continue the top-down validation
of object for this TA as described in
<xref target="RFC6487"/>.
</t>
</section>

<section anchor="mnt_keys" title="Maintaining multiple TA keys">
<t>If a TA operates multiple keys, then the signed material for these keys MUST be published
under different directories in the context of the 'id-ad-caRepository' and 'id-ad-rpkiManifest'
Subject Information Access descriptions contained on the CA certificates
<xref target="RFC6487"/>. Publishing
objects under the same space would lead to confusion at best, and in case of file name collisions
of objects invalidity.
</t>
<t>However, the CA certificates for each key, and the contents published by each key MUST be
equivalent. In other words it MUST not make a difference which of the keys is used as a starting
point for top-down validation by RP software.
</t>
<t>This means that the IP and AS resources contained on all current CA certificates for the current
TA keys MUST be the same. Furthermore for any delegation of IP and AS resources to a child, the TA
MUST have an equivalent CA certificate published under each of its keys. Any updates in delegations
MUST be reflected under each of its keys. A TA SHOULD NOT publish any other objects besides a CRL,
a Manifest, a single TAK object, and any number of CA certificates for delegation to child Certification
Authorities.
</t>
<t>If a TA uses a single remote publication server for its keys using the RPKI publication protocol
<xref target="RFC8181"/>, then it MUST include all &lt;publish/&gt; and &lt;withdraw/&gt; PDUs for the products of
each of its keys in a single query in order to ensure that they will reflect the same content at
all times.
</t>
<t>If a TA uses multiple publication servers then it is by definition inevitable that the content of
different keys will be out of sync at times. In such cases the TA SHOULD ensure that the
duration of these moments are limited to the shortest possible time. Furthermore the following
should be observed:
</t>
<t>
<list style="symbols">
<t>In cases where a CA certificate is revoked completely, or replaced by a certificate with a
reduced set of resources, these changes will not take effect fully until all the TA keys
repository publication points have been updated. Given that TA key operations are normally
performed infrequently we don't expect that this is a problem. I.e. if the revocation or shrinking
of an issued CA certificate is staged for days, or weeks anyway, then experiencing a delay of
several minutes for the repository publication points to all be updated is fairly insignificant.
</t>
<t>In cases where a CA certificate is replaced by a certificate with an extend set of resources the
TA MUST inform the receiving CA only after all its repository publication points have been
updated. This ensures that the receiving CA will not issue any products that could be invalid
if an RP uses a TA key just before the CA certificate was due to be updated.
</t>
</list>
</t>
<t>Finally, note that the publication locations of CA certificates for delegations to child CAs
under each key will be different, and therefore the Authority Information Access 'id-ad-caIssuers'
value on certificates issued by the child CAs may not match (section 4.8.7 of
<xref target="RFC6487"/>). However,
this information is not considered critical for validation of these objects and provided as
hints to RP software only. Therefore RP software MUST NOT reject these certificates based
on a mismatch of this value.
</t>
</section>

<section anchor="perf_roll" title="Performing TA Key Rolls">
<t>In this section we will describe how present day RPKI TAs that use only one key pair, and
that do not use TAK objects, can change to having two current keys at all times allowing
them to perform both planned and unplanned key rolls.
</t>

<section anchor="phase-1-add-a-tak-for-key-a" title="Phase 1: Add a TAK for Key 'A'">
<t>Before adding any new keys a Trust Anchor may want to build up operational experience in
maintaining a TAK object that describes its current key only. We will call refer to this
key as key 'A' throughout this section.
</t>
<t>The TA will have a TAL file
<xref target="I-D.ietf-sidrops-https-tal"/> that contains one or more URIs
where the (equivalent) CA certificates for this key 'A' can be retrieved. The TA can now
generate a TAK objects that includes key 'A' only in its sequence of 'CurrentKey' values.
</t>
<t>The TA SHOULD publish the CA certificate for key 'A' at one or more new locations not used
in the TAL file, and use these new URIs in the TAK object. The TA is free to choose any
naming strategy for these locations. As a non-normative suggestion, one such approach could
be to use the date that this phase was started as part of the file name or a directory where
the CA certificate is published.
</t>
<t>The TA can now monitor the retrieval of its CA certificates from the URI(s) in the newly
published TAK object, relative to the retrieval from the URI(s) listed in its TAL file,
to learn the proportion of RPs that can successfully validate and use the TAK object.
</t>
</section>

<section anchor="add_key" title="Phase 2: Add a Key 'B'">
<t>The TA can now generate a new key pair, key 'B'. This key MUST now be used to create a
new CA certificate for this key, and issue equivalent CA certificates for delegations
to child CAs, as described in
<xref target="mnt_keys"/>.
</t>
<t>At this point, the TA can also issue a new TAL file
<xref target="I-D.ietf-sidrops-https-tal"/> for
key 'B', and test locally that the validation outcome for the new key is indeed equivalent
to the other current key(s).
</t>
<t>When the TA is certain that both keys are equivalent, it MUST issue a new TAK object
under each of its current keys, and include both the old key 'A' and this new key 'B' in
the set of current keys.
</t>
<t>The TA SHOULD now also release a new TAL file for this new key 'B' as the intended new
key to be used by RP software. However, as described above, it SHOULD use a different set
of URIs in the TAL compared to the TAK file, so that it can learn the proportion of RPs
that can successfully validate and use the updated TAK objects.
</t>
</section>

<section anchor="roll_c" title="Phase 3: Roll to Key 'C'">
  <t>In this phase a new key, key 'C' is generated as described above in
  <xref target="add_key"/>. And one
of the previous keys is revoked.
</t>

<section anchor="planned-direction-roll" title="Planned Direction Roll">
<t>If the key roll is planned, and the TA has access to all its keys 'A', 'B' and 'C', and
the publication servers for each of the keys, then a new TAK object is generated for each
of these keys listing keys 'B' and 'C' as current, and key 'A' as revoked.
</t>
<t>The TA SHOULD now publish a long-lived TAK file, CRL and Manifest under key 'A', remove
all other content, and destroy key 'A'. This way RP software that uses a TAL for key 'A'
can still successfully find keys 'B' and 'C', and in future 'D', 'E', etc.
</t>
<t>If access to key 'A' was lost, then the process is slightly different. The TAK object
for key 'A' cannot be updated and will therefore still refer to keys 'A' and 'B' as the
current keys, and include no revocations. However, an updated TAK object listing keys
'B' and 'C' as current, and listing key 'A' as revoked can still be issued and published
under keys 'B' and 'C'. As described in
<xref target="rp_use"/> RPs will then discover that key 'A'
is revoked, and continue to use keys 'B' and 'C'.
</t>
</section>

<section anchor="unplanned-direction-roll" title="Unplanned Direction Roll">
<t>If key 'B' is compromised, the process is similar to above, except of course that
now keys 'A' and 'C' are included in the set of current keys, and key 'B' is in the
set of revoked keys. If the TA still has access to key 'B', then it SHOULD publish
a long-lived TAK file, CRL and manifest for key 'B' and remove all other content
for it. If it cannot perform this action then simply marking key 'B' as revoked
will still notify RPs to disregard it.
</t>
</section>
</section>

<section anchor="phase-x-roll-to-key-d-e-" title="Phase X: Roll to Key 'D', 'E', ..">
<t>Further key rolls are essentially no different the roll to key 'C' described
in
<xref target="roll_c"/>, except that there is no need to still include key 'A' in the list
of revoked keys when the the roll to key 'D' is performed. RPs will already
have learned to that key 'A' is revoked, before they learn about key 'D'.
</t>
</section>
</section>

<section anchor="deployment-considerations" title="Deployment Considerations">
<t>Including Signed TAL objects while RP tools do not support this standard will result in these
RPs rejecting these objects. It is not expected that this will result in the invalidation of any other
object under a Trust Anchor.
</t>
<t>That said, the flagging mechanism introduced here can only be relied on once a majority of
RPs support it. Defining when that moment arrives is by definition something that cannot be
established at the time of writing this document. The use of unique URIs in TAK objects
compared to their equivalent TAL files should help operators understand which proportion
of RPs support this mechanism.
</t>
</section>

<section anchor="security-considerations" title="Security Considerations">
<t>It should be noted that because any key can revoke the other key(s), a risk introduced: if
an adversary can gain access to one of the keys, and publication servers for it, then they
can essentially take over a TA. It should also be noted that a TA can revoke all of its keys
by accident and make itself obsolete.
</t>
<t>However, these risks can be mitigated greatly by the use of Hardware Security Modules (HSM)
by TAs, which will guard against theft of a private key, and operational processes to guard
against (accidental) mis-use of the keys in an HSM by operators.
</t>
<t>Although HSMs can help against key theft, the risk of key loss is still very applicable.
In some ways more so, because back-ups are hard by design. Key loss can easily happen for example
when an operator card set that is used to authorize use of a key in an HSM can no longer be
used, e.g. because cards are broken or lost, or a persons who holds a card is sadly no longer
with us, or passwords are forgotten, etc.
</t>
<t>In such cases the ability to perform an unplanned roll as described in this document will
be very useful, provided that access to the both keys is arranged differently, and the issues
affecting one key, do not necessarily affect the other key.
</t>
<t>An example where the planned rolls are useful is when a TA is using an HSM from vendor X,
and they want to migrate to an HSM from vendor Y.
</t>
<t>Alternate models of TAL update exist and can be complementary to this mechanism. For example,
TAL maintainers can liaise directly with validation software developers to include updated and re-issued TAL
in new code release, and use existing code update mechanisms in the RP community to distribute the changes.

Broadly speaking, this is the mechanism used inside web browsers to propagate significant changes of the trust anchor set
included in the browser by default.
</t>
</section>

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

<section anchor="oid" title="OID">
<t>IANA is to add the following to the &quot;RPKI Signed Objects&quot; registry:
</t>

<figure align="center">
  <artwork align="center" type="ascii-art">
   Decimal | Description                    | References
   --------+--------------------------------+---------------
   TBD     | Trust Anchor Keys              | [section 3.1]
  </artwork>
</figure>
</section>

<section anchor="file-extension" title="File Extension">
<t>IANA is to add an item for the Signed TAL file extension to the &quot;RPKI Repository Name
Scheme&quot; created by [RFC6481] as follows:
</t>

<figure align="center">
  <artwork align="center" type="ascii-art">
   Extension  |   RPKI Object              | References
   -----------+-------------------------------------------
    .tak      |   Trust Anchor Keys        | [this document]
  </artwork>
</figure>
</section>
</section>

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

<section anchor="revision-history" title="Revision History">
<t>03 - Last Draft under Tim's authorship.
</t>
<t>04 - First Draft with Georges's authorship. No substantive revisions.
</t>
<t>05 - First Draft with Toms's authorship. No substantive revisions.
</t>
<t>06 - Rob Kisteleki's critique
</t>
</section>

<section anchor="acknowledgments" title="Acknowledgments">
<t>The authors wish to thank Martin Hoffmann for a thorough review of this document.
</t>
</section>

</middle>
<back>
<references title="Normative References">
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-sidrops-https-tal.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3779.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5781.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6481.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6486.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6487.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6488.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7230.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"?>
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8181.xml"?>
<reference anchor='X.690'>
  <front>
    <title>
      Information technology - ASN.1 encoding rules:
      Specification of Basic Encoding Rules (BER), Canonical
      Encoding Rules (CER) and Distinguished Encoding Rules
      (DER)
    </title>
    <author>
      <organization>
        ITU-T Recommendation X.690 (2002) | ISO/IEC 8825-1:2002
      </organization>
    </author>
    <date year="2002"/>
  </front>
</reference>
</references>
<references title="Informative References">
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml"?>
</references>

</back>
</rfc>
