(57)【要約】【課題】  秘匿計算を用いて、入力されたデータ群とサーバ装置のデータ群の一致を判定する場合に、秘匿計算の計算量を抑制する。【解決手段】  入力部102は、データ群を入力し、データ群のデータ数を示すデータ数情報、および、データ群の各データの属性を示すカテゴリデータをサーバ装置115に送信する。データ連結部103は、データ群のデータを連結処理する。データ秘匿部104は、連結処理されたデータを秘匿化する。計算結果復元部113は、データ秘匿部104が秘匿化した秘匿化データと、サーバ装置115のデータ群のデータを連結処理し秘匿化した秘匿化データとの所定の計算の結果を用いて、秘匿化前のデータ群の計算結果を復元する。判定部114は、復元された計算結果に基づき、入力されたデータ群とサーバ装置115のデータ群の一致を判定する。【選択図】  図1
2014216865.tif 000002
【特許請求の範囲】
【請求項１】
データ群を入力し、前記データ群のデータ数を示す第一のデータ数情報、および、前記データ群の各データの属性を示すカテゴリデータをサーバ装置に送信する入力手段と、
前記データ群のデータを連結処理する連結手段と、
前記連結処理されたデータを秘匿化する秘匿化手段と、
前記秘匿化手段が秘匿化した秘匿化データと、前記サーバ装置のデータ群のデータを連結処理し秘匿化した秘匿化データとの所定の計算の結果を用いて、秘匿化前のデータ群の計算結果を復元する復元手段と、
前記復元された計算結果に基づき、前記入力されたデータ群と前記サーバ装置のデータ群の一致を判定する判定手段とを有する情報処理装置。
【請求項２】
前記サーバ装置のデータ群は、前記カテゴリデータに対応し、前記第一のデータ数情報に相当する数のデータを含む請求項1に記載された情報処理装置。
【請求項３】
前記入力手段は、さらに、前記サーバ装置を特定するためのアドレス情報を入力する請求項1または請求項2に記載された情報処理装置。
【請求項４】
さらに、前記秘匿化手段および前記サーバ装置から前記秘匿化データを受信して、前記所定の計算を行う計算手段を有する請求項1から請求項3の何れか一項に記載された情報処理装置。
【請求項５】
前記計算手段は、前記秘匿化データを用いて、秘匿化前の前記入力されたデータ群のデータと前記サーバ装置のデータ群のデータの差分を計算する請求項4に記載された情報処理装置。
【請求項６】
前記連結処理は、前記データ群のデータの最大データサイズに合わせて、前記データ群の各データをパディングし、前記パディング後のデータを連結する請求項1から請求項5の何れか一項に記載された情報処理装置。
【請求項７】
前記判定手段は、前記復元された計算結果のビット長と前記第一のデータ数情報を用いてビットマスクを生成する生成手段を有し、
前記復元された計算結果と前記ビットマスクを用いて、前記データ群の各データの一致を判定する請求項6に記載された情報処理装置。
【請求項８】
前記連結処理は、前記データ群のデータ数をビット長の順に示す第二のデータ数情報を生成し、前記データ群のデータを前記ビット長の順にソートし、前記ソート後のデータを連結する請求項1から請求項5の何れか一項に記載された情報処理装置。
【請求項９】
前記判定手段は、前記第二のデータ数情報を用いてビットマスクを生成する生成手段を有し、
前記復元された計算結果と前記ビットマスクを用いて、前記データ群の各データの一致を判定する請求項8に記載された情報処理装置。
【請求項１０】
さらに、データファイルからデータを抽出する抽出手段を有し、
前記入力手段は、前記データ群の代わりに、データファイルを指定する情報および前記データファイルから抽出するデータの属性を示すカテゴリデータを入力して、前記入力したカテゴリデータを前記サーバ装置に送信し、
前記抽出手段は、前記指定されたデータファイルから前記入力されたカテゴリデータに対応するデータ群を抽出し、前記抽出したデータ群のデータ数を前記第一のデータ数情報として前記サーバ装置に送信する請求項1から請求項9の何れか一項に記載された情報処理装置。
【請求項１１】
前記判定手段は、前記判定の結果を前記サーバ装置に送信する請求項1から請求項10の何れか一項に記載された情報処理装置。
【請求項１２】
請求項1から請求項11の何れか一項に記載された情報処理装置から第一のデータ数情報およびカテゴリデータを受信し、データベースから前記カテゴリデータに対応し、前記第一のデータ数情報に相当する数のデータをデータ群として抽出する手段と、
前記データ群のデータを連結処理する手段と、
前記連結処理されたデータを秘匿化し、前記秘匿化したデータを前記情報処理装置に送信する手段とを有するサーバ装置。
【請求項１３】
入力手段が、データ群を入力し、前記データ群のデータ数を示す第一のデータ数情報、および、前記データ群の各データの属性を示すカテゴリデータをサーバ装置に送信し、
連結手段が、前記データ群のデータを連結処理し、
秘匿化手段が、前記連結処理されたデータを秘匿化し、
復元手段が、前記秘匿化手段が秘匿化した秘匿化データと、前記サーバ装置のデータ群のデータを連結処理し秘匿化した秘匿化データとの所定の計算の結果を用いて、秘匿化前のデータ群の計算結果を復元し、
判定手段が、前記復元された計算結果に基づき、前記入力されたデータ群と前記サーバ装置のデータ群の一致を判定する情報処理方法。
【請求項１４】
コンピュータを請求項1から請求項11の何れか一項に記載された情報処理装置の各手段として機能させるためのプログラム。
【請求項１５】
コンピュータを請求項12に記載されたサーバ装置の各手段として機能させるためのプログラム。
【請求項１６】
請求項14または請求項15に記載されたプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘匿計算を用いる情報処理に関する。
【背景技術】
【０００２】
例えば、インターネットの普及により、ウェブサイトなどに様々な情報を簡単に公開することができるようになった。その弊害として、例えば人物を特定可能な写真画像（例えば当該人物を被写体として含む写真画像）が第三者によってウェブサイトに公開される危惧がある。本人の意思に反して、そのような写真画像が公開された人物が、プライバシ情報を公開せずに当該写真画像の削除をウェブサイトの管理者に依頼したいという要望がある。そのような要望に応えて、プライバシ情報を秘匿したまま、ウェブサイトの写真画像の削除依頼を送信する方法が提案されている（特許文献1）。
【０００３】
特許文献1の方法は、個人を特定可能な写真の画像データを秘匿化し、秘匿計算を用いて、秘匿化された画像データから特徴量を算出する。また、ウェブサイトに公開された写真の画像データから同様に特徴量を算出する。そして、それら特徴量を比較し、一致する場合は当該写真画像の削除依頼を送信する。このような方法によれば、プライバシ情報である個人を特定可能な写真画像自体を公開せずに、削除依頼を行うことができる。
【０００４】
しかし、特許文献1の方法は、比較対象の写真画像ごとに秘匿計算が必要になる。例えば、家族や友人の写真画像が公開されていないかを検索するためにOR検索（何れかの条件を満たすと一致）を行う場合、複数の写真画像を用意して、写真画像の数分の秘匿計算を行う。その結果、秘匿計算の計算量が増大する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2011-022641号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、秘匿計算を用いて、入力されたデータ群とサーバ装置のデータ群の一致を判定する場合に、秘匿計算の計算量を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００８】
本発明にかかる情報処理は、データ群を入力し、前記データ群のデータ数を示す第一のデータ数情報、および、前記データ群の各データの属性を示すカテゴリデータをサーバ装置に送信し、前記データ群のデータを連結処理し、前記連結処理されたデータを秘匿化し、前記秘匿化した秘匿化データと、前記サーバ装置のデータ群のデータを連結処理し秘匿化した秘匿化データとの所定の計算の結果を用いて、秘匿化前のデータ群の計算結果を復元し、前記復元された計算結果に基づき、前記入力されたデータ群と前記サーバ装置のデータ群の一致を判定する。
【発明の効果】
【０００９】
本発明によれば、秘匿計算を用いて、入力されたデータ群とサーバ装置のデータ群の一致を判定する場合に、秘匿計算の計算量を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】実施例のプライバシ情報の有無判定システムの構成例を示すブロック図。
【図２】cat_data(i)の値の一例を示す図。
【図３】UIの表示例を示す図。
【図４】プライバシ情報の有無判定処理を説明するフローチャート。
【図５】データ連結処理およびデータ秘匿化処理を説明するフローチャート。
【図６】連結データの一例を示す図。
【図７】秘匿化データの一例を示す図。
【図８】判定計算部の処理を説明するフローチャート。
【図９】実施例2のプライバシ情報の有無判定システムの構成例を示すブロック図。
【図１０】実施例2のUIの表示例を示す図。
【図１１】実施例3のデータ連結処理を説明するフローチャート。
【図１２】実施例3のプライバシ情報の有無判定システムの構成例を示すブロック図。
【発明を実施するための形態】
【００１１】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。
【実施例１】
【００１２】
［プライバシ情報の有無判定システム］
図1のブロック図により実施例のプライバシ情報の有無判定システムの構成例を示す。プライバシ情報の有無判定システムは、互いにネットワークを介して通信可能な端末装置101、計算部106、108、110、判定計算部112、サーバ115から構成される。
【００１３】
●端末装置
端末装置101は、例えばパーソナルコンピュータ(PC)である。入力部102は、例えばキーボードやマウスなどを有し、サイトアドレスや氏名や住所などのプライバシ情報に該当するデータ群をuser_data(i)（i=1, 2, …, data_num）として入力する。なお、サイトアドレスは、削除したいプライバシ情報が登録されている可能性があるサイトのアドレス情報（例えばURLやIPアドレス）である。また、data_numはデータ数を示すデータ数情報である。なお、プライバシ情報は、氏名（ふりがなを含む）、住所、性別、年齢、電話番号、生年月日、社会保障番号等の番号など個人を特定可能な個人情報である。
【００１４】
入力部102は、user_data(i)とdata_numをデータ連結部103と表示部105に供給するとともに、data_numを判定計算部112に送信する。さらに、入力部102は、user_data(i)の各データの属性を示すカテゴリデータcat_data(i)を生成し、cat_data(i)とdata_numをサーバ115に送信する。図2によりcat_data(i)の値の一例を示す。例えば、user_data(i)の属性が「氏名」ならcat_data(i)=1であり、「住所」ならcat_data(i)=2であり、「電話番号」ならcat_data(i)=3である。
【００１５】
データ連結部103は、詳細は後述するが、入力部102から受信したデータuser_data(i)をすべて連結し、連結したデータcat_dataを生成する。
【００１６】
データ秘匿部104は、真性乱数と予め定められた式を用いて、データ連結部103が生成したcat_dataを秘匿化する。つまり、秘匿化前のデータと乱数から秘匿化前のデータを四つの秘匿化データcon_data_X、con_data_Y、con_data_Z、con_data_Cに分割する。そして、計算部106にcon_data_Xを送信し、計算部108にcon_data_Yとcon_data_Cを送信し、計算部110にcon_data_Zとcon_data_Cを送信する。
【００１７】
秘匿化前のデータの復元には、計算部106、108、110のうち少なくとも二つの計算部から送信されるデータを取得する必要があり、秘匿化前のデータを保護することができる。なお、秘匿化したまま加減算ができる方法、例えば、マルチパーティ計算プロトコルや準同型暗号であるPaillier暗号などを使用することができる。
【００１８】
表示部105は、例えばモニタにユーザインタフェイス(UI)を表示する。UIは、入力部102によって入力する情報および入力された情報、並びに、サーバ115において入力データに一致するデータがあるか否かの判定結果などの閲覧に利用される。
【００１９】
図3によりUIの表示例を示す。図3(a)は判定前の画面例を、図3(b)は判定後の画面例をそれぞれ示す。入力部1001aには、検索し、プライバシ情報に一致する情報がある場合に削除依頼を行うサイトアドレスが入力される。入力部1001bには、プライバシ情報が入力され、この例ではプライバシ情報として名前1001c、住所1001d、電話番号1001eが入力される例を示す。そして、サーバ115における判定の後、図3(b)に一例を示すように、表示部1001fに判定結果が表示される。
【００２０】
なお、属性が同じデータでも、当該データを格納するフィールドのサイズ（バイト長）が異なる場合がある。この点を考慮すると、入力部102は、サイトアドレスによってサーバ装置を特定し、当該サーバ装置と通信を行って、各プライバシ情報のデータサイズを決定することが好ましい。
【００２１】
●計算部および判定計算部
計算部106、108、110および判定計算部112はそれぞれ所定の計算を行う主体であり、例えばCPU、RAMなどのメモリ、HDDなどの記録媒体、サーバとの通信インタフェイスを有するコンピュータ機器を備える装置やシステムなどである。計算部のCPUがRAMをワークメモリとしてHDDに格納されたプログラムを実行することで、計算部の機能が実現される。
【００２２】
計算部106は、端末装置101において秘匿化されたデータcon_data_Xと、後述するサーバ115において秘匿化されたデータcon_data_X2を用いる式(1)に示す計算を行い、計算結果を判定計算部112に送信する。
result_data_X = con_data_X - con_data_X2；      …(1)
【００２３】
計算部108は、端末装置101において秘匿化されたデータcon_data_Y、con_data_Cと、後述するサーバ115において秘匿化されたデータcon_data_Y2、con_data_C2を入力する。そして、それらデータを用いる式(2)に示す計算を行い、計算結果を判定計算部112に送信する。
result_data_X = con_data_Y - con_data_Y2；
result_data_C = con_data_C - con_data_C2；      …(2)
【００２４】
計算部110は、端末装置101において秘匿化されたデータcon_data_Z、con_data_Cと、後述するサーバ115において秘匿化されたデータcon_data_Z2、con_data_C2を入力する。そして、それらデータを用いる式(3)に示す計算を行い、計算結果を判定計算部112に送信する。
result_data_Z = con_data_Z - con_data_Z2；
result_data_C = con_data_C - con_data_C2；      …(3)
【００２５】
判定計算部112は、計算結果復元部113および判定部114を有する。計算結果復元部113は、計算部106、108、110の計算結果result_data_Xとresult_data_Cを用いる式(4)の計算により秘匿化前のデータの計算結果を復元する。または、result_data_Y、result_data_Z、result_data_Cを用いる式(5)の計算により秘匿化前のデータの計算結果を復元する。
result_data = result_data_X + result_data_C；                  …(4)
result_data = result_data_Y + result_data_Z + result_data_C；  …(5)
【００２６】
判定部114は、計算結果復元部113の復元結果を入力して、端末装置101において入力されたデータuser_data(i)と、サーバ115におけるデータserver_data(i)が一致するか否かを判定する。そして、判定結果を端末装置101の表示部105およびサーバ115の判定結果受信部120に送信する。
【００２７】
●サーバ
サーバ115は、端末装置101の入力部102により入力されたアドレスのサイトを運用するサーバに該当する。サーバ115は、データベース(DB)116、データ抽出部117、データ連結部118、データ秘匿部119および判定結果受信部120を有する。なお、サーバ115は、例えばCPU、RAMなどのメモリ、HDDなどの記録媒体を有するコンピュータ装置であり、CPUがRAMをワークメモリとしてHDDに格納されたプログラムを実行することで、サーバ115の機能が実現される。
【００２８】
DB116には、疾病に関する医療用の統計データなどが電子文書として格納されている。データ抽出部117は、端末装置101から受信したcat_data(i)に基づき、該当する属性のデータがDB116にあるか否かを判定し、あればそれらデータ群を抽出し、抽出したデータをserver_data(i)としてRAMなどに格納する。
【００２９】
なお、server_data(i)のデータ数は、user_data(i)のデータ数data_numと同じとする。また、カテゴリが同じデータのデータサイズは同一とする。また、抽出方法としては例えばキーワード検索や全文検索を使用する。
【００３０】
データ連結部118は、データ連結部103と同様に、server_data(i)を連結し、con_data2を生成する。データ秘匿部119は、データ秘匿部104と同様に、con_data2を秘匿化する。つまり、秘匿化前のデータと乱数から秘匿化前のデータを四つのデータcon_data_X2、con_data_Y2、con_data_Z2およびcon_data_C2に分割する。そして、計算部106にcon_data_X2を送信し、計算部108にcon_data_Y2とcon_data_C2を送信し、計算部110にcon_data_Z2とcon_data_C2を送信する。
【００３１】
判定結果受信部120は、判定計算部112から判定結果を受信する。サーバ115の管理者は、判定結果受信部120が受信した判定結果を参照して、判定結果が「データが一致」を示す場合は該当するデータを削除する。
【００３２】
［プライバシ情報の有無判定処理］
図4のフローチャートによりプライバシ情報の有無判定処理を説明する。
【００３３】
端末装置101の入力部102は、サイトアドレスとプライバシ情報などのデータを入力し、入力されたサイトアドレスからサイトのDB116を運用するサーバ115を特定する。さらに、プライバシ情報をuser_data(i)に格納し、プライバシ情報のデータ数をdata_numに格納し、user_data(i)のデータ属性をcat_data(i)に格納する。そして、data_numを判定計算部112の判定部114に送信し、cat_data(i)とdata_numをサーバ115のデータ抽出部117に送信する(S201)。
【００３４】
次に、データ連結部103は入力されたuser_data(i)を連結し(S202)、データ秘匿部104は連結されたデータcon_dataを秘匿化する(S203)。
【００３５】
サーバ115のデータ抽出部117は、端末装置101から受信したcat_data(i)に基づき、該当する属性のデータがDB116にあるか否かを判定する。そして、該当する属性のデータあれば、それらデータを抽出し、抽出したデータをserver_data(i)に格納する(S204)。
【００３６】
次に、データ連結部118は抽出されたserver_data(i)を連結し(S205)、データ秘匿部119は連結されたデータcon_data2を秘匿化する(S206)。
【００３７】
計算部106、108、110はそれぞれ、秘匿化データの差分を算出し、計算結果を判定計算部112の計算結果復元部113に送信する(S207)。
【００３８】
判定計算部112の計算結果復元部113は、計算部106、108、110から受信した計算結果に基づきuser_data(i)とserver_data(i)を復元する(S208)。そして、判定部114は、復元されたuser_data(i)とserver_data(i)の一致、不一致を判定し(S209)、判定結果を端末装置101の表示部105とサーバ115の判定結果受信部120に送信する(S210)。
【００３９】
判定結果の受信後、表示部105はUIの表示を更新する（例えば、図3(a)から図3(b)）。また、サーバ115の管理者は、判定結果受信部120が受信した判定結果を参照する。そして、判定結果が、端末装置101において入力されたプライバシ情報に一致するデータがあることを示す場合（判定結果がすべて‘0’）、プライバシ情報server_data(i)を削除する。
【００４０】
●データ連結処理
図5(a)のフローチャートによりデータ連結処理を説明する。データ連結処理は、データ連結部103およびデータ連結部118によって実行されるが、以下では、データ連結部103におけるデータ連結処理を説明する。なお、データ連結部103の処理における「user_data(i)」「con_data」を「server_data(i)」「con_data2」に置き換えればデータ連結部118の処理になる。
【００４１】
図6により連結データの一例を示す。図6(a)は端末装置101の入力部102が入力したデータを示し、プライバシ情報user_data(1)=10であり、プライバシ情報user_data(2)=65の例を示す。この場合、データ数data_num=2である。なお、図6(a)にはcat_data(i)は記載しないが、例えばcat_data(1)=1、cat_data(2)=2である。
【００４２】
データ連結部103は、データuser_data(i)のデータサイズをビット単位で計測し、最大のデータサイズをuser_data_maxとする(S401)。例えば、図6(a)の例では、user_data(1)が4ビット、user_data(2)が8ビットであり、user_data_maxは8ビットである。
【００４３】
次に、データ連結部103は、データサイズがuser_data_maxに達しないデータをパディングする(S402)。例えば、図6(a)の例では、user_data(1)は、4ビット（＜user_data_max=8ビット)であり、パディング‘0000’を連結して8ビットデータにする。
【００４４】
次に、データ連結部103は、下式によりuser_data(i)を連結してcon_dataを生成する(S403)。
con_data = user_data(1)‖user_data(2)‖…‖user_data(data_num)      …(6)
ここで、‖は連結演算子。
【００４５】
例えば、図6(a)の例では、下に示すように、パディング後、パディングを含むuser_data(1)とuser_data(2)が連結されて、連結データcon_dataが得られる。
con_data = user_data(1)‖padding‖user_data(2)
= 1010‖0000‖01000001
= 1010000001000001（十進数で41025）
【００４６】
図6(b)はサーバ115のデータ抽出部117が抽出したデータを示し、プライバシ情報server_data(1)=10であり、プライバシ情報server_data(2)=64の例を示す。sever_data_max=8であり、下記の連結データcon_data2が得られる。
con_data2 = server_data(1)‖padding‖server_data(2)
= 1010‖0000‖01000000
= 1010000001000000（十進数で41024）
【００４７】
●データ秘匿化処理
図5(b)のフローチャートによりデータ秘匿化処理を説明する。データ秘匿化処理は、データ秘匿部104およびデータ秘匿部119によって実行されるが、以下では、データ秘匿部104におけるデータ秘匿化処理を説明する。なお、データ秘匿部104の処理における「con_data」「con_data_?」を「con_data2」「con_data_?2」（?はワイルドカード）に置き換えればデータ秘匿部119の処理になる。
【００４８】
データ秘匿部104は、物理現象を利用した真性乱数を用いてcon_data_Yを取得する(S411)。なお、乱数値は、con_dataのビット数に収まる値とする。なお、疑似乱数を用いても構わない。図7により秘匿化データの一例を示す。図7(a)はデータ秘匿部104にcon_data=41025が入力され、con_data_Yとして100が取得された例を示す。
【００４９】
次に、データ秘匿部104は、真性乱数を用いてcon_data_Zを取得する(S412)。図7(a)は、con_data_Zとして200が取得された例を示す。
【００５０】
次に、データ秘匿部104は、下式によりcon_data_Xを計算する(S413)。図7(a)の例では、con_data_X=300が算出される。
con_data_X = con_data_Y + con_data_Z      …(7)
【００５１】
次に、データ秘匿部104は、下式によりcon_data_Cを計算する(S414)。図7(a)の例では、con_data_C=41025-300=40725が算出される。
con_data_C = con_data - con_data_X      …(8)
【００５２】
次に、データ秘匿部104は、con_data_X、con_data_Y、con_data_Z、con_data_Cを、前述したように、計算部106、108、110に送信する(S415)。
【００５３】
図7(b)はサーバ115のデータ連結部118にcon_data2=41024が入力された例を示す。そして、con_data_Y2=300とcon_data_Z2=400が取得され、con_data_X2=700が算出され、con_data_C=41024-700=40324が算出される。
【００５４】
●計算部
計算部106、108、110において、図7に示す秘匿化データから次の計算結果が得られる。
if (計算部106) {；  …式(1)の計算
con_data_X = 300；
con_data_X2 = 700；
result_data_X = 300 - 700 = -400；
}
if (計算部108) {；  …式(2)の計算
con_data_Y = 100；
con_data_C = 40725：
con_data_Y2 = 300；
con_data_C2 = 40324；
result_data_Y = 100 - 300 = -200；
result_data_C = 40725 - 40324= 401；
}
if (計算部110) {；  …式(3)の計算
con_data_Z = 200；
con_data_C = 40725：
con_data_Z2 = 400；
con_data_C2 = 40324；
result_data_Z = 200 - 400 = -200；
result_data_C = 40725 - 40324= 401；
}
【００５５】
●判定計算部
図8のフローチャートにより判定計算部112の処理を説明する。
【００５６】
計算結果復元部113は、計算部106、108、110から計算結果result_data_X、result_data_Y、result_data_Z、result_data_Cを受信する(S701)。そして、式(4)（または式(5)）の計算により計算結果を復元する(S702)。
上記の計算例によれば：
result_data = result_data_X + result_data_C = -400 + 401 = 1
【００５７】
次に、判定部114は、カウンタiの値を1に初期化し(S703)、i番目のビットマスクmask(i)を作成する(S704)。判定部114は、下式により、最大データサイズuser_data_maxに相当するデータサイズdata_sizeを計算する。
data_size = bit_length(result_data)/data_num      …(9)
ここで、bit_length()はビット長を返す関数。
【００５８】
そして、判定部114は、result_dataのMSBから(i-1)×data_sizeビット進んだ位置からdata_size分のビットを‘1’にし、それら以外が‘0’のビットマスクを作成する。例えば、result_dataが16ビット、data_num=2の場合、i=1においてmask(1)=‘1111111100000000’が作成され、i=2においてmask(2)=‘0000000011111111’が作成される。
【００５９】
次に、判定部114は、計算結果result_dataとmask(i)の論理積をとり、その結果をresult(i)に格納する(S705)。
上記の計算例によれば：
result(1) = result_data && mask(1) =‘1’&& ‘1111111100000000’=‘0’；
result(2) = result_data && mask(2) =‘1’&& ‘0000000011111111’=‘1’；
【００６０】
次に、判定部114は、カウント値iとdata_numを比較し(S706)、i＜data_numの場合はカウンタiをインクリメント(S707)して処理をステップS704に戻す。また、i=data_numになると判定結果result(i)を送信する(S708)。
【００６１】
計算部206、208、210は、式(1)から(3)に示すように、秘匿化データの間の差分を計算する。従って、計算結果復元部113が復元するデータは、秘匿化前のuser_data(i)とserver_data(i)の差分に相当し、両データが一致すれば対応するビット列はすべて‘0’になる。上記の具体例によれば、判定結果としてresult(1)=‘0’（一致）、result(2)=‘1’（不一致）が得られる。つまり、user_data(1)とserver_data(1)が一致し、user_data(2)とserver_data(2)が一致しない判定結果が得られる。
【００６２】
そして、データ数data_num分の判定結果result(i)がすべて‘0’の場合はAND検索（すべての条件を満たすと一致）になる。言い替えれば、すべての論理積の結果を判定結果とすることでAND検索を実施することができる。
【００６３】
このように、データ秘匿化前にプライバシ情報として入力されたデータを連結したデータから秘匿化データを生成することで、秘匿化データの数と秘匿計算の回数を削減することができる。
【実施例２】
【００６４】
以下、本発明にかかる実施例2の情報処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６５】
実施例1では、ユーザが入力部102を利用してプライバシ情報user_data(i)を入力する例を説明した。さらに、利便性を向上するために、ユーザによるプライバシ情報の直接入力を不要にして、ユーザが指示するデータファイル（例えば電子文書や画像データ）からプライバシ情報を抽出することができる。
【００６６】
図9のブロック図により実施例2のプライバシ情報の有無判定システムの構成例を示す。また、図10により実施例2のUIの表示例を示す。
【００６７】
ユーザは、入力部102により、サーバ115を特定するサイトアドレス、電子文書や画像データのファイル名を入力し、有無を判定したいプライバシ情報の種類に対応するチェックボックスをチェックする。入力部102は、ファイル名とプライバシ情報の種類cat_data(i)をデータ抽出部121に供給するとともに、cat_data(i)をサーバ115のデータ抽出部117に送信する。
【００６８】
データ抽出部121は、ユーザが指定するファイル名のデータからcat_data(i)に対応するプライバシ情報user_data(i)を抽出し、データ数data_numをカウントする。電子文書からプライバシ情報を抽出する場合、データ抽出部117と同様の方法を利用すればよい。また、画像データの場合は、例えば、顔写真の場合は顔認識アルゴリズムが使用する特徴量、GPS情報、Exif情報などをプライバシ情報として抽出する。
【００６９】
データ抽出部121は、user_data(i)、data_numをデータ連結部103に供給し、data_numをサーバ115のデータ抽出部117、判定計算部112の判定部114に送信する。
【実施例３】
【００７０】
以下、本発明にかかる実施例3の情報処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００７１】
実施例1では、データ連結前にパディングを行って、最大のデータサイズuser_data_maxに他のデータのサイズを合わせた。そのため、user_data_maxが大きく、user_data_maxよりデータサイズが小さいデータが多いと、連結データのデータサイズが大きくなる。例えば下記の七つのデータを連結すると、合計104ビットのデータから224ビットの連結データ（うち120ビットがパディング）が生成される。
user_data(i)：A1(32), A2(16), A3(32), A4(8), A5(8), A6(4), A7(4)
con_data = A1‖A2‖p(16)‖A3‖A4‖p(24)‖A5‖p(24)‖A6‖p(28)‖A7‖p(28)
ここで、pはpadding、
( )内はビット長。
【００７２】
実施例3では、判定計算部112の判定部114に送信する情報として、第一のデータ数情報data_numに加えて、データ群user_data(i)に含まれるビット長ごとのデータ数を表す第二のデータ数情報bit_length_numを送信する。そして、判定部114がbit_length_numに応じてビットマスクmask(i)を作成することでパディングを不要にする。
【００７３】
図11のフローチャートにより実施例3のデータ連結処理を説明する。
【００７４】
データ連結部103は、データ群user_data(i)のデータ数をビット長ごとにカウントする(S301)。なお、ビット長は、例えばコンピュータで汎用的に使用される2のべき乗の単位にする。上記の例では、ビット長が32、16、8、4ビットの四種類のデータがあり、ビット長ごとにデータ数をカウントする。その結果、32ビットのデータ数が2、16ビットのデータ数が1、8ビットのデータ数が2、4ビットのデータ数が2のカウント値が得られる。
【００７５】
次に、データ連結部103は、ビット長ことのデータ数を表すbit_length_numを生成する(S302)。bit_length_numは、各ビット長のデータ数を表すビット列によって構成され、各ビット列は例えば2ビットである。上記の例では、32ビットのデータ数が2、16ビットのデータ数が1、8ビットのデータ数が2、4ビットのデータ数が2であるから、bit_length_numは下記のようになる。
ビット長：        32      16       8       4
bit_length_num =‘10’‖‘01’‖‘10’‖‘10’
=‘10011010’
【００７６】
上記は32ビット長から4ビット長のデータが最大三個存在する場合のbit_length_numのフォーマット（8ビット）を示す。しかし、プライバシ情報にはさらに32ビット長以上の情報も存在する。例えば1024ビット長から4ビット長のデータが最大七個存在する場合のbit_length_numのフォーマット（27ビット）は下記のようになる。
ビット長：        1024   …     64       32       16       8        4
bit_length_num =‘xxx’‖…‖‘xxx’‖‘xxx’‖‘xxx’‖‘xxx’‖‘xxx’
=‘xxx…xxxxxxxxxxxxxxx’
ここで、xは‘0’または‘1’。
【００７７】
つまり、bit_length_numのフォーマットは、プライバシ情報の有無判定システムが扱うプライバシ情報によって決まるものである。
【００７８】
次に、データ連結部103は、user_data(i)をビット長順にソートする(S303)。上記の例では、A2(16)＜A3(32)であるから、A1、A2、A3、A4、A5、A6、A7の並び順が、ソート後、A1、A3、A2、A4、A5、A6、A7の並び順になる。
【００７９】
次に、データ連結部103は、user_data(i)を連結したcon_dataを生成する(S304)。このように、パディングを行わないので、上記の例では、合計104ビットのデータから合計112ビットの連結データとbit_length_numが生成され、パディングする場合に比べてデータサイズを抑えることができる。
【００８０】
実施例3のデータ連結部118のデータ連結処理は、実施例3のデータ連結部103のデータ連結処理と同様であり、その詳細説明を省略する。また、判定部114の処理は、bit_length_numに基づきビットマスクmask(i)を生成する点で、実施例1の処理と異なる。
【００８１】
bit_length_numから最大ビット長のデータ数を知ることができる。上記の例では、最大ビット長が32、そのデータ数が2である。con_dataはビット長順にソートされているから、判定部114は、まず、result_dataのMSBから32ビットの範囲が‘1’、それ以外が‘0’のmask(1)を作成する。続いて、result_dataの33ビット目から64ビット目の範囲が‘1’、それ以外が‘0’のmask(2)を作成する。
【００８２】
次に、判定部114は、32ビット長のデータに続いて16ビット長のデータが一つあるから、result_dataの65ビット目から80ビット目の範囲が‘1’、それ以外が‘0’のmask(3)を作成し、以降同様に、ビットマスクを作成する。
【００８３】
なお、user_data(i)のソートは、ビット長が大きい順ではなく、ビット長が小さい順でもよい。その場合、bit_length_numのフォーマットもビット長が小さい順にして、判定部114のビットマスクの作成もビット長が小さい順になるようにすることが好ましい。
【００８４】
図12のブロック図により実施例3のプライバシ情報の有無判定システムの構成例を示す。図1に示す実施例1の構成と異なるのは、データ連結部103から判定部114に第二のデータ数情報bit_length_numが送信される点である。
【００８５】
また、実施例3において、第一のデータ数情報data_numは、図8に示すステップS706の判定に用いられるが、bit_length_numから各ビット長のデータ数を抽出し、抽出したデータ数を合計すればdata_numが得られる。従って、端末装置101から判定部114に送信するデータはbit_length_numだけでもよい。図12においては、この点を示すためにdata_numの流れを破線で示す。
【００８６】
なお、実施例2と実施例3を組み合わせることもできる。つまり、データ連結部103は、データ抽出部121からデータ群user_data(i)を入力し、第二のデータ数情報bit_length_numおよびパディングなしのcon_dataを生成すればよい。
【００８７】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
2014216865.tif 000003
【図２】
2014216865.tif 000004
【図３】
2014216865.tif 000005
【図４】
2014216865.tif 000006
【図５】
2014216865.tif 000007
【図６】
2014216865.tif 000008
【図７】
2014216865.tif 000009
【図８】
2014216865.tif 000010
【図９】
2014216865.tif 000011
【図１０】
2014216865.tif 000012
【図１１】
2014216865.tif 000013
【図１２】
2014216865.tif 000014