ポイントを難読化するためのシンプルで効果的なテクニックは何ですか?


14

ユーザーから位置情報(ポイント)を収集するWebサイトを作成しています。ユーザーの位置情報のプライバシーを保護するための手法を検討しています(たとえば、多くの場合、ユーザーは自宅の住所を共有しますが、これは機密情報です)。思いついたオプションの1つは、データベースに保存する前にポイントを難読化または「ハッシュ」することです。これにより、これらの機密データを保存する必要がなくなります。

基本的な要件は次のとおりです。

  1. 単一の難読化されたポイントがあると、そのポイントに関連付けられているすべてのメタデータ(つまり、データベース全体が危険にさらされていると仮定した場合)でも、1キロメートル以内に元のポイントを導出することはできません。

  2. 同じ元のポイントに対応する難読化されたポイントの任意の大きなセットを考えると、元のポイントを導出することはまだできません。(たとえば、簡単な手法は、元のポイントにランダムなベクトルを追加することですが、これを十分に行うと、難読化されたポイントが元のポイントの周りにクラスター化されます。)

この段階でどのプロパティが重要であるかはわかりませんが、さまざまな統計プロパティが保存されていると便利です。たとえば、難読化されたポイントがグリッドに蓄積されるのではなく、「自然な」方法で分散するようにします。ただし、プライバシーはこれよりも重要です。


要件では、どのような精度を維持したいかは言及していません。難読化の要件にのみ焦点を当てています。次のアルゴリズムは、リストした要件を簡単に満たしていますが、価値はありません。各ポイントを北緯0度、東経0度にマッピングします。難読化されたポイントが実際のポイントからx km以内にあるなど、何らかの基準も満たしたいと思われます。
Llaves

2番目の質問:メタデータについて言及し、データベース全体が危険にさらされた場合に真のポイントを再構築できること。メタデータで同じ「真のポイント」に関連付けられた難読化されたポイントを識別できない場合、それらを互いに関連付けることができない場合、繰り返されるランダムサンプルから「真のポイント」を再構築する方法を教えてください。一方、メタデータを使用してポイントを関連付けることができる場合、既に難読化されたポイントの場所を再度報告するように求められたら、以前と同じ難読化された値を返すだけです。
Llaves

ハッシュされたデータから実際の場所を再作成できるようにする必要がありますか、それとも、人がいる場所を確認するためだけに使用されますか?後者の場合、一方向ハッシュ、ソルト+ジオメトリのWKTをハッシュするだけで十分です。前者の場合は、ハッシュ関数の逆変換を行うためのどこかの関数(双方向ハッシュ)が必要になります。
MerseyViking

サービスの一部として、ポイントを他のユーザーデータ/他のデータセットと比較しますか?
マシュースネイプ

@Llaves、私は実際にやっています:「1 km以内」。しかし、難読化レベルがアルゴリズムのパラメーターであることを願っています。2番目のコメントに関して、はい、メタデータはポイントの関連付けを許可します(たとえば、1人のユーザーが同じポイントを何度も入力する可能性があります)。また、元のポイントが同じ場合、難読化されたポイントが同じになるアルゴリズムは問題ありません。しかし、アルゴリズムがそれを行わない場合、同じ難読化されたポイントを使用する必要があるかどうかをテストするために、元のポイントを復元することはできません(これが問題の全体的な理由です)。
リード

回答:


6

見て:

MPアームストロング、ラシュトンG、ジマーマンDL。健康データを地理的にマスキングして機密性を保持します。Stat Med.1999; 18:497–525。

引用全文

彼らは、変位、回転、ランダム摂動および集約を含むポイントデータのさまざまな「ジオマスク」について説明します。それらの実装方法に関する特定の技術的解決策については説明していませんが、あらゆるアプローチで得られる/失うものに関する情報への有用なポインタがあります。

より理論的な考慮事項については、同様のトピックに関する質問に対する私の答えをご覧ください。


2
素晴らしい参考文献、それはアクティブなフィールドなので、多くが利用可能です。別の質問で概要記事(Mathews&Harel、2011)をお勧めしました。また、International Journal of Health Geographicsには随時論文が掲載されていると思います(ジオマスクタグ付きの私のciteulikeライブラリを参照)。しかし、仕事をするためのツールに出会ったことはありませんが、おそらく役に立つ試みです。
アンディW

