(57)【要約】      （修正有）【課題】軌跡データを背景知識として持つ攻撃者に対する移動体の軌跡データの匿名性を評価する。【解決手段】移動体Ｓｉの複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの離散的な位置ｄｉ（ｎｉ）．ｃｏを表す軌跡データｄｉから推定される、複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏを表す背景知識データａｉを得、移動体Ｓｊの軌跡データｄｊを秘匿化して得られた移動体Ｓｊの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏを表す秘匿化軌跡データｓｄｊから推定される、移動体Ｓｊの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏと、移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａ<ｉ（ｒｉ）．ｃｏと、の距離を最小にする移動体Ｓｊが移動体Ｓｉである程度を表す匿名性評価値を得る。【選択図】図１
2019020880.tif 000002
【特許請求の範囲】
【請求項１】
秘匿化軌跡データの匿名性を評価する匿名性評価装置であって、
複数の移動体の集合ＳＥＴｄに含まれた移動体Ｓｉの複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの離散的な位置ｄｉ（ｎｉ）．ｃｏを表す軌跡データｄｉから推定される、前記移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏを表す背景知識データａｉを得るデータ生成部と、
複数の移動体の集合ＳＥＴｓｄに含まれた移動体Ｓｊの軌跡データｄｊを秘匿化して得られた前記移動体Ｓｊの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏを表す秘匿化軌跡データｓｄｊから推定される、前記移動体Ｓｊの複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏと、前記移動体Ｓｉの複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏと、の距離を最小にする前記移動体Ｓｊが前記移動体Ｓｉである程度を表す匿名性評価値を得るデータ比較部と、
を有する匿名性評価装置。
【請求項２】
請求項１の匿名性評価装置であって、
複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅの少なくとも一部は、複数の前記任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅ以外の時刻である、匿名性評価装置。
【請求項３】
請求項１または２の匿名性評価装置であって、
複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅの少なくとも一部は、複数の前記任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅ以外の時刻である、匿名性評価装置。
【請求項４】
請求項１から３の何れかの匿名性評価装置であって、
すべての前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅは、複数の前記任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅ以外の時刻であり、かつ、複数の前記任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅ以外の時刻である、匿名性評価装置。
【請求項５】
請求項１から４の何れかの匿名性評価装置であって、
複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅは、複数の前記任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅからランダムに選択された最小値と最大値との間からランダムに選択された時刻である、匿名性評価装置。
【請求項６】
請求項１から５の何れかの匿名性評価装置であって、
前記移動体Ｓｉの複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏは、前記移動体Ｓｉの複数の前記任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの離散的な位置ｄｉ（ｎｉ）．ｃｏの線形補間によって得られ、
前記移動体Ｓｊの複数の前記任意の時刻ｓａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏは、前記移動体Ｓｊの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏの線形補間によって得られる、匿名性評価装置。
【請求項７】
秘匿化軌跡データの匿名性を評価する匿名性評価方法であって、
データ生成部が、複数の移動体の集合ＳＥＴｄに含まれた移動体Ｓｉの複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの離散的な位置ｄｉ（ｎｉ）．ｃｏを表す軌跡データｄｉから推定される、前記移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏを表す背景知識データａｉを得るデータ生成ステップと、
データ比較部が、複数の移動体の集合ＳＥＴｓｄに含まれた移動体Ｓｊの軌跡データｄｊを秘匿化して得られた前記移動体Ｓｊの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏを表す秘匿化軌跡データｓｄｊから推定される、前記移動体Ｓｊの複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏと、前記移動体Ｓｉの複数の前記任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏと、の距離を最小にする前記移動体Ｓｊが前記移動体Ｓｉである程度を表す匿名性評価値を得るデータ比較ステップと、
を有する匿名性評価方法。
【請求項８】
請求項１から６の何れかの匿名性評価装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、軌跡データを秘匿化して得られた秘匿化軌跡データの匿名性を評価する技術に関する。
【背景技術】
【０００２】
非特許文献１では、マルコフ連鎖モデルを用いて、地図上のメッシュ間の移動履歴を学習することで個人を識別する攻撃と、その攻撃結果によって匿名性を評価する方法を提案している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Shokri R, Theodorakopoulos G, Boudec JYL, Hubaux JP, “Quantifying location privacy,” In: Proceedings of the 2011 IEEE Symposium on Security and Privacy (S&P’11), 2011, pp. 247-262.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ある移動体の軌跡データが複数の事業者によって取得される場合がある。例えば、ＧＰＳ機能付きスマートフォンを携帯しながら、カーナビゲーションを搭載した車両で移動した場合、位置情報を利用するスマートフォンアプリ事業者とカーナビゲーションシステムを運用する事業者、双方が当該個人の軌跡データを取得できる。このことから、軌跡データの保有者が強力な背景知識を持つ攻撃者になる可能性がある。しかし、この可能性を考慮して移動体の匿名性を評価した手法はこれまで無い。
【０００５】
本発明はこのような点に鑑みてなされたものであり、軌跡データを背景知識として持つ攻撃者に対する移動体の軌跡データの匿名性を評価することを目的とする。
【課題を解決するための手段】
【０００６】
匿名性評価装置は、複数の移動体の集合ＳＥＴｄに含まれた移動体Ｓｉの複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの離散的な位置ｄｉ（ｎｉ）．ｃｏを表す軌跡データｄｉから推定される、移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏを表す背景知識データａｉを得る。さらに匿名性評価装置は、複数の移動体の集合ＳＥＴｓｄに含まれた移動体Ｓｊの軌跡データｄｊを秘匿化して得られた移動体Ｓｊの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏを表す秘匿化軌跡データｓｄｊから推定される、移動体Ｓｊの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏと、移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏと、の距離を最小にする移動体Ｓｊが移動体Ｓｉである程度を表す匿名性評価値を得る。
【発明の効果】
【０００７】
これにより、軌跡データを背景知識として持つ攻撃者に対する移動体の軌跡データの匿名性を評価できる。
【図面の簡単な説明】
【０００８】
【図１】図１は実施形態の匿名性評価装置の機能構成を例示するブロック図である。
【図２】図２Ａはデータ生成部の機能構成を例示するブロック図である。図２Ｂはデータ比較部の機能構成を例示するブロック図である。
【図３】図３は実施形態の匿名性評価方法を例示するフロー図である。
【図４】図４はデータ生成部の処理を例示するフロー図である。
【図５】図５はデータ比較部の処理を例示するフロー図である。
【図６】図６は実施形態の線形補間を説明するための図である。
【図７】図７は実施形態の線形補間を説明するための図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。
＜定義＞
まず、実施形態で用いる用語を定義する。
≪移動体≫
移動体とは、移動を行うものを意味する。移動体の例は、人間、人の指などの体の一部、人間以外の動物、自動車などの乗り物、ドローンやロボットなどの遠隔操作式または自律式の移動物、仮想空間やゲーム空間での仮想的な移動物などである。予め定められた複数の移動体を要素とする集合をＳＥＴｄと表現し、集合ＳＥＴｄに属する移動体をＳｉ∈ＳＥＴｄと表現する。集合ＳＥＴｄに属する移動体Ｓｉの総数をＮｄと表記する。ただし、Ｎｄは２以上の整数である。ｉは移動体Ｓｉを識別するインデックスである。説明の便宜上、以下ではｉ＝１，…，Ｎｄとする（ｉは整数）。しかし、移動体Ｓｉを識別できればどのような値がｉであってもよい。同様に、予め定められた複数の移動体を要素とする集合をＳＥＴｓｄと表現し、集合ＳＥＴｓｄに属する移動体をＳｊ∈ＳＥＴｓｄと表現する。ＳＥＴｓｄ＝ＳＥＴｄであってもよいし、ＳＥＴｓｄ＝ＳＥＴｄでなくてもよい。ただし、集合ＳＥＴｓｄはＳＥＴｄに属する少なくとも一部の移動体を含み、ＳＥＴｓｄ∩ＳＥＴｄは空集合ではない。集合ＳＥＴｓｄに属する移動体Ｓｊの総数をＮｓｄと表記する。ｊは移動体Ｓｊを識別するインデックスである。説明の便宜上、以下ではｊ＝１，…，Ｎｓｄとする（ｊは整数）。しかし、移動体Ｓｊを識別できれば、どのような値がｊであってもよい。
【００１０】
≪軌跡データ≫
軌跡データは、複数の任意の時刻での離散的な位置（位置情報）を表す時系列データである。離散的な位置の例は、緯度と経度との組み合わせからなる座標、緯度または経度の何れか一方、緯度と経度と高度との組み合わせ、スクリーン上の座標、仮想空間上の座標、所定の基準点に対する相対位置などである。軌跡データはＧＰＳ等による実測データであってもよいし、シミュレーションデータであってもよいし、仮想空間やゲーム空間で得られたデータであってもよい。ｄｉは移動体Ｓｉの複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの離散的な位置ｄｉ（ｎｉ）．ｃｏを表す軌跡データを表す。例えば、軌跡データｄｉは、複数のｎｉについて時刻ｄｉ（ｎｉ）．ｔｉｍｅと位置ｄｉ（ｎｉ）．ｃｏとが対応付けられた時系列データである。｜ｄｉ｜は、軌跡データｄｉに含まれる離散的な位置ｄｉ（ｎｉ）．ｃｏの総数（すなわち、時刻ｄｉ（ｎｉ）．ｔｉｍｅの総数）を表す。ただし、｜ｄｉ｜は２以上の整数であり、例えば、３以上の整数である。ｎｉは時刻ｄｉ（ｎｉ）．ｔｉｍｅに対応するインデックスである。例えば、小さなｎｉに対応する時刻ｄｉ（ｎｉ）．ｔｉｍｅほど古い時刻を表す。この場合、位置ｄｉ（ｎｉ）．ｃｏは移動体Ｓｉのｎｉ番目の位置を表す。説明の便宜上、以下ではｎｉ＝１，…，｜ｄｉ｜とする（ｎｉは整数）。しかし、時刻ｄｉ（ｎｉ）．ｔｉｍｅを識別できればどのような値がｎｉであってもよい。
【００１１】
≪元データ≫
元データＤは、集合ＳＥＴｄに含まれた移動体Ｓｉ∈ＳＥＴｄの軌跡データｄｉを要素とする集合である。例えば、ｉ＝１，…，Ｎｄである場合、Ｄ＝｛ｄ１，…，ｄＮｄ｝である。元データＤに含まれた軌跡データｄｉの総数はＮｄである。ｉ＝１，…，Ｎｄであり、位置ｄｉ（ｎｉ）．ｃｏが緯度ｄｉ（ｎｉ）．ｌａｔと経度ｄｉ（ｎｉ）．ｌｏｎとの組み合わせからなる座標である場合、例えば、元データＤは以下のようになる。
【表１】
2019020880.tif 000003
【００１２】
≪秘匿化軌跡データ≫
秘匿化軌跡データｓｄｊは、移動体Ｓｊ∈ＳＥＴｓｄの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏを表す。例えば、秘匿化軌跡データｓｄｊは、複数のｓｎｉについて時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅと位置ｓｄｊ（ｓｎｊ）．ｃｏとが対応付けられた時系列データである。秘匿化軌跡データｓｄｊは、移動体Ｓｊ∈ＳＥＴｓｄの軌跡データｄｊを秘匿化して得られたものである。例えば、秘匿化軌跡データｓｄｊは、軌跡データｄｊに含まれたいくつかの時刻での位置を変更または削除したり、軌跡データｄｊに新たな時刻での位置を追加したりしたものである。秘匿化軌跡データｓｄｊは、元データＤに含まれた軌跡データｄｊを秘匿化したものであってもよいし、元データＤに含まれない軌跡データｄｊを秘匿化したものであってもよい。｜ｓｄｊ｜は、秘匿化軌跡データｓｄｊに含まれる離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏの総数（すなわち、時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅの総数）を表す。ただし、｜ｓｄｊ｜は２以上の整数であり、例えば３以上の整数である。ｓｎｊは時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅに対応するインデックスである。例えば、小さなｓｎｊに対応する時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅほど古い時刻を表す。この場合、秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏは移動体Ｓｊのｓｎｊ番目の秘匿化位置を表す。説明の便宜上、以下ではｓｎｊ＝１，…，｜ｓｄｊ｜とする（ｓｎｊは整数）。しかし、時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅを識別できればどのような値がｓｎｊであってもよい。
【００１３】
≪秘匿化データ≫
秘匿化データＳＤは、集合ＳＥＴｓｄに含まれた移動体Ｓｊ∈ＳＥＴｓｄの秘匿化軌跡データｓｄｊを要素とする集合を意味する。秘匿化データＳＤに含まれた秘匿化軌跡データｓｄｊの総数はＮｓｄである。例えば、ｊ＝１，…，Ｎｓｄである場合、ＳＤ＝｛ｓｄ１，…，ｓｄＮｓｄ｝である。
【００１４】
≪背景知識データ≫
背景知識データａｉは、移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏを表す。例えば、背景知識データａｉは、複数のｒｉについて時刻ａｉ（ｒｉ）．ｔｉｍｅと推定位置ａｉ（ｒｉ）．ｃｏとが対応付けられた時系列データである。背景知識データａｉは軌跡データｄｉから推定される。｜ａｉ｜は、背景知識データａｉに含まれる離散的な推定位置ａｉ（ｒｉ）．ｃｏの総数（すなわち、時刻ａｉ（ｒｉ）．ｔｉｍｅの総数）を表す。ただし、｜ａｉ｜は２以上の整数であり、例えば３以上の整数である。ｒｉは時刻ａｉ（ｒｉ）．ｔｉｍｅに対応するインデックスである。例えば、小さなｒｉに対応する時刻ａｉ（ｒｉ）．ｔｉｍｅほど古い時刻を表す。この場合、推定位置ａｉ（ｒｉ）．ｃｏは移動体Ｓｉのｒｉ番目の秘匿化位置を表す。説明の便宜上、以下ではｒｉ＝１，…，｜ａｉ｜とする（ｒｉは整数）。しかし、時刻ａｉ（ｒｉ）．ｔｉｍｅを識別できればどのような値がｒｉであってもよい。
【００１５】
≪背景知識≫
背景知識Ａは、集合ＳＥＴｄに含まれた移動体Ｓｉ∈ＳＥＴｄについての背景知識データａｉを要素とする集合である。背景知識Ａに含まれた背景知識データａｉの総数はＮｄである。例えば、ｉ＝１，…，Ｎｄである場合、Ａ＝｛ａ１，…，ａＮｄ｝である。
【００１６】
＜構成＞
図１に例示するように、本形態の匿名性評価装置１は、データ生成部１１、データ比較部１２、データ記憶部１３、定数記憶部１４、および制御部１５を有し、制御部１５の制御のもとで各処理を実行する。図２Ａに例示するように、データ生成部１１は、例えば、範囲選択部１１１、時刻選択部１１２、線形補間部１１３、制御部１１４、および生成部１１５を有する。図２Ｂに例示するように、データ比較部１２は、例えば、代入部１２１、区間探索部１２２、線形補間部１２３、距離計算部１２４、平均距離計算部１２５、最小判定部１２６、評価値生成部１２７、および制御部１２８を有する。
【００１７】
＜処理＞
次に、本形態の処理について説明する。
本形態では秘匿化データＳＤの匿名性を評価する。処理の大まかな手順は、以下の通りである。
１．元データＤから攻撃者の背景知識Ａを構築。
２．背景知識Ａを用いて秘匿化データＳＤに対する攻撃（再識別）を実行して匿名性を評価。
【００１８】
以下、処理の詳細を説明する。
≪前処理≫
前処理として、匿名性評価装置１のデータ記憶部１３に元データＤおよび秘匿化データＳＤが格納され、定数記憶部１４に攻撃者の背景知識の量を表す正値のパラメータｆが格納される。ここで説明する例では、Ｄ＝｛ｄ１，…，ｄＮｄ｝であり、ＳＤ＝｛ｓｄ１，…，ｓｄＮｓｄ｝であり、ｄｉ（ただし、ｉ＝１，…，Ｎｄ）は、ｎｉ＝１，…，｜ｄｉ｜について、複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅと、緯度ｄｉ（ｎｉ）．ｌａｔと、経度ｄｉ（ｎｉ）．ｌｏｎと、が対応付けられた時系列データであり、秘匿化軌跡データｓｄｊ（ただし、ｊ＝１，…，Ｎｓｄ）は、ｓｎｊ＝１，…，｜ｓｄｊ｜について、複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅと、緯度ｓｄｉ（ｓｎｉ）．ｌａｔと、経度ｓｄｉ（ｓｎｉ）．ｌｏｎと、が対応付けられた時系列データである。
【００１９】
≪処理の全体≫
図３に例示するように、まず匿名性評価装置１のデータ生成部１１（図１）が、元データＤ＝｛ｄ１，…，ｄＮｄ｝から攻撃者の背景知識Ａ＝｛ａ１，…，ａＮｄ｝を構築するデータ生成処理を実行する（ステップＳ１１）。次に、データ比較部１２が背景知識Ａを用いて秘匿化データＳＤ＝｛ｓｄ１，…，ｓｄＮｓｄ｝に対する攻撃を実行して匿名性を評価するデータ比較処理を実行する（ステップＳ１２）。
【００２０】
≪データ生成処理（ステップＳ１１）≫
データ生成部１１は、データ記憶部１３の元データＤ＝｛ｄ１，…，ｄＮｄ｝および定数記憶部１４のパラメータｆを用い、ｉ＝１，…，Ｎａについて、移動体Ｓｉ∈ＳＥＴｄの複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの緯度ｄｉ（ｎｉ）．ｌａｔおよび経度ｄｉ（ｎｉ）．ｌｏｎ（「離散的な位置ｄｉ（ｎｉ）．ｃｏ」に相当）を用い、移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの緯度ａｉ（ｒｉ）．ｌａｔおよび経度ａｉ（ｒｉ）．ｌｏｎ（「離散的な推定位置ａｉ（ｒｉ）．ｃｏ」に相当）を表す背景知識データａｉを推定し、背景知識Ａ＝｛ａ１，…，ａＮｄ｝を得て出力する。
【００２１】
ここで、実際の攻撃者はどの時刻のデータを所持しているかが不明である。特に、元データＤと異なる手段で移動体Ｓｉの位置データを取得した攻撃者が、元データＤと完全に同一の時刻のデータを所持していることは稀である。このような状況を考慮した評価を行うため、複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅ（ただし、ｒｉ＝１，…，｜ａｉ｜）の少なくとも一部は、複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅ（ただし、ｎｉ＝１，…，｜ｄｉ｜）以外の時刻とすることが望ましい。より好ましくは、すべての任意の時刻ａｉ（ｒｉ）．ｔｉｍｅは、複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅ以外の時刻であることが望ましい。同様な理由から、複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅは、複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅからランダムに選択された最小値と最大値との間からランダムに選択された時刻であることが望ましい。
【００２２】
データ生成処理の具体例：
図４を用い、データ生成処理（ステップＳ１１）の具体例を説明する。
まず、データ生成部１１（図２Ａ）の制御部１１４がｉ＝１に設定する（ステップＳ１１４１）。次に、制御部１１４がｒｉ＝１に設定する（ステップＳ１１４２）。
【００２３】
範囲選択部１１１は、元データＤの軌跡データｄｉを参照し、閉区間［１，｜ｄｉ｜−１］に属する整数ｚをランダムに生成して出力する（ステップＳ１１１）。
【００２４】
時刻選択部１１２は整数ｚを入力とし、元データＤの軌跡データｄｉを参照し、閉区間［ｄｉ（ｚ）．ｔｉｍｅ，ｄｉ（ｚ＋１）．ｔｉｍｅ］に属する時刻をランダムに選択し、それをａｉ（ｒｉ）．ｔｉｍｅに代入して出力する。すなわち、ａｉ（ｒｉ）．ｔｉｍｅは、複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅからランダムに選択された最小値（ｄｉ（ｚ）．ｔｉｍｅ）と最大値（ｄｉ（ｚ＋１）．ｔｉｍｅ）との間からランダムに選択された時刻である（ステップＳ１１２）。
【００２５】
線形補間部１１３は、軌跡データｄｉのｄｉ（ｚ）．ｌａｔ，ｄｉ（ｚ＋１）．ｌａｔ，ｄｉ（ｚ）．ｔｉｍｅ，ｄｉ（ｚ＋１）．ｔｉｍｅ、および時刻選択部１１２から出力されたａｉ（ｒｉ）．ｔｉｍｅを入力とし、以下のような線形補間によって、時刻ａｉ（ｒｉ）．ｔｉｍｅでの緯度ａｉ（ｒｉ）．ｌａｔ（「推定位置ａｉ（ｒｉ）．ｃｏ」を構成）を得て出力する（図６参照）。
【数１】
2019020880.tif 000004
同様に、線形補間部１１３は、軌跡データｄｉのｄｉ（ｚ）．ｌｏｎ，ｄｉ（ｚ＋１）．ｌｏｎ、ｄｉ（ｚ）．ｔｉｍｅ，ｄｉ（ｚ＋１）．ｔｉｍｅ、および時刻選択部１１２から出力されたａｉ（ｒｉ）．ｔｉｍｅを入力とし、以下のような線形補間によって、時刻ａｉ（ｒｉ）．ｔｉｍｅでの経度ａｉ（ｒｉ）．ｌｏｎ（「推定位置ａｉ（ｒｉ）．ｃｏ」を構成）を得て出力する。
【数２】
2019020880.tif 000005
このような線形補間により、任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの緯度ａｉ（ｒｉ）．ｌａｔおよび経度ａｉ（ｒｉ）．ｌｏｎ（推定位置ａｉ（ｒｉ）．ｃｏ）が推定される（ステップＳ１１３）。
【００２６】
次に、制御部１１４がｒｉ＝Ｈ（ｆ，ｉ）であるかを判定する。ただし、Ｈ（ｆ，ｉ）はパラメータｆ、ｉに対応する整数の関数値である。例えば、Ｈ（ｆ，ｉ）はｆ×｜ｄｉ｜の整数の関数値である。Ｈ（ｆ，ｉ）の一例はｆ×｜ｄｉ｜の床関数値ｆｌｏｏｒ（ｆ×｜ｄｉ｜）である。Ｈ（ｆ，ｉ）は、背景知識データａｉに含まれる離散的な推定位置ａｉ（ｒｉ）．ｃｏの総数｜ａｉ｜となる。ｒｉ＝Ｈ（ｆ，ｉ）でなければ、制御部１１４はｒｉを１だけインクリメントし（ｒｉ＋１を新たなｒｉとし）（ステップＳ１１４４）、処理をステップＳ１１１に戻す。一方、ｒｉ＝Ｈ（ｆ，ｉ）であれば、処理をステップＳ１１４５に進める（ステップＳ１１４３）。
【００２７】
ステップＳ１１４５では、制御部１１４がｉ＝Ｎｄであるかを判定する。ｉ＝Ｎｄでなければ、制御部１１４はｉを１だけインクリメントし（ｉ＋１を新たなｉとし）（ステップＳ１１４６）、処理をステップＳ１１４２に戻す。ｉ＝Ｎｄであれば、生成部１１５はｒｉ＝１，…，｜ａｉ｜についての任意の時刻ａｉ（ｒｉ）．ｔｉｍｅと緯度ａｉ（ｒｉ）．ｌａｔおよび緯度ａｉ（ｒｉ）．ｌｏｎとからなる組を背景知識データａｉとし、背景知識Ａ＝｛ａ１，…，ａＮｄ｝を得て出力する（ステップＳ１１５）。
【００２８】
≪データ比較処理（ステップＳ１２）≫
データ比較処理では、背景知識Ａを用いて秘匿化データＳＤに対する攻撃を実行して匿名性を評価する。すなわち、データ比較処理では、秘匿化軌跡データｓｄｊから推定される移動体Ｓｊの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏと、移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏと、の距離を最小にする移動体Ｓｊを移動体Ｓｉとして再識別する。ただし、秘匿化軌跡データｓｄｊは、複数の移動体の集合ＳＥＴｓｄに含まれた移動体Ｓｊの軌跡データｄｊを秘匿化して得られたものであり、移動体Ｓｊの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏを表す。すなわち、この攻撃は、背景知識データａｉと秘匿化軌跡データｓｄｊとの距離を集合ＳＥＴｓｄに含まれたすべての移動体Ｓｊについて測定し、その内で最も距離が小さい移動体Ｓｊを移動体Ｓｉとして識別する。この際、秘匿化軌跡データｓｄｊから背景知識データａｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏが推定され、これらと背景知識データａｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏとの距離が評価される。この距離の評価は平均距離やそれに対応する値が用いられる。この再識別が成功すること（すなわち、移動体Ｓｉとして識別された移動体Ｓｊが真の移動体Ｓｉであること）は、攻撃者が背景知識Ａを用いて秘匿化データＳＤから移動体Ｓｉを識別できたことを意味する。そのため、移動体Ｓｊが移動体Ｓｉである程度を表す匿名性評価値を用いることで、軌跡データを背景知識Ａとして持つ攻撃者に対する移動体の匿名性を評価できる。
【００２９】
実際の攻撃者が取得した背景知識Ａと秘匿化データＳＤとの間でデータに対応する時刻が完全に一致することは稀である。このような状況を考慮した評価を行うため、複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅ（ただし、ｒｉ＝１，…，｜ａｉ｜）の少なくとも一部は、複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅ（ただし、ｓｄｊ＝１，…，｜ｓｄｊ｜）以外の時刻であることが望ましい。より好ましくは、すべての任意の時刻ａｉ（ｒｉ）．ｔｉｍｅが、複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅ以外の時刻であることが望ましい。
【００３０】
データ生成処理の具体例：
図５を用い、データ比較処理（ステップＳ１２）の具体例を説明する。
まず、データ比較部１２（図２Ｂ）の制御部１２８がｉ＝１およびＳｃｏｒｅ＝０に設定する（ステップＳ１２８１）。次に、制御部１２８がｊ＝１に設定する（ステップＳ１２８２）。さらに、制御部１２８がｒｉ＝１に設定する（ステップＳ１２８３）。
【００３１】
代入部１２１は、入力された背景知識Ａの背景知識データａｉが含む時刻ａｉ（ｒｉ）．ｔｉｍｅを時刻ｓａｉ（ｒｉ）．ｔｉｍｅに代入して出力する（ステップＳ１２１）。
【００３２】
区間探索部１２２は、秘匿化データＳＤの秘匿化軌跡データｓｄｊを参照し、時刻ｓｄｊ（１）．ｔｉｍｅ，…，ｓｄｊ（｜ｓｄｊ｜）．ｔｉｍｅのうち隣り合う時刻の時間区間から、時刻ｓａｉ（ｒｉ）．ｔｉｍｅを含む時間区間を探索し、その両端の時刻をｓｄｊ（ｍ）．ｔｉｍｅおよびｓｄｊ（ｍ＋１）．ｔｉｍｅとして出力する。すなわち、ｓｄｊ（ｍ）．ｔｉｍｅ≦ｓａｉ（ｒｉ）．ｔｉｍｅ≦ｓｄｊ（ｍ＋１）．ｔｉｍｅを満たす（図７参照）。
【００３３】
線形補間部１２３は、区間探索部１２２から出力されたｓｄｊ（ｍ）．ｔｉｍｅ，ｓｄｊ（ｍ＋１）．ｔｉｍｅ、これらを用いて秘匿化軌跡データｓｄｊから抽出した軌跡データｄｉのｓｄｊ（ｍ）．ｌａｔ，ｓｄｊ（ｍ＋１）．ｌａｔ、および代入部１２１から出力された時刻ｓａｉ（ｒｉ）．ｔｉｍｅを入力とし、以下のような線形補間によって、時刻ｓａｉ（ｒｉ）．ｔｉｍｅでの緯度ｓａｊ（ｒｉ）．ｌａｔ（「推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏ」を構成）を得て出力する（図７参照）。
【数３】
2019020880.tif 000006
同様に、線形補間部１２３は、区間探索部１２２から出力されたｓｄｊ（ｍ）．ｔｉｍｅ，ｓｄｊ（ｍ＋１）．ｔｉｍｅ、これらを用いて秘匿化軌跡データｓｄｊから抽出した軌跡データｄｉのｓｄｊ（ｍ）．ｌｏｎ，ｓｄｊ（ｍ＋１）．ｌｏｎ、および代入部１２１から出力された時刻ｓａｉ（ｒｉ）．ｔｉｍｅを入力とし、以下のような線形補間によって、時刻ｓａｉ（ｒｉ）．ｔｉｍｅでの経度ｓａｊ（ｒｉ）．ｌｏｎ（「推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏ」を構成）を得て出力する。
【数４】
2019020880.tif 000007
このような線形補間により、移動体Ｓｊの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの緯度ｓａｉ（ｒｉ）．ｌａｔおよび経度ｓａｉ（ｒｉ）．ｌｏｎ（推定秘匿化位置ｓａｉ（ｒｉ）．ｃｏ）が推定される（ステップＳ１２３）。
【００３４】
距離計算部１２４には、背景知識データａｉが含む時刻ａｉ（ｒｉ）．ｔｉｍｅでの緯度ａｉ（ｒｉ）．ｌａｔおよび経度ａｉ（ｒｉ）．ｌｏｎ、線形補間部１２３から出力された時刻ｓａｉ（ｒｉ）．ｔｉｍｅでの緯度ｓａｊ（ｒｉ）．ｌａｔおよび経度ｓａｊ（ｒｉ）．ｌｏｎが入力される。距離計算部１２４は、これらを用いて座標（ａｉ（ｒｉ）．ｌａｔ，ａｉ（ｒｉ）．ｌｏｎ）と座標（ｓａｊ（ｒｉ）．ｌａｔ，ｓａｊ（ｒｉ）．ｌｏｎ）との距離Ｌｇｅｏ（ａｉ（ｒｉ），ｓａｊ（ｒｉ））を計算して出力する（ステップＳ１２４）。
【００３５】
次に、制御部１２８がｒｉ＝｜ａｉ｜であるかを判定する。ｒｉ＝｜ａｉ｜でなければ、制御部１２８はｒｉを１だけインクリメントし（ｒｉ＋１を新たなｒｉとし）（ステップＳ１２８６）、処理をステップＳ１２１に戻す。一方、ｒｉ＝｜ａｉ｜であれば、処理をステップＳ１２５に進める（ステップＳ１２８５）。
【００３６】
ステップＳ１２５では、平均距離計算部１２５が、ｒｉ＝１，…，｜ａｉ｜についての距離Ｌｇｅｏ（ａｉ（ｒｉ），ｓａｊ（ｒｉ））を入力とし、それらの平均距離Ｌ（ａｉ，ｓａｊ）を以下のように求めて出力する（ステップＳ１２５）。
【数５】
2019020880.tif 000008
【００３７】
次に、制御部１２８がｊ＝Ｎｓｄであるかを判定する。ｊ＝Ｎｓｄでなければ、制御部１２８はｊを１だけインクリメントし（ｊ＋１を新たなｊとし）（ステップＳ１２８８）、処理をステップＳ１２８３に戻す。一方、ｊ＝Ｎｓｄであれば、処理をステップＳ１２６に進める（ステップＳ１２８７）。
【００３８】
ステップＳ１２６では、最小判定部１２６が、ｊ＝１，…，Ｎｓｄについての平均距離Ｌ（ａｉ，ｓａｊ）のうち最小のものを特定し、最小の平均距離Ｌ（ａｉ，ｓａｊ）に対応するｊをｊｍｉｎとして出力する（ステップＳ１２６）。
【００３９】
評価値生成部１２７はｊｍｉｎおよびｉを入力とし、ｊｍｉｎに対応する移動体Ｓｊｍｉｎがｉに対応する移動体Ｓｉであるかを判定する。例えば、評価値生成部１２７はｊｍｉｎ＝ｉであるかを判定する。評価値生成部１２７は、移動体Ｓｊｍｉｎが移動体Ｓｉであれば、Ｓｃｏｒｅに１を加算したものを新たなＳｃｏｒｅに更新し、そうでなければＳｃｏｒｅを維持する（ステップＳ１２７１）。
【００４０】
次に、制御部１２８がｉ＝Ｎｄであるかを判定する。ｉ＝Ｎｄでなければ、制御部１２８はｉを１だけインクリメントし（ｉ＋１を新たなｉとし）（ステップＳ１２８０）、処理をステップＳ１２８２に戻す。一方、ｉ＝Ｎｄであれば、処理をステップＳ１２７２に進める（ステップＳ１２８９）。
【００４１】
ステップＳ１２７２では、評価値生成部１２７が、匿名性評価値ｅ＝Ｓｃｏｒｅ／ＮＤを計算して出力する。匿名性評価値ｅは上述の攻撃が成功した割合を表す。匿名性評価値ｅが高いほど匿名性が低く、逆に匿名性評価値ｅが低いほど匿名性が高い。匿名性評価値ｅを用いることで、軌跡データを背景知識として持つ攻撃者に対する移動体の匿名性を評価できる。
【００４２】
［その他の変形例等］
なお、本発明は上述の実施形態に限定されるものではない。例えば、上記の実施形態では、データ記憶部１３に格納された元データＤおよび秘匿化データＳＤ、および定数記憶部１４に格納されたパラメータｆを用いて各処理が実行された。しかし、元データＤ、秘匿化データＳＤ、およびパラメータｆの少なくとも一部が匿名性評価装置１に入力されてもよい。この場合、匿名性評価装置１は、外部から入力されるか、もしくはデータ記憶部１３または定数記憶部１４から読み出された元データＤ、秘匿化データＳＤ、およびパラメータｆを用いて各処理を実行する。このような構成の場合、匿名性評価装置１がデータ記憶部１３および定数記憶部１４の少なくとも一方を有しなくてもよい。
【００４３】
上記の実施形態では、移動体Ｓｉの複数の任意の時刻ａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定位置ａｉ（ｒｉ）．ｃｏが、移動体Ｓｉの複数の任意の時刻ｄｉ（ｎｉ）．ｔｉｍｅでの離散的な位置ｄｉ（ｎｉ）．ｃｏの線形補間によって得られた。しかし、その他の方法によって、軌跡データｄｉから背景知識データａｉを推定してもよい。例えば、ＡＲモデルや機械学習されたモデルによって軌跡データｄｉから背景知識データａｉを推定してもよい。
【００４４】
同様に上記の実施形態では、移動体Ｓｊの複数の任意の時刻ｓａｉ（ｒｉ）．ｔｉｍｅでの離散的な推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏは、移動体Ｓｊの複数の任意の時刻ｓｄｊ（ｓｎｊ）．ｔｉｍｅでの離散的な秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏの線形補間によって得られた。しかし、その他の方法によって、秘匿化位置ｓｄｊ（ｓｎｊ）．ｃｏから推定秘匿化位置ｓａｊ（ｒｉ）．ｃｏを推定してもよい。
【００４５】
上記の実施形態では、ｅ＝Ｓｃｏｒｅ／ＮＤを匿名性評価値とした。しかし、平均距離Ｌ（ａｉ，ｓａｊ）を最小にする移動体Ｓｊが移動体Ｓｉである程度を表すその他の値を匿名性評価値としてもよい。例えば、ｅの単調増加関数値を匿名性評価値としてもよいし、ｅの単調減少関数値を匿名性評価値としてもよい。また、平均距離Ｌ（ａｉ，ｓａｊ）に代えて、ｒｉ＝１，…，｜ａｉ｜についての距離Ｌｇｅｏ（ａｉ（ｒｉ），ｓａｊ（ｒｉ））の平均値の関数値、ｒｉ＝１，…，｜ａｉ｜についての距離Ｌｇｅｏ（ａｉ（ｒｉ），ｓａｊ（ｒｉ））の中央値、または当該中央値の関数値をＬ（ａｉ，ｓａｊ）として用いてもよい。
【００４６】
また、上記の実施形態では、背景知識Ａに含まれた背景知識データａｉの総数をＮｄとしたが、背景知識Ａに含まれた背景知識データａｉの総数がＮｄ未満であってもよい。集合ＳＥＴｄに属する移動体Ｓｉの一部についてのみ背景知識データａｉが生成されてもよい。
【００４７】
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００４８】
上記装置は、例えば、ＣＰＵ（central processing unit）等のプロセッサ（ハードウェア・プロセッサ）およびＲＡＭ（random-access memory）・ＲＯＭ（read-only memory）等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは１個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めＲＯＭ等に記録されていてもよい。また、ＣＰＵのようにプログラムが読み込まれることで機能構成を実現する電子回路（circuitry）ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。１個の装置を構成する電子回路が複数のＣＰＵを含んでいてもよい。
【００４９】
上述の構成をコンピュータによって実現する場合、装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な（non-transitory）記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【００５０】
このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００５１】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。
【００５２】
コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
【符号の説明】
【００５３】
１  匿名性評価装置
１１  データ生成部
１２  データ比較部
【図１】
2019020880.tif 000009
【図２】
2019020880.tif 000010
【図３】
2019020880.tif 000011
【図４】
2019020880.tif 000012
【図５】
2019020880.tif 000013
【図６】
2019020880.tif 000014
【図７】
2019020880.tif 000015