以下、図面に基づいて、本願の開示する匿名性評価装置、匿名性評価方法および匿名性評価プログラムの実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
図1は、実施例の匿名性評価装置の構成の一例を示すブロック図である。図1に示す匿名性評価装置100は、複数の属性が与えられたエントリの集合であるパーソナルデータの入力を受け付ける。匿名性評価装置100は、属性の組み合わせごとに設定された観察の容易さを表す観察容易性の最大値を、受け付けたパーソナルデータのエントリごとの個人を特定できる可能性を示す特定性の最大特定性と設定する。また、匿名性評価装置100は、観察容易性の最小値を特定性の最小特定性と設定する。匿名性評価装置100は、観察容易性が高い属性の組み合わせ順に、エントリごとに該エントリの匿名性を示すk−匿名性を求める。匿名性評価装置100は、属性の組み合わせにおける観察容易性に基づいて、エントリごとの最大特定性を更新する。また、匿名性評価装置100は、属性の組み合わせにおけるk−匿名性に基づいて、エントリごとの最小特定性を更新する。これにより、匿名性評価装置100は、匿名性を高精度で評価できる。
ここで、図2から図6を用いて、パーソナルデータの匿名性および特定性について説明する。図2は、パーソナルデータの一例を示す図である。図2に示すデータ20は、パーソナルデータの一例である。データ20は、例えば、各行に個人の情報を格納した2次元表データである。データ20は、例えば、属性(列)として、「年齢」、「性別」、「職業」、「学歴」、「年収区分」といった項目を有する。なお、「行番号」は、説明のために設けたものであり、データ20には含まれないものとする。なお、匿名性評価装置100は、データ20の入力を受け付けた際に、行番号を付与してもよい。
データ20には、特定の個人を識別することができる記述はないが、匿名性が完全であるとはいえない。例えば、攻撃者は、属性{年齢,性別,職業,学歴}={80,女,会社員,高卒}という特定の個人Xさんを知っているとする。また、攻撃者は、例えば属性の希少さに基づいて、データ20にXさんのデータが含まれていることを知っている場合、Xさんのデータが行番号「5」のデータであると特定できる。すなわち、データ20の行番号「5」は、Xさんのデータであると特定できるため、匿名性が破られていることになる。そうすると、攻撃者は、行番号「5」を参照することで、Xさんの属性{年収区分}={高}について新たに知ることができる。Xさんが年収区分を攻撃者に知られたくない場合には、行番号「5」が特定できることはプライバシーの問題となる。すなわち、行番号「5」のデータは、プライバシー問題になりうる程度には匿名性が低いといえる。
一方、データ20の行番号「1」,「2」は、同じデータであり、特定の個人を識別することはできず、行番号「5」のデータより匿名性が高いと考えられる。このような場合に、匿名性を行単位で定量化することで、より適切な匿名化とすることが考えられる。例えば、データ20の行番号「1」,「2」は、既に匿名性が高いのでそのままとし、行番号「5」は、さらに匿名化するといったことが考えられる。
図3は、k−匿名性の一例を示す図である。図3の例は、データ20について、匿名性を行単位で定量化する1つの方式であるk−匿名性を算出したものである。k−匿名性を用いる場合には、準識別子(QI)を属性{年齢,性別,職業}に指定した場合、行番号「1」,「2」および行番号「3」,「4」は、いずれも度数(k値)が「2」(k=2)となり、行番号「5」は、度数(k値)が「1」(k=1)となる。なお、度数(k値)が「2」とは、同一行数が「2」であることを示し、度数(k値)が「1」とは、同一行数が「1」であることを示す。このため、行番号「5」の匿名性は、他の行よりも低いこととなる。なお、以下の説明では、準識別子の指定について、QI={年齢,性別,職業}といった形式で表す場合がある。
また、k−匿名性を用いる場合には、一般に観察されやすい属性を準識別子に指定することが求められるが、各属性を観察されやすいか否かの2つに分類することは難しい。これに対して、全属性を準識別子とする場合には、各属性を分類せずに済むが、得られたk−匿名性は指標としての精度が荒くなってしまう。
図4は、k−匿名性の他の一例を示す図である。図4には、データ20について、QI=全属性とした場合の各行の度数(k値)を示す。図4の例では、行番号「3」,「4」,「5」が、いずれも度数はk=1となり同じ値に定量化されている。ところが、行番号「3」,「4」と、行番号「5」とでは、識別するための属性が異なるため、本来であれば、行番号「3」,「4」と、行番号「5」とは、度数が異なる場合がある。なお、行番号「3」,「4」を識別するには、属性{学歴}を用いればよく、行番号「5」を識別するには、属性{年齢,職業}を用いればよい。また、外部からの観察されやすさについては、属性{学歴}と、属性{年齢,職業}とを比較すると、属性{年齢,職業}の方が観察されやすい。従って、匿名性は、例えば、行番号「3」,「4」よりも行番号「5」の方が低くなるとした方が好ましい。
なお、以下の説明では、1つまたは複数の属性の組み合わせを属性組み合わせと表現し、属性組み合わせの観察されやすさを観察容易性という。また、以下の説明では、匿名性を定量化するために、匿名性と逆の関係である特定性を定量化する。すなわち、匿名性は、求めた特定性の大小を反転することで求めることができる。つまり、特定性が高いとは匿名性が低いことを表し、特定性が低いとは匿名性が高いことを表す。
図5は、属性組み合わせを用いた観察容易性に基づく特定性の算出の一例を示す図である。図5の例は、属性組み合わせを変更しながら各行の度数(k値)を繰り返し求め、k=1となる行を探索し、そのときのQIの観察容易性を用いて特定性を定量化する場合である。なお、特定性は、例えば「0」〜「1」の範囲で定量化するものとする。すなわち、特定性は、「1」に近いほど特定されやすいことを示す。つまり、特定性の値域は、区間[0,1]の範囲で表すことができる。
図5の表21は、例えば、予め設定した属性組み合わせごとの観察容易性を、観察容易性が高い順に並べたものである。なお、表21の「組み合わせ番号」は、観察容易性が高い順に対応している。また、観察容易性が高い順とは、機微性の低い属性ほど高く、集合サイズが小さい属性組み合わせほど高くしたものである。なお、機微性は、ユーザによって定義され、例えば、全属性={年齢,性別,職業,学歴,年収区分}とした場合、機微性は{年齢:1,性別:1,職業:1,学歴:2,年収区分:3}とすることができる。ここで、機微性は、数字が大きいほど機微性が高いことを示す。
表21の観察容易性を用いて、データ20の各行の度数(k値)を求めると、組み合わせ番号「1」〜「4」では、k=1とならず、組み合わせ番号「5」のQI={年齢,職業}でデータ20の行番号「5」がk=1となる。従って、行番号「5」の特定性は、QI={年齢,職業}の観察容易性である「0.9」と算出できる。すなわち、データ20の行番号「5」は、特定性が「0.9」であると定量化できる。また、残りの行については、組み合わせ番号「6」以降について同様の処理を実行し、それぞれ特定性を定量化することができる。
しかしながら、図5に示す特定性の定量化では、データ20の各行について、度数(k値)がk=1となるQIで探索されるまで定量化されないため、処理の途中で特定性を出力したい場合、定量化されていない行が存在する。図5に示す特定性の定量化は、計算量が多いため、例えば、締め切り日時が存在する場合等、処理の途中で特定性を出力したい場合に未計算の行が発生する。なお、計算量は、最も多い場合には、属性数の指数関数で表されることになる。この場合には、処理が途中であるので、度数(k値)がk=1となる属性組み合わせが見つかっていない行についての匿名性の情報が得られない。
例えば、特定性をリスクとして金額に変換する場合を考える。この例では、まず、最後まで計算できれば5万円の行が1行と、500円の行が1000行との合計55万円のリスクがあるとする。このとき、5万円の行の計算が終了し、500円の行の計算を行う前に処理を打ち切ると、リスクが正しい計算結果の1/11である5万円と低い値となる。また、リスクの上限値も不明のままとなる。
また、図5に示す特定性の定量化では、度数(k値)がk≧2となる行であっても、属性によっては特定性が高くなる場合に対応することが難しい。図6は、k≧2の行をk=1の行よりも特定性を高くしたい場合の一例を示す図である。データ20の行番号「3」は、図5に示す表21より、QI={学歴}の観察容易性は「0.4」、QI={職業}の観察容易性は「1」である。また、データ20の行番号「3」は、QI={学歴}とすると、枠22に示すようにk=1となり、この場合の特定性は「0.4」となる。また、データ20の行番号「3」は、QI={職業}とすると、枠23に示すように、行番号「3」,「4」がともに「無職」であるのでk=2となる。ここで、例えば、k=2の行の特定性は、0.5倍に補正するものとすると、行番号「3」の特定性は、1×0.5=0.5となる。ところが、図5に示す特定性の定量化では、k=2の場合に特定性を算出しないので、行番号「3」について、QI={学歴}(k=1)の特定性「0.4」よりもQI={職業}(k=2)の特定性「0.5」の方が、特定性が高いと出力することが難しい。すなわち、行番号「3」は、学歴で一意に特定できる場合より、職業で二意に特定できる場合の方が、特定性が高いと出力するべきであるが、図5に示す特定性の定量化では、そうならないこととなる。
本実施例では、このような処理の途中における特定性の出力、および、k≧2の場合における特定性の出力に対応することで、処理が途中で中断された場合やk≧2の場合においても匿名性を高精度で評価することができる。
次に、図1の説明に戻って、匿名性評価装置100の構成について説明する。図1に示すように、匿名性評価装置100は、入力部110と、表示部111と、操作部112と、記憶部120と、制御部130とを有する。なお、匿名性評価装置100は、図1に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。匿名性評価装置100の一例としては、据置型のパーソナルコンピュータを採用できる。匿名性評価装置100には、上記の据置型のパーソナルコンピュータのみならず、可搬型のパーソナルコンピュータを匿名性評価装置100として採用することもできる。また、匿名性評価装置100は、可搬型の端末としては、上記の可搬型のパーソナルコンピュータの他にも、例えば、タブレット端末を採用することもできる。
入力部110は、例えば、光学ディスク、USB(Universal Serial Bus)メモリ、SDメモリカード等の外部記憶媒体に対する媒体アクセス装置等によって実現される。入力部110は、外部記憶媒体に記憶されたパーソナルデータおよび観察容易性情報を読み取って、読み取ったパーソナルデータおよび観察容易性情報を制御部130に出力する。
表示部111は、各種情報を表示するための表示デバイスである。表示部111は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。表示部111は、制御部130から入力された出力画面等の各種画面を表示する。
操作部112は、匿名性評価装置100のユーザから各種操作を受け付ける入力デバイスである。操作部112は、例えば、入力デバイスとして、キーボードやマウス等によって実現される。操作部112は、ユーザによって入力された操作を操作情報として制御部130に出力する。なお、操作部112は、入力デバイスとして、タッチパネル等によって実現されるようにしてもよく、表示部111の表示デバイスと、操作部112の入力デバイスとは、一体化されるようにしてもよい。
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部120は、パーソナルデータ記憶部121と、観察容易性記憶部122と、特定性範囲リスト記憶部123とを有する。また、記憶部120は、制御部130での処理に用いられる情報を記憶する。
パーソナルデータ記憶部121は、匿名性評価の対象となるパーソナルデータを記憶する。パーソナルデータは、複数の属性が与えられたエントリの集合である。パーソナルデータ記憶部121は、例えば、図2に示すデータ20のように、「行番号」、「年齢」、「性別」、「職業」、「学歴」、「年収区分」といった項目を有する。なお、「行番号」は、元のパーソナルデータにない場合には付加してもよいし、「行番号」が識別可能なデータ構造であれば、項目としてはなくてもよい。また、パーソナルデータ記憶部121は、他の属性に対応する項目を有してもよい。パーソナルデータ記憶部121は、例えば、エントリごとに1レコードとして記憶する。
「行番号」は、パーソナルデータのエントリの番号、つまりレコード番号を示す情報である。「年齢」は、パーソナルデータのエントリに対応する人物の年齢を示す情報である。「性別」は、パーソナルデータのエントリに対応する人物の性別を示す情報である。「職業」は、パーソナルデータのエントリに対応する人物の職業を示す情報である。「学歴」は、パーソナルデータのエントリに対応する人物の学歴を示す情報である。「年収区分」は、パーソナルデータのエントリに対応する人物の年収区分を示す情報である。
図1の説明に戻って、観察容易性記憶部122は、属性組み合わせと観察容易性とを対応付けて記憶する。図7は、観察容易性記憶部の一例を示す図である。図7に示すように、観察容易性記憶部122は、「組み合わせ番号」、「属性組み合わせ」、「観察容易性」といった項目を有する。観察容易性記憶部122は、例えば、属性組み合わせごとに1レコードとして記憶する。
「組み合わせ番号」は、属性組み合わせを識別する識別子である。また、「組み合わせ番号」は、特定性の算出処理(特定性の範囲の更新処理)における、準識別子(QI)に指定する属性組み合わせの選択の順番に対応する。「属性組み合わせ」は、準識別子(QI)に指定する属性の1つまたは複数の組み合わせを示す情報である。「観察容易性」は、対応する属性組み合わせにおける観察されやすさを示す情報である。「観察容易性」は、例えば、属性の機微性に基づいて設定することができる。また、「観察容易性」は、例えば「0」〜「1」の範囲で定量化して表すことができる。なお、観察容易性についても、特定性と同様に、区間[0,1]の範囲で表すことができる。
図7の例では、属性組み合わせは、31通りあり、各属性組み合わせと対応する観察容易性が、観察容易性の降順にソートされている。また、観察容易性が高い属性の組み合わせ順は、属性の数が少ない組み合わせほど、観察容易性が高いとする順番である。なお、観察容易性記憶部122に記憶される観察容易性の情報は、入力部110を介して入力されてもよいし、予め辞書として観察容易性記憶部122に記憶されるようにしてもよい。また、観察容易性は、次に優先度が高い属性組み合わせについて、属性数を増加させる等により、動的に算出するようにしてもよい。さらに、観察容易性は、例えば、A⊂Bの関係の任意の2つの属性組み合わせ{A,B}について、Aの観察容易性はBの観察容易性より高いという制約に従う。
図1の説明に戻って、特定性範囲リスト記憶部123は、パーソナルデータのエントリ(行番号)ごとに算出された特定性の範囲を記憶する。図8は、特定性範囲リスト記憶部の一例を示す図である。図8に示すように、特定性範囲リスト記憶部123は、「行番号」、「最小特定性」、「最大特定性」といった項目を有する。特定性範囲リスト記憶部123は、例えば、行番号ごとに1レコードとして記憶する。
「行番号」は、パーソナルデータのエントリを識別する識別子である。「最小特定性」は、そのエントリの個人を特定できる可能性を示す特定性の範囲のうち、最小値を示す情報である。「最大特定性」は、特定性の範囲のうち、最大値を示す情報である。すなわち、特定性範囲リスト記憶部123は、パーソナルデータのエントリごとに、特定性の範囲を記憶する。なお、最小特定性と最大特定性とが同じ値である場合には、当該エントリの特定性がその値に決定されたことを示す。
図1の説明に戻って、制御部130は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、内部の記憶装置に記憶されているプログラムがRAMを作業領域として実行されることにより実現される。また、制御部130は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現されるようにしてもよい。制御部130は、受付部131と、設定部132と、更新部133と、出力制御部134とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図1に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
受付部131は、入力部110からパーソナルデータおよび観察容易性情報が入力されると、入力されたパーソナルデータおよび観察容易性情報を受け付ける。なお、受付部131は、観察容易性について観察容易性記憶部122に予め辞書を記憶して用いる場合には、観察容易性情報については、受け付けなくてもよい。すなわち、受付部131は、複数の属性が与えられたエントリの集合であるパーソナルデータの入力を受け付ける。受付部131は、受け付けたパーソナルデータおよび観察容易性情報を、それぞれパーソナルデータ記憶部121および観察容易性記憶部122に記憶するとともに、算出開始指示を設定部132に出力する。また、受付部131は、入力部110から処理の中止要求を受け付ける。受付部131は、受け付けた中止要求を更新部133に出力する。
設定部132は、受付部131から算出開始指示が入力されると、観察容易性記憶部122を参照し、属性組み合わせが全属性の場合における属性組み合わせおよび観察容易性と、先頭の組み合わせ番号の属性組み合わせにおける観察容易性とを取得する。設定部132は、パーソナルデータ記憶部121を参照し、取得した全属性の属性組み合わせに基づいて、エントリごとに全属性をQIとした場合のk−匿名性を算出する。
設定部132は、各エントリについて全属性でのk−匿名性を算出すると、取得した全属性の観察容易性と、算出した全属性でのk−匿名性とに基づいて、各エントリの最小特定性を設定する。すなわち、設定部132は、エントリごとに、全属性でのk−匿名性を用いて補正した全属性の観察容易性を最小特定性として設定する。つまり、特定性が全属性を用いないと特定できない場合は、特定できる場合の中で最も特定性が低いことから、この場合の観察容易性を最小特定性とすることができる。ここで、観察容易性の補正には、例えば、最小特定性=観察容易性×21−kといった式を用いることができる。なお、観察容易性を補正して特定性を算出する式は、度数(k値)を計上した属性組み合わせの観察容易性に比例する式であれば、他の式であってもよい。
また、設定部132は、取得した先頭の組み合わせ番号の属性組み合わせにおける観察容易性、つまり、選択される順番が1番である属性組み合わせの観察容易性を各エントリの最大特定性として設定する。すなわち、設定部132は、観察容易性の最大値を各エントリの最大特定性として設定する。つまり、設定部132は、各エントリの最小特定性および最大特定性に基づいて、特定性範囲リスト記憶部123に記憶される特定性範囲リストに初期値を設定する。設定部132は、特定性範囲リストに初期値を設定すると、更新部133に対して更新指示を出力する。
言い換えると、設定部132は、属性の組み合わせごとに設定された観察の容易さを表す観察容易性の最大値を、受け付けたパーソナルデータのエントリごとの個人を特定できる可能性を示す特定性の最大特定性と設定する。また、設定部132は、観察容易性の最小値を特定性の最小特定性と設定する。また、設定部132は、属性の全属性の組み合わせにおける各エントリのうち、k−匿名性が2以上であるエントリについて、観察容易性の最小値と、属性の全属性の組み合わせにおけるk−匿名性とに基づいて、最小特定性を設定する。
ここで、図9を用いて特定性範囲リストへの初期値の設定について説明する。図9は、最小特定性および最大特定性の設定の一例を示す図である。設定部132は、図9の表24に示すように、観察容易性のうち、全属性の場合における属性組み合わせおよび観察容易性「0.1」と、先頭の組み合わせ番号の属性組み合わせにおける観察容易性「1」とを取得する。設定部132は、取得した全属性の属性組み合わせに基づいて、パーソナルデータであるデータ20のエントリ(行番号)ごとに、表25に示すように全属性でのk−匿名性を算出する。表25の例では、行番号「1」、「2」はk=2、行番号「3」〜「5」はk=1となっている。なお、表25では、行番号は省略している。
設定部132は、最小特定性=観察容易性×21−kという式を用いて、各エントリの最小特定性を求めると、特定性範囲リスト30に示すように、行番号「1」、「2」は、最小特定性=0.1×21−2=0.1×2−1より、「0.05」と求めることができる。また、行番号「3」〜「5」は、最小特定性=0.1×21−1より、「0.1」と求めることができる。また、設定部132は、先頭の組み合わせ番号の属性組み合わせにおける観察容易性「1」に基づいて、各エントリの最大特定性は、それぞれ「1」であると求めることができる。設定部132は、求めた各エントリの最小特定性および最大特定性を、それぞれ特定性範囲リスト30の初期値として設定する。
すなわち、特定性範囲リスト30の初期値は、特定性が一意に決まっていない、つまり、特定性の範囲が収束していないが、各エントリの特定性が最小特定性と最大特定性との間に存在することを範囲で示している。また、更新部133では、特定性範囲リスト30の最小特定性および最大特定性で表される範囲を狭めていくことで、特定性の精度を向上させる。
図1の説明に戻って、更新部133は、設定部132から更新指示が入力されると、特定性範囲リストの更新を開始する。更新部133は、まず、パーソナルデータの匿名性を評価する匿名性評価処理について、受付部131から中止要求が入力されたか否か、つまり中止要求があるか否かを判定する。更新部133は、中止要求があると判定した場合には、特定性範囲リストの更新を中止し、現在の特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力する。更新部133は、中止要求がないと判定した場合には、引き続き特定性範囲リストの更新を実行し、出力要求があるか否かを判定する。
更新部133は、出力要求があると判定した場合には、現在の特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力し、未処理の属性組み合わせがあるか否かの判定処理に進む。更新部133は、出力要求がないと判定した場合には、リスト出力指示を出力制御部134に出力せずに、未処理の属性組み合わせがあるか否かの判定処理に進む。
更新部133は、未処理の属性組み合わせがあるか否かを判定する。すなわち、更新部133は、例えば、属性数をcとすると、全属性も含めて属性組み合わせは2c−1通りあるので、2c−1通りの属性組み合わせについて処理を実行したか否かを判定する。更新部133は、未処理の属性組み合わせがないと判定した場合には、特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力する。
更新部133は、未処理の属性組み合わせがあると判定した場合には、次に優先度が高い属性組み合わせを選択する。なお、属性組み合わせの優先度は、観察容易性記憶部122の観察容易性の降順にソートされている属性組み合わせについて、組み合わせ番号が若い属性組み合わせほど、優先度が高い属性組み合わせであるとしている。また、観察容易性がより大きい属性組み合わせでk=1となる行は、特定性がより大きいため、観察容易性が大きい順に探索することで、k=1となる行を見つけ次第、その行について特定性の算出を完了できることとなる。なお、観察容易性は、その制約から組み合わせる属性が増加するほど小さくなる傾向がある。
更新部133は、選択された属性組み合わせに基づいて、特定性範囲リストを更新する。具体的には、更新部133は、選択された属性組み合わせに対応する観察容易性が、特定性範囲リストの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性が最大特定性よりも小さい値である場合には、特定性範囲リストの最大特定性を当該観察容易性で更新する。更新部133は、観察容易性が最大特定性以上の値である場合には、特定性範囲リストの最大特定性を更新しない。
更新部133は、選択された属性組み合わせに基づいて、パーソナルデータのエントリごとにk−匿名性を算出する。更新部133は、選択された属性組み合わせに対応する観察容易性と、算出したk−匿名性とに基づいて、エントリごとの特定性を算出する。なお、ここでの特定性の算出は、例えば、特定性=観察容易性×21−kといった式で算出できる。更新部133は、算出した各エントリの特定性が、特定性範囲リストの最小特定性よりも大きい値であるか否かを判定する。更新部133は、算出した特定性が最小特定性よりも大きい値であるエントリについて、当該エントリの最小特定性を算出した特定性で更新する。また、更新部133は、算出した特定性が最小特定性以下の値であるエントリについては、当該エントリの最小特定性を更新しない。なお、更新部133は、特定性範囲リストの最小特定性および最大特定性の値が同じ値であるエントリについては、既に特定性が一点に特定できているので、更新に関する処理は省略する。
更新部133は、特定性範囲リストを更新すると、全てのエントリの特定性が一点に決定したか否かを判定する。更新部133は、全てのエントリの特定性が一点に決定していないと判定した場合には、引き続き、特定性範囲リストの更新を実行する。すなわち、更新部133は、探索により特定性の範囲を狭められることが判明する度に、特定性範囲リストの更新を実行する。更新部133は、全てのエントリの特定性が一点に決定したと判定した場合には、特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力する。
言い換えると、更新部133は、観察容易性が高い属性の組み合わせ順に、エントリごとに該エントリの匿名性を示すk−匿名性を求める。また、更新部133は、属性の組み合わせにおける観察容易性に基づいて、エントリごとの最大特定性を更新する。また、更新部133は、属性の組み合わせにおけるk−匿名性に基づいて、エントリごとの最小特定性を更新する。
また、更新部133は、属性の組み合わせにおける観察容易性と、エントリごとのk−匿名性とに基づいて特定性を算出し、算出した特定性が最小特定性よりも大きい値である場合に、算出した特定性を用いてエントリごとの最小特定性を更新する。また、更新部133は、各エントリについて、最大特定性と最小特定性とが同じ値になった場合に、該値を該エントリにおける特定性として決定する。
出力制御部134は、更新部133からリスト出力指示が入力されると、特定性範囲リスト記憶部123から特定性範囲リストを取得する。出力制御部134は、取得した特定性範囲リストに基づいて出力画面を生成する。出力制御部134は、生成した出力画面を表示部111に出力して表示させる。つまり、出力制御部134は、特定性範囲リストを表示部111に表示させる。なお、出力制御部134は、全てのエントリの特定性が一点に決定した場合には、特定性範囲リストのうち、最大特定性を出力せずに最小特定性のみを出力するようにしてもよい。
すなわち、出力制御部134は、エントリごとに、更新された最大特定性および最小特定性を出力する。また、出力制御部134は、中止要求が受け付けられた時点における、各エントリの最大特定性および最小特定性、または、決定された特定性を出力する。
ここで、図10から図16を用いて特定性範囲リストの更新について説明する。図10から図16は、特定性範囲リストの更新の一例を示す図である。なお、以下の説明では、パーソナルデータとして、図2のデータ20を用いる場合を一例として説明する。更新部133は、図10に示すように、組み合わせ番号「1」の属性組み合わせ{年齢}を選択する。更新部133は、特定性範囲リスト30aおよび表31aに示すように、選択された属性組み合わせ{年齢}に対応する観察容易性「1」が、特定性範囲リスト30aの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性「1」と各エントリの最大特定性「1」とが同じ値であるので、特定性範囲リスト30aの最大特定性は更新しない。
更新部133は、選択された属性組み合わせ{年齢}に基づいて、表31aに示すように、データ20のエントリごとにk−匿名性を算出する。更新部133は、選択された属性組み合わせ{年齢}に対応する観察容易性「1」と、算出したk−匿名性とに基づいて、エントリごとの特定性を算出する。なお、特定性の算出には、特定性=観察容易性×21−kという式を用いている。更新部133は、算出した各エントリの特定性が、特定性範囲リスト30aの各エントリに対応する最小特定性よりも大きい値であるか否かを判定する。更新部133は、算出した特定性が最小特定性よりも大きい値である行番号「1」〜「5」の各エントリについて、各エントリの最小特定性を算出した特定性で更新する。すなわち、更新部133は、特定性範囲リスト30aに示すように、行番号「1」,「2」について「0.05」から「0.5」に更新し、行番号「3」〜「5」について「0.1」から「0.25」に更新する。
更新部133は、図11に示すように、組み合わせ番号「2」の属性組み合わせ{性別}を選択する。更新部133は、特定性範囲リスト30bおよび表31bに示すように、選択された属性組み合わせ{性別}に対応する観察容易性「1」が、特定性範囲リスト30bの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性「1」と各エントリの最大特定性「1」とが同じ値であるので、特定性範囲リスト30bの最大特定性は更新しない。
更新部133は、選択された属性組み合わせ{性別}に基づいて、表31bに示すように、データ20のエントリごとにk−匿名性を算出する。更新部133は、選択された属性組み合わせ{性別}に対応する観察容易性「1」と、算出したk−匿名性とに基づいて、エントリごとの特定性を算出する。更新部133は、算出した各エントリの特定性が、特定性範囲リスト30bの各エントリに対応する最小特定性よりも大きい値であるか否かを判定する。更新部133は、各エントリの算出した特定性と最小特定性とが同じ値であるので、特定性範囲リスト30bの最小特定性は更新しない。
更新部133は、図12に示すように、組み合わせ番号「3」の属性組み合わせ{職業}を選択する。更新部133は、特定性範囲リスト30cおよび表31cに示すように、選択された属性組み合わせ{職業}に対応する観察容易性「1」が、特定性範囲リスト30cの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性「1」と各エントリの最大特定性「1」とが同じ値であるので、特定性範囲リスト30cの最大特定性は更新しない。
更新部133は、選択された属性組み合わせ{職業}に基づいて、表31cに示すように、データ20のエントリごとにk−匿名性を算出する。更新部133は、選択された属性組み合わせ{職業}に対応する観察容易性「1」と、算出したk−匿名性とに基づいて、エントリごとの特定性を算出する。更新部133は、算出した各エントリの特定性が、特定性範囲リスト30cの各エントリに対応する最小特定性よりも大きい値であるか否かを判定する。更新部133は、算出した特定性が最小特定性よりも大きい値である行番号「3」,「4」の各エントリについて、各エントリの最小特定性を算出した特定性で更新する。すなわち、更新部133は、特定性範囲リスト30cに示すように、行番号「3」,「4」について「0.25」から「0.5」に更新し、行番号「1」,「2」,「5」については、算出した特定性と最小特定性とが同じ値であるので、最小特定性は更新しない。
更新部133は、図13に示すように、組み合わせ番号「4」の属性組み合わせ{年齢,性別}を選択する。更新部133は、特定性範囲リスト30dおよび表31dに示すように、選択された属性組み合わせ{年齢,性別}に対応する観察容易性「0.9」が、特定性範囲リスト30dの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性「0.9」が最大特定性「1」よりも小さい値であるので、特定性範囲リスト30dの各エントリの最大特定性を観察容易性で更新する。
更新部133は、選択された属性組み合わせ{年齢,性別}に基づいて、表31dに示すように、データ20のエントリごとにk−匿名性を算出する。更新部133は、選択された属性組み合わせ{年齢,性別}に対応する観察容易性「0.9」と、算出したk−匿名性とに基づいて、エントリごとの特定性を算出する。更新部133は、算出した各エントリの特定性が、特定性範囲リスト30dの各エントリに対応する最小特定性よりも大きい値であるか否かを判定する。更新部133は、各エントリの算出した特定性が最小特定性よりも小さい値であるので、特定性範囲リスト30dの最小特定性は更新しない。
更新部133は、図14に示すように、組み合わせ番号「5」の属性組み合わせ{年齢,職業}を選択する。更新部133は、特定性範囲リスト30eおよび表31eに示すように、選択された属性組み合わせ{年齢,職業}に対応する観察容易性「0.9」が、特定性範囲リスト30eの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性「0.9」と各エントリの最大特定性「0.9」とが同じ値であるので、特定性範囲リスト30eの最大特定性は更新しない。
更新部133は、選択された属性組み合わせ{年齢,職業}に基づいて、表31eに示すように、データ20のエントリごとにk−匿名性を算出する。更新部133は、選択された属性組み合わせ{年齢,職業}に対応する観察容易性「0.9」と、算出したk−匿名性とに基づいて、エントリごとの特定性を算出する。更新部133は、算出した各エントリの特定性が、特定性範囲リスト30eの各エントリに対応する最小特定性よりも大きい値であるか否かを判定する。更新部133は、算出した特定性が最小特定性よりも大きい値である行番号「5」のエントリについて、エントリの最小特定性を算出した特定性で更新する。すなわち、更新部133は、特定性範囲リスト30eに示すように、行番号「5」について「0.25」から「0.9」に更新し、行番号「1」〜「4」については、算出した特定性が最小特定性よりも小さい値であるので、最小特定性は更新しない。なお、更新部133は、行番号「5」について、枠32で示すように、最小特定性と最大特定性とが同じ値「0.9」となったので、特定性が「0.9」であると決定する。
更新部133は、図15に示すように、組み合わせ番号「7」の属性組み合わせ{年齢,性別,職業}を選択する。なお、組み合わせ番号「6」の属性組み合わせ{性別,職業}については、特定性範囲リスト30eが更新されないので、説明を省略している。更新部133は、特定性範囲リスト30fおよび表31fに示すように、選択された属性組み合わせ{年齢,性別,職業}に対応する観察容易性「0.8」が、特定性範囲リスト30fの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性「0.8」が最大特定性「0.9」よりも小さい値であるので、特定性範囲リスト30fの行番号「1」〜「4」の各エントリの最大特定性を観察容易性で更新する。なお、更新部133は、特定性が決定された行番号「5」のエントリについては、当該判定および特定性範囲リストの更新は行わない。
更新部133は、選択された属性組み合わせ{年齢,性別,職業}に基づいて、表31fに示すように、データ20のエントリごとにk−匿名性を算出する。更新部133は、選択された属性組み合わせ{年齢,性別,職業}に対応する観察容易性「0.8」と、算出したk−匿名性とに基づいて、エントリごとの特定性を算出する。なお、特定性が決定された行番号「5」のエントリについては、k−匿名性および特定性の算出は行わない。更新部133は、算出した各エントリの特定性が、特定性範囲リスト30fの各エントリに対応する最小特定性よりも大きい値であるか否かを判定する。更新部133は、各エントリの算出した特定性が最小特定性よりも小さい値であるので、特定性範囲リスト30fの最小特定性は更新しない。
更新部133は、図16に示すように、組み合わせ番号「8」の属性組み合わせ{学歴}を選択する。更新部133は、特定性範囲リスト30gおよび表31gに示すように、選択された属性組み合わせ{学歴}に対応する観察容易性「0.4」が、特定性範囲リスト30gの最大特定性よりも小さい値であるか否かを判定する。更新部133は、観察容易性「0.4」が最大特定性「0.8」よりも小さい値であり、観察容易性「0.4」が最小特定性「0.5」よりも小さい値であるので、特定性範囲リスト30gの行番号「1」〜「4」の各エントリの最大特定性を最小特定性で更新する。すなわち、更新部133は、観察容易性≦最小特定性の関係である場合には、最大特定性を最小特定性で更新する。つまり、更新部133は、行番号「1」〜「4」について、観察容易性が最小特定性以下であるので、特定性が「0.5」であると決定する。これは、これらのエントリについては、これ以降の処理で最小特定性が上方修正される可能性がないためである。なお、更新部133は、特定性が決定された行番号「5」のエントリについては、当該判定および特定性範囲リストの更新は行わない。更新部133は、以上の処理によって、データ20の全てのエントリについて特定性を決定することができる。
次に、図17および図18を用いて、図5に示す特定性の定量化と、本実施例における特定性の定量化との比較について説明する。図17は、処理の途中における特定性の比較の一例を示す図である。図17では、図5に示す特定性の定量化、つまり各行がk=1となるまで計算を行う場合と、本実施例の場合とにおける、組み合わせ番号「4」の直後に匿名性評価の処理を打ち切った場合の特定性を比較する。なお、用いるパーソナルデータは、図2のデータ20であるとする。また、各行がk=1となるまで計算を行う場合は、全ての属性が同じである2つ以上のエントリがある場合には、度数(k値)がそれらのエントリの数、つまりk≧2となるまで計算を行う場合も含まれる。
図17の表33は、各行がk=1となるまで計算を行う場合における各エントリの特定性を示す。表33に示すように、全てのエントリについて「0(未計算)」となっている。これに対して、本実施例の場合における特定性範囲リスト30dでは、行番号「1」〜「4」の各エントリは、特定性が「0.5」〜「0.9」の範囲、行番号「5」のエントリは、特定性が「0.25」〜「0.9」の範囲であると算出できている。従って、本実施例では、各行がk=1となるまで計算を行う場合と比較して、観察容易性が高い属性組み合わせから探索するため、匿名性評価の結果の精度が高いことがわかる。
図18は、処理が完了した場合における特定性の比較の一例を示す図である。図18では、図5に示す特定性の定量化、つまり各行がk=1となるまで計算を行う場合と、本実施例の場合とにおける、組み合わせ番号「8」以降まで匿名性評価の処理を行って処理が完了した場合の特定性を比較する。なお、用いるパーソナルデータは、図2のデータ20であるとする。また、各行がk=1となるまで計算を行う場合は、全ての属性が同じである2つ以上のエントリがある場合には、度数(k値)がそれらのエントリの数、つまりk≧2となるまで計算を行う場合も含まれる。
図18の表34は、各行がk=1となるまで計算を行う場合における各エントリの特定性を示す。表34に示すように、行番号「1」,「2」のエントリは、すべての属性が同じであるので一意に特定できずk=2となるため、枠35で示すように特定性は「0」、つまり特定性を定量化出来なかった状態となっている。また、行番号「3」,「4」の各エントリは、それぞれ特定性が「0.4」と決定されている。また、行番号「5」のエントリは、特定性が「0.9」と決定されている。これに対して、本実施例の場合における特定性範囲リスト30gでは、行番号「1」〜「4」の各エントリは、特定性が「0.5」と決定されている。また、行番号「5」のエントリは、特定性が「0.9」と決定されている。従って、本実施例では、各行がk=1となるまで計算を行う場合と比較して、k≧2となるエントリ(行)の特定性も定量化することができる。
続いて、実施例の匿名性評価装置100の動作について説明する。図19は、実施例の匿名性評価処理の一例を示すフローチャートである。
受付部131は、入力部110からパーソナルデータが入力されると、入力されたパーソナルデータを受け付ける(ステップS1)。なお、受付部131は、入力部110からパーソナルデータとともに観察容易性情報が入力される場合には、入力されたパーソナルデータおよび観察容易性情報を受け付ける。受付部131は、受け付けたパーソナルデータをパーソナルデータ記憶部121に記憶する。また、受付部131は、観察容易性情報を受け付けた場合には、受け付けた観察容易性情報を観察容易性記憶部122に記憶する。受付部131は、パーソナルデータを記憶すると、算出開始指示を設定部132に出力する。
設定部132は、受付部131から算出開始指示が入力されると、パーソナルデータ記憶部121および観察容易性記憶部122を参照し、各エントリの最小特定性および最大特定性を設定する。すなわち、設定部132は、各エントリの最小特定性および最大特定性に基づいて、特定性範囲リストに初期値を設定する(ステップS2)。設定部132は、特定性範囲リストに初期値を設定すると、更新部133に対して更新指示を出力する。
更新部133は、設定部132から更新指示が入力されると、特定性範囲リストの更新を開始する。更新部133は、匿名性評価処理について、中止要求があるか否かを判定する(ステップS3)。更新部133は、中止要求があると判定した場合には(ステップS3:肯定)、特定性範囲リストの更新を中止し、現在の特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力する。
出力制御部134は、特定性範囲リストの更新が中止された状態で更新部133からリスト出力指示が入力されると、特定性範囲リスト記憶部123から特定性範囲リストを取得して出力画面を生成する。出力制御部134は、生成した出力画面、つまり現在の特定性範囲リストを表示部111に出力して表示させ(ステップS4)、匿名性評価処理を終了する。
一方、更新部133は、中止要求がないと判定した場合には(ステップS3:否定)、引き続き特定性範囲リストの更新を実行し、出力要求があるか否かを判定する(ステップS5)。更新部133は、出力要求があると判定した場合には(ステップS5:肯定)、現在の特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力する。
出力制御部134は、特定性範囲リストの更新が実行中の状態で更新部133からリスト出力指示が入力されると、特定性範囲リスト記憶部123から特定性範囲リストを取得して出力画面を生成する。出力制御部134は、生成した出力画面、つまり現在の特定性範囲リストを表示部111に出力して表示させ(ステップS6)、ステップS7に進む。
更新部133は、出力要求がないと判定した場合には(ステップS5:否定)、リスト出力指示を出力制御部134に出力せずに、ステップS7に進む。
更新部133は、未処理の属性組み合わせがあるか否かを判定する(ステップS7)。更新部133は、未処理の属性組み合わせがないと判定した場合には(ステップS7:否定)、特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力し、ステップS11に進む。
更新部133は、未処理の属性組み合わせがあると判定した場合には(ステップS7:肯定)、次に優先度が高い属性組み合わせを選択する(ステップS8)。更新部133は、選択された属性組み合わせに基づいて、特定性範囲リストを更新する(ステップS9)。更新部133は、特定性範囲リストを更新すると、全てのエントリの特定性が一点に決定したか否かを判定する(ステップS10)。更新部133は、全てのエントリの特定性が一点に決定していないと判定した場合には(ステップS10:否定)、ステップS3に戻り、引き続き特定性範囲リストの更新を実行する。
更新部133は、全てのエントリの特定性が一点に決定したと判定した場合には(ステップS10:肯定)、特定性範囲リストを出力するように、リスト出力指示を出力制御部134に出力し、ステップS11に進む。
出力制御部134は、未処理の属性組み合わせがない、または、全てのエントリの特定性が一点に決定したとして更新部133からリスト出力指示が入力されると、特定性範囲リスト記憶部123から特定性範囲リストを取得して出力画面を生成する。出力制御部134は、生成した出力画面、つまり、匿名性評価が完了した特定性範囲リストを表示部111に出力して表示させ(ステップS11)、匿名性評価処理を終了する。これにより、匿名性評価装置100は、匿名性を高精度で評価できる。
このように、匿名性評価装置100は、複数の属性が与えられたエントリの集合であるパーソナルデータの入力を受け付ける。また、匿名性評価装置100は、属性の組み合わせごとに設定された観察の容易さを表す観察容易性の最大値を、受け付けたパーソナルデータのエントリごとの個人を特定できる可能性を示す特定性の最大特定性と設定する。また、匿名性評価装置100は、観察容易性の最小値を特定性の最小特定性と設定する。また、匿名性評価装置100は、観察容易性が高い属性の組み合わせ順に、エントリごとに該エントリの匿名性を示すk−匿名性を求める。また、匿名性評価装置100は、属性の組み合わせにおける観察容易性に基づいて、エントリごとの最大特定性を更新する。また、匿名性評価装置100は、属性の組み合わせにおけるk−匿名性に基づいて、エントリごとの最小特定性を更新する。その結果、匿名性評価装置100は、匿名性を高精度で評価できる。
また、匿名性評価装置100は、属性の全属性の組み合わせにおける各エントリのうち、k−匿名性が2以上であるエントリについて、観察容易性の最小値と、属性の全属性の組み合わせにおけるk−匿名性とに基づいて、最小特定性を設定する。その結果、k−匿名性が2以上であるエントリについても特定性の定量化、つまり匿名性の定量化を行うことができる。
また、匿名性評価装置100は、属性の組み合わせにおける観察容易性と、エントリごとのk−匿名性とに基づいて特定性を算出し、算出した特定性が最小特定性よりも大きい値である場合に、算出した特定性を用いてエントリごとの最小特定性を更新する。その結果、匿名性評価装置100は、各エントリの特定性の範囲について、最小特定性側を狭めていくことができる。
また、匿名性評価装置100では、観察容易性が高い属性の組み合わせ順は、属性の数が少ない組み合わせほど、観察容易性が高いとする順番である。その結果、匿名性評価装置100は、観察しやすい可能性が高い属性、つまり観察の条件が緩い属性から匿名性評価を行うことができる。
また、匿名性評価装置100は、各エントリについて、最大特定性と最小特定性とが同じ値になった場合に、該値を該エントリにおける特定性として決定する。その結果、匿名性評価装置100は、当該エントリの特定性を一意に決定できる。
また、匿名性評価装置100は、エントリごとに、更新された最大特定性および最小特定性を出力する。その結果、匿名性評価装置100は、パーソナルデータのエントリごとに匿名性を評価できる。
また、匿名性評価装置100は、処理の中止要求を受け付ける。また、匿名性評価装置100は、各エントリについて、最大特定性と最小特定性とが同じ値になった場合に、該値を該エントリにおける特定性として決定する。また、匿名性評価装置100は、中止要求が受け付けられた時点における、各エントリの最大特定性および最小特定性、または、決定された特定性を出力する。その結果、匿名性評価装置100は、匿名性評価処理が中断された場合でも、その時点における各エントリの匿名性を評価できる。
なお、上記実施例では、パーソナルデータの一例として、年齢、性別、職業、学歴および年収区分の各属性を持つデータを用いたが、これに限定されない。例えば、医療機関の診察結果、店舗等における会員登録の情報、および、各種アンケート結果等に対して適用してもよい。
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、設定部132と更新部133とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものではなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
さらに、各装置で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図20は、匿名性評価プログラムを実行するコンピュータの一例を示す図である。
図20に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、データ入力を受け付ける入力装置202と、モニタ203とを有する。また、コンピュータ200は、記憶媒体からプログラム等を読み取る媒体読取装置204と、各種装置と接続するためのインタフェース装置205と、他の情報処理装置等と有線または無線により接続するための通信装置206とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM207と、ハードディスク装置208とを有する。また、各装置201〜208は、バス209に接続される。
ハードディスク装置208には、図1に示した受付部131、設定部132、更新部133および出力制御部134の各処理部と同様の機能を有する匿名性評価プログラムが記憶される。また、ハードディスク装置208には、パーソナルデータ記憶部121、観察容易性記憶部122、特定性範囲リスト記憶部123、および、匿名性評価プログラムを実現するための各種データが記憶される。入力装置202は、例えば、コンピュータ200のユーザから操作情報等の各種情報の入力を受け付ける。モニタ203は、例えば、コンピュータ200のユーザに対して出力画面等の各種画面を表示する。媒体読取装置204は、記憶媒体からパーソナルデータおよび観察容易性情報を読み取る。インタフェース装置205は、例えば印刷装置等が接続される。通信装置206は、例えば、図示しないネットワークと接続され、他の情報処理装置と各種情報をやりとりする。
CPU201は、ハードディスク装置208に記憶された各プログラムを読み出して、RAM207に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ200を図1に示した受付部131、設定部132、更新部133および出力制御部134として機能させることができる。
なお、上記の匿名性評価プログラムは、必ずしもハードディスク装置208に記憶されている必要はない。例えば、コンピュータ200が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ200が読み出して実行するようにしてもよい。コンピュータ200が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USBメモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこの匿名性評価プログラムを記憶させておき、コンピュータ200がこれらから匿名性評価プログラムを読み出して実行するようにしてもよい。