1
@AndyWポインタをありがとうアンディ。確かに-公衆衛生/空間疫学で使用される高解像度のジオデータの量が増えると、問題はますます重要になります。私は、実用的な解決策はまだ理論的な解決策よりもはるかに遅れているという同じ感覚を抱いていました。
ラデック

1

パーリンノイズを使用してランダムにポイントをシフトしてみることもできますが、互いに近いポイントが近くに残るという利点がありますが、この類似性は距離とともに低下します。ノイズ関数が0を中心とする場合、Perlinノイズ(特に2002年版)はおおよそガウス分布であるため、統計分析はソースと同様のデータを返します。


同じポイントの多くのコピーをシフトした場合、シフトしたポイントを分析することで元のポイントを回復できますか?
リード

私が想像したように、ポイントの座標をノイズ関数のルックアップとして使用します。したがって、2つの同一のポイントは一致したままです。3番目の値、たとえば、ポイントが3D Perlinノイズ関数へのルックアップとして作成された日付を使用できます。それから(そして私は統計学者ではありません)、選択したランダムシードとノイズのスケールがわからない限り、ソースデータを再構築することは実用的ではありません。それでも、実際に実行可能かどうかはわかりません。
MerseyViking

ああ、あなたはそれをハッシュ関数にしています。ただし、ランダムシードとスケールが秘密のままであると想定するのは安全ではありません。サーバーが完全に侵害されたと仮定しています。
リード

ふう!OK、チャレンジが好きです:)今、あなたは本当に物理的なセキュリティについて話しています。ハッシュを生成し、SSLなどの安全な接続を介して送信する別のオフサイトマシンがあります。一方または両方のサーバーでウォッチドッグをセットアップして、一方がダウンした場合、または大きな赤いボタンを押した場合、他方が自動的にシャットダウンするようにすることができます。あなたはクラウドインスタンスを使用した場合は、他のインスタンスから何かを得るための実用的な方法はないだろう、Amazonのデータセンターに侵入の短い...
MerseyViking

結果として、データの価値に見合うだけのデータセキュリティに費やす必要があります。セキュリティモデルに追加できるレイヤーは多数ありますが、ある時点で十分に説明する必要があります。この質問を他のSEサイトの1つに当てはめる価値があるでしょう。
MerseyViking

0

これはおそらく必要以上に複雑で複雑なものですが、それでもとるべきルートかもしれません:

元の入力ポイントを取得し、特定の許容可能な難読化距離でバッファリングし、バッファを機能制約として使用してn個のランダムポイントを作成し(100など)、単純なpythonスクリプトを作成し、aを使用してポイントの1つを選択します新しい難読化ポイントとして使用する疑似乱数ジェネレータ。また、難読化ごとに新しい擬似乱数を作成する必要があります。

シナリオに応じて、これはツールボックスにパッケージ化され、RESTエンドポイントを持つGPServiceとしてアクセスされるため、メモリの場所で難読化が行われ、難読化されたポイントのみが物理データベースにポストされます。


1
これはArcGISの実装を前提としていますが、OPで言及されていません。それでも、興味深い解決策です!
blah238

3
この自然なソリューションには、検査時にいくつかの潜在的な欠陥があります。(1)複数の異なるポイントが同じポイントにマッピングされる場合があります。(2)OPが示すように、ポイントのマスクを解除するのは簡単です。(3)多くの場合、ポイントは関連する特徴と何らかの地理的関係にある必要があります。たとえば、家の場所は湖や鉄道ヤードではなく通りの近くにあるべきです。このような問題は、問題を本当に難しく、興味深いものにし、GIS分析に値します(そうしないと、データベースに最初に入力されて処理されるときに元の座標がランダムに変動する可能性があります)。
whuber

0

それでは、検討しているアルゴリズムは次のとおりです。

  1. ポイントを200メートルのグリッドに丸めます(ジオコーディングの変動を補正するため)。
  2. 暗号化ハッシュアルゴリズム(SHA2など)を使用して、ポイントの座標のテキストをハッシュします。
  3. ポイントの座標の下位ビット(目的の難読化レベル1 kmまで)をハッシュ関数の結果に置き換えます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.