RPKIとBGPのセキュリティ
BGPは経路を交換し、RPKIはそのオリジンを検証するための根拠を提供します。この検証で守れる範囲、残る課題、そして根拠となる情報を誰が管理するのかを解説します。

BGPは経路広告を伝える。オリジン検証では、広告された経路のオリジンを、別途用意された認可データと照合する。
あるネットワークが、インターネット上の特定のアドレスブロックに到達できると表明する。ほかのネットワークは、それを信じてよいのだろうか。BGPとRPKIを比較するとき、背景にあるのはこの問いだ。両者の役割は異なる。一方は経路を交換し、もう一方は経路が示すオリジンを評価するための根拠を提供する。
経路と、その傍らにある根拠
BGPは、独立して運用されるネットワーク同士が到達可能性の情報を交換する仕組みだ。アドレスのブロックはIPプレフィックスと呼ばれ、この交換に参加するネットワークは自律システム番号、すなわちASNによって識別される。運用者は、広告された情報と自らのポリシーに基づいて経路を選択する。RFC 4271が、この情報交換を定義している。
受信した広告だけでは、そこに記されたオリジンがアドレス保有者から認可されているとは証明できない。誤ったオリジンは、設定ミスから生じることも、ハイジャックの試みから生じることもある。実際の影響として、サーバーは稼働しているのに、利用者が突然サービスにアクセスできなくなる場合がある。
RPKIは、証明書と署名付きレコードの仕組みを加える。経路オリジン認可、すなわちROAは、指定されたプレフィックスの経路を生成することが認められたASNを示す。検証ソフトウェアは署名付きデータを検証し、ルーターが利用できる形で認可データを提供する。経路オリジン検証、すなわちROVは、広告とそのデータを照合する。
検証の対象範囲は限定されている
この照合で確認するのは、オリジンASNと広告されたプレフィックス長が、その経路を包含する認可に合致するかどうかだ。トラフィックの内容を調べるわけでも、広告された経路上のすべてのネットワークを認証するわけでもない。経路がオリジン検証を通過しても、伝わるべきではない場所へ伝播することはある。
RFC 6811は、3つの結果を定義している。Validは、一致する認可があることを意味する。Invalidは、対象を包含するデータは存在するものの、そのオリジンとプレフィックス長を許可するものがないことを意味する。NotFoundは、使用中のデータに、対象を包含する認可がないことを意味する。これらは根拠となる情報の状態であり、経路が安全か悪意のあるものかを完全に判定した結果ではない。
その後どう扱うかは、受信側の運用者が設定したポリシーによって決まる。ネットワークはInvalidの広告を拒否できるが、ROAを公開しただけで、ほかのすべてのネットワークにその検証を強制できるわけではない。経路交換の仕組みは、引き続きBGPが担う。
障害時にこの区別が重要になる理由
サービスの経路を生成するASNを新しいものへ切り替える一方、認可には古いASNしか記載されていない場合を考えてみよう。新しい広告はInvalidになる可能性がある。解決の第一歩は、意図した広告、実際に使われている認可データ、広告を拒否したポリシーを比較することだ。別のルーターを購入したり、ケーブルが断線したと思い込んだりしても、原因にはたどり着けない。
運用者には、適切なフィルター、信頼できる検証ソフトウェア、監視、連携の取れた変更作業が引き続き必要だ。オリジン検証は、その中で役立つ1つの確認手段である。万能の安全証明として扱うと、残っている依存関係が見えなくなる。
根拠となる情報を誰が管理するのか
Lu Hengのノート28は、記録を維持することと、その記録を使って参加者に制裁を加えることの間に境界を引く。他者がその記録に依存していれば、記録管理者は稼働中のネットワークに影響を及ぼせる。しかし、その影響力があること自体は、国境を越えて影響を受けるすべての人を統治する権限の根拠にはならない。
彼のノート64は、共通ルールを一意性、相互運用性、セキュリティに必要な範囲に限定し、各参加者が自ら検証でき、その後の変更は自発的に採用する仕組みを提案している。目指すのは、信頼できる調整の仕組みを置き換え可能にすることであり、1つの管理主体を永久に不可欠な存在にすることではない。
運用者にとって、まず問うべきことは実務的だ。自分たちのチームは、ある経路について、その認可から受信側ネットワークの判断までをたどれるだろうか。そこから始め、次にオリジン認可を準備し、維持する方法を読んでほしい。サービスがまだ正常に動いているうちのほうが、これらの関係を把握しやすい。