【文献】
伊藤聡志,菊池浩明,ユークリッド距離を用いた再識別手法とPWSCup2015の匿名加工データを用いた評価,電子情報通信学会技術研究報告 Vol.116 No.65 IEICE Technical Report,日本,一般社団法人電子情報通信学会,2016年05月19日,第116巻,第65号,p.145-p.152
(58)【調査した分野】(Int.Cl.,DB名)
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Kristen LeFevre, David J DeWitt, and Raghu Ramakrishnan, "Incognito: Efficient full-domain k-anonymity", Proceedings of the 2005 ACM SIGMOD international conference on Management of data, pp. 49-60, 2005.
【非特許文献2】Florian Kohlmayer, Fabian Prasser, Claudia Eckert, Alfons Kemper, and Klaus A Kuhn, "Flash: efficient, stable and optimal k-anonymity", Privacy, Security, Risk and Trust (PASSAT), 2012 International Conference on and 2012 International Conference on Social Computing (SocialCom), pp. 708-717, 2012.
【非特許文献3】五十嵐大,千田浩司,高橋克巳,“数値属性における, k-匿名性を満たすランダム化手法”,コンピュータセキュリティシンポジウム2011,pp. 450-455,2011年
【非特許文献4】五十嵐大,千田浩司,高橋克巳,“k-匿名性の確率的指標への拡張とその適用例”,コンピュータセキュリティシンポジウム2009,pp. 1-6,2009年
【非特許文献5】Vicenc Torra, John M Abowd, and Josep Domingo-Ferrer, "Using mahalanobis distance-based record linkage for disclosure risk assessment", International Conference on Privacy in Statistical Databases, pp. 233-242, 2006.
【非特許文献6】Josep Domingo-Ferrer and Vicenc Torra, "Distance-based and probabilistic record linkage for re-identification of records with categorical variables", Butlleti de IACIA, Associacio Catalana dIntelligencia Artificial, pp. 243-250, 2002.
【発明を実施するための形態】
【0009】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【0010】
[記号]
ある属性の集合を大文字Xと表現し、属性Xの値を小文字x∈Xと表現する。
【0011】
データベースの1レコードを横ベクトルとして表現する。例えば、M属性あるデータベースのi番目のレコードは、x
→i={x
i1, …, x
ij, …, x
iM}とする。
【0012】
複数のレコードからなる集合をデータベースX
→とする。例えば、レコード数Nのデータベースは、X
→={x
→1, …, x
→N}とする。
【0013】
データベースX
→の各レコードを決定的手法もしくは確率的手法により秘匿したレコードからなる集合を秘匿データベースY
→とする。例えば、レコード数Nの秘匿データベースは、Y
→={y
→1, …, y
→N}とする。
【0014】
秘匿データベースY
→はレコードの順番がシャッフルされている場合もある。そこで、秘匿データベースY
→の行番号と元データベースX
→の行番号(以下、「真の行番号」と呼ぶこともある)とを対応付ける行番号対応関数f
y:R→Rを定義する。
【0015】
図1に、元データベースX
→、秘匿データベースY
→、および行番号対応関数f
yの例を示す。元データベースX
→は、M属性からなる平文のレコードをNレコード含むデータベースである。秘匿データベースY
→は、元データベースの各レコードが秘匿され、かつ、順番がシャフルされたデータベースである。行番号対応関数f
yは、元データベースの行番号と秘匿データベースの行番号との対応が表された参照表である。
【0016】
[処理の概要]
本発明の安全性評価技術では、元データベースX
→と秘匿データベースY
→と行番号対応関数f
yとを用いて、データベース全体の再識別率を計算し、安全性の評価を行う。本発明では、あるレコードの再識別率を計算するにあたり、大まかに以下の2つの処理を行う。
【0017】
処理1.近傍探索の対象となるレコードの近傍レコードを、指定した近傍数分取得する。近傍レコードの探索は、木構造を用いたもの(参考文献1参照)や、ハッシングを用いたもの(参考文献2参照)があり、それらを用いて近傍レコードを取得する。木構造としては、例えばkd木等が挙げられる。
【0018】
〔参考文献1〕Jon Louis Bentley, "Multidimensional binary search trees used for associative searching", Communications of the ACM, Vol. 18, No. 9, pp. 509-517, 1975.
〔参考文献2〕Mayur Datar, Nicole Immorlica, Piotr Indyk, and Vahab S Mirrokni, "Locality-sensitive hashing scheme based on p-stable distributions", In Proceedings of the twentieth annual symposium on Computational geometry, pp. 253-262, 2004.
【0019】
処理2.近傍レコードに基づくレコードリンケージの対象レコードと近傍レコードとの距離を計算し、最も距離が近い近傍レコードの行番号とレコードリンケージの対象レコードの真の行番号とが一致したら再特定できたとする。計算する距離としては、例えば、ユークリッド距離、ハミング距離、マンハッタン距離等、適切な距離を用いることができる。レコードの属性値が重複している場合、近傍探索で指定した近傍数以上の近傍レコードが取得される。その場合には、近傍レコード中の重複レコードを排除した上で、近傍レコードとの距離を計算する。
【0020】
上記処理1,2を秘匿データベースの各レコードについて行い、各レコードの再識別率の合計値をデータベースの再識別率とし、秘匿データベース全体の安全性を評価する。
【0021】
図2は、従来技術によるレコードリンケージを表す概念図であり、
図3は、本発明によるレコードリンケージを表す概念図である。従来技術は秘匿データベースのあるレコードについて元データベースの全レコードとの距離を計算し、最も近いレコードの行番号がそのレコードの真の行番号と一致した場合に、再特定できたものと判定する。一方、本発明は秘匿データベースのあるレコードについて元データベースから近傍探索により取得した所定の近傍数の近傍レコードとの距離を計算し、最も近いレコードの行番号がそのレコードの真の行番号と一致した場合に、再特定できたものと判定する。
【0022】
本発明では、木構造を用いた近傍探索もしくはハッシングを用いた近傍探索のどちらかを用いることとする。本発明の具体的な処理を<Algorithm 1>に示す。上記の処理1(近傍探索)は2〜7行目に対応し、処理2(近傍レコードに基づくレコードリンケージ)は8〜22行目に対応する。なお、|・|は集合・の要素数を表す。
【0023】
<Algorithm 1>近傍探索を用いたレコードリンケージ
Input: レコード数Nの元データベースX
→={x
→1, …, x
→N}, レコード数Nの秘匿データベースY
→={y
→1, …, y
→N}, 行番号対応関数f
y:R→R, 近傍数K(1<K<N), 許容範囲ε(ε>1)
Output: 再識別率r
1: r←0
2: for i=1 to N do
3: y
→iに対する元データベースX
→の近傍レコード集合X
→inear={x
→j}(ただし、|X
→inear|≧K)を近傍探索により取得する
4: end for
5: if |X
→inear|>εKとなるiが存在する場合 then
6: |X
→inear|>εKとなるiに対して、X
→inearのうち重複を除いたレコード集合X
→iuniq={x
→j}とし、各x
→jに対応する重複レコードの行番号集合を返す関数f
idupを保持する
7: end if
8: for i=1 to N do
9: if |X
→inear|>εKとなる場合 then
10: y
→iとX
→iuniqの各レコードとの距離を求め、y
→iに最も距離の近いレコードを最近傍レコードZ
→とする
11: if Z
→にf
y(k)=i(ただしk:x
→k∈Z
→)となるレコードが存在する場合 then
12: for x
→j∈Z
→ do
13: r←r+1/(|f
idup(j)||Z
→|)
14: end for
15: end if
16: else
17: y
→iとX
→inearの各レコードとの距離を求め、y
→iに最も距離の近いレコードを最近傍レコードZ
→とする
18: if Z
→にf
y(k)=i(ただしk:x
→k∈Z
→)となるレコードが存在する場合 then
19: r←r+1/|Z
→|
20: end if
21: end if
22: end for
【0024】
まず、秘匿データベースY
→のレコードy
→iごとに近傍探索を用いて近傍レコード集合X
→inearを取得する(2〜4行目に対応)。元データベースX
→中に重複したレコードが少なければ、取得した近傍レコード集合X
→inearが指定した近傍数K以下となる。しかしながら、元データベースX
→中に重複するレコードが多い場合、取得した近傍レコード集合X
→inearが指定した近傍数Kを超えることがあり、近傍探索した効果がなくなってしまう。そこで、近傍レコード集合X
→inearがεK件を超えた場合は、近傍レコード集合X
→inear中の重複するレコードを排除したレコード集合X
→iuniqを生成し、重複するレコードの行番号を返す関数f
idupを保持する(5〜7行目に対応)。なお、許容範囲εと近傍数Kは、例えば、ε=2.0, K=log Nなどに設定するとよい。
【0025】
次に、秘匿データベースY
→のレコードy
→iごとに近傍レコード集合の各レコードとの距離を計算し、最も距離が近いレコードの真の行番号(すなわち、元データベース上の行番号)が現在のレコードの真の行番号(すなわち、現在のレコードの秘匿データベース上の行番号に対応付けられた元データベース上の行番号)と一致した場合、再識別成功として再識別率rを加算する。
【0026】
より具体的には、近傍レコード集合X
→inearのレコード数がεK件を超えていた場合は、まず重複を排除した近傍レコード集合X
→iuniqの各レコードとの距離計算を行う。そして、最も距離が近いレコードの重複するレコードの真の行番号を探索し、現在のレコードの行番号と一致した場合、重複レコード間で平均して再識別できたとして、1/重複レコード数(1/|f
idup|)を再識別率として加算する。その際、最近傍レコードが複数ある場合は、それらも平均して(1/|Z
→|)再識別できたとして加算する(9〜15行目に対応)。
【0027】
もし近傍レコード集合X
→inearのレコード数がεK件以下であった場合は、まず近傍レコード集合X
→inearの各レコードとの距離計算を行う。そして、最も距離が近いレコードの重複するレコードの真の行番号を探索し、現在のレコードの行番号と一致した場合、1を再識別率として加算する。その際、最近傍レコードが複数ある場合は、それらを平均して(1/|Z
→|)再識別できたとして加算する(16〜21行目に対応)。
【0028】
[実施形態]
実施形態の安全性評価装置および方法は、上記<Algorithm 1>を実行して秘匿データベースの安全性を評価する。実施形態の安全性評価装置1は、
図4に例示するように、データベース記憶部10、近傍レコード探索部11、重複排除部12、最近傍レコード計算部13、再特定判定部14、および再識別率計算部15を備える。この安全性評価装置1が、
図5に例示する各ステップの処理を行うことにより実施形態の安全性評価方法が実現される。
【0029】
安全性評価装置1は、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。安全性評価装置1は、例えば、中央演算処理装置の制御のもとで各処理を実行する。安全性評価装置1に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。安全性評価装置1の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。安全性評価装置1が備える各記憶部は、例えば、RAM(Random Access Memory)などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ(Flash Memory)のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。
【0030】
以下、
図5を参照して、実施形態の安全性評価装置1が実行する安全性評価方法について説明する。
【0031】
データベース記憶部10には、平文のレコードx
→i(i=1, …, N、N≧2)からなる元データベースX
→={x
→1, …, x
→N}と、元データベースX
→を秘匿した秘匿データベースY
→={y
→1, …, y
→N}と、元データベースX
→の行番号と秘匿データベースY
→の行番号とを対応付ける行番号対応関数f
yが記憶されている。
【0032】
ステップS11において、近傍レコード探索部11は、秘匿データベースY
→の各レコードy
→iについて、元データベースX
→に対する近傍探索により所定の近傍数Kの近傍レコード集合X
→inear={x
→j}(j∈{1, …, N})を取得する。このとき、近傍数Kは、例えば、元データベースX
→のレコード件数Nの対数log Nとする。近傍探索は、木構造もしくはハッシングを用いた近傍探索のどちらかを用い、例えば、kd木を用いる手法を用いる。近傍レコード探索部11は、取得した近傍レコード集合X
→inearを重複排除部12へ出力する。
【0033】
ステップS12において、重複排除部12は、近傍レコード集合X
→inearのレコード数が所定の閾値εKよりも多い場合に、近傍レコード集合X
→inear中の重複レコードを排除して、重複排除済み近傍レコード集合X
→iuniqを生成する。このとき、閾値εKは、例えば、近傍数の2倍(すなわち、許容範囲ε=2.0)とする。重複排除部12は、重複排除済み近傍レコード集合X
→iuniqを最近傍レコード計算部13へ出力する。近傍レコード集合X
→inearのレコード数が閾値εK以下だった場合は、近傍レコード集合X
→inearを最近傍レコード計算部13へ出力する。
【0034】
ステップS13において、最近傍レコード計算部13は、秘匿データベースY
→の各レコードy
→iについて、近傍レコード集合X
→inearのレコード数が閾値εKよりも多かった場合には、重複排除済み近傍レコード集合X
→iuniqの各レコードとの距離を計算し、近傍レコード集合X
→inearのレコード数が閾値εK以下だった場合には、近傍レコード集合X
→inearの各レコードとの距離を計算し、当該レコードy
→iとの距離が最も近い最近傍レコードZ
→={x
→k}(k∈{1, …, N})を取得する。最近傍レコード計算部13は、取得した最近傍レコードZ
→を再特定判定部14へ出力する。
【0035】
ステップS14において、再特定判定部14は、秘匿データベースY
→の各レコードy
→iについて、当該レコードy
→iに対応付けられた元データベースX
→のレコードx
→jが最近傍レコードZ
→中に存在するか否かに基づいて当該レコードy
→iの再識別率r
iを計算する。レコードy
→iに対応付けられたレコードx
→jは行番号対応関数f
yを用いて求めることができる。再特定判定部14は、計算したレコードy
→iの再識別率r
iを再識別率計算部15へ出力する。
【0036】
ステップS15において、再識別率計算部15は、秘匿データベースY
→の各レコードy
→iについて計算した再識別率r
iに基づいて秘匿データベースY
→の再識別率rを計算する。例えば、秘匿データベースY
→の各レコードy
→iの再識別率r
iの総和Σ
i=1Nr
iを秘匿データベースY
→の再識別率rとする。再識別率計算部15は、秘匿データベースY
→の再識別率rを安全性評価装置1の出力とする。
【0037】
本形態のポイントは、レコードリンケージに対して近傍探索を単に組み合わせただけでは解決できない課題、すなわち、近傍レコードが大量に出現した場合の問題を解決したことである。具体的には、大量の近傍レコードに対して重複排除処理を加えることで、処理時間を抑えたことである。近傍レコードを取得する際に属性値が重複等している場合、指定した近傍数以上の近傍レコードを取得するため、そのまま処理を行うと実行時間が長くなる。最悪の場合、近傍レコードがデータベース中のレコード数分出力されてしまい、結果として近傍レコードを探索した効果がなくなってしまう。本形態では、近傍レコードを取得する際に重複排除の処理を加えていることから、上記問題を回避でき、高速な実行が可能となっている。
【0038】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【0039】
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【0040】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0041】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0042】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0043】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。