GNSS の妨害となりすましを検出する

GNSS 干渉は、次の 2 つのカテゴリに分類できます。

  • ジャミング
  • なりすまし

ジャミング攻撃では、GNSS と同じ周波数帯で強い無線信号を送信し、GNSS 衛星から送信される比較的弱い信号を妨害します。これにより、スマートフォンなどの GNSS レシーバが位置情報を計算できなくなる可能性があります。

スプーフィングは、より高度な攻撃です。この攻撃では、実際の GNSS 信号を装った偽の信号がブロードキャストされます。これらの偽の信号により、GNSS 受信機は実際とは大きく異なる位置や時間を計算してしまいます。これにより、地図アプリやナビゲーション アプリがユーザーに誤った情報を与えてしまう可能性があります。

GNSS のスプーフィングまたはジャミングについて

信号の信号強度または搬送波対雑音比(C/N0)と、スマートフォンの GNSS 無線の自動利得制御(AGC)は、干渉の優れた指標となります。

スプーフィングやジャミングが検出されると、AGC は低下する傾向があります。ラジオは強い電波を受信すると、受信信号の電力を調整するためにアンプのゲイン(AGC)を下げます。

干渉を示す信号強度の比較
図 1. 干渉が発生すると AGC が低下し(赤色の領域)、干渉がなくなると通常のレベルに戻ります(緑色の領域)。(画像出典: https://doi.org/10.33012/navi.537)

ただし、C/N0 の動作は、ジャミング イベントとスプーフィング イベントで異なります。ジャミング イベントの場合、無線で観測されるノイズは通常よりもはるかに大きくなります。そのため、搬送波対ノイズ比の分母が増加し、C/N0 値が低下します。スプーフィングの場合、逆のことが起こります。衛星からの実際の信号をかき消すほど強い偽の信号がブロードキャストされるため、全体的な信号強度が強くなり、C/N0 が増加します。

GNSS のスプーフィングやジャミングがないか確認する

GnssLogger アプリの [Spoof/Jam] タブを使用すると、環境が C/N0 と AGC に与える影響をリアルタイムで確認できます。

リアルタイム AGC と C/N0 プロット

[Spoof/Jam] タブには、各 GNSS コンステレーションと帯域(例: 「GPS L1」または「G:L1:」、「Galileo E5a」または「E:E5A:」)。

各 GNSS コンステレーションと帯域の AGC と C/N0 のグラフ。
図 2. スマートフォンを Wi-Fi ルーターの近くに置くと、AGC と C/N0 の両方が低下します(赤い楕円)。各コンステレーションと帯域の平均上位 3 つのシグナルは、破線で表示されます。各コンステレーションと帯域の AGC は単一の値で、実線で示されます。プロットの赤い丸で囲まれた部分には、スマートフォンを Wi-Fi ルーターの近くに置くと AGC と C/N0 の両方が低下し、干渉が発生することが示されています。

スプーフィングとジャミングのリアルタイム チェック

AGC と C/N0 のリアルタイム プロットの下に、GNSS 干渉に関連する条件を特定する一連の自動データチェックが表示されます。

なりすましやジャミングが原因で発生した可能性がある状況の証拠を表示する UI。
図 3. 自動チェックにより、スプーフィングやジャミングが原因で発生する可能性のある状態を特定できます。

[Jamming checks] セクションでは、アプリは、最新の 10 エポックの C/N0 と AGC の平均値が、前の 50 エポックと比較して変化しているかどうかを確認します。C/N0 と AGC が同時に減少する場合は、GNSS ジャミングの可能性があります。この状況が検出されると、カードに「FAIL」というメッセージと詳細情報が表示されます。

GNSS 干渉が原因で発生する可能性のある状態。
図 4. GNSS 干渉が原因である可能性のある状態が検出されたことを示す失敗。

[スプーフィング チェック] セクションの最初のカードでも C/N0 と AGC がチェックされますが、C/N0 の同時増加と AGC の低下が検出されます。

2 つ目のスプーフィング関連のチェックでは、デバイスで計算された GNSS 時間と、インターネット経由でネットワーク タイム プロトコル(NTP)サーバーから取得された時間(ネットワーク時間 - GNSS 時間)の 1 秒を超える差を探します。差が大きい場合は、計算された GNSS 時間が無効であることを示している可能性があります。

ヒント、コツ、注意点

GnssLogger の [Spoof/Jam] 機能を使用する際は、次の点に注意してください。

  • これは試験運用中の機能です。さまざまな Android デバイスの AGC の特性について詳しく把握するにつれて、スプーフィングとジャミングの変更に使用されるアルゴリズムが更新される可能性があります。
  • この機能では、すべてのスプーフィングとジャミングを検出できるわけではありません。リアルタイムのグラフとデータチェックにより、データのプロパティをリアルタイムで簡単に検出できますが、スプーフィングやジャミングのすべての例を検出できるほど堅牢ではありません。
  • この機能は C/N0 と AGC の変化を検出するように設計されています。スプーフィングやジャミングが存在する状態でアプリを開き、C/N0 と AGC が一定のままである場合、スプーフィングやジャミングは検出されません。
  • NTP サーバーは必ずしも安全ではありません。ネットワーク タイムもスプーフィングされる可能性があります。

公開バグトラッカーを使用して、スプーフィング/ジャミング機能に関するフィードバックをお送りください。