rfc9286.original | rfc9286.txt | |||
---|---|---|---|---|
SIDROPS R. Austein | Internet Engineering Task Force (IETF) R. Austein | |||
Internet-Draft Arrcus, Inc. | Request for Comments: 9286 Arrcus, Inc. | |||
Obsoletes: 6486 (if approved) G. Huston | Obsoletes: 6486 G. Huston | |||
Intended status: Standards Track APNIC | Category: Standards Track APNIC | |||
Expires: 25 September 2022 S. Kent | ISSN: 2070-1721 S. Kent | |||
Independent | Independent | |||
M. Lepinski | M. Lepinski | |||
New College Florida | New College Florida | |||
24 March 2022 | June 2022 | |||
Manifests for the Resource Public Key Infrastructure (RPKI) | Manifests for the Resource Public Key Infrastructure (RPKI) | |||
draft-ietf-sidrops-6486bis-11 | ||||
Abstract | Abstract | |||
This document defines a "manifest" for use in the Resource Public Key | This document defines a "manifest" for use in the Resource Public Key | |||
Infrastructure (RPKI). A manifest is a signed object (file) that | Infrastructure (RPKI). A manifest is a signed object (file) that | |||
contains a listing of all the signed objects (files) in the | contains a listing of all the signed objects (files) in the | |||
repository publication point (directory) associated with an authority | repository publication point (directory) associated with an authority | |||
responsible for publishing in the repository. For each certificate, | responsible for publishing in the repository. For each certificate, | |||
Certificate Revocation List (CRL), or other type of signed objects | Certificate Revocation List (CRL), or other type of signed objects | |||
issued by the authority that are published at this repository | issued by the authority that are published at this repository | |||
skipping to change at page 1, line 36 ¶ | skipping to change at line 34 ¶ | |||
containing the object and a hash of the file content. Manifests are | containing the object and a hash of the file content. Manifests are | |||
intended to enable a relying party (RP) to detect certain forms of | intended to enable a relying party (RP) to detect certain forms of | |||
attacks against a repository. Specifically, if an RP checks a | attacks against a repository. Specifically, if an RP checks a | |||
manifest's contents against the signed objects retrieved from a | manifest's contents against the signed objects retrieved from a | |||
repository publication point, then the RP can detect replay attacks, | repository publication point, then the RP can detect replay attacks, | |||
and unauthorized in-flight modification or deletion of signed | and unauthorized in-flight modification or deletion of signed | |||
objects. This document obsoletes RFC 6486. | objects. This document obsoletes RFC 6486. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 25 September 2022. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9286. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language | |||
2. Manifest Scope . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Manifest Scope | |||
3. Manifest Signing . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Manifest Signing | |||
4. Manifest Definition . . . . . . . . . . . . . . . . . . . . . 4 | 4. Manifest Definition | |||
4.1. eContentType . . . . . . . . . . . . . . . . . . . . . . 4 | 4.1. eContentType | |||
4.2. eContent . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.2. eContent | |||
4.2.1. Manifest . . . . . . . . . . . . . . . . . . . . . . 5 | 4.2.1. Manifest | |||
4.2.2. Names in FileAndHash objects . . . . . . . . . . . . 7 | 4.2.2. Names in FileAndHash Objects | |||
4.3. Content-Type Attribute . . . . . . . . . . . . . . . . . 7 | 4.3. Content-Type Attribute | |||
4.4. Manifest Validation . . . . . . . . . . . . . . . . . . . 7 | 4.4. Manifest Validation | |||
5. Manifest Generation . . . . . . . . . . . . . . . . . . . . . 8 | 5. Manifest Generation | |||
5.1. Manifest Generation Procedure . . . . . . . . . . . . . . 8 | 5.1. Manifest Generation Procedure | |||
5.2. Considerations for Manifest Generation . . . . . . . . . 9 | 5.2. Considerations for Manifest Generation | |||
6. Relying Party Processing of Manifests . . . . . . . . . . . . 10 | 6. Relying Party Processing of Manifests | |||
6.1. Manifest Processing Overview . . . . . . . . . . . . . . 11 | 6.1. Manifest Processing Overview | |||
6.2. Acquiring a Manifest for a CA . . . . . . . . . . . . . . 11 | 6.2. Acquiring a Manifest for a CA | |||
6.3. Detecting Stale and or Prematurely-issued Manifests . . . 12 | 6.3. Detecting Stale and/or Prematurely Issued Manifests | |||
6.4. Acquiring Files Referenced by a Manifest . . . . . . . . 12 | 6.4. Acquiring Files Referenced by a Manifest | |||
6.5. Matching File Names and Hashes . . . . . . . . . . . . . 12 | 6.5. Matching File Names and Hashes | |||
6.6. Failed Fetches . . . . . . . . . . . . . . . . . . . . . 12 | 6.6. Failed Fetches | |||
7. Publication Repositories . . . . . . . . . . . . . . . . . . 13 | 7. Publication Repositories | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 8. Security Considerations | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 9. IANA Considerations | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 14 | 10. References | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 10.1. Normative References | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 10.2. Informative References | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 15 | Appendix A. ASN.1 Module | |||
Appendix A. ASN.1 Module . . . . . . . . . . . . . . . . . . . . 15 | Appendix B. Changes since RFC 6486 | |||
Appendix B. Changes since RFC 6486 . . . . . . . . . . . . . . . 16 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
The Resource Public Key Infrastructure (RPKI) [RFC6480] makes use of | The Resource Public Key Infrastructure (RPKI) [RFC6480] makes use of | |||
a distributed repository system [RFC6481] to make available a variety | a distributed repository system [RFC6481] to make available a variety | |||
of objects needed by relying parties (RPs). Because all of the | of objects needed by relying parties (RPs). Because all of the | |||
objects stored in the repository system are digitally signed by the | objects stored in the repository system are digitally signed by the | |||
entities that created them, attacks that modify these published | entities that created them, attacks that modify these published | |||
objects are detectable by RPs. However, digital signatures alone | objects are detectable by RPs. However, digital signatures alone | |||
provide no protection against attacks that substitute "stale" | provide no protection against attacks that substitute "stale" | |||
skipping to change at page 3, line 41 ¶ | skipping to change at line 131 ¶ | |||
repository. Manifests are intended to be used in Certification | repository. Manifests are intended to be used in Certification | |||
Authority (CA) publication points in repositories (directories | Authority (CA) publication points in repositories (directories | |||
containing files that are subordinate certificates and Certificate | containing files that are subordinate certificates and Certificate | |||
Revocation Lists (CRLs) issued by this CA and other signed objects | Revocation Lists (CRLs) issued by this CA and other signed objects | |||
that are verified by End-Entity (EE) certificates issued by this CA). | that are verified by End-Entity (EE) certificates issued by this CA). | |||
Manifests are modeled on CRLs, as the issues involved in detecting | Manifests are modeled on CRLs, as the issues involved in detecting | |||
stale manifests and potential attacks using manifest replays, etc., | stale manifests and potential attacks using manifest replays, etc., | |||
are similar to those for CRLs. The syntax of the manifest payload | are similar to those for CRLs. The syntax of the manifest payload | |||
differs from CRLs, since RPKI repositories contain objects not | differs from CRLs, since RPKI repositories contain objects not | |||
covered by CRLs, e.g., digitally signed objects, such as Route | covered by CRLs, e.g., digitally signed objects, such as Route Origin | |||
Origination Authorizations (ROAs) [RFC6482]. | Authorizations (ROAs) [RFC6482]. | |||
This document obsoletes [RFC6486]. | This document obsoletes [RFC6486]. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. Manifest Scope | 2. Manifest Scope | |||
A manifest associated with a CA's repository publication point | A manifest associated with a CA's repository publication point | |||
contains a list of: | contains a list of: | |||
* the set of (non-expired, non-revoked) certificates issued and | * the set of (non-expired, non-revoked) certificates issued and | |||
published by this CA, | published by this CA, | |||
skipping to change at page 4, line 34 ¶ | skipping to change at line 173 ¶ | |||
Where multiple CA instances share a common publication point, as can | Where multiple CA instances share a common publication point, as can | |||
occur when a CA performs a key-rollover operation [RFC6489], the | occur when a CA performs a key-rollover operation [RFC6489], the | |||
repository publication point will contain multiple manifests. In | repository publication point will contain multiple manifests. In | |||
this case, each manifest describes only the collection of published | this case, each manifest describes only the collection of published | |||
products of its associated CA instance. | products of its associated CA instance. | |||
3. Manifest Signing | 3. Manifest Signing | |||
A CA's manifest is verified using an EE certificate. The | A CA's manifest is verified using an EE certificate. The | |||
SubjectInfoAccess (SIA) field of this EE certificate contains the | SubjectInfoAccess (SIA) field of this EE certificate contains the | |||
access method Object Identifier (OID) of id-ad-signedObject. | accessMethod Object Identifier (OID) of id-ad-signedObject. | |||
The CA MUST sign only one manifest with each generated private key, | The CA MUST sign only one manifest with each generated private key | |||
and MUST generate a new key pair for each new version of the | and MUST generate a new key pair for each new version of the | |||
manifest. This form of use of the associated EE certificate is | manifest. An associated EE certificate used in this fashion is | |||
termed a "one-time-use" EE certificate [RFC6487]. | termed a "one-time-use" EE certificate (see Section 3 of [RFC6487]). | |||
4. Manifest Definition | 4. Manifest Definition | |||
A manifest is an RPKI signed object, as specified in [RFC6488]. The | A manifest is an RPKI signed object, as specified in [RFC6488]. The | |||
RPKI signed object template requires specification of the following | RPKI signed object template requires specification of the following | |||
data elements in the context of the manifest structure. | data elements in the context of the manifest structure. | |||
4.1. eContentType | 4.1. eContentType | |||
The eContentType for a manifest is defined as id-ct-rpkiManifest and | The eContentType for a manifest is defined as id-ct-rpkiManifest and | |||
has the numerical object identifier of 1.2.840.113549.1.9.16.1.26. | has the numerical OID of 1.2.840.113549.1.9.16.1.26. | |||
id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) | id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) | |||
rsadsi(113549) pkcs(1) pkcs9(9) 16 } | rsadsi(113549) pkcs(1) pkcs9(9) 16 } | |||
id-ct OBJECT IDENTIFIER ::= { id-smime 1 } | id-ct OBJECT IDENTIFIER ::= { id-smime 1 } | |||
id-ct-rpkiManifest OBJECT IDENTIFIER ::= { id-ct 26 } | id-ct-rpkiManifest OBJECT IDENTIFIER ::= { id-ct 26 } | |||
4.2. eContent | 4.2. eContent | |||
skipping to change at page 6, line 4 ¶ | skipping to change at line 238 ¶ | |||
that coincides with the interval from thisUpdate to nextUpdate in the | that coincides with the interval from thisUpdate to nextUpdate in the | |||
manifest, to prevent needless growth of the CA's CRL. | manifest, to prevent needless growth of the CA's CRL. | |||
The data elements of the manifest structure are defined as follows: | The data elements of the manifest structure are defined as follows: | |||
version: | version: | |||
The version number of this version of the manifest specification | The version number of this version of the manifest specification | |||
MUST be 0. | MUST be 0. | |||
manifestNumber: | manifestNumber: | |||
This field is an integer that is incremented (by 1) each time a | This field is an integer that is incremented (by 1) each time a | |||
new manifest is issued for a given publication point. This field | new manifest is issued for a given publication point. This field | |||
allows an RP to detect gaps in a sequence of published manifests. | allows an RP to detect gaps in a sequence of published manifests. | |||
As the manifest is modeled on the CRL specification, the | As the manifest is modeled on the CRL specification, the | |||
ManifestNumber is analogous to the CRLNumber, and the guidance in | manifestNumber is analogous to the CRLNumber, and the guidance in | |||
[RFC5280] for CRLNumber values is appropriate as to the range of | [RFC5280] for CRLNumber values is appropriate as to the range of | |||
number values that can be used for the manifestNumber. Manifest | number values that can be used for the manifestNumber. Manifest | |||
numbers can be expected to contain long integers. Manifest | numbers can be expected to contain long integers. Manifest | |||
verifiers MUST be able to process number values up to 20 octets. | verifiers MUST be able to process number values up to 20 octets. | |||
Conforming manifest issuers MUST NOT use number values longer than | Conforming manifest issuers MUST NOT use number values longer than | |||
20 octets. The issuer MUST increase the value of this field | 20 octets. The issuer MUST increase the value of this field | |||
monotonically for each newly-generated Manifest. Each RP MUST | monotonically for each newly generated manifest. Each RP MUST | |||
verify that a purported "new" Manifest contains a higher | verify that a purported "new" manifest contains a higher | |||
manifestNumber than previously-validated Manifests. If the | manifestNumber than previously validated manifests. If the | |||
purported "new" Manifest contains an equal or lower manifestNumber | purported "new" manifest contains a manifestNumber value equal to | |||
than previously-validated Manifests, the RP SHOULD use locally | or lower than manifestNumber values of previously validated | |||
cached versions of objects, as described in Section 6.6. | manifests, the RP SHOULD use locally cached versions of objects, | |||
as described in Section 6.6. | ||||
thisUpdate: | thisUpdate: | |||
This field contains the time when the manifest was created. This | This field contains the time when the manifest was created. This | |||
field has the same format constraints as specified in [RFC5280] | field has the same format constraints as specified in [RFC5280] | |||
for the CRL field of the same name. The issuer MUST ensure that | for the CRL field of the same name. The issuer MUST ensure that | |||
the value of this field is more recent than any previously- | the value of this field is more recent than any previously | |||
generated Manifest. Each RP MUST verify that this field value is | generated manifest. Each RP MUST verify that this field value is | |||
greater (more recent) than the most recent Manifest it has | greater (more recent) than the most recent manifest it has | |||
validated. If this field in a purported "new" Manifest is smaller | validated. If this field in a purported "new" manifest is smaller | |||
(less recent) than previously-validated Manifests, the RP SHOULD | (less recent) than previously validated manifests, the RP SHOULD | |||
use locally cached versions of objects, as described in | use locally cached versions of objects, as described in | |||
Section 6.6. | Section 6.6. | |||
nextUpdate: | nextUpdate: | |||
This field contains the time at which the next scheduled manifest | This field contains the time at which the next scheduled manifest | |||
will be issued. The value of nextUpdate MUST be later than the | will be issued. The value of nextUpdate MUST be later than the | |||
value of thisUpdate. The specification of the GeneralizedTime | value of thisUpdate. The specification of the GeneralizedTime | |||
value is the same as required for the thisUpdate field. | value is the same as required for the thisUpdate field. | |||
If the authority alters any of the items that it has published in | If the authority alters any of the items that it has published in | |||
the repository publication point, then the authority MUST issue a | the repository publication point, then the authority MUST issue a | |||
new manifest. Even if no changes are made to objects at a | new manifest. Even if no changes are made to objects at a | |||
publication point, a new manifest MUST be issued before the | publication point, a new manifest MUST be issued before the | |||
nextUpdate time. Each manifest encompasses a CRL, and the | nextUpdate time. Each manifest encompasses a CRL, and the | |||
nextUpdate field of the manifest SHOULD match that of the CRL's | nextUpdate field of the manifest SHOULD match that of the CRL's | |||
nextUpdate field, as the manifest will be re-issued when a new CRL | nextUpdate field, as the manifest will be reissued when a new CRL | |||
is published. When a new manifest is issued before the time | is published. When a new manifest is issued before the time | |||
specified in nextUpdate of the current manifest, the CA MUST also | specified in nextUpdate of the current manifest, the CA MUST also | |||
issue a new CRL that revokes the EE certificate corresponding to | issue a new CRL that revokes the EE certificate corresponding to | |||
the old manifest. | the old manifest. | |||
fileHashAlg: | fileHashAlg: | |||
This field contains the OID of the hash algorithm used to hash the | This field contains the OID of the hash algorithm used to hash the | |||
files that the authority has placed into the repository. The hash | files that the authority has placed into the repository. The hash | |||
algorithm used MUST conform to the RPKI Algorithms and Key Size | algorithm used MUST conform to the RPKI Algorithms and Key Size | |||
Profile specification [RFC7935]. | Profile specification [RFC7935]. | |||
fileList: | fileList: | |||
This field is a sequence of FileAndHash objects. There is one | This field is a sequence of FileAndHash objects. There is one | |||
FileAndHash entry for each currently valid signed object that has | FileAndHash entry for each currently valid signed object that has | |||
been published by the authority (at this publication point). Each | been published by the authority (at this publication point). Each | |||
FileAndHash is an ordered pair consisting of the name of the file | FileAndHash is an ordered pair consisting of the name of the file | |||
in the repository publication point (directory) that contains the | in the repository publication point (directory) that contains the | |||
object in question and a hash of the file's contents. | object in question and a hash of the file's contents. | |||
4.2.2. Names in FileAndHash objects | 4.2.2. Names in FileAndHash Objects | |||
Names that appear in the fileList MUST consist of one or more | Names that appear in the fileList MUST consist of one or more | |||
characters chosen from the set a-z, A-Z, 0-9, - (HYPHEN), or _ | characters chosen from the set a-z, A-Z, 0-9, - (HYPHEN), or _ | |||
(UNDERSCORE), followed by a single . (DOT), followed by a three- | (UNDERSCORE), followed by a single . (DOT), followed by a three- | |||
letter extension. The extension MUST be one of those enumerated in | letter extension. The extension MUST be one of those enumerated in | |||
the "RPKI Repository Naming Scheme" registry maintained by IANA | the "RPKI Repository Name Schemes" registry maintained by IANA | |||
[IANA-NAMING]. | [IANA-NAMING]. | |||
As an example, 'vixxBTS_TVXQ-2pmGOT7.cer' is a valid filename. | As an example, 'vixxBTS_TVXQ-2pmGOT7.cer' is a valid file name. | |||
The example above contains a mix of uppercase and lowercase | The example above contains a mix of uppercase and lowercase | |||
characters in the filename. CAs and RPs MUST be able to perform | characters in the file name. CAs and RPs MUST be able to perform | |||
filesystem operations in a case-sensitive, case-preserving manner. | filesystem operations in a case-sensitive, case-preserving manner. | |||
4.3. Content-Type Attribute | 4.3. Content-Type Attribute | |||
The mandatory content-type attribute MUST have its attrValues field | The mandatory content-type attribute MUST have its attrValues field | |||
set to the same OID as eContentType. This OID is id-ct-rpkiManifest | set to the same OID as eContentType. This OID is id-ct-rpkiManifest | |||
and has the numerical value of 1.2.840.113549.1.9.16.1.26. | and has the numerical value of 1.2.840.113549.1.9.16.1.26. | |||
4.4. Manifest Validation | 4.4. Manifest Validation | |||
To determine whether a manifest is valid, the RP MUST perform the | To determine whether a manifest is valid, the RP MUST perform the | |||
following checks in addition to those specified in [RFC6488]: | following checks in addition to those specified in [RFC6488]: | |||
1. The eContentType in the EncapsulatedContentInfo is id-ad- | 1. The eContentType in the EncapsulatedContentInfo is id-ad- | |||
rpkiManifest (OID 1.2.840.113549.1.9.16.1.26). | rpkiManifest (OID 1.2.840.113549.1.9.16.1.26). | |||
2. The version of the rpkiManifest is 0. | 2. The version of the rpkiManifest is 0. | |||
3. In the rpkiManifest, thisUpdate precedes nextUpdate. | 3. In the rpkiManifest, thisUpdate precedes nextUpdate. | |||
Note: Although the thisUpdate and nextUpdate fields in the Manifest | Note: Although the thisUpdate and nextUpdate fields in the manifest | |||
eContent MUST match the corresponding fields in the CRL associated | eContent MUST match the corresponding fields in the CRL associated | |||
with the Manifest, RPs MUST NOT reject a manifest solely because | with the manifest, RPs MUST NOT reject a manifest solely because | |||
these fields are not identical. | these fields are not identical. | |||
If the above procedure indicates that the manifest is invalid, then | If the above procedure indicates that the manifest is invalid, then | |||
the manifest MUST be discarded and treated as though no manifest were | the manifest MUST be discarded and treated as though no manifest were | |||
present. | present. | |||
5. Manifest Generation | 5. Manifest Generation | |||
5.1. Manifest Generation Procedure | 5.1. Manifest Generation Procedure | |||
For a CA publication point in the RPKI repository system, a CA MUST | For a CA publication point in the RPKI repository system, a CA MUST | |||
perform the following steps to generate a manifest: | perform the following steps to generate a manifest: | |||
1. Generate a new key pair for use in a "one-time-use" EE | 1. Generate a new key pair for use in a "one-time-use" EE | |||
certificate. | certificate. | |||
2. Issue an EE certificate for this key pair. The CA MUST revoke | 2. Issue an EE certificate for this key pair. The CA MUST revoke | |||
the EE certificate used for the manifest being replaced. | the EE certificate used for the manifest being replaced. | |||
This EE certificate MUST have an SIA extension access description | This EE certificate MUST have an SIA extension access description | |||
field with an accessMethod OID value of id-ad-signedobject, where | field with an accessMethod OID value of id-ad-signedObject, where | |||
the associated accessLocation references the publication point of | the associated accessLocation references the publication point of | |||
the manifest as an object URL. (RPs are required to verify both | the manifest as an object URL. (RPs are required to verify both | |||
of these syntactic constraints.) | of these syntactic constraints.) | |||
This EE certificate MUST describe its Internet Number Resources | This EE certificate MUST describe its Internet Number Resources | |||
(INRs) using the "inherit" attribute, rather than explicit | (INRs) using the "inherit" attribute, rather than an explicit | |||
description of a resource set (see [RFC3779]). (RPs are required | description of a resource set (see [RFC3779]). (RPs are required | |||
to verify this.) | to verify this.) | |||
The validity interval of the EE certificate MUST exactly match | The validity interval of the EE certificate MUST exactly match | |||
the thisUpdate and nextUpdate times specified in the manifest's | the thisUpdate and nextUpdate times specified in the manifest's | |||
eContent. (An RP MUST NOT consider misalignment of the validity | eContent. (An RP MUST NOT consider misalignment of the validity | |||
interval misalignment in and of itself to be an error.) | interval in and of itself to be an error.) | |||
3. The EE certificate MUST NOT be published in the authority's | 3. The EE certificate MUST NOT be published in the authority's | |||
repository publication point. | repository publication point. | |||
4. Construct the manifest content. | 4. Construct the manifest content. | |||
The manifest content is described in Section 4.2.1. The | The manifest content is described in Section 4.2.1. The | |||
manifest's fileList includes the file name and hash pair for each | manifest's fileList includes the file name and hash pair for each | |||
object issued by this CA that has been published at this | object issued by this CA that has been published at this | |||
repository publication point (directory). The collection of | repository publication point (directory). The collection of | |||
objects to be included in the manifest includes all certificates | objects to be included in the manifest includes all certificates | |||
issued by this CA that are published at the CA's repository | issued by this CA that are published at the CA's repository | |||
publication point, the most recent CRL issued by the CA, and all | publication point, the most recent CRL issued by the CA, and all | |||
objects verified by EE certificates that were issued by this CA | objects verified by EE certificates that were issued by this CA | |||
that are published at this repository publication point. | that are published at this repository publication point. | |||
(Sections 6.1-5 describes the checks that an RP MUST perform in | (Sections 6.1 through 6.5 describe the checks that an RP MUST | |||
support of the manifest content noted here.) | perform in support of the manifest content noted here.) | |||
Note that the manifest does not include a self reference (i.e., | Note that the manifest does not include a self reference (i.e., | |||
its own file name and hash), since it would be impossible to | its own file name and hash), since it would be impossible to | |||
compute the hash of the manifest itself prior to it being signed. | compute the hash of the manifest itself prior to it being signed. | |||
5. Encapsulate the manifest content using the CMS SignedData content | 5. Encapsulate the manifest content using the CMS SignedData content | |||
type (as specified Section 4), sign the manifest using the | type (as specified in Section 4), sign the manifest using the | |||
private key corresponding to the subject key contained in the EE | private key corresponding to the subject key contained in the EE | |||
certificate, and publish the manifest in the repository system | certificate, and publish the manifest in the repository system | |||
publication point that is described by the manifest. (RPs are | publication point that is described by the manifest. (RPs are | |||
required to verify the CMS signature.) | required to verify the CMS signature.) | |||
6. Because the key pair is to be used only once, the private key | 6. Because the key pair is to be used only once, the private key | |||
associated with this key pair MUST now be destroyed. | associated with this key pair MUST now be destroyed. | |||
5.2. Considerations for Manifest Generation | 5.2. Considerations for Manifest Generation | |||
skipping to change at page 10, line 34 ¶ | skipping to change at line 461 ¶ | |||
As noted earlier, manifests are designed to allow an RP to detect | As noted earlier, manifests are designed to allow an RP to detect | |||
manipulation of repository data, errors by a CA or repository | manipulation of repository data, errors by a CA or repository | |||
manager, and/or active attacks on the communication channel between | manager, and/or active attacks on the communication channel between | |||
an RP and a repository. Unless all of the files enumerated in a | an RP and a repository. Unless all of the files enumerated in a | |||
manifest can be obtained by an RP during a fetch operation, the fetch | manifest can be obtained by an RP during a fetch operation, the fetch | |||
is considered to have failed and the RP MUST retry the fetch later. | is considered to have failed and the RP MUST retry the fetch later. | |||
[RFC6480] suggests (but does not mandate) that the RPKI model employ | [RFC6480] suggests (but does not mandate) that the RPKI model employ | |||
fetches that are incremental, e.g., an RP transfers files from a | fetches that are incremental, e.g., an RP transfers files from a | |||
publication point only if they are new/changed since the previous, | publication point only if they are new/changed since the previous, | |||
successful, fetch represented in the RP's local cache. This document | successful fetch represented in the RP's local cache. This document | |||
avoids language that relies on details of the underlying file | avoids language that relies on details of the underlying file | |||
transfer mechanism employed by an RP and a publication point to | transfer mechanism employed by an RP and a publication point to | |||
effect this operation. Thus the term "fetch" refers to an operation | effect this operation. Thus, the term "fetch" refers to an operation | |||
that attempts to acquire the full set of files at a publication | that attempts to acquire the full set of files at a publication | |||
point, consistent with the id-ad-rpkiManifest URI extracted from a CA | point, consistent with the id-ad-rpkiManifest URI extracted from a CA | |||
certificate's SIA (see below). | certificate's SIA (see below). | |||
If a fetch fails, it is assumed that a subsequent fetch will resolve | If a fetch fails, it is assumed that a subsequent fetch will resolve | |||
problems encountered during the fetch. Until such time as a | problems encountered during the fetch. Until such time as a | |||
successful fetch is executed, an RP SHOULD use cached data from a | successful fetch is executed, an RP SHOULD use cached data from a | |||
previous, successful fetch. This response is intended to prevent an | previous, successful fetch. This response is intended to prevent an | |||
RP from misinterpreting data associated with a publication point, and | RP from misinterpreting data associated with a publication point and | |||
thus possibly treating invalid routes as valid, or vice versa. | thus possibly treating invalid routes as valid, or vice versa. | |||
The processing described below is designed to cause all RPs with | The processing described below is designed to cause all RPs with | |||
access to the same local cache and RPKI repository data to acquire | access to the same local cache and RPKI repository data to acquire | |||
the same set of validated repository files. It does not ensure that | the same set of validated repository files. It does not ensure that | |||
the RPs will achieve the same results with regard to validation of | the RPs will achieve the same results with regard to validation of | |||
RPKI data, since that depends on how each RP resolves any conflicts | RPKI data, since that depends on how each RP resolves any conflicts | |||
that may arise in processing the retrieved files. Moreover, in | that may arise in processing the retrieved files. Moreover, in | |||
operation, different RPs will access repositories at different times, | operation, different RPs will access repositories at different times, | |||
and some RPs may experience local cache failures, so there is no | and some RPs may experience local cache failures, so there is no | |||
guarantee that all RPs will achieve the same results with regard to | guarantee that all RPs will achieve the same results with regard to | |||
acquisition or validation of RPKI data. | acquisition or validation of RPKI data. | |||
Note also that there is a "chicken and egg" relationship between the | Note also that there is a "chicken and egg" relationship between the | |||
manifest and the CRL for a given CA instance. If the EE certificate | manifest and the CRL for a given CA instance. If the EE certificate | |||
for the current manifest is revoked, i.e., it appears in the current | for the current manifest is revoked, i.e., it appears in the current | |||
CRL, then the CA or publication point manager has made a serious | CRL, then the CA or publication point manager has made a serious | |||
error. In this case the fetch has failed; proceed to Section 6.6. | error. In this case, the fetch has failed; proceed to Section 6.6. | |||
Similarly, if the CRL is not listed on a valid, current manifest, | Similarly, if the CRL is not listed on a valid, current manifest, | |||
acquired during a fetch, the fetch has failed; proceed to | acquired during a fetch, the fetch has failed; proceed to | |||
Section 6.6, because the CRL is considered missing. | Section 6.6, because the CRL is considered missing. | |||
6.1. Manifest Processing Overview | 6.1. Manifest Processing Overview | |||
For a given publication point, an RP MUST perform a series of tests | For a given publication point, an RP MUST perform a series of tests | |||
to determine which signed object files at the publication point are | to determine which signed object files at the publication point are | |||
acceptable. The tests described below (Section 6.2 to Section 6.5) | acceptable. The tests described below (Sections 6.2 through 6.5) are | |||
are to be performed using the manifest identified by the id-ad- | to be performed using the manifest identified by the id-ad- | |||
rpkiManifest URI extracted from a CA certificate's SIA. All of the | rpkiManifest URI extracted from a CA certificate's SIA. All of the | |||
files referenced by the manifest MUST be located at the publication | files referenced by the manifest MUST be located at the publication | |||
point specified by the id-ad-caRepository URI from the (same) CA | point specified by the id-ad-caRepository URI from the (same) CA | |||
certificate's SIA. The manifest and the files it references MUST | certificate's SIA. The manifest and the files it references MUST | |||
reside at the same publication point. If an RP encounters any files | reside at the same publication point. If an RP encounters any files | |||
that appear on a manifest but do not reside at the same publication | that appear on a manifest but do not reside at the same publication | |||
point as the manifest the RP MUST treat the fetch as failed, and a | point as the manifest, the RP MUST treat the fetch as failed, and a | |||
warning MUST be issued (see Section 6.6 below). | warning MUST be issued (see Section 6.6 below). | |||
Note that, during CA key rollover [RFC6489], signed objects for two | Note that, during CA key rollover [RFC6489], signed objects for two | |||
or more different CA instances will appear at the same publication | or more different CA instances will appear at the same publication | |||
point. Manifest processing is to be performed separately for each CA | point. Manifest processing is to be performed separately for each CA | |||
instance, guided by the SIA id-ad-rpkiManifest URI in each CA | instance, guided by the SIA id-ad-rpkiManifest URI in each CA | |||
certificate. | certificate. | |||
6.2. Acquiring a Manifest for a CA | 6.2. Acquiring a Manifest for a CA | |||
The RP MUST fetch the manifest identified by the SIA id-ad- | The RP MUST fetch the manifest identified by the SIA id-ad- | |||
rpkiManifest URI in the CA certificate. If an RP cannot retrieve a | rpkiManifest URI in the CA certificate. If an RP cannot retrieve a | |||
manifest using this URI, or if the manifest is not valid | manifest using this URI or if the manifest is not valid | |||
(Section 4.4), an RP MUST treat this as a failed fetch and proceed to | (Section 4.4), an RP MUST treat this as a failed fetch; proceed to | |||
Section 6.6; otherwise proceed to Section 6.3. | Section 6.6. Otherwise, proceed to Section 6.3. | |||
6.3. Detecting Stale and or Prematurely-issued Manifests | 6.3. Detecting Stale and/or Prematurely Issued Manifests | |||
The RP MUST check that the current time (translated to UTC) is | The RP MUST check that the current time (translated to UTC) is | |||
between thisUpdate and nextUpdate. If the current time lies within | between thisUpdate and nextUpdate. If the current time lies within | |||
this interval, proceed to Section 6.4. If the current time is | this interval, proceed to Section 6.4. If the current time is | |||
earlier than thisUpdate, the CA may have made an error or the RP's | earlier than thisUpdate, the CA may have made an error or the RP's | |||
local notion of time may be in error; the RP MUST treat this as a | local notion of time may be in error. The RP MUST treat this as a | |||
failed fetch and proceed to Section 6.6. If the current time is | failed fetch; proceed to Section 6.6. If the current time is later | |||
later than nextUpdate, then the manifest is stale; this is a failed | than nextUpdate, then the manifest is stale; the RP MUST treat this | |||
fetch and RP MUST proceed to Section 6.6; otherwise proceed to | as a failed fetch. Proceed to Section 6.6. Otherwise, proceed to | |||
Section 6.4. | Section 6.4. | |||
6.4. Acquiring Files Referenced by a Manifest | 6.4. Acquiring Files Referenced by a Manifest | |||
The RP MUST acquire all of the files enumerated in the manifest | The RP MUST acquire all of the files enumerated in the manifest | |||
(fileList) from the publication point. If there are files listed in | (fileList) from the publication point. If there are files listed in | |||
the manifest that cannot be retrieved from the publication point, the | the manifest that cannot be retrieved from the publication point, the | |||
fetch has failed and the RP MUST proceed to Section 6.6; otherwise, | RP MUST treat this as a failed fetch. Proceed to Section 6.6. | |||
proceed to Section 6.5. | Otherwise, proceed to Section 6.5. | |||
6.5. Matching File Names and Hashes | 6.5. Matching File Names and Hashes | |||
The RP MUST verify that the hash value of each file listed in the | The RP MUST verify that the hash value of each file listed in the | |||
manifest matches the value obtained by hashing the file acquired from | manifest matches the value obtained by hashing the file acquired from | |||
the publication point. If the computed hash value of a file listed | the publication point. If the computed hash value of a file listed | |||
on the manifest does not match the hash value contained in the | on the manifest does not match the hash value contained in the | |||
manifest, then the fetch has failed and the RP MUST proceed to | manifest, then the fetch has failed, and the RP MUST respond | |||
Section 6.6. | accordingly. Proceed to Section 6.6. | |||
6.6. Failed Fetches | 6.6. Failed Fetches | |||
If a fetch fails for any of the reasons cited in 6.2-6.5, the RP MUST | If a fetch fails for any of the reasons cited in Sections 6.2 through | |||
issue a warning indicating the reason(s) for termination of | 6.5, the RP MUST issue a warning indicating the reason(s) for | |||
processing with regard to this CA instance. It is RECOMMENDED that a | termination of processing with regard to this CA instance. It is | |||
human operator be notified of this warning. | RECOMMENDED that a human operator be notified of this warning. | |||
Termination of processing means that the RP SHOULD continue to use | Termination of processing means that the RP SHOULD continue to use | |||
cached versions of the objects associated with this CA instance, | cached versions of the objects associated with this CA instance, | |||
until such time as they become stale or they can be replaced by | until such time as they become stale or they can be replaced by | |||
objects from a successful fetch. This implies that the RP MUST NOT | objects from a successful fetch. This implies that the RP MUST NOT | |||
try to acquire and validate subordinate signed objects, e.g., | try to acquire and validate subordinate signed objects, e.g., | |||
subordinate CA certificates, until the next interval when the RP is | subordinate CA certificates, until the next interval when the RP is | |||
scheduled to fetch and process data for this CA instance. | scheduled to fetch and process data for this CA instance. | |||
7. Publication Repositories | 7. Publication Repositories | |||
The RPKI publication system model requires that every publication | The RPKI publication system model requires that every publication | |||
point be associated with one or more CAs, and be non-empty. Upon | point be associated with one or more CAs and be non-empty. Upon | |||
creation of the publication point associated with a CA, the CA MUST | creation of the publication point associated with a CA, the CA MUST | |||
create and publish a manifest as well as a CRL. A CA's manifest will | create and publish a manifest as well as a CRL. A CA's manifest will | |||
always contain at least one entry, i.e., a CRL issued by the CA | always contain at least one entry, i.e., a CRL issued by the CA | |||
[RFC6481],corresponding to the scope of this manifest. | [RFC6481], corresponding to the scope of this manifest. | |||
Every published signed object in the RPKI [RFC6488] is published in | Every published signed object in the RPKI [RFC6488] is published in | |||
the repository publication point of the CA that issued the EE | the repository publication point of the CA that issued the EE | |||
certificate, and is listed in the manifest associated with that CA | certificate, and is listed in the manifest associated with that CA | |||
certificate. | certificate. | |||
8. Security Considerations | 8. Security Considerations | |||
Manifests provide an additional level of protection for RPKI RPs. | Manifests provide an additional level of protection for RPKI RPs. | |||
Manifests can assist an RP to determine if a repository object has | Manifests can assist an RP in determining if a repository object has | |||
been deleted, occluded, or otherwise removed from view, or if a | been deleted, occluded, or otherwise removed from view, or if a | |||
publication of a newer version of an object has been suppressed (and | publication of a newer version of an object has been suppressed (and | |||
an older version of the object has been substituted). | an older version of the object has been substituted). | |||
Manifests cannot repair the effects of such forms of corruption of | Manifests cannot repair the effects of such forms of corruption of | |||
repository retrieval operations. However, a manifest enables an RP | repository retrieval operations. However, a manifest enables an RP | |||
to determine if a locally maintained copy of a repository is a | to determine if a locally maintained copy of a repository is a | |||
complete and up-to-date copy, even when the repository retrieval | complete and up-to-date copy, even when the repository retrieval | |||
operation is conducted over an insecure channel. In cases where the | operation is conducted over an insecure channel. In cases where the | |||
manifest and the retrieved repository contents differ, the manifest | manifest and the retrieved repository contents differ, the manifest | |||
can assist in determining which repository objects form the | can assist in determining which repository objects form the | |||
difference set in terms of missing, extraneous, or superseded | difference set in terms of missing, extraneous, or superseded | |||
objects. | objects. | |||
The signing structure of a manifest and the use of the nextUpdate | The signing structure of a manifest and the use of the nextUpdate | |||
value allows an RP to determine if the manifest itself is the subject | value allow an RP to determine if the manifest itself is the subject | |||
of attempted alteration. The requirement for every repository | of attempted alteration. The requirement for every repository | |||
publication point to contain at least one manifest allows an RP to | publication point to contain at least one manifest allows an RP to | |||
determine if the manifest itself has been occluded from view. Such | determine if the manifest itself has been occluded from view. Such | |||
attacks against the manifest are detectable within the time frame of | attacks against the manifest are detectable within the time frame of | |||
the regular schedule of manifest updates. Forms of replay attack | the regular schedule of manifest updates. Forms of replay attacks | |||
within finer-grained time frames are not necessarily detectable by | within finer-grained time frames are not necessarily detectable by | |||
the manifest structure. | the manifest structure. | |||
9. IANA Considerations | 9. IANA Considerations | |||
As [RFC6488] created and populated the registries "RPKI Signed | The "RPKI Signed Objects" registry was originally created and | |||
Object" and three-letter filename extensions for "RPKI Repository | populated by [RFC6488]. The "RPKI Repository Name Schemes" registry | |||
Name Schemes," no new action is requested of the IANA. | was created by [RFC6481] and created four of the initial three-letter | |||
file name extensions. IANA has updated the reference for the | ||||
"Manifest" row in the "RPKI Signed Objects" registry to point to this | ||||
document. | ||||
10. Acknowledgements | IANA has also updated the following entries to refer to this document | |||
instead of RFC 6486: | ||||
The authors would like to acknowledge the contributions from George | * id-mod-rpkiManifest (60) in the "SMI Security for S/MIME Module | |||
Michelson and Randy Bush in the preparation of the manifest | Identifier (1.2.840.113549.1.9.16.0)" registry | |||
specification. Additionally, the authors would like to thank Mark | ||||
Reynolds and Christopher Small for assistance in clarifying manifest | ||||
validation and RP behavior. The authors also wish to thank Tim | ||||
Bruijnzeels, Job Snijders, Oleg Muravskiy, Sean Turner, Adianto | ||||
Wibisono, Murray Kucherawy, Francesca Palombini, Roman Danyliw, Lars | ||||
Eggert, Robert Wilton, and Benjamin Kaduk for their helpful review of | ||||
this document. | ||||
11. References | * id-ct-rpkiManifest (26) in the "SMI Security for S/MIME CMS | |||
Content Type (1.2.840.113549.1.9.16.1)" registry | ||||
11.1. Normative References | * the "Security considerations" entry in the application media type | |||
registration for rpki-manifest | ||||
No other actions are required. | ||||
10. References | ||||
10.1. Normative References | ||||
[IANA-NAMING] | [IANA-NAMING] | |||
"RPKI Repository Name Schemes", | IANA, "RPKI Repository Name Schemes", | |||
<https://www.iana.org/assignments/rpki/rpki.xhtml#name- | <https://www.iana.org/assignments/rpki/>. | |||
schemes>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
skipping to change at page 14, line 47 ¶ | skipping to change at line 663 ¶ | |||
[RFC6481] Huston, G., Loomans, R., and G. Michaelson, "A Profile for | [RFC6481] Huston, G., Loomans, R., and G. Michaelson, "A Profile for | |||
Resource Certificate Repository Structure", RFC 6481, | Resource Certificate Repository Structure", RFC 6481, | |||
DOI 10.17487/RFC6481, February 2012, | DOI 10.17487/RFC6481, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6481>. | <https://www.rfc-editor.org/info/rfc6481>. | |||
[RFC6482] Lepinski, M., Kent, S., and D. Kong, "A Profile for Route | [RFC6482] Lepinski, M., Kent, S., and D. Kong, "A Profile for Route | |||
Origin Authorizations (ROAs)", RFC 6482, | Origin Authorizations (ROAs)", RFC 6482, | |||
DOI 10.17487/RFC6482, February 2012, | DOI 10.17487/RFC6482, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6482>. | <https://www.rfc-editor.org/info/rfc6482>. | |||
[RFC7935] Huston, G. and G. Michaelson, Ed., "The Profile for | ||||
Algorithms and Key Sizes for Use in the Resource Public | ||||
Key Infrastructure", RFC 7935, DOI 10.17487/RFC7935, | ||||
August 2016, <https://www.rfc-editor.org/info/rfc7935>. | ||||
[RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for | [RFC6487] Huston, G., Michaelson, G., and R. Loomans, "A Profile for | |||
X.509 PKIX Resource Certificates", RFC 6487, | X.509 PKIX Resource Certificates", RFC 6487, | |||
DOI 10.17487/RFC6487, February 2012, | DOI 10.17487/RFC6487, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6487>. | <https://www.rfc-editor.org/info/rfc6487>. | |||
[RFC6488] Lepinski, M., Chi, A., and S. Kent, "Signed Object | [RFC6488] Lepinski, M., Chi, A., and S. Kent, "Signed Object | |||
Template for the Resource Public Key Infrastructure | Template for the Resource Public Key Infrastructure | |||
(RPKI)", RFC 6488, DOI 10.17487/RFC6488, February 2012, | (RPKI)", RFC 6488, DOI 10.17487/RFC6488, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6488>. | <https://www.rfc-editor.org/info/rfc6488>. | |||
[RFC7935] Huston, G. and G. Michaelson, Ed., "The Profile for | ||||
Algorithms and Key Sizes for Use in the Resource Public | ||||
Key Infrastructure", RFC 7935, DOI 10.17487/RFC7935, | ||||
August 2016, <https://www.rfc-editor.org/info/rfc7935>. | ||||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[X.690] "X.690", | [X.690] International Telecommunication Union, "Information | |||
<https://www.itu.int/rec/T-REC-X.690-199511-S!Cor1>. | technology - ASN.1 encoding rules: Specification of Basic | |||
Encoding Rules (BER), Canonical Encoding Rules (CER) and | ||||
11.2. Informative References | Distinguished Encoding Rules (DER)", ITU-T Recommendation | |||
X.690, February 2021, | ||||
<https://www.itu.int/rec/T-REC-X.690-202102-I/en>. | ||||
[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | 10.2. Informative References | |||
RFC 5652, DOI 10.17487/RFC5652, September 2009, | ||||
<https://www.rfc-editor.org/info/rfc5652>. | ||||
[RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP | [RFC3779] Lynn, C., Kent, S., and K. Seo, "X.509 Extensions for IP | |||
Addresses and AS Identifiers", RFC 3779, | Addresses and AS Identifiers", RFC 3779, | |||
DOI 10.17487/RFC3779, June 2004, | DOI 10.17487/RFC3779, June 2004, | |||
<https://www.rfc-editor.org/info/rfc3779>. | <https://www.rfc-editor.org/info/rfc3779>. | |||
[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | ||||
RFC 5652, DOI 10.17487/RFC5652, September 2009, | ||||
<https://www.rfc-editor.org/info/rfc5652>. | ||||
[RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support | [RFC6480] Lepinski, M. and S. Kent, "An Infrastructure to Support | |||
Secure Internet Routing", RFC 6480, DOI 10.17487/RFC6480, | Secure Internet Routing", RFC 6480, DOI 10.17487/RFC6480, | |||
February 2012, <https://www.rfc-editor.org/info/rfc6480>. | February 2012, <https://www.rfc-editor.org/info/rfc6480>. | |||
[RFC6486] Austein, R., Huston, G., Kent, S., and M. Lepinski, | [RFC6486] Austein, R., Huston, G., Kent, S., and M. Lepinski, | |||
"Manifests for the Resource Public Key Infrastructure | "Manifests for the Resource Public Key Infrastructure | |||
(RPKI)", RFC 6486, DOI 10.17487/RFC6486, February 2012, | (RPKI)", RFC 6486, DOI 10.17487/RFC6486, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6486>. | <https://www.rfc-editor.org/info/rfc6486>. | |||
[RFC6489] Huston, G., Michaelson, G., and S. Kent, "Certification | [RFC6489] Huston, G., Michaelson, G., and S. Kent, "Certification | |||
Authority (CA) Key Rollover in the Resource Public Key | Authority (CA) Key Rollover in the Resource Public Key | |||
Infrastructure (RPKI)", BCP 174, RFC 6489, | Infrastructure (RPKI)", BCP 174, RFC 6489, | |||
DOI 10.17487/RFC6489, February 2012, | DOI 10.17487/RFC6489, February 2012, | |||
<https://www.rfc-editor.org/info/rfc6489>. | <https://www.rfc-editor.org/info/rfc6489>. | |||
Appendix A. ASN.1 Module | Appendix A. ASN.1 Module | |||
RPKIManifest { iso(1) member-body(2) us(840) rsadsi(113549) | RPKIManifest { iso(1) member-body(2) us(840) rsadsi(113549) | |||
pkcs(1) pkcs9(9) smime(16) mod(0) TBD } | pkcs(1) pkcs9(9) smime(16) mod(0) 60 } | |||
DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS EXPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
-- EXPORTS ALL -- | -- EXPORTS ALL -- | |||
IMPORTS | IMPORTS | |||
CONTENT-TYPE | CONTENT-TYPE | |||
FROM CryptographicMessageSyntax-2010 -- in [RFC6268] | FROM CryptographicMessageSyntax-2010 -- in RFC 6268 | |||
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) | { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) | |||
pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) } ; | pkcs-9(9) smime(16) modules(0) id-mod-cms-2009(58) } ; | |||
-- Manifest Content Type | -- Manifest Content Type | |||
ct-rpkiManifest CONTENT-TYPE ::= | ct-rpkiManifest CONTENT-TYPE ::= | |||
{ TYPE Manifest IDENTIFIED BY id-ct-rpkiManifest } | { TYPE Manifest IDENTIFIED BY id-ct-rpkiManifest } | |||
id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2) | id-smime OBJECT IDENTIFIER ::= { iso(1) member-body(2) | |||
us(840) rsadsi(113549) pkcs(1) pkcs9(9) 16 } | us(840) rsadsi(113549) pkcs(1) pkcs9(9) 16 } | |||
skipping to change at page 16, line 47 ¶ | skipping to change at line 762 ¶ | |||
FileAndHash ::= SEQUENCE { | FileAndHash ::= SEQUENCE { | |||
file IA5String, | file IA5String, | |||
hash BIT STRING | hash BIT STRING | |||
} | } | |||
END | END | |||
Appendix B. Changes since RFC 6486 | Appendix B. Changes since RFC 6486 | |||
In 2019, it came to light that multiple Relying Party implementations | In 2019, it came to light that multiple RP implementations were in a | |||
were in a vulnerable position, possibly due to perceived ambiguity in | vulnerable position, possibly due to perceived ambiguity in the | |||
the original [RFC6486] specification. This document attempts to | original [RFC6486] specification. This document attempts to clarify | |||
clarify the innovative concept and application of RPKI Manifests in | the innovative concept and application of RPKI manifests in light of | |||
light of real-world deployment experience in the global Internet | real-world deployment experience in the global Internet routing | |||
routing system, to avoid future problematic cases. | system, to avoid future problematic cases. | |||
The following list summarizes the changes between RFC 6486 and this | The following list summarizes the changes between RFC 6486 and this | |||
document: | document: | |||
* Forbid "sequential-use" EE certificates, instead mandate "one- | * Forbidding "sequential-use" EE certificates and instead mandating | |||
time-use" EE certificates. | "one-time-use" EE certificates. | |||
* Clarify that Manifest EE certificates are to be issued with a | * Clarifying that manifest EE certificates are to be issued with a | |||
validity period which coincides with the interval specified in the | validity period that coincides with the interval specified in the | |||
Manifest eContent, which coincides with the CRL's thisUpdate and | manifest eContent, which coincides with the CRL's thisUpdate and | |||
nextUpdate. | nextUpdate. | |||
* Clarify the manifestNumber is monotonically incremented in steps | * Clarifying that the manifestNumber is monotonically incremented in | |||
of 1. | steps of 1. | |||
* Recommend CA issuers to coincidence the applicable CRL's | * Recommending that CA issuers include the applicable CRL's | |||
nextUpdate with the Manifest's nextUpdate. | nextUpdate with the manifest's nextUpdate. | |||
* The set of valid characters in FileAndHash filenames was | * Constraining the set of valid characters in FileAndHash file | |||
constrained. | names. | |||
* Clarifications that an RP unable to obtain the full set of files | * Clarifying that an RP unable to obtain the full set of files | |||
listed on a Manifest is considered a failure state, in which case | listed on a manifest is considered to be in a failure state, in | |||
cached data from a previous attempt should be used (if available). | which case cached data from a previous attempt should be used (if | |||
available). | ||||
* Clarifications on the requirement for a current CRL to be present, | * Clarifying the requirement for a current CRL to be present, | |||
listed, and verified. | listed, and verified. | |||
* Removed the notion of 'local policy'. | * Removing the notion of "local policy". | |||
Acknowledgements | ||||
The authors would like to acknowledge the contributions from George | ||||
Michaelson and Randy Bush in the preparation of the manifest | ||||
specification. Additionally, the authors would like to thank Mark | ||||
Reynolds and Christopher Small for assistance in clarifying manifest | ||||
validation and RP behavior. The authors also wish to thank Tim | ||||
Bruijnzeels, Job Snijders, Oleg Muravskiy, Sean Turner, Adianto | ||||
Wibisono, Murray Kucherawy, Francesca Palombini, Roman Danyliw, Lars | ||||
Eggert, Robert Wilton, and Benjamin Kaduk for their helpful review of | ||||
this document. | ||||
Authors' Addresses | Authors' Addresses | |||
Rob Austein | Rob Austein | |||
Arrcus, Inc. | Arrcus, Inc. | |||
Email: sra@hactrn.net | Email: sra@hactrn.net | |||
Geoff Huston | Geoff Huston | |||
APNIC | APNIC | |||
6 Cordelia St | 6 Cordelia St | |||
South Brisbane QLD 4101 | South Brisbane QLD 4101 | |||
Australia | Australia | |||
Email: gih@apnic.net | Email: gih@apnic.net | |||
Stephen Kent | Stephen Kent | |||
Independent | Independent | |||
Email: kent@alum.mit.edu | Email: kent@alum.mit.edu | |||
Matt Lepinski | Matt Lepinski | |||
New College Florida | New College Florida | |||
5800 Bay Shore Rd. | 5800 Bay Shore Rd. | |||
Sarasota, FL 34243 | Sarasota, FL 34243 | |||
USA | United States of America | |||
Email: mlepinski@ncf.edu | Email: mlepinski@ncf.edu | |||
End of changes. 72 change blocks. | ||||
176 lines changed or deleted | 195 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |