(57)【特許請求の範囲】
【請求項１】
ノードからの仮名発行要求を受けて当該ノードに複数の仮名からなる仮名セットを発行し、統計処理サーバから仮名の通知を受けると、通知を受けた仮名が仮名セットに含まれるか否かを確認し、仮名セットのすべての仮名が通知済みの場合に仮名が確認済みである旨を前記統計処理サーバに通知する仮名サーバと、
前記仮名サーバの発行した仮名を送信元とするデータを蓄積し、蓄積した仮名を前記仮名サーバに通知し、前記確認済みである旨の通知を受けると、蓄積したデータのうちの確認済みの仮名を送信元とするデータを用いて統計処理を行う統計処理サーバと、
を備える情報流通システム。
【請求項２】
前記統計処理サーバは、前記ノードのもつ元データを復元する演算処理を決定し、当該演算処理によって復元可能なデータを要求するクエリを生成し、蓄積したデータに当該演算処理を施すことで前記ノードのもつ元データを復元することを特徴とする請求項１に記載の情報流通システム。
【請求項３】
前記仮名サーバは、仮名セットのすべての仮名が通知済みとなっていない仮名を通知することで、前記確認済みである旨を前記統計処理サーバに通知することを特徴とする請求項１又は２に記載の情報流通システム。
【請求項４】
前記仮名サーバは、仮名発行要求のあったノードの数が予め定められた数に達するまで仮名セットを発行せず、仮名発行要求のあったノードの数が予め定められた数に達すると仮名セットを発行することを特徴とする請求項１から３のいずれかに記載の情報流通システム。
【請求項５】
仮名サーバが、ノードからの仮名発行要求を受けて当該ノードに複数の仮名からなる仮名セットを発行する仮名発行手順と、
統計処理サーバが、仮名を送信元とするデータを取得すると、仮名及びデータの組を蓄積し、蓄積した仮名を仮名サーバに通知し、仮名サーバから当該仮名が確認済みである旨の通知を受けると、蓄積したデータのうちの確認済みの仮名を送信元とするデータを用いて統計処理を行う統計処理手順と、
を順に有する情報流通方法。
【請求項６】
前記仮名発行手順において、統計処理サーバは、前記ノードのもつ元データを復元する演算処理を決定し、当該演算処理によって復元可能なデータを要求するクエリを生成し、
前記統計処理手順において、統計処理サーバは、蓄積したデータに前記演算処理を施すことで前記ノードのもつ元データを復元することを特徴とする請求項５に記載の情報流通方法。
【請求項７】
前記統計処理手順において、仮名サーバは、仮名セットのすべての仮名が通知済みとなっていない仮名を通知することで、前記確認済みである旨を統計処理サーバに通知することを特徴とする請求項５又は６に記載の情報流通方法。
【請求項８】
前記仮名発行手順において、仮名サーバは、仮名発行要求のあったノードの数が予め定められた数に達するまで仮名セットを発行せず、仮名発行要求のあったノードの数が予め定められた数に達すると仮名セットを発行する
ことを特徴とする請求項５から７のいずれかに記載の情報流通方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、個々のプライバシ情報を含むデータを、プライバシ情報を秘匿したまま効率よく統計処理を行うための手法およびサーバ内での処理に関する。
【背景技術】
【０００２】
平均・分散・相関等の統計処理を行うためには個々人（または、個々人の所有する携帯端末など。以下ノードと呼ぶ）のデータを統計分析器（統計処理サーバ）に一度集めてから処理する必要があるため、プライバシを含むデータを提供するには然るべき信頼のおける調査機関などに対してでなければ抵抗感が大きく、また調査を行う側としても毎回データを安全に運用するために様々な配慮が必要であった。
【０００３】
そのためプライバシを含んだデータの統計処理を行うためにノードのプライバシ情報を秘匿した状態でデータのやりとりを行う手法が考えられている。
【０００４】
従来技術では統計処理サーバを３台に分割することでデータを分散して保存し、プライバシを秘匿することで解決を図っている（例えば、非特許文献１及び２参照。）。この手法は軽量なアルゴリズムでデータ自体を秘匿したまま加算や定数倍、乗算といった基本演算を可能としている。
【０００５】
この手法では統計処理サーバの結託を考えない限りデータの復元が不可能であることは保障されているものの、誰が送信したデータなのかを匿名化することに関しては考えられていない。このことから、統計処理サーバやデータを分析する主体がノードに対していくつかの攻撃を行うことが可能となってしまっている。
【０００６】
たとえば、統計処理サーバがノードに回答対象の条件を含むクエリを送信することを考えたとき、クエリへの回答の有無によって回答者がそのクエリの条件に含まれている／いないということを結託することなく統計処理サーバは知ることができてしまう。また、データ分析主体がクエリの条件を攻撃対象の回答者一人だけしか該当しないような条件まで狭めたクエリにより統計情報を収集することで攻撃対象の回答者のデータは見せかけの統計処理を経てそのまま出力されてしまう。
【０００７】
このような問題を考えたとき、回答者の情報は秘匿されるべきであると言える。アドレスをほぼ完全に秘匿し、匿名でデータを送信するための通信手法はｐ２ｐを用いたＴｏｒ等の技術により可能とされている（例えば、非特許文献３参照。）。しかしながら匿名化を行い、送信者が完全に特定できない状態まで匿名化されてしまった場合、データの送信者、すなわちクエリの回答者に対価を支払うことが難しくなり、回答者側がデータを提供するモチベーションを得ることが難しい。結果として調査自体が不成立になりかねない。
【０００８】
また、データを分割して保存することを考えた時、完全にデータが匿名である場合にはもう一つ別の問題が発生する。すなわち分割されたデータの一部が欠損している場合において、そのまま統計処理を行った場合に統計データが正しくないものが出力されてしまう可能性がある。統計処理サーバ間のデータ数の差からデータが欠損していることが判明したとしても、匿名でそれぞれのデータが紐づいていないため取り除くべきデータがわからずすべてのデータが利用不可能となってしまう。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】千田浩司，五十嵐大，濱田浩気，高橋克巳：エラー検出可能な軽量３パーティ秘匿関数計算の提案と実装評価，情報処理学会論文誌，Ｖｏｌ．５２，Ｎｏ．９，ｐｐ２６７４−２６８５（２０１１）
【非特許文献２】千田浩司，五十嵐大，高橋克巳：効率的な３パーティ秘匿関数計算の提案とその運用モデルの考察、ＤＰＳ−１４２−１、ｐｐ１−７、２０１０．
【非特許文献３】ｈｔｔｐｓ：／／ｗｗｗ．ｔｏｒｐｒｏｊｅｃｔ．ｏｒｇ／
【発明の概要】
【発明が解決しようとする課題】
【００１０】
そこで、本発明は、プライバシ情報を含むデータを複数に分散しながら匿名化した状態で流通させることが可能な情報流通システム及び情報流通方法の提供を目的とする。
【課題を解決するための手段】
【００１１】
前述の目的を達成するために、本願発明の情報流通システム及び情報流通方法は、データ所有者は、データを分割した上で、それぞれのデータ（分割データ）を異なる仮名に基づき回収サーバに回答し、仮名サーバは、各データ所有者の仮名セットを記憶し、統計処理サーバからの問い合わせに対し、仮名セットが揃っているか否かを回答し、統計処理サーバは、受信した分割データの仮名を仮名サーバに通知し、仮名セットが揃っている場合に統計処理を行うことを特徴とする。
【００１２】
具体的には、本願発明の情報流通システムは、ノードからの仮名発行要求を受けて当該ノードに複数の仮名からなる仮名セットを発行し、統計処理サーバから仮名の通知を受けると、通知を受けた仮名が仮名セットに含まれるか否かを確認し、仮名セットのすべての仮名が通知済みの場合に仮名が確認済みである旨を前記統計処理サーバに通知する仮名サーバと、前記仮名サーバの発行した仮名を送信元とするデータを蓄積し、蓄積した仮名を前記仮名サーバに通知し、前記確認済みである旨の通知を受けると、蓄積したデータのうちの確認済みの仮名を送信元とするデータを用いて統計処理を行う統計処理サーバと、を備える。
【００１３】
本願発明の情報流通システムでは、前記統計処理サーバは、前記ノードのもつ元データを復元する演算処理を決定し、当該演算処理によって復元可能なデータを要求するクエリを生成し、蓄積したデータに当該演算処理を施すことで前記ノードのもつ元データを復元してもよい。
【００１４】
本願発明の情報流通システムでは、前記仮名サーバは、仮名セットのすべての仮名が通知済みとなっていない仮名を通知することで、前記確認済みである旨を前記統計処理サーバに通知してもよい。
【００１５】
本願発明の情報流通システムでは、前記仮名サーバは、仮名発行要求のあったノードの数が予め定められた数に達するまで仮名セットを発行せず、仮名発行要求のあったノードの数が予め定められた数に達すると仮名セットを発行してもよい。
【００１６】
具体的には、本願発明の情報流通方法は、仮名サーバが、ノードからの仮名発行要求を受けて当該ノードに複数の仮名からなる仮名セットを発行する仮名発行手順と、統計処理サーバが、仮名を送信元とするデータを取得すると、仮名及びデータの組を蓄積し、蓄積した仮名を仮名サーバに通知し、仮名サーバから当該仮名が確認済みである旨の通知を受けると、蓄積したデータのうちの確認済みの仮名を送信元とするデータを用いて統計処理を行う統計処理手順と、を順に有する。
【００１７】
本願発明の情報流通方法では、前記仮名発行手順において、統計処理サーバは、前記ノードのもつ元データを復元する演算処理を決定し、当該演算処理によって復元可能なデータを要求するクエリを生成し、前記統計処理手順において、統計処理サーバは、蓄積したデータに前記演算処理を施すことで前記ノードのもつ元データを復元してもよい。
【００１８】
本願発明の情報流通方法では、前記統計処理手順において、仮名サーバは、仮名セットのすべての仮名が通知済みとなっていない仮名を通知することで、前記確認済みである旨を統計処理サーバに通知してもよい。
【００１９】
本願発明の情報流通方法では、前記仮名発行手順において、仮名サーバは、仮名発行要求のあったノードの数が予め定められた数に達するまで仮名セットを発行せず、仮名発行要求のあったノードの数が予め定められた数に達すると仮名セットを発行してもよい。
【００２０】
なお、上記各発明は、可能な限り組み合わせることができる。
【発明の効果】
【００２１】
本発明によれば、仮名サーバが１つのノードに対して複数の仮名を発行し、統計処理サーバが仮名を用いて送信されたデータを統計処理するため、ノードから元データとは異なるデータを送信しておき、統計処理によってノードの元データを復元させることができる。このため、プライバシ情報を含むデータを複数に分散しながら匿名化した状態で流通させることができる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態に係るシステムの機能ブロック図の一例を示す。
【図２】本実施形態に係る情報流通システムのシーケンス図を示す。
【図３】統計処理サーバが複数台の場合のシーケンス図を示す。
【図４】実施形態１におけるクエリ生成から仮名セットの発行までの説明図である。
【図５】実施形態１におけるデータの分割から統計処理までの説明図である。
【図６】実施形態２におけるクエリ生成から仮名セットの発行までの説明図である。
【図７】実施形態２におけるデータの分割から統計処理までの説明図である。
【発明を実施するための形態】
【００２３】
添付の図面を参照して本発明の実施形態を説明する。以下に説明する実施形態は本発明の実施の例であり、本発明は、以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【００２４】
（実施形態１）
本実施形態に係る情報流通システム及び情報流通方法は、複数に分散したデータを数値、送信者ともに復元不可能な状態で保存するために送信者の匿名化を行うサーバ（仮名サーバ）と統計処理サーバを分割し、さらに分割したデータそれぞれに異なる仮名を割り当てる。サーバを仮名発行と統計処理の役割によって分割することで処理を行う機関を分割することも可能となり、双方が供託しなければデータが復元されないような状況とすることでプライバシ情報の秘匿度合を高める。
【００２５】
また、本実施形態に係る情報流通システム及び情報流通方法は、統計処理サーバ単体による攻撃を防ぐために、仮名サーバは回答者数の管理も同時に行う機能を持つ。具体的には統計的に十分と考えられる回答数が予想される状態になるまで各ノードに回答を許可しない、すなわち仮名の発行を行わない機能である。
【００２６】
そして、分割したデータの欠損による正しくない統計処理を防ぐために、本実施形態に係る情報流通システム及び情報流通方法は、統計処理サーバに集められた仮名セットの照会も仮名サーバは機能として有する。
【００２７】
本実施形態に係る情報流通システムの機能ブロック図を図１に示す。本実施形態に係る情報流通システムは、個々のプライバシ情報を含んだデータを持つ複数のノード１０、クエリ配布サーバ４０、仮名サーバ３０、統計処理サーバ２０からなる。ノード１０は、クエリ処理部１１と、データ分割部１２と、データ格納部１３を備える。統計処理サーバ２０は、クエリ生成部２１と、回答回収・処理部２２を備える。仮名サーバ３０は、仮名発行部３１と、仮名生成・管理部３２と、仮名確認部３３を備える。クエリ配布サーバ４０は、クエリ格納部４１を備える。
【００２８】
図２に、本実施形態に係る情報流通方法のシーケンス図を示す。本実施形態に係る情報流通方法は、仮名発行手順と、クエリ処理手順と、統計処理手順と、を順に有する。
仮名発行手順では、仮名サーバ３０が、ノード１０からの仮名発行要求を受けて、ノード１０に複数の仮名からなる仮名セットを発行する。具体的には、ステップＳ２０１〜ステップＳ２０６を行う。
クエリ処理手順では、ノード１０がクエリ処理を行う。具体的には、ステップＳ２０７〜ステップＳ２０８を行う。
統計処理手順では、統計処理サーバ２０が、仮名を送信元とするデータを取得すると、仮名及びデータの組を蓄積し、蓄積した仮名を仮名サーバ３０に通知し、確認済みである旨の通知を受けると、蓄積したデータのうちの確認済みの仮名を送信元とするデータを用いて統計処理を行う。具体的には、ステップＳ２０９〜ステップＳ２１３を行う。
【００２９】
最初に、ステップＳ２０１では、統計処理サーバ２０のクエリ生成部２１は、要求された統計データを求めるためのクエリを生成する。統計処理サーバ２０は、ノードのもつ元データを復元する演算処理を決定し、当該演算処理によって復元可能なデータを要求するクエリを生成する。演算処理は、例えば総和である。
【００３０】
生成されたクエリは、ノード１０と統計処理サーバ２０の直接のやり取りを防ぐため、ノード１０に直接配布されず、各ノード１０から取得可能な状態でクエリ配布サーバ４０のクエリ格納部４１に設置される。これにより、各ノード１０にクエリが配布される（Ｓ２０２）。
クエリ生成部２１は、クエリをクエリ配布サーバ４０に設置した旨を仮名サーバ３０へ通知する（Ｓ２０４）。このときから、仮名発行部３１は、当該クエリについて、仮名の発行申請のあったノード数の計数を開始する。
【００３１】
各ノード１０のクエリ処理部１１は、定期的にクエリ配布サーバ４０に対して問い合わせを行い、新着のクエリがある場合にはクエリ配布要求を行い、新着のクエリを得る（Ｓ２０３）。クエリの条件などから回答したいと判断した場合、ノード１０は、仮名サーバ３０へ仮名の発行申請を行い（Ｓ２０５）、発行処理が行われるまで待機する。
【００３２】
仮名サーバ３０の仮名発行部３１は、仮名発行要求に対して、同一のクエリＩＤへの発行要求が一定数Ｎ以上（例えば１０００個）発生するまで仮名の発行を待機する。これにより統計の標本集団数を仮名サーバ３０が第三者機関として保証することができ、そして先に述べた回答者一人しか該当しないような悪意あるクエリへの回答をノード１０にさせないための仕組みとなる。仮名の発行申請のあったノード数が予め定められたＮ個に達すると、仮名サーバ３０の仮名発行部３１は、各ノード１０に対してｎ個の仮名からなる仮名セットを生成し発行する（Ｓ２０６）。仮名サーバ３０の仮名生成・管理部３２は、仮名セットとノード１０の組を記憶する。
【００３３】
発行された仮名セットを構成する仮名の数ｎに応じて、各ノード１０のデータ分割部１２は自身のデータの値Ｄ１を任意に分割する（Ｓ２０７）。ただし統計処理サーバ２０に要求されたデータの統計情報に応じて分割の方法は異なるものとする。統計処理サーバ２０での統計処理が平均であれば、データの値Ｄ１を分割した値ｄ１１〜ｄｎ１の総和がデータの値Ｄ１に等しくなるように分割すればどのような分割方法でもよい。例えば、仮名セットの仮名数ｎが３の場合、乱数ｒ１，ｒ２を生成して元の値ｘをｘ１＝ｒ１，ｘ２＝−ｒ２，ｘ３＝ｘ−ｒ１＋ｒ２などとする分割方法が考えられる。クエリ処理部１１は、それぞれの仮名を用いて統計処理サーバ２０にデータｘ１、ｘ２及びｘ３を分割した値ｄ１１〜ｄｎ１として送信する（Ｓ２０８）。これにより、クエリ処理部１１は、クエリに対する回答を送信する。
【００３４】
なお、ノード１０のクエリ処理部１１は、分割したデータを同時に送るのではなく、乱数によって決定される時間（例えば、１０分から１０時間の一様分布）、待機した後に、統計処理サーバ２０に送付してもよい。これらの方法により、分割データ間のマッチングを取ることを一層困難とできる。
【００３５】
また、統計処理サーバ２０での統計処理が分散や相関である場合を考えたとき、値の分割値、値の二乗の分割値、複数の要素の値の積の分割値等複数の統計処理に用いる値をそれぞれ分割し、同一パケットにまとめて送信することも可能である。なお、仮名を用いた場合でもデータの送信プロトコル自体は通常のパケット送信に従えば、ノード１０は自身のデータの送信の失敗をＡＣＫのレスポンスが返ってこないことから知ることができる。
【００３６】
結果を受け取った統計処理サーバ２０の回答回収・処理部２２は、すぐに結果を処理せず、送信してきた仮名の情報を仮名サーバ３０の仮名確認部３３へ送信し、仮名の問合せを行う（Ｓ２０９）。これにより各ノード１０の分割されたデータがすべて揃う前に統計処理に加えてしまい統計データが正しくない結果になることを防ぐ。
【００３７】
仮名情報を統計処理サーバ２０から送信された仮名サーバ３０の仮名確認部３３は、統計処理サーバ２０から受信した仮名が確認済みである旨を仮名生成・管理部３２に登録する。そして、あるノード１０に対して発行した仮名セットのｎ個の仮名をすべて受信したか否かを確認し（Ｓ２１０）、仮名セットが揃うまで統計処理サーバ２０への応答を待機する。あるノード１０の仮名セットが揃ったことが確認されたのちに、仮名サーバ３０の仮名確認部３３は、認証された仮名への肯定応答を統計処理サーバ２０へ返す（Ｓ２１１）。
【００３８】
ここで、肯定応答は仮名セットを統計処理サーバ２０側が一意に特定できないような応答であればよく、複数のノード１０に相当する十分量の仮名を統計処理サーバ２０が受け取ったのちに、仮名セットを構成するすべての仮名を統計処理サーバ２０に通知してもよいし、仮名の通知に代えて、統計量に加えるべきでない、不揃いの仮名を仮名サーバ３０が応答する形式でもよい。また、ノード１０からの送信者に対し対価が存在する場合には、あらかじめ統計処理サーバ２０が仮名サーバ３０に対価を預け、仮名サーバ３０がこの応答待機間に仮名セットが揃ったノード１０から順に支払いを済ませる方法が考えられる。
【００３９】
統計処理サーバ２０の回答回収・処理部２２は、仮名サーバ３０から肯定応答を得た順に統計処理を行う（Ｓ２１３）。肯定応答によって、仮名セットに含まれる仮名の全てが揃っているデータを用いて、統計処理を行うことができる。例えば、回答回収・処理部２２は、仮名ｆ３５、ｆｎ６、ｆ１１、ｆ５２で送信されたデータｄ３５、ｄｎ６、ｄ１１、ｄ５２について肯定応答を受けると、データｄ３５、ｄｎ６、ｄ１１、ｄ５２を用いて統計処理を行い、暫定的な統計データＳを算出する。次に、回答回収・処理部２２は、仮名ｆ５１、ｆ１７、ｆ７７、ｆ２１で送信されたデータｄ５１、ｄ１７、ｄ７７、ｄ２１について肯定応答を受けると、暫定的な統計データＳとデータｄ５１、ｄ１７、ｄ７７、ｄ２１を用いて統計処理を行い、更なる暫定的な統計データＳを算出する。これを繰り返す。ここで、統計処理は、クエリ発生時にクエリ生成部２１が決定した統計処理である。
【００４０】
最終的にクエリ生成時に決定したＮ個のノード１０に確認済みの仮名セット数が達すると、仮名確認部３３は標本数Ｎが到達した旨の通知を統計処理サーバ２０に行う（Ｓ２１２）。回答回収・処理部２２は、回答の数が達した時点で標本数到達通知を仮名サーバ３０から受信し、当該通知により統計処理を終え、統計データを得る。そして、回答回収・処理部２２は、統計データを統計データの要求元に送信する（Ｓ２１３）。
【００４１】
なお、シーケンス図では簡単のため、統計処理において平均を求める手法について説明しているが、分散や、相関を計算するための共分散についても同様に計算することができる。
【００４２】
また、これらの内容におけるノード１０を無線端末と考えたとき、各スマートフォン上への利用形態も考えられる。ノード１０は、端末が異なるワイヤレスネットワークに属した際に付与される異なるＩＰアドレスを用いて、統計処理サーバ２０に回答を返却することもできる。これにより、通信に用いられたＩＰアドレスを利用してマッチングすることを回避できる。
【００４３】
また、統計処理サーバ２０が１台の場合について記述したが、複数の統計処理サーバ２０に分割することも可能である。その場合のシーケンス図を図３に示す。
複数台の統計処理サーバ２０のうちの１台が統計処理主体（親サーバ）となり、統計処理主体（親サーバ）がクエリ生成、クエリ配布サーバとの通信や仮名サーバへのクエリ配布通知、最終的な統計処理を行う。そこで、クエリ生成ステップＳ２０１の前に、統計処理主体（親サーバ）を決定する（Ｓ３０１）。例えば、第１の統計処理サーバ２０及び第２の統計処理サーバ２０のうちの第１の統計処理サーバ２０を統計処理主体に決定する。なお、統計処理主体（親サーバ）の決定の仕方は任意である。
【００４４】
図３に示すシーケンスでは、ステップＳ２０８において、ノード１０はどの統計処理サーバ２０に対しても分割したデータを送ってもよい。各統計処理サーバ２０は、自身で集計した総和や総積を統計処理主体に預ける。例えば、第１の統計処理サーバ２０が統計処理主体の場合、ステップＳ２１１において、第１の統計処理サーバ２０がデータｄ３５、ｄｎ６、ｄ１１、ｄ５２を用いて暫定的な統計データＳ１を算出し、第２の統計処理サーバ２０がデータｄ２１、ｄ１７、ｄ７７を用いて暫定的な統計データＳ２を算出する。
そして、第１の統計処理サーバ２０は、標本数到達通知を仮名サーバ３０から受信すると（Ｓ２１２）、終了通知及び統計値の要求を第２の統計処理サーバ２０に送信する（Ｓ３０２）。すると、第２の統計処理サーバ２０は、第２の統計処理サーバ２０の算出した暫定的な統計データＳ２を第１の統計処理サーバ２０に送信する（Ｓ３０３）。
そして、ステップＳ２１３を実行する。このとき、第１の統計処理サーバ２０が、暫定的な統計データＳ１及びＳ２を用いて統計処理を行うことで最終的な統計データを得る。
【００４５】
実際に複数のノードから分割されたデータを受け取って統計処理が正しく行われることを示した実施例が図４及び図５になる。今、身長１６０ｃｍというデータがノードＡのデータ格納部１３に格納され、身長１８８ｃｍというデータがノードＢのデータ格納部１３に格納されており、二人の平均身長およびその分散を二人の身長を知ることなく求めることを考える。この場合、統計データ要求は平均及び分散である。
【００４６】
図４に示されたＳ２０１〜Ｓ２０６までの処理は図２に示すシーケンス図に詳細に記述された通りである。
ステップＳ２０２において配布されるクエリには、例えば、クエリの送信者名がＭである旨と、クエリＩＤがＭ−１である旨と、条件がノード全員である旨と、クエリの内容が身長ｈの平均ａｖｅｈ及び分散ｖａｒｈである旨と、必要データが身長ｈ及び身長ｈの２乗である旨と、統計処理で行う計算が総和である旨が記述される。
ステップＳ２０５において、ノードＡが仮名発行要求を行う際には、ノードＡは、送信者名がＡである旨と、クエリＩＤがＭ−１である旨を、仮名サーバ３０へ送信する。ノードＢが仮名発行要求を行う際には、ノードＢは、送信者名がＢである旨と、クエリＩＤがＭ−１である旨を、仮名サーバ３０へ送信する。ステップＳ２０５における仮名セット生成時に、仮名サーバ３０側で仮名セットの発行を待機している状態になっている。
ステップＳ２０６において仮名サーバ３０は、ノードＡについては仮名Ｗ及びＹからなる仮名セットを発行し、ノードＢについては仮名Ｘ及びＺからなる仮名セットを発行する。
【００４７】
図５に示されたＳ２０７〜Ｓ２１３までの処理は図２に示すシーケンス図に詳細に記述された通りである。
ステップＳ２０７の回答分割において、仮名が２つであること、クエリで求められている必要データが平均ａｖｅｈと分散ｖａｒｈであり、元データの復元方法が総和であることから、ノードＡ及びＢは身長ｈ及び身長ｈの２乗をそれぞれ総和で復元されるように２つの任意の値に分割する。例えば、身長１６０ｃｍの場合、身長ｈを７７と８３に分割し、身長の２乗である２５６００を１５６００と１００００に分割する。身長１８８ｃｍの場合、身長ｈを９０と９８に分割し、身長の２乗である３５３４４を−１５３３１と５０６７５に分割する。
【００４８】
続いてステップＳ２０８の回答送信において、ノードＡから送信者をＷとする回答と送信者をＹとする回答を統計処理サーバ２０へ送信し、ノードＢから送信者をＸとする回答と送信者をＺとする回答を統計処理サーバ２０へ送信する。このとき、クエリＩＤがＭ−１の回答として、送信者Ｘから、身長ｈが９０であり、身長ｈの２乗が１５３３１である旨を送信し、送信者Ｚから、身長ｈが９８であり、身長ｈの２乗が５０６７５である旨を送信し、送信者Ｗから、身長ｈが７７であり、身長ｈの２乗が１５６００である旨を送信し、送信者Ｙから、身長ｈが８３であり、身長ｈの２乗が１００００である旨を送信する。ここで、それぞれの仮名を用いて分割されたデータを送信しているが、ここでは身長ｈと身長ｈの２乗の分割値を同じパケットで送信している。このように、データの種類が異なれば同一のパケットに含めることが可能である。
【００４９】
ステップＳ２１１の確認済み仮名通知では、今回の総標本数すなわちクエリを配布するノード数Ｎが２であることが仮名発行時点で仮名サーバ３０からはわかっているので、統計処理サーバ２０への仮名Ｘ、Ｚ、Ｗ、Ｙについての通知（Ｓ２１１）と同時に終了通知と総標本数（Ｓ２１２）を統計処理サーバ２０に対して送信する。
最後にステップＳ２１３の統計処理で、平均ａｖｅｈと分散ｖａｒｈを求める。例えば、平均ａｖｅｈは、（７７＋９０＋８３＋９８）／２＝１７４を算出することで、身長１６０ｃｍと１８８ｃｍの平均ａｖｅｈ１７４ｃｍを求めることができる。分散ｖａｒｈは、（１５６００−１５３３１＋１００００＋５０６７５）／２−１７４２＝１９６を算出することで、身長１６０ｃｍと１８８ｃｍの分散ｖａｒｈ１９６を求めることができる。このように、統計処理サーバ２０からはノードＡ、Ｂの真の値はわからないが、正しく統計処理が行われることが確認された。
【００５０】
データの処理には複数のサーバ間でやりとりを行うが、本実施形態においては仮名サーバ３０と統計処理サーバ２０がすべて結託した場合でなければプライバシを含む元のデータが復元されることはなく、これにより仮名サーバ３０が信頼のおける機関であればデータを分析する主体は容易に自身でクエリを発行することができるようになる。また回答の有無だけで「クエリ条件に該当する／しない」というプライバシ情報が漏れる場合があるが、回答者を仮名サーバ３０によって秘匿することにより回答しなかったことでプライバシ情報が特定されることがなくなる。具体的な例を挙げると、質問クエリを３つ用意し、条件を「２０代」、「男性」、「身長１７０ｃｍ以上」と分けたときに、結果が分散されていたとしてもノード１０のアドレスは毎回同一なのでクエリ自体によってプライバシを含む情報量が少しずつ増えており、結託を行っていなくても個人が特定されることが従来技術ではあり得る。しかし本実施形態においては、毎回異なる仮名でデータを送信することにより、一回の質問で特定されるような内容でなければ、すなわち回答者が一人になる攻撃と同様の状況にならなければプライバシ情報は洩れることがなく、そのような状況もクエリの発行数管理によって対処可能となっている。
【００５１】
さらにその回答者が一人になる攻撃が行われた場合でも、仮名サーバ３０のクエリに対する仮名の発行待機を行うことで攻撃を防ぐことが可能となる。
【００５２】
仮名サーバ３０においてクエリの発行数および回答数を管理し、キュー出しを行うことで十分な回答者数を保証するとともに、分散されたデータのロスに対しても耐性を保つことができる。たとえば、同一のノードに対して発行を行った仮名セット（ａ，ｂ，ｃ）のうち統計処理サーバ２０から問い合わせが（ａ，ｃ）のみ来た場合であれば、ｂが得られていないのでこのノードの仮名セットに対しては計算処理を行わないような指示、ないしはｂが得られるまでの待機処理を行うことができるようになる。
【００５３】
仮名サーバを用いて分散したデータ間のつながりと所有者の情報を秘匿することで、プライバシ情報を秘匿することが可能になり、分析主体や統計処理サーバに対して信頼がない場合でも統計分析が可能となる。また、統計情報の正確性、信頼性という面においても頑健なシステムを構成することができる。
【００５４】
（実施形態２）
実施形態１で説明した秘匿統計処理技術では、平均・分散などに代表される統計値を計算することが可能であった。一方で、統計調査では集積されたデータ全体の傾向から得られる知見も存在している。度数分布やそれをグラフ化したヒストグラムは平均や分散のような値からは判別できない特徴を発見したり、最頻値や中央値を求めたりする場合に有効である。また居住している都道府県などのように、平均化することができない・意味を持たないデータに対してもヒストグラムを用いることでその統計的傾向を把握することが可能となる。本実施形態では、このようなデータを匿名化して集積する。
【００５５】
システムの機能ブロック図を図１に示す。実施形態１における機能ブロックと構成に違いはなく、個々のプライバシ情報を含んだデータを持つ複数のノード１０、クエリ配布サーバ４０、仮名サーバ３０、統計処理サーバ２０からなる。実施形態１と同様に、分割したデータそれぞれに異なる仮名を割り当てる。本実施形態では、度数分布を可能とするために、データは２値の行列式に変換される。統計処理サーバ２０は得られた度数分布を元のデータの組に復元し、最頻値や中央値を求める。
【００５６】
本実施形態では、ステップＳ２０７において、発行された仮名セットの数に応じて各ノードは自身のデータの値を任意に分割する。ただし統計情報に応じて分割の方法は異なるものとする。度数分布を集計するための分割においては、例えば性別であれば［男，女］を行列として［１，０］ないしは［０，１］の変換を行い、それぞれの要素に乱数を用いて分割する。たとえば［１，０］の行列を、加算によって復元可能な形で、［−２，１］と［３，−１］に分割する。この行列と要素の対応付けはクエリ上で表記することで整合性を取る。
【００５７】
またステップＳ２０８において、それぞれの仮名を用いてノードは統計処理サーバ２０にデータを送信する。なお、ノード１０は分割したデータを同時に送るのではなく、乱数によって決定される時間（例えば、１０分から１０時間の一様分布）、待機した後に、統計処理サーバ２０に送付してもよい。これらの方法により、分割データ間のマッチングを取ることを一層困難とできる。なお、仮名を用いた場合でもデータの送信プロトコル自体は通常のパケット送信に従えば、ノード１０は自身のデータの送信の失敗をＡＣＫのレスポンスが返ってこないことから知ることができる。
【００５８】
結果を受け取った統計処理サーバ２０はすぐに結果を処理せず、送信してきた仮名の情報を仮名サーバ３０へ送信する（ステップＳ２０９）。これにより各ノード１０の分割されたデータがすべて揃う前に統計処理に加えてしまい統計データが正しくない結果になることを防ぐ。
【００５９】
仮名情報を統計処理サーバ２０から送信された仮名サーバ３０はあるノード１０に対して発行した仮名の組が揃うまで統計処理サーバ２０への応答を待機する。あるノード１０のセットが揃ったことが確認されたのちに仮名サーバ３０は認証された仮名への肯定応答を統計処理サーバ２０へ返す。なお、これは仮名セットを統計処理サーバ２０側が一意に特定できないような応答であればよく、十分量の標本セットを統計処理サーバ２０が受け取ったのちに統計量に加えるべきでない、不揃いの仮名を仮名サーバ３０が応答する形式でもよい。また、送信者に対し対価が存在する場合には、あらかじめ統計処理サーバ２０が仮名サーバ３０に対価を預け、仮名サーバ３０がこの応答待機間に仮名セットが揃ったノード１０から順に支払いを済ませる方法が考えられる。
【００６０】
統計処理サーバ２０は仮名サーバ３０から肯定応答を得た順に統計処理を行う。最終的にクエリ生成時に決定した個数に達した時点で処理を終え、統計データを得る。
【００６１】
図６、図７を用いて、実際に複数のノードから分割されたデータを受け取ってヒストグラム処理が正しく行われることを説明する。今、男性ノードＡと女性ノードＢの二人の性別の分布を二人の性別を知ることなく求めることを考える。図６に示されたＳ２０１〜Ｓ２０６までの処理は実施形態１と同様である。
【００６２】
図７のステップＳ２０７に示す回答分割において仮名が２つであること、クエリで求められているのが性別の度数分布行列であることからノードＡ、Ｂは自身の性別をそれぞれ総和で復元されるように２つの任意の値に分割している。ステップＳ２１１に示す確認済み仮名通知では今回の総標本数が２であることが仮名発行時点で仮名サーバ３０からはわかっているので同時に終了通知と総標本数を統計処理サーバ２０に対して送信している。最後にステップＳ２１３に示す統計処理で行列の各要素の総和が求められており、統計処理サーバからはノードＡ、Ｂの性別はわからないが正しくその度数分布が求められていることが確認された。
【００６３】
最頻値は、変数が連続値の場合数値をビンの幅によっていくつかのグループに分類することで求めることができる。中央値も同様にしてどのグループに含まれているかでおおよその値を求められる。離散値であればそれぞれの数値を行列の１要素とすることで正確な最頻値、中央値が求まる。
【００６４】
また、例えば「各都道府県の男女の平均身長」といったクエリもこれまでの変数の平均とヒストグラムを組み合わせることで実現できる。各都道府県の行列と男女の組を４７×２の行列として表現し、ノードが該当する行列要素の部分に身長を入力し、他の要素を０にすることで各個人の情報が表される。このようにヒストグラムの処理が可能になることで先の出願よりもより自由度の高い統計分析ができるようになる。
【００６５】
本実施形態によれば、複数の主体が協調することでプライバシを含む個々のデータが復元不可能かつ、そのデータの所有者を匿名化した状態で平均や分散だけでなく、度数分布の計測が可能となる。
【産業上の利用可能性】
【００６６】
本発明は情報通信産業に適用することができる。
【符号の説明】
【００６７】
１０：ノード
１１：クエリ処理部
１２：データ分割部
１３：データ格納部
２０：統計処理サーバ
２１：クエリ生成部
２２：回答回収・処理部
３０：仮名サーバ
３１：仮名発行部
３２：仮名生成・管理部
３３：仮名確認部
４０：クエリ配布サーバ
４１：クエリ格納部
【図１】
0005835745.tif 000002
【図２】
0005835745.tif 000003
【図３】
0005835745.tif 000004
【図４】
0005835745.tif 000005
【図５】
0005835745.tif 000006
【図６】
0005835745.tif 000007
【図７】
0005835745.tif 000008