(57)【要約】【課題】データの安全性と有用性とを両立させることを目的とする。【解決手段】複数のオブジェクトのそれぞれについて、複数の属性の属性値を対応付けて含んでいるデータにおける複数の属性から、属性値の入替の対象となる入替属性を決定し、データの有用性の指標である有用性指標と、属性値の入替の際の制約である入替制約と、に基づいて、データにおける決定された入替属性の属性値の入替を行う。【選択図】図４
2018156427.tif 000002
【特許請求の範囲】
【請求項１】
複数のオブジェクトのそれぞれについて、複数の属性の属性値を対応付けて含んでいるデータにおける前記複数の属性から、属性値の入替の対象となる入替属性を決定する決定手段と、
前記データの有用性の指標である有用性指標と、属性値の入替の際の制約である入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う入替手段と、
を有する情報処理装置。
【請求項２】
前記入替手段は、前記決定手段により決定された前記入替属性の属性値の入替前の前記データから抽出される特徴量と前記入替属性の属性値の入替後の前記データから抽出される前記特徴量とに基づいて取得される前記有用性指標と、前記入替制約と、に基づいて、前記データにおける前記入替属性の属性値の入替を行う請求項１記載の情報処理装置。
【請求項３】
前記データに関する情報のうち、前記データの閲覧者に知られていると仮定される情報である仮定情報を取得する取得手段を更に有し、
前記決定手段は、前記取得手段により取得された前記仮定情報に基づいて、前記複数の属性から前記入替属性を決定する請求項１又は２記載の情報処理装置。
【請求項４】
前記データに関する情報のうち、前記データの閲覧者に知られていると仮定される情報である仮定情報を取得する取得手段を更に有し、
前記入替手段は、前記取得手段により取得された前記仮定情報に基づいて、前記入替制約を決定し、前記有用性指標と、決定した前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項１又は２記載の情報処理装置。
【請求項５】
前記入替手段は、前記有用性指標と、前記決定手段により決定された前記入替属性の属性値の入替前の前記データと、前記入替属性の属性値の入替後の前記データと、の距離に関する制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項１乃至４何れか１項記載の情報処理装置。
【請求項６】
前記入替手段は、前記有用性指標と、前記距離である前記データにおける前記決定手段により決定された前記入替属性の属性値の入替前後において入替が行われなかった属性値の数に関する制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項５記載の情報処理装置。
【請求項７】
前記入替手段は、前記有用性指標と、前記距離である前記データにおける前記決定手段により決定された前記入替属性の属性値の入替において属性値の入替操作が行われた回数の最小値に関する制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項５記載の情報処理装置。
【請求項８】
前記入替手段は、前記有用性指標と、異なるグループに属する属性値の間で入替を行う制約である前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項１乃至４何れか１項記載の情報処理装置。
【請求項９】
前記入替手段は、前記入替制約を制約条件とし、最適化手法を用いて、目的関数である前記有用性指標の値が最小化される前記データにおける前記決定手段により決定された前記入替属性の属性値の入替パターンを特定し、特定した前記入替パターンに基づいて、前記データにおける前記入替属性の属性値の入替を行う請求項１乃至８何れか１項記載の情報処理装置。
【請求項１０】
前記入替手段は、前記有用性指標と、前記入替制約に応じて取得されるペナルティ値と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う請求項１乃至４何れか１項記載の情報処理装置。
【請求項１１】
前記入替手段は、更に、前記入替手段により前記入替属性の属性値の入替が行われた前記データに対して行われた評価の結果に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替をやり直す請求項１乃至１０何れか１項記載の情報処理装置。
【請求項１２】
前記入替手段は、前記入替手段により前記入替属性の属性値の入替が行われた前記データに対して行われた前記評価の結果に基づいて、前記入替制約を更新し、前記有用性指標と、更新した前記入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行うことで、前記データにおける前記入替属性の属性値の入替をやり直す請求項１１記載の情報処理装置。
【請求項１３】
前記データは、互いに共通の属性を含むことで、前記共通の属性に基づいて関連している複数のデータを含み、
前記決定手段は、前記共通の属性を、前記入替属性として決定する請求項１乃至１２何れか１項記載の情報処理装置。
【請求項１４】
情報処理装置が実行する情報処理方法であって、
複数のオブジェクトのそれぞれについて、複数の属性の属性値を対応付けて含んでいるデータにおける前記複数の属性から、属性値の入替の対象となる入替属性を決定する決定ステップと、
前記データの有用性の指標である有用性指標と、属性値の入替の際の制約である入替制約と、に基づいて、前記データにおける前記決定ステップで決定された前記入替属性の属性値の入替を行う入替ステップと、
を含む情報処理方法。
【請求項１５】
コンピュータを、請求項１乃至１３何れか１項記載の情報処理装置の各手段として、機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、購買記録や行動記録等の個人や組織等のオブジェクトの活動の履歴に係る情報を含むデータを分析して、ビジネスに活用する動きがある。こうした情報は、利用価値が高い一方、プライバシー、企業秘密等の漏洩の可能性もある。このような情報の漏洩を防ぐための技術に、匿名化と呼ばれる技術がある。例えば、直接個人を特定可能な属性情報（例えば、氏名等）を、これらの情報を含むデータベース（ＤＢ）から削除するのも匿名化手法の一つである。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“ｋ−匿名化技術と実用化に向けた取り組み”  情報処理  Ｖｏｌ．５４  Ｎｏ．１１  竹之内  隆夫  ［平成２９年２月１４日検索］、インターネット  ＜ＵＲＬ  ｈｔｔｐ：／／ｉｄ．ｎｉｉ．ａｃ．ｊｐ／１００１／０００９５３６３／＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、直接オブジェクトを特定可能な属性情報の削除だけでは、その他の情報からオブジェクトを特定される可能性は残る。属性情報の削除以外の匿名化手法としては、例えば、非特許文献１に開示されているｋ−匿名化がある。
ｋ−匿名化とは、同じ属性値を持つデータがｋ件以上存在するように変換することで、匿名化を行う手法である。特定される可能性を１／ｋ以下にできる。
例えば、複数の個人の情報を含む対象データに、「氏名」の属性は含まれないが、「性別」及び「年齢」の属性が含まれ、個人毎に各属性の属性値がＤＢに含まれている場合、以下のような可能性がある。即ち、対象データに情報が含まれている各人物の年齢と性別とを攻撃者が知っていたら、攻撃者は、対象データの各レコードがどの個人のデータであるかを特定できてしまう可能性がある。
例えば、対象データに（年齢、性別）の属性値が、（２５歳、男性）のデータ、（２７歳、男性）のデータが含まれているとする。この場合、対象データの年齢の属性の属性値を、年齢の値でなく、年齢が何代に属するかの情報とすることで、ｋ−匿名化ができる。その場合、（２５歳、男性）のデータ、（２７歳、男性）のデータは、（２０代、男性）のデータ、（２０代、男性）のデータとなり、同じ年齢、性別のデータが複数あるため、個人の特定が難しくなる。即ち、安全性が向上する。一方で、年齢の属性値が変更されたため、平均年齢が正確に求めることができなくなる等、データの価値（有用性）は、低下する。
このように、非特許文献１では、匿名化において、同じ属性値を持つレコードの数をｋ以上にするよう多くのデータを加工する必要があり、データの有用性が大幅に低下する場合があった。
【課題を解決するための手段】
【０００５】
そこで、本発明の情報処理装置は、複数のオブジェクトのそれぞれについて、複数の属性の属性値を対応付けて含んでいるデータにおける前記複数の属性から、属性値の入替の対象となる入替属性を決定する決定手段と、前記データの有用性の指標である有用性指標と、属性値の入替の際の制約である入替制約と、に基づいて、前記データにおける前記決定手段により決定された前記入替属性の属性値の入替を行う入替手段と、を有する。
【発明の効果】
【０００６】
本発明によれば、データの安全性と有用性とを両立させることができる。
【図面の簡単な説明】
【０００７】
【図１】図１は、属性値の入替の一例を説明する図である。
【図２】図２は、属性値の入替の一例を説明する図である。
【図３】図３は、情報処理装置のハードウェア構成の一例を示す図である。
【図４】図４は、属性値の入替処理の一例を示すフローチャートである。
【図５】図５は、対象データの一例を示す図である。
【図６】図６は、入替属性の一例を示す図である。
【図７】図７は、有用性指標の一例を示す図である。
【図８】図８は、入替パターンの一例を示す図である。
【図９】図９は、属性値の入替後の対象データの一例を示す図である。
【図１０】図１０は、入替パターンの一例を示す図である。
【図１１】図１１は、対象データの一例を示す図である。
【図１２】図１２は、属性値の入替後のデータの一例を示す図である。
【図１３】図１３は、属性値の入替後のデータの一例を示す図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
＜実施形態１＞
（シャッフルによる匿名化）
人物や組織等の複数のオブジェクト毎に複数の属性の属性値を含むデータの匿名化の手法に、シャッフルという手法がある。シャッフルとは、対象データの入替対象となる属性についての属性値をランダムに入替る手法である。これにより、情報がどのオブジェクトのものかの特定を難しくできる。
ここで、ある属性について、複数のグループにグループ分けすることとする。同じグループに属するオブジェクト同士の間で、入替対象となる属性の属性値をランダムに入替るとする。この場合、そのグループにおける属性値の統計量は、入替に影響されず、データの有用性を維持できる。統計量とは、データの統計学的な特徴を示す数値である。統計量には、平均値、分散値、最大値、最小値、中央値、最頻値、標準偏差等がある。
【０００９】
図１、２は、シャッフルにおける同じグループ内での属性値の入替の一例を説明する図である。図１のテーブルは、ＩＤ、性別、住所、疾病の情報が個人毎に含まれているデータを示すテーブルである。ここで、性別の属性の属性値が男性であるグループ（男性グループ）と、性別の属性の属性値が女性であるグループ（女性グループ）とが設定されているとする。図１のテーブルにおける疾病の属性の属性値を、男性グループに属するオブジェクト同士で入替が行われ、更に、女性グループに属するオブジェクト同士で入替が行われたとする。
図２のテーブルは、図１のテーブルにおける疾病の属性の属性値が入替られた後のテーブルである。男性グループ、女性グループ内における疾病に関する統計量は、属性値の入替の影響を受けないことがわかる。このように、属性値の入替対象の属性以外のある属性について、グループを設定し、設定されたグループに属するオブジェクト間で、入替対象の属性の属性値の入替を行うことで、設定されたグループ内におけるデータの有用性を維持させることができる。
【００１０】
しかし、グループが設定された属性以外の属性（例えば住所）毎の疾病の統計量は、属性値の入替の影響を受けてしまい、データの有用性が低下してしまう。また、性別と住所との組について、グループを設定すれば、住所毎の疾病の統計量についても、入替の影響を受けず、データの有用性を向上させることができる。しかし、性別と住所との組について設定されたグループに属するオブジェクトの数は、性別と住所との何れか１つについて設定されたグループに属するオブジェクトの数よりも少なくなってしまう。そのため、属性値の十分な入替ができず、安全性は、低下してしまう。更に、グループを設定する対象の属性を増やすと、グループに属するオブジェクトの数が減少していき、属性値の入替が困難になる。
そこで、本実施形態では、情報処理装置３００は、複数の属性が対応付けて含まれているデータについて、以下のような処理を行うことで、データの有用性と安全性とを両立させて、匿名化を行う。即ち、情報処理装置３００は、入替対象の属性の属性値の入替パターンを生成し、生成した入替パターン毎に、安全性を維持するための制約を満たすか否かを判定し、有用性を示す指標を取得する。そして、情報処理装置３００は、制約を満たす入替パターンについて取得した有用性を示す指標に基づいて、最適な入替パターンを選択し、選択した入替パターンにしたがって、オブジェクト間で、入替対象の属性の属性値を入替る処理を行う。複数のオブジェクトのそれぞれについて、複数の属性の属性値を対応付けて含むデータの一例としては、行毎に、その行に対応するオブジェクトの複数の属性の属性値を含むテーブルや表がある。その他の例として、ドキュメント指向ＤＢ等のスキーマレスなＤＢにデータを含ませることとしてもよい。
【００１１】
（情報処理装置のハードウェア構成）
図３は、情報処理装置３００のハードウェア構成の一例を示す図である。情報処理装置３００は、パーソナルコンピュータ（ＰＣ）、サーバ装置、タブレット装置等の情報処理装置である。
情報処理装置３００は、ＣＰＵ３０１、主記憶装置３０２、補助記憶装置３０３、入力Ｉ／Ｆ３０４、出力Ｉ／Ｆ３０５、ネットワークＩ／Ｆ３０６を含む。各要素は、システムバス３０７を介して、通信可能に相互に接続されている。
ＣＰＵ３０１は、情報処理装置３００を制御する中央演算装置である。また、主記憶装置３０２は、ＣＰＵ３０１のワークエリア、各種情報の一時的な記憶領域等として機能するＲａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）等の記憶装置である。補助記憶装置３０３は、各種プログラム、各種設定情報、各種閾値、匿名化対象のデータ等を記憶するハードディスクドライブ（ＨＤＤ）等の記録媒体で構成される記憶装置である。また、補助記憶装置３０３は、データの有用性の指標である有用性指標の情報、データの安全性の指標である安全性指標の情報、属性値の入替の際の制約を示す情報等を記憶する。補助記憶装置３０３は、例えば、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、ソリッドステートドライブ（ＳＳＤ）等で構成されてもよい。
【００１２】
入力Ｉ／Ｆ３０４は、マウス、キーボード、タッチパネル等の入力装置との接続に利用されるインターフェースである。ＣＰＵ３０１は、入力Ｉ／Ｆ３０４を介して、ユーザによる入力装置を介した入力を受付ける。出力Ｉ／Ｆ３０５は、モニタ、ディスプレイ、タッチパネルの表示画面等の出力装置との接続に利用されるインターフェースである。ＣＰＵ３０１は、出力Ｉ／Ｆ３０５を介して、出力装置に対して、表示する画面の情報等を出力する。ネットワークＩ／Ｆ３０６は、ネットワークを介した外部の装置との通信に利用されるインターフェースである。ＣＰＵ３０１は、ネットワークＩ／Ｆ３０６を介して、外部の装置との間で、情報のやり取りを行う。
ＣＰＵ３０１が、補助記憶装置３０３に記憶されたプログラムに基づき処理を実行することで、情報処理装置３００の機能及び図４で後述するフローチャートの処理が実現される。
【００１３】
（属性値の入替処理）
図４は、情報処理装置３００による属性値の入替処理の一例を示すフローチャートである。図４を用いて、本実施形態のデータの匿名化の処理について説明する。
Ｓ４０１において、ＣＰＵ３０１は、匿名化対象のデータを取得する。ＣＰＵ３０１は、例えば、予め補助記憶装置３０３に記憶された匿名化対象のデータを取得する。また、ＣＰＵ３０１は、外部の外付けＨＤＤ、外付けＵＳＢメモリ等に記憶された匿名化対象のデータを取得することとしてもよい。また、ＣＰＵ３０１は、ネットワークＩ／Ｆ３０６を介して、外部の装置から送信された匿名化対象のデータを取得することとしてもよい。また、ＣＰＵ３０１は、入力Ｉ／Ｆ３０４に接続され入力装置を介したユーザの操作に基づいて、匿名化対象のデータの入力を受付けることとしてもよい。以下では、Ｓ４０１で取得された匿名化対象のデータを、対象データとする。
本実施形態では、ＣＰＵ３０１は、Ｓ４０１で対象データとして、図５に示すテーブルのデータを取得することとする。図５に示すように、対象データの各行には、その行に対応する人物に関する情報が含まれている。対象データは、ＩＤ、性別、住所、身長、体重の属性を含む。
ＣＰＵ３０１は、Ｓ４０１で取得した図５に示す対象データの情報を、主記憶装置３０２に記憶する。ＣＰＵ３０１は、対象データの情報を、主記憶装置３０２から読み取って利用することになる。
【００１４】
Ｓ４０２において、ＣＰＵ３０１は、Ｓ４０１で取得した対象データに含まれる情報のうち、攻撃者に知られていると仮定される情報を取得する。攻撃者とは、悪用を目的とした情報の読取等、不正の目的での対象データの操作を行いうる者である。攻撃者は、対象データの閲覧を行う閲覧者の一例である。以下では、対象データに含まれる情報のうち、攻撃者に知られていると仮定される情報を、仮定情報とする。ＣＰＵ３０１は、例えば、予め補助記憶装置３０３に記憶された仮定情報を取得する。また、ＣＰＵ３０１は、外部の外付けＨＤＤ、外付けＵＳＢメモリ等に記憶された仮定情報を取得することとしてもよい。また、ＣＰＵ３０１は、ネットワークＩ／Ｆ３０６を介して、外部の装置から送信された仮定情報を取得することとしてもよい。また、ＣＰＵ３０１は、入力Ｉ／Ｆ３０４に接続され入力装置を介したユーザの操作に基づいて、仮定情報の入力を受付けることとしてもよい。
仮定情報には、例えば、対象データに含まれる属性のうち、対象データに情報が含まれている各オブジェクトについての属性値が攻撃者に知られていると仮定される属性を示す情報や、対象データに情報が含まれているオブジェクトのうち、攻撃者に知られていると仮定されるオブジェクトの割合を示す情報等がある。本実施形態では、ＣＰＵ３０１は、仮定情報として、対象データに含まれる属性のうち、対象データに情報が含まれている各オブジェクトについての属性値が攻撃者に知られている属性の情報を取得する。本実施形態では、攻撃者は、対象データに情報が含まれている各オブジェクトについての身長、体重の属性値を知っているとする。即ち、ＣＰＵ３０１は、仮定情報として、身長、体重の属性を示す情報を取得する。また、仮定情報には、これらの属性の情報が攻撃者に知られていると仮定されるオブジェクトの情報を含むこととしてもよい。仮定情報としては、例えば、全てのオブジェクトのうち、オブジェクトＡ、オブジェクトＢについて、身長、体重の属性が攻撃者に知られていると仮定されることを示す情報がある。
【００１５】
Ｓ４０３において、ＣＰＵ３０１は、対象データに含まれる属性のうち、属性値の入替の対象となる属性を決定する。以下では、属性値の入替の対象となる属性を、入替属性とする。
攻撃者は、各オブジェクトについての身長、体重の属性値を知っているので、対象データの身長、体重の属性の属性値の組み合わせからオブジェクトが一意に定まる場合、身長、体重の属性値から、当該オブジェクトに対応する行を特定できる。即ち、攻撃者は、各オブジェクトの住所、性別、ＩＤの情報を特定できてしまう。そこで、ＣＰＵ３０１は、攻撃者が各オブジェクトと対応する属性値を知っている属性に含まれる属性について、属性値の入替を行うことで、攻撃者に対象データの各情報が、どのオブジェクトのデータであるかを特定させないようにできる。
ＣＰＵ３０１は、Ｓ４０２で取得した仮定情報が示す身長の属性と、体重の属性と、のそれぞれを入替属性として決定する。また、ＣＰＵ３０１は、Ｓ４０２で取得した仮定情報が示す身長の属性と、体重の属性と、の何れか１つを入替属性として決定することとしてもよい。また、ＣＰＵ３０１は、Ｓ４０２で取得した仮定情報が示す身長の属性と、体重の属性と、の組を入替属性として決定することとしてもよい。また、ＣＰＵ３０１は、Ｓ４０２で取得した仮定情報が示す攻撃者に知られていると仮定されるオブジェクトの割合を示す情報に基づいて、Ｓ４０５の説明で後述する入替制約を決定することとしてもよい。
【００１６】
また、ＣＰＵ３０１は、入力Ｉ／Ｆ３０４に接続され入力装置を介したユーザの操作に基づいて、属性の指定を受け付け、受け付けた属性を、入替属性として決定してもよい。例えば、ＣＰＵ３０１は、ユーザから住所の属性が指定された場合、住所の属性を、入替属性として決定してもよい。また、補助記憶装置３０３等が予め、対象データのどの属性を入替属性とするかを示す情報を設定ファイル等の形式で記憶している場合、ＣＰＵ３０１は、補助記憶装置３０３等から、その情報を取得し、取得した情報が示す属性を、入替属性として決定してもよい。
ＣＰＵ３０１は、Ｓ４０３で決定した入替属性の情報を、主記憶装置３０２等に、図６に示すテーブルとして記憶する。ＣＰＵ３０１は、入替属性の情報を、主記憶装置３０２から読み取って利用することになる。
本実施形態では、ＣＰＵ３０１は、入替属性として、身長と、体重と、を決定したとする。
【００１７】
Ｓ４０４において、ＣＰＵ３０１は、対象データの有用性を示す指標を決定する。以下では、対象データの有用性を示す指標を、有用性指標とする。ＣＰＵ３０１は、例えば、予め補助記憶装置３０３に記憶された指標を示す情報を取得し、取得した情報が示す指標を、有用性指標として決定する。また、ＣＰＵ３０１は、外部の外付けＨＤＤ、外付けＵＳＢメモリ等に記憶された指標を示す情報を取得し、取得した情報が示す指標を、有用性指標として決定することとしてもよい。また、ＣＰＵ３０１は、ネットワークＩ／Ｆ３０６を介して、外部の装置から送信された指標を示す情報を取得し、取得した情報が示す指標を、有用性指標として決定することとしてもよい。また、ＣＰＵ３０１は、入力Ｉ／Ｆ３０４に接続され入力装置を介したユーザの操作に基づいて、有用性指標の入力を受付けることとしてもよい。
ＣＰＵ３０１は、Ｓ４０４で決定した有用性指標の情報を、主記憶装置３０２に記憶する。ＣＰＵ３０１は、有用性指標の情報を、主記憶装置３０２から読み取って利用することになる。
【００１８】
有用性指標としては、例えば、対象データから抽出される特徴量と、属性値の入替後の対象データから抽出される同じ特徴量と、の差分がある。この差分である有用性指標は、小さいほど、対象データとのずれが小さいことを示し、属性値の入替後の対象データの有用性が高いことを示す指標である。対象データから抽出される特徴量としては、ある属性について設定された複数のグループそれぞれについての属性値の平均値等の統計量がある。
より具体的には、図７に示すように、有用性指標には、例えば、対象データから抽出される性別毎の平均身長と、属性値の入替後の対象データから抽出される性別毎の平均身長と、の差分がある。また、有用性指標には、例えば、対象データから抽出される住所毎の平均身長と、属性値の入替後の対象データから抽出される住所毎の平均身長と、の差分がある。また、有用性指標には、例えば、対象データから抽出される性別及び住所毎の平均体重と、属性値の入替後の対象データから抽出される性別及び住所毎の平均体重と、の差分がある。
本実施形態では、ＣＰＵ３０１は、Ｓ４０４で図７に示される指標を、有用性指標として決定したとする。
【００１９】
Ｓ４０５において、ＣＰＵ３０１は、属性値の入替の際の制約を決定する。以下では、この属性値の入替の際の制約を、入替制約とする。入替制約としては、例えば、属性値の入替の処理の際に守るべき規則、属性値の入替の処理の際にある事項を禁止する規則等の制約がある。また、入替制約には、属性値の入替の際に、ペナルティ値を発生させることとするという制約であってもよい。ペナルティ値とは、対象データの安全性や有用性の指標となる値である。
ＣＰＵ３０１は、例えば、予め補助記憶装置３０３に記憶された制約を示す情報を取得し、取得した情報が示す制約を、入替制約として決定する。また、ＣＰＵ３０１は、外部の外付けＨＤＤ、外付けＵＳＢメモリ等に記憶された制約を示す情報を取得し、取得した情報が示す制約を、入替制約として決定することとしてもよい。また、ＣＰＵ３０１は、ネットワークＩ／Ｆ３０６を介して、外部の装置から送信された制約を示す情報を取得し、取得した情報が示す制約を、入替制約として決定することとしてもよい。また、ＣＰＵ３０１は、入力Ｉ／Ｆ３０４に接続され入力装置を介したユーザの操作に基づいて、入替制約の入力を受付けることとしてもよい。
【００２０】
入替制約には、例えば、属性値の入替前の対象データと属性値の入替後の対象データとの間の距離に関する制約がある。属性値の入替前後の対象データ間の距離とは、入替前後の対象データ同士の違いがどの程度かを示す指標である。この距離の一例としては、属性値の入替を実行するのに要する、任意の２つのオブジェク間での入替操作の回数の最小値がある。入替操作とは、ある属性値と、別の属性値と、を入替る操作のことである。また、この距離の一例としては、属性値の入替において入替が行われなかった属性値の数、属性値の入替において入替が行われた属性値の数がある。また、この距離の一例としては、属性値の入替において入替が行われなかった属性値の数の属性値の総数に対する割合、属性値の入替において入替が行われた属性値の数の属性値の総数に対する割合等がある。
例えば、入替制約には、入替対象の属性の属性値のうち入替のない属性値が出ないようにする（入替のない属性値の数を０にする）ことを示す制約、入替対象の属性の属性値のうち入替のない属性値が設定された閾値（例えば５０％等）以上出ないようにすることを示す制約がある。また、入替制約には、入替属性の属性値の入替において行われる属性値の入替操作の最低回数が設定された閾値（例えば、４回）以上にすることを示す制約がある。
【００２１】
また、入替制約には、例えば、異なるグループに属するオブジェクトの間で属性値の入替を行うことを示す制約がある。このグループとは、ある共通の特徴を有するオブジェクトの集まりを示す。例えば、性別の属性を指標として、共通の属性値を持つグループ（男性グループ、女性グループ）が設定される。また、複数の属性を指標として、グループが設定されることとしてもよい。例えば、性別と住所との属性値の組が同一のグループ（例えば、（東京、男性）、（東京、女性）、（千葉、男性）、（千葉、女性）のグループ等）が設定されることとしてもよい。また、異なる指標で設定されたグループが複数設定されることとしてもよい。例えば、性別の属性の属性値が共通の値を有するグループと、性別と住所との属性値の組が同一のグループと、が設定されることとしてもよい。また、有用性指標に基づいてグループを設定してもよい。より具体的には、有用性指標の算出に用いられる特徴量に関する属性のうち、複数のグループに分類可能な属性（例えば「性別」）に基づいてグループが設定されることとしてもよい。
また、入替制約には、入替対象の属性の属性値のうち設定された閾値（例えば５０％等）以上の属性値について、異なるグループに属するオブジェクトの間で属性値の入替を行うことを示す制約がある。また、入替制約には、同じグループに属するオブジェクトの間で属性値の入替操作が行われる属性値が、入替対象の属性の属性値のうち設定された閾値（例えば５０％等）未満にすることを示す制約がある。なお、これらの閾値は仮定情報が示す攻撃者に対応する属性値が知られていると仮定されるオブジェクトの割合を示す情報に基づいて設定されることとしてもよい。このように、ＣＰＵ３０１は、仮定情報に基づいて、これらの閾値を決定することで、入替制約を決定することとしてもよい。
また、入替制約には、各オブジェクトについて、入替対象のどの属性の属性値についても入替が発生しないことを禁止する制約等がある。
【００２２】
このような、入替が行われる属性値の数を増加させるための入替制約や、異なるグループに属するオブジェクトの間で入替が行われる属性値の数を増加させるための入替制約は、データの安全性を担保する制約の一例である。入替制約は、データの有用性を担保する制約であってもよい。データの有用性を担保する入替制約としては、例えば、入替が行われる属性値の数を減少させるための入替制約や、異なるグループに属するオブジェクトの間で入替が行われる属性値の数を減少させるための入替制約がある。
また、入替制約には、属性値の入替前の対象データと属性値の入替後の対象データとの間の距離に応じた安全性の指標であるペナルティ値を発生させることを示す制約がある。例えば、入替制約には、入替対象の属性の属性値のうち入替が行われなかった属性値の数に応じたペナルティ値を発生させることを示す制約がある。また、これらのうちの複数の制約を、入替制約としてもよい。以下では、安全性の指標であるペナルティ値を、安全性指標とする。
【００２３】
安全性指標としては、例えば、入替属性の属性値のうち入替操作が行われない属性値の数、入替属性の属性値のうち入替操作が行われる属性値の数がある。また、安全性指標としては、例えば、入替対象の属性の属性値のうち入替操作が行われない属性値の数のその属性の属性値の総数に対する割合、入替対象の属性の属性値のうち入替操作が行われる属性値の数のその属性の属性値の総数に対する割合がある。また、安全性指標としては、属性値の入替操作の総回数、入替属性の属性値のうち１対１の入替操作が行われる属性値の数、設定されたグループのうち同じグループ内で入替操作が行われる属性値の数、設定されたグループのうち異なるグループ間で入替操作が行われる属性値の数等がある。また、安全性指標としては、設定されたグループのうち同じグループ内で入替操作が行われる属性値の数の属性値の総数に対する割合、設定されたグループのうち異なるグループ間で入替操作が行われる属性値の数の属性値の総数に対する割合等がある。また、これらのものに予め設定された係数を乗じる等して導出される値を、安全性指標としてもよい。また、これらのもののうちの複数を、安全性指標としてもよい。
【００２４】
ＣＰＵ３０１は、入替制約により、属性値の入替の処理の際に、ペナルティ値として安全性指標を取得する場合、Ｓ４０９で後述する有用性指標と、取得した安全性指標と、に基づいて、複数の入替パターンの中から最適な入替パターンを決定することになる。
属性値の入替操作が多く行われる程、対象データの各行がどのオブジェクトに対応するかを特定できにくくなる。そこで、ＣＰＵ３０１は、属性値の入替操作が最低何回行われたかを示す回数を安全性指標として、安全性指標を適切な値に制限することで、対象データの各行がどのオブジェクトに対応するかを特定できにくくし、安全性を向上できる。
属性値の１対１の入替が行われた行は、そうでない属性値の入替が行われた行に対して、対応するオブジェクトを特定されやすい。そこで、ＣＰＵ３０１は、属性値の１対１の入替が行われた属性値の数を安全性指標として、安全性指標を適切な値に制限することで、対象データの各行がどのオブジェクトに対応するかを特定できにくくし、安全性を向上できる。
対象データに含まれる属性について設定された異なるグループ間（例えば、男性グループと女性グループとの間等）で行われる属性値の入替が多い程、対象データの各行がどのオブジェクトに対応するかを特定できにくくなる。そこで、ＣＰＵ３０１は、同じグループ間で入替が行われた属性値の数を安全性指標として、安全性指標を適切な値に制限することで、対象データの各行がどのオブジェクトに対応するかを特定できにくくし、安全性を向上できる。
本実施形態では、Ｓ４０５で、入替対象の属性の属性値のうち入替が行われない属性値の数のその属性の属性値の総数に対する割合が安全性指標として決定されたとする。
【００２５】
Ｓ４０６において、ＣＰＵ３０１は、Ｓ４０３で決定した入替属性から１つを選択する。以下では、Ｓ４０６で選択された属性を、選択属性とする。ＣＰＵ３０１は、選択属性として、選択した属性について、選択属性として選択済みであることを示す履歴情報を、主記憶装置３０２に記憶する。ＣＰＵ３０１は、この履歴情報を参照することで、まだ未選択な入替属性を特定できる。本実施形態では、ＣＰＵ３０１は、初めてＳ４０６の処理を行う場合、選択属性として、身長の属性を選択したとする。
Ｓ４０７において、ＣＰＵ３０１は、Ｓ４０１で取得した対象データについて、選択属性の属性値の入替パターンを生成する。本実施形態では、ＣＰＵ３０１は、選択属性の属性値の全ての入替パターンを生成する。
【００２６】
図８は、入替パターンの一例を示す図である。図８を用いて、Ｓ４０７で生成される入替パターンについて説明する。
図８のテーブルは、属性値の入替の対応関係を示す情報である入替パターンを、表形式で表現したものである。図８の例では、テーブルの行の項目（１〜８）は、入替対象の属性値の入替前のＩＤを示す。また、テーブルの列の項目（１〜８）は、入替対象の属性値の入替後のＩＤを示す。
テーブル中の１は、属性値の入替のそれぞれを示す。テーブル中の１に対応する行が示すＩＤに対応する属性値は、その１に対応する列が示すＩＤに対応する属性値へ変更されることになる。入替パターンの各行、各列の和は、それぞれ１となる。図８の例では、元々のＩＤが３、４、７、８の属性値については、変更後のＩＤもそれぞれ３、４、７、８となっており、入替が行われない。図８の例では、ＩＤ１の属性値とＩＤ５の属性値との間で、ＩＤ２の属性値とＩＤ６の属性値との間で、それぞれ、１対１の入替が行われることになる。図８の例では、ＩＤ１の属性値とＩＤ５の属性値との間で最低１回、ＩＤ２の属性値とＩＤ６の属性値との間で最低１回、最低でも計２回の属性値の入替操作が行われたことが示される。また、属性値の入替が行われた属性値の数は、ＩＤ１、ＩＤ２、ＩＤ５、ＩＤ６の４個となる。また、属性値の入替が行われなかった属性値の数は、ＩＤ３、ＩＤ４、ＩＤ７、ＩＤ８の４個となる。
【００２７】
Ｓ４０８において、ＣＰＵ３０１は、Ｓ４０７で生成した入替パターンから１つを選択する。以下では、Ｓ４０８で選択された入替パターンを選択パターンとする。
Ｓ４０９において、ＣＰＵ３０１は、選択パターンについて、Ｓ４０４で決定した有用性指標の値を取得する。図９は、図８の入替パターンが示す属性値の入替が行われた対象データの一例を示す図である。図９を見ると、図５のテーブルと比べて、身長の属性の属性値について、ＩＤ１の属性値とＩＤ５の属性値との間で入替が行われたことが分かる。また、身長の属性の属性値について、ＩＤ２の属性値とＩＤ６の属性値との間で入替が行われたことも分かる。
ＣＰＵ３０１は、選択パターンが示す選択属性の属性値の入替が行われた対象データに基づいて、有用性指標を取得する。選択属性は、身長であるとする。また、身長に対する有用性指標は、以下の有用性指標（１）と、有用性指標（２）であるとする。有用性指標（１）は、対象データから抽出される性別毎の平均身長と、属性値の入替後の対象データから抽出される性別毎の平均身長と、の差分である。また、有用性指標（２）は、対象データから抽出される住所毎の平均身長と、属性値の入替後の対象データから抽出される住所毎の平均身長と、の差分である。
【００２８】
図５が示す身長の属性値の入替前の対象データにおける男性グループの平均身長は、（１７５＋１６０＋１８０＋１７０）／４＝１７１．２５である。図９が示す身長の属性値の入替後の対象データにおける男性グループの平均身長は、（１７０＋１６５＋１８０＋１７０）／４＝１７１．２５である。
図５が示す身長の属性値の入替前の対象データにおける女性グループの平均身長は、（１７０＋１６５＋１５０＋１５５）／４＝１６０である。図９が示す身長の属性値の入替後の対象データにおける女性グループの平均身長は、（１７５＋１６０＋１５０＋１５５）／４＝１６０である。
従って、有用性指標（１）は、｜１７１．２５―１７１．２５｜＋｜１６０−１６０｜＝０である。
【００２９】
図５が示す身長の属性値の入替前の対象データにおける東京グループ（住所が東京のグループ）の平均身長は、（１７５＋１８０＋１６５＋１５５）／４＝１６８．７５である。図９が示す身長の属性値の入替後の対象データにおける東京グループの平均身長は、（１７０＋１８０＋１６０＋１５５）／４＝１６６．２５である。
図５が示す身長の属性値の入替前の対象データにおける千葉グループ（住所が千葉のグループ）の平均身長は、（１７０＋１７０）／２＝１７０である。図９が示す身長の属性値の入替後の対象データにおける千葉グループの平均身長は、（１７０＋１７５）／２＝１７２．５である。
図５が示す身長の属性値の入替前の対象データにおける埼玉グループ（住所が埼玉のグループ）の平均身長は、（１６０＋１５０）／２＝１５５である。図９が示す身長の属性値の入替後の対象データにおける埼玉グループの平均身長は、（１６５＋１５０）／２＝１５７．５である。
従って、有用性指標（２）は、｜１６６．２５―１６８．７５｜＋｜１７２．５−１７０｜＋｜１５７．５−１５５｜＝７．５である。
そして、ＣＰＵ３０１は、例えば、有用性指標（１）と有用性指標（２）との合計を、選択パターンに対する最終的な有用性指標として算出する。
【００３０】
本実施形態では、ＣＰＵ３０１は、Ｓ４０９で、更に、Ｓ４０５で決定された入替制約を満たすか否かを判定する。
本実施形態では、Ｓ４０５で決定された入替制約は、入替対象の属性の属性値のうち、入替が行われない属性値の数を、属性値全体の５０％以下にするという制約であるとする。
ＣＰＵ３０１は、図８の入替パターンについて、入替制約を満たすか否かを判定する。図８、９が示すように、ＩＤ１〜８が示す全てのオブジェクトのうち、身長の属性値の入替が行われていないオブジェクトは、ＩＤが３、４、７、８の４つのオブジェクトである。オブジェクトの数は、８なので、属性値の入替が行われなかった属性値は、全体の４／８＊１００＝５０（％）となる。そのため、ＣＰＵ３０１は、入替が行われなかった属性値の数が属性値全体の５０％以下となるため、入替制約を満たすと判定する。
図４の例では、性別の属性についてグループ（男性グループ、女性グループ）が設定されているとする。ここで、図８の入替パターンにおいて、ＩＤ１の身長の属性値とＩＤ５の身長の属性値とが入替られることが示されている。ここで、ＩＤ１のオブジェクトは、男性グループに属し、ＩＤ５のオブジェクトは女性グループに属している。そのため、ＩＤ１とＩＤ５との間での身長の属性値の入替は、異なるグループ間で行われる属性値の入替である。同様に、ＩＤ２とＩＤ６との間での身長の属性値の入替は、異なるグループ間で行われる属性値の入替である。
【００３１】
Ｓ４１０において、ＣＰＵ３０１は、Ｓ４０７で生成した入替パターン全てを、Ｓ４０８で選択したか否かを判定する。ＣＰＵ３０１は、Ｓ４０７で生成した入替パターン全てを、Ｓ４０８で選択したと判定した場合、Ｓ４１１の処理に進み、Ｓ４０８で未選択の入替パターンがあると判定した場合、Ｓ４０８の処理に進む。
Ｓ４１１において、ＣＰＵ３０１は、Ｓ４０７で生成した入替パターンそれぞれについてＳ４０９で取得した有用性指標の値と、Ｓ４０９での入替制約を満たすか否かの判定結果と、に基づいて、Ｓ４０７で生成した入替パターンから、最適な入替パターンを選択する。ＣＰＵ３０１は、例えば、入替制約を満たすと判定した入替パターンについて取得した有用性指標を特定する。この入替制約を満たすと判定された入替パターンは、中間候補の一例である。そして、ＣＰＵ３０１は、特定した有用性指標のうち、値が最も小さいものに対応する入替パターンを、最適な入替パターンとして選択する。しかし、有用性指標が、有用性が高い程高い値をとる指標である場合、ＣＰＵ３０１は、取得した有用性指標の値が最も大きいものに対応する入替パターンを、最適な入替パターンとして選択してもよい。
【００３２】
本実施形態では、ＣＰＵ３０１は、Ｓ４０７で、全ての入替パターンを生成することとした。しかし、ＣＰＵ３０１は、Ｓ４０７で、入替制約を満たす入替パターンのみを生成することとしてもよい。
また、本実施形態では、ＣＰＵ３０１は、Ｓ４０９で、各入替パターンについて、入替制約を満たすか否かを判定した。しかし、ＣＰＵ３０１は、Ｓ４０８で選択された入替パターンについて、入替制約を満たす場合のみ、Ｓ４０９で、有用性指標を取得することとしてもよい。
このような場合、Ｓ４１１で、ＣＰＵ３０１は、Ｓ４０９で取得された有用性指標のうち、最小のものに対応する入替パターンを選択することで、最適な入替パターンを選択する。
また、ＣＰＵ３０１は、入替制約が安全性指標を発生させる制約である場合、Ｓ４０９で、入替パターンの有用性指標の値のみでなく、入替パターンの安全性指標（例えば、入替が行われなかった属性値の数）も取得することとしてもよい。その場合、ＣＰＵ３０１は、Ｓ４１１で、有用性指標の値と、安全性指標の値と、に基づいて、最適な入替パターンを決定することとしてもよい。ＣＰＵ３０１は、例えば、安全性指標の値が設定された閾値以下の入替パターンのうち、有用性指標の値が最小のものを、最適な入替パターンとして決定することとしてもよい。また、ＣＰＵ３０１は、例えば、有用性指標の値が設定された閾値以下の入替パターンのうち、安全性指標の値が最小のものを、最適な入替パターンとして決定することとしてもよい。また、ＣＰＵ３０１は、例えば、安全性指標の値に所定の重み付けを行った上で有用性指標の値に加えた値が最小のものを、最適な入替パターンとして決定することとしてもよい。
また、ＣＰＵ３０１は、Ｓ４０７で、入替制約を制約条件とし、目的関数である有用性指標の値が最小化される入替パターンを、公知の最適化手法を用いて選択することとしてもよい。公知の最適化手法としては、例えば、整数計画問題を解くソフトウェアである整数計画ソルバーがある。その場合、入替パターンについて、各オブジェクトに対する入替フラグを設定し、入替フラグに基づき、入替制約を満たすか否かを判定するようにしてもよい。図８のテーブルは、こうした入替フラグの設定の一例である。入替フラグにより、公知の最適化手法を用いて、効率的に最適な入替パターンを決定することができる。
【００３３】
Ｓ４１２において、ＣＰＵ３０１は、Ｓ４１１で決定された最適な入替パターンに従って、Ｓ４０１で取得した対象データのＳ４０６で選択した入替属性の属性値の入替を行う。
Ｓ４１３において、ＣＰＵ３０１は、Ｓ４０３で決定した入替属性の全てを、Ｓ４０６で選択したか否かを判定する。ＣＰＵ３０１は、Ｓ４０３で決定した入替属性の全てを、Ｓ４０６で選択したと判定した場合、Ｓ４１４の処理に進み、Ｓ４０３で決定した入替属性のうち、Ｓ４０６で選択していないものがあると判定した場合、Ｓ４０６の処理に進む。
【００３４】
本実施形態では、最初のＳ４０７〜Ｓ４１２の処理によって、身長の属性についての属性値の入替が行われる。そして、再度のＳ４０６の処理で、体重の属性が選択属性として選択され、再度のＳ４０７〜Ｓ４１２の処理によって、体重の属性についての属性値の入替が行われる。
最初のＳ４１１の処理で、図８の入替パターンが身長の属性値の最適な入替パターンとして選択されたとする。
Ｓ４０５で決定された入替制約に含まれる制約に、入替属性全てについて属性値の入替がないオブジェクトの数を０にするという制約があったとする。
【００３５】
この場合、ＣＰＵ３０１は、体重の属性についてのＳ４０９の処理で、以下のような処理を行う。ＣＰＵ３０１は、身長の属性値の入替パターンである図８の入替パターンにおいて、入替が行われなかったオブジェクトのＩＤを特定する。ＣＰＵ３０１は、選択パターンが示す入替に、特定した全てのＩＤに対応する属性値の入替が含まれるか否かを判定する。そして、ＣＰＵ３０１は、含まれると判定した場合、他の入替制約に含まれる他の制約を満たせば、選択パターンが入替制約を満たすと判定する。また、ＣＰＵ３０１は、含まれないと判定した場合、選択パターンが入替制約を満たさないと判定する。これにより、ＣＰＵ３０１は、全ての入替属性（身長の属性、体重の属性）で入替が行われない属性値が生じることを防止し、匿名化後の対象データの安全性を向上させることができる。
図１０は、入替パターンの一例である。図１０の例では、図８の入替パターンでは入替操作が行われなかった属性値について、入替操作が行われることが分かる。
また、図１０の入替パターンのＩＤ１〜３の属性値間では、１対１の入替ではない入替操作が行われていることが分かる。ＩＤ１〜３の間で、例えば、ＩＤ１の属性値とＩＤ２の属性値との間で１回、属性値の入替操作が行われ、その後、ＩＤ１の属性値とＩＤ３の属性値との間で１回、最低でも計２回の属性値の入替操作が行われる。また、ＩＤ４の属性値とＩＤ７の属性値との間で、ＩＤ４の属性値とＩＤ７の属性値との間で、それぞれ１対１の入替が行われている。そのため、ＩＤ４の属性値とＩＤ７の属性値との間で属性値の入替操作が最低１回行われている。また、ＩＤ５の属性値とＩＤ８の属性値との間で属性値の入替操作が最低１回行われている。また、ＩＤ６の属性値については、入替操作が行われていない。よって、図１０の例では、最低でも計４回の属性値の入替操作が行われたことが示されている。また、属性値の入替が行われた属性値の数は、ＩＤ１、ＩＤ２、ＩＤ３、ＩＤ４、ＩＤ５、ＩＤ７、ＩＤ８、の７個となる。また、属性値の入替が行われなかった属性値の数は、ＩＤ６の１個となる。
【００３６】
Ｓ４１４において、ＣＰＵ３０１は、Ｓ４０６〜Ｓ４１３の処理による属性値の入替結果についての評価の結果を取得する。本実施形態では、Ｓ４０６〜Ｓ４１３の処理による属性値の入替が行われた対象データに対して、対象データの各行がどのオブジェクトに対応するかを推定するテストが行われる。即ち、入替結果に対して、安全性のテストが行われる。
例えば、情報処理装置３００に対して、対象データの各行の属性値に基づいて、その行がどのオブジェクトに対応するかを推定するアプリケーションである攻撃アプリケーションのプログラムがインストールされているとする。この場合、攻撃アプリケーションは、属性値の入替が行われた対象データに対して、各行がどのオブジェクトに対応するかを推定する処理を行う。そして、ＣＰＵ３０１は、攻撃アプリケーションによる推定結果を取得する。ＣＰＵ３０１は、攻撃アプリケーションにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値未満であれば、評価の結果を合格とする。また、ＣＰＵ３０１は、攻撃アプリケーションにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値以上であれば、評価の結果を不合格とする。
本実施形態では、攻撃アプリケーションのプログラムは、情報処理装置３００の補助記憶装置３０３にインストールされていることとするが、外部の装置にインストールされていることとしてもよい。その場合、外部の装置に含まれる攻撃アプリケーションは、ネットワークを介して、情報処理装置３００から対象データの情報を取得して、取得した対象データに対して、推定処理を行う。
【００３７】
また、テストユーザが、Ｓ４０６〜Ｓ４１３の処理により属性値の入替が行われた対象データに対して、対象データの各行がどのオブジェクトに対応するかを推定するテストを行った場合、ＣＰＵ３０１は、以下のようにしてもよい。即ち、ＣＰＵ３０１は、入力Ｉ／Ｆ３０４に接続されている入力装置を介したユーザの操作に基づいて、テストユーザにより行われた評価の結果を示す情報の入力を受付けることで、評価の結果を示す情報を取得する。ＣＰＵ３０１は、例えば、対象データの各行のうち、どれだけの行が、正しいオブジェクトに対応する行であると推定されたかを示す情報の入力を受付ける。ＣＰＵ３０１は、テストユーザにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値未満であれば、評価の結果を合格とする。また、ＣＰＵ３０１は、テストユーザにより正しいオブジェクトに対応するとして推定された行の数が、設定された閾値以上であれば、評価の結果を不合格とする。
【００３８】
Ｓ４１５において、ＣＰＵ３０１は、Ｓ４０４で取得した評価の結果が合格であるか否かを判定する。ＣＰＵ３０１は、Ｓ４０４で取得した評価の結果が合格であると判定した場合、図４の処理を終了し、Ｓ４０４で取得した評価の結果が合格でないと判定した場合、Ｓ４１６の処理に進む。
Ｓ４１６において、ＣＰＵ３０１は、入替制約を更新する。ＣＰＵ３０１は、例えば、Ｓ４１４で安全性の評価が行われていた場合、安全性がまだ不足しているため、より安全性を向上させるように、入替制約を更新する。ＣＰＵ３０１は、例えば、元々の入替制約が、属性値の入替対象の属性の属性値のうち入替が行われない属性値の数を属性値全体の５０％以下にすることを示す制約である場合、以下のように、入替制約を更新する。ＣＰＵ３０１は、例えば、属性値の入替対象の属性の属性値のうち入替が行われない属性値の数を属性値全体の０％以下にする制約として、更新する。また、ＣＰＵ３０１は、例えば、入替が行われない属性値の数が属性値全体の４０％（又は、３０％等の５０％よりも小さい値）以下にすることを示す制約として、更新してもよい。
このようにすることで、ＣＰＵ３０１は、入替制約を更新し、再度、属性値の入替を行うことで、属性値の入替後の対象データの安全性を適切な水準に維持できる。
Ｓ４１７において、ＣＰＵ３０１は、Ｓ４０６での選択の履歴を示す履歴情報をクリアする。これにより、Ｓ４０３で決定された入替属性それぞれについて、Ｓ４０６で未選択の状態となる。
【００３９】
（効果）
以上、本実施形態では、情報処理装置３００は、匿名化の対象データに対して、データの有用性の指標である有用性指標と、属性値の入替の際の入替制約と、に基づいて、属性値の入替対象の属性の属性値の入替を行うこととした。より具体的には、情報処理装置３００は、属性値の入替パターンの中で、入替制約を満たしつつ、有用性指標の値が最適なものを選択し、選択した入替パターンに従って、属性値の入替を行った。これにより、情報処理装置３００は、匿名化後の対象データについて、有用性と安全性とを両立させることができる。
また、情報処理装置３００は、対象データのうち、各オブジェクトに対応する属性値が攻撃者に知られていると仮定される属性から、入替属性を選択することとした。これにより、情報処理装置３００は、攻撃者が対象データの各行がどのオブジェクトに対応するかを特定することを阻害することができる。
また、情報処理装置３００は、異なるグループ間で、属性値の入替対象の属性の属性値の入替を行うことで以下の効果を奏することができる。即ち、情報処理装置３００は、データ分析の用途に応じて有用性指標が決定される場合に、その用途から攻撃者に入替を推定されることを防ぐことができる。例えば、身体データを性別、年齢毎に分析するために、性別、年齢毎の身体データの特徴量をなるべく維持するよう匿名化が行われる場合、同一の性別、年齢の間で入替を行うのでは攻撃者にオブジェクトの対応関係を推定されやすくなる。そこで、情報処理装置３００は、異なるグループに属するオブジェクトの間で属性値の入替を行うことでより安全性を高めることができる。
【００４０】
（変形例）
本実施形態では、ＣＰＵ３０１は、Ｓ４１４で安全性の評価の結果を取得することとしたが、有用性の評価の結果を取得することとしてもよい。その場合、ＣＰＵ３０１は、評価の結果に基づいて、Ｓ４１６で有用性指標を変更したり、有用性指標に関する入替制約を新たに加えることを決定したりすることとしてもよい。有用性の評価としては、例えば、属性値の入替前の対象データと、入替後の対象データと、について、各属性の統計量を算出し、入替前の対象データについて算出した統計量と、入替後の対象データについて算出した統計量と、の差分を評価する方法がある。
この場合、ＣＰＵ３０１は、例えば、この差分が設定された閾値未満ならば、属性値の入替後の対象データの有用性の評価の結果を合格とする。また、ＣＰＵ３０１は、例えば、この差分が設定された閾値以上ならば、属性値の入替後の対象データの有用性の評価の結果を不合格とする。
そして、ＣＰＵ３０１は、評価結果が不合格であれば、例えば、有用性指標を変更し、再度、属性値の入替をやり直す。また、ＣＰＵ３０１は、評価結果が不合格であれば、例えば、安全性指標や入替制約を変更し、再度、属性値の入替をやり直すこととしてもよい。
【００４１】
本実施形態では、ＣＰＵ３０１は、単一のテーブルである対象データの入替属性の属性値の入替を行うことで、匿名化を行うこととした。しかし、ＣＰＵ３０１は、互いに共通の属性を持ち、その共通の属性に基づいて関連しあう複数のテーブルで構成される対象データについても、入替属性の属性値の入替を行うことで、匿名化を行うことができる。互いに共通の属性を持ち、その共通の属性に基づいて関連しあう複数のテーブルで構成されるデータには、リレーショナルデータベースにおけるリレーションが設定されている複数のテーブルがある。
図１１は、互いに共通の属性を持ち、その共通の属性に基づいて関連しあう複数のテーブルで構成される対象データの一例を示す図である。以下では、図１１の対象データについて、属性値の入替により匿名化する際の処理を説明する。図１１の左のテーブルを、マスターデータ、右のテーブルを、リレーションデータとする。図１１のリレーションデータは、各顧客の購買履歴を示す情報である。攻撃者が、各オブジェクトの購買履歴の情報を保有しているとする。この場合、ＣＰＵ３０１は、Ｓ４０２で、仮定情報として、年月日の属性と製品の属性との組の情報を取得する。そして、ＣＰＵ３０１は、Ｓ４０３で、仮定情報に含まれる属性（年月日、及び製品）を含むリレーションデータの顧客ＩＤを入替属性として決定する。
【００４２】
各顧客の購買履歴の情報は、マスターデータの顧客ＩＤに基づいて参照される。そのため、リレーションデータにおける顧客ＩＤの属性値の入替を行うことで、マスターデータの顧客ＩＤから、各顧客に対応する購買履歴の情報（年月日、及び製品の属性値）を正確に特定することが困難とすることができる。このように、ＣＰＵ３０１は、リレーションデータにおける顧客ＩＤの属性値の入替を行うことで、購買履歴の情報（年月日、及び製品の属性値）について、属性値の入替を行う必要がなくなり、購買履歴の情報について属性値の入替を行う場合に比べて処理の負担を軽減できる。
また、属性値の入替がリレーションデータのみで局所的に行われ、マスターデータや他のリレーションデータに対して変更が生じないため、対象データの有用性が低下しにくい。即ち、また、ＣＰＵ３０１は、リレーションデータにおける属性の属性値の入替を行うことで、対象データの有用性の低下を防止できる。
【００４３】
リレーションデータの顧客ＩＤの属性値の入替の手法には、例えば、以下の第１の手法、第２の手法がある。
第１の手法は、顧客ＩＤの値に基づいて、属性値の入替を行う方法である。
図１２は、第１の手法によりリレーションデータの顧客ＩＤの属性値の入替が行われた対象データの一例を示す図である。図１２の例は、顧客ＩＤについて、（１−＞３）、（２−＞１）、（３−＞２）という入替が行われた結果を示す。元々の顧客ＩＤ１の行が、顧客ＩＤ３の行となっており、顧客ＩＤ２の行が、顧客ＩＤ１の行となっており、顧客ＩＤ３の行が、顧客ＩＤ２の行となっている。
【００４４】
第２の手法は、リレーションデータのテーブルの各行にそれぞれ異なる値であるＩＤを付加し、付加したＩＤに基づいて、顧客ＩＤの属性値の入替を行う手法である。図１１の履歴ＩＤは、リレーションデータに付加されたＩＤの一例である。
図１３は、第２の手法によりリレーションデータの顧客ＩＤの属性値の入替が行われた対象データの一例を示す図である。図１３の例は、履歴ＩＤの属性値について、（１−＞４）、（２−＞３）、（３−＞２）、（４−＞１）という入替が行われ、それに併せて、各履歴ＩＤに対応する顧客ＩＤの入替が行われた結果を示す。図１１の例では、履歴ＩＤ１、２は、顧客ＩＤ１に対応し、履歴ＩＤ３は、顧客ＩＤ２に対応し、履歴ＩＤ４は、顧客ＩＤ３に対応する。そのため、顧客ＩＤは、上から、３、２、１、１となる。
第２の手法においては、図１３に示すように、顧客ＩＤ１の顧客が２つの商品を買ったという情報が維持されることになる。ＣＰＵ３０１は、匿名化後の対象データに残したい情報に応じて、属性値の入替の手法を使い分けることとしてもよい。こうすることで、ＣＰＵ３０１は、より匿名化後の対象データの有用性を向上させることができる。
図１１〜１３の例では、対象データのマスターデータについては、匿名化されていない。しかし、ＣＰＵ３０１は、マスターデータについても適宜匿名化してもよい。
また、対象データが、３つ以上のリレーションが設定されているテーブルである場合でも、ＣＰＵ３０１は、各テーブル間のリレーションに基づき、属性値の入替を行うことができる。
【００４５】
情報処理装置３００は、本実施形態で説明した属性値の入替による匿名化手法と、他の匿名化手法（属性値の変換やレコードの追加・削除等）と、を組み合わせた匿名化を行うことができる。情報処理装置３００は、本実施形態で説明したように、対象データについて、属性値の入替を行った後、又は前に、他の匿名化手法を適用することとしてもよい。これにより、情報処理装置３００は、匿名化後の対象データの安全性をより向上させることができる。
情報処理装置３００は、例えば、初めに、属性値の入替で有用性をあまり落とさずに匿名化しておき、更に別の匿名化手法を適用してより安全性を高めるといったやり方もできる。
【００４６】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
例えば、上述した情報処理装置３００の機能構成の一部又は全てをハードウェアとして情報処理装置３００に実装してもよい。
【符号の説明】
【００４７】
３００  情報処理装置、３０１  ＣＰＵ、３０３  補助記憶装置
【図１】
2018156427.tif 000003
【図２】
2018156427.tif 000004
【図３】
2018156427.tif 000005
【図４】
2018156427.tif 000006
【図５】
2018156427.tif 000007
【図６】
2018156427.tif 000008
【図７】
2018156427.tif 000009
【図８】
2018156427.tif 000010
【図９】
2018156427.tif 000011
【図１０】
2018156427.tif 000012
【図１１】
2018156427.tif 000013
【図１２】
2018156427.tif 000014
【図１３】
2018156427.tif 000015