@@ -347,12 +347,12 @@ when setting up the filtering rules based on information from the RPKI
347347repository.
348348
349349With the RPKI in place it is now possible to perform Route Origin
350- Validation. That is, if a given AS claims to be the originator of a
350+ Validation (ROV) . That is, if a given AS claims to be the originator of a
351351certain prefix, that claim can be checked against the information in
352352the RPKI. So, for example, if Pakistan Telecom were now to claim to be the
353353origin AS for a subprefix of YouTube, that could immediately be
354354detected as false information and discarded by any router receiving
355- such an advertiment , not just the neighbors of the offending ISP.
355+ such an advertisement , not just the neighbors of the offending ISP.
356356
357357While there are many forms of attack or misconfiguration that would
358358not be caught by ROV (such as an AS falsely claiming a shorter path that
@@ -372,10 +372,89 @@ prefixes.
372372
373373.. rubric :: path validation
374374
375- example - path shortening attack
376-
377- cryptographic signature on all BGP adverts
378-
375+ Route origin validation only tackles part of the problem with BGP
376+ security. Even if the originating AS can be shown to be valid, what do
377+ we know about the rest of the path? For example, if a malicious ISP
378+ has a valid path to a certain prefix that traverses five ASes, but
379+ chooses to falsely advertise that it can reach that prefix in two AS
380+ hops, it is likely to attract traffic destined for that
381+ prefix. Whatever the motive for such a step may be (e.g., to increase
382+ revenue or to censor certain traffic, or even simple misconfiguration) it clearly undermines the
383+ correct operation of Internet routing. The solution to such attacks is
384+ to validate not just the originator of a prefix but the entire
385+ path. It turns out this is a considerably harder problem to solve than ROV.
386+
387+ There are a few different proposals for how to securely validate
388+ paths. We focus here on the BGPsec standard from the IETF which
389+ illustrates the overall approach and the challenges with achieving
390+ widespread deployment.
391+
392+ In contrast to ROV, BGP path validation relies on cryptographic
393+ operations being adopted as part of BGP itself. Leveraging the RPKI,
394+ BGP speakers (routers) taking part in path validation sign their BGP announcements
395+ using private key associated with the AS in which the speaker is
396+ located. Thus, anyone receiving such an announcement can verify that
397+ it came from the AS that it claims to represent, and that it has not
398+ been modified in transit. The RPKI enables the recipient to obtain the
399+ public key corresponding to the announcing AS and thus validate the
400+ message.
401+
402+ The harder part of the problem is validating that the *contents * of
403+ the message are correct from the perspective of BGP. Since a BGP
404+ announcement is an ordered list of ASes, each of which has added
405+ itself into the path to the destination, we need to validate that
406+ every AS in the path has correctly announced a route to the
407+ destination when it added itself into the path.
408+
409+ The way this is achieved is to have every AS in the path sign its
410+ announcement. We saw above that the RPKI could be used to create
411+ bindings between public keys and entities authorized to advertise a
412+ particular prefix. For path validation, we use the RPKI to create
413+ bindings between public keys and Autonomous Systems.
414+ With the RPKI in place, every AS participating in BGPsec can be assumed
415+ to have a well-known public key and matching private key.
416+
417+ Now consider the process of constructing a path to a particular
418+ prefix. The path consists of a set of ASes. For example, AS1, the origin AS, signs
419+ an announcement that says it is the origin for the prefix, using its
420+ private key. Furthermore, it includes the number of the target AS,
421+ AS2, to which it is sending the announcement, in the set of fields
422+ covered by the signature. Thus, we end up with a message that says
423+ "AS1 can reach prefix P and has sent this information to AS2" signed
424+ by AS1.
425+
426+ A router in AS2 receives this announcement, and, having validated the
427+ signature, it can now add itself to the path. AS2 can now issue a
428+ signed announcement that says "the path <AS2,AS1> leads to prefix P"
429+ and sign this using its private key. It includes the full signed
430+ message from AS1 as well as the new path. Again, before signing, it
431+ includes the number of the target AS to which it is sending this
432+ announcement. This announcement is received by AS3 which can now add
433+ itself to the path and sign the result, and so on.
434+
435+ Including the target AS in the material that is signed is essential to
436+ the correct operation of BGPsec. Suppose that, for example, AS3 tries
437+ to lie about the path it has to AS1, claiming that the path <AS3,AS1>
438+ is valid (skipping over AS2). It can't construct a valid message to
439+ make this claim this with the information that it received from
440+ AS2, because of the fact that AS2 is the target given by AS1. An
441+ attempt to create a signed path <AS3,AS1> could be detected as
442+ invalid, because the signed statement from AS1 includes the fact that
443+ its target was AS2, not AS3.
444+
445+ Thus, when a valid signed announcement is received, the receiver is
446+ able to validate that every AS in the chain to the destination has
447+ received an announcement of the rest of the path to the
448+ destination. While this still does not prove that the path to the
449+ destination will actually be able to carry data, it does prove that a
450+ set of announcements made their way along the stated path. It remains
451+ a possibility that some AS might have advertised a path that it will
452+ not honor—AS2, for example, might refuse to forward traffic from AS3
453+ to AS1 in spite of having advertised the path—but at least it is not
454+ possible for a non-existent path, such as <AS3,AS1>, to be advertised.
455+
456+ Deployment
457+ ~~~~~~~~~~
379458
380459
381460
0 commit comments