(58)【調査した分野】(Int.Cl.,DB名)
複数のオブジェクトのそれぞれについて、複数の属性の属性値を対応付けて含んでいるデータにおける前記複数の属性から、属性値の入替の対象となる入替属性を決定する決定手段と、
前記データの有用性の指標である有用性指標と、属性値の入替の際の制約である入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う入替手段と、
を有する情報処理装置。
前記入替手段は、前記決定手段により決定された前記入替属性の属性値の入替前の前記データから抽出される特徴量と前記入替属性の属性値の入替後の前記データから抽出される前記特徴量とに基づいて取得される前記有用性指標と、前記入替制約と、に基づいて、前記データにおける前記入替属性の属性値の入替を行う請求項1記載の情報処理装置。
前記入替手段は、前記有用性指標と、前記決定手段により決定された前記入替属性の属性値の入替前の前記データと、前記入替属性の属性値の入替後の前記データと、の距離に関する制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項1乃至4何れか1項記載の情報処理装置。
前記入替手段は、前記有用性指標と、前記距離である前記データにおける前記決定手段により決定された前記入替属性の属性値の入替前後において入替が行われなかった属性値の数に関する制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項5記載の情報処理装置。
前記入替手段は、前記有用性指標と、前記距離である前記データにおける前記決定手段により決定された前記入替属性の属性値の入替において属性値の入替操作が行われた回数の最小値に関する制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項5記載の情報処理装置。
前記入替手段は、前記有用性指標と、異なるグループに属する属性値の間で入替を行う制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項1乃至4何れか1項記載の情報処理装置。
前記入替手段は、前記入替制約を制約条件とし、最適化手法を用いて、目的関数である前記有用性指標の値が最小化される前記データにおける前記決定手段により決定された前記入替属性の属性値の入替パターンを特定し、特定した前記入替パターンに基づいて、前記データにおける前記入替属性の属性値の入替を行う請求項1乃至8何れか1項記載の情報処理装置。
前記入替手段は、前記有用性指標と、前記入替制約に応じて取得されるペナルティ値と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項1乃至4何れか1項記載の情報処理装置。
前記入替手段は、更に、前記入替手段により前記入替属性の属性値の入替が行われた前記データに対して行われた評価の結果に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替をやり直す請求項1乃至10何れか1項記載の情報処理装置。
前記入替手段は、前記入替手段により前記入替属性の属性値の入替が行われた前記データに対して行われた前記評価の結果に基づいて、前記入替制約を更新し、前記有用性指標と、更新した前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行うことで、前記データにおける前記入替属性の属性値の入替をやり直す請求項11記載の情報処理装置。
【発明を実施するための形態】
【0008】
以下、本発明の実施形態について図面に基づいて説明する。
<実施形態1>
(シャッフルによる匿名化)
人物や組織等の複数のオブジェクト毎に複数の属性の属性値を含むデータの匿名化の手法に、シャッフルという手法がある。シャッフルとは、対象データの入替対象となる属性についての属性値をランダムに入替る手法である。これにより、情報がどのオブジェクトのものかの特定を難しくできる。
ここで、ある属性について、複数のグループにグループ分けすることとする。同じグループに属するオブジェクト同士の間で、入替対象となる属性の属性値をランダムに入替るとする。この場合、そのグループにおける属性値の統計量は、入替に影響されず、データの有用性を維持できる。統計量とは、データの統計学的な特徴を示す数値である。統計量には、平均値、分散値、最大値、最小値、中央値、最頻値、標準偏差等がある。
【0009】
図1、2は、シャッフルにおける同じグループ内での属性値の入替の一例を説明する図である。
図1のテーブルは、ID、性別、住所、疾病の情報が個人毎に含まれているデータを示すテーブルである。ここで、性別の属性の属性値が男性であるグループ(男性グループ)と、性別の属性の属性値が女性であるグループ(女性グループ)とが設定されているとする。
図1のテーブルにおける疾病の属性の属性値を、男性グループに属するオブジェクト同士で入替が行われ、更に、女性グループに属するオブジェクト同士で入替が行われたとする。
図2のテーブルは、
図1のテーブルにおける疾病の属性の属性値が入替られた後のテーブルである。男性グループ、女性グループ内における疾病に関する統計量は、属性値の入替の影響を受けないことがわかる。このように、属性値の入替対象の属性以外のある属性について、グループを設定し、設定されたグループに属するオブジェクト間で、入替対象の属性の属性値の入替を行うことで、設定されたグループ内におけるデータの有用性を維持させることができる。
【0010】
しかし、グループが設定された属性以外の属性(例えば住所)毎の疾病の統計量は、属性値の入替の影響を受けてしまい、データの有用性が低下してしまう。また、性別と住所との組について、グループを設定すれば、住所毎の疾病の統計量についても、入替の影響を受けず、データの有用性を向上させることができる。しかし、性別と住所との組について設定されたグループに属するオブジェクトの数は、性別と住所との何れか1つについて設定されたグループに属するオブジェクトの数よりも少なくなってしまう。そのため、属性値の十分な入替ができず、安全性は、低下してしまう。更に、グループを設定する対象の属性を増やすと、グループに属するオブジェクトの数が減少していき、属性値の入替が困難になる。
そこで、本実施形態では、情報処理装置300は、複数の属性が対応付けて含まれているデータについて、以下のような処理を行うことで、データの有用性と安全性とを両立させて、匿名化を行う。即ち、情報処理装置300は、入替対象の属性の属性値の入替パターンを生成し、生成した入替パターン毎に、安全性を維持するための制約を満たすか否かを判定し、有用性を示す指標を取得する。そして、情報処理装置300は、制約を満たす入替パターンについて取得した有用性を示す指標に基づいて、最適な入替パターンを選択し、選択した入替パターンにしたがって、オブジェクト間で、入替対象の属性の属性値を入替る処理を行う。複数のオブジェクトのそれぞれについて、複数の属性の属性値を対応付けて含むデータの一例としては、行毎に、その行に対応するオブジェクトの複数の属性の属性値を含むテーブルや表がある。その他の例として、ドキュメント指向DB等のスキーマレスなDBにデータを含ませることとしてもよい。
【0011】
(情報処理装置のハードウェア構成)
図3は、情報処理装置300のハードウェア構成の一例を示す図である。情報処理装置300は、パーソナルコンピュータ(PC)、サーバ装置、タブレット装置等の情報処理装置である。
情報処理装置300は、CPU301、主記憶装置302、補助記憶装置303、入力I/F304、出力I/F305、ネットワークI/F306を含む。各要素は、システムバス307を介して、通信可能に相互に接続されている。
CPU301は、情報処理装置300を制御する中央演算装置である。また、主記憶装置302は、CPU301のワークエリア、各種情報の一時的な記憶領域等として機能するRandom Access Memory(RAM)等の記憶装置である。補助記憶装置303は、各種プログラム、各種設定情報、各種閾値、匿名化対象のデータ等を記憶するハードディスクドライブ(HDD)等の記録媒体で構成される記憶装置である。また、補助記憶装置303は、データの有用性の指標である有用性指標の情報、データの安全性の指標である安全性指標の情報、属性値の入替の際の制約を示す情報等を記憶する。補助記憶装置303は、例えば、Read Only Memory(ROM)、ソリッドステートドライブ(SSD)等で構成されてもよい。
【0012】
入力I/F304は、マウス、キーボード、タッチパネル等の入力装置との接続に利用されるインターフェースである。CPU301は、入力I/F304を介して、ユーザによる入力装置を介した入力を受付ける。出力I/F305は、モニタ、ディスプレイ、タッチパネルの表示画面等の出力装置との接続に利用されるインターフェースである。CPU301は、出力I/F305を介して、出力装置に対して、表示する画面の情報等を出力する。ネットワークI/F306は、ネットワークを介した外部の装置との通信に利用されるインターフェースである。CPU301は、ネットワークI/F306を介して、外部の装置との間で、情報のやり取りを行う。
CPU301が、補助記憶装置303に記憶されたプログラムに基づき処理を実行することで、情報処理装置300の機能及び
図4で後述するフローチャートの処理が実現される。
【0013】
(属性値の入替処理)
図4は、情報処理装置300による属性値の入替処理の一例を示すフローチャートである。
図4を用いて、本実施形態のデータの匿名化の処理について説明する。
S401において、CPU301は、匿名化対象のデータを取得する。CPU301は、例えば、予め補助記憶装置303に記憶された匿名化対象のデータを取得する。また、CPU301は、外部の外付けHDD、外付けUSBメモリ等に記憶された匿名化対象のデータを取得することとしてもよい。また、CPU301は、ネットワークI/F306を介して、外部の装置から送信された匿名化対象のデータを取得することとしてもよい。また、CPU301は、入力I/F304に接続され入力装置を介したユーザの操作に基づいて、匿名化対象のデータの入力を受付けることとしてもよい。以下では、S401で取得された匿名化対象のデータを、対象データとする。
本実施形態では、CPU301は、S401で対象データとして、
図5に示すテーブルのデータを取得することとする。
図5に示すように、対象データの各行には、その行に対応する人物に関する情報が含まれている。対象データは、ID、性別、住所、身長、体重の属性を含む。
CPU301は、S401で取得した
図5に示す対象データの情報を、主記憶装置302に記憶する。CPU301は、対象データの情報を、主記憶装置302から読み取って利用することになる。
【0014】
S402において、CPU301は、S401で取得した対象データに含まれる情報のうち、攻撃者に知られていると仮定される情報を取得する。攻撃者とは、悪用を目的とした情報の読取等、不正の目的での対象データの操作を行いうる者である。攻撃者は、対象データの閲覧を行う閲覧者の一例である。以下では、対象データに含まれる情報のうち、攻撃者に知られていると仮定される情報を、仮定情報とする。CPU301は、例えば、予め補助記憶装置303に記憶された仮定情報を取得する。また、CPU301は、外部の外付けHDD、外付けUSBメモリ等に記憶された仮定情報を取得することとしてもよい。また、CPU301は、ネットワークI/F306を介して、外部の装置から送信された仮定情報を取得することとしてもよい。また、CPU301は、入力I/F304に接続され入力装置を介したユーザの操作に基づいて、仮定情報の入力を受付けることとしてもよい。
仮定情報には、例えば、対象データに含まれる属性のうち、対象データに情報が含まれている各オブジェクトについての属性値が攻撃者に知られていると仮定される属性を示す情報や、対象データに情報が含まれているオブジェクトのうち、攻撃者に知られていると仮定されるオブジェクトの割合を示す情報等がある。本実施形態では、CPU301は、仮定情報として、対象データに含まれる属性のうち、対象データに情報が含まれている各オブジェクトについての属性値が攻撃者に知られている属性の情報を取得する。本実施形態では、攻撃者は、対象データに情報が含まれている各オブジェクトについての身長、体重の属性値を知っているとする。即ち、CPU301は、仮定情報として、身長、体重の属性を示す情報を取得する。また、仮定情報には、これらの属性の情報が攻撃者に知られていると仮定されるオブジェクトの情報を含むこととしてもよい。仮定情報としては、例えば、全てのオブジェクトのうち、オブジェクトA、オブジェクトBについて、身長、体重の属性が攻撃者に知られていると仮定されることを示す情報がある。
【0015】
S403において、CPU301は、対象データに含まれる属性のうち、属性値の入替の対象となる属性を決定する。以下では、属性値の入替の対象となる属性を、入替属性とする。
攻撃者は、各オブジェクトについての身長、体重の属性値を知っているので、対象データの身長、体重の属性の属性値の組み合わせからオブジェクトが一意に定まる場合、身長、体重の属性値から、当該オブジェクトに対応する行を特定できる。即ち、攻撃者は、各オブジェクトの住所、性別、IDの情報を特定できてしまう。そこで、CPU301は、攻撃者が各オブジェクトと対応する属性値を知っている属性に含まれる属性について、属性値の入替を行うことで、攻撃者に対象データの各情報が、どのオブジェクトのデータであるかを特定させないようにできる。
CPU301は、S402で取得した仮定情報が示す身長の属性と、体重の属性と、のそれぞれを入替属性として決定する。また、CPU301は、S402で取得した仮定情報が示す身長の属性と、体重の属性と、の何れか1つを入替属性として決定することとしてもよい。また、CPU301は、S402で取得した仮定情報が示す身長の属性と、体重の属性と、の組を入替属性として決定することとしてもよい。また、CPU301は、S402で取得した仮定情報が示す攻撃者に知られていると仮定されるオブジェクトの割合を示す情報に基づいて、S405の説明で後述する入替制約を決定することとしてもよい。
【0016】
また、CPU301は、入力I/F304に接続され入力装置を介したユーザの操作に基づいて、属性の指定を受け付け、受け付けた属性を、入替属性として決定してもよい。例えば、CPU301は、ユーザから住所の属性が指定された場合、住所の属性を、入替属性として決定してもよい。また、補助記憶装置303等が予め、対象データのどの属性を入替属性とするかを示す情報を設定ファイル等の形式で記憶している場合、CPU301は、補助記憶装置303等から、その情報を取得し、取得した情報が示す属性を、入替属性として決定してもよい。
CPU301は、S403で決定した入替属性の情報を、主記憶装置302等に、
図6に示すテーブルとして記憶する。CPU301は、入替属性の情報を、主記憶装置302から読み取って利用することになる。
本実施形態では、CPU301は、入替属性として、身長と、体重と、を決定したとする。
【0017】
S404において、CPU301は、対象データの有用性を示す指標を決定する。以下では、対象データの有用性を示す指標を、有用性指標とする。CPU301は、例えば、予め補助記憶装置303に記憶された指標を示す情報を取得し、取得した情報が示す指標を、有用性指標として決定する。また、CPU301は、外部の外付けHDD、外付けUSBメモリ等に記憶された指標を示す情報を取得し、取得した情報が示す指標を、有用性指標として決定することとしてもよい。また、CPU301は、ネットワークI/F306を介して、外部の装置から送信された指標を示す情報を取得し、取得した情報が示す指標を、有用性指標として決定することとしてもよい。また、CPU301は、入力I/F304に接続され入力装置を介したユーザの操作に基づいて、有用性指標の入力を受付けることとしてもよい。
CPU301は、S404で決定した有用性指標の情報を、主記憶装置302に記憶する。CPU301は、有用性指標の情報を、主記憶装置302から読み取って利用することになる。
【0018】
有用性指標としては、例えば、対象データから抽出される特徴量と、属性値の入替後の対象データから抽出される同じ特徴量と、の差分がある。この差分である有用性指標は、小さいほど、対象データとのずれが小さいことを示し、属性値の入替後の対象データの有用性が高いことを示す指標である。対象データから抽出される特徴量としては、ある属性について設定された複数のグループそれぞれについての属性値の平均値等の統計量がある。
より具体的には、
図7に示すように、有用性指標には、例えば、対象データから抽出される性別毎の平均身長と、属性値の入替後の対象データから抽出される性別毎の平均身長と、の差分がある。また、有用性指標には、例えば、対象データから抽出される住所毎の平均身長と、属性値の入替後の対象データから抽出される住所毎の平均身長と、の差分がある。また、有用性指標には、例えば、対象データから抽出される性別及び住所毎の平均体重と、属性値の入替後の対象データから抽出される性別及び住所毎の平均体重と、の差分がある。
本実施形態では、CPU301は、S404で
図7に示される指標を、有用性指標として決定したとする。
【0019】
S405において、CPU301は、属性値の入替の際の制約を決定する。以下では、この属性値の入替の際の制約を、入替制約とする。入替制約としては、例えば、属性値の入替の処理の際に守るべき規則、属性値の入替の処理の際にある事項を禁止する規則等の制約がある。また、入替制約には、属性値の入替の際に、ペナルティ値を発生させることとするという制約であってもよい。ペナルティ値とは、対象データの安全性や有用性の指標となる値である。
CPU301は、例えば、予め補助記憶装置303に記憶された制約を示す情報を取得し、取得した情報が示す制約を、入替制約として決定する。また、CPU301は、外部の外付けHDD、外付けUSBメモリ等に記憶された制約を示す情報を取得し、取得した情報が示す制約を、入替制約として決定することとしてもよい。また、CPU301は、ネットワークI/F306を介して、外部の装置から送信された制約を示す情報を取得し、取得した情報が示す制約を、入替制約として決定することとしてもよい。また、CPU301は、入力I/F304に接続され入力装置を介したユーザの操作に基づいて、入替制約の入力を受付けることとしてもよい。
【0020】
入替制約には、例えば、属性値の入替前の対象データと属性値の入替後の対象データとの間の距離に関する制約がある。属性値の入替前後の対象データ間の距離とは、入替前後の対象データ同士の違いがどの程度かを示す指標である。この距離の一例としては、属性値の入替を実行するのに要する、任意の2つのオブジェク間での入替操作の回数の最小値がある。入替操作とは、ある属性値と、別の属性値と、を入替る操作のことである。また、この距離の一例としては、属性値の入替において入替が行われなかった属性値の数、属性値の入替において入替が行われた属性値の数がある。また、この距離の一例としては、属性値の入替において入替が行われなかった属性値の数の属性値の総数に対する割合、属性値の入替において入替が行われた属性値の数の属性値の総数に対する割合等がある。
例えば、入替制約には、入替対象の属性の属性値のうち入替のない属性値が出ないようにする(入替のない属性値の数を0にする)ことを示す制約、入替対象の属性の属性値のうち入替のない属性値が設定された閾値(例えば50%等)以上出ないようにすることを示す制約がある。また、入替制約には、入替属性の属性値の入替において行われる属性値の入替操作の最低回数が設定された閾値(例えば、4回)以上にすることを示す制約がある。
【0021】
また、入替制約には、例えば、異なるグループに属するオブジェクトの間で属性値の入替を行うことを示す制約がある。このグループとは、ある共通の特徴を有するオブジェクトの集まりを示す。例えば、性別の属性を指標として、共通の属性値を持つグループ(男性グループ、女性グループ)が設定される。また、複数の属性を指標として、グループが設定されることとしてもよい。例えば、性別と住所との属性値の組が同一のグループ(例えば、(東京、男性)、(東京、女性)、(千葉、男性)、(千葉、女性)のグループ等)が設定されることとしてもよい。また、異なる指標で設定されたグループが複数設定されることとしてもよい。例えば、性別の属性の属性値が共通の値を有するグループと、性別と住所との属性値の組が同一のグループと、が設定されることとしてもよい。また、有用性指標に基づいてグループを設定してもよい。より具体的には、有用性指標の算出に用いられる特徴量に関する属性のうち、複数のグループに分類可能な属性(例えば「性別」)に基づいてグループが設定されることとしてもよい。
また、入替制約には、入替対象の属性の属性値のうち設定された閾値(例えば50%等)以上の属性値について、異なるグループに属するオブジェクトの間で属性値の入替を行うことを示す制約がある。また、入替制約には、同じグループに属するオブジェクトの間で属性値の入替操作が行われる属性値が、入替対象の属性の属性値のうち設定された閾値(例えば50%等)未満にすることを示す制約がある。なお、これらの閾値は仮定情報が示す攻撃者に対応する属性値が知られていると仮定されるオブジェクトの割合を示す情報に基づいて設定されることとしてもよい。このように、CPU301は、仮定情報に基づいて、これらの閾値を決定することで、入替制約を決定することとしてもよい。
また、入替制約には、各オブジェクトについて、入替対象のどの属性の属性値についても入替が発生しないことを禁止する制約等がある。
【0022】
このような、入替が行われる属性値の数を増加させるための入替制約や、異なるグループに属するオブジェクトの間で入替が行われる属性値の数を増加させるための入替制約は、データの安全性を担保する制約の一例である。入替制約は、データの有用性を担保する制約であってもよい。データの有用性を担保する入替制約としては、例えば、入替が行われる属性値の数を減少させるための入替制約や、異なるグループに属するオブジェクトの間で入替が行われる属性値の数を減少させるための入替制約がある。
また、入替制約には、属性値の入替前の対象データと属性値の入替後の対象データとの間の距離に応じた安全性の指標であるペナルティ値を発生させることを示す制約がある。例えば、入替制約には、入替対象の属性の属性値のうち入替が行われなかった属性値の数に応じたペナルティ値を発生させることを示す制約がある。また、これらのうちの複数の制約を、入替制約としてもよい。以下では、安全性の指標であるペナルティ値を、安全性指標とする。
【0023】
安全性指標としては、例えば、入替属性の属性値のうち入替操作が行われない属性値の数、入替属性の属性値のうち入替操作が行われる属性値の数がある。また、安全性指標としては、例えば、入替対象の属性の属性値のうち入替操作が行われない属性値の数のその属性の属性値の総数に対する割合、入替対象の属性の属性値のうち入替操作が行われる属性値の数のその属性の属性値の総数に対する割合がある。また、安全性指標としては、属性値の入替操作の総回数、入替属性の属性値のうち1対1の入替操作が行われる属性値の数、設定されたグループのうち同じグループ内で入替操作が行われる属性値の数、設定されたグループのうち異なるグループ間で入替操作が行われる属性値の数等がある。また、安全性指標としては、設定されたグループのうち同じグループ内で入替操作が行われる属性値の数の属性値の総数に対する割合、設定されたグループのうち異なるグループ間で入替操作が行われる属性値の数の属性値の総数に対する割合等がある。また、これらのものに予め設定された係数を乗じる等して導出される値を、安全性指標としてもよい。また、これらのもののうちの複数を、安全性指標としてもよい。
【0024】
CPU301は、入替制約により、属性値の入替の処理の際に、ペナルティ値として安全性指標を取得する場合、S409で後述する有用性指標と、取得した安全性指標と、に基づいて、複数の入替パターンの中から最適な入替パターンを決定することになる。
属性値の入替操作が多く行われる程、対象データの各行がどのオブジェクトに対応するかを特定できにくくなる。そこで、CPU301は、属性値の入替操作が最低何回行われたかを示す回数を安全性指標として、安全性指標を適切な値に制限することで、対象データの各行がどのオブジェクトに対応するかを特定できにくくし、安全性を向上できる。
属性値の1対1の入替が行われた行は、そうでない属性値の入替が行われた行に対して、対応するオブジェクトを特定されやすい。そこで、CPU301は、属性値の1対1の入替が行われた属性値の数を安全性指標として、安全性指標を適切な値に制限することで、対象データの各行がどのオブジェクトに対応するかを特定できにくくし、安全性を向上できる。
対象データに含まれる属性について設定された異なるグループ間(例えば、男性グループと女性グループとの間等)で行われる属性値の入替が多い程、対象データの各行がどのオブジェクトに対応するかを特定できにくくなる。そこで、CPU301は、同じグループ間で入替が行われた属性値の数を安全性指標として、安全性指標を適切な値に制限することで、対象データの各行がどのオブジェクトに対応するかを特定できにくくし、安全性を向上できる。
本実施形態では、S405で、入替対象の属性の属性値のうち入替が行われない属性値の数のその属性の属性値の総数に対する割合が安全性指標として決定されたとする。
【0025】
S406において、CPU301は、S403で決定した入替属性から1つを選択する。以下では、S406で選択された属性を、選択属性とする。CPU301は、選択属性として、選択した属性について、選択属性として選択済みであることを示す履歴情報を、主記憶装置302に記憶する。CPU301は、この履歴情報を参照することで、まだ未選択な入替属性を特定できる。本実施形態では、CPU301は、初めてS406の処理を行う場合、選択属性として、身長の属性を選択したとする。
S407において、CPU301は、S401で取得した対象データについて、選択属性の属性値の入替パターンを生成する。本実施形態では、CPU301は、選択属性の属性値の全ての入替パターンを生成する。
【0026】
図8は、入替パターンの一例を示す図である。
図8を用いて、S407で生成される入替パターンについて説明する。
図8のテーブルは、属性値の入替の対応関係を示す情報である入替パターンを、表形式で表現したものである。
図8の例では、テーブルの行の項目(1〜8)は、入替対象の属性値の入替前のIDを示す。また、テーブルの列の項目(1〜8)は、入替対象の属性値の入替後のIDを示す。
テーブル中の1は、属性値の入替のそれぞれを示す。テーブル中の1に対応する行が示すIDに対応する属性値は、その1に対応する列が示すIDに対応する属性値へ変更されることになる。入替パターンの各行、各列の和は、それぞれ1となる。
図8の例では、元々のIDが3、4、7、8の属性値については、変更後のIDもそれぞれ3、4、7、8となっており、入替が行われない。
図8の例では、ID1の属性値とID5の属性値との間で、ID2の属性値とID6の属性値との間で、それぞれ、1対1の入替が行われることになる。
図8の例では、ID1の属性値とID5の属性値との間で最低1回、ID2の属性値とID6の属性値との間で最低1回、最低でも計2回の属性値の入替操作が行われたことが示される。また、属性値の入替が行われた属性値の数は、ID1、ID2、ID5、ID6の4個となる。また、属性値の入替が行われなかった属性値の数は、ID3、ID4、ID7、ID8の4個となる。
【0027】
S408において、CPU301は、S407で生成した入替パターンから1つを選択する。以下では、S408で選択された入替パターンを選択パターンとする。
S409において、CPU301は、選択パターンについて、S404で決定した有用性指標の値を取得する。
図9は、
図8の入替パターンが示す属性値の入替が行われた対象データの一例を示す図である。
図9を見ると、
図5のテーブルと比べて、身長の属性の属性値について、ID1の属性値とID5の属性値との間で入替が行われたことが分かる。また、身長の属性の属性値について、ID2の属性値とID6の属性値との間で入替が行われたことも分かる。
CPU301は、選択パターンが示す選択属性の属性値の入替が行われた対象データに基づいて、有用性指標を取得する。選択属性は、身長であるとする。また、身長に対する有用性指標は、以下の有用性指標(1)と、有用性指標(2)であるとする。有用性指標(1)は、対象データから抽出される性別毎の平均身長と、属性値の入替後の対象データから抽出される性別毎の平均身長と、の差分である。また、有用性指標(2)は、対象データから抽出される住所毎の平均身長と、属性値の入替後の対象データから抽出される住所毎の平均身長と、の差分である。
【0028】
図5が示す身長の属性値の入替前の対象データにおける男性グループの平均身長は、(175+160+180+170)/4=171.25である。
図9が示す身長の属性値の入替後の対象データにおける男性グループの平均身長は、(170+165+180+170)/4=171.25である。
図5が示す身長の属性値の入替前の対象データにおける女性グループの平均身長は、(170+165+150+155)/4=160である。
図9が示す身長の属性値の入替後の対象データにおける女性グループの平均身長は、(175+160+150+155)/4=160である。
従って、有用性指標(1)は、|171.25―171.25|+|160−160|=0である。
【0029】
図5が示す身長の属性値の入替前の対象データにおける東京グループ(住所が東京のグループ)の平均身長は、(175+180+165+155)/4=168.75である。
図9が示す身長の属性値の入替後の対象データにおける東京グループの平均身長は、(170+180+160+155)/4=166.25である。
図5が示す身長の属性値の入替前の対象データにおける千葉グループ(住所が千葉のグループ)の平均身長は、(170+170)/2=170である。
図9が示す身長の属性値の入替後の対象データにおける千葉グループの平均身長は、(170+175)/2=172.5である。
図5が示す身長の属性値の入替前の対象データにおける埼玉グループ(住所が埼玉のグループ)の平均身長は、(160+150)/2=155である。
図9が示す身長の属性値の入替後の対象データにおける埼玉グループの平均身長は、(165+150)/2=157.5である。
従って、有用性指標(2)は、|166.25―168.75|+|172.5−170|+|157.5−155|=7.5である。
そして、CPU301は、例えば、有用性指標(1)と有用性指標(2)との合計を、選択パターンに対する最終的な有用性指標として算出する。
【0030】
本実施形態では、CPU301は、S409で、更に、S405で決定された入替制約を満たすか否かを判定する。
本実施形態では、S405で決定された入替制約は、入替対象の属性の属性値のうち、入替が行われない属性値の数を、属性値全体の50%以下にするという制約であるとする。
CPU301は、
図8の入替パターンについて、入替制約を満たすか否かを判定する。
図8、9が示すように、ID1〜8が示す全てのオブジェクトのうち、身長の属性値の入替が行われていないオブジェクトは、IDが3、4、7、8の4つのオブジェクトである。オブジェクトの数は、8なので、属性値の入替が行われなかった属性値は、全体の4/8*100=50(%)となる。そのため、CPU301は、入替が行われなかった属性値の数が属性値全体の50%以下となるため、入替制約を満たすと判定する。
図4の例では、性別の属性についてグループ(男性グループ、女性グループ)が設定されているとする。ここで、
図8の入替パターンにおいて、ID1の身長の属性値とID5の身長の属性値とが入替られることが示されている。ここで、ID1のオブジェクトは、男性グループに属し、ID5のオブジェクトは女性グループに属している。そのため、ID1とID5との間での身長の属性値の入替は、異なるグループ間で行われる属性値の入替である。同様に、ID2とID6との間での身長の属性値の入替は、異なるグループ間で行われる属性値の入替である。
【0031】
S410において、CPU301は、S407で生成した入替パターン全てを、S408で選択したか否かを判定する。CPU301は、S407で生成した入替パターン全てを、S408で選択したと判定した場合、S411の処理に進み、S408で未選択の入替パターンがあると判定した場合、S408の処理に進む。
S411において、CPU301は、S407で生成した入替パターンそれぞれについてS409で取得した有用性指標の値と、S409での入替制約を満たすか否かの判定結果と、に基づいて、S407で生成した入替パターンから、最適な入替パターンを選択する。CPU301は、例えば、入替制約を満たすと判定した入替パターンについて取得した有用性指標を特定する。この入替制約を満たすと判定された入替パターンは、中間候補の一例である。そして、CPU301は、特定した有用性指標のうち、値が最も小さいものに対応する入替パターンを、最適な入替パターンとして選択する。しかし、有用性指標が、有用性が高い程高い値をとる指標である場合、CPU301は、取得した有用性指標の値が最も大きいものに対応する入替パターンを、最適な入替パターンとして選択してもよい。
【0032】
本実施形態では、CPU301は、S407で、全ての入替パターンを生成することとした。しかし、CPU301は、S407で、入替制約を満たす入替パターンのみを生成することとしてもよい。
また、本実施形態では、CPU301は、S409で、各入替パターンについて、入替制約を満たすか否かを判定した。しかし、CPU301は、S408で選択された入替パターンについて、入替制約を満たす場合のみ、S409で、有用性指標を取得することとしてもよい。
このような場合、S411で、CPU301は、S409で取得された有用性指標のうち、最小のものに対応する入替パターンを選択することで、最適な入替パターンを選択する。
また、CPU301は、入替制約が安全性指標を発生させる制約である場合、S409で、入替パターンの有用性指標の値のみでなく、入替パターンの安全性指標(例えば、入替が行われなかった属性値の数)も取得することとしてもよい。その場合、CPU301は、S411で、有用性指標の値と、安全性指標の値と、に基づいて、最適な入替パターンを決定することとしてもよい。CPU301は、例えば、安全性指標の値が設定された閾値以下の入替パターンのうち、有用性指標の値が最小のものを、最適な入替パターンとして決定することとしてもよい。また、CPU301は、例えば、有用性指標の値が設定された閾値以下の入替パターンのうち、安全性指標の値が最小のものを、最適な入替パターンとして決定することとしてもよい。また、CPU301は、例えば、安全性指標の値に所定の重み付けを行った上で有用性指標の値に加えた値が最小のものを、最適な入替パターンとして決定することとしてもよい。
また、CPU301は、S407で、入替制約を制約条件とし、目的関数である有用性指標の値が最小化される入替パターンを、公知の最適化手法を用いて選択することとしてもよい。公知の最適化手法としては、例えば、整数計画問題を解くソフトウェアである整数計画ソルバーがある。その場合、入替パターンについて、各オブジェクトに対する入替フラグを設定し、入替フラグに基づき、入替制約を満たすか否かを判定するようにしてもよい。
図8のテーブルは、こうした入替フラグの設定の一例である。入替フラグにより、公知の最適化手法を用いて、効率的に最適な入替パターンを決定することができる。
【0033】
S412において、CPU301は、S411で決定された最適な入替パターンに従って、S401で取得した対象データのS406で選択した入替属性の属性値の入替を行う。
S413において、CPU301は、S403で決定した入替属性の全てを、S406で選択したか否かを判定する。CPU301は、S403で決定した入替属性の全てを、S406で選択したと判定した場合、S414の処理に進み、S403で決定した入替属性のうち、S406で選択していないものがあると判定した場合、S406の処理に進む。
【0034】
本実施形態では、最初のS407〜S412の処理によって、身長の属性についての属性値の入替が行われる。そして、再度のS406の処理で、体重の属性が選択属性として選択され、再度のS407〜S412の処理によって、体重の属性についての属性値の入替が行われる。
最初のS411の処理で、
図8の入替パターンが身長の属性値の最適な入替パターンとして選択されたとする。
S405で決定された入替制約に含まれる制約に、入替属性全てについて属性値の入替がないオブジェクトの数を0にするという制約があったとする。
【0035】
この場合、CPU301は、体重の属性についてのS409の処理で、以下のような処理を行う。CPU301は、身長の属性値の入替パターンである
図8の入替パターンにおいて、入替が行われなかったオブジェクトのIDを特定する。CPU301は、選択パターンが示す入替に、特定した全てのIDに対応する属性値の入替が含まれるか否かを判定する。そして、CPU301は、含まれると判定した場合、他の入替制約に含まれる他の制約を満たせば、選択パターンが入替制約を満たすと判定する。また、CPU301は、含まれないと判定した場合、選択パターンが入替制約を満たさないと判定する。これにより、CPU301は、全ての入替属性(身長の属性、体重の属性)で入替が行われない属性値が生じることを防止し、匿名化後の対象データの安全性を向上させることができる。
図10は、入替パターンの一例である。
図10の例では、
図8の入替パターンでは入替操作が行われなかった属性値について、入替操作が行われることが分かる。
また、
図10の入替パターンのID1〜3の属性値間では、1対1の入替ではない入替操作が行われていることが分かる。ID1〜3の間で、例えば、ID1の属性値とID2の属性値との間で1回、属性値の入替操作が行われ、その後、ID1の属性値とID3の属性値との間で1回、最低でも計2回の属性値の入替操作が行われる。また、ID4の属性値とID7の属性値との間で、ID4の属性値とID7の属性値との間で、それぞれ1対1の入替が行われている。そのため、ID4の属性値とID7の属性値との間で属性値の入替操作が最低1回行われている。また、ID5の属性値とID8の属性値との間で属性値の入替操作が最低1回行われている。また、ID6の属性値については、入替操作が行われていない。よって、
図10の例では、最低でも計4回の属性値の入替操作が行われたことが示されている。また、属性値の入替が行われた属性値の数は、ID1、ID2、ID3、ID4、ID5、ID7、ID8、の7個となる。また、属性値の入替が行われなかった属性値の数は、ID6の1個となる。
【0036】
S414において、CPU301は、S406〜S413の処理による属性値の入替結果についての評価の結果を取得する。本実施形態では、S406〜S413の処理による属性値の入替が行われた対象データに対して、対象データの各行がどのオブジェクトに対応するかを推定するテストが行われる。即ち、入替結果に対して、安全性のテストが行われる。
例えば、情報処理装置300に対して、対象データの各行の属性値に基づいて、その行がどのオブジェクトに対応するかを推定するアプリケーションである攻撃アプリケーションのプログラムがインストールされているとする。この場合、攻撃アプリケーションは、属性値の入替が行われた対象データに対して、各行がどのオブジェクトに対応するかを推定する処理を行う。そして、CPU301は、攻撃アプリケーションによる推定結果を取得する。CPU301は、攻撃アプリケーションにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値未満であれば、評価の結果を合格とする。また、CPU301は、攻撃アプリケーションにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値以上であれば、評価の結果を不合格とする。
本実施形態では、攻撃アプリケーションのプログラムは、情報処理装置300の補助記憶装置303にインストールされていることとするが、外部の装置にインストールされていることとしてもよい。その場合、外部の装置に含まれる攻撃アプリケーションは、ネットワークを介して、情報処理装置300から対象データの情報を取得して、取得した対象データに対して、推定処理を行う。
【0037】
また、テストユーザが、S406〜S413の処理により属性値の入替が行われた対象データに対して、対象データの各行がどのオブジェクトに対応するかを推定するテストを行った場合、CPU301は、以下のようにしてもよい。即ち、CPU301は、入力I/F304に接続されている入力装置を介したユーザの操作に基づいて、テストユーザにより行われた評価の結果を示す情報の入力を受付けることで、評価の結果を示す情報を取得する。CPU301は、例えば、対象データの各行のうち、どれだけの行が、正しいオブジェクトに対応する行であると推定されたかを示す情報の入力を受付ける。CPU301は、テストユーザにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値未満であれば、評価の結果を合格とする。また、CPU301は、テストユーザにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値以上であれば、評価の結果を不合格とする。
【0038】
S415において、CPU301は、S404で取得した評価の結果が合格であるか否かを判定する。CPU301は、S404で取得した評価の結果が合格であると判定した場合、
図4の処理を終了し、S404で取得した評価の結果が合格でないと判定した場合、S416の処理に進む。
S416において、CPU301は、入替制約を更新する。CPU301は、例えば、S414で安全性の評価が行われていた場合、安全性がまだ不足しているため、より安全性を向上させるように、入替制約を更新する。CPU301は、例えば、元々の入替制約が、属性値の入替対象の属性の属性値のうち入替が行われない属性値の数を属性値全体の50%以下にすることを示す制約である場合、以下のように、入替制約を更新する。CPU301は、例えば、属性値の入替対象の属性の属性値のうち入替が行われない属性値の数を属性値全体の0%以下にする制約として、更新する。また、CPU301は、例えば、入替が行われない属性値の数が属性値全体の40%(又は、30%等の50%よりも小さい値)以下にすることを示す制約として、更新してもよい。
このようにすることで、CPU301は、入替制約を更新し、再度、属性値の入替を行うことで、属性値の入替後の対象データの安全性を適切な水準に維持できる。
S417において、CPU301は、S406での選択の履歴を示す履歴情報をクリアする。これにより、S403で決定された入替属性それぞれについて、S406で未選択の状態となる。
【0039】
(効果)
以上、本実施形態では、情報処理装置300は、匿名化の対象データに対して、データの有用性の指標である有用性指標と、属性値の入替の際の入替制約と、に基づいて、属性値の入替対象の属性の属性値の入替を行うこととした。より具体的には、情報処理装置300は、属性値の入替パターンの中で、入替制約を満たしつつ、有用性指標の値が最適なものを選択し、選択した入替パターンに従って、属性値の入替を行った。これにより、情報処理装置300は、匿名化後の対象データについて、有用性と安全性とを両立させることができる。
また、情報処理装置300は、対象データのうち、各オブジェクトに対応する属性値が攻撃者に知られていると仮定される属性から、入替属性を選択することとした。これにより、情報処理装置300は、攻撃者が対象データの各行がどのオブジェクトに対応するかを特定することを阻害することができる。
また、情報処理装置300は、異なるグループ間で、属性値の入替対象の属性の属性値の入替を行うことで以下の効果を奏することができる。即ち、情報処理装置300は、データ分析の用途に応じて有用性指標が決定される場合に、その用途から攻撃者に入替を推定されることを防ぐことができる。例えば、身体データを性別、年齢毎に分析するために、性別、年齢毎の身体データの特徴量をなるべく維持するよう匿名化が行われる場合、同一の性別、年齢の間で入替を行うのでは攻撃者にオブジェクトの対応関係を推定されやすくなる。そこで、情報処理装置300は、異なるグループに属するオブジェクトの間で属性値の入替を行うことでより安全性を高めることができる。
【0040】
(変形例)
本実施形態では、CPU301は、S414で安全性の評価の結果を取得することとしたが、有用性の評価の結果を取得することとしてもよい。その場合、CPU301は、評価の結果に基づいて、S416で有用性指標を変更したり、有用性指標に関する入替制約を新たに加えることを決定したりすることとしてもよい。有用性の評価としては、例えば、属性値の入替前の対象データと、入替後の対象データと、について、各属性の統計量を算出し、入替前の対象データについて算出した統計量と、入替後の対象データについて算出した統計量と、の差分を評価する方法がある。
この場合、CPU301は、例えば、この差分が設定された閾値未満ならば、属性値の入替後の対象データの有用性の評価の結果を合格とする。また、CPU301は、例えば、この差分が設定された閾値以上ならば、属性値の入替後の対象データの有用性の評価の結果を不合格とする。
そして、CPU301は、評価結果が不合格であれば、例えば、有用性指標を変更し、再度、属性値の入替をやり直す。また、CPU301は、評価結果が不合格であれば、例えば、安全性指標や入替制約を変更し、再度、属性値の入替をやり直すこととしてもよい。
【0041】
本実施形態では、CPU301は、単一のテーブルである対象データの入替属性の属性値の入替を行うことで、匿名化を行うこととした。しかし、CPU301は、互いに共通の属性を持ち、その共通の属性に基づいて関連しあう複数のテーブルで構成される対象データについても、入替属性の属性値の入替を行うことで、匿名化を行うことができる。互いに共通の属性を持ち、その共通の属性に基づいて関連しあう複数のテーブルで構成されるデータには、リレーショナルデータベースにおけるリレーションが設定されている複数のテーブルがある。
図11は、互いに共通の属性を持ち、その共通の属性に基づいて関連しあう複数のテーブルで構成される対象データの一例を示す図である。以下では、
図11の対象データについて、属性値の入替により匿名化する際の処理を説明する。
図11の左のテーブルを、マスターデータ、右のテーブルを、リレーションデータとする。
図11のリレーションデータは、各顧客の購買履歴を示す情報である。攻撃者が、各オブジェクトの購買履歴の情報を保有しているとする。この場合、CPU301は、S402で、仮定情報として、年月日の属性と製品の属性との組の情報を取得する。そして、CPU301は、S403で、仮定情報に含まれる属性(年月日、及び製品)を含むリレーションデータの顧客IDを入替属性として決定する。
【0042】
各顧客の購買履歴の情報は、マスターデータの顧客IDに基づいて参照される。そのため、リレーションデータにおける顧客IDの属性値の入替を行うことで、マスターデータの顧客IDから、各顧客に対応する購買履歴の情報(年月日、及び製品の属性値)を正確に特定することが困難とすることができる。このように、CPU301は、リレーションデータにおける顧客IDの属性値の入替を行うことで、購買履歴の情報(年月日、及び製品の属性値)について、属性値の入替を行う必要がなくなり、購買履歴の情報について属性値の入替を行う場合に比べて処理の負担を軽減できる。
また、属性値の入替がリレーションデータのみで局所的に行われ、マスターデータや他のリレーションデータに対して変更が生じないため、対象データの有用性が低下しにくい。即ち、また、CPU301は、リレーションデータにおける属性の属性値の入替を行うことで、対象データの有用性の低下を防止できる。
【0043】
リレーションデータの顧客IDの属性値の入替の手法には、例えば、以下の第1の手法、第2の手法がある。
第1の手法は、顧客IDの値に基づいて、属性値の入替を行う方法である。
図12は、第1の手法によりリレーションデータの顧客IDの属性値の入替が行われた対象データの一例を示す図である。
図12の例は、顧客IDについて、(1−>3)、(2−>1)、(3−>2)という入替が行われた結果を示す。元々の顧客ID1の行が、顧客ID3の行となっており、顧客ID2の行が、顧客ID1の行となっており、顧客ID3の行が、顧客ID2の行となっている。
【0044】
第2の手法は、リレーションデータのテーブルの各行にそれぞれ異なる値であるIDを付加し、付加したIDに基づいて、顧客IDの属性値の入替を行う手法である。
図11の履歴IDは、リレーションデータに付加されたIDの一例である。
図13は、第2の手法によりリレーションデータの顧客IDの属性値の入替が行われた対象データの一例を示す図である。
図13の例は、履歴IDの属性値について、(1−>4)、(2−>3)、(3−>2)、(4−>1)という入替が行われ、それに併せて、各履歴IDに対応する顧客IDの入替が行われた結果を示す。
図11の例では、履歴ID1、2は、顧客ID1に対応し、履歴ID3は、顧客ID2に対応し、履歴ID4は、顧客ID3に対応する。そのため、顧客IDは、上から、3、2、1、1となる。
第2の手法においては、
図13に示すように、顧客ID1の顧客が2つの商品を買ったという情報が維持されることになる。CPU301は、匿名化後の対象データに残したい情報に応じて、属性値の入替の手法を使い分けることとしてもよい。こうすることで、CPU301は、より匿名化後の対象データの有用性を向上させることができる。
図11〜13の例では、対象データのマスターデータについては、匿名化されていない。しかし、CPU301は、マスターデータについても適宜匿名化してもよい。
また、対象データが、3つ以上のリレーションが設定されているテーブルである場合でも、CPU301は、各テーブル間のリレーションに基づき、属性値の入替を行うことができる。
【0045】
情報処理装置300は、本実施形態で説明した属性値の入替による匿名化手法と、他の匿名化手法(属性値の変換やレコードの追加・削除等)と、を組み合わせた匿名化を行うことができる。情報処理装置300は、本実施形態で説明したように、対象データについて、属性値の入替を行った後、又は前に、他の匿名化手法を適用することとしてもよい。これにより、情報処理装置300は、匿名化後の対象データの安全性をより向上させることができる。
情報処理装置300は、例えば、初めに、属性値の入替で有用性をあまり落とさずに匿名化しておき、更に別の匿名化手法を適用してより安全性を高めるといったやり方もできる。
【0046】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
例えば、上述した情報処理装置300の機能構成の一部又は全てをハードウェアとして情報処理装置300に実装してもよい。