(57)【要約】  データベースにおけるマスク対象属性の数分のマスク値を、所定数セット生成し、マスク対象属性の属性値を含む複数のレコードの各々について、所定数セットのマスク値のいずれかを選択し、選択されたマスク値と対応するレコードにおけるマスク対象属性の属性値とについて予め定められた演算を実施することで複数のレコードのマスク化データを生成する。マスク値の選択結果をレコードの識別子と対応付けて保持することで、アンマスク処理の際に用いるデータの量を減らすことができる。
2012127572.tif 000002
【特許請求の範囲】
【請求項１】
データベースにおけるマスク対象属性の数分のマスク値を、所定数セット生成し、マスクデータ格納部に格納するステップと、
前記マスク対象属性の属性値を含む複数のレコードの各々について、前記マスクデータ格納部に格納されている前記所定数セットのマスク値のいずれかを選択し、選択されたマスク値と対応するレコードにおけるマスク対象属性の属性値とについて予め定められた演算を実施することで前記複数のレコードのマスク化データを生成し、前記データ格納部に格納するマスク処理ステップと、
を、コンピュータに実行させるための秘匿データ処理プログラム。
【請求項２】
前記マスク処理ステップが、
１から前記所定数までの乱数を均一に又は予め定められたピークを有する分布に従って生成することで、前記所定数セットのマスク値を選択するステップ
を含む、請求項１記載の秘匿データ処理プログラム。
【請求項３】
前記予め定められた演算が、前記属性値と演算結果との関係が全単射となる
請求項１又は２記載の秘匿データ処理プログラム。
【請求項４】
データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている最も出現確率が高いセットのマスク値を読み出すステップと、
分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれる前記マスク化属性値と、読み出されたマスク値のうち該当するマスク値とについて予め定められたマスク演算の逆マスク演算を実施することでアンマスク化データを生成し、データ格納部に格納するステップと、
を、コンピュータに実行させるための秘匿データ処理プログラム。
【請求項５】
分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれる前記マスク化属性値と、データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている各前記セットに含まれる該当マスク値とについて予め定められたマスク演算の逆マスク演算を実施することで、前記所定数のアンマスク分析データセットを生成し、前記分析データ格納部に当該分析データセットに対応付けられて格納されている当該分析データセットの出現頻度に対応付けて当該アンマスク分析データセットをアンマスク分析データ格納部に格納するステップと、
前記アンマスク分析データ格納部に格納されている同一のアンマスク分析データセットを集約して対応付けられている出現頻度を加算し、前記アンマスク分析データの種類と対応する出現頻度とを表すデータを、前記アンマスク分析データ格納部に格納するステップと、
を、コンピュータに実行させるための秘匿データ処理プログラム。
【請求項６】
分析処理を実施したコンピュータから受信した複数の分析データセットのうち出現頻度が上位所定数又は上位所定割合の複数の分析データセットを、前記分析データ格納部に格納するステップ
をさらに、前記コンピュータに実行させるための請求項４又は５記載の秘匿データ処理プログラム。
【請求項７】
前記予め定められた演算が、前記属性値と演算結果との関係が全単射となる
請求項４乃至６のいずれか１つ記載の秘匿データ処理プログラム。
【請求項８】
データベースにおけるマスク対象属性の数分のマスク値を、所定数セット生成し、マスクデータ格納部に格納するステップと、
前記マスク対象属性の属性値を含む複数のレコードの各々について、前記マスクデータ格納部に格納されている前記所定数セットのマスク値のいずれかを選択し、選択されたマスク値と対応するレコードにおけるマスク対象属性の属性値とについて予め定められた演算を実施することで前記複数のレコードのマスク化データを生成し、前記データ格納部に格納するマスク処理ステップと、
を含み、コンピュータにより実行される秘匿データ処理方法。
【請求項９】
データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている最も出現確率が高いセットのマスク値を読み出すステップと、
分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれる前記マスク化属性値と、読み出されたマスク値のうち該当するマスク値とについて予め定められたマスク演算の逆マスク演算を実施することでアンマスク化データを生成し、データ格納部に格納するステップと、
を含み、コンピュータにより実行させる秘匿データ処理方法。
【請求項１０】
分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれる前記マスク化属性値と、データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている各前記セットに含まれる該当マスク値とについて予め定められたマスク演算の逆マスク演算を実施することで、前記所定数のアンマスク分析データセットを生成し、前記分析データ格納部に当該分析データセットに対応付けられて格納されている当該分析データセットの出現頻度に対応付けて当該アンマスク分析データセットをアンマスク分析データ格納部に格納するステップと、
前記アンマスク分析データ格納部に格納されている同一のアンマスク分析データセットを集約して対応付けられている出現頻度を加算し、前記アンマスク分析データの種類と対応する出現頻度とを表すデータを、前記アンマスク分析データ格納部に格納するステップと、
を含み、コンピュータにより実行させる秘匿データ処理方法。
【請求項１１】
データベースにおけるマスク対象属性の数分のマスク値を、所定数セット格納するマスクデータ格納部と、
前記マスク対象属性の属性値を含む複数のレコードの各々について、前記マスクデータ格納部に格納されている前記所定数セットのマスク値のいずれかを選択し、選択されたマスク値と対応するレコードにおけるマスク対象属性の属性値とについて予め定められた演算を実施することで前記複数のレコードのマスク化データを生成し、前記データ格納部に格納するマスク処理部と、
を有する情報処理装置。
【請求項１２】
データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部と、
前記マスクデータ格納部に格納されている最も出現確率が高いセットのマスク値を読み出し、分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれる前記マスク化属性値と、読み出されたマスク値のうち該当するマスク値とについて予め定められたマスク演算の逆マスク演算を実施することでアンマスク化データを生成し、データ格納部に格納するアンマスク処理部と、
を有する情報処理装置。
【請求項１３】
データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部と、
マスク化属性値を含む複数の分析データセットを格納する分析データ格納部と、
前記分析データ格納部に格納されておいる前記複数の分析データセットの各々について、当該分析データセットに含まれる前記マスク化属性値と、前記マスクデータ格納部に格納されている各前記セットに含まれる該当マスク値とについて予め定められたマスク演算の逆マスク演算を実施することで、前記所定数のアンマスク分析データセットを生成し、前記分析データ格納部に当該分析データセットに対応付けられて格納されている当該分析データセットの出現頻度に対応付けて当該アンマスク分析データセットをアンマスク分析データ格納部に格納し、前記アンマスク分析データ格納部に格納されている同一のアンマスク分析データセットを集約して対応付けられている出現頻度を加算し、前記アンマスク分析データの種類と対応する出現頻度とを表すデータを、前記アンマスク分析データ格納部に格納するアンマスク処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、データ秘匿化技術に関する。
【背景技術】
【０００２】
データマイニング技術とは、データベースに格納された大量のデータに含まれるデータ間の相関関係を、コンピュータを用いて発見する技術である。この技術を用いることで、人間では処理不可能な大量のデータに対しても、データ間の相関関係を発見することができる。データマイニング技術の利用方法の代表例が、消費者が購入する商品の組み合わせの発見であり、データマイニングを用いることで、紙おむつを購入する消費者は、一緒にビールを購入する頻度が高い、といった相関関係を発見することができ、これらの相関関係の高い商品を互いに近くに陳列することで、売上高を伸ばすことが期待される。【０００３】
従来、データマイニングを行う場合には、自社のコンピュータを用いてデータ収集と分析を行っていた。しかし、今後クラウドコンピューティングの普及に伴い、データの収集と分析を外部のクラウドコンピューティング環境で実施することで、システムの維持コストを低く抑えつつ、高い分析効果を得るといった方法が主流となると予想される。データの収集と分析を外部のクラウドコンピューティング環境に任せることでコストを削減できる反面、プライバシーが低下するという問題が知られている。すなわち、従来のデータマイニングでは自社の閉じた計算機環境で処理を行っており、機密情報の漏洩が発生しにくかったのに対し、クラウドコンピューティングを利用したデータマイニングでは、オープンな計算機環境を複数の利用者により利用するため、機密情報の漏洩リスクが高まると予想されている。【０００４】
クラウドコンピューティングのようなオープンな環境下でも、安全な分析を実現するための従来技術として、プライバシー保護データマイニング（Privacy Preserving Data Mining。以下 ＰＰＤＭと記す。）が知られている。【０００５】
ＰＰＤＭには、いくつかの実現方式が知られている。代表的な方式として、データのランダム化を用いた方法が知られている。【０００６】
このデータのランダム化を用いたＰＰＤＭでは、データ分析に用いられるデータベーステーブルに対して、オリジナルデータをそのままデータベースに保持するのではなく、オリジナルデータに対し乱数を加算したデータをデータベースに保持する。図１（ａ）に示すように、オリジナルのデータベースには、例えば氏名、住所、年齢といった属性の属性値を含む複数のレコードが含まれる。これに対して、図１（ｂ）に示すように、各レコードの各属性値に対して、乱数値（Ｒ1乃至Ｒ5、Ｓ1乃至Ｓ5及びＴ1乃至Ｔ5）を加算することでマスクして、データベース上の個々のレコードからの機密情報の漏洩を防止する。【０００７】
データのマスクに用いられる乱数を「マスク値」と呼ぶが、この「マスク値」が有する統計的特徴を、データベース全体が持つ統計的特徴より小さく抑えることで、乱数によるマスク化されたデータベースからも、必要な分析情報を得ることができる。従って、データマイニングで求めるべき全体傾向の分析を実施することができる。例えば、「年齢」という属性のデータに対し、−５から＋５の範囲の乱数を加えることで、個々のレコードのデータをマスクしながら、「２０歳代」「３０歳代」という大まかな年齢の特徴に関する傾向分析を実施することができる。ただし、データのランダム化を用いるＰＰＤＭには、以下に示す２つの問題があることが知られている。【０００８】
（Ａ）分析精度の低下
データをマスクするため、基本的には分析結果の低下を伴うが、分析対象のデータの種類や、用いる分析アルゴリズムの種類によっては、さらに深刻な分析精度の低下を引き起こす。例えば、「年齢」という属性のデータに対し、−５から＋５の範囲の乱数を加えてマスクした場合、「２０歳代」「３０歳代」という大まかな年齢の特徴に関する傾向分析を実施することができるが、マスクしない状態で「年齢」属性を用いたデータ分析を行った場合と比較して、相対的に分析精度が低下する。【０００９】
しかし、それでも「２０歳代」「３０歳代」という大まかな年齢の特徴に関する傾向分析が実施できるメリットを有するが、このメリットを有するのは、年齢が「数値属性」と呼ばれる属性であることによるものである。「数値属性」とは、属性を表すデータ間に大小関係があるものであり、例えば「年齢」「身長」「体重」「年収」などの数値を表すデータが該当する。数値属性の特徴は、真の値から多少ずれた値を用いたとしても、大まかな傾向分析を行うことができる点である。これに対して、「カテゴリ属性」と呼ばれる属性は、属性を表すデータ値に大小関係がないものであり、例えば、「人名」「性別」「商品名」「職種」などの種類を表すデータが該当する。カテゴリ属性の特徴は、真の値から多少でもずれた値を用いた場合、分析が困難となることである。特に、アプリオリ（Apriori）と呼ばれ且つ消費者が購入する商品の種類の相関を求めるために利用される分析アルゴリズムを、カテゴリ属性を含むデータに対して実行した場合、分析精度が著しく悪くなるという問題がある。原因は、Aprioriの基本アルゴリズムが、各レコードの属性間の相関関係の発生頻度をカウントするのに対し、データのランダム化を用いたＰＰＤＭでは、属性間を互いに相関性のない乱数を用いてマスクするためである。すなわち、この乱数により同一レコード間の相関関係が分断されるため、有効な相関関係のデータを収集できなくなる。【００１０】
より具体的には、図２に示すように、性別、年齢、購入商品１、購入商品２といった属性を含む複数のレコードにおいて、性別の属性値には乱数Ｒ1乃至Ｒ5を加算し、年齢の属性値には乱数Ｓ1乃至Ｓ5を加算し、購入商品１の属性値には乱数Ｔ1乃至Ｔ5を加算し、購入商品２の属性値には乱数Ｕ1乃至Ｕ5が加算されている。そして、同一のレコードの属性値であっても加算される乱数は全く相関もない値となっているため、上で述べたような問題が生ずる。【００１１】
（Ｂ）オリジナルデータへの再変換のコストが高い
さらに、分析とは別の目的で、マスク化前のオリジナルのデータ（すなわち真のデータ値）を個別に参照する場合、データのランダム化を用いたＰＰＤＭを用いると、オリジナルのデータに再変換するためのコストが高いという問題がある。すなわち、秘匿化する全てのデータを互いに相関のない乱数でマスクしているため、図３に示すように、アンマスクすることでマスク前の状態に戻すには、全てのマスク値のデータを別途保持することになる。すなわち、データベースのデータ量が２倍となるためコストが高くなる。【００１２】
ここで、上で述べたAprioriアルゴリズムについて説明しておく。【００１３】
Aprioriアルゴリズムは、消費者の行動分析に用いられる代表的なアルゴリズムであり、紙おむつを購入する消費者は、一緒にビールを購入する頻度が高い、といった相関関係を発見することができる。データベースのテーブル中に出現するアイテムの組み合わせ数をカウントすることで、データベースの内部データ間の相関関係を分析する。【００１４】
以下では、Aprioriアルゴリズムの具体的処理内容について、簡単なサンプルを用いて説明する。例えば、以下では図４に示すようなテーブルを処理するものとする。図４の例では、各レコードが、消費者が購入した商品のリストを表しており、例えば、顧客ＩＤ「3021」の顧客はビール、枝豆、電池、紙おむつを購入しており、顧客ＩＤ「3022」は牛肉、シャツ、紙おむつを購入していることを表している。【００１５】
このテーブルから、購入商品の組み合わせの相関関係を分析するために、Aprioriアルゴリズムでは、アイテム集合の数え上げを実行する。アイテム集合とは、｛ビール，枝豆，牛肉，紙おむつ｝といったような、消費者ごとの購入商品の任意の組み合わせである。例えば、｛ビール，枝豆｝や、｛電池，牛肉，シャツ｝や、｛ビール，牛肉，電池，紙おむつ｝など、任意の購入商品の組み合わせである。Aprioriアルゴリズムでは、これらの組み合わせのうち、出現頻度の高いアイテム集合の数え上げを実行する。例えば、｛ビール，枝豆｝は、顧客ＩＤ「3021」「3023」「3025」において出現し、５人中３人で出現する頻度の高いアイテム集合であるのに対し、｛ビール，電池｝は、顧客ＩＤ「3021」でしか出現しない頻度の低いアイテム集合である。Aprioriアルゴリズムの目的は、出現頻度の高いアイテム集合を求めることである。【００１６】
Aprioriアルゴリズムでは、出現頻度の高いアイテム集合を求めるために、アイテム集合に含まれるアイテムの個数を一つずつ増やしながら、出現頻度のカウントを行う。これは、｛ビール｝単品の出現頻度が少ない場合、｛ビール，枝豆｝の組み合わせの出現頻度も少なくなるという性質を利用している。もし、｛ビール｝単品の出現頻度が高ければ、もう１つアイテムを増やした｛ビール，枝豆｝の出現頻度も高い可能性がある。そして｛ビール，枝豆｝の出現頻度を数え上げた結果十分高ければ、もう１つアイテムを増やした｛ビール，枝豆，紙おむつ｝の出現頻度も同様に高い可能性がある。【００１７】
このように、アイテムを１つずつ増やしながら出現頻度を数え上げる。一般的なデータベーステーブルを用いた場合、任意のアイテムの組み合わせの出現頻度を数え上げるのは指数的な計算コストがかかるため現実的でないが、Aprioriアルゴリズムではアイテムを少しずつ増やしながら数え上げを行うことで、出現頻度の効率的な数え上げを実現する。【００１８】
図４に示したテーブルについてAprioriアルゴリズムで数え上げを実施する過程を図５Ａ乃至図５Ｈに示す。なお、以下では、説明を簡略化するために、ビール＝Ａ、枝豆＝Ｂ、電池＝Ｃ、牛肉＝Ｄ、シャツ＝Ｅ及び紙おむつ＝Ｆとする。  図５Ａは、図４を上で述べたようにＡＢＣＤＥＦで表現し直したものである。そして、アイテム１つで出現頻度を計数すれば、図５Ｂに示すような結果が得られる。ここでＣは出現頻度が少ないので除外されている。そうすると、図５Ｃに示すようなアイテム２つのアイテム集合が生成される。このように生成されたアイテム集合毎に出現頻度を計数すると、図５Ｄに示すような結果が得られる。よって、図５Ｅに示すように、出現頻度が高いもの（２以上）は｛Ａ，Ｂ｝，｛Ａ，Ｄ｝，｛Ａ，Ｆ｝，｛Ｂ，Ｄ｝，｛Ｂ，Ｆ｝，｛Ｄ，Ｅ｝，｛Ｄ，Ｆ｝と特定される。この中から、アイテム３つのアイテム集合を生成すると、図５Ｆに示すようになる。このような各アイテム集合について、出現頻度を計数すると、図５Ｇに示すような結果が得られる。図５Ｇに示した結果から、出現頻度が高いアイテム集合（２以上）を抽出すると、図５Ｈに示すようになる。すなわち、｛Ａ，Ｂ，Ｄ｝，｛Ａ，Ｂ，Ｆ｝，｛Ｂ，Ｄ，Ｆ｝が得られる。【００１９】
このような出現頻度の数え上げが完了すれば、あとはアイテム間の相関関係を求めるのは容易である。なぜなら、｛Ａ，Ｂ，Ｆ｝が２回、｛Ａ，Ｂ｝が３回出現するということは、｛Ａ，Ｂ｝ならば｛Ａ，Ｂ，Ｆ｝である確率が２／３で成立することを意味する。【００２０】
このように、ＡかつＢを前提とした場合、結果Ｆが高確率で期待できることを、Ａ＆Ｂ−＞Ｆという記号で表記する。すなわち、｛Ａ，Ｂ｝＝｛ビール，枝豆｝を購入する消費者（全体の３／５という大きな割合を占める）は、高い確率２／３で｛Ａ，Ｂ，Ｆ｝＝｛ビール，枝豆，紙おむつ｝を購入するという結論が導出できる。その他の購入品の組み合わせの相関については、出現頻度が高い他のアイテム集合の組み合わせを用いることで、同様に導出することができる。【００２１】
このように、Aprioriアルゴリズムでは、｛Ａ，Ｂ，Ｆ｝のようなアイテムの組み合わせの出現頻度の数え上げに基づいた分析が実行される。このアイテムの組み合わせは、図４に示される、「購入商品１」「購入商品２」「購入商品３」「購入商品４」の属性値の組み合わせである。すなわち、Aprioriアルゴリズムは、データベースの各レコードにおける属性値の組み合わせの出現頻度をカウントする処理に基づいている。よって、図２に示されるような従来のＰＰＤＭを用いた場合、属性間が互いに相関のない乱数値でマスクされ、数え上げ結果が完全にランダム化されるため、適切な分析結果を得ることができない。
【先行技術文献】
【非特許文献】
【００２２】
【非特許文献１】Agarwal R. and Srikant R. “Privacy-Preserving Data Mining” Proceedings of the ACM SIGMOD Conference, 2000
【非特許文献２】Yehuda L. and Benny P. “Privacy-Preserving Data Mining”, Advances in Cryptology (CRYPTO 2000), pp.36-54, LNCS vol.1880, Springer-Verlag, 2000.
【非特許文献３】Agrawal R., T.Imielinski, and A.Swami. “Mining Association Rules Between Sets of Items in Large Databases”, Proceedings of the ACM SIGMOD Inter-national Conference on Management of Data, ACM SIGMOD, ACM, pp.207-216.
【非特許文献４】Agrawal R. and R.Srikant, “Fast Algorithms for Mining Association Rules in Large Databases”, Proceedings of the International Conference on Very Large Databases, pp.478 - 499.
【発明の概要】
【発明が解決しようとする課題】
【００２３】
従って、本技術の目的は、一側面において、データを秘匿化したまま分析処理を適切に実施できるようにするための新規な技術を提供することである。
【課題を解決するための手段】
【００２４】
本技術の第１の態様に係る秘匿データ処理方法は、（Ａ）データベースにおけるマスク対象属性の数分のマスク値を、所定数セット生成し、マスクデータ格納部に格納するステップと、（Ｂ）マスク対象属性の属性値を含む複数のレコードの各々について、マスクデータ格納部に格納されている所定数セットのマスク値のいずれかを選択し、選択されたマスク値と対応するレコードにおけるマスク対象属性の属性値とについて予め定められた演算を実施することで複数のレコードのマスク化データを生成し、データ格納部に格納するマスク処理ステップとを含む。【００２５】
本技術の第２の態様に係る秘匿データ処理方法は、（Ａ）データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている最も出現確率が高いセットのマスク値を読み出すステップと、（Ｂ）分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれるマスク化属性値と、読み出されたマスク値のうち該当するマスク値とについて予め定められたマスク演算の逆マスク演算を実施することでアンマスク化データを生成し、データ格納部に格納するステップとを含む。【００２６】
本技術の第３の態様に係る秘匿データ処理方法は、（Ａ）分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれるマスク化属性値と、データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている各セットに含まれる該当マスク値とについて予め定められたマスク演算の逆マスク演算を実施することで、所定数のアンマスク分析データセットを生成し、分析データ格納部に当該分析データセットに対応付けられて格納されている当該分析データセットの出現頻度に対応付けて当該アンマスク分析データセットをアンマスク分析データ格納部に格納するステップと、（Ｂ）アンマスク分析データ格納部に格納されている同一のアンマスク分析データセットを集約して対応付けられている出現頻度を加算し、アンマスク分析データの種類と対応する出現頻度とを表すデータを、アンマスク分析データ格納部に格納するステップとを含む。
【図面の簡単な説明】
【００２７】
【図１】図１（ａ）及び（ｂ）は、従来技術を説明するための図である。
【図２】図２は、従来技術を説明するための図である。
【図３】図３は、従来技術を説明するための図である。
【図４】図４は、従来技術を説明するための図である。
【図５Ａ】図５Ａは、Aprioriアルゴリズムを説明するための図である。
【図５Ｂ】図５Ｂは、Aprioriアルゴリズムを説明するための図である。
【図５Ｃ】図５Ｃは、Aprioriアルゴリズムを説明するための図である。
【図５Ｄ】図５Ｄは、Aprioriアルゴリズムを説明するための図である。
【図５Ｅ】図５Ｅは、Aprioriアルゴリズムを説明するための図である。
【図５Ｆ】図５Ｆは、Aprioriアルゴリズムを説明するための図である。
【図５Ｇ】図５Ｇは、Aprioriアルゴリズムを説明するための図である。
【図５Ｈ】図５Ｈは、Aprioriアルゴリズムを説明するための図である。
【図６】図６（ａ）及び（ｂ）は、本技術の実施の形態を説明するための図である。
【図７】図７は、本実施の形態の効果を説明するための図である。
【図８】図８は、実施の形態のシステム概要図である。
【図９】図９は、ユーザ装置の機能ブロック図である。
【図１０】図１０は、初期処理部の処理を説明するための図である。
【図１１】図１１は、第１の実施の形態におけるマスク処理の処理フローを示す図である。
【図１２】図１２は、第１の実施の形態におけるアンマスク処理の処理フローを示す図である。
【図１３】図１３は、第１の実施の形態におけるアンマスク処理の処理フローを示す図である。
【図１４】図１４は、第１の実施の形態におけるアンマスク処理の概要を説明するための図である。
【図１５】図１５は、第２の実施の形態におけるマスク処理の処理フローを示す図である。
【図１６】図１６は、第２の実施の形態におけるアンマスク処理の概要を説明するための図である。
【図１７】図１７は、第２の実施の形態におけるアンマスク処理の処理フローを示す図である。
【図１８】図１８は、第２の実施の形態におけるアンマスク処理の処理フローを示す図である。
【図１９】図１９は、第２の実施の形態におけるアンマスク処理の処理フローを示す図である。
【図２０Ａ】図２０Ａは、クロス集計を説明するための図である。
【図２０Ｂ】図２０Ｂは、クロス集計を説明するための図である。
【図２０Ｃ】図２０Ｃは、クロス集計を説明するための図である。
【図２１】図２１は、第３の実施の形態におけるアンマスク処理の概要を示すための図である。
【図２２】図２２は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００２８】
最初に、本技術の実施の形態において行われる処理について簡単に説明説明しておく。
【００２９】
従来のマスク処理は、図２に示されるように、属性間でマスクする値に、それぞれ独立した乱数を与えていた。これにより、属性間の相関が分断され、適切な分析結果を得ることができなかった。これに対し、本技術の実施の形態においては図６（ａ）及び（ｂ）に示されるように、複数のマスク値を含むマスク値集合をＮ個事前に用意しておき、これらの中から１つを、データベースの行毎に乱数によって選択し、当該マスク値集合でレコードをマスクする。
【００３０】
マスク値集合とは、各マスク対象属性に対するマスク値を１つの集合として表したものである。例えば、図６（ａ）及び（ｂ）に示すようにマスク対象属性が３種類の場合において、２種類のマスク値集合を乱数で切り替える場合、図６（ｂ）に示されるように、マスク値集合として、｛Ｆ1，Ｇ1，Ｈ1｝と｛Ｆ2，Ｇ2，Ｈ2｝の２種類準備しておく。ただし、｛Ｆ1，Ｇ1，Ｈ1｝と｛Ｆ2，Ｇ2，Ｈ2｝は、全て定数である。Ｆ1及びＦ2は第１の属性を、Ｇ1及びＧ2は第２の属性を、Ｈ1及びＨ2は第３の属性をマスクするためのマスク値であり、行毎に｛Ｆ1，Ｇ1，Ｈ1｝又は｛Ｆ2，Ｇ2，Ｈ2｝のいずれかを乱数により選択して、属性値のマスクに用いる。
【００３１】
｛Ｆ1，Ｇ1，Ｈ1｝と｛Ｆ2，Ｇ2，Ｈ2｝のように、属性間で連動させたマスク値を用いることで、属性間の相関をマスク値でシフトした状態で保存しながらマスク化することができるため、Aprioriアルゴリズム等を用いた場合でも分析精度の低下が発生しない。
【００３２】
ここで分析精度の低下が抑制される理由を説明する。例えば、マスク化を行わない通常のテーブルに対してAprioriアルゴリズムを適用して数え上げを行った結果が｛Ａ，Ｂ，Ｄ｝の出現頻度が１０回であったとする。この際、２種類のマスク値集合｛Ｆ1，Ｇ1，Ｈ1｝と｛Ｆ2，Ｇ2，Ｈ2｝とを乱数で選択する方式を用いると、｛Ａ＋Ｆ1，Ｂ＋Ｇ1，Ｄ＋Ｈ1｝と｛Ａ＋Ｆ2，Ｂ＋Ｇ2，Ｄ＋Ｈ2｝とが合計１０回出現する。乱数に偏りがない場合には、平均的にはそれぞれ５回ずつ出現する。
【００３３】
このようなマスク化を解除し、アンマスク化した数え上げ結果を得るためには、｛Ｆ1，Ｇ1，Ｈ1｝と｛Ｆ2，Ｇ2，Ｈ2｝とを用いることになるが、これらの値を知っていれば、アンマスク化した数え上げ結果を得ることができる。後に、アンマスク化した数え上げ結果を得る手法を詳細に説明する。
【００３４】
よって数え上げ結果に対して｛Ｆ1，Ｇ1，Ｈ1｝と｛Ｆ2，Ｇ2，Ｈ2｝との値をアンマスクのために用いるという特質を利用することで、これらの値を鍵として用いた安全なデータマイニングを実現することができる。すなわち、マスク化したままの状態で、分析処理を行うことで、オープンな環境下での分析を安全に実施しつつ、得られた分析結果に対して、アンマスクを行うことで、適切な分析結果を得ることができる。高い計算機の処理能力を必要とするデータの分析処理を、クラウドコンピューティング環境で実施することで、メインのシステムコストを低く抑えつつ、演算結果が出力された後の復号処理を、自社の閉じた安全な計算環境で実施することで、システムのコスト削減と、機密情報の漏洩防止を両立すること実現できる。
【００３５】
さらに、本実施の形態では、オリジナルデータへの再変換のコストが少なくなっている。すなわち、従来手法によるＰＰＤＭを用いた場合、図３に示したように、マスクされたデータのテーブルと、ほぼ同サイズの、マスク値のテーブルを保持することになっていたのに対し、図７に模式的に示すように、マスク値のテーブルの代わりに、いずれのマスク値集合を選択したかを表すマスク選択データ及び使用したマスク値集合のデータを保持すればよい。マスク値のテーブルを保持する方法と異なり、マスク選択データを保持するためのデータ量は非常に小さいため、オリジナルデータへの再変換のコストを削減することができる。
【００３６】
［実施の形態１］
図８に本実施の形態に係るシステムの構成図を示す。本実施の形態では、例えばインターネット等のネットワーク１を介して、データ分析サービスを提供するクラウドコンピューティング環境５が、複数のユーザに対して提供されている。各ユーザは、ネットワーク１にユーザ装置３及び７を接続して、当該ユーザ装置３及び７を用いてクラウドコンピューティング環境５を利用する。
【００３７】
クラウドコンピューティング環境５には、ユーザ装置３及び７から受信したデータを蓄積するデータベース５３と、各種の分析処理を実施する分析装置５１とを有する。本実施の形態では、分析装置５１で実施される分析処理は、上で述べたAprioriアルゴリズムの他クロス集計など各種の分析処理を含むが、従来から行われていたものと同じである。
【００３８】
図９に、ユーザ装置３の機能ブロック図を示す。ユーザ装置３は、データ送信部３１と、データ収集部４１と、データ格納部３２と、初期処理部３３と、マスクデータ格納部３５と、マスク処理部３４と、データ受信部３６と、分析データ格納部３７と、マスク化データ格納部３８と、アンマスク処理部３９と、アンマスク分析データ格納部４０と、オリジナルデータ格納部４２とを有する。
【００３９】
データ収集部４１は、オリジナルのデータを収集する処理を行い、収集したオリジナルのデータをデータ格納部３２に格納する。なお、このようにユーザのシステム内のデータを自動的に収集するようにしても良いし、ユーザの指示に応じて、データ格納部３２に格納するようにしても良い。
【００４０】
初期処理部３３は、設定又はユーザの指示に応じてマスク値集合を生成して、マスクデータ格納部３５に格納する。マスク処理部３４は、マスクデータ格納部３５に格納されているマスク値集合を用いてマスク処理を実施して、マスク化されたデータをデータ格納部３２に格納する。オリジナルのデータを置換するように格納しても良いし、別領域に格納するようにしても良い。なお、マスク処理部３４は、上で述べたマスク選択データについても、データ格納部３２に格納する。また、マスク選択データについても別データ格納部に格納するようにしてもよい。データ送信部３１は、マスク化データを、クラウドコンピューティング環境５におけるデータベース５３にネットワーク１を介して格納する。
【００４１】
一方、ユーザ装置３からの指示、ネットワーク１に接続されているユーザ端末からの指示、又は定期的に、分析装置５１は、データベース５３に格納されているマスク化データについて上で述べたように所定の分析処理を実施し、マスク化された分析データを生成して、ユーザ装置３に送信する。
【００４２】
ユーザ装置３のデータ受信部３６は、受信した分析データを分析データ格納部３７に格納する。アンマスク処理部３９は、分析データ格納部３７に格納されているマスク化された分析データに対して、マスクデータ格納部３５に格納されているマスク値集合を用いて以下で説明するアンマスク処理を実施し、処理結果をアンマスク分析データ格納部４０に格納する。
【００４３】
なお、本実施の形態の主旨ではないが、オリジナルデータを復元したい場合には、例えばデータ受信部３６がデータベース５３からマスク化データを読み出し、そのマスク化データをマスク化データ格納部３８に格納する。アンマスク処理部３９は、マスク化データ格納部３８に格納されているマスク化データに対して、マスクデータ格納部３５に格納されているマスク値集合及びデータ格納部３２に格納されているマスク選択データを用いてマスク処理の逆演算を実施して、処理結果であるオリジナルデータをオリジナルデータ格納部４２に格納する。本実施の形態では、オリジナルデータは、複数のレコードを含むデータベースのデータであるものとする。
【００４４】
次に、本実施の形態に係る初期処理部３３の処理について図１０を用いて説明する。初期処理部３３は、ユーザの指示又は設定に基づき、マスク対象属性の個数Ｋ及びマスク値集合の個数Ｎを特定する（ステップＳ１）。そして、初期処理部３３は、カウンタｃを１に初期化する（ステップＳ３）。さらに、初期処理部３３は、ｋ個のマスク値を乱数で生成し、マスク値集合Ｍａｓｋ［ｃ］＝｛Ｍc,1，Ｍc,2，...Ｍc,k｝として、マスクデータ格納部３５に格納する（ステップＳ５）。
【００４５】
そして、初期処理部３３は、ｃを１インクリメントして（ステップＳ７）、ｃがＮ以下であるか判断する（ステップＳ９）。ｃがＮ以下であればステップＳ５に戻る。一方、ｃがＮを超える場合には、処理を終了する。
【００４６】
このような処理を実施することで、ｋ個の乱数を含むマスク値集合がＮセット生成されて、マスクデータ格納部３５に格納されることになる。ｋ個の乱数は、ｋ個のマスク対象属性の何れかに用いられる。
【００４７】
次に、図１１を用いて、マスク処理部３４の処理について説明する。まず、マスク処理部３４は、データ格納部３２に格納されているオリジナルデータに含まれるレコードのカウンタであるＬを１に初期化する（ステップＳ１１）。そして、マスク処理部３４は、データ格納部３２から、オリジナルデータのＬ行目におけるマスク対象属性の属性値Ｄを読み出す（ステップＳ１３）。上でも述べたように、マスク対象属性はｋ個あるので、Ｄ＝｛DataL,1，DataL,2，...DataL,k｝を読み出すことになる。
【００４８】
また、マスク処理部３４は、１乃至Ｎ以下の範囲内で、ある分布に従って乱数ｒを生成する（ステップＳ１５）。ある分布とは、ｒ＝ｓとなる確率が最も高くなるような分布である。これは以下で説明するアンマスク処理のためである。そして、マスク処理部３４は、Ｌとｒの対応関係をマスク選択データとして、データ格納部３２に格納する（ステップＳ１７）。これによってオリジナルデータを復元できるようになる。
【００４９】
さらに、マスク処理部３４は、マスク値集合Ｍａｓｋ［ｒ］を用いたマスク化を行うことでマスク化データＤmを生成する（ステップＳ１９）。Ｍａｓｋ［ｒ］＝｛Ｍr,1，Ｍr,2，...Ｍr,k｝をマスクデータ格納部３５から読み出し、Ｄm＝｛ｆ（DataL,1,Ｍr,1），ｆ（DataL,2,Ｍr,2），...ｆ（DataL,k,Ｍr,k）｝を生成する。
【００５０】
ここで関数ｆ（ｘ，ｙ）＝ｚは、ｘとｚとの関係が全単射の関係であれば、どのような関数であっても良い。すなわち、ｆ（ｘ，ｙ）＝ｚで示されるように、ｘからｚを求める関数に対して、ｚからｘを一意に決定するためのｆ-1（ｚ，ｙ）＝ｘで示される逆関数ｆ-1が存在すればよい。このような関数の一例としては、以下のようなものがある。
加算：ｚ＝ｆ（ｘ，ｙ）＝ｘ＋ｙ，ｆ-1（ｚ，ｙ）＝ｚ−ｙ＝ｘ
加算剰余：ｚ＝ｆ（ｘ，ｙ）＝ｘ＋ｙ（mod T），ｆ-1（ｚ，ｙ）＝ｚ−ｙ（mod T）＝ｘ
減算：ｚ＝ｆ（ｘ，ｙ）＝ｘ−ｙ，ｆ-1（ｚ，ｙ）＝ｚ＋ｙ＝ｘ
減算剰余：ｚ＝ｆ（ｘ，ｙ）＝ｘ−ｙ（mod T），ｆ-1（ｚ，ｙ）＝ｚ＋ｙ（mod T）＝ｘ
排他的論理和（ＸＯＲ）：ｚ＝ｆ（ｘ，ｙ）＝ｘ XOR ｙ，ｆ-1（ｚ，ｙ）＝ｚ XOR ｙ＝ｘ
乗算：ｚ＝ｆ（ｘ，ｙ）＝ｘ＊ｙ，ｆ-1（ｚ，ｙ）＝ｚ／ｙ＝ｘ
乗算剰余：ｚ＝ｆ（ｘ，ｙ）＝ｘ＊ｙ（mod T），ｆ-1（ｚ，ｙ）＝ｚ＊ｙ-1（mod T）＝ｘ
【００５１】
なお、Ｔは定数であり、例えば、Ｔ＝２32等のワード値のデータパターン数を表す定数が用いられる。上記関数は、他の関数であっても良いが、なるべく簡単な演算のものが好ましい。なぜなら、ｆ（ｘ，ｙ）はデータベースをマスク化するための演算を表すが、データマイニングにおいては、用途によってはデータベースに入力するデータがリアルタイムに収集され、且つそのデータ量が膨大となるためである。例えば、世界中に配置された多数のセンシングデバイスから収集された観測データを、リアルタイムでマスク化しながらデータベースに格納する場合、ｆ（ｘ，ｙ）の演算処理が大きな計算時間を伴うならば、マスク化処理に大きな負荷がかかり、データ収集のリアルタイム性が失われる。よって、マスク化処理の関数ｆ（ｘ，ｙ）は、上記の事例に示されるような、簡単な演算処理が望ましい。
【００５２】
その後、マスク処理部３４は、データ格納部３２において、オリジナルデータのＬ行目におけるマスク対象属性の属性値Ｄを、マスク化データＤmで置換する（ステップＳ２１）。ここでは、オリジナルデータをユーザ装置３内では保存しない場合を示しており、保存しておく場合にはステップＳ２１で別の領域にマスク化データとマスク対象属性以外の属性の属性値を格納する。その後、マスク処理部３４は、ＬはＬを１インクリメントして（ステップＳ２３）、Ｌが、オリジナルデータのレコード数Ｌmax以下であるか判断する（ステップＳ２５）。ＬがＬmax以下である場合にはステップＳ１３に戻る。一方、ＬがＬmaxを超えた場合には処理を終了する。
【００５３】
このような処理を実施することで、各マスク対象属性の属性値をマスクすることができる。また、その際には、レコード内のマスク対象属性の属性値を、関連性を持たせたマスク化値でマスクするので、分析処理を適切に行うことができる。なお、オリジナルデータを復元するためのマスク選択データのサイズも小さいため、データ保持のためのデータ容量を削減することができる。
【００５４】
なお、分析処理は、例えばAprioriアルゴリズムであり、ここでは説明を省略する。すなわち、マスク化したままで従来のとおり分析処理を実施しているので、分析結果についてもマスク化されたままである。
【００５５】
次に、図１２乃至図１４を用いて、アンマスク時の処理について説明する。まず、データ受信部３６は、分析装置５１から分析処理の結果である分析データを受信し、分析データ格納部３７に格納する（ステップＳ３１）。分析データはマスク化されたままであり、Aprioriアルゴリズムであればアイテム集合とその出現頻度のデータを含む。
【００５６】
そして、アンマスク処理部３９は、分析データ格納部３７に格納されている分析データの中から、出現頻度が高い上位Ｕ個のアイテム集合Ｃiを抽出する（ステップＳ３３）。アイテム集合については以下のように表すものとする。
Ｃ1＝｛Ｉ1,1，Ｉ1,2，...Ｉ1,max_1｝
Ｃ2＝｛Ｉ2,1，Ｉ2,2，...Ｉ2,max_2｝
ＣU＝｛ＩU,1，ＩU,2，...ＩU,max_U｝
【００５７】
また、アンマスク処理部３９は、マスクデータ格納部３５に格納されているマスク値集合のうち、出現頻度が最も高いマスク値集合Ｍａｓｋ［ｓ］を読み出す（ステップＳ３５）。
【００５８】
また、アンマスク処理部３９は、アイテム集合についてのカウンタｉ及びアイテムについてのカウンタｊを１に初期化する（ステップＳ３７）。さらに、アンマスク処理部３９は、アンマスク分析データＤiに空集合をセットする（ステップＳ３９）。そして、アンマスク処理部３９は、アイテム集合Ｃiのｊ番目のアイテム値Ｉi,jを特定する（ステップＳ４１）。処理は端子Ａを介して図１３の処理に移行する。
【００５９】
図１３の処理の説明に移行して、アンマスク処理部３９は、Ｉi,jはマスク対象属性の属性値であるか判断する（ステップＳ４３）。例えばAprioriアルゴリズムにおいて取り扱われるＡ、Ｂ、Ｃ等のアイテムは、上では簡略化のため属性値（例えば「性別」という属性に対する属性値は「男」及び「女」の２種類）として表現しているが、実際には、個々のアイテムは属性値だけでなく属性と属性値の組み合わせ、例えば「性別」＝「男性」として表現しているため、マスク対象属性の属性値であるか否かを判断することができる。すなわち、「男性」部分はマスク化されているが、「性別」部分についてはマスク化されていない。
【００６０】
Ｉi,jはマスク対象属性の属性値でない場合には、アンマスク処理部３９は、Ｉi,jをＩに設定する（ステップＳ４５）。マスク対象属性でなければ、その属性値をアンマスクしなくても良いからである。その後ステップＳ５１に移行する。
【００６１】
一方、Ｉi,jはマスク対象属性の属性値である場合には、アンマスク処理部３９は、Ｍａｓｋ［ｓ］において、Ｉi,jに係る属性のマスク値を特定し、Ｍに設定する（ステップＳ４７）。上でも述べたように、Ｉi,jがいずれのマスク対象属性の属性値であるかが分かれば、対応するマスク値も特定できる。
【００６２】
そして、アンマスク処理部３９は、Ｉi,jをＭでアンマスクし、アンマスク値をＩに設定する（ステップＳ４９）。すなわち、Ｉ＝ｆ-1（Ｉi,j，Ｍ）＝ｆ-1（ｆ（Data，Ｍ），Ｍ）＝Dataとなる。（但し、これは正しいマスク値集合が適用された場合である。
【００６３】
その後、アンマスク処理部３９は、集合ＤiにＩを追加する（ステップＳ５１）。そして、アンマスク処理部３９は、ｊを１インクリメントし（ステップＳ５３）、ｊがｊの最大値であるｊmax以下であるか判断する（ステップＳ５５）。ｊがｊmax以下であれば端子Ｂを介してステップＳ４１に戻る。一方、ｊがｊmaxを超えている場合には、アンマスク処理部３９は、ｉを１インクリメントすると共に、ｊを１に初期化する（ステップＳ５７）。そして、アンマスク処理部３９は、ｉがＵ以下であるか判断する（ステップＳ５９）。ｉがＵ以下であれば端子Ｃを介してステップ３９に戻る。一方、ｉがＵを超えている場合には、アンマスク処理部３９は、集合Ｄiをアンマスク分析データ格納部４０に格納する（ステップＳ６１）。なお、集合Ｄiの出現頻度でソートした結果を格納するようにしても良い。なお、ユーザからの指示に応じて、アンマスク分析データ格納部４０に格納されているデータは、ユーザに提示される。これで処理を終了する。
【００６４】
このように、本実施の形態では、分析データに含まれるアイテム集合Ｃiがどのマスク値集合でマスク化されているか不明であるので、出現頻度が最も高いマスク値集合でアンマスクする。このような処理の有効性について以下に具体例で説明する。
【００６５】
図１４の左側に示すように、オリジナルデータに対してAprioriアルゴリズムで分析した結果、アイテム集合｛Ａ，Ｂ，Ｄ｝が２０００回、アイテム集合｛Ａ，Ｂ，Ｃ，Ｅ｝が１９００回、アイテム集合｛Ａ，Ｄ，Ｅ，Ｆ｝が１８００回検出されているとする。また、２つのマスク値集合が用いられており、Ｍａｓｋ［１］＝｛Ｍ1,1，Ｍ1,2，...Ｍ1,k｝の出現割合が０．６で、Ｍａｓｋ［２］＝｛Ｍ2,1，Ｍ2,2，...Ｍ2,k｝の出現割合が０．４であるものとする。
【００６６】
このような場合、マスク化データに対する分析結果は、図１４の中央に示すように、｛Ａ，Ｂ，Ｄ｝については、｛ｆ（Ａ，Ｍ1,1），ｆ（Ｂ，Ｍ1,2），ｆ（Ｄ，Ｍ1,4）｝という形で検出されるか、｛ｆ（Ａ，Ｍ2,1），ｆ（Ｂ，Ｍ2,2），ｆ（Ｄ，Ｍ2,4）｝という形で検出される。上で述べたようなマスク値集合の出現割合であれば、おおよそ前者が１２００回、後者が８００回検出される。
【００６７】
同様に、｛Ａ，Ｂ，Ｃ，Ｅ｝については、｛ｆ（Ａ，Ｍ1,1），ｆ（Ｂ，Ｍ1,2），ｆ（Ｃ，Ｍ1,3），ｆ（Ｅ，Ｍ1,5）｝という形で検出されるか、｛ｆ（Ａ，Ｍ2,1），ｆ（Ｂ，Ｍ2,2），ｆ（Ｃ，Ｍ2,3），ｆ（Ｅ，Ｍ2,5）｝という形で検出される。上で述べたようなマスク値集合の出現割合であれば、おおよそ前者が１１４０回、後者が７６０回検出される。
【００６８】
さらに、｛Ａ，Ｄ，Ｅ，Ｆ｝については、｛ｆ（Ａ，Ｍ1,1），ｆ（Ｄ，Ｍ1,4），ｆ（Ｅ，Ｍ1,5），ｆ（Ｆ，Ｍ1,6）｝という形で検出されるか、｛ｆ（Ａ，Ｍ2,1），ｆ（Ｄ，Ｍ2,4），ｆ（Ｅ，Ｍ2,5），ｆ（Ｆ，Ｍ2,6）｝という形で検出される。上で述べたようなマスク値集合の出現割合であれば、おおよそ前者が１０８０回、後者が７２０回検出される。
【００６９】
このように、マスク化の段階でマスク値の出現頻度に偏りがあり、Ｍａｓｋ［１］の出現頻度が高い場合には、マスク化分析データ（例えばアイテム集合）においてもＭａｓｋ［１］でマスクされたマスク化分析データの出現頻度の順位は維持される。従って、マスク化分析データ（例えばアイテム集合）のうち出現頻度の上位のもの（ここではＵ＝３）に対して、Ｍａｓｋ［１］でアンマスクすれば、図１４の右側に示すように、正しい結果が得られるようになる。出現頻度の正確な値は得られないが、順位は同じであり、データの傾向を把握する上では十分である。なお、マスク値集合の出現頻度の偏り方によっては順位についてもある程度の振れが発生する可能性があるが、傾向を把握する上では十分である。
【００７０】
以上のような処理を実施すれば、データをマスクしたままで分析処理を行うことができ、その分析結果を適切にアンマスクして分析結果を活用することができるようになる。
【００７１】
なお、上では最初にＵ個のアイテム集合に絞り込んだ上で、アンマスクを実施するようになっているが、出現頻度の値を対応付けて保持しておけば、アンマスク後に出現頻度の値でソートして、上位Ｕ個を採用するようにしても良い。
【００７２】
［実施の形態２］
次に、第２の実施の形態について図１５乃至図１９を用いて説明する。なお、システム全体構成、クラウドコンピューティング環境５内の分析装置５１及びデータベース５３の構成、ユーザ装置３の構成については、実施の形態１と同じであるから、説明を省略する。また、初期処理の内容についても図１０で説明したものと同じであるから、説明を省略する。
【００７３】
次に、本実施の形態に係るマスク処理について図１５を用いて説明する。
【００７４】
まず、マスク処理部３４は、データ格納部３２に格納されているオリジナルデータに含まれるレコードのカウンタであるＬを１に初期化する（ステップＳ６１）。そして、マスク処理部３４は、データ格納部３２から、オリジナルデータのＬ行目におけるマスク対象属性の属性値Ｄを読み出す（ステップＳ６３）。上でも述べたように、マスク対象属性はｋ個あるので、Ｄ＝｛DataL,1，DataL,2，...DataL,k｝を読み出すことになる。
【００７５】
また、マスク処理部３４は、１乃至Ｎ以下の範囲内で、均一な乱数ｒを生成する（ステップＳ６５）。第１の実施の形態とは異なり、本実施の形態では、出現頻度が均一になるように乱数を発生させる。そして、マスク処理部３４は、Ｌとｒの対応関係をマスク選択データとして、データ格納部３２に格納する（ステップＳ６６）。これによってオリジナルデータを復元できるようになる。
【００７６】
さらに、マスク処理部３４は、マスク値集合Ｍａｓｋ［ｒ］を用いたマスク化を行うことでマスク化データＤmを生成する（ステップＳ６７）。Ｍａｓｋ［ｒ］＝｛Ｍr,1，Ｍr,2，...Ｍr,k｝をマスクデータ格納部３５から読み出し、Ｄm＝｛ｆ（DataL,1,Ｍr,1），ｆ（DataL,2,Ｍr,2），...ｆ（DataL,k,Ｍr,k）｝を生成する。
【００７７】
本実施の形態では、関数ｆ（ｘ，ｙ）＝ｚは、ｘとｚとの関係が全単射の関係であって且つｆ（ａ，ｂ）≠ｆ-1（ａ，ｂ）を満たす関数となる。すなわち、加算、加算剰余、乗算、乗算剰余、減算、減算剰余は使用可能であるが、排他的論理和は利用不可能である。この理由については、アンマスク処理の説明において併せて説明する。その他については第１の実施の形態と同様である。
【００７８】
その後、マスク処理部３４は、データ格納部３２において、オリジナルデータのＬ行目におけるマスク対象属性の属性値Ｄを、マスク化データＤmで置換する（ステップＳ６９）。ここでは、オリジナルデータをユーザ装置３内では保存しない場合を示しており、保存しておく場合にはステップＳ６９で別の領域にマスク化データ及びマスク対象属性以外の属性の属性値を格納する。その後、マスク処理部３４は、ＬはＬを１インクリメントして（ステップＳ７１）、Ｌが、オリジナルデータのレコード数Ｌmax以下であるか判断する（ステップＳ７３）。ＬがＬmax以下である場合にはステップＳ６３に戻る。一方、ＬがＬmaxを超えた場合には処理を終了する。
【００７９】
なお、分析処理は、例えばAprioriアルゴリズムであり、ここでは説明を省略する。すなわち、マスク化したままで従来のとおり分析処理を実施しているので、分析結果についてもマスク化されたままである。
【００８０】
次に、図１６乃至図１９を用いてアンマスク処理の説明を行う。ここでは、最初に第１の実施の形態との差異を具体例を用いて説明する。図１４と同様に、オリジナルデータに対してAprioriアルゴリズムで分析した結果、アイテム集合｛Ａ，Ｂ，Ｄ｝が２０００回、アイテム集合｛Ａ，Ｂ，Ｃ，Ｅ｝が１９００回、アイテム集合｛Ａ，Ｄ，Ｅ，Ｆ｝が１８００回検出されているとする。また、２つのマスク値集合が用いられており、Ｍａｓｋ［１］＝｛Ｍ1,1，Ｍ1,2，...Ｍ1,k｝の出現割合が０．５で、Ｍａｓｋ［２］＝｛Ｍ2,1，Ｍ2,2，...Ｍ2,k｝の出現割合が０．５であるものとする。すなわち、出現頻度は同じである。
【００８１】
このような場合、マスク化データに対する分析結果は、図１６の右に示すように、｛Ａ，Ｂ，Ｄ｝については、｛Ａ＋Ｍ1,1，Ｂ＋Ｍ1,2，Ｄ＋Ｍ1,4｝という形で検出されるか、｛Ａ＋Ｍ2,1，Ｂ＋Ｍ2,2，Ｄ＋Ｍ2,4｝という形で検出される。なお、マスク化の演算には加算を採用している。上で述べたようなマスク値集合の出現割合であれば、おおよそ前者が１０００回、後者が１０００回検出される。
【００８２】
同様に、｛Ａ，Ｂ，Ｃ，Ｅ｝については、｛Ａ＋Ｍ1,1，Ｂ＋Ｍ1,2，Ｃ＋Ｍ1,3，Ｅ＋Ｍ1,5｝という形で検出されるか、｛Ａ＋Ｍ2,1，Ｂ＋Ｍ2,2，Ｃ＋Ｍ2,3，Ｅ＋Ｍ2,5｝という形で検出される。上で述べたようなマスク値集合の出現割合であれば、おおよそ前者が９５０回、後者が９５０回検出される。
【００８３】
さらに、｛Ａ，Ｄ，Ｅ，Ｆ｝については、｛Ａ＋Ｍ1,1，Ｄ＋Ｍ1,4，Ｅ＋Ｍ1,5，Ｆ＋Ｍ1,6｝という形で検出されるか、｛Ａ＋Ｍ2,1，Ｄ＋Ｍ2,4，Ｅ＋Ｍ2,5，Ｆ＋Ｍ2,6｝という形で検出される。上で述べたようなマスク値集合の出現割合であれば、おおよそ前者が９００回、後者が９００回検出される。
【００８４】
このようにマスク値集合の出現頻度に偏りがない場合には、正しくアンマスクできないと正しい分析結果を得られないが、どのマスク化分析データ（例えばアイテム集合）にどのマスク値集合が適用されているのかは不明である。従って、本実施の形態では、各マスク値集合を、全てのマスク化分析データ（例えばアイテム集合）に適用してみる。
【００８５】
ここでは２つのマスク値集合が存在するので、２つのマスク値集合を３つのアイテム集合のそれぞれに適用してアンマスク化し、同じアンマスク化の結果が得られた場合には、その出現頻度を合計して最終的な分析結果として採用する。正しいマスク値集合を用いれば正しいアイテム集合が復元され、間違ったマスク値集合を用いれば誤ったアイテム集合が復元される。しかし、もともといずれかのマスク値集合でマスク化されているので、全てのマスク値集合を適用すれば、Ｎ回正しいアイテム集合が復元されるのに対し、間違ったマスク値集合を適用した場合には一致するようなアイテム集合が生成されず集約できない。そのため、出現頻度が高いアイテム集合に、正しい分析結果が浮かんでくることになる。
【００８６】
図１６の下段左側に示すように、Ｍａｓｋ［１］＝｛Ｍ1,1，Ｍ1,2，...Ｍ1,k｝を適用すると、以下のような結果が得られる。
｛Ａ＋Ｍ1,1−Ｍ1,1，Ｂ＋Ｍ1,2−Ｍ1,2，Ｄ＋Ｍ1,4−Ｍ1,4｝＝｛Ａ，Ｂ，Ｄ｝（１０００回）
｛Ａ＋Ｍ2,1−Ｍ1,1，Ｂ＋Ｍ2,2−Ｍ1,2，Ｄ＋Ｍ2,4−Ｍ1,4｝（１０００回）アンマスク失敗
｛Ａ＋Ｍ1,1−Ｍ1,1，Ｂ＋Ｍ1,2−Ｍ1,2，Ｃ＋Ｍ1,3−Ｍ1,3，Ｅ＋Ｍ1,5−Ｍ1,5｝＝｛Ａ，Ｂ，Ｃ，Ｅ｝（９５０回）
｛Ａ＋Ｍ2,1−Ｍ1,1，Ｂ＋Ｍ2,2−Ｍ1,2，Ｃ＋Ｍ2,3−Ｍ1,3，Ｅ＋Ｍ2,5−Ｍ1,5｝（９５０回）アンマスク失敗
｛Ａ＋Ｍ1,1−Ｍ1,1，Ｄ＋Ｍ1,4−Ｍ1,4，Ｅ＋Ｍ1,5−Ｍ1,5，Ｆ＋Ｍ1,6−Ｍ1,6｝＝｛Ａ，Ｄ，Ｅ，Ｆ｝（９００回）
｛Ａ＋Ｍ2,1−Ｍ1,1，Ｄ＋Ｍ2,4−Ｍ1,4，Ｅ＋Ｍ2,5−Ｍ1,5，Ｆ＋Ｍ2,6−Ｍ1,6｝（９００回）アンマスク失敗
【００８７】
図１６の下段右側に示すように、Ｍａｓｋ［２］＝｛Ｍ2,1，Ｍ2,2，...Ｍ2,k｝を適用すると、以下のような結果が得られる。
｛Ａ＋Ｍ1,1−Ｍ2,1，Ｂ＋Ｍ1,2−Ｍ2,2，Ｄ＋Ｍ1,4−Ｍ2,4｝（１０００回）アンマスク失敗
｛Ａ＋Ｍ2,1−Ｍ2,1，Ｂ＋Ｍ2,2−Ｍ2,2，Ｄ＋Ｍ2,4−Ｍ2,4｝＝｛Ａ，Ｂ，Ｄ｝（１０００回）
｛Ａ＋Ｍ1,1−Ｍ2,1，Ｂ＋Ｍ1,2−Ｍ2,2，Ｃ＋Ｍ1,3−Ｍ2,3，Ｅ＋Ｍ1,5−Ｍ2,5｝（９５０回）アンマスク失敗
｛Ａ＋Ｍ2,1−Ｍ2,1，Ｂ＋Ｍ2,2−Ｍ2,2，Ｃ＋Ｍ2,3−Ｍ2,3，Ｅ＋Ｍ2,5−Ｍ2,5｝＝｛Ａ，Ｂ，Ｃ，Ｅ｝（９５０回）
｛Ａ＋Ｍ1,1−Ｍ2,1，Ｄ＋Ｍ1,4−Ｍ2,4，Ｅ＋Ｍ1,5−Ｍ2,5，Ｆ＋Ｍ1,6−Ｍ2,6｝アンマスク失敗（９００回）
｛Ａ＋Ｍ2,1−Ｍ2,1，Ｄ＋Ｍ2,4−Ｍ2,4，Ｅ＋Ｍ2,5−Ｍ2,5，Ｆ＋Ｍ2,6−Ｍ2,6｝＝｛Ａ，Ｄ，Ｅ，Ｆ｝（９００回）
【００８８】
以上の結果を集計すれば、｛Ａ，Ｂ，Ｄ｝２０００回、｛Ａ，Ｂ，Ｃ，Ｅ｝１９００回、｛Ａ，Ｄ，Ｅ，Ｆ｝１８００回という結果が得られ、オリジナルデータについてAprioriアルゴリズムを適用した場合と同様の結果が得られる。
【００８９】
なお、ステップＳ６５では、均一な乱数を発生させると述べたが、不均一な乱数であっても、上で述べた処理を行えば、正しくアンマスクされたアイテム集合は集約されるので、｛Ａ，Ｂ，Ｄ｝２０００回という結果は同じで、アンマスク失敗の場合に出現頻度にばらつきが発生するだけである。
【００９０】
さらに、上でも述べたように、本実施の形態では排他的論理和が使用できない。すなわち、ｆ（ａ，ｂ）≠ｆ-1（ａ，ｂ）が要件である。
【００９１】
上で使用した｛Ａ，Ｂ，Ｄ｝の例を考えると、｛Ａ，Ｂ，Ｄ｝２０００回に対して、アンマスク失敗の場合には１０００回にしかならないので、｛Ａ，Ｂ，Ｄ｝が正しいことが分かる。
｛Ａ＋Ｍ1,1−Ｍ2,1，Ｂ＋Ｍ1,2−Ｍ2,2，Ｄ＋Ｍ1,4−Ｍ2,4｝（１０００回）アンマスク失敗
｛Ａ＋Ｍ2,1−Ｍ1,1，Ｂ＋Ｍ2,2−Ｍ1,2，Ｄ＋Ｍ2,4−Ｍ1,4｝（１０００回）アンマスク失敗
【００９２】
しかしながら、ｆ（ａ，ｂ）＝ａ XOR ｂで、ｆ-1（ａ，ｂ）＝ａ XOR ｂであるとすると、以下のような結果が得られる。
｛Ａ，Ｂ，Ｄ｝２０００回
｛Ａ XOR Ｍ1,1 XOR Ｍ2,1，Ｂ XOR Ｍ1,2 XOR Ｍ2,2，Ｄ XOR Ｍ1,4 XOR Ｍ2,4｝（１０００回）アンマスク失敗
｛Ａ XOR Ｍ2,1 XOR Ｍ1,1，Ｂ XOR Ｍ2,2 XOR Ｍ1,2，Ｄ XOR Ｍ2,4 XOR Ｍ1,4｝（１０００回）アンマスク失敗
【００９３】
このようにアンマスク失敗のケースが集約されて２０００回となってしまって区別ができなくなる。このため排他的論理和を使用することができない。
【００９４】
このような処理を行うために、図１７乃至図１９に示すような処理を実施する。まず、データ受信部３６は、分析装置５１から分析処理の結果である分析データを受信し、分析データ格納部３７に格納する（ステップＳ８１）。分析データはマスク化されたままであり、Aprioriアルゴリズムであればアイテム集合とその出現頻度のデータを含む。
【００９５】
そして、アンマスク処理部３９は、分析データ格納部３７に格納されている分析データの中から、出現頻度が高い上位Ｎ×Ｕ個のアイテム集合Ｃi及び出現頻度Ｆiを抽出する（ステップＳ８３）。アイテム集合Ｃiについては以下のように表すものとする。
Ｃ1＝｛Ｉ1,1，Ｉ1,2，...Ｉ1,max_1｝
Ｃ2＝｛Ｉ2,1，Ｉ2,2，...Ｉ2,max_2｝
ＣU＝｛ＩU*N,1，ＩU*N,2，...ＩU*N,max_U｝
【００９６】
なお、マスク値集合がＮ個ある場合には、アイテム集合はＮ倍の数になるので、このことを勘案してＮ×Ｕ個抽出することにする。
【００９７】
また、アンマスク処理部３９は、マスクデータ格納部３５に格納されているマスク値集合Ｍａｓｋ［ｒ］（ｒ＝１乃至Ｎ）を読み出す（ステップＳ８５）。本実施の形態では、Ｎ個のマスク値集合を用いるのでＮ個全て読み出す。
【００９８】
また、アンマスク処理部３９は、アイテム集合についてのカウンタｉ、アイテムについてのカウンタｊ、マスク値集合のカウンタｒを１に初期化する（ステップＳ８７）。さらに、アンマスク処理部３９は、アンマスク分析データＤi,rに空集合をセットする（ステップＳ８９）。そして、アンマスク処理部３９は、アイテム集合Ｃiのｊ番目のアイテム値Ｉi,jを特定する（ステップＳ９１）。処理は端子Ｄを介して図１８の処理に移行する。
【００９９】
図１８の処理の説明に移行して、アンマスク処理部３９は、Ｉi,jはマスク対象属性の属性値であるか判断する（ステップＳ９３）。ステップＳ４３と同様に、マスク対象属性の属性値であるか否かを判断することができるものとする。
【０１００】
Ｉi,jはマスク対象属性の属性値でない場合には、アンマスク処理部３９は、Ｉi,jをＩに設定する（ステップＳ９５）。マスク対象属性でなければ、その属性値をアンマスクしなくても良いからである。その後ステップＳ１０１に移行する。
【０１０１】
一方、Ｉi,jはマスク対象属性の属性値である場合には、アンマスク処理部３９は、Ｍａｓｋ［ｒ］において、Ｉi,jに係る属性のマスク値を特定し、Ｍに設定する（ステップＳ９７）。上でも述べたように、Ｉi,jがいずれのマスク対象属性の属性値であるかが分かれば、対応するマスク値も特定できる。
【０１０２】
そして、アンマスク処理部３９は、Ｉi,jをＭでアンマスクし、アンマスク値をＩに設定する（ステップＳ９９）。すなわち、Ｉ＝ｆ-1（Ｉi,j，Ｍ）＝ｆ-1（ｆ（Data，Ｍ），Ｍ）＝Dataとなる。但し、アンマスクが成功するか失敗するかは、判断できない。
【０１０３】
その後、アンマスク処理部３９は、集合Ｄi,rにＩを追加する（ステップＳ１０１）。そして、アンマスク処理部３９は、ｊを１インクリメントし（ステップＳ１０３）、ｊがｊの最大値であるｊmax以下であるか判断する（ステップＳ１０５）。ｊがｊmax以下であればステップＳ９３に戻る。一方、ｊがｊmaxを超えている場合には、アンマスク処理部３９は、Ｄi,rの出現頻度Ｆiを、頻度Ｇi,rに設定する（ステップＳ１０７）。ｒが変化してもｉが同じであれば同じ値が設定されるが、これは図１６の下段における左右で同じ値が設定される状況を示している。
【０１０４】
そして、アンマスク処理部３９は、ｒを１インクリメントし、ｊを１に初期化する（ステップＳ１０９）。その後、アンマスク処理部３９は、ｒはＮ以下であるか判断する（ステップＳ１１１）。ｒがＮ以下である場合には、端子Ｅを介してステップＳ９１に戻る。一方、ｒがＮを超えると、端子Ｆを介して図１９の処理に移行する。
【０１０５】
図１９の処理の説明に移行して、アンマスク処理部３９は、ｉを１インクリメントし、ｊ及びｒを１に初期化する（ステップＳ１１３）。さらに、アンマスク処理部３９は、ｉがＮ×Ｕ以下であるか判断する（ステップＳ１１５）。ｉがＮ×Ｕ以下である場合には端子Ｇを介してステップＳ８９に戻る。一方、ｉがＮ×Ｕを超えた場合には、アンマスク処理部３９は、同一のＤi,rの出現頻度Ｇi,rを集計し、出現頻度が高い順にソートする（ステップＳ１１７）。
【０１０６】
そして、アンマスク処理部３９は、Ｄi,rのうち出現頻度が高い上位Ｕ個（場合によっては上位所定割合の個数）を、分析結果の集合Ｄiとして、アンマスク分析データ格納部４０に格納する（ステップＳ１１９）。上で述べた例では、｛Ａ，Ｂ，Ｄ｝｛Ａ，Ｂ，Ｃ，Ｅ｝｛Ａ，Ｄ，Ｅ，Ｆ｝が、アンマスク分析データ格納部４０に格納される。なお、ユーザからの指示に応じて、アンマスク分析データ格納部４０に格納されているデータは、ユーザに提示される。
【０１０７】
以上のような処理を実施すれば、マスク処理においてマスク値集合を選択するために発生させる乱数についての制限が無くなり、さらに正確な分析結果を得ることができるようになる。
【０１０８】
［実施の形態３］
上でも述べたように分析処理はAprioriアルゴリズムだけではなく、集計処理であってもよい。集計処理は、単純な処理であるが、分析結果の持つ意味が人間にとって非常に理解が容易であることから、非常に幅広く用いられている分析法の１つである。特に、２属性の組み合わせの頻度を求めるクロス集計は、データに含まれる２つの属性間の相関関係を容易に可視化するための方法として非常に良く用いられる。
【０１０９】
一般的なクロス集計の例を図２０Ａ乃至図２０Ｃに示す。図２０Ａでは、年収、購入額、職業の各属性が３通りの値を有する例を示している。すなわち、年収はａ１，ａ２，ａ３により、購入額はｂ１，ｂ２，ｂ３により、職業はｃ１，ｃ２，ｃ３により分類されており、これらの属性間の相関をクロス集計によって可視化することができる。図２０Ｂに示すように、「年収」と「購入額」のクロス集計を行う場合には、これらの２属性の組み合わせである｛ａ１，ｂ１｝｛ａ１，ｂ２｝｛ａ１，ｂ３｝｛ａ２，ｂ１｝｛ａ２，ｂ２｝｛ａ２，ｂ３｝｛ａ３，ｂ１｝｛ａ３，ｂ２｝｛ａ３，ｂ３｝の出現頻度をカウントすると、図２０Ｂに示されるようなデータが得られる。これをテーブル形式で見やすくすると、図２０Ｃに示すようなテーブルとなる。
【０１１０】
このようなクロス集計の場合、Aprioriアルゴリズムと同様に、アイテムの組み合わせの出現頻度を計算するが、以下の点でAprioriアルゴリズムと異なる。
【０１１１】
（ａ）２アイテムの組み合わせの出現頻度をカウント
Aprioriアルゴリズムでは、設定次第で任意のアイテム個数の組み合わせをカウントする。
（ｂ）出現頻度が高い又は低いアイテムの組み合わせ、いずれについてもカウント結果を表示
Aprioriアルゴリズムでは、出現頻度が一定以上のアイテムのみカウント結果を残す
【０１１２】
以上の相違はあるが、クロス集計は最終的に２アイテムの出現頻度を集計する。
【０１１３】
このようなクロス集計を実施する場合の基本的な処理内容は、第２の実施の形態と同様である。すなわち、初期処理は第１の実施の形態と同じであり、マスク処理についても第２の実施の形態と同様である。但し、アンマスク処理については、図１７のステップＳ８３のみが異なる。すなわち、ステップＳ８３では、出現頻度が高い上位Ｎ×Ｕ個のアイテム集合を抽出するが、クロス集計処理の場合には、全ての結果を用いるので、抽出処理を実施することはなく、全ての結果をそのまま用いる。
【０１１４】
なお、図２１を用いて本実施の形態におけるアンマスク処理の概要を説明する。例えば、オリジナルデータのクロス集計を実施すると、図２１の左側に示すように、｛ａ１，ｂ１｝１０００回、｛ａ１，ｂ２｝６００回、｛ａ２，ｂ１｝５６０回、｛ａ２，ｂ２｝８００回が得られたものとする。２つのマスク値集合が用いられており、Ｍａｓｋ［１］＝｛Ｍ1,1，Ｍ1,2｝の出現割合が０．５で、Ｍａｓｋ［２］＝｛Ｍ2,1，Ｍ2,2｝の出現割合が０．５であるものとする。すなわち、出現頻度は同じである。
【０１１５】
一方、図２１の右側に示すような、マスク化データに対するクロス集計処理の結果が得られたものとする。すなわち、｛ａ１＋Ｍ1,1，ｂ１＋Ｍ1,2｝５００回、｛ａ１＋Ｍ2,1，ｂ１＋Ｍ2,2｝５００回、｛ａ１＋Ｍ1,1，ｂ２＋Ｍ1,2｝３００回、｛ａ１＋Ｍ2,1，ｂ２＋Ｍ2,2｝３００回、｛ａ２＋Ｍ1,1，ｂ１＋Ｍ1,2｝２８０回、｛ａ２＋Ｍ2,1，ｂ１＋Ｍ2,2｝２８０回、｛ａ２＋Ｍ1,1，ｂ２＋Ｍ1,2｝４００回、｛ａ２＋Ｍ2,1，ｂ２＋Ｍ2,2｝４００回である。
【０１１６】
そして、第２の実施の形態と同様に、いずれのマスク値集合が適用されるかは不明であるから、図２１の下段に示すように、各属性値組み合わせに対して各マスク値集合を適用する。具体的には、以下のとおりである。
【０１１７】
すなわち、図２１の下段左側のように、Ｍａｓｋ［１］＝｛Ｍ1,1，Ｍ1,2｝を適用すると、以下のような結果が得られる。
｛ａ１＋Ｍ1,1−Ｍ1,1，ｂ１＋Ｍ1,2−Ｍ1,2｝＝｛ａ１，ｂ１｝（５００回）
｛ａ１＋Ｍ2,1−Ｍ1,1，ｂ１＋Ｍ2,2−Ｍ1,2｝（５００回）アンマスク失敗
｛ａ１＋Ｍ1,1−Ｍ1,1，ｂ２＋Ｍ1,2−Ｍ1,2｝＝｛ａ１，ｂ２｝（３００回）
｛ａ１＋Ｍ2,1−Ｍ1,1，ｂ２＋Ｍ2,2−Ｍ1,2｝（３００回）アンマスク失敗
｛ａ２＋Ｍ1,1−Ｍ1,1，ｂ１＋Ｍ1,2−Ｍ1,2｝＝｛ａ２，ｂ１｝（２８０回）
｛ａ２＋Ｍ2,1−Ｍ1,1，ｂ１＋Ｍ2,2−Ｍ1,2｝（２８０回）アンマスク失敗
｛ａ２＋Ｍ1,1−Ｍ1,1，ｂ２＋Ｍ1,2−Ｍ1,2｝＝｛ａ２，ｂ２｝（４００回）
｛ａ２＋Ｍ2,1−Ｍ1,1，ｂ２＋Ｍ2,2−Ｍ1,2｝（４００回）アンマスク失敗
【０１１８】
図１６の下段右側に示すように、Ｍａｓｋ［２］＝｛Ｍ2,1，Ｍ2,2｝を適用すると、以下のような結果が得られる。
｛ａ１＋Ｍ1,1−Ｍ2,1，ｂ１＋Ｍ1,2−Ｍ2,2｝（５００回）アンマスク失敗
｛ａ１＋Ｍ2,1−Ｍ2,1，ｂ１＋Ｍ2,2−Ｍ2,2｝＝｛ａ１，ｂ１｝（５００回）
｛ａ１＋Ｍ1,1−Ｍ2,1，ｂ２＋Ｍ1,2−Ｍ2,2｝（３００回）アンマスク失敗
｛ａ１＋Ｍ2,1−Ｍ2,1，ｂ２＋Ｍ2,2−Ｍ2,2｝＝｛ａ１，ｂ２｝（３００回）
｛ａ２＋Ｍ1,1−Ｍ2,1，ｂ１＋Ｍ1,2−Ｍ2,2｝（２８０回）アンマスク失敗
｛ａ２＋Ｍ2,1−Ｍ2,1，ｂ１＋Ｍ2,2−Ｍ2,2｝＝｛ａ２，ｂ１｝（２８０回）
｛ａ２＋Ｍ1,1−Ｍ2,1，ｂ２＋Ｍ1,2−Ｍ2,2｝（４００回）アンマスク失敗
｛ａ２＋Ｍ2,1−Ｍ2,1，ｂ２＋Ｍ2,2−Ｍ2,2｝＝｛ａ２，ｂ２｝（４００回）
【０１１９】
以上の結果を集計すれば、｛ａ１，ｂ１｝１０００回、｛ａ１，ｂ２｝６００回、｛ａ２，ｂ１｝５６０回，｛ａ２，ｂ２｝８００回という結果が得られ、オリジナルデータについてクロス集計処理を実施した場合と同様の結果が得られる。
【０１２０】
この場合も、ステップＳ６５では、均一な乱数を発生させると述べたが、不均一な乱数であっても、上で述べた処理を行えば、正しくアンマスクされた属性値組み合わせは集約されるので、｛ａ１，ｂ１｝１０００回という結果は同じで、アンマスク失敗の場合に出現頻度にばらつきが発生するだけである。
【０１２１】
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、図８乃至図９の機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致しない。また、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、並列に実行しても良い場合もある。
【０１２２】
なお、上で述べたユーザ装置３及び７、分析装置５１は、コンピュータ装置であって、図２２に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１２３】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１２４】
本実施の形態における第１の態様に係る秘匿データ処理方法は、（Ａ）データベースにおけるマスク対象属性の数分のマスク値を、所定数セット生成し、マスクデータ格納部に格納するステップと、（Ｂ）マスク対象属性の属性値を含む複数のレコードの各々について、マスクデータ格納部に格納されている所定数セットのマスク値のいずれかを選択し、選択されたマスク値と対応するレコードにおけるマスク対象属性の属性値とについて予め定められた演算を実施することで複数のレコードのマスク化データを生成し、データ格納部に格納するマスク処理ステップとを含む。
【０１２５】
このようにすれば、レコード内の属性間の相関関係を保持しつつマスク化データを生成することができるようになる。また、マスク化データから元のデータを復元するためのデータについても、マスク値の選択結果を保持すればよいので、復元のためのデータ量を削減できる。
【０１２６】
なお、上で述べたマスク処理ステップが、１から所定数までの乱数を均一に又は予め定められたピークを有する分布に従って生成することで、所定数セットのマスク値を選択するステップを含むようにしてもよい。後者のような乱数を用いれば、アンマスク処理を簡略化して簡略化した結果を得ることができるようになる。
【０１２７】
さらに、予め定められた演算が、属性値と演算結果との関係が全単射となるようになっている。このようにすれば、マスク化データの復元が可能となる。
【０１２８】
本実施の形態における第２の態様に係る秘匿データ処理方法は、（Ａ）データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている最も出現確率が高いセットのマスク値を読み出すステップと、（Ｂ）分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれるマスク化属性値と、読み出されたマスク値のうち該当するマスク値とについて予め定められたマスク演算の逆マスク演算を実施することでアンマスク化データを生成し、データ格納部に格納するステップとを含む。
【０１２９】
このようにすることで、高速にマスク化データの分析結果を簡略化した形で得ることができるようになる。
【０１３０】
本技術の第３の態様に係る秘匿データ処理方法は、（Ａ）分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれるマスク化属性値と、データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている各セットに含まれる該当マスク値とについて予め定められたマスク演算の逆マスク演算を実施することで、所定数のアンマスク分析データセットを生成し、分析データ格納部に当該分析データセットに対応付けられて格納されている当該分析データセットの出現頻度に対応付けて当該アンマスク分析データセットをアンマスク分析データ格納部に格納するステップと、（Ｂ）アンマスク分析データ格納部に格納されている同一のアンマスク分析データセットを集約して対応付けられている出現頻度を加算し、アンマスク分析データの種類と対応する出現頻度とを表すデータを、アンマスク分析データ格納部に格納するステップとを含む。
【０１３１】
このような処理を実施することで正確な分析結果を復元できるようになる。
【０１３２】
なお、第２の態様に係る秘匿データ処理方法は、分析処理を実施したコンピュータから受信した複数の分析データセットのうち出現頻度が上位所定数又は上位所定割合の複数の分析データセットを、分析データ格納部に格納するステップを含むようにしても良い。分析処理の種類によっては、抽出処理を実施することが好ましい場合もある。Aprioriアルゴリズムの場合には抽出するようにしてもよい。
【０１３３】
また、予め定められた演算が、属性値と演算結果との関係が全単射となる場合もある。
【０１３４】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【図１】
2012127572.tif 000003
【図２】
2012127572.tif 000004
【図３】
2012127572.tif 000005
【図４】
2012127572.tif 000006
【図５Ａ】
2012127572.tif 000007
【図５Ｂ】
2012127572.tif 000008
【図５Ｃ】
2012127572.tif 000009
【図５Ｄ】
2012127572.tif 000010
【図５Ｅ】
2012127572.tif 000011
【図５Ｆ】
2012127572.tif 000012
【図５Ｇ】
2012127572.tif 000013
【図５Ｈ】
2012127572.tif 000014
【図６】
2012127572.tif 000015
【図７】
2012127572.tif 000016
【図８】
2012127572.tif 000017
【図９】
2012127572.tif 000018
【図１０】
2012127572.tif 000019
【図１１】
2012127572.tif 000020
【図１２】
2012127572.tif 000021
【図１３】
2012127572.tif 000022
【図１４】
2012127572.tif 000023
【図１５】
2012127572.tif 000024
【図１６】
2012127572.tif 000025
【図１７】
2012127572.tif 000026
【図１８】
2012127572.tif 000027
【図１９】
2012127572.tif 000028
【図２０Ａ】
2012127572.tif 000029
【図２０Ｂ】
2012127572.tif 000030
【図２０Ｃ】
2012127572.tif 000031
【図２１】
2012127572.tif 000032
【図２２】
2012127572.tif 000033
【手続補正書】
【提出日】平成25年8月8日(2013.8.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
最初に、本技術の実施の形態において行われる処理について簡単に説明しておく。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３４
【補正方法】変更
【補正の内容】
【００３４】
よって数え上げ結果に対して｛Ｆ1，Ｇ1，Ｈ1｝と｛Ｆ2，Ｇ2，Ｈ2｝との値をアンマスクのために用いるという特質を利用することで、これらの値を鍵として用いた安全なデータマイニングを実現することができる。すなわち、マスク化したままの状態で、分析処理を行うことで、オープンな環境下での分析を安全に実施しつつ、得られた分析結果に対して、アンマスクを行うことで、適切な分析結果を得ることができる。高い計算機の処理能力を必要とするデータの分析処理を、クラウドコンピューティング環境で実施することで、メインのシステムコストを低く抑えつつ、演算結果が出力された後の復号処理を、自社の閉じた安全な計算環境で実施することで、システムのコスト削減と、機密情報の漏洩防止を両立することが実現できる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
その後、マスク処理部３４は、データ格納部３２において、オリジナルデータのＬ行目におけるマスク対象属性の属性値Ｄを、マスク化データＤmで置換する（ステップＳ２１）。ここでは、オリジナルデータをユーザ装置３内では保存しない場合を示しており、保存しておく場合にはステップＳ２１で別の領域にマスク化データとマスク対象属性以外の属性の属性値を格納する。その後、マスク処理部３４は、Ｌを１インクリメントして（ステップＳ２３）、Ｌが、オリジナルデータのレコード数Ｌmax以下であるか判断する（ステップＳ２５）。ＬがＬmax以下である場合にはステップＳ１３に戻る。一方、ＬがＬmaxを超えた場合には処理を終了する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
そして、アンマスク処理部３９は、Ｉi,jをＭでアンマスクし、アンマスク値をＩに設定する（ステップＳ４９）。すなわち、Ｉ＝ｆ-1（Ｉi,j，Ｍ）＝ｆ-1（ｆ（Data，Ｍ），Ｍ）＝Dataとなる。但し、これは正しいマスク値集合が適用された場合である。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
その後、マスク処理部３４は、データ格納部３２において、オリジナルデータのＬ行目におけるマスク対象属性の属性値Ｄを、マスク化データＤmで置換する（ステップＳ６９）。ここでは、オリジナルデータをユーザ装置３内では保存しない場合を示しており、保存しておく場合にはステップＳ６９で別の領域にマスク化データ及びマスク対象属性以外の属性の属性値を格納する。その後、マスク処理部３４は、Ｌを１インクリメントして（ステップＳ７１）、Ｌが、オリジナルデータのレコード数Ｌmax以下であるか判断する（ステップＳ７３）。ＬがＬmax以下である場合にはステップＳ６３に戻る。一方、ＬがＬmaxを超えた場合には処理を終了する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１１８
【補正方法】変更
【補正の内容】
【０１１８】
図２１の下段右側に示すように、Ｍａｓｋ［２］＝｛Ｍ2,1，Ｍ2,2｝を適用すると、以下のような結果が得られる。
｛ａ１＋Ｍ1,1−Ｍ2,1，ｂ１＋Ｍ1,2−Ｍ2,2｝（５００回）アンマスク失敗
｛ａ１＋Ｍ2,1−Ｍ2,1，ｂ１＋Ｍ2,2−Ｍ2,2｝＝｛ａ１，ｂ１｝（５００回）
｛ａ１＋Ｍ1,1−Ｍ2,1，ｂ２＋Ｍ1,2−Ｍ2,2｝（３００回）アンマスク失敗
｛ａ１＋Ｍ2,1−Ｍ2,1，ｂ２＋Ｍ2,2−Ｍ2,2｝＝｛ａ１，ｂ２｝（３００回）
｛ａ２＋Ｍ1,1−Ｍ2,1，ｂ１＋Ｍ1,2−Ｍ2,2｝（２８０回）アンマスク失敗
｛ａ２＋Ｍ2,1−Ｍ2,1，ｂ１＋Ｍ2,2−Ｍ2,2｝＝｛ａ２，ｂ１｝（２８０回）
｛ａ２＋Ｍ1,1−Ｍ2,1，ｂ２＋Ｍ1,2−Ｍ2,2｝（４００回）アンマスク失敗
｛ａ２＋Ｍ2,1−Ｍ2,1，ｂ２＋Ｍ2,2−Ｍ2,2｝＝｛ａ２，ｂ２｝（４００回）
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１２１
【補正方法】変更
【補正の内容】
【０１２１】
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、図８及び図９の機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成と一致しない。また、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、並列に実行しても良い場合もある。
【手続補正８】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項３
【補正方法】変更
【補正の内容】
【請求項３】
前記予め定められた演算が、前記属性値と演算結果との関係が全単射となるような演算である
請求項１又は２記載の秘匿データ処理プログラム。
【手続補正９】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
データベースにおけるマスク対象属性の数分のマスク値を所定数セット格納するマスクデータ格納部に格納されている最も出現確率が高いセットのマスク値を読み出すステップと、
分析データ格納部に格納されており且つマスク化属性値を含む複数の分析データセットの各々について、当該分析データセットに含まれる前記マスク化属性値と、読み出されたマスク値のうち該当するマスク値とについて予め定められたマスク演算の逆マスク演算を実施することでアンマスク化データを生成し、データ格納部に格納するステップと、
を含み、コンピュータにより実行される秘匿データ処理方法。
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図１２
【補正方法】変更
【補正の内容】
【図１２】
2012127572.tif 000034
【国際調査報告】
2012127572.tif 000035
2012127572.tif 000036
2012127572.tif 000037
2012127572.tif 000038