GPS を使用してユーザーの位置を特定する位置情報サービスを開発しました。攻撃者がシミュレーターで位置情報を偽装できるので、GPS からのデータを認証したい。
hereから認証メカニズムを研究しましたが、彼らが言及した手法を実装する方法がわかりません。
GPS を使用してユーザーの位置を特定する位置情報サービスを開発しました。攻撃者がシミュレーターで位置情報を偽装できるので、GPS からのデータを認証したい。
hereから認証メカニズムを研究しましたが、彼らが言及した手法を実装する方法がわかりません。
このペーパーのアイデアは、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 種類の間違いが発生する可能性があります。
に小さな値を設定THRESHOLD
すると、ますます間違い #1 につながります。ほとんどのユーザーは自分の GPS データを偽造することはありません。したがって、自分が詐欺師であると主張しても、アプリが成功することはありません ;-)
この論文では、セルラー ネットワーク ベースの精度は約 100 ~ 1500 メートルであると述べています。したがって、1500 メートルを超える値を選択することを強くお勧めします。
Rune FS が述べたように、上級ユーザーは両方のロケーション プロバイダーを同時に偽装する可能性があることに注意してください。