2

GPS を使用してユーザーの位置を特定する位置情報サービスを開発しました。攻撃者がシミュレーターで位置情報を偽装できるので、GPS からのデータを認証したい。

hereから認証メカニズムを研究しましたが、彼らが言及した手法を実装する方法がわかりません。

4

1 に答える 1

2

このペーパーのアイデアは、2 つの異なるプロバイダーから地理位置情報を取得することです。あなたの場合、高精度のためにデバイスの GPS 位置を取得し、このデータを検証するためにセル ID 位置を取得します。

セル ID で場所を取得する方法の完全な例を次に示します: http://www.devx.com/wireless/Article/40524

これらの場所の違いのしきい値を定義する必要があります。したがって、GPS とセルラーの間の距離がしきい値よりも大きい場合、GPS の位置は偽造されていると考えられます。

いくつかの抽象的なコード例:

static final int THRESHOLD = 2000 // maximum discrepancy in meters

Location getLocationFromGPS();
Location getCellularLocation();

boolean isLocationValid(Location gps) {
    Location cell = getCellularLocation();
    return gps.distanceTo(cell) <= THRESHOLD;
}

このアプローチに従うと、次の 2 種類の間違いが発生する可能性があります。

  1. GPSデータが偽造されていると仮定しますが、そうではありません
  2. 偽造されている間、GPS データを信頼する

に小さな値を設定THRESHOLDすると、ますます間違い #1 につながります。ほとんどのユーザーは自分の GPS データを偽造することはありません。したがって、自分が詐欺師であると主張しても、アプリが成功することはありません ;-)

この論文では、セルラー ネットワーク ベースの精度は約 100 ~ 1500 メートルであると述べています。したがって、1500 メートルを超える値を選択することを強くお勧めします。

Rune FS が述べたように、上級ユーザーは両方のロケーション プロバイダーを同時に偽装する可能性があることに注意してください。

于 2013-01-30T09:22:09.713 に答える