Skip to content

Commit 7b27011

Browse files
committed
clarify RPKI and ROA
1 parent 77e6b9a commit 7b27011

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

infra.rst

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -250,30 +250,34 @@ Resource Public Key Infrastructure.
250250
RPKI provides a means by which entities involved in routing, such as
251251
the operator of an AS, can prove that they are authorized to advertise
252252
routing 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
254254
number, and a set of prefixes that the AS is authorized to
255255
advertise. 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
259262
RPKI. There are five RIRs globally and each has a root certificate in
260263
the RPKI.
261264

262265
Address allocation is a hierarchical process. For example, an RIR can
263266
allocate a chunk of address space to an ISP, and the ISP can
264267
sub-allocate from that chunk to one of its customers. A hierarchy of
265268
certificates 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
267270
can be built, much the way a modern browser comes with a set of
268271
trusted 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

271274
A key distinction between RPKI and the certificates that we are
272275
familiar with from TLS is this: the certificates in TLS are used to
273276
validate the *identity* of a web site (e.g., a certificate for cnn.com
274277
tells 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
277281
and proceeds down through ISPs to end customers, resource certificates
278282
are 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
288292
certificates are arranged for a simple example of an ISP *A* with
289293
customer *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
292296
authority of a certain AS to advertise a prefix, the details of the
293297
certificates are different from those used in TLS. For example, the
294298
certificate that ISP *A* issues, on the far right of the picture, says
295299
that 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

299305
One level higher in the chain, the Local Internet Registry (LIR) has
300306
issued a certificate that states ISP *A* has authority to allocate
@@ -308,7 +314,11 @@ allocated to it by *A*.
308314
with its private key. The ROA contains the AS number of *C* and the
309315
prefix or prefixes that it wishes to advertise. Anyone who looks at
310316
the 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

314324
Rather 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
319329
complete picture of the chains of certificates that have been
320330
issued. With this information, a router running BGP can determine *in advance* which
321331
ASes 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
323333
willing to accept. There is a well-established set of software tools
324334
to 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

327341
With the RPKI in place it is now possible to perform Route Origin
328342
Validation. 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

335349
While there are many forms of attack or misconfiguration that would
336350
not 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,
338353
especially those caused by misconfiguration. To more fully combat the
339354
advertisement of false information in BGP, it is necessary to adopt
340355
some sort of path validation, as discussed below.

0 commit comments

Comments
 (0)