期限が切れます!RPKI の ROA が絶え間なく期限切れになる仕組み
先週のブログ記事では、インターネットトラフィックの流れを管理するプロトコル BGP の正確さを保証する RPKI (Resource Public Key Infrastructure) と呼ばれるメカニズムについてご紹介しました。今回の記事では、Kentik の Doug Madory 氏と Fastly の Job Snijders がチームを組み、RPKI を別の角度から取り上げます。
RPKI に関する以前のコラボレーションでは、RPKI ROV (Route Origin Validation) の採用が最新のマイルストーンを達成し、ROA (Route Origin Authorizations) によってカバーされている IPv4 経路が50%を超えたことをご報告しました。この記事では、暗号化チェーンが ROA の実質的な有効期限にどのように影響するかを理解するために RPKI のメカニズムをより詳しくご紹介します。
RPKI 内で ROA は暗号証明されたレコードとして機能し、BGP にて IP アドレス範囲を広報することを許可された自律システム番号 (ASN) を保存します。ASN と1つ以上の IP アドレスプリフィックスに加え、ROA には「有効期間」(ROA の有効期間の始まりと終わりを示すタイムスタンプ) などが記された X.509 エンドエンティティ証明書の含まれます。
個々の ROA の有効期限が1年先であっても、RPKI Validator によて使用される「実質的な」有効期限は通常、数時間から数日先です。これは、実質的な有効期限は過渡的であり、暗号チェーンのリンクの最も間近の有効期限が適用されるためです。
仕組み
この仕組みを理解するには、この記事の始めで触れた、ROA における「暗号署名」の部分を詳しく理解する必要があります。
Job の rpki-client コンソールユーティリティを使用して 151.101.8.0/22 の ROA を調べ、AS54113 がこの IPv4 プリフィックスを広報することが許可されていることを確認できます。
asID: 54113
IP address blocks: 151.101.8.0/22 maxlen: 22
また、最初のブロックにはこの ROA の有効期間の開始日が記載されています。
Signing time: Sat 11 May 2024 01:00:27 +0000
ROA not before: Sat 11 May 2024 01:00:27 +0000
ROA not after: Fri 09 Aug 2024 01:00:27 +0000
つまり、チェーンの他のすべての要素が2024年8月まで有効である限り、この ROA は2024年5月まで有効です。ここで次の「Signature パス」セクションの登場です。
Validation: OK
Signature path: rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/e605f279-55f4-48ec-ba13-4845c0973a63/e605f279-55f4-48ec-ba13-4845c0973a63.crl
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/e605f279-55f4-48ec-ba13-4845c0973a63/e605f279-55f4-48ec-ba13-4845c0973a63.mft
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/e605f279-55f4-48ec-ba13-4845c0973a63.cer
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/871da40f-793a-4a45-a0a9-978148321a07.crl
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/871da40f-793a-4a45-a0a9-978148321a07.mft
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07.cer
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/5e4a23ea-e80a-403e-b08c-2171da2157d3.crl
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/5e4a23ea-e80a-403e-b08c-2171da2157d3.mft
rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3.cer
rsync://rpki.arin.net/repository/arin-rpki-ta/arin-rpki-ta.crl
rsync://rpki.arin.net/repository/arin-rpki-ta/arin-rpki-ta.mft
rsync://rpki.arin.net/repository/arin-rpki-ta.cer
Signature path expires: Fri 31 May 2024 14:00:00 +0000
上記の Signature パス (「Certification パス」とも呼ばれます) は、この ROA から「Trust Anchor」(この場合は ARIN) までの複数のステップから成る暗号化された署名の検証プロセスを示しています。このチェーンの各リンクにはそれぞれ有効期限があり、最も期限が長いものは2025年まで有効です。しかし、全体的な署名パスの有効期限を決定するのは最も短い期限であり、これが ROA の実質的な有効期限となります。
コンソールユーティリティによって3つの異なるタイプのファイルが便利な形でリンクされます。Certificate Revocation Lists (.crl)、Manifests (.mft)、Certificates (.cer) と呼ばれるものです。
用語解説 |
---|
「Manifest」は RPKI リポジトリのコンテンツをセキュアな方法で宣言し、現在 の CRL と ROA を参照します。提供される Manifest は「次の更新時」まで有効です。複数の有効なバージョンの Manifest に遭遇した場合、RPKI Validator は Manifest ペイロードに含まれる、単調に増加するシリアル番号に基づいて、使用する Manifest のバージョンを決定します。 |
「CRL」(Certificate Revocation List) には、予定された失効日前に証明書の発行元の認証局 (CA) によって無効化された証明書のシリアル番号のリストが含まれます。ローテーションからある ROA を取り除くには、CA が Manifest からその ROA のファイルネームを削除し、そのエンドエンティティ証明書のシリアル番号を CRL に追加する必要があります。CRL は、設定されている「次の更新時」まで有効です。 |
「Certificate」は公開鍵の有効性を証明するために使用されます。RPLI Certificate は X.509 標準を使用して定義されます。各証明書には、その有効期間、公開鍵、リポジトリのネットワークのロケーションを指すポインター、その他のメタデータが含まれます。RPKI Validator は、公開鍵を使用してそのレポジトリのロケーションにある Manifest、CRL、ROA を検証します。証明書のコンテンツは暗号署名によって、チェーンの上位の発行元から保護されています。RPKI では「Trust Anchor」は「ルート証明書」を指します。これは Trust Anchor Locator を使用して検証可能な自己署名証明書です。 |
上記のリンクを基に、以下のように署名パスの有効期限のリストを作成できます。
Signature path: Fri 31 May 2024 23:00:00 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/e605f279-55f4-48ec-ba13-4845c0973a63/e605f279-55f4-48ec-ba13-4845c0973a63.crl
Fri 31 May 2024 23:00:00 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/e605f279-55f4-48ec-ba13-4845c0973a63/e605f279-55f4-48ec-ba13-4845c0973a63.mft
Mon 13 Apr 2026 22:13:58 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/e605f279-55f4-48ec-ba13-4845c0973a63.cer
Sat 01 Jun 2024 13:00:00 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/871da40f-793a-4a45-a0a9-978148321a07.crl
Sat 01 Jun 2024 13:00:00 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07/871da40f-793a-4a45-a0a9-978148321a07.mft
Thu 25 Dec 2025 14:09:41 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/871da40f-793a-4a45-a0a9-978148321a07.cer
Wed 31 May 2024 14:00:00 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/5e4a23ea-e80a-403e-b08c-2171da2157d3.crl
Wed 31 May 2024 14:00:00 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3/5e4a23ea-e80a-403e-b08c-2171da2157d3.mft
Mon 04 May 2026 15:17:49 rsync://rpki.arin.net/repository/arin-rpki-ta/5e4a23ea-e80a-403e-b08c-2171da2157d3.cer
Mon 30 Sep 2024 15:17:49 rsync://rpki.arin.net/repository/arin-rpki-ta/arin-rpki-ta.crl
Mon 30 Sep 2024 15:17:49 rsync://rpki.arin.net/repository/arin-rpki-ta/arin-rpki-ta.mft
Mon 03 Nov 2025 rsync://rpki.arin.net/repository/arin-rpki-ta.cer
Signature path expires: Fri 31 May 2024 14:00:00 +0000
ROA が絶え間なく期限切れになるメリットとは?
上記の証明書パスに含まれる要素の多くには、残りの有効期間が数時間から数日の比較的短い有効期間が設定されています。このように実質的な有効期限が短く設定されているのには理由があります。
短い有効期限の設定は、暗号チェーンのリンクの一部で rsync または rrdp サーバーのダウンなどによって配布が停止し、新しい情報の取得が阻止される事態を避けるのに役立ちます。そのような事態が発生した場合、ROA は最後の状態で足止めされることになります。
ROA の設定ミスで停止が発生した場合、解決するのに手動での介入が必要になります。このようなシナリオでは配布が停止され、CRL を使用して問題がある ROA を取り消すことができなくなります。
有効期限が短い場合、最終的に設定ミスのある ROA の期限が自動的に切れ、ROA の公開ポイントへのインターネット転送パスをクリアできる可能性があります。
失効前に余裕を持って再発行
ROA、Manifest、CRL、Certificate の発行元は、電子署名されたプロダクトが失効するのを待ってから新しいバージョンを発行するわけではありません。
スケジュールの例を挙げると、失効期限が8時間後に設定された Manifest と CRL を毎時更新する発行元の場合、データが次の8時間有効であることを保証できます。頻繁に再発行することで、ISP のネットワークにデプロイされている RPKI Validator と ROA の公開ポイントの間で発生する一時的なネットワーク問題を乗り越えることが可能になります。
RPKI Validator はローカルでキャッシュされたバージョンのオブジェクトを、それらが無効化されるまで、または公開ポ イントとの適切な同期によって得られた後続オブジェクトによって置き換えられるまで使用できます。
このような動作は DNS の有効期限 (TTL) の設定と似ています。短い TTL を設定することで、DNS オペレータは必要に応じて素早くトラフィックを再割り当てできるほか、DNS レコードをキャッシュから排除して古いレコードによるトラフィックへの指示を回避できます。
インターネットにおける ROA の実質的な有効期限の分析
rpkiviews.org を使用し、現在使用されている約528,000におよぶ ROA の最近のスナップショットを確認できます。以下は CSV 形式で表示されたスナップショットの内容の一例です。
ASN,IP Prefix,Max Length,Trust Anchor,Expires
AS13335,1.0.0.0/24,24,apnic,1712499475
AS38803,1.0.4.0/24,24,apnic,1712532668
AS38803,1.0.4.0/22,22,apnic,1712532668
AS38803,1.0.5.0/24,24,apnic,1712532668
AS38803,1.0.6.0/24,24,apnic,1712532668
AS38803,1.0.7.0/24,24,apnic,1712532668
AS18144,1.0.64.0/18,18,apnic,1712358404
AS13335,1.1.1.0/24,24,apnic,1712499475
AS4134,1.1.4.0/22,22,apnic,1712508843
…
5つ目の最後の列に、実質的な有効期限がエポック形式で記されています。あるスナップショットについて、タイムスタンプを1時間の枠にグループ化して経時的に ROA の数をグラフ化すると、以下のように複数のピークを示すグラフが得られます。
注記が示すように、ROA の有効期限は各 RIR と一致しています。このように視覚化することで、各 RIR で採用されている暗号チェーンの違いによる影響を確認できます。
しかしこのグラフは、ある時点に関するスナップショットにすぎません。経時的にこれらの実質的な有効期限が変化するかを理解するには、以下の動画をご覧ください。
前述のように、各ピークはそれぞれの RIR と一致し、経時的にどのように変化するかは、ROA の管理に使用されるソフトウェアによります。
動く対象を分析するのは困難なため、経時的に ROA の実質的な有効期限を示す静的なグラフを見てみましょう。以下のグラフでは、横軸はスナップショットの日時を、縦軸は RIR ごとに色付けされた実質的な有効期限のピークを示しています。
このグラフにより、ROA の実質的な有効期限 (縦軸) が時間の経過 (横軸) と共にどのように変化するかを確認できます。有効期限はその前の15分のグループに分類されます。分かりやすくするため、グラフで2か所 (A および B) にマークを付けました。どちらも RIPE (青) によって公開され、2024年4月13日23:00 UTC (協定世界時) に有効期限が切れる ROA を示しています。A 点はこの有効期限を持つ ROA の数が2,165であることを、B 点は同様の ROA の数が15,852あることを示し、ROA の数が多いことを反映して B 点は A 点よりも色が濃くなっています。
A 点 | B 点 | |
---|---|---|
RIR | RIPE (青) | RIPE (青) |
スナップショット | 2024-04-10 22:56:22 | 2024-04-11 07:12:18 |
有効期限 | 2024-04-13 23:00:00 | 2024-04-13 23:00:00 |
ROA の数 | 2,165 | 15,852 |
数日間にわたってこのようなグラフを作成することで、ROA の実質的な有効期限の経時的な変化を確認できます。各 RIR は使用する異なるソフトウェアに基づくそれぞれの更新動作を示しめす。
以下では、これらのいくつかを個別に分析します。
ARIN
ARIN によって公開される ROA の実質的な有効期限のみを確認すると、2つの目立った動作が見られます。ひとつ目は、有効期限が8時間後から24時間後の小さな集団 (薄い色) です。このグループでは、8時間後に近づくと有効期限が24時間後に延長されます。
ふたつ目は、有効期限が階段の形を示している大きな集団です。このグループでは、有効期限が24時間後に近づくと、24時間後から48時間後の範囲の有効期限で更新されます。有効期限が24時間後に近づくとこのような更新が継続されますが、階段の形からも分かるように、前の有効期限の上限を超えることはありません。有効期限の上限は48時間ごとにリセットされます。
RIPE
RIPE の場合 ARIN とは異なり、有効期限が8時間以内に迫ると実質的な有効期限が8時間後から18時間後の間に更新されます。RIPE の有効期限が24時間後を超えることはありません。その結果、下記のグラフでは分布範囲が狭くなっています。
APNIC
APNIC では ROA の実質的な有効期限はふたつのカテゴリーに分かれます。少数グループの有効期限 (薄い下方部分) は8時間後から24時間後に設定されています。ARIN の色の薄い下方部分と同様に、有効期限が8時間後に近づくと24時間後に延長されます。
APNIC によって公開される、それら以外の ROA は他のどの RIR の場合よりも ROA の実質的な有効期限が長く、少なくとも5日後以上に設定されています。有効期限が5日後に迫ると、6日後に更新されます。
LACNIC
4月前半、LACNIC の ROA の実質的な有効期限は RIPE の場合と同様の動作を見せましたが、4月15日に LACNIC は RPKI の管理ソフトウェアとして Krill を使用する変更を実施しました。4月15日以降、有効期限は ARIN で見られた48時間の階段式のパターンに似た動作を見せるようになりました。
AFRINIC
AFRINIC の有効期限が現時点から24時間後に近づく と、さらに24時間が追加されて更新されます。大半の ROA に対してこのような更新が毎日午前0時 UTC (協定世界時) に行われます。
最後に
すでにお分かりかもしれませんが、RPKI の ROV は、多くの障害の原因となる偶発的な BGP ハイジャックや起点の漏えいに対するベストの防御対策を提供します。最も最近の動向として2024年5月1日、グローバルルーティングテーブルにおいて ROA によってカバーされている IPv4 経路の割合が50%を超え、大きなマイルストーンを達成しました (IPv6 はこれを昨年達成しています)。
ROV は暗号チェーンを使用して ROA に含まれている情報を RPKI Validator に正確に伝え、Validator は受信した BGP アナウンスを評価します。そのため、ROA には2つの有効期限があることに注意する必要があります。ROA 自体に設定されている有効期限と、Validator が確認する「実質的な有効期限」と呼ばれるもので、後者にはチェーンにおける最短の有効期限が使用されます。オープンソースツールの BGPAlerter などを使用して両タイプの有効期限をモニタリングできます。
このように短い有効期限 (数時間後の場合もよくあります) を採用することによって、サービスの停止が発生した際に Validator が古い情報を受信して適切に機能しなくなるという事態を避けやすくなります。数時間後 (RIPE) から数日後 (APNIC) まで、RIR によって有効期限の扱い方が異なるのは非常に興味深いポイントです。