@@ -250,30 +250,34 @@ Resource Public Key Infrastructure.
250250RPKI provides a means by which entities involved in routing, such as
251251the operator of an AS, can prove that they are authorized to advertise
252252routing information such as address prefixes. A Route Origin
253- Authorization (ROA), for example, contains a certificate, and AS
253+ Authorization (ROA), for example, contains a certificate, an AS
254254number, and a set of prefixes that the AS is authorized to
255255advertise. The ROA is cryptographically signed by an entity that is
256- itself trusted to provide this authorization, such as Regional
257- Internet Registry (RIR). Because RIRs a responsible for the allocation
258- of address space, they are a logical place to locate trust for the
256+ itself trusted to provide this authorization, generally the AS to
257+ which this address prefix has been allocated.
258+
259+ Because Regional Internet Registries (RIRs) are at the top of the hierarchy
260+ for address allocation, they are a logical place to place the root of
261+ trust, known as a trust anchor, for the
259262RPKI. There are five RIRs globally and each has a root certificate in
260263the RPKI.
261264
262265Address allocation is a hierarchical process. For example, an RIR can
263266allocate a chunk of address space to an ISP, and the ISP can
264267sub-allocate from that chunk to one of its customers. A hierarchy of
265268certificates can be used that follows this hierarchy of address
266- allocation. The RIRs form " trust anchors" from which chains of trust
269+ allocation. The RIRs form trust anchors from which chains of trust
267270can be built, much the way a modern browser comes with a set of
268271trusted root certification authorities (CAs) so that the certificates
269- issued by web sites can be checked for validity.
272+ issued by web sites, which are signed by CAs, can be checked for validity.
270273
271274A key distinction between RPKI and the certificates that we are
272275familiar with from TLS is this: the certificates in TLS are used to
273276validate the *identity * of a web site (e.g., a certificate for cnn.com
274277tells your browser that it is actually talking to cnn.com), whereas
275- RPKI certificates are used to validate the *authority * to advertise
276- certain IP addresses. As IP address allocation starts with the RIRs
278+ RPKI certificates are used to validate the *resources * allocated to an
279+ entity such as an ISP or an end customer. The resources in particular
280+ include IP address prefixes. As IP address allocation starts with the RIRs
277281and proceeds down through ISPs to end customers, resource certificates
278282are generated at each level in the hierarchy.
279283
@@ -287,14 +291,16 @@ are generated at each level in the hierarchy.
287291:numref: `Figure %s <fig-rpki >` shows how the
288292certificates are arranged for a simple example of an ISP *A * with
289293customer *C *. There is a chain of trust from the root certificate to
290- the customer, much like the sort certification hierarchy we have seen
291- used for TLS. However, because the goal here is to certify the
294+ the customer, much like the sort of certification hierarchy we have seen
295+ used for TLS. However, because the goal here is ultimately to certify the
292296authority of a certain AS to advertise a prefix, the details of the
293297certificates are different from those used in TLS. For example, the
294298certificate that ISP *A * issues, on the far right of the picture, says
295299that some address prefix has been allocated to customer *C *, and
296- includes the AS number of customer C. This certificate is signed by
297- ISP *A * using the private key of *A *.
300+ includes the public key of customer C. This certificate is signed by
301+ ISP *A * using the private key of *A *. So if we can trust *A *, we learn
302+ two things about *C *: its public key and the set of addresses
303+ allocated to the holder of that public key.
298304
299305One level higher in the chain, the Local Internet Registry (LIR) has
300306issued a certificate that states ISP *A * has authority to allocate
@@ -308,7 +314,11 @@ allocated to it by *A*.
308314with its private key. The ROA contains the AS number of *C * and the
309315prefix or prefixes that it wishes to advertise. Anyone who looks at
310316the ROA and the resource certificate chain that leads from the root CA to *C *
311- can validate that the ROA is legitimate.
317+ can validate that it has been signed with the private key
318+ belonging to the entity authorized to advertise the prefixes in the
319+ ROA. Because the ROA also contains the AS number for *C *, we now know
320+ that we should trust advertisements of this prefix if they originate
321+ from the stated AS.
312322
313323
314324Rather than being passed around in real time like certificates in TLS,
@@ -319,10 +329,14 @@ feasible to fetch the entire contents of the RPKI repository to build up a
319329complete picture of the chains of certificates that have been
320330issued. With this information, a router running BGP can determine *in advance * which
321331ASes could originate routing advertisements for which prefixes and use
322- this to configure filtering rules on what advertisements they are
332+ this to configure filtering rules that specify which advertisements they are
323333willing to accept. There is a well-established set of software tools
324334to automate this process for popular operating systems and commercial
325- routing platforms.
335+ routing platforms. Notably, the routers running BGP do not perform
336+ cryptographic operations in real time when processing route
337+ advertisements; all the cryptographic operations happen in advance
338+ when setting up the filtering rules based on information from the RPKI
339+ repository.
326340
327341With the RPKI in place it is now possible to perform Route Origin
328342Validation. That is, if a given AS claims to be the originator of a
@@ -334,7 +348,8 @@ such an advertiment, not just the neighbors of the offending ISP.
334348
335349While there are many forms of attack or misconfiguration that would
336350not be caught by ROV (such as an AS falsely claiming a shorter path that
337- doesn't actually exist) it does prevent a large number of issues,
351+ doesn't actually exist, or a BGP speaker falsely claiming an AS number
352+ not allocated to it) it does prevent a large number of issues,
338353especially those caused by misconfiguration. To more fully combat the
339354advertisement of false information in BGP, it is necessary to adopt
340355some sort of path validation, as discussed below.
0 commit comments