NTTドコモR&Dの技術ブログです。

インターネットをもっと安全に!RPKIを導入しよう!

はじめに

こんにちは。初めまして!NTTドコモの伊藤和樹です。

サービスデザイン部という組織で、主にSPモード向けのインフラ開発(特にネットワーク関係)を担ってます。 ご存じの方もいらっしゃるかも知れませんが、今年の春からドコモでは一部のスマートホンに対して、IPv6アドレスのみを割り当てる”IPv6シングルスタック”を始めましたが このプロジェクトをメインで担当しておりました。 IPv6シングルスタックに関する記事は、以下(Advent Calender2021)に掲載しておりますので、是非、ご覧下さい。

qiita.com

さて、今回はIPv6シングルスタックではなく、SPモードがインターネットで世界中と通信が出来る仕組みとRPKIというセキュリティに関するお話をさせて頂きます。

SPモードって何??

SPモードとは、ドコモの回線をご契約頂いているスマートホン・タブレット向けのインターネット接続サービスです。俗に言うISP(Internet Service Provider)です。 例えば、フレッツ光等の固定回線のインターネットを利用する場合、NTT東日本・西日本が提供するアクセスサービスと、OCNやplala等のISPをセットで契約することで、インターネットが利用可能になります。このISP部分のサービスがSPモードです。

SPモードの詳細な説明はドコモの公式ホームページに記載されていますので、ご参照ください。

www.docomo.ne.jp

SPモードが世界中と通信出来る仕組み

SPモードで世界中のWEBサイトが閲覧出来たり、様々なアプリが利用出来るのは、ISP同士がBGP(Border Gateway Protocol)というプロトコルで経路情報を交換しているからです。 ちなみに、プロトコルというのは、お互いが情報をやり取りするための”共通言語”の様なものです。 これを、もう少し具体的に説明しますね。

経路広報イメージ

まず、BGPで経路を交換する為には、AS(Autonomous System)番号が必要です。AS番号というのは、ISP、企業、大学等の教育機関などインターネットを構成する個々の独立したネットワークに対して割り当てられる一意の識別番号です。例として、NTTドコモは”9605”という番号がJPNICから割り当てられています。AS内で使用しているIPアドレス情報を外部に伝えることを”経路広報”、”経路広告”、”アドバタイズ”などと言い、ドコモの場合は、SPモードで使用しているIPアドレス(例として、49.96.0.0/12)をAS9605で外部に広報しています。その為、世界中のISP等はドコモのアドレス情報を把握出来る仕組みとなっており、ドコモのIPアドレス宛てのパケットが正しくドコモのネットワークに到達することが出来るのです。なお、この例に記載したアドレスは実際にSPモードで使用しているものですが、これ以外にも、たくさんのアドレスを広報しています。

ここで、あれ?????と思われる方がいるかも知れません。

ドコモ内部のIPアドレスを外部に広報していますので、ドコモネットワークの外からドコモネットワーク宛ての通信(つまり、コンテンツ等のダウンロード方向)は成立しますが、逆向き(アップロード方向)の通信は出来ない為、インターネットは利用出来ません。

では世界中のIPアドレスをドコモはどの様にして知るのでしょうか??

答えは”上位ISPから世界中の全ての経路情報=フルルートを受信”しています。 その為、スマートホン・タブレット等から世界中のWEBサイト閲覧や様々なアプリ等を利用した通信が可能なのです。 参考情報として、現在、ドコモが受信している経路数は、IPv4が約90万経路、IPv6が約15万経路です。 これを多いと感じるか、少ないと感じるか分かりませんが、経路数というのはIPアドレスの数では無く、先ほど、例で記載した”49.96.0.0/12”という一つのブロック(IPアドレス数では104万8576個あります)で1経路とカウントします。なお、世界中で広報されているIPアドレスは●.●.●.●/xxの/xxの部分が小さい数字から大きい数字まで様々ですが、原則ルールとして/24よりも大きな数字ではインターネット上で広報しないことになっています。

受信した経路情報は本当に正しいの?

ここまで記載した通り、インターネットで正常に通信を行うためには、AS同士が正しい経路情報を交換する必要があります。 もし、誰かが広報するアドレスを間違えたら、何が起きると思いますか??

例えば、ドコモが保有(使用)しているIPアドレスを、全く異なるASから広報すると・・・ この様な事象を「Mis-Origination (またはMis-Origin)」と言います。「経路ハイジャック」と呼ばれる場合もありますが、意図せず設定ミスが起きる場合も多い為、近年ではより事実に即した表現としてMis-Originationと呼ばれることが多くなっているとの事です 。 インターネット用語1分解説~Mis-Originationとは~ - JPNIC

経路広報誤り

先ほど使用したSPモードで使用しているIPアドレスと同じアドレス情報(49.96.0.0/12)を他AS(AS▼●▲■)がルータの設定を間違えてインターネット上に広報してしまいました。 そうすると、AS○△□▽は、49.96.0.0/12のIPアドレスが本来のAS9605と誤って広報しているAS▼●▲■の2か所にある様に見える為、どちらが本当の情報なのか判別出来ません。 その為、AS○△□▽のネットワーク配下のPCからドコモのwebサーバ(49.96.0.1)を閲覧しようとしても、どちらにルーティングすれば良いか判断出来ず、webサーバの閲覧不可といった事象が発生する可能性があります。ここで、事象が発生すると断言せず、”可能性がある”と表現しているのは、複数から同じ経路を受信した際、BGPの様々な属性(経路情報に付随する情報)を基に、優先すべき経路を判断する為、必ずしも不具合が発生する訳では無いからです。

