モバイルデバイスでのGPSスプーフィングを防止し、このデータの信頼性を向上させるための追加の方法を調査したいと考えています。
PokemonGoはすでにこれに苦労しています 世界中で。
状況を改善できるいくつかの方法を次に示します。
製造元が署名したブートストラップを備えた電話の場合、GPSハードウェア位置データに署名します。これにより、エミュレーターの使用と、一部のジェイルブレイク/ルート化されたデバイスが制限されます
GPSデータを信頼できるサーバーへのIP pingと関連付けます。さまざまなジオデータベースでそのIPのIP座標を検索します
ポケモンのような大容量のゲームの場合、SSID、BTLeアドレスなどの追加の検証を収集します。同じ場所にあるピアは、データの一部が重複している必要があります。
プライバシーを保護するために、ハードウェアメーカー(iOS/Android)が既存のAPIを変更して、返されるGPSデータに信頼レベルを追加できると思います。
これらのアイデアのいずれかが理にかなっていますか?もっと良い方法はありますか?
基本的に、不正なデータをフィードしないようにOSを信頼しています。不正なデータをフィードするようにOSが変更されている場合、不正な認証もフィードされる可能性があります。
GPSデバイスが署名されたデータを生成する場合、秘密鍵を知っているデバイスがそのデータを生成したことだけがわかります。デバイスとして認証されません。実際の取引はOSの信頼されたルートの1つから始まる証明書チェーンであるため、行うで認証します。ああ、待って、私たちはOSを信用していません。
攻撃者が物理的なデバイスを使用してGPS信号をエミュレートした場合、GPSレシーバーでさえその違いを認識できないため、署名はそこでも役立ちません。
これは、信頼できないデバイスで実行していて、信頼できるものと信頼できないもの(およびAPIで確認できるもの)を推測する必要があるということを示しています。
また、既知のサーバーに対してpingを実行し、ジオデータベースでそれを検索しようとしていたこともわかりません...それらがどこにあるかを知っているだけです...
アプリデベロッパーとGoogleができる限りこれからソフトウェアを保護することは可能ですが、デバイスのルートアクセスとカスタムファームウェア(カスタマイズされたAndroid))に問題があります。
したがって、アプリケーションはデバイスがルート化されていないものは何でも手がかりを探している可能性があり、それはこの瞬間には十分なはずです。
もう1つは、カスタムファームウェアのユーザーは多くないだろう(そう思う)が、多くのユーザーがルート化されたファームウェアを持っているということです。応援デバイスは、ファームウェア全体を置き換えるよりもはるかに簡単です。
ルート権限を取得されたデバイスのチェックに関しては、ルートに対して「su」を実行するのと同じくらい簡単ですが、これは回避できます。しかし、Google Playバックグラウンドサービスがシステムファイルの変更をチェックしている可能性もあると思います。これには、デバイスのDRMに依存する別のメカニズムが含まれます。「ロック解除された」ブートローダーがない限り、ルート化されているかどうかにかかわらず、デバイスにソフトウェアの信頼できるチェーンがあるため、確実に発言できるはずです。
検証可能なコンポーネントを使用して、ルートアクセスなしでロックされたデバイスでのみゲームをプレイできるようになるかもしれません。
IOSに関して、デバイスがジェイルブレイクされている場合、ゲームは許可されない可能性があります。電話ソフトウェアが変更されるか、許可されていないパッケージがインストールされる可能性がある限り、それだけです。