概要
スマホ等でも利用されているGPS(GNSS)について、改めて仕組みを勉強してみました。
そもそもどうやって位置を特定しているのか、また、通信のセキュリティ担保方法はどうなっているのかを調査した内容となっています。
少し難しい内容ですが、ご興味ありましたらご覧くださいませ。
GPS、GNSSとは?
GPSとは、Global Positioning System(全地球測位システム)を略した言葉です。実はGPSというシステム自体は米国が開発したシステムであり、数ある測位システムの内の1つです。日本の場合は準天頂衛星(QZSS)、ロシアの場合はGLONASS、欧州の場合はGalileoというように、測位システムは複数存在します。その測位システムの総称をGNSS(Global Navigation Satellite System)と呼びます。本記事では測位システムのことをGPS(GNSS)と記載します。GPS(GNSS)はカーナビやスマホアプリ、ドローンにも活用されています。
そもそもどうやって位置を算出しているのか?
スマホやドローン等のデバイスが起動すると、地球の上空にある衛星からの信号を受信します。この信号を基にして自らの位置を算出します。本記事では概要レベルの紹介に留めます。理解すべきポイントとしては、位置を算出するには最低でも3つの衛星信号を受信する必要があるということです。何故3つ必要なのかについて解説致します。数学で学んだことがあると思いますが、ピタゴラスの定理が関係しています。
ピタゴラスの定理:a²+b²=c²
これは、直角三角形の底辺と高さをそれぞれ2乗して足した値と斜辺を2乗した値が等しいという定理です。
この定理によると、直角三角形の3辺の内、2辺が求まれば残りの1辺を求めることが可能です。そしてこれは平面だけでなく、立体でも適用可能です。つまり、以下の式が成立します。
a²+b²+c²=d²
デバイスと衛星の関係性で考えると、縦と横、つまり、図中の”a”と”b”が緯度と経度の差分、そして、”c”が高さの差分に該当します。”d”は立体における斜辺ですが、これはデバイスと衛星との距離に該当します。衛星から送信される信号には「信号を発信した際の時刻」「衛星の軌道情報(後述)」が含まれています。この2つの情報を基にピタゴラスの定理を当てはめます。
距離² = (緯度の差分)² + (軽度の差分)² + (高さの差分)²
ここで、距離の求め方についてですが、 距離=(信号を送信する速さ)×(信号を受信するまでにかかった時間)ですので、デバイスが信号を受信した際の自身の時刻を基に算出可能です。つまり、求めたいデバイスの位置を(x,y,z)、衛星の位置を(x1,y1,z1)と仮定した時、計算式は以下のようになります。
距離² = |x-x1|² + |y-y1|² + |z-z1|²
||という記号は絶対値という意味です。ここで、変数が3つあるので、デバイスの位置を求めるには、最低3つ方程式を作る必要があるということがご理解いただけると思います。上記を図で示すと、このようになります。
実は、デバイス内の時計と衛星内の時計には時刻のずれが生じるため、このずれを補正するためにもう1つ衛星信号が必要です。そのため、最低3つ衛星信号を受信する必要があると記述しましたが、実運用上は4つ以上を想定されているようです。
ここで、GPS(GNSS)衛星から送信される信号の中に衛星の位置が含まれていると思って調べていると、実はそうではないことに気づきました。衛星からは「衛星の軌道情報」が送られてくると記述しましたが、これには衛星の位置は含まれていません。送られてくるのは「衛星の位置を算出するために必要な情報」です。この情報には2つあり、アルマナックとエフェメリスと呼びます。アルマナックには全ての衛星軌道情報が大まかな粒度で含まれているため、どの衛星をターゲットにするかという目的で取得します。エフェメリスは信号を送信した衛星に対する詳細な衛星軌道情報が含まれており、これにより正確性が増すということのようです。アルマナックの中身を見たことがなかったため、色々探したところ、以下サイト様にアルマナックデータの例がございました(感謝です)。
衛星からは衛星の位置そのものを送信しているわけではなく、デバイス側で衛星の位置を算出するための情報が送られてくることが理解できます。
都会にいると位置がわからない理由:マルチパス現象
大きな建物がひしめく都会にいるとき、GPS(GNSS)を確認しようとすると、自分の位置がふらふらして定まらない現象が発生します。これは、GPS(GNSS)信号は上から降ってくることに関係しています。下の図では、衛星信号を遮るものがないので、安定して位置を算出できます。
一方、都会にいるときはこのようなイメージです。
このように、衛星からの信号が建物にぶつかり、思うようにデバイスに入ってこないため、位置の算出が困難になります。このような現象をマルチパスと呼びます。都会で例えましたが、山も同様に衛星信号を遮る要素です。そのため、山奥でも同様にマルチパス現象が発生し、位置が算出しにくくなります。
衛星からどんな信号が来ているのか?NMEAとは?
衛星から送信される電波(アナログ信号)をGPS(GNSS)受信機側でデジタル信号に変換し、NMEAと呼ばれるフォーマットへ変換します。NMEAのフォーマットについては以下サイト様に詳しく記載があるため、ここでは割愛致します(こちらのサイト様に業務中何回もアクセスさせていただきました、ありがとうございました)。
中身としては、デバイスとしての位置(緯度、経度)や受信時刻などが含まれており、ここまでくるとGPS(GNSS)らしくなってきます。
GPS(GNSS)測位信号の脆弱性、セキュリティホール
NMEAのフォーマットをよく見ていると、セキュリティに関するパラメータがないことに気づきます。つまり、第3者がこの情報を改ざんした場合、信号を受信したデバイスとしては気づく手段がありません。通常、データのやり取りをする際、セキュリティを担保するために、以下のような対策を施します。
- 通信路を保護する(例:TLS通信、HTTPS通信)
- 通信内容を保護する(例:通信内容を暗号化)
- 通信内容の改ざんを検知する(例:メッセージ認証コードをメッセージに同梱する)
通信路の保護とは、通信を行う際に安全なプロトコルで行うことを意図しています。代表的な通信プロトコルとしてTLS通信がありますが、これは通信の中身を外から見れなくする効果があるため、第3者は通信の中身を見ることができません。
通信内容を保護とは、通信内容を暗号化して第3者に通信の内容を知られないようにすることを意図しています。代表的な仕組みとして、共通鍵暗号方式、公開鍵暗号方式が知られています。
通信内容の改ざんを検知とは、通信内容が第3者に改ざんされているか否かを受信側で検知することを意図しています。代表的な仕組みとして、メッセージ認証コードをメッセージに同梱する方法が知られています。
ここまで紹介してきたGPS(GNSS)の仕組みと照らし合わせて考えると、まず、通信路はオープンであり、保護されていません。そして、通信内容も保護されていません(平文)。さらに、改ざんを検知するためのパラメータも存在しません。ダメ押しで、GPS(GNSS)の規格自体がオープンです。よって、ハッカーがその気になれば、改ざんした位置情報を送信し、デバイスに対して攻撃を行うことが可能です。このように、改ざんした位置情報による攻撃のことをGPS Spoofing(GPSスプーフィング)と呼びます。Spoofingとは日本語で成りすましを意味します。この攻撃により、例えばドローンの制御を妨害するなどのリスクが懸念されており、インシデント事例も発生しています。
GPS(GNSS)の脆弱性への対策
一見、無防備に見えるGPS(GNSS)ですが、実は軍事用で使われているGPS(GNSS)ではセキュリティ対策がされているそうです。対策内容は公開されていませんが、一般用と軍事用で差別化されているということです。ほとんどの方は一般用のオープンなGPS(GNSS)を利用するしかありません。ではGPS Spoofingに対して対策はできないのか、と言うとそうでもなく、リスクを軽減する方策はあります。リスクを軽減するために、ハード的な対策とソフト的な対策が考えられます。
ハード的な対策
ハード的な対策とは、デバイスが搭載しているアンテナそのものに手を入れる対策です。先述の通り、本来、衛生信号は上空で移動している衛生から送信されますが、攻撃信号は地上から同じ位置で送信される可能性が高いため、信号の方向を検知し、一定時間同じ位置と方向からの信号であれば破棄するという対策が可能となります。しかし、信号の方向を検知するためには、アレイアンテナにするなど、部品を増やす必要があるため、コストの面で現実的ではない可能性があります。さらに、脅威分析を行うフェーズによっては、ハード設計が完了している場合があり、このような対策は難しいかもしれません。
ソフト的な対策
GPS(GNSS)にはセキュリティに関する情報がなく、ソフト的にはどうしようもないように見えますが、実はGPS(GNSS)信号に電子署名を付与し、改ざんを検知する仕組みが2024年度から運用開始しているとのことです。準天頂衛星システムサービス株式会社様が運営されている「みちびきウェブサイト」によると、みちびき(準天頂衛星システム、つまり、日本版GPSです)を管理している管制局側で秘密鍵と公開鍵を生成し、衛星信号を認証するための電子署名データと航法メッセージをみちびき経由でデバイスへ送信する仕組みのようです。公開鍵に関しては、希望するユーザーに対して公布されるとのことで、申請先に関しては後日みちびきウェブサイトに掲載されるようです。みちびき以外の測位システムに関しては、GPS(米)とGalileo(欧州)に対応しているとのことです(2024年5月30日時点)。
電子署名、秘密鍵、公開鍵と難しい用語が出てきたため、簡単に仕組みを紹介します。まず、情報を暗号化する方法には大きく分けて2つあります。1つ目が「共通鍵暗号方式」、2つ目が「公開鍵暗号方式」です。共通鍵暗号方式とは、情報を暗号化/復号するために利用する鍵が共通、つまり、情報を送信する側と受信する側で同じ鍵を利用する仕組みです。この仕組みは通信先の分だけ暗号鍵が必要になるため、不特定多数と通信する測位システムには向いていません。一方、公開鍵暗号方式とは、情報を送信する側と受信する側で異なる鍵を利用する仕組みです。この鍵のことを「秘密鍵」と「公開鍵」と呼びます。この2つの鍵は対をなす必要があるため、鍵ペアと呼ばれたりします。つまり、秘密鍵と公開鍵がセットになっているということです。秘密鍵は情報を送信する側で持ち、対になる公開鍵を一般に配布します。情報を送信する側は秘密鍵で情報を暗号化し、情報を受信する側は公開鍵で情報を復号します。この仕組みであれば、秘密鍵1つで複数のユーザーと通信できるため、測位システムとの相性がよいと考えます。この公開鍵暗号方式を応用したのが電子署名です。例えば、航法メッセージを秘密鍵で暗号化し、電子署名として航法メッセージと一緒に送信します。信号を受信した側は公開鍵を用いて電子署名を復号し、受信した航法メッセージと比較します。電子署名は航法メッセージを暗号化したものですので、仮に航法メッセージが改ざんされている場合、復号した電子署名と航法メッセージは一致しないため、改ざんに気づけるという仕組みです。
よって、現状、GPS(GNSS)への脅威に対し、今であれば、電子署名による信号を認証するサービスを利用するというのが1つの対策となると考えます。
まとめ
GPS(GNSS)の仕組みと最新のセキュリティ対策についてまとめてみました。
- GPSとは数ある測位システムの1つであり、GNSSとは測位システムの総称
- 位置を特定するためには、複数の衛星信号を基にデバイスの位置を計算して算出する必要がある
- 大きな建物や障害物が近くにあると位置の特定が難しくなる(マルチパス)現象が知られている
- 衛星からの信号情報は今まではオープンで無防備だったが、改ざんを検知するためのサービスが検討されている