経路広報誤り(webサーバアクセス不可)

実際にBGPの設定ミス等による事故が発生しています。

  • 平成29年8月に発生したgoogleによる経路情報の誤設定 平成29年8月25日の正午過ぎから夕方にかけて、一部のウェブサイトがつながりにくくなるなど、国内で大規模なインターネット接続障害が発生した

    電気通信事故検証会議の検証報告より https://www.soumu.go.jp/main_content/000525814.pdf

このgoogleの設定ミスは先ほど記載した、ドコモのIPアドレスを他ASから広報した場合と類似の事象です。 NTTコミュニケーションズが使用しているIPアドレスをgoogleが間違えて広報した為、NTTコミュニケーションズ向けのパケットがgoogleを経由するという事態になりました。

  • 突然,一部のユーザーが米グーグルの動画サイト「YouTube」にアクセスできなくなる。こんな事件が2008年2月24日に発生した。

    xtech.nikkei.com

経路広報に起因するトラブルを防ぐために

この様なBGPの事故を防止する為の仕組みとして、RPKIというものがあります。 カタカナとか英語とか、色々出てきて・・・私はなかなか覚えられず苦労しています。。。

RPKIというのは、Resource Public Key Infrastructureの略で、アールピーケーアイと読みます。(そのままですね。。。)

Public Key Infrastructureとは、公開鍵基盤で・・・・・

もう、この辺で出てくる用語が分からなくなり始め、頭に????が・・・

少なくとも私はイヤになりますww

簡単に説明すると、ドコモが保有し外部に経路広報しているアドレスには、ドコモ自身でお墨付きを与えることで、他ASが間違ってドコモのアドレスを広報しても ””経路の受信側””で気が付ける仕組みのことです。

はい!!

今、大事なことを言いましたよ!!!

もう一度、言います!!!

””経路の受信側””で気が付ける仕組みです。

そうなんです。

BGPの広報誤りによる事故を防ぐには受信側で自衛する必要があるのです! 本当は、経路広報する時点で送信側で誤りに気が付ければ良いのですが、今の仕組みでは出来ないので、作業ミスをしない様にみんな気を付けましょうという事です。

今でも十分、気を付けてますよね。

だけど、作業ミスは発生してしまうものなのです。

ですので、送信側で誤った経路を広報しても、受信側でその誤った経路情報に従わなければ問題は発生しないということです。

RPKIを利用した自衛方法

ここから、経路の”送信側”と”受信側”の両者が登場するので、少し分かり難いかもしれませんが、簡単に記載しますので、是非、お付き合いください。

では、どの様に受信側で自衛するのか、その仕組みをJPNICから引用させて頂きました図でご説明します。

この図はJPNICのホームページから引用させて頂きました。

JPNICのホームページ(リソースPKI (RPKI; Resource Public Key Infrastructure) - JPNIC)にRPKIの様々な情報が掲載されてますので、宜しければご参照ください。

RPKIとROAの概要(JPNICより引用)

経路の”受信側”で自衛する為には、まずは、”送信側”が自ASから経路広報しているIPアドレス情報に関し、ROA(Route Origin Authorization)の発行を行っている必要があります。 先ほど記載しました「ドコモが保有し外部に経路広報しているアドレスには、ドコモ自身でお墨付きを与える」ことを指しています。

JPNICの絵では、「AS64496で10.20.30.0/24を広報してるよ」という内容のROAを発行し、ROA集積所(リポジトリ)に登録します。

ここまでが、”送信側”が実施する内容です。

次に”受信側”がリポジトリからROAキャッシュにROA情報を取り込み、実際に経路情報を受信しているBGPルータとROAキャッシュが連携し、受信した経路が正しいもの(ROA登録されている)か否かをチェックします。受信した経路情報(10.20.30.0/24)がAS64496から広報されていれば、Valid(有効)と判定し、仮に異なるASから広報されている場合、Invalid(無効)な経路と判定します。 この”受信側”が実施する受信した経路情報が正しいか検証する仕組みをROV(Route origin validation)と言います。

ROVの結果、Invalidとなった場合の挙動は、受信経路を不正とみなして破棄する、または破棄はしないが優先度を下げて使用しないなど、各社の判断で対応することになります。

まとめると

  • 経路情報の送信側:ROA登録をやりましょう!!
  • 経路情報の受信側:ROVをやりましょう!!

ということで、受信側がROVを行うためには、送信側のROAが必須です!!

インターネットをより安全に提供する為に、まずは、ROAの登録率を上げる必要があります。ROA登録率が上がらないと、なかなかROVが普及しない・・・ 日本国内でROVまで実施しているASは数社しか無いと聞いています。

ドコモはRPKIをやっているの?

ここまで、色々と記載させて頂きましたが、ドコモはまだRPKIの導入に至っておりません。。。 本当は、RPKI始めました!!!という記事を書きたかったのですが・・・間に合わず。。。

現在、長崎県立大学とドコモでRPKIに関する共同研究を実施しており、お恥ずかしながらRPKIに関する知見の習得中です。 今後のスケジュール予定として、今年度(2022年度)中にROA登録は実施する想定で準備を進めています!

その後、検証環境での検証等を踏まえ、2023年度~24年度には商用環境でもROV含め運用開始したいと考えています。 国内全体として、これから普及を図ろう!!というフェーズかと思いますので、先行してRPKIを導入されている方がいらっしゃいましたら、是非、知見・ノウハウ等を共有頂けますと幸いです。

使えて当たり前!!の重要インフラである、インターネットを支えている裏側の仕組みと更に安全性を向上させる為の仕組みのご紹介でした。