Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

IIJmio meeting 5 MVNOとGPSについて

103,407 views

Published on

この資料はIIJmio meeting 5で発表されたものです。詳細は下記blogをご覧下さい。
http://techlog.iij.ad.jp/archives/1293

Published in: Internet
  • Be the first to comment

IIJmio meeting 5 MVNOとGPSについて

  1. 1. 1 IIJmiomtg#5 MVNOとGPSについて 株式会社インターネットイニシアティブ
  2. 2. 2 •名前 大内宗徳 •所属 ネットワーク本部ネットーワークサービス部技術開発課 •経歴 2002年IIJ入社。以降、研究開発部門に所属 •業務内容 ネットワークサービス全般の技術調査、機器の動作検証、 研究開発 インターネット関連の技術調査、コアルータやスイッチ等機器の動作検証、 ツール開発 モバイル関連の技術調査、機器の動作検証、ツール開発 社内エンジニアの後方支援 最近はモバイルの端末挙動調査からコアネットワーク設備まで色々やってい ます! 自己紹介/初めてなので
  3. 3. 3 MVNOのGPSについて •ネット上ではMVNOとGPSについて情報があふ れています •ただし、古い情報や正しくない情報も散見されます •次の2つ問題に焦点をあてて解説していきます 1.MVNOではGPSが使えない? 2.MVNOでGPSの位置情報取得を高速にで きるのか?
  4. 4. 4 •端末のGPS機能は使うことは出来ます!でき るはずです ->ただし、端末によってGPSの位置情報取得に かなり時間がかかる場合がある (白ロム端末だと顕著になる場合も) ->MVNOだとGPSが使えない、という誤解に •この原因を理解するために下記の2つを解説 •Android端末の位置情報取得 •GPSとA-GPSの仕組みについて解説 1.MVNOではGPSが使えない?
  5. 5. 5 (注1)運が良ければこの精度で (注2)GPSを直近で使っていれば、暫くの間は早く取得可能 (注3)Android4.4以降では改善されているらしい。LGG2mini(4.4.2)で確認 無線LAN MNOの基地局情報 GPS 位置特定に利用す る情報 BSSID Cell ID 衛星の信号 位置情報精度 数十~百m (注1) 数百m~数km (注1) 数m 位置取得の時間 早い 早い 遅い(注2) 無線LANをON 必要 不要 不要 Googleサーバへの 到達性 必要 必要 不要 音声orSMS契約 必要なし 必要(注3) 不要 Android端末での位置情報取得
  6. 6. 6 Android端末での位置情報取得/GoogleMAP •飯田橋のIIJ本社で試した結果 •端末SO-03D で、MVNOSIM利用 •大体の位置ならば無線LANでもOK。GPSは時間がかかる 無線LAN 基地局GPS
  7. 7. 7 GPSについて •ただし、正確な位置把握のためにはGPSが必要 ->本題のGPSの話題に •GPS概要については省略 •GPSによる位置情報の取得は仕組み的に時間が 掛かる •この仕組みをもう少し掘り下げて説明
  8. 8. 8 GPSで位置情報を取得する手順 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 (補足) 1、2の処理は時間がかかる。3,4の処理は短時間で完了 エフェメリス: 衛星の詳細な位置情報 アルマナック: 衛星の概略の位置情報
  9. 9. 9 TimeToFirstFix(TTFF) •GPS端末が初期の位置情報取得までにかかる時間 •GPS端末の位置情報を取得する性能指標として用いられる •参考:SiRFStarIII™ http://hyperlogos.org/files/GSC3%28f%29_6.20.05.pdf •おおまかに分けて3つの状態で値が示されている •ColdStart GPS衛星に関する情報を何も持ってない状態 30秒~数分かかる •WarmStart GPS時刻、アルマナック、過去に計算済の位置情報を持つ状態 30秒~1分 •HotStart 2-3時間以内のエフェメリス、計算済の位置情報を持つ状態 数秒以内
  10. 10. 10 ColdStartとの関係 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 1-5のすべての処理を行うため時間がかかる!
  11. 11. 11 WarmStartとの関係 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 1は以前に取得したアルマナック等の情報からサーチを高速化 でき、また、2のナビゲーションメッセージ取得を一部省ける分、 時間が短くなる!
  12. 12. 12 HotStartとの関係 •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星からの信号を利用して位置情報を逐次更新 1,2の処理を省けるため、大幅に時間が短縮される!!
  13. 13. 13 GPSとA-GPSの関係について •手順の概略 1.端末がGPS衛星からの信号サーチして見つける 2.衛星から信号に含まれるナビゲーションメッセージ得る GPS時刻/エフェメリス/アルマナック/補正情報 3.衛星からの信号の到達時間を調べる 4.衛星の位置と信号の到達時間、各種補正情報をもとに端 末の位置を計算 5.この時点で端末の大体の位置がわかる 6.衛星と端末の関係から最適な衛星を割り出して、最適な 衛星を割だして位置情報を逐次更新 1,2の部分の情報をIPネットワークから提供する ことで、HotStartに近い時間短縮を目指す! =>(MS-based)A-GPS
  14. 14. 14 •ここまで説明して最初の話に戻ります •MVNOでGPSの動作を高速化出来ないのか? ->キャリア端末でもアプリでGPSを高速化できる ただし、一部端末は無理 •GPSの高速化、A-GPS実装について解説 A-GPSについて AndroidのA-GPSの実装 (おまけ)A-GPSサーバとの通信プロトコル解析 2.MVNOでGPSの位置情報取得を高速にできるのか?
  15. 15. 15 A-GPSについて-1 一般的なA-GPSの実装は2種類に大別される 1.SUPLに基づく実装 •SUPL(SecureUserPlaneLocation) •OMASecureUserPlaneLocationV1.0/V2.X •3GPPTS44.031 •LocationServices(LCS);MobileStation(MS)-ServingMobileLocationCentre(SMLC)RadioResourceLCSProtocol(RRLP) •特徴 •IP通信でのSUPLサーバからGPS測位補助情報を取得可能 •モバイルデータ通信が必要->無線LAN経由は不可 •標準化されたプロトコルを利用 •SSL/TCPport7275を利用 •SUPLサーバをSSL証明書で確認 •GoogleはSSLを使わないport7276も利用 •利用できる端末が制限されることが多い •キャリア網内からしかアクセスできない •IMSI/MSISDNの認証等がある
  16. 16. 16 A-GPSについて-2 2.GPSチップメーカー独自実装 •特徴 •IP通信でのサーバからGPS測位補助情報を取得可能 •アクセスネットワークなんでも良い(3G/LTE/WiFi..) •HTTPでデータをダウンロードしてGPSチップに与える •エフェメリス、アルマナック等を含む •データフォーマットはベンダー独自 •1週間前後有効な場合が多い •情報を取得するのに認証等は不要 •MVNOからでも利用可能! •ベンダー実装例 •Qualcomm:gpsOneXTRA •Broadcom:LongTermOrbit(LTO) •MediaTek:ExtendedPredictionOrbit(EPO)
  17. 17. 17 AndroidのA-GPSの実装-1 •A-GPSの実装 •SUPLとGPSチップメーカーの独自実装の両対応APIあり •ただし、端末メーカーによって対応が異なる •無線LANのみ端末->メーカー独自のみ •3G/LTE端末->両方対応orSUPLのみ対応 •A-GPSに関する設定 •/system/etc/gps.conf–端末によって違うファイル、隠しモードで設定 •root権限がないと書き換え不可能 •設定からでは変更できない値が多い •GPSのドライバーにハードコーディング? •SSL利用の有無の設定はできない? •3G/LTE経由でSUPLの有効化 •APNタイプが未設定ordefault,suplの記述であればOK •端末によってはこの値を見てない場合も… •SSL証明書を利用したSUPLサーバの確認 •NTTドコモの端末は確認を行っている(?) •SIMフリー端末だとSSLを利用してないものがほとんど
  18. 18. 18 •A-GPSの利用 1.SUPL利用 •GPSを利用する位置情報取得APIが叩かれると、SUPL サーバへアクセスして補助情報の取得を試みる •SUPLサーバへのアクセス •ドコモ端末:dcm-supl.com/MSISDN/SSLport7275 •SIMフリー端末:supl.google.com/IMSI/SSLなしport7276 •一部のSIMフリー端末だと、音声/SMS契約がないと SUPLが正常に利用できない場合が 2.GPSチップメーカー独自実装の利用 •アプリで明示的にAPIを叩かないと利用出来ない?! AndroidのA-GPSの実装-2
  19. 19. 19 AndroidのA-GPSの実装-3 •GPSチップメーカー独自実装のA-GPSの利用 •APIを明示的に叩く場合の例 •実際の利用方法 •GPSStatus&ToolboxなどのAPIを叩くアプリを利用 •注意点 •APIを叩いても正常に動作したかはわからない •独自実装がされてなくても、APIは叩ける android -Problems with sendExtraCommandand force_xtra_injection-Stack Overflow http://stackoverflow.com/questions/4961514/problems-with-sendextracommand-and-force-xtra- injection public static void downloadGPSXtra(Context context) { LocationManagerlocationmanager= (LocationManager)context.getSystemService("location"); Bundle bundle= new Bundle(); locationmanager.sendExtraCommand("gps", "force_xtra_injection", bundle); locationmanager.sendExtraCommand("gps", "force_time_injection", bundle); }
  20. 20. 20 AndroidのA-GPSの実装-4 •GPSStatus&Toolboxの画面サンプル
  21. 21. 21 AndroidのA-GPSの実装-5 •GPSStatus&Toolboxを利用してTTFFを測定 •それぞれ2回試した。単位は秒 •(注)端末のA-GPSデータを消去したColdStart状態で計測 GPSStatus&Toolbox->ManageA-GPSstate->Reset SO-03D:*#*#7378423#*#*->Servicetests->GPS->Purgeassistancedata LGG2mini:3845#*620#->GNSSTest–>DeleteAidingData GPSのみ A-GPS(SUPL) SUPLサーバ A-GPS(メーカー独自) SO-03D/Xi SIM 35/47 19/20 ドコモ 10/11 SO-03D/IIJSIM 39/34 34/33(注) ドコモ 8/17 AscendG6/IIJ SIM 69/70 12/8 Google 10/11 LG G2 mini/IIJ SIM 197/254 42/55 Google 16/27 •GPS信号の捕捉時間は端末に依存 •GPSのみに比べて、A-GPSを利用すると早くなる •MVNOSIMでもA-GPS(メーカー独自)利用で高速化! (注)NTTドコモのSUPLは利用できません。
  22. 22. 22 まとめ 1.MVNOではGPSが使えない? ->使えます! GPSの仕組み的に時間がかかるため、その理由を解説 2.MVNOでGPSの位置情報取得を高速にでき るのか? ->キャリア端末でもアプリを使えば高速化出来ます! (ただし、一部端末ではダメ) GPSのTTFFを高速化するA-GPSについて解説 実際にA-GPSを利用したTTFFを測定して確認
  23. 23. 23 おまけ -Apple(iPhone)のA-GPSの実装 -A-GPSサーバとのSUPLプロトコル解析 -dcm-supl.comのSUPLプロトコル解析 -supl.google.comのSUPLプロトコル解析
  24. 24. 24 Apple(iPhone)のA-GPSの実装-1 •A-GPSの実装 •GPSチップメーカーの独自実装のみ?! •SUPLは利用してないらしい (参考) When Assistance Becomes Dependence: Characterizing the Costs and Inefficiencies of A-GPS http://www.tid.es/sites/526e527928a32d6a7400007f/content_entry5321ef0928a32d08900000ac/533c077028a32da56a0024fc/files/agps_mc2r_2013.pdf •キャプチャでも、TCPport7275向けの通信は見つからず •A-GPSに関する設定 •設定は一切不可 •位置情報サービスのOFF/ONぐらい •GPSのチップ •端末世代毎にGPSのチップが異なる •世代毎に異なるデータをダウンロードして利用 •iPhone3G:LTO •iPhone4S:gpsOneXTRA •iPhone5/5S/6:?
  25. 25. 25 •GPSチップメーカー独自実装の利用 •iPhone5c(iOS8.1)の場合 •位置情報取得APIを叩くと、謎のバイナリデータを取得 •これがA-GPSのデータか?! •モバイル通信/Wi-Fiどちららでも同じ挙動 •Appleサーバからなので、MVNO SIMでも問題ない •HTTPS経由で取得 •TTFFの計測テスト •できませんでした。。。 •困った点 •A-GPSデータを消去できない? •コールドスタート状態に戻せないので、比較試験が出来ず •A-GPSデータ無効相当にするは1週間以上の放置が必要 •A-GPSデータが有効であるかの確認がアプリからでは難しい •iOSはNMEA形式でのGPSデータ出力をサポートしてない? (参考) Android でGPS 衛星からの情報をNMEA 形式で取得する方法-A Day In The Life http://d.hatena.ne.jp/glass-_-onion/20101123/1290522121 Apple(iPhone)のA-GPSの実装-2
  26. 26. 26 •謎バイナリデータ(A-GPSデータ?) •Proxyを設定し、mitmproxyでHTTPS通信を監視して確認 (参考) iPhone -iOS実機のSSL通信をプロキシによって傍受したり改ざんする方法-Qiita--- http://qiita.com/yimajo/items/c67cb711851f747c35e5 2014-10-23 15:47:43 GET https://cl2.apple.com/4/v1/124/318/1240000_3180000_0000000001B8000A.gz ← 200 application/x-gzip468.74kB 4.15MB/s Request Response Host: cl2.apple.com User-Agent: locationd/1753.17 CFNetwork/711.1.12 Darwin/14.0.0 Connection: close Proxy-Connection: close https://cl2.apple.com/4/v1/124/318/1240000_3180000_0000000001B8000A.gz ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 上記^部分はアクセスされるごとに異なる。ルールは不明 上記ファイルを解答して調べたがバイナリーファイルで正体不明 頻繁に異なる種類のファイルをダウンロードする場合も Apple(iPhone)のA-GPSの実装-3
  27. 27. 27 (おまけ)無線LAN/基地局から情報取得するAPI •iPhone5c(iOS8.1)の場合 (参考)Apple社のGeoLocationシステム周りに関するお話 http://d.hatena.ne.jp/RobinEgg/20140113/p1 2014-10-2315:47:43POSThttps://gs-loc.apple.com/clls/wloc Host:gs-loc.apple.com Proxy-Connection:keep-alive Accept-Encoding:gzip,deflate Content-Type:application/x-www-form-urlencoded Accept-Language:en-us Connection:keep-alive Accept:*/* Content-Length:70 User-Agent:locationd/1753.17CFNetwork/711.1.12Darwin/14.0.0 Hex000000000000010005656e5f55530013636f6d2e61....en_US..com.a 000000001070706c652e6c6f636174696f6e64000apple.locationd.. 0000000020382e312e3132423431310000000100008.1.12B411...... 0000000030001418002001ca010d08b803100a1883............... 0000000040f69014209028....( Apple(iPhone)のA-GPSの実装-4
  28. 28. 28 A-GPSサーバとのSUPLプロトコル解析-1 •SUPLサーバとのやりとりをキャプチャ •supl-client/supl-proxyをベースに独自改良 •Assisted GPS (AGPS) SUPL client and proxy •http://www.tajuma.com/supl/ •Patch to build supl-proxy and fallback to non-TLS connection •https://gist.github.com/kanru/3713093 •キャプチャ環境 [supl-client]--(非SSL/TCP)--[supl-proxy]—(SSL/TCP)—[SUPLserver] [端末]-------(非SSL/TCP)--[socat]—--(非SSL/TCP)—[SUPLserver] ^^^^^^^^^^^^^^ ここでキャプチャ
  29. 29. 29 A-GPSサーバとのSUPLプロトコル解析-2 •SUPLプロトコルの基本的なやりとり [端末]------SUPLSTART-----[SUPLサーバ] ----SUPLRESPONSE---- ------SUPLPOSINIT---- ----SUPLPOS--------- •(注意)TCP/SSL通信なので前後に他のシーケンスがあるが詳細略
  30. 30. 30 SUPLサーバ:dcm-supl.com-1 •試験環境 •Xiデータ通信サービスSIMを利用 •APN:mopera.net •supl-clientツールを利用してアクセス •tcpdumpでキャプチャ •Wiresharkでデコード •参考:DNSでの名前解決 •IIJmio SIM (host) /root >host dcm-supl.com Host dcm-supl.com not found: 2(SERVFAIL) •Xiデータ通信SIM (host) /root >host dcm-supl.com dcm-supl.com has address 61.195.xxx.xxx
  31. 31. 31 SUPLSTART例SUPLRESPONSE例 OMA UserPlaneLocation Protocol ULP-PDU length: 30 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXX message: msSUPLSTART(1) msSUPLSTART sETCapabilities posTechnology .... ..0. agpsSETassisted: False .... ...1 agpsSETBased: True 0... .... autonomousGPS: False .0.. .... aFLT: False ..0. .... eCID: False ...0 .... eOTD: False .... 0... oTDOA: False prefMethod: agpsSETBasedPreferred(1) posProtocol 0... .... tia801: False .1.. .... rrlp: True ..0. .... rrc: False locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 410 refMNC: 10 refUC: 3752005 status: stale (0) OMA UserPlaneLocation Protocol ULP-PDU length: 32 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXX slpSessionID sessionID: d00535ea slpId: fQDN(1) fQDN: dcm-supl.com message: msSUPLRESPONSE(2) msSUPLRESPONSE posMethod: agpsSETbased(1) SUPLサーバ:dcm-supl.com-2
  32. 32. 32 SUPLPOSINIT例 OMA UserPlaneLocation Protocol ULP-PDU length: 49 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXX slpSessionID sessionID: d00535ea slpId: fQDN(1) fQDN: dcm-supl.com message: msSUPLPOSINIT(3) msSUPLPOSINIT sETCapabilities posTechnology ...0 .... agpsSETassisted: False .... 1... agpsSETBased: True .... .0.. autonomousGPS: False .... ..0. aFLT: False .... ...0 eCID: False 0... .... eOTD: False .0.. .... oTDOA: False prefMethod: agpsSETBasedPreferred(1) posProtocol .... .0.. tia801: False .... ..1. rrlp: True .... ...0 rrc: False requestedAssistData ..1. .... almanacRequested: True ...0 .... utcModelRequested: False .... 0... ionosphericModelRequested: False .... .0.. dgpsCorrectionsRequested: False .... ..1. referenceLocationRequested: True .... ...1 referenceTimeRequested: True 1... .... acquisitionAssistanceRequested: True .0.. .... realTimeIntegrityRequested: False ..1. .... navigationModelRequested: True navigationModelData gpsWeek: 0 gpsToe: 0 nSAT: 0 toeLimit: 0 locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 410 refMNC: 10 refUC: 13182428 status: stale (0) SUPLサーバ:dcm-supl.com-3
  33. 33. 33 SUPLPOS例-1 OMA UserPlaneLocation Protocol ULP-PDU length: 1689 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 1 setId: msisdn(0) msisdn: XXXXXXXXXXXXXXX slpSessionID sessionID: d00535ea slpId: fQDN(1) fQDN: dcm-supl.com message: msSUPLPOS(4) msSUPLPOS posPayLoad: rrlpPayload(2) rrlpPayload: 201178de99a9f8998a52618a43... Radio Resource LCS Protocol (RRLP) PDU referenceNumber: 1 component: msrPositionReq(0) msrPositionReq positionInstruct methodType: msBased(1) msBased: 60 positionMethod: gps(1) measureResponseTime: 5 useMultipleSets: oneSet(1) gps-AssistData controlHeader referenceTime gpsTime gpsTOW23b: 5569612 gpsWeek: 788 gpsTowAssist: 11 items Item 0 GPSTOWAssistElement satelliteID: 19 tlmWord: 788 antiSpoof: 1 alert: 0 tlmRsvdBits: 0 Item 1 GPSTOWAssistElement satelliteID: 27 tlmWord: 788 antiSpoof: 1 alert: 0 tlmRsvdBits: 0 . refLocation. threeDLocation: 9032c5ac635f9900401111007f00 1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9) 0... .... = Sign of latitude: North (0) .011 0010 1100 0101 1010 1100 = Degrees of latitude: 3327404 (35.69918 degrees) Degrees of longitude: 6512537 (139.74389 degrees) 0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0) .000 0000 0100 0000 = Altitude in meters: 64 .001 0001 = Uncertainty semi-major: 17 (40.5 m) .001 0001 = Uncertainty semi-minor: 17 (40.5 m) Orientation of major axis: 0 .111 1111 = Uncertainty Altitude: 127 (990.5 m) .000 0000 = Confidence(%): 0 . GPS時刻-> 位置情報-> SUPLサーバ:dcm-supl.com-4
  34. 34. 34 SUPLPOS例-2 navigationModel navModelList: 11 items Item 0 NavModelElement satelliteID: 19 satStatus: newSatelliteAndModelUC(0) newSatelliteAndModelUC ephemCodeOnL2: 1 ephemURA: 0 ephemSVhealth: 0 ephemIODC: 92 ephemL2Pflag: 0 ephemSF1Rsvd reserved1: 0 reserved2: 0 reserved3: 0 reserved4: 0 ephemTgd: -17 ephemToc: 27900 ephemAF2: 0 ephemAF1: 38 ephemAF0: 517171 ephemCrs: 997 ephemDeltaN: 15911 ephemM0: -412499778 ephemCuc: 891 ephemE: 51890437 ephemCus: 3884 ephemAPowerHalf: 2702030612 ephemToe: 27900 ephemFitFlag: 0 ephemAODA: 31 ephemCic: -26 ephemOmegaA0: -2034760447 ephemCis: 31 ephemI0: 633654509 ephemCrc: 7269 ephemW: 909022217 ephemOmegaADot: -24347 ephemIDot: 900 . almanac alamanacWNa: 21 almanacList: 32 items Item 0 AlmanacElement satelliteID: 0 almanacE: 7451 alamanacToa: 15 almanacKsii: 3144 almanacOmegaDot: -688 almanacSVhealth: 0 almanacAPowerHalf: 10554631 almanacOmega0: 5898737 almanacW: 1148377 almanacM0: 5429806 almanacAF0: 23 almanacAF1: 0 . . acquisAssist timeRelation gpsTOW: 5569612 acquisList: 11 items Item 0 AcquisElement svid: 19 doppler0: 249 addionalDoppler doppler1: 28 dopplerUncertainty: 4 codePhase: 367 intCodePhase: 12 gpsBitNumber: 0 codePhaseSearchWindow: 0 addionalAngle azimuth: 12 elevation: 7 . . エフェメリス-> アルマナック-> 衛星補足 補助情報-> SUPLサーバ:dcm-supl.com–5
  35. 35. 35 SUPLサーバ:supl.google.com-1 •試験環境 •MVNO(IIJSIM)を利用 •SMS+データ通信SIM •データ通信SIM •APN:IIJのテスト用APN •DNSサーバでsupl.google.comのアドレスをキャプチャ用 サーバのアドレスを返して、トラフィックを捻じ曲げた •端末 •ASUSFonepadME371MG •LGG2mini •tcpdumpでキャプチャ •Wiresharkでデコード
  36. 36. 36 SUPLサーバ:supl.google.com-2 SUPLSTART例 データ通信SIMを利用した場合-ASUSFonepadME371MG OMA UserPlaneLocation Protocol ULP-PDU length: 18 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 446 setId: imsi(3) imsi: 441030…….. message: msSUPLEND(5) msSUPLEND statusCode: systemFailure(1) <-正常なリクエストが 送られていない A-GPS動作せず
  37. 37. 37 SUPLサーバ:supl.google.com-3 SMS+データ通信SIMを利用した場合-ASUSFonepadME371MG SUPLSTART例SUPLRESPONSE例 OMA UserPlaneLocation Protocol ULP-PDU length: 30 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 502 setId: imsi(3) imsi: 441030….. message: msSUPLSTART(1) msSUPLSTART sETCapabilities posTechnology .... ..1. agpsSETassisted: True .... ...1 agpsSETBased: True 1... .... autonomousGPS: True .0.. .... aFLT: False ..0. .... eCID: False ...0 .... eOTD: False .... 0... oTDOA: False prefMethod: noPreference(2) posProtocol 0... .... tia801: False .1.. .... rrlp: True ..0. .... rrc: False locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 status: current (1) qoP horacc: 19 maxLocAge: 1 OMA UserPlaneLocation Protocol ULP-PDU length: 26 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 502 setId: imsi(3) imsi: 441030...... slpSessionID sessionID: 4a125ae4 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLRESPONSE(2) msSUPLRESPONSE posMethod: agpsSETbased(1)
  38. 38. 38 SUPLサーバ:supl.google.com-4 SMS+データ通信SIMを利用した場合-ASUSFonepadME371MG SUPLPOSINIT例 OMA UserPlaneLocation Protocol ULP-PDU length: 40 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 502 setId: imsi(3) imsi: 441030……. slpSessionID sessionID: 4a125ae4 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLPOSINIT(3) msSUPLPOSINIT sETCapabilities posTechnology .... 1... agpsSETassisted: True .... .1.. agpsSETBased: True .... ..1. autonomousGPS: True .... ...0 aFLT: False 0... .... eCID: False .0.. .... eOTD: False ..0. .... oTDOA: False prefMethod: noPreference(2) posProtocol .... ..0. tia801: False .... ...1 rrlp: True 0... .... rrc: False requestedAssistData ...0 .... almanacRequested: False .... 0... utcModelRequested: False .... .0.. ionosphericModelRequested: False .... ..0. dgpsCorrectionsRequested: False .... ...1 referenceLocationRequested: True 1... .... referenceTimeRequested: True .0.. .... acquisitionAssistanceRequested: False ..0. .... realTimeIntegrityRequested: False ...1 .... navigationModelRequested: True navigationModelData gpsWeek: 0 gpsToe: 0 nSAT: 0 toeLimit: 0 locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 status: current (1)
  39. 39. 39 SUPLサーバ:supl.google.com-5 SMS+データ通信SIMを利用した場合-ASUSFonepadME371MG SUPLPOS例-1 OMA UserPlaneLocation Protocol ULP-PDU length: 948 version maj: 1 min: 0 servind: 0 . . message: msSUPLPOS(4) msSUPLPOS posPayLoad: rrlpPayload(2) rrlpPayload: 24134053f68cc51b206... Radio Resource LCS Protocol (RRLP) PDU referenceNumber: 1 component: assistanceData(2) assistanceData gps-AssistData controlHeader referenceTime gpsTime gpsTOW23b: 5502604 gpsWeek: 788 refLocation threeDLocation: 9032c737635ff000642c2c007f27 1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9) 0... .... = Sign of latitude: North (0) .011 0010 1100 0111 0011 0111 = Degrees of latitude: 3327799 (35.70341 degrees) Degrees of longitude: 6512624 (139.74576 degrees) 0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0) .000 0000 0110 0100 = Altitude in meters: 100 .010 1100 = Uncertainty semi-major: 44 (652.6 m) .010 1100 = Uncertainty semi-minor: 44 (652.6 m) Orientation of major axis: 0 .111 1111 = Uncertainty Altitude: 127 (990.5 m) .010 0111 = Confidence(%): 39 navigationModel navModelList: 13 items Item 0 NavModelElement satelliteID: 0 satStatus: newSatelliteAndModelUC(0) newSatelliteAndModelUC ephemCodeOnL2: 0 ephemURA: 0 ephemSVhealth: 0 ephemIODC: 81 ephemL2Pflag: 0 ephemSF1Rsvd reserved1: 0 reserved2: 0 reserved3: 0 reserved4: 0 ephemTgd: 12 ephemToc: 27450 ephemAF2: 0 ephemAF1: 4 ephemAF0: 47254 ephemCrs: -1071 ephemDeltaN: 12399 ephemM0: 231454399 ephemCuc: -905 ephemE: 30423662 ephemCus: 5640 ephemAPowerHalf: 2702010424 ephemToe: 27450 ephemFitFlag: 0 ephemAODA: 31 ephemCic: 41 ephemOmegaA0: 1593627408 ephemCis: 24 ephemI0: 657148950 ephemCrc: 5735 ephemW: 290747099 ephemOmegaADot: -22274 ephemIDot: 704 . GPS時刻-> 位置情報-> エフェメリス->
  40. 40. 40 SUPLサーバ:supl.google.com-6 データ通信SIMを利用した場合–LGG2mini SUPLSTART例 OMA UserPlaneLocation Protocol ULP-PDU length: 41 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 0 setId: imsi(3) imsi: 441030………… message: msSUPLSTART(1) msSUPLSTART sETCapabilities posTechnology .... ..0. agpsSETassisted: False .... ...1 agpsSETBased: True 1... .... autonomousGPS: True .0.. .... aFLT: False ..1. .... eCID: True ...0 .... eOTD: False .... 0... oTDOA: False prefMethod: noPreference(2) posProtocol 0... .... tia801: False .1.. .... rrlp: True ..0. .... rrc: False locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 OMA UserPlaneLocation Protocol ULP-PDU length: 26 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 0 setId: imsi(3) imsi: 441030……………. slpSessionID sessionID: 9bebd352 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLRESPONSE(2) msSUPLRESPONSE posMethod: agpsSETbased(1) SUPLRESPONSE例 primaryScramblingCode: 427 measuredResultsList: 1 item Item 0 MeasuredResults frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 cellMeasuredResultsList: 1 item Item 0 CellMeasuredResults modeSpecificInfo: fdd(0) fdd primaryCPICH-Info primaryScramblingCode: 427 cpich-Ec-N0: 43 cpich-RSCP: 47 status: current (1) qoP horacc: 19 maxLocAge: 0 delay: 7
  41. 41. 41 SUPLサーバ:supl.google.com-7 SMS+データ通信SIMを利用した場合–LGG2mini SUPLPOSINIT例 OMA UserPlaneLocation Protocol ULP-PDU length: 51 version maj: 1 min: 0 servind: 0 sessionID setSessionID sessionId: 0 setId: imsi(3) imsi: 441030………. slpSessionID sessionID: 9bebd352 slpId: iPAddress(0) iPAddress: ipv4Address (0) ipv4Address: 173.194.72.192 (173.194.72.192) message: msSUPLPOSINIT(3) msSUPLPOSINIT sETCapabilities posTechnology .... 0... agpsSETassisted: False .... .1.. agpsSETBased: True .... ..1. autonomousGPS: True .... ...0 aFLT: False 1... .... eCID: True .0.. .... eOTD: False ..0. .... oTDOA: False prefMethod: noPreference(2) posProtocol .... ..0. tia801: False .... ...1 rrlp: True 0... .... rrc: False requestedAssistData ...1 .... almanacRequested: True .... 1... utcModelRequested: True .... .1.. ionosphericModelRequested: True .... ..0. dgpsCorrectionsRequested: False .... ...1 referenceLocationRequested: True 1... .... referenceTimeRequested: True .0.. .... acquisitionAssistanceRequested: False ..1. .... realTimeIntegrityRequested: True ...1 .... navigationModelRequested: True navigationModelData gpsWeek: 0 gpsToe: 0 nSAT: 0 toeLimit: 0 locationId cellInfo: wcdmaCell(1) wcdmaCell refMCC: 440 refMNC: 10 refUC: 71958552 frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 primaryScramblingCode: 427 measuredResultsList: 1 item Item 0 MeasuredResults frequencyInfo modeSpecificInfo: fdd(0) fdd uarfcn-DL: 10688 cellMeasuredResultsList: 1 item Item 0 CellMeasuredResults modeSpecificInfo: fdd(0) fdd primaryCPICH-Info primaryScramblingCode: 427 cpich-Ec-N0: 43 cpich-RSCP: 47 status: current (1)
  42. 42. 42 SUPLサーバ:supl.google.com-8 SMS+データ通信SIMを利用した場合–LGG2mini SUPLPOS例-1 OMA UserPlaneLocation Protocol ULP-PDU length: 1700 version maj: 1 min: 0 servind: 0 . . message: msSUPLPOS(4) msSUPLPOS posPayLoad: rrlpPayload(2) rrlpPayload: 2413785852b4c51b20658e6ec6bfe000c8585800fe4f8084... Radio Resource LCS Protocol (RRLP) PDU referenceNumber: 1 component: assistanceData(2) assistanceData gps-AssistData controlHeader referenceTime gpsTime gpsTOW23b: 5788340 gpsWeek: 788 refLocation threeDLocation: 9032c737635ff000642c2c007f27 1001 .... = Location estimate: Ellipsoid point with altitude and uncertainty Ellipsoid (9) 0... .... = Sign of latitude: North (0) .011 0010 1100 0111 0011 0111 = Degrees of latitude: 3327799 (35.70341 degrees) Degrees of longitude: 6512624 (139.74576 degrees) 0... .... .... .... = D: Direction of Altitude: Altitude expresses height (0) .000 0000 0110 0100 = Altitude in meters: 100 .010 1100 = Uncertainty semi-major: 44 (652.6 m) .010 1100 = Uncertainty semi-minor: 44 (652.6 m) Orientation of major axis: 0 .111 1111 = Uncertainty Altitude: 127 (990.5 m) .010 0111 = Confidence(%): 39 GPS時刻-> 位置情報-> エフェメリス-> navigationModel navModelList: 13 items Item 0 NavModelElement satelliteID: 1 satStatus: newSatelliteAndModelUC(0) newSatelliteAndModelUC ephemCodeOnL2: 1 ephemURA: 0 ephemSVhealth: 0 ephemIODC: 44 ephemL2Pflag: 0 ephemSF1Rsvd reserved1: 0 reserved2: 0 reserved3: 0 reserved4: 0 ephemTgd: -43 ephemToc: 29250 ephemAF2: 0 ephemAF1: 19 ephemAF0: 1120966 ephemCrs: -1106 ephemDeltaN: 13772 ephemM0: -699419914 ephemCuc: -952 ephemE: 118602899 ephemCus: 6131 ephemAPowerHalf: 2702017266 ephemToe: 29250 ephemFitFlag: 0 ephemAODA: 31 ephemCic: 199 ephemOmegaA0: 1571318455 ephemCis: 122 ephemI0: 642485765 ephemCrc: 4755 ephemW: -1629536356 ephemOmegaADot: -23010 ephemIDot: 234
  43. 43. 43 SUPLサーバ:supl.google.com-9 SMS+データ通信SIMを利用した場合–LGG2mini SUPLPOS例-2 ionosphericModel alfa0: 27 alfa1: 2 alfa2: -2 alfa3: -1 beta0: 65 beta1: -1 beta2: -4 beta3: 3 utcModel utcA1: -3 utcA0: -4 utcTot: 240 utcWNt: 28 utcDeltaTls: 16 utcWNlsf: 159 utcDN: 0 utcDeltaTlsf: 16 almanac alamanacWNa: 20 almanacList: 31 items Item 0 AlmanacElement satelliteID: 0 almanacE: 7445 alamanacToa: 144 almanacKsii: 3147 almanacOmegaDot: -683 almanacSVhealth: 0 almanacAPowerHalf: 10554635 almanacOmega0: 6221907 almanacW: 1145155 almanacM0: -7551246 almanacAF0: 23 almanacAF1: 0(990.5 m) .010 0111 = Confidence(%): 39 . . UTCモデル-> 補正情報-> アルマナック->
  44. 44. 44 参考文献 •NTTドコモ, 国際ローミングSUPLによるFOMA位置情報機能の開発―現在地確認機能― •https://www.nttdocomo.co.jp/corporate/technology/rd/technical_journal/bn/vol17_2/006.html •NTTドコモ, スマートフォン端末向け位置提供機能の開発 •https://www.nttdocomo.co.jp/corporate/technology/rd/technical_journal/bn/vol20_2/037.html •GPS初期位置算出時間(TTFF)短縮のための検討, 電子情報通信学会SANE研究会電子航法研究所, July 27, 2007 •http://www.enri.go.jp/%7Esakai/pub/sane0707.ppt •The Open Mobile Alliance, Secure User Plane Location V1.0 •http://technical.openmobilealliance.org/Technical/technical-information/release-program/current-releases/secure-user-plane-location-v1-0 •3GPP TS44.031, Location Services (LCS); Mobile Station (MS) -Serving Mobile Location Centre (SMLC) Radio Resource LCS Protocol (RRLP) •Assisted GPS (AGPS) SUPL client and proxy •http://www.tajuma.com/supl/ •Patch to build supl-proxy and fallback to non-TLS connection •https://gist.github.com/kanru/3713093 •WirelessMoves: How To Trace An A-GPS SUPL Request •http://mobilesociety.typepad.com/mobile_life/2014/09/how-to-trace-an-a-gps-supl-request.html •WirelessMoves: How SUPL Reveals My Identity And Location To Google When I Use GPS •http://mobilesociety.typepad.com/mobile_life/2014/08/supl-reveals-my-identity-and-location-to-google.html •How to create a SuplRootCertfor supl.google.com • Andreas Schneider •https://blog.cryptomilk.org/2012/07/24/how-to-create-a-suplrootcert-for-supl-google-com/ •Understanding GPS: Principles and Applications, Second Edition •GLOBAL POSITIONING SYSTEM STANDARD POSITIONING SERVICE SIGNAL SPECIFICATION •http://www.gps.gov/technical/ps/1995-SPS-signal-specification.pdf •Chapter 3: THE GPS SIGNALS •http://www.gmat.unsw.edu.au/snap/gps/gps_survey/chap3/chap3.htm •A-GPS: Assisted GPS, GNSS, and SBAS, Frank Stephen Tromp Van Diggelen •Assisted GPS -Wikipedia, the free encyclopedia •http://en.wikipedia.org/wiki/Assisted_GPS •When Assistance Becomes Dependence: Characterizing the Costs and Inefficiencies of A-GPS •http://www.cl.cam.ac.uk/~nv240/papers/agps_mc2r.pdf •Security issues with SUPL implementations –rpw •https://rpw.io/slides/rpw-bhus2012-supl.pdf •Android & Symbian Application and OS Concepts: Android GPS Middleware •http://suratechsoft.blogspot.jp/2011/09/android-gps-middleware.html •location/java/com/android/internal/location/GpsLocationProvider.java -platform/frameworks/base -Gitat Google •https://android.googlesource.com/platform/frameworks/base/+/2f3a615feaa1286612576bc15f6bd8cae011301f/location/java/com/android/internal/location/GpsLocationProvider.java •https://android.googlesource.com/platform/hardware/qcom/gps/

×