【0007】
本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図面および明細書記載の各実施の形態において、同様の機能を備える構成要素には同じ符号が与えられている。また、同じ符号が与えられた構成要素の詳細な説明は、省略する場合がある。
図1は、本発明の第一の実施の形態における乱数値特定装置100の構成を示すブロック図である。
図1を参照すると、乱数値特定装置100は、受付部101と許諾情報記憶部102と属性相関特定部103と属性値取得部104と相関関係特定部105と乱数発生部107とを含む。
第一の実施の形態における乱数値特定装置100は、受け取った属性名が示す第一の属性を示す許諾情報の少なくとも一つが示す属性の中で、各属性が示される累計数に応じて第二の属性を特定する。次に、乱数値特定装置100は、第一の属性および第二の属性に対応する属性値を取得し、取得した属性値に基づいて、第一の属性および第二の属性の間の相関関係を特定する。そして、乱数値特定装置100は、特定した相関関係に基づいて、第一の属性および第二の属性の間において乱数が取りうる範囲である乱数値範囲を特定する。
乱数値範囲は、ユーザが用いる外部装置などが指定する第一の属性と、その第一の属性に基づいて乱数値特定装置100が特定する第二の属性と、の間の相関関係に基づく。よって、乱数値特定装置100は、すべての属性の相関関係を考慮するのではなく、ユーザが第一の属性と同様に公開を許諾すると特定される第二の属性と、その第一の属性と、の相関関係に基づいて乱数値範囲を特定する。
あるユーザが公開を許諾する属性の情報は、将来組み合わされてデータマイニングなどに利用される可能性が高い。よって、前述の乱数値範囲に含まれる乱数が属性値に付加されても、その値は、他のユーザがデータマイニングすると予測される範囲に値が変換される。そのため、乱数値が付加された後のデータの有用性は、維持され、かつ、元のデータの秘密性は、保持される。
したがって、第一の実施の形態における乱数値特定装置100は、元データの値を隠蔽させ、かつ、乱数値を加えた後のデータの有効性を高めることのできる適切な乱数値を特定できる。
以下、乱数値特定装置100が含む各構成要素について説明する。
===受付部101===
受付部101は、ユーザに関する情報の属性を示す属性名を、図示しない他の機能手段または外部装置から受け取る。本明細書において、受付部101が受け取る属性名が示す属性は、第一の属性と表される。
ユーザに関する情報とは、例えば、ユーザの年齢や年収といった個人情報、ユーザが住む家の家賃や築年数や駅からの距離、ユーザの子供の学力、ユーザの嗜好に関する情報(喫煙、飲酒、運動の経験に関する情報)など、あらゆる情報を含む。
ユーザに関する情報の属性とは、そのユーザに関するある特定の項目とその項目に対する値とを示す情報である。ユーザに関する情報の属性名とは、そのユーザに関するある特定の項目を示す情報である。ユーザに関する情報の属性の属性値とは、そのユーザに関するある特定の項目に対する値である。
つまり、ユーザに関する情報の属性とは、例えば、「Aliceの年齢が10歳」という情報における「年齢=10歳」という情報のことである。そして、前述の例において、ユーザに関する情報の属性名とは、「年齢」である。同様に、ユーザに関する情報の属性の属性値は、「10歳」である。また、前述の例において「Alice」は、ユーザ識別子である。
受付部101は、属性名とユーザを識別できるユーザ識別子とを受け取ってもよい。ユーザ識別子とは、ユーザの名称またはユーザを識別できる記号である。
属性名が示す第一の属性は、一つだけではなく複数でもよい。
===許諾情報記憶部102===
許諾情報記憶部102は、ユーザが公開を許諾する属性を少なくとも一つ示す許諾情報と、そのユーザを識別できるユーザ識別子とを対応付けて記憶する。
図2は、許諾情報記憶部102が記憶する情報の一例を示す図である。
図2を参照すると、許諾情報記憶部102は、ユーザ識別子「Alice」と、許諾情報とを対応付けて記憶する。ユーザ「Alice」の許諾情報は、属性名「年収」、「年齢」、「xx1」の開示の許可を示す。同様に、許諾情報記憶部102は、ユーザ識別子「Bob」、「Claire」、「Dave」、「Ellen」と、各ユーザの許諾情報とを対応付けて記憶する。
図2の例では、情報保持事業者AP_Aが属性名「年収」に関する情報を保持するとの条件が仮定される。他の情報保持事業者についても、同様の条件が仮定される。
許諾情報記憶部102は、ユーザが公開を許諾する事業者を示す事業者許諾情報を、ユーザ識別子と許諾情報とに対応付けて記憶してもよい。事業者許諾情報を用いた情報処理の例は、後述される。
乱数値特定装置100は、事業者毎に許諾情報記憶部102を含んでもよい。この場合、各事業者は、図示しない外部装置を介して属性名とともに、事業者を示す事業者識別子を乱数値特定装置100に送信する。そして、乱数値特定装置100は、受け取った事業者識別子に対応する許諾情報記憶部102に記憶されている情報を基に処理する。
===属性相関特定部103===
第一に、属性相関特定部103は、受付部101が受け取る属性名が示す属性(第一の属性)を示す許諾情報を少なくとも一つ許諾情報記憶部102から読み出す。
例えば、受付部101が、第一の属性の属性名「年収」を受け取ったと仮定し、許諾情報記憶部102が、
図2に示される情報を記憶すると仮定する。この場合、属性相関特定部103は、許諾情報記憶部102から「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報のうち少なくとも一つを読み出す。属性相関特定部103は、許諾情報記憶部102から「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報のすべてを読み出してもよい。
第二に、属性相関特定部103は、許諾情報記憶部102から読み出した許諾情報が示す属性の中で各属性が示される累計数に応じて、ある属性を第二の属性として特定する。
例えば、前述の例において、属性相関特定部103は、許諾情報記憶部102から「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報のすべてを読み出した場合を仮定する。この際、属性相関特定部103は、各許諾情報が示す属性の累計をその属性毎に計算する。例えば、
図2を参照すると、属性名「年齢」の累計は、「Alice」、「Claire」および「Dave」の許諾情報に含まれるため、「3」と計算される。同様に、属性名「xx1」の累計は「2」と、属性名「xx2」の累計は「3」と、属性名「xx3」の累計は「2」と、計算される。
第二の属性は、一つだけでなく複数でもよい。また、第二の属性は、第一の属性とは異なる属性でもよい。
属性相関特定部103は、例えば、計算した累計が最大である属性を第二の属性と特定してもよい。この場合、属性相関特定部103は、属性「年齢」と「xx2」とを第二の属性と特定する。あるいは、属性相関特定部103は、例えば、計算した累計数が所定数以上である属性を第二の属性と特定してもよい。あるいは、属性相関特定部103は、例えば、計算した累計数が多いほうから順に所定数の属性を第二の属性と特定してもよい。
第三に、属性相関特定部103は、前述の第二の属性を示す許諾情報を、許諾情報記憶部102から読み出した許諾情報の中から特定する。
例えば、前述の例において、属性相関特定部103が、第二の属性を「年齢」と特定した場合、属性相関特定部103は、「Alice」、「Claire」および「Dave」の許諾情報を特定する。
受付部101がユーザ識別子を受け取る場合、属性相関特定部103は、そのユーザ識別子に対応付けられる許諾情報が示す属性の中から、前述の第二の属性を特定してもよい。例えば、受付部101がユーザ識別子「Alice」と属性名「年収」とを受け取った場合を仮定する。属性相関特定部103は、許諾情報記憶部102から「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報を読み出す。そして、属性相関特定部103は、各許諾情報が示す属性の累計をその属性毎に計算する。属性相関特定部103は、例えば、計算した累計が最大である属性を第二の属性と特定する。そして、属性相関特定部103は、受付部101が受け取ったユーザ識別子「Alice」に対応付けられる許諾情報が示す属性「年収」、「年齢」および「xx1」の中から第二の属性を特定する。この際、属性相関特定部103は、計算した累計が最大であり、かつ、受付部101が受け取ったユーザ識別子「Alice」に対応付けられる許諾情報が示す属性である「年齢」を第二の属性と特定する。
受付部101がユーザ識別子を受け取る場合、属性相関特定部103は、以下を処理してもよい。すなわち、属性相関特定部103は、そのユーザ識別子に対応付けられる許諾情報が示す属性のうち、所定数以上の属性を示す許諾情報を、許諾情報記憶部102から読み出した許諾情報の中から特定してもよい。そして、属性相関特定部103は、特定した許諾情報が示す属性の中で各属性が示される累計数に応じて第二の属性を特定してもよい。
例えば、受付部101がユーザ識別子「Alice」と属性「年収」とを受け取った場合を仮定する。属性相関特定部103は、許諾情報記憶部102から「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報を読み出す。そして、属性相関特定部103は、「Alice」の許諾情報が示す属性と同じ属性を所定数以上、例えば2つ以上示す許諾情報を、許諾情報記憶部102から読み出した許諾情報の中から特定する。
ここで、「Alice」の許諾情報は、属性「年収」、「年齢」および「xx1」を示す。「Claire」の許諾情報は、属性「年収」、「年齢」および「xx2」を示す。「Alice」と「Claire」との許諾情報の間で、示す属性として、「年収」および「年齢」が、共通する。「Dave」の許諾情報は、属性「年収」、「年齢」、「xx2」および「xx3」を示す。「Alice」と「Dave」との許諾情報の間で、示す属性として、「年収」および「年齢」が、共通する。「Ellen」の許諾情報は、属性「年収」、「xx1」、「xx2」および「xx3」である。「Alice」と「Ellen」との許諾情報の間で、示す属性として、「年収」および「xx1」が共通する。つまり、属性相関特定部103は、「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報のすべてが同じ属性を2つ以上示すと判定する。よって、属性相関特定部103は、「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報を特定する。
受付部101がユーザ識別子を受け取る場合、属性相関特定部103は、以下を処理してもよい。すなわち、属性相関特定部103は、そのユーザ識別子に対応付けられる許諾情報が示す属性と、許諾情報記憶部102から読み出した許諾情報が示す属性との共通度を計算してもよい。そして、属性相関特定部103は、計算した共通度が所定値以上である許諾情報を、許諾情報記憶部102から読み出した許諾情報の中から特定してもよい。そして、属性相関特定部103は、特定した許諾情報が示す属性の中で各属性が示される累計数に応じて第二の属性を特定してもよい。
例えば、受付部101がユーザ識別子「Alice」と属性名「年収」とを受け取った場合を仮定する。属性相関特定部103は、許諾情報記憶部102から「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報を読み出す。そして、属性相関特定部103は、「Alice」の許諾情報が示す属性と許諾情報記憶部102から読み出した許諾情報が示す属性との共通度を計算する。
ここで、「Alice」の許諾情報は、属性「年収」、「年齢」および「xx1」を示す。「Claire」の許諾情報は、属性「年収」、「年齢」および「xx2」を示す。「Alice」と「Claire」との許諾情報の間で、示す属性が共通するものは、「年収」、「年齢」の2つである。また、「Alice」と「Claire」との許諾情報の間で、示していない属性が共通するものは、「xx3」の1つである。よって、属性相関特定部103は、「Alice」と「Claire」との許諾情報の間の共通度のスコアを1+2=「3」と計算する。
同様に、属性相関特定部103は、「Alice」と「Dave」との許諾情報の間の共通度のスコアを2+0=「2」と計算し、「Alice」と「Ellen」との許諾情報の間の共通度のスコアを2+0=「2」と計算する。
属性相関特定部103は、計算した共通度が所定値以上、例えば3以上である許諾情報を、許諾情報記憶部102から読み出した許諾情報の中から特定する。この場合、属性相関特定部103は、「Claire」の許諾情報を特定する。
許諾情報記憶部102が事業者許諾情報を記憶する場合、各事業者は、図示しない外部装置を介して、事業者を示す事業者識別子を乱数値特定装置100に送る。そして、属性相関特定部103は、受け取った事業者識別子で示される事業者が、許諾情報記憶部102から読み出した許諾情報に対応付けられる事業者許諾情報で示される事業者に含まれる場合、以下を処理してもよい。すなわち、属性相関特定部103は、ユーザ識別子と属性情報とを属性値取得部104に渡してもよい。一方、属性相関特定部103は、受け取った事業者識別子で示される事業者が、許諾情報記憶部102から読み出した許諾情報に対応付けられる事業者許諾情報で示される事業者に含まれていない場合、以下を処理する。すなわち、属性相関特定部103は、検索が失敗したことを示す情報を前述の外部装置に送信する。
===属性値取得部104===
属性値取得部104は、属性相関特定部103が特定した許諾情報毎に、許諾情報に対応付けられるユーザ識別子で識別できるユーザの第一の属性および第二の属性に対応する属性値を取得する。
属性値取得部104は、図示しない属性値記憶部から、受付部101が受け取ったユーザ識別子に対応付けられる第一の属性および第二の属性を示す属性名に対応する属性値を取得してもよい。この属性値記憶部は、例えば、ユーザ識別子と属性名と属性値とを対応付けて記憶する。また、属性値記憶部は、乱数値特定装置100に含まれてもよいし、図示しない外部装置に含まれてもよい。
===相関関係特定部105===
相関関係特定部105は、属性値取得部104が取得した属性値に基づいて、第一の属性および第二の属性の間の相関関係を特定する。
相関関係とは、例えば、その属性値の属性に対応する属性値間の関数である。ただし、この相関関係は、一対一である必要はなく、例えば、多価関数でもよい。
相関関係特定部105は、属性値取得部104が取得した属性値に基づいて、第一の属性および第二の属性の間における相関関係として、回帰曲線または回帰直線を算出してもよい。そして、相関関係特定部105は、その回帰曲線または回帰直線を示す情報を、相関関係を示す相関関係情報として特定してもよい。
相関関係特定部105は、属性の間における回帰曲線または回帰直線を算出する場合、属性値が所定の値を示す属性を用いて算出してもよい。
相関関係特定部105は、算出した回帰曲線または回帰曲線に基づいて、相関係数を計算し、後述の乱数発生部107に渡す。
===乱数発生部107===
乱数発生部107は、相関関係特定部105が特定した相関関係に基づいて特定される乱数値範囲内で、属性毎に乱数を発生する。乱数値範囲とは、相関関係特定部105が特定した属性の間において乱数が取りうる範囲である。乱数値範囲は、図示しない乱数値範囲特定部が特定する。この乱数値範囲特定部を、乱数値特定装置100が含んでもよいし、図示しない他の外部装置が含んでもよい。
乱数発生部107は、属性名とその属性名が示す属性の属性値に付加する乱数値とを対応付けて、図示しない乱数値記憶部に記憶してもよい。この場合、受付部101は、受け取る属性名が前述の乱数値記憶部に記憶されている場合、属性名と対応付けられて乱数値記憶部に記憶されている乱数値を、その属性名が示す属性の属性値に付加する乱数値として特定してもよい。また、この場合、属性相関特定部103、属性値取得部104、相関関係特定部105、および乱数発生部107における処理の一部またはすべてが省略されてもよい。
図3は、本発明の第一の実施の形態における乱数値特定装置100とその周辺装置のハードウェア構成を示す図である。
図3に示すように、乱数値特定装置100は、CPU191、ネットワーク接続用の通信I/F(Interface)192(通信インターフェース192)、メモリ193、およびプログラムを格納するハードディスク等の記憶装置194を含む。また、乱数値特定装置100は、バス197を介して入力装置195および出力装置196に接続する。
CPU191は、オペレーティングシステムを動作させて本発明の第一の実施の形態に係る乱数値特定装置100の全体を制御する。また、CPU191は、例えば、ドライブ装置などに装着された記録媒体198からメモリ193にプログラムやデータを読み出す。そしてCPU191は、読み出されたプログラムやデータにしたがって第一の実施の形態における受付部101、属性相関特定部103、属性値取得部104、相関関係特定部105、および乱数発生部107として各種の処理を実行する。
記憶装置194は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、または半導体メモリ等であって、コンピュータプログラムをコンピュータ読み取り可能に記録する。また、コンピュータプログラムは、通信網に接続される図示しない外部コンピュータからダウンロードされてもよい。第一の実施の形態における許諾情報記憶部102は、記憶装置194に含まれる。
入力装置195は、例えば、マウスやキーボード、内蔵のキーボタンなどで実現され、入力操作に用いられる。入力装置195は、マウスやキーボード、内蔵のキーボタンに限らず、例えばタッチパネル、加速度計、ジャイロセンサ、カメラなどでもよい。
出力装置196は、例えば、ディスプレイで実現され、出力を確認するために用いられる。
なお、第一の実施の形態の説明において利用されるブロック図(
図1)は、ハードウェア単位の構成ではなく、機能単位のブロックを示す。これらの機能ブロックは、
図3に示すハードウェア構成を基に実現される。ただし、乱数値特定装置100が含む各部の実現手段は、特に限定されない。すなわち、乱数値特定装置100は、物理的に結合した一つの装置を用いて実現されてもよいし、物理的に分離した二つ以上の装置を有線または無線で接続し、これら複数の装置を用いて実現されてもよい。
また、CPU191は、記憶装置194に記録されるコンピュータプログラムを読み込み、そのプログラムにしたがって、受付部101、属性相関特定部103、属性値取得部104、相関関係特定部105、および乱数発生部107として動作してもよい。
また、前述のプログラムのコードを記録した記録媒体(または記憶媒体)が、乱数値特定装置100に供給され、乱数値特定装置100が記録媒体に格納されたプログラムのコードを読み出し、プログラムを実行してもよい。すなわち、本発明は、第一の実施の形態における乱数値特定装置100が実行するためのソフトウェア(情報処理プログラム)を一時的に記憶するまたは非一時的に記憶する記録媒体198も含む。
図4は、第一の実施の形態における乱数値特定装置100の動作の概要を示すフローチャートである。
受付部101は、ユーザに関する情報の属性を示す属性名を受け取る(ステップS101)。
属性相関特定部103は、受付部101が受け取る属性名が示す属性(第一の属性)を示す許諾情報を少なくとも一つ許諾情報記憶部102から読み出す(ステップS102)。属性相関特定部103は、許諾情報記憶部102から読み出した許諾情報が示す属性の中で、読み出した許諾情報を基に属性が示される累計数に応じて、ある属性を第二の属性として特定する(ステップS103)。属性相関特定部103は、前述の第二の属性を示す許諾情報を、許諾情報記憶部102から読み出した許諾情報の中から特定する(ステップS104)。
属性値取得部104は、属性相関特定部103が特定した許諾情報毎に、許諾情報に対応付けられるユーザ識別子で識別できるユーザの第一の属性および第二の属性に対応する属性値を取得する(ステップS105)。
相関関係特定部105は、属性値取得部104が取得した属性値に基づいて、第一の属性および第二の属性の間の相関関係を特定する(ステップS106)。相関関係特定部105は、特定した相関関係に基づいて、相関係数を計算し、乱数発生部107に渡す(ステップS107)。
乱数発生部107は、相関関係特定部105が特定した相関関係に基づいて特定される、その相関関係に対応する第一の属性および第二の属性の間において乱数が取りうる範囲である乱数値範囲内で、属性毎に乱数を発生する(ステップS108)。
第一の実施の形態における乱数値特定装置100は、受け取った属性名が示す第一の属性を示す許諾情報の少なくとも一つが示す属性の中で、各属性が示される累計数に応じて第二の属性を特定する。次に、乱数値特定装置100は、第一の属性および第二の属性に対応する属性値を取得し、取得した属性値に基づいて、第一の属性および第二の属性の間の相関関係を特定する。そして、乱数値特定装置100は、特定した相関関係に基づいて特定される乱数値範囲内で、属性毎に乱数を発生する。ここで乱数値範囲とは、第一の属性および第二の属性の間において乱数が取りうる範囲である。
乱数値範囲は、ユーザが用いる外部装置などが指定する第一の属性と、その第一の属性に基づいて乱数値特定装置100が特定する第二の属性と、の間の相関関係に基づく。よって、乱数値特定装置100は、すべての属性の相関関係を考慮するのではなく、ユーザが第一の属性と同様に公開を許諾すると特定される第二の属性と、その第一の属性と、の相関関係に基づいて特定される乱数値範囲に基づいて、乱数を発生する。
あるユーザが公開を許諾する属性の情報は、将来組み合わされてデータマイニングなどに利用される可能性が高い。しかし、すべての属性の情報についての相関関係の考慮を基に決定される乱数値範囲に基づいて乱数が特定されると、その乱数値範囲は、データマイニングの際に考慮されない属性にも、乱数値を規定する。よって、その乱数値範囲内の乱数が付加されたデータは、データマイニングするユーザにとって有用性が落ちる。
一方、第一の実施の形態における乱数値特定装置100は、ユーザが第一の属性と同様に公開を許諾すると特定される第二の属性と、その第一の属性と、の相関関係に基づいて特定される乱数値範囲に基づいて乱数が生成される。よって、その乱数値範囲に含まれる乱数が属性値に付加されても、その値は、ユーザがデータマイニングすると予想される範囲に値が変換される。そのため、乱数値が付加された後のデータの有用性は、維持され、かつ、元のデータの秘密性は、保持される。
したがって、第一の実施の形態における乱数値特定装置100は、元データの値を隠蔽させ、かつ、乱数値を加えた後のデータの有効性を高めることのできる適切な乱数値を特定できる。
例えば、非特許文献1に記載の技術は、すべての属性の間の相関値に基づいて乱数値を算出する。つまり、非特許文献1に記載の技術は、ユーザが指定する第一の属性とは相関のない他の属性との間の相関値を考慮するので、乱数値範囲がデータマイニングには適さないデータの範囲を含む。結果として、非特許文献1に記載の技術は、データの有用性を落とす。また、特許文献1に記載の技術は、属性の間の相関関係を考慮しないので、乱数値範囲がデータマイニングには適さないデータの範囲を含む。結果として、特許文献1に記載の技術は、データの有用性を落とす。
一方、第一の実施の形態における乱数値特定装置100は、ユーザが第一の属性と同様に公開を許諾すると特定される第二の属性と、その第一の属性と、の相関関係に基づいて特定される乱数値範囲に基づいて乱数を発生する。よって、その乱数値範囲に含まれる乱数が属性値に付加されても、その値は、ユーザがデータマイニングすると予想される範囲に値が変換される。そのため、乱数値が付加された後のデータの有用性は、維持され、かつ、元のデータの秘密性は、保持される。これは、乱数値特定装置100が記憶する値域情報に基づいて特定される所定の部分空間の大きさに応じた大きさが、乱数値範囲の大きさとして保証されるからである。
したがって、第一の実施の形態における乱数値特定装置100は、元データの値を隠蔽させ、かつ、乱数値を加えた後のデータの有効性を高めることのできる適切な乱数値を特定できる。
[第二の実施の形態]
図5は、本発明の第二の実施の形態における乱数値特定システム20の構成を示すブロック図である。
図5を参照すると、第二の実施の形態における乱数値特定システム20は、検索事業者装置230と乱数値特定装置200とを含む。
<検索事業者装置230>
検索事業者装置230は、ユーザ識別子と、ユーザに関する情報の属性を示す属性名とを、後述の乱数値特定装置200へ送信する。検索事業者装置230は、図示しない外部装置からユーザ識別子を受け取ってもよいし、ユーザ識別子を記憶する図示しないユーザ情報記憶部を含み、そのユーザ情報記憶部に記憶されているユーザ識別子を読み出してもよい。
検索事業者装置230は、乱数値の付加された属性値を受け取ると、受け取った属性値を出力する。
<乱数値特定装置200>
乱数値特定装置200は、受付部201と許諾情報記憶部102と属性相関特定部103と属性値取得部204と相関関係特定部105と乱数値範囲特定部206と乱数発生部207と属性値記憶部209と乱数値記憶部210と乱数付加部211とを含む。
===属性値記憶部209===
属性値記憶部209は、ユーザ識別子と属性名と属性値とを対応付けて記憶する。この属性値は、この属性値に対応付けられるユーザ識別子で識別されるユーザに関する属性値である。また、この属性名は、この属性名に対応付けられる属性値に対応する属性を示す情報である。
図6は、属性値記憶部209が記憶する情報の一例を示す図である。
図6を参照すると、属性値記憶部209は、例えば、ユーザ識別子「Alice」と属性名「年収」およびその属性値「1000万円」と、属性名「年齢」およびその属性値「30歳」とを対応付けて記憶する。
===乱数値記憶部210===
乱数値記憶部210は、ユーザ識別子と属性名とその属性名が示す属性の属性値に付加する乱数値とを対応付けて記憶する。
図7は、乱数値記憶部210が記憶する情報の一例を示す図である。
図7を参照すると、例えば、乱数値記憶部210は、ユーザ識別子「Alice」と属性名「年収」およびその乱数値「+100万円」と、属性名「年齢」およびその乱数値「+5歳」と、を対応付けて記憶する。
乱数値記憶部210は、前述の情報に検索範囲をさらに対応付けて記憶してもよい。
===受付部201===
受付部201は、検索事業者装置230からユーザ識別子と属性名とを受け取ると、受け取ったユーザ識別子と属性名とが対応付けられて乱数値記憶部210に記憶されているか否か判定する。
受付部201は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合、受け取ったユーザ識別子と属性名とを属性相関特定部103に渡す。一方、受付部201は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていると判定した場合、そのユーザ識別子と属性名とに対応付けられる乱数値を乱数値記憶部210から読み出す。そして、受付部201は、受け取ったユーザ識別子と属性名と読み出した乱数値とを後述の乱数付加部211に渡す。この場合、属性相関特定部103、属性値取得部204、相関関係特定部105、乱数値範囲特定部206および乱数発生部207における処理の一部またはすべては、省略されてもよい。
===属性値取得部204===
属性値取得部204は、属性相関特定部103が特定した許諾情報毎に、以下を処理する。すなわち、属性値取得部204は、許諾情報に対応付けられるユーザ識別子で識別できるユーザの第一の属性および第二の属性に対応する属性値を属性値記憶部209から取得する。
具体的には、属性値取得部204は、許諾情報に対応付けられるユーザ識別子に対応付けられる属性名と属性値とを属性値記憶部209から読み出す。そして、属性値取得部204は、読み出した属性名のうち、第一の属性および第二の属性を示す属性名に対応付けられる属性値を特定し、その属性値を取得する。
===乱数値範囲特定部206===
乱数値範囲特定部206は、相関関係特定部105が特定した相関関係に基づいて、その相関関係に対応する第一の属性および第二の属性の間において乱数が取りうる範囲である乱数値範囲を特定する。
乱数値範囲特定部206は、属性毎に所定の値域を示す値域情報を記憶してもよい。そして、乱数値範囲特定部206は、第一の属性および第二の属性に対応する値域情報と属性値と相関関係特定部105が特定した相関関係とに基づいて、第一の属性および第二の属性の間における乱数値範囲を特定してもよい。
具体的には、乱数値範囲特定部206は、以下の処理を用いて乱数値範囲を特定してもよい。
第一に、乱数値範囲特定部206は、第一の属性および第二の属性に対応する値域情報に基づいて、それらの属性を軸とする空間の一部である所定の部分空間を特定する。
図8、
図9および
図10は、乱数値範囲特定部206が特定する所定の部分空間の一例を示す図である。ただし、これらの図は例示であって、所定の部分空間は、例示の図形に限定されない。
図8、
図9および
図10を参照すると、乱数値範囲特定部206は、値域情報として、属性「年齢」についての値域情報181aと、属性「年収」についての値域情報181bとを記憶する。値域情報181aの値は「プラスマイナス10歳」であり、値域情報181bの値は「プラスマイナス200万」である。そして、乱数値範囲特定部206は、これらの値域情報181a、181bに基づいて、所定の部分空間182を特定する。
第二に、乱数値範囲特定部206は、相関関係特定部105が算出した相関係数に基づいて、特定した部分空間を回転させる。
図11は、
図8で示される部分空間182が回転された例を示す図である。乱数値範囲特定部206は、相関関係特定部105が算出した相関係数rに基づいて、特定した部分空間を角度θだけ回転させる。ただし、角度θは、以下の[数1]を用いて求められる値である。[数1]において、αは、所定の定数である。
【数1】
属性が3以上ある場合、前述の角度θまたは相関係数rは、2つの属性からなる平面上での角度または関数である。乱数値範囲特定部206は、3以上の属性から2つの属性を選択し、角度θまたは相関係数rを算出する。
図8における所定の部分空間182に含まれる乱数値の座標が[数2]に示される値で表されるとき、その乱数値が角度θだけ回転された空間にマッピングされた際の乱数値の座標は、[数3]の式を用いて求められる。
【数2】
【数3】
乱数値範囲特定部206は、以上の処理を用いて求められた部分空間を乱数値範囲として特定する。
図12は、ある属性値と、その属性値に対して乱数が付加された後の値が取りうる範囲と、属性「年齢」および「年収」の間の相関関係を示す関数(相関関係情報185)と、を示す図である。
図12を参照すると、元の属性値のデータである元データ184は、乱数値が付加されて新部分空間183内のいずれかの値に変換される。変換後のデータが取り得る値の範囲の大きさは、
図12で示される新部分空間183の大きさと同一である。よって、変換後のデータから元のデータが解読される可能性は、新部分空間183の大きさに依存する。この新部分空間183の大きさが十分であれば、元のデータの安全性が保証されることとなる。この新部分空間183の大きさは、乱数値範囲特定部206が記憶する値域情報に依存する。
乱数値範囲特定部206は、外部から受け取る情報に基づいて値域情報を生成し、生成した値域情報を記憶してもよい。例えば、受付部201は、属性名とともにその属性名と対応する属性の属性値の範囲を示す範囲情報を受け取ると、乱数値範囲特定部206は、属性名が示す属性の値域情報として、その範囲情報の値を記憶する。
乱数値範囲特定部206は、相関関係特定部105が特定した相関関係に基づいて算出した相関係数が所定の閾値以上を示す場合、前述の乱数値範囲を特定してもよい。この処理は、第一の属性と第二の属性とが属性値の間においても相関関係があるか否かを保証するための処理である。
===乱数発生部207===
乱数発生部207は、乱数値が、乱数値範囲特定部206が特定した乱数値範囲内になるように、対応する属性の種類毎に乱数を発生する。
乱数発生部207は、属性名とその属性名が示す属性の属性値に付加する乱数値とを対応付けて、乱数値記憶部210に記憶する。
===乱数付加部211===
乱数付加部211は、乱数発生部207が発生した、各属性に対応する乱数値を受け取る。または、乱数付加部211は、受付部201からユーザ識別子と属性名と乱数値とを受け取る。乱数付加部211は、受付部201が受け取ったユーザ識別子に対応付けられる属性値のうち、受付部201が受け取った属性名に対応する属性値を属性値記憶部209から読み出す。そして、乱数付加部211は、読み出した各属性値に対し、その属性名で示される属性に対応する乱数値を付加する。乱数付加部211は、乱数値を付加した各属性値を検索事業者装置230に送信する。
第二の実施の形態における乱数値特定装置200は、乱数値範囲特定部206が用いる所定の定数αおよび値域情報を、検索事業者装置230から受け取ってもよい。検索事業者装置230を用いるユーザは、これらの値の設定を基に、乱数値範囲をカスタマイズでき、乱数値を加えた後のデータの有効性を高めることのできる適切な乱数値を特定できる。
図13は、第二の実施の形態における乱数値特定システム20の動作の概要を示すフローチャートである。
検索事業者装置230は、ユーザ識別子と対応するユーザに関する属性名とを乱数値特定装置200へ送信する(ステップS201)。ユーザ識別子と属性名とは、図示しない外部装置から受け取る情報に基づいて定められてもよい。
受付部201は、ユーザ識別子と属性名とを受け取る(ステップS202)。受付部201は、受け取ったユーザ識別子と属性名とが対応付けられて乱数値記憶部210に記憶されているか否か判定する(ステップS203)。受付部201は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合(ステップS203の″No″)、受け取ったユーザ識別子と属性名とを属性相関特定部103に渡す。そして、乱数値特定システム20の処理は、ステップS205へ進む。
一方、受付部201は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていると判定した場合(ステップS203の″Yes″)、以下を処理する。すなわち、受付部201は、そのユーザ識別子と属性名とに対応付けられる乱数値を乱数値記憶部210から読み出す(ステップS204)。受付部201は、受け取ったユーザ識別子と属性名と読み出した乱数値とを乱数付加部211に渡す。そして、乱数値特定システム20の処理は、ステップS215へ進む。
これに対し、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合(ステップS303の″No″)、乱数値特定システム20は、次のような動作する。
属性相関特定部103は、受付部201が受け取った属性名が示す属性(第一の属性)を示す許諾情報を少なくとも一つ許諾情報記憶部102から読み出す(ステップS205)。属性相関特定部103は、許諾情報記憶部102から読み出した許諾情報が示す属性の中で、受付部201が受け取ったユーザ識別子に対応付けられる許諾情報が示す属性を特定する(ステップS206)。属性相関特定部103は、特定した属性の中で、読み出した各許諾情報を基に各属性が示される累計数に応じて、ある属性を第二の属性として特定する(ステップS207)。
属性相関特定部103は、前述の第二の属性を示す許諾情報を、許諾情報記憶部102から読み出した許諾情報の中から特定する(ステップS208)。
属性値取得部204は、属性相関特定部103が特定した許諾情報毎に、許諾情報に対応付けられるユーザ識別子で識別できるユーザの第一の属性および第二の属性に対応する属性値を属性値記憶部209から取得する(ステップS209)。
相関関係特定部105は、属性値取得部204が取得した属性値に基づいて、第一の属性および第二の属性の間の相関関係を特定する(ステップS210)。相関関係特定部105は、特定した相関関係に基づいて相関係数を計算し、乱数値範囲特定部206に渡す(ステップS211)。
乱数値範囲特定部206は、相関関係特定部105が特定した相関関係に基づいて、その相関関係に対応する第一の属性および第二の属性の間において乱数が取りうる範囲である乱数値範囲を特定する(ステップS212)。乱数発生部207は、乱数値が、乱数値範囲特定部206が特定した乱数値範囲内になるように、対応する属性毎に乱数を発生する(ステップS213)。
乱数発生部207は、属性名とその属性名が示す属性の属性値に付加する乱数値とを対応付けて、乱数値記憶部210に記憶する(ステップS214)。
ここまでが、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合の動作となる。
この以降は、受け取ったユーザ識別子と属性名との記憶に係わらず、同じ動作となる。
乱数付加部211は、乱数生成部207が生成した、各属性に対応する乱数値を受け取る。または、乱数付加部211は、受付部201から、各属性に対応する乱数値を受け取る。乱数付加部211は、受付部201が受け取ったユーザ識別子に対応付けられる属性値のうち、受付部201が受け取った属性名に対応する属性値を属性値記憶部209から読み出す(ステップS215)。そして、乱数付加部211は、読み出した各属性値に対し、その属性名で示される属性に対応する乱数値を付加する(ステップS216)。乱数付加部211は、乱数値を付加した各属性値を検索事業者装置230に送信する(ステップS217)。
検索事業者装置230は、乱数値特定装置200から乱数値の付加された属性値を受け取ると、受け取った属性値を出力する(ステップS218)。
図14は、第二の実施の形態における乱数値範囲特定部206の動作の概要を示すフローチャートである。
乱数値範囲特定部206は、第一の属性および第二の属性に対応する値域情報に基づいて、それらの属性を軸とする空間の一部である所定の部分空間を特定する(ステップS2121)。
乱数値範囲特定部206は、相関関係特定部105が算出した相関係数に基づいて、特定した部分空間を回転させる(ステップS2122)。
乱数値範囲特定部206は、ステップS2122の処理を用いて求められた部分空間を乱数値範囲として特定する(ステップS2123)。
第二の実施の形態における乱数値特定システム20は、第一の実施の形態における乱数値特定装置100が備える構成要素を含んでいる。したがって、第二の実施の形態における乱数値特定システム20は、第一の実施の形態における乱数値特定装置100と同様の効果を有する。
また、第二の実施の形態における乱数値特定システム20は、ユーザが公開を許諾する属性を少なくとも一つ示す許諾情報と、検索事業者装置230が送信する属性名とに基づいて、そのユーザが許諾する他の属性を特定する。そして、乱数値特定システム20は、属性名で特定される属性と、前述の他の属性との間の相関関係を特定し、その相関関係に基づいて属性値に付加する乱数値の範囲である乱数値範囲を特定する。
例えば、検索事業者装置230は、一つの事実を検索するために複数の検索クエリを用いることがある。例えば、
図2を参照して、ユーザ識別子「Alice」の「年齢」および「年収」の検索する場合を仮定する。ここで、例えば、検索事業者装置230は、ユーザ識別子「Alice」と属性名「年収」とを乱数値特定装置200に送信する。乱数値特定装置200は、ユーザ識別子「Alice」と属性名「年齢」とを受け取ると、許諾情報記憶部102から「Alice」、「Claire」、「Dave」および「Ellen」の許諾情報を読み出す。そして、乱数値特定装置200は、各許諾情報が示す属性の累計を、その属性毎に計算する。乱数値特定装置200は、例えば、計算した累計が最大であり、かつ受付部101が受け取ったユーザ識別子「Alice」に対応付けられる許諾情報が示す属性である「年収」を第二の属性と特定する。
乱数値特定装置200は、属性「年齢」および「年収」の間の相関関係を特定する。乱数値特定装置200は、特定した相関関係に基づいて乱数値範囲を特定する。乱数値特定装置200は、特定した乱数値範囲のいずれかに含まれる乱数値を特定する。そして、乱数値特定装置200は、ユーザ識別子「Alice」と属性名「年齢」とその乱数値とを対応付けて乱数値記憶部210に記憶する。また、乱数値特定装置200は、ユーザ識別子「Alice」と属性名「年収」とその乱数値とを対応付けて乱数値記憶部210に記憶する。
乱数値特定装置200は、前述の乱数値を「Alice」の「年齢」の属性値に付加し、検索事業者装置230に返す。
次に、検索事業者装置230は、ユーザ識別子「Alice」と属性名「年収」とを乱数値特定装置200に送信する。この場合、乱数値特定装置200は、乱数値記憶部210にユーザ識別子「Alice」と属性名「年収」と所定の乱数値とが記憶されていると判定し、その乱数値を「Alice」の「年収」の属性値に付加し、検索事業者装置230に返す。
よって、第二の実施の形態における乱数値特定システム20は、前述のように、あるユーザに関する一つの事実を検索するために複数の検索のクエリが用いられる場合でも、一回目の検索クエリに基づいて、次回以降の検索のクエリを推測できる。さらに、第二の実施の形態における乱数値特定システム20は、その推測結果に基づいて適切な乱数値範囲を特定できる。つまり、第二の実施の形態における乱数値特定システム20は、乱数値を加えた後のデータの有効性を高めることのできる乱数値を特定できる。
[第二の実施の形態の第一の変形例]
図15は、本発明の第二の実施の形態の第一の変形例における乱数値特定システム20aの構成を示すブロック図である。
図15を参照すると、乱数値特定システム20aは、検索事業者装置230aと情報保持事業者装置220とを含む。
<検索事業者装置230a>
検索事業者装置230aは、ユーザ識別子とユーザに関する情報の属性を示す属性名とを、後述の情報保持事業者装置220へ送信する。検索事業者装置230aは、図示しない外部装置からユーザ識別子を受け取ってもよいし、ユーザ識別子を記憶する図示しないユーザ情報記憶部を含み、そのユーザ情報記憶部に記憶されているユーザ識別子を読み出してもよい。
検索事業者装置230aは、乱数値の付加された属性値を受け取ると、受け取った属性値を出力する。
<情報保持事業者装置220>
情報保持事業者装置220は、乱数値特定装置200aと受付部221と属性値記憶部209と乱数付加部211とを含む。
===受付部221===
受付部221は、検索事業者装置230aからユーザ識別子と属性名とを受け取り、受け取ったユーザ識別子と属性名とを乱数値特定装置200aに渡す。
<乱数値特定装置200a>
乱数値特定装置200aは、受付部201aと許諾情報記憶部102と属性相関特定部103と属性値取得部204と相関関係特定部105と乱数値範囲特定部206と乱数発生部207と乱数値記憶部210とを含む。
===受付部201a===
受付部201aは、受付部221からユーザ識別子と属性名とを受け取り、受け取ったユーザ識別子と属性名とを属性相関特定部103に渡す。
第二の実施の形態の第一の変形例における乱数値特定システム20aは、第二の実施の形態における乱数値特定システム20と同様の構成要素を含んでいる。したがって、第二の実施の形態の第一の変形例における乱数値特定システム20aは、第二の実施の形態における乱数値特定システム20と同様の効果を有する。
[第二の実施の形態の第二の変形例]
図16は、本発明の第二の実施の形態の第二の変形例における乱数値特定システム20bの構成を示すブロック図である。
図16を参照すると、乱数値特定システム20bは、検索依頼事業者装置240と検索事業者装置230bとを含む。
<検索依頼事業者装置240>
検索依頼事業者装置240は、ある属性値の範囲を示す検索範囲を検索事業者装置230bに送信する。検索依頼事業者装置240は、ユーザを識別できる情報であるユーザ識別子を検索事業者装置230bに送信してもよい。
検索依頼事業者装置240は、乱数値の付加された属性値を受け取ると、受け取った属性値を各属性値に対応するユーザ毎に出力する。
<検索事業者装置230b>
検索事業者装置230bは、検索受付部231と、受付部201bと許諾情報記憶部102と属性相関特定部103と属性値取得部204と相関関係特定部105と乱数値範囲特定部206と乱数発生部207と乱数値記憶部210と乱数付加部211bと属性値記憶部209とを含む。
===検索受付部231===
検索受付部231は、検索依頼事業者装置240から、ある属性値の範囲を示す検索範囲を受け取る。そして、検索受付部231は、受け取った検索範囲とユーザを識別できるユーザ識別子とユーザに関する情報の属性を示す属性名とを、後述の受付部201bへ渡す。この属性名は、受け取った検索範囲が示す属性値に対応する属性を示す属性名である。
検索受付部231は、検索依頼事業者装置240からユーザ識別子を受け取ってもよいし、ユーザ識別子を記憶する図示しないユーザ情報記憶部を含み、そのユーザ情報記憶部に記憶されているユーザ識別子を読み出してもよい。検索受付部231は、検索依頼事業者装置240から受け取ったすべてのユーザ識別子を受付部201bに渡してもよい。または、検索受付部231は、ユーザ情報記憶部に記憶されているすべてのユーザ識別子を受付部201bに渡してもよい。
検索受付部231は、乱数付加部211bから乱数値の付加された属性値を受け取ると、各属性値に対応するユーザ毎に、以下を処理する。まず、検索受付部231は、検索依頼事業者装置240から受け取る検索範囲が示す属性値の範囲に対応する属性を特定する。そして、検索受付部231は、特定した属性に対応する属性値がすべて揃うユーザについての、乱数値の付加された属性値を、検索依頼事業者装置240に送信する。
検索受付部231が受付部201bにユーザ識別子を渡す処理は、検索依頼事業者装置240から検索範囲を受け取るたびに行われてもよいし、検索依頼事業者装置240から検索範囲を受け取る処理とは独立に行われてもよい。
===受付部201b===
受付部201bは、検索受付部231からユーザ識別子と属性名とを受け取り、そのユーザ識別子と属性名とを属性相関特定部103に渡す。
===乱数付加部211b===
乱数付加部211bは、乱数生成部207が生成した、各属性に対応する乱数値を受け取る。または、乱数付加部211bは、受付部201bからユーザ識別子と属性名と乱数値とを受け取る。乱数付加部211bは、受付部201bが受け取ったユーザ識別子に対応付けられる属性値のうち、受付部201bが受け取った属性名に対応する属性値を属性値記憶部209から読み出す。そして、乱数付加部211bは、読み出した各属性値に対し、その属性名で示される属性に対応する乱数値を付加する。乱数付加部211bは、乱数値を付加した各属性値を検索受付部231に渡す。
第二の実施の形態の第二の変形例における乱数値特定システム20bは、第二の実施の形態における乱数値特定システム20と同様の構成要素を含んでいる。したがって、第二の実施の形態の第二の変形例における乱数値特定システム20bは、第二の実施の形態における乱数値特定システム20と同様の効果を有する。
[第三の実施の形態]
図17は、本発明の第三の実施の形態における乱数値特定システム30の構成を示すブロック図である。
図17を参照すると、乱数値特定システム30は、検索事業者装置330、情報保持事業者装置320a、情報保持事業者装置320b、および乱数値特定装置300を含む。
第三の実施の形態において、情報保持事業者装置320は、情報保持事業者装置320a、および320bを総称したものである。
<検索事業者装置330>
検索事業者装置330は、ユーザ識別子とユーザに関する情報の属性の属性名とを、後述の情報保持事業者装置320a、および情報保持事業者装置320bへ送信する。検索事業者装置330は、図示しない外部装置からユーザ識別子を受け取ってもよいし、ユーザ識別子を記憶する図示しないユーザ情報記憶部を含み、そのユーザ情報記憶部に記憶されているユーザ識別子を読み出してもよい。
また、検索事業者装置330は、検索事業者装置330が生成した公開鍵を情報保持事業者装置320に送信してもよい。この公開鍵は、完全準同型暗号の公開鍵である。
検索事業者装置330は、乱数値の付加された属性値を受け取ると、受け取った属性値を出力する。また、検索事業者装置330は、暗号化された乱数値が付加された属性値を受け取ると、受け取った属性値を、前述の公開鍵に対応する完全準同型暗号の秘密鍵を用いて復号する。そして、検索事業者装置330は、復号された属性値を出力する。
第三の実施の形態において、検索事業者装置330は、ユーザ識別子と属性名とを情報保持事業者装置320に送信する際に公開鍵を送信してもよいし、あらかじめ情報保持事業者装置320に公開鍵を送信してもよい。
<情報保持事業者装置320>
図18は、本発明の第三の実施の形態における情報保持事業者装置320の構成を示すブロック図である。
図18を参照すると、情報保持事業者装置320は、受付部321と属性値記憶部209と属性値取得部322と送信部323と乱数付加部324とを含む。
===受付部321===
受付部321は、検索事業者装置330からユーザ識別子と属性名とを受け取る。そして、受付部321は、受け取った属性名を乱数値特定装置300に送信する。
受付部321は、検索事業者装置330から、検索事業者装置330が生成した公開鍵を受け取る場合、受け取った公開鍵を送信部323に渡す。
===属性値取得部322===
属性値取得部322は、乱数値特定装置300からユーザ識別子と属性名とを受け取る。そして、属性値取得部322は、受け取ったユーザ識別子と属性名とに対応付けられる属性値を属性値記憶部209から取得する。
属性値取得部322は、取得した属性値と、受け取ったユーザ識別子と属性名とを、送信部323に渡す。
===送信部323===
送信部323は、属性値取得部322からユーザ識別子と属性名と属性値とを受け取り、受け取ったユーザ識別子と属性名と属性値とを乱数値特定装置300に送信する。
送信部323は、属性値を、所定の暗号化を用いて暗号化して乱数値特定装置300に送信してもよい。例えば、送信部323は、検索事業者装置330が生成した完全準同型暗号の公開鍵を用いて属性値を暗号化する。そして、送信部323は、暗号化された属性値を乱数値特定装置300に送信する。乱数値特定装置300は、完全準同型暗号が適用された暗号化済みのデータに対して、平文や秘密鍵なしで加法および乗法演算が可能である。つまり、乱数値特定装置300は、暗号化された属性値を用いて、その属性値が暗号化されたまま乱数値の演算が可能である。第三の実施の形態では、送信部323は、完全準同型暗号を用いて属性値を暗号化すると仮定する。
===乱数付加部324===
乱数付加部324は、乱数値特定装置300から乱数値を受け取る。乱数付加部324は、属性値取得部322が取得した属性値に、その属性値に対応する属性の乱数値を付加する。
乱数付加部324は、乱数値とともに属性値が暗号化されていたことを示す情報を受け取った場合、以下を処理する。すなわち、乱数付加部324は、暗号化された受け取った乱数値と、暗号化された受け取った属性値とを暗号化されたまま加法演算を処理する。この加法演算の処理は、送信部323が属性値に対して適用した暗号化処理に対応するアルゴリズムを用いて行われる。
乱数付加部324は、乱数値を付加した属性値を検索事業者装置330に送信する。また、乱数付加部324は、属性値が暗号化されている場合、乱数値を付加した暗号化された属性値を検索事業者装置330に送信する。
<乱数値特定装置300>
図19は、本発明の第三の実施の形態における乱数値特定装置300の構成を示すブロック図である。
図19を参照すると、乱数値特定装置300は、受付部301と許諾情報記憶部102と属性相関特定部103と相関関係特定部305と乱数発生部207と属性値要求部312と乱数値範囲特定部206と乱数送信部308と乱数値記憶部210とを含む。
===受付部301===
受付部301は、情報保持事業者装置320からユーザ識別子と属性名とを受け取ると、受け取ったユーザ識別子と属性名とが対応付けられて乱数値記憶部210に記憶されているか否か判定する。
受付部301は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合、受け取ったユーザ識別子と属性名とを属性相関特定部103に渡す。一方、受付部301は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていると判定した場合、そのユーザ識別子と属性名とに対応付けられる乱数値を乱数値記憶部210から読み出す。そして、受付部301は、受け取ったユーザ識別子と属性名と読み出した乱数値とを後述の乱数送信部308に渡す。この場合、属性相関特定部103、属性値要求部312、相関関係特定部305、乱数値範囲特定部206および乱数発生部207における処理の一部またはすべてが省略されてもよい。
===属性値要求部312===
属性値要求部312は、属性相関特定部103が特定した許諾情報毎に、以下を処理する。すなわち、属性値要求部312は、許諾情報に対応付けられるユーザ識別子と、そのユーザ識別子で識別されるユーザの第一の属性および第二の属性を示す属性値とを情報保持事業者装置320へ送信する。第一の属性は、受付部301が受け取る属性名が示す属性である。また、第二の属性は、属性相関特定部103が特定する所定の属性である。
===相関関係特定部305===
相関関係特定部305は、情報保持事業者装置320から受け取る属性値に基づいて、第一の属性および第二の属性の間の相関関係を特定する。相関関係特定部305が具体的に相関関係を求める処理は、第一の実施の形態における相関関係特定部105の処理と同様である。
相関関係特定部305は、情報保持事業者装置320から受け取る属性値が暗号化された場合でも、第一の実施の形態における相関関係特定部105の処理と同様の処理で相関関係を求めることができる。その理由は、属性値が完全準同型暗号を用いて暗号化されるからである。
===乱数送信部308===
乱数送信部308は、乱数発生部207が発生した乱数値、または受付部301が乱数値記憶部210から読み出した乱数値を受け取る。乱数送信部308は、受け取った乱数値を情報保持事業者装置320に送信する。特に、乱数送信部308は、受付部301が受け取った属性値に対応する属性に付加する乱数値を情報保持事業者装置320に送信する。
乱数送信部308は、受付部301が受け取った属性値が暗号化されていた場合、属性値が暗号化されていたことを示す情報を合わせて情報保持事業者装置320に送信する。
図20は、第三の実施の形態における乱数値特定システム30の動作の概要を示すフローチャートである。
図20の動作は、検索事業者装置330が、情報保持事業者装置320aに対してユーザ識別子と属性名とを送信する場合の一例である。
検索事業者装置330は、ユーザ識別子とユーザに関する情報の属性の属性名とを、情報保持事業者装置320aへ送信する(ステップS301)。情報保持事業者装置320aの受付部321は、検索事業者装置330からユーザ識別子と属性名とを受け取る(ステップS302)。受付部321は、受け取ったユーザ識別子と属性名とを乱数値特定装置300に送信する。
乱数値特定装置300の受付部301は、ユーザ識別子と属性名とを受け取る。そして受付部301は、受け取ったユーザ識別子と属性名とが対応付けられて乱数値記憶部210に記憶されているか否か判定する(ステップS303)。受付部301は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合(ステップS303の″No″)、受け取ったユーザ識別子と属性名とを属性相関特定部103に渡す。そして、乱数値特定システム30の処理は、ステップS305へ進む。
一方、受付部301は、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていると判定した場合(ステップS303の″Yes″)、以下を処理する。すなわち、受付部301は、そのユーザ識別子と属性名とに対応付けられる乱数値を乱数値記憶部210から読み出す(ステップS304)。受付部301は、受け取ったユーザ識別子と属性名と読み出した乱数値とを乱数送信部308に渡す。そして、乱数値特定システム30の処理は、ステップS316へ進む。
これに対し、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合、乱数値特定システム30は、次のように動作する。
属性相関特定部103は、受付部301が受け取った属性名が示す属性(第一の属性)を示す許諾情報を少なくとも一つ許諾情報記憶部102から読み出す(ステップS305)。そして、属性相関特定部103は、許諾情報記憶部102から読み出した許諾情報が示す属性の中で、各属性が示される累計数に応じて第二の属性を特定する(ステップS306)。そして、属性相関特定部103は、第二の属性を示す許諾情報を、ステップS305の処理において読み出された許諾情報の中から特定する(ステップS307)。
属性値要求部312は、ステップS307の処理において特定された許諾情報毎に、以下を処理する。すなわち、属性値要求部312は、許諾情報に対応付けられるユーザ識別子とそのユーザ識別子で識別されるユーザの第一の属性および第二の属性を示す属性名とを情報保持事業者装置320aへ送信する(ステップS308)。
情報保持事業者装置320aの属性値取得部322は、乱数値特定装置300からユーザ識別子と属性名とを受け取る。そして、属性値取得部322は、受け取った属性名毎に、その属性名およびユーザ識別子に対応付けられる属性値を属性値記憶部209から取得する(ステップS309)。送信部323は、属性値取得部322が取得した属性値を乱数値特定装置300に送信する(ステップS310)。
乱数値特定装置300は、情報保持事業者装置320aから属性値を受け取る。そして、相関関係特定部305は、前述の属性値に基づいて、第一の属性および第二の属性の間の相関関係を特定する(ステップS311)。相関関係特定部305は、特定した相関関係に基づいて相関係数を計算し、乱数値範囲特定部206に渡す(ステップS312)。
乱数値範囲特定部206は、相関関係特定部305が特定した相関関係に基づいて、その相関関係に対応する第一の属性および第二の属性の間において乱数が取りうる範囲である乱数値範囲を特定する(ステップS313)。乱数発生部207は、乱数値が、乱数値範囲特定部206が特定した乱数値範囲内になるように、対応する属性毎に乱数を発生する(ステップS314)。
乱数発生部207は、属性名とその属性名が示す属性の属性値に付加する乱数値とを対応付けて、乱数値記憶部210に記憶する(ステップS315)。
ここまでが、受け取ったユーザ識別子と属性名とが乱数値記憶部210に記憶されていないと判定した場合の動作となる。
この以降は、受け取ったユーザ識別子と属性名との記憶に係わらず、同じ動作となる。
乱数送信部308は、乱数生成部207が生成した、各属性に対応する乱数値を受け取る。または、乱数付加部211は、受付部301から、各属性に対応する乱数値を受け取る。乱数送信部308は、受け取った乱数値を情報保持事業者装置320aへ送信する(ステップS316)。
情報保持事業者装置320aの乱数付加部324は、乱数値特定装置300から乱数値を受け取る。乱数付加部324は、属性値取得部322が取得した属性値に、その属性値に対応する属性の乱数値を付加する(ステップS317)。
乱数付加部324は、乱数値を付加した属性値を検索事業者装置330に送信する(ステップS318)。検索事業者装置330は、乱数値の付加された属性値を受け取ると、受け取った属性値を出力する(ステップS319)。そして、乱数値特定システム30の処理は、終了する。
第三の実施の形態における乱数値特定システム30は、第二の実施の形態における乱数値特定システム20と同様の構成要素を含んでいる。したがって、第三の実施の形態の第一の変形例における乱数値特定システム30は、第二の実施の形態における乱数値特定システム20と同様の効果を有する。
また、第三の実施の形態における乱数値特定装置300は、属性値の真の値を知ることなく、暗号化された属性値の値に基づいて相関関係および乱数値範囲を特定する。暗号化のアルゴリズムとして完全準同型暗号が用いられることで、乱数値特定装置300は、暗号化に用いられた平文および秘密鍵を知ることなく、暗号化されたデータに対しての乗算、加算が可能となる。
乱数値特定装置300が特定した乱数値範囲に基づいて特定された乱数値は、情報保持事業者装置320に送信される。そして、情報保持事業者装置320は、暗号化された乱数値をそのまま、暗号化された属性値に付加する。情報保持事業者装置320は、乱数値が付加された、暗号化された属性値を検索事業者装置330に送信する。
検索事業者装置330は、受け取った属性値を、検索事業者装置330が生成した秘密鍵を用いて復号し、復号された属性値を出力する。
したがって、第三の実施の形態における乱数値特定システム30は、元データの値を隠蔽させ、かつ、乱数値を加えた後のデータの有効性を高めることのできる適切な乱数値を特定できる。特に、乱数値特定システム30は、乱数値範囲を特定する乱数値特定装置300が、元データの値を知ることなく、かつ、乱数値を加えた後のデータの有効性を高めることのできる適切な乱数値を特定できる。
本発明の効果の一例は、元データの値を隠蔽させ、かつ、乱数値を加えた後のデータの有効性を高めることのできる適切な乱数値を特定できることである。
以上、各実施の形態および実施例を参照して本発明を説明したが、本発明は上記実施の形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえる様々な変更をすることができる。
また、本発明の各実施の形態における各構成要素は、その機能をハードウェア的な実現はもちろん、コンピュータとプログラムとで実現できる。プログラムは、磁気ディスクや半導体メモリなどのコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御し、そのコンピュータを前述した各実施の形態における構成要素として機能させる。
この出願は、2011年3月4日に出願された日本出願特願2011−047929を基礎とする優先権を主張し、その開示の全てをここに取り込む。