rfc8488.txt | test8488.v2v3.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) O. Muravskiy | Internet Engineering Task Force (IETF) O. Muravskiy | |||
Request for Comments: 8488 RIPE NCC | Request for Comments: 8488 RIPE NCC | |||
Category: Informational T. Bruijnzeels | Category: Informational T. Bruijnzeels | |||
ISSN: 2070-1721 NLnet Labs | ISSN: 2070-1721 NLNetLabs | |||
December 2018 | December 2018 | |||
RIPE NCC's Implementation of Resource Public Key Infrastructure (RPKI) | RIPE NCC's Implementation of Resource Public Key Infrastructure (RPKI) | |||
Certificate Tree Validation | Certificate Tree Validation | |||
Abstract | Abstract | |||
This document describes an approach to validating the content of the | This document describes an approach to validating the content of the | |||
Resource Public Key Infrastructure (RPKI) certificate tree, as it is | Resource Public Key Infrastructure (RPKI) certificate tree, as it is | |||
implemented in the RIPE NCC RPKI Validator. This approach is | implemented in the RIPE NCC RPKI Validator. This approach is | |||
skipping to change at page 2, line 12 ¶ | skipping to change at line 44 ¶ | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
https://www.rfc-editor.org/info/rfc8488. | https://www.rfc-editor.org/info/rfc8488. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction | |||
2. General Considerations . . . . . . . . . . . . . . . . . . . 4 | 2. General Considerations | |||
2.1. Hash Comparisons . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Hash Comparisons | |||
2.2. Discovery of RPKI Objects Issued by a CA . . . . . . . . 5 | 2.2. Discovery of RPKI Objects Issued by a CA | |||
2.3. Manifest Entries versus Repository Content . . . . . . . 5 | 2.3. Manifest Entries versus Repository Content | |||
3. Top-Down Validation of a Single Trust Anchor Certificate Tree 6 | 3. Top-Down Validation of a Single Trust Anchor Certificate Tree | |||
3.1. Fetching the Trust Anchor Certificate Using the Trust | 3.1. Fetching the Trust Anchor Certificate Using the Trust | |||
Anchor Locator . . . . . . . . . . . . . . . . . . . . . 6 | Anchor Locator | |||
3.2. CA Certificate Validation . . . . . . . . . . . . . . . . 7 | 3.2. CA Certificate Validation | |||
3.2.1. Finding the Most Recent Valid Manifest and CRL . . . 8 | 3.2.1. Finding the Most Recent Valid Manifest and | |||
3.2.2. Validating Manifest Entries . . . . . . . . . . . . . 9 | CRL | |||
3.3. Object Store Cleanup . . . . . . . . . . . . . . . . . . 10 | 3.2.2. Validating Manifest Entries | |||
4. Remote Objects Fetcher . . . . . . . . . . . . . . . . . . . 11 | 3.3. Object Store Cleanup | |||
4.1. Fetcher Operations . . . . . . . . . . . . . . . . . . . 11 | 4. Remote Objects Fetcher | |||
4.1.1. Fetch Repository Objects . . . . . . . . . . . . . . 12 | 4.1. Fetcher Operations | |||
4.1.2. Fetch Single Repository Object . . . . . . . . . . . 12 | 4.1.1. Fetch Repository Objects | |||
5. Local Object Store . . . . . . . . . . . . . . . . . . . . . 12 | 4.1.2. Fetch Single Repository Object | |||
5.1. Store Operations . . . . . . . . . . . . . . . . . . . . 12 | 5. Local Object Store | |||
5.1.1. Store Repository Object . . . . . . . . . . . . . . . 12 | 5.1. Store Operations | |||
5.1.2. Get Objects by Hash . . . . . . . . . . . . . . . . . 12 | 5.1.1. Store Repository Object | |||
5.1.3. Get Certificate Objects by URI . . . . . . . . . . . 13 | 5.1.2. Get Objects by Hash | |||
5.1.4. Get Manifest Objects by AKI . . . . . . . . . . . . . 13 | 5.1.3. Get Certificate Objects by URI | |||
5.1.5. Delete Objects for a URI . . . . . . . . . . . . . . 13 | 5.1.4. Get Manifest Objects by AKI | |||
5.1.6. Delete Outdated Objects . . . . . . . . . . . . . . . 13 | 5.1.5. Delete Objects for a URI | |||
5.1.7. Update Object's Validation Time . . . . . . . . . . . 13 | 5.1.6. Delete Outdated Objects | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 5.1.7. Update Object's Validation Time | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 6. IANA Considerations | |||
7.1. Hash Collisions . . . . . . . . . . . . . . . . . . . . . 13 | 7. Security Considerations | |||
7.2. Algorithm Agility . . . . . . . . . . . . . . . . . . . . 13 | 7.1. Hash Collisions | |||
7.3. Mismatch between the Expected and Actual Location of an | 7.2. Algorithm Agility | |||
Object in the Repository . . . . . . . . . . . . . . . . 14 | 7.3. Mismatch between the Expected and Actual Location of | |||
7.4. Manifest Content versus Publication Point Content . . . . 14 | an Object in the Repository | |||
7.5. Possible Denial of Service . . . . . . . . . . . . . . . 15 | 7.4. Manifest Content versus Publication Point Content | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.5. Possible Denial of Service | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 15 | 8. References | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 16 | 8.1. Normative References | |||
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 16 | 8.2. Informative References | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17 | Acknowledgements | |||
Authors' Addresses | ||||
1. Introduction | 1. Introduction | |||
This document describes how the RIPE NCC RPKI Validator version 2.25 | This document describes how the RIPE NCC RPKI Validator version 2.25 | |||
has been implemented. Source code for this software can be found at | has been implemented. Source code for this software can be found at | |||
[rpki-validator]. The purpose of this document is to provide | [rpki-validator]. The purpose of this document is to provide | |||
transparency to users of (and contributors to) this software tool. | transparency to users of (and contributors to) this software tool. | |||
In order to use information published in RPKI repositories, Relying | In order to use information published in RPKI repositories, Relying | |||
Parties (RPs) need to retrieve and validate the content of | Parties (RPs) need to retrieve and validate the content of | |||
skipping to change at page 6, line 34 ¶ | skipping to change at line 213 ¶ | |||
issued. | issued. | |||
4. For each repository object that was validated during this | 4. For each repository object that was validated during this | |||
validation run, the validation timestamp is updated in the object | validation run, the validation timestamp is updated in the object | |||
store (see Section 5.1.7). | store (see Section 5.1.7). | |||
5. Outdated objects are removed from the store as described in | 5. Outdated objects are removed from the store as described in | |||
Section 3.3. This completes the validation of the TA certificate | Section 3.3. This completes the validation of the TA certificate | |||
tree. | tree. | |||
3.1. Fetching the Trust Anchor Certificate Using the Trust Anchor | 3.1. Fetching the Trust Anchor Certificate Using the Trust Anchor Locator | |||
Locator | ||||
The following steps are performed in order to fetch a Trust Anchor | The following steps are performed in order to fetch a Trust Anchor | |||
certificate: | certificate: | |||
1. (Optional) If the TAL contains a prefetch.uris field, pass the | 1. (Optional) If the TAL contains a prefetch.uris field, pass the | |||
URIs contained in that field to the fetcher (see Section 4.1.1). | URIs contained in that field to the fetcher (see Section 4.1.1). | |||
(This field is a non-standard addition to the TAL format. It | (This field is a non-standard addition to the TAL format. It | |||
helps with fetching non-hierarchical rsync repositories more | helps with fetching non-hierarchical rsync repositories more | |||
efficiently.) | efficiently.) | |||
skipping to change at page 14, line 5 ¶ | skipping to change at line 551 ¶ | |||
hashes of repository objects (calculated using the file hash | hashes of repository objects (calculated using the file hash | |||
algorithm specified in [RFC7935]). It considers objects with same | algorithm specified in [RFC7935]). It considers objects with same | |||
hash values to be identical. | hash values to be identical. | |||
7.2. Algorithm Agility | 7.2. Algorithm Agility | |||
This implementation only supports hash algorithms and key sizes | This implementation only supports hash algorithms and key sizes | |||
specified in [RFC7935]. Algorithm agility described in [RFC6916] is | specified in [RFC7935]. Algorithm agility described in [RFC6916] is | |||
not supported. | not supported. | |||
7.3. Mismatch between the Expected and Actual Location of an Object in | 7.3. Mismatch between the Expected and Actual Location of an Object in the | |||
the Repository | Repository | |||
According to Section 2 of [RFC6481], all objects issued by a | According to Section 2 of [RFC6481], all objects issued by a | |||
particular CA certificate are expected to be located in one | particular CA certificate are expected to be located in one | |||
repository publication point, specified in the SIA extension of that | repository publication point, specified in the SIA extension of that | |||
CA certificate. The manifest object issued by that CA certificate | CA certificate. The manifest object issued by that CA certificate | |||
enumerates all other issued objects, listing their filenames and | enumerates all other issued objects, listing their filenames and | |||
content hashes. | content hashes. | |||
However, it is possible that an object whose content hash matches the | However, it is possible that an object whose content hash matches the | |||
hash listed in the manifest either has a different filename or is | hash listed in the manifest either has a different filename or is | |||
skipping to change at page 16, line 38 ¶ | skipping to change at line 678 ¶ | |||
[RFC8360] Huston, G., Michaelson, G., Martinez, C., Bruijnzeels, T., | [RFC8360] Huston, G., Michaelson, G., Martinez, C., Bruijnzeels, T., | |||
Newton, A., and D. Shaw, "Resource Public Key | Newton, A., and D. Shaw, "Resource Public Key | |||
Infrastructure (RPKI) Validation Reconsidered", RFC 8360, | Infrastructure (RPKI) Validation Reconsidered", RFC 8360, | |||
DOI 10.17487/RFC8360, April 2018, | DOI 10.17487/RFC8360, April 2018, | |||
<https://www.rfc-editor.org/info/rfc8360>. | <https://www.rfc-editor.org/info/rfc8360>. | |||
8.2. Informative References | 8.2. Informative References | |||
[rpki-validator] | [rpki-validator] | |||
"RIPE-NCC/rpki-validator source code", | "RIPE-NCC/rpki-validator source code", January 2019, | |||
<https://github.com/RIPE-NCC/rpki-validator>. | <https://github.com/RIPE-NCC/rpki-validator>. | |||
[rsync] "rsync", October 2018, <https://rsync.samba.org>. | [rsync] "rsync", October 2018, <https://rsync.samba.org>. | |||
Acknowledgements | Acknowledgements | |||
This document describes the algorithm as it is implemented by the | This document describes the algorithm as it is implemented by the | |||
software development team at the RIPE NCC, which, over time, included | software development team at the RIPE NCC, which, over time, included | |||
Mikhail Puzanov, Erik Rozendaal, Miklos Juhasz, Misja Alma, Thiago da | Mikhail Puzanov, Erik Rozendaal, Miklos Juhasz, Misja Alma, Thiago da | |||
Cruz Pereira, Yannis Gonianakis, Andrew Snare, Varesh Tapadia, Paolo | Cruz Pereira, Yannis Gonianakis, Andrew Snare, Varesh Tapadia, Paolo | |||
Milani, Thies Edeling, Hans Westerbeek, Rudi Angela, and Constantijn | Milani, Thies Edeling, Hans Westerbeek, Rudi Angela, and Constantijn | |||
Visinescu. The authors would also like to acknowledge contributions | Visinescu. The authors would also like to acknowledge contributions | |||
by Carlos Martinez, Andy Newton, Rob Austein, and Stephen Kent. | by Carlos Martinez, Andy Newton, Rob Austein, and Stephen Kent. | |||
Authors' Addresses | Authors' Addresses | |||
Oleg Muravskiy | ||||
RIPE NCC | ||||
Email: oleg@ripe.net | Email: oleg@ripe.net | |||
URI: https://www.ripe.net/ | URI: https://www.ripe.net/ | |||
Tim Bruijnzeels | ||||
NLnet Labs | ||||
Email: tim@nlnetlabs.nl | Email: tim@nlnetlabs.nl | |||
URI: https://www.nlnetlabs.nl/ | URI: https://www.nlnetlabs.nl/ | |||
End of changes. 8 change blocks. | ||||
51 lines changed or deleted | 45 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |