ページの先頭です
インターネットはAS(Autonomous System)番号と呼ばれる2バイトもしくは4バイトの数字(例えばIIJは2497)で識別される組織(ネットワーク)が相互に接続することで形成されています。AS間はBGP(Border Gateway Protocol)というルーティングプロトコルで接続、各ASが自身で使用するIPアドレスを経路情報として相手に広告し、それが世界中に伝搬することで地球の反対側からパケットが届くという仕組みです。
各ASが使用するIPアドレスはIANA(Internet Assigned Numbers Authority)機能から地域ごとに委任されたRIR(Regional Internet Registry、アジアはAPNIC:Asia- Pacific Network Information Centre)、更に国ごとのNIR (National Internet Registry、日本はJPNIC:Japan Network Information Center)により厳密に管理され、これらの管理組織から割り振りを受けます。各ASがBGPで経路を広告する際、自身が割り振りを受けたアドレスのみを正確に広告すれば問題はありませんが、何らかの理由により割り振りを受けていないIPアドレスを広告したらどうなるでしょうか。例えばIIJホームページ(www.iij.ad.jp)のIPv4アドレス202.232.2.164を含む経路202.232.0.0/16は当然IIJのみが経路広告すべきですが、IIJではないどこかのASがこの一部である202.232.2.0/24を経路広告するとIIJホームページ宛のパケットはこのASに届いてしまいます(ルーティングの原則として経路長のより長い経路が優先されます)。IIJホームページであれば実質的な影響はあまりありませんが、これがDNSサーバやオンラインバンキングのページだった場合、その影響は容易に想像できるでしょう。
このような事象は経路を乗っ取ることから一般に経路ハイジャックと言われますが、この手のトラブルは現実のインターネットで日常的に発生しています。例えば、著名な動画サイトであるYoutubeのアドレスをGoogleでないASが経路広告してサービスが停止したり、BitCoin関連サイトのアドレスを別のASが経路広告しBitCoinが不正に持ち出されたと言われる事件も発生しています。それではなぜこのようなトラブルが発生してしまうのでしょうか。先に述べたBGPによる経路広告は各ASの自己申告です。自身と接続する相手のASが広告する経路が正当なものかどうか確認するには、日々更新される無数のIPアドレスの割り振り情報を把握し、それをルータに反映させる必要があるため全く現実的ではなく、ほぼ無条件に受け入れるしかありません。このように、現在のインターネットはある意味非常に危ういバランスの上で成り立っているとも言えます。
インターネットがここまで不可欠な社会基盤となった今、このような状況を放置するのは社会全体にとって大きなリスクであり、これを改善すべく考案されたのがRPKI(Resource Public-Key Infrastructure)です。RPKIのアイデアが考案されたのは1998年頃と日本でもやっとインターネットが普及してきた時期であり、研究者の先見の明には驚くばかりです。
RPKIの仕組みを一言で言えば、リソース(IPアドレスやAS番号といったインターネット番号資源)の正当性を電子証明書(X.509)により証明・検証可能にする仕組みです。先に述べたとおり、IPアドレスの割り振りを管理しているのはIANA、RIR、NIRですから、これらの運営組織がツリー構造(正確には5つのRIRを頂点とするツリー)になり、リソースが正しいことを電子証明書で担保します。その情報を使う利用者は、この電子証明書を用いてリソースが正しいことを認知します。RPKI自体はBGPルーティング以外にも使える汎用的な仕組みですが、ここではBGPルーティングに限定して述べます。
IPアドレスの割り振りを受けたASは自身がBGPで経路広告する予定のIPアドレス、その最大経路長及び広告元AS番号をNIRの管理するRPKIシステムに登録し、RPKIシステムがこれに対する電子証明書を発行します(注1)。この電子証明書をROA(Route Origination Authorization)といいます。
このROAを利用するユーザはツリー構造の頂点を示すTAL(Trust Anchor Locator)と呼ばれる事前情報を頼りに、RIR、NIRとツリーを辿りながらROAを取得、検証し、手元に検証済みデータ(VRP:Validate ROA Payload)として保持します。このVRPをルータに提供するのがキャッシュサーバの役割で、RPKI-RTR(RPKI to Router Protocol)というプロトコルを介してBGPルータに情報を供給します。BGPルータは受け取った情報をもとに、経路広告を受けた際にその内容がVRPに照らして正しいかを検証します。例えば、IPアドレス202.232.0/16、最大経路長/17、AS番号2497というVRPがあった場合、IPアドレス202.232.2.0/24、AS番号64496という経路広告は不正であり、これを受信しないことで経路ハイジャックを防ぐことができます。このようにRPKIの情報(ROA)を用いて受信経路の広告元ASを検証することをROV(Route Origin Validation)といいます。検証結果をどう扱うかは各ASの運用ポリシーに委ねられますが、現在は明確に不正な場合のみその経路を受信せず破棄するのが一般的です(この理由は後述します)。
2021年1月現在、インターネット上で交換されるBGP経路情報はおよそ93万経路(IPv4 83万、IPv6 10万)ですが、これに対して有効なROAの数はおよそ21万です。昨年10月時点でのROAはおよそ19万でしたから、4ヵ月で2万も増えており、まさに普及の真っ最中といった状況です。図-1はBGP経路(93万)に対して、ROAで検証可能な経路と検証不可能な経路の割合を示しています。順調に増えているとはいえ、まだ7割を超えるBGP経路は対応するROAが存在せず、ROAを使った広告元ASの検証を行うことができない状態です。先の説明で、現在のROVは明確に不正な場合のみ経路を破棄するのが一般的であると述べましたが、その理由がこれであり、検証不能で正当性が不明なものも受け入れざるを得ない状況です。RPKIが更に普及しすべてのIPアドレスが検証可能になることが期待されますが、それには相当な時間を要するでしょう。
AS別で見ると、BGP経路の存在するAS約71,000のうち約20,000はそれを広告元ASとするROAが存在しています。最も多いASで、そのASを広告元とする約9,600のBGP経路に対して約4,000のROAが存在しますが、このASは経路長/最大経路長/20のROAに加えて、これを細かく分割した/21、/22、/23、/24でもROAを作っていました。通常、このようなケースは経路長/20、最大経路長/24とすれば1つのROAを対応できるはずであり、そのようにする意図は分かりませんが、不必要にROAを作成することはルータのリソースをいたずらに消費することになり適切とは言えません。
これを見ると、日本を含めたアジア地域を管轄するAPNICやヨーロッパ地域を管轄するRIPE、南アメリカ地域を管轄するLACNICでは割り振りアドレス数に対して多くのROAが作られていることが分かります。また、国単位で見るといくつかの国が100%を達成しているようです(注3)。残念ながら日本の普及率は高いとは言えず、これからの奮闘が期待されます。
ROAの経路長を見てみます。図-3、図-4はそれぞれIPv4とIPv6のROA経路長、及び最大経路長の長さごとの分布を表したものです。一般にインターネット上で交換される経路の長さはIPv4が24まで、IPv6が48までとされていますので、それを超える長さの経路が交換されることはありません。それに対してROAは経路長の長いものが相当数見受けられます。また、図-5はROAの経路長と最大経路長の差異の分布を示したものですが、差がないものが圧倒的に多い半面、差が大きなものもかなり多く存在します。RPKIを使ったROVはあくまでIPアドレスとその広告元ASの組み合わせが正しいかを検証しているに過ぎず、広告元ASも含めて詐称されると対処できません。一般に経路ハイジャックは正規のBGP経路より経路長の長い経路を不正に流すことでその経路を乗っ取りますが、実際に広告するBGP経路よりROAの最大経路長が長いということはこのリスクを助長することになります。ですので、BGP広告経路とROAの最大経路長は極力同じ長さにしておくのが望ましいと考えられます。ただ、誤ってROAの最大経路長より長い経路を広告してしまうとROVで破棄されることになって経路障害を引き起こしますので、細心の注意を払う必要があります。
ここまでがROAの状況ですが、このROAを使いROVを行うとどの程度不正な経路が検出されるでしょうか。後で説明しますが、IIJは2020年末にROVを導入しているため、現在IIJ網内には原則として不正な経路は存在しません。そのため少し古いデータになりますが、IIJがROVを開始する以前である2020年8月頃の状況を見てみます。図-6はIIJが受信するBGP経路に対してROVを実施した結果を示しています。"valid"は検証結果が正当、"invalid"は不正、"not found"はROAがなく検証不可能を示します。この図のとおり、2020年8月時点ではおよそ3,000経路、全体の0.3%が不正な経路でした。
この不正な経路約3,000の内訳は図-7のとおりです。およそ半数は広告元ASは正しいもののその経路長が不正もの(mismatch length)、およそ3割は広告元ASが不正なもの(mismatch origin)、残りの2割が広告元AS及び経路長がいずれも不正なもの(mismatch origin and length)です。経路長が不正なものに関してはその多くが本来AS外に広告すべきではないAS内部の経路長の長い経路を誤って広告してしまっている(漏らしている)ケースと考えられます。一方、広告元AS及び経路長が不正なものは、悪意ある経路ハイジャックの可能性もありますが、あるASに割り振られたアドレスの一部を切り出して別のASから広告するケース(一般にパンチングホールと呼ばれる)でも多く発生していると考えられます。パンチングホールを行う場合、割り振りを受けたアドレスと切り出したアドレスをそれぞれ異なる広告元AS、経路長でそれぞれROAを作成すべきですが、切り出したアドレス分のROA作成を失念しているのではないかと想像します。ただ、実際にはどのケースにおいても本当の意図は当事者にしか分からず、考慮漏れによるものか、設定ミスによる経路ハイジャックか、悪意ある経路ハイジャックかは外部からは判別できません。そのため、ROVで不正と判定された経路を一律破棄することになり、それにより本来失うべきでない経路を失う可能性はゼロではありません。ROAと広告経路を正しく管理することはIPアドレスの割り振りを受けたASの責務であり、ROVで経路を破棄したASには一切非はありません。
ROVで不正と判定される約3,000経路は一律破棄されますが、必ずしもそのすべてで到達性を失うとは限りません。例えば、192.0.2.0/25を破棄したとしても、それを包含する192.0.2.0/24が存在すれば到達性は保たれます。ただし、実際にはこの例の192.0.2.0/25と192.0.2.0/24で広告元ASが異なるケースが多く存在し、この場合192.0.2.0/24が存在したとしても本来到達すべき場所までパケットが到達するかの客観的な判断は困難です。広告元ASが異なる場合を許容すれば約3,000経路のうち約2,500経路が、広告元ASが同じ場合のみ許容すれば約1,500経路は代わりになる経路が存在します。つまり、厳しく見て約500経路(全BGP経路のおよそ0.04%)、緩く見て約1,500経路(同0.15%)はROVにより到達性を失うと推定されます。
もちろん、経路ハイジャック自体を軽減するのがROVの目的ですので不正な経路を破棄することは正しい行為ですが、ROVの導入により仮に不正であってもそれまで成立していた通信を阻害することになる可能性もありますので、その影響は事前に確認するのが望ましいでしょう。
それでは、世界ではどの程度のASがROVを導入しているのでしょうか。ROAと違い、各ASのROV導入有無を外部から正確に把握することは困難です。各ASの自己申告にはなりますが、RPKIを啓蒙する目的で作成されたWebページhttps://isbgpsafeyet.com/によればおよそ100のASがROVを導入しています。もう少し客観的な情報として、ヨーロッパのRIRであるRIPE NCCが計測目的で広告している経路(注4)があり、この中に意図的にROVが正当あるいは不正となるよう調整した経路が含まれますので、この経路をどの程度のASが保持しているかでROVの導入状況を推測したのが表-1です。route views(注5)及びRIS(注6)は計測目的で各ASと接続し、その経路を収集しているプロジェクトですが、いずれも正当なものに比べて不正な経路を保持しているASは半分から2/3程度でした。ただし、あるAS自体が不正な経路を保持していないからといって必ずしもそのASがROVを導入しているとは限らず、その上流に位置するASがROVを導入すればそこを伝搬した経路を取得している下流のASも不正な経路を保持しなくなります。そのため、この結果がそのままROVを導入しているASを表しているわけではありませんが、ROVの目的である「不正な経路を伝搬させない」という効果は確実に見られます。今後ROVの導入が進めば、この数字も変化するものと思われます。
IIJもRPKIに取り組んでいます。まず、IIJがJPNICから割り振りを受けたIPアドレスの大半(IPv4 82%、IPv6 100%)に対して2020年末にROAを作成しました。これによりROVを導入しているASを介してIIJのIPアドレスが経路ハイジャックされるリスクを軽減できます。各ASへのROV導入が進めばこの効果はより増していきます。一部できていないものに関しては、特別な事情がありROAを発行してもらっているJPNICのシステムが対応できないことによるもの、割り振りアドレスのすべてもしくは一部を顧客のASで広告していて調整が必要になるもので、いずれ解消する予定です。
IIJが割り振りを受けたIPアドレスのROA作成は順調に進んでいますが、IIJのASであるAS2497が広告元になった経路全体で見ると、およそ3割程度しかROAがありません。これは、IIJのサービスを利用する顧客が、IIJのアドレスではなく、顧客自身で直接JPNICなどから割り振りを受けたアドレス(Provider Independent Address)を使い、AS2497を広告元にする場合があることに起因します。ROAの作成はBGPで経路広告するASではなく、アドレスの割り振りを受けた組織が行う必要があり、この場合は顧客自らが行うべきものです。これらのケースではIIJから顧客に対してROAの作成を促していきます。
ROVに関しては、IIJと他のASとの接続点においてROVの導入を進めており、2020年末時点で5割強の接続に導入しました。AS間の接続は一般に、AS同士の対等な接続であるピア、上流ISPに接続するアップストリーム(もしくはトランジット)、顧客に接続を提供するカスタマーの3つに分類されますが、IIJから見たピア及びアップストリームにはすべてROVを導入済みです。IIJから接続サービスを購入いただいている顧客へは現時点では導入できていませんが、顧客との接続点は以前から厳密な経路のフィルタを実施しており、不正な経路の流入はほぼありません。そのため既にIIJ網内には不正な経路はほとんどない状況ですが、それでも顧客にもROVを導入することでより確実に不正な経路を抑止することができますので、早ければ2021年度中にも顧客向けにROVを導入する計画です。
サービス利用顧客も含めたRPKIの導入は顧客の理解や協力が不可欠ですが、RPKIの重要性や必要性はまだ十分に浸透しているとは言えません。RPKIは顧客自身の通信安定性の向上、更にはインターネット全体の安定性向上に繋がる必要不可欠なものと考えますので、様々な場を通じてRPKIの啓蒙を行っています。
ここまで説明したRPKIを使った広告元AS検証ですが、これによりインターネット上で日々発生している様々な経路障害すべてに対応できるわけではありません。先に説明したとおり、広告元AS検証はあくまでIPアドレスと広告元ASの組み合わせを検証しているにすぎず、広告元AS自体を詐称された経路ハイジャックは検知できません。
また、経路ハイジャックと並び頻繁に発生するトラブルとして、経路リークと呼ばれるものがあります。これはあるASから受信した経路を本来すべきない別のASに広告し伝搬させてしまう事象で、設定ミスにより発生しがちな事象です。これが発生すると、通信が本来経由すべきでないASを経由してしまい、著しい通信遅延やパケットロスなどの障害が発生します。実際、インターネット上では年に何度かこの事象が発生しており、そのたびに著名なサービスや大きなISPがその被害を受け、その影響の大きさから一般のニュースにもなるほどの障害に発展しています。広告元AS検証はこの経路リークに対しては無力です。
このような事象に対応するべく様々な技術や仕組みが検討、議論されており、一部では標準化や導入が進んでいるものもありますが、RPKIのアイデアは2000年より前に考案されたものが今になってやっと普及してきたくらいですから、その浸透には長い時間を要することでしょう。それでも、ここまでインターネットが社会的に重要な基盤となった今、ひとたび大きな障害が発生すればその影響は計り知れません。ですので、インターネットを形成する各ASは不断の努力を持ってこれに望むべきであり、IIJもその一員としてインターネットコミュニティと共に精力的に取り組んで行きます。
執筆者プロフィール
堀 高房(ほり たかふさ)
IIJ 基盤エンジニアリング本部 ネットワーク技術部 ネットワーク運用課長。IIJバックボーンネットワークの運用に従事。
ページの終わりです