Each RP
MUST use the current manifest of a CA to control addition of listed files to the set of signed objects the RP employs for validating basic RPKI objects: certificates, ROAs, and CRLs. Any files not listed on the manifest
MUST NOT be used for validation of these objects. However, files not listed on a manifest
MAY be employed to validate other signed objects, if the profile of the object type explicitly states that such behavior is allowed (or required). Note that relying on files not listed in a manifest may allow an attacker to effect substitution attacks against such objects.
As noted earlier, manifests are designed to allow an RP to detect manipulation of repository data, errors by a CA or repository manager, and/or active attacks on the communication channel between 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 is considered to have failed and the RP
MUST retry the fetch later.
[
RFC 6480] suggests (but does not mandate) that the RPKI model employ fetches that are incremental, e.g., an RP transfers files from a publication point only if they are new/changed since the previous, successful fetch represented in the RP's local cache. This document avoids language that relies on details of the underlying file transfer mechanism employed by an RP and a publication point to effect this operation. Thus, the term "fetch" refers to an operation that attempts to acquire the full set of files at a publication point, consistent with the id-ad-rpkiManifest URI extracted from a CA certificate's SIA (see below).
If a fetch fails, it is assumed that a subsequent fetch will resolve problems encountered during the fetch. Until such time as a successful fetch is executed, an RP
SHOULD use cached data from a previous, successful fetch. This response is intended to prevent an RP from misinterpreting data associated with a publication point and thus possibly treating invalid routes as valid, or vice versa.
The processing described below is designed to cause all RPs with 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 RPs will achieve the same results with regard to validation of RPKI data, since that depends on how each RP resolves any conflicts that may arise in processing the retrieved files. Moreover, in operation, different RPs will access repositories at different times, and some RPs may experience local cache failures, so there is no guarantee that all RPs will achieve the same results with regard to acquisition or validation of RPKI data.
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 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 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, acquired during a fetch, the fetch has failed; proceed to
Section 6.6, because the CRL is considered missing.
For a given publication point, an RP
MUST perform a series of tests to determine which signed object files at the publication point are acceptable. The tests described below (Sections [
6.2] through [
6.5]) are to be performed using the manifest identified by the id-ad- rpkiManifest URI extracted from a CA certificate's SIA. All of the files referenced by the manifest
MUST be located at the publication point specified by the id-ad-caRepository URI from the (same) CA certificate's SIA. The manifest and the files it references
MUST 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 point as the manifest, the RP
MUST treat the fetch as failed, and a warning
MUST be issued (see
Section 6.6 below).
Note that, during CA key rollover [
RFC 6489], signed objects for two or more different CA instances will appear at the same publication point. Manifest processing is to be performed separately for each CA instance, guided by the SIA id-ad-rpkiManifest URI in each CA certificate.
The RP
MUST fetch the manifest identified by the SIA id-ad- rpkiManifest URI in the CA certificate. If an RP cannot retrieve a manifest using this URI or if the manifest is not valid (
Section 4.4), an RP
MUST treat this as a failed fetch; proceed to
Section 6.6. Otherwise, proceed to
Section 6.3.
The RP
MUST check that the current time (translated to UTC) is between thisUpdate and nextUpdate. If the current time lies within 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 local notion of time may be in error. The RP
MUST treat this as a failed fetch; proceed to
Section 6.6. If the current time is later than nextUpdate, then the manifest is stale; the RP
MUST treat this as a failed fetch. Proceed to
Section 6.6. Otherwise, proceed to
Section 6.4.
The RP
MUST acquire all of the files enumerated in the manifest (fileList) from the publication point. If there are files listed in the manifest that cannot be retrieved from the publication point, the RP
MUST treat this as a failed fetch. Proceed to
Section 6.6. Otherwise, proceed to
Section 6.5.
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 the publication point. If the computed hash value of a file listed on the manifest does not match the hash value contained in the manifest, then the fetch has failed, and the RP
MUST respond accordingly. Proceed to
Section 6.6.
If a fetch fails for any of the reasons cited in Sections [
6.2] through [
6.5], the RP
MUST issue a warning indicating the reason(s) for termination of processing with regard to this CA instance. It is
RECOMMENDED that a human operator be notified of this warning.
Termination of processing means that the RP
SHOULD continue to use cached versions of the objects associated with this CA instance, 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 try to acquire and validate subordinate signed objects, e.g., subordinate CA certificates, until the next interval when the RP is scheduled to fetch and process data for this CA instance.