GPSハッキングから身を守れるか

2019年5月14日

繁華街を運転しながらカーナビに目をやると、現在地は空港であると表示されています。何だか気味が悪いな、とあなたは思うでしょう。これが、GPS信号のスプーフィングの一例です。「スプーフィング」とは「なりすまし」の意味で、地表から送られた偽の(そしてやや強い)GPS信号が衛星からのGPS信号をかき消してしまい、GPS座標がずれてしまったのです。

誰が何の目的でこのようなことをするのかは不明ですが、GPSスプーフィングはさまざまな場面で実際に使われています。それこそ、ドローンの乗っ取りから、ヨットやタンカーのナビゲーションシステムの干渉まで。唯一の朗報としては、保護ソリューションの開発が、ゆっくりながらも現れ始めていることでしょうか。

時間のない方のために、GPSスプーフィングの基本的事実をまとめました。

  • GPSスプーフィングとは、地上から偽のGPS信号を発信してGPS受信機をだます行為です。発信源の近くにあるナビゲーションシステムは、間違った場所を示し始めます。
  • GPSスプーフィングは、無人航空機(UAV)や自動車の乗っ取りや、タクシー運転手、ドローン、船の乗組員を混乱させるのに使用されることがあります。
  • GPSスプーフィング用ツールは価格が手ごろで、数百ドルあれば必要なものがすべてそろいます。
  • GPSスプーフィング対策のテクノロジーは現在開発が進められていますが、海上交通用ナビゲーションシステムなど、大規模なシステムを主に対象としています。
  • スマートフォンやタブレットを保護するために(利便性には多少欠けるが)一番簡単な方法は、位置情報モードの設定を「バッテリー節約」に切り替えることです。このモードでは、GPSが無効化され、Wi-Fiとモバイルネットワークだけで現在位置が特定されます(Androidのみ)。

では、上記について詳しく見ていきましょう。

GPSスプーフィングの仕組み

そもそもなぜGPS信号を偽造できるのかを理解するために、衛星測位システムの一般的原理をおさらいしましょう。まず、地球の静止軌道上には、複数の衛星システム(米国のGPS、ヨーロッパのGalileo、ロシアのGLONASS、中国のBeiDou)が存在します。

各衛星は、衛星コードと正確な発信時刻を含む電波信号を絶えず発信しています。携帯電話などのナビゲーション装置は何も発信せず、宇宙空間からやってくるこのような電波信号を受信するだけです。各信号の正確な受信時刻を分析することで、GPS受信機と衛星との距離を求めることができます。

受信機は、多少の計算を行い、このような信号をいくつか(少なくとも3種類。多いほどよい)比較することで、衛星に対する自身の相対的位置を正確に判断できます。衛星の座標は既知で不変ですから、この計算により、地表にあるGPS受信機の位置を算出することができます。

問題は、地表に到達するまでに衛星信号が減衰してしまうことと、受信機の大半はアンテナの感度がそれほどよくないことです。したがって、かなり強力な無線送信機を設置し、偽物ながら技術的には正しいGPS信号をそこから発信するだけで、衛星からの信号を簡単に打ち消し、近辺にあるGPS受信機に誤った座標を計算させることができます。

それに加え、受信機は信号の方向を判断する技術的な手段を持っていないので、まったく異なる発信源から信号が来ていることが分かりません。さらに悪いことに、GPSスプーフィングを行うための装置は極めて安価(約300ドル)ですし、必要なプログラムは一般的に無料で手に入ります。つまり、軍や諜報機関の関係者だけが操作できるような難しいものではなく、ほとんど誰でも実行可能なのです。

Security Analyst SummitでGPSスプーフィングのための自作機器について話すステファン・ガーリング(Stephan Gerling)氏

GPSスプーフィングを必要とするのは誰か?そしてその理由は?

これまで知られているGPSシステムのハッキング事例には、研究プロジェクト(ヨットの乗っ取りなど)関連のもの、サイバー密猟がらみのもの、軍事作戦(英語記事)関連のものがあります。ドローンや無人機のような自律システムの開発が進むにつれ、事例はいくらでも増えていくでしょう。また、軍事用UAVの乗っ取り(英語記事)についてもすでに報じられており、民間のドローンも状況は似たり寄ったりでしょう。

GPSスプーフィングから身を守るには

この問題が知られるようになってしばらく経ちますが、保護手段の開発には大きな障害があります。それは当の機器が宇宙空間にあり、すぐには交換できないということです。GPS衛星は、発信すべきものを発信し続けます。その信号を暗号化したり証明書を発行したりという、一般の保護手段を追加することは不可能です。現時点でのセキュリティ手段はどちらかというと実験的で、広く応用できる状況にはありません。

対策の1つに、マルチアンテナ受信機の構成(2×2)とビームフォーミング技術を使用した方法がありますが、スプーフィング対策として機能するだけでなく、信号の受信も安定します。さらに、ノイズや干渉を除去するだけでなく、信号がどの方向から発信されているのか判断するのにも利用可能です。

この技術により、偽の衛星信号と本物の衛星信号を区別しやすくなります。今のところ、このようなGPS装置は、比較的大規模な実験用試作品としてしか存在しませんが、将来的には、さらに小型の機器にも実装できるようになると見込まれます。これは見かけほど難しくなく、思うほどコストをかけずに実現できることでしょう。同様のテクノロジーが、4Gや5Gのセルラーネットワークですでに使われています。

市販のソリューションを使った対策もあります。こちらはすでに利用可能ですが、かなり大規模なGPS受信機(海洋船などに搭載されているもの)のみに導入されており、「GPSファイアウォール」と呼ばれています。GPSファイアウォールはGPS受信機と外部アンテナの間に設置される装置で、本物の信号だけが受信機に届くように、GPS信号をルールセットと絶えず照合して偽の信号を除外します。

いずれ、スマートフォン用チップのメーカーは、GPSファイアウォールのような機能をスマートフォンの衛星信号受信機に直接埋め込むことができるようになると思われますが、実現までにはさらに数年かかるでしょう。残念ながら、市場の需要を喚起する勢いを生み出すには、世間の注目を集めるようなハッキング事件が必要なのかもしれません。

とりあえず、繁華街で渋滞にはまっている最中にカーナビが現在地は空港であると主張し始めたら、デバイスの位置情報モードの設定を「バッテリー節約」に切り替えてみてください。このモードでは、衛星測位は使われず、Wi-Fiネットワークと基地局に基づいて、地理的な位置が判断されます。精度はかなり落ちますが、ないよりマシというものです。残念ながら、iOSにはこれに相当する機能はありません。Androidの場合なら、[設定]→[セキュリティと現在地情報]→[位置情報]→[モード]→[バッテリー節約]の順に選択して、バッテリー節約モードを有効にできます。

Android 8で位置情報モードの設定を「バッテリー節約」に切り替える方法

Android 8で位置情報モードの設定を「バッテリー節約」に切り替える方法