(57)【特許請求の範囲】
【請求項１】
データ撹乱装置と、データ集計装置と、データ復元装置とを有する秘匿集計システムであって、
前記データ撹乱装置は、
複数のデータ値を含んだ元データを記憶する元データ記憶部と、
前記元データに含まれるデータ値の個数と同じ個数の乱数値を複数の乱数値として算出し、算出した前記複数の乱数値を含んだ乱数データを生成する乱数データ生成部と、
前記乱数データに含まれる前記複数の乱数値を用いて前記元データに含まれる前記複数のデータ値を更新することによって前記元データに含まれるデータ値の個数と同じ個数のデータ値を複数の撹乱値として算出し、算出した前記複数の撹乱値を含んだ撹乱データを生成する撹乱データ生成部とを備え、
前記データ集計装置は、
前記データ撹乱装置によって生成された前記撹乱データを記憶する撹乱データ記憶部と、
前記撹乱データに含まれる前記複数の撹乱値を集計して撹乱集計値を算出し、算出した前記撹乱集計値を含んだ撹乱集計データを生成する撹乱集計データ生成部とを備え、
前記データ復元装置は、
前記データ集計装置によって生成された前記撹乱集計データを記憶する撹乱集計データ記憶部と、
前記データ撹乱装置によって生成される前記乱数データを記憶する乱数データ記憶部と、
前記乱数データに含まれる前記複数の乱数値を集計して乱数集計値を算出し、算出した前記乱数集計値を用いて前記撹乱集計データに含まれる前記撹乱集計値を更新することにより、前記元データに含まれる前記複数のデータ値を集計した値を示すデータ集計値を算出する集計値復元部とを備え、
前記元データ記憶部は、データ値の属性を示す第一の属性値と第二の属性値との組み合わせ毎のデータ値を含んだデータを前記元データとして記憶し、
前記乱数データ生成部は、
前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を生成し、前記第一の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロになり、前記第二の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロにならないように、前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を調整し、
前記第二の属性値毎の乱数値を生成し、前記第二の属性値毎の乱数値の合計がゼロになるように前記第二の属性値毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とする秘匿集計システム。
【請求項２】
前記乱数データ生成部は、
複数の第二の属性値を分割する複数の属性値グループの属性値グループ毎の乱数値を生成し、属性値グループ毎の乱数値の合計がゼロになるように属性値グループ毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算した後、前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、属性値グループ毎の調整後の乱数値のうち当該第二の属性値が含まれる属性値グループの調整後の乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とする請求項１に記載の秘匿集計システム。
【請求項３】
データ撹乱装置に備わる元データ記憶部が、複数のデータ値を含んだ元データを記憶し、
前記データ撹乱装置に備わる乱数データ生成部が、前記元データに含まれるデータ値の個数と同じ個数の乱数値を複数の乱数値として算出し、算出した前記複数の乱数値を含んだ乱数データを生成し、
前記データ撹乱装置に備わる撹乱データ生成部が、前記乱数データに含まれる前記複数の乱数値を用いて前記元データに含まれる前記複数のデータ値を更新することによって前記元データに含まれるデータ値の個数と同じ個数のデータ値を複数の撹乱値として算出し、算出した前記複数の撹乱値を含んだ撹乱データを生成し、
データ集計装置に備わる撹乱データ記憶部が、前記データ撹乱装置によって生成された前記撹乱データを記憶し、
前記データ集計装置に備わる撹乱集計データ生成部が、前記撹乱データに含まれる前記複数の撹乱値を集計して撹乱集計値を算出し、算出した前記撹乱集計値を含んだ撹乱集計データを生成し、
データ復元装置に備わる撹乱集計データ記憶部が、前記データ集計装置によって生成された前記撹乱集計データを記憶し、
前記データ復元装置に備わる乱数データ記憶部が、前記データ撹乱装置によって生成される前記乱数データを記憶し、
前記データ復元装置に備わる集計値復元部が、前記乱数データに含まれる前記複数の乱数値を集計して乱数集計値を算出し、算出した前記乱数集計値を用いて前記撹乱集計データに含まれる前記撹乱集計値を更新することにより、前記元データに含まれる前記複数のデータ値を合計した値を示すデータ集計値を算出する秘匿集計方法であって、
前記元データは、データ値の属性を示す第一の属性値と第二の属性値との組み合わせ毎のデータ値を含んだデータであり、
前記乱数データ生成部は、
前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を生成し、前記第一の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロになり、前記第二の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロにならないように、前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を調整し、
前記第二の属性値毎の乱数値を生成し、前記第二の属性値毎の乱数値の合計がゼロになるように前記第二の属性値毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とする秘匿集計方法。
【請求項４】
前記乱数データ生成部は、
複数の第二の属性値を分割する複数の属性値グループの属性値グループ毎の乱数値を生成し、属性値グループ毎の乱数値の合計がゼロになるように属性値グループ毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算した後、前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、属性値グループ毎の調整後の乱数値のうち当該第二の属性値が含まれる属性値グループの調整後の乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とする請求項３に記載の秘匿集計方法。
【請求項５】
請求項３または請求項４記載の秘匿集計方法をコンピュータに実行させるための秘匿集計プログラム。
【請求項６】
複数のデータ値を含んだ元データを記憶する元データ記憶部と、
前記元データに含まれるデータ値の個数と同じ個数の乱数値を複数の乱数値として算出し、算出した前記複数の乱数値を含んだ乱数データを生成する乱数データ生成部と、
前記乱数データに含まれる前記複数の乱数値を用いて前記元データに含まれる前記複数のデータ値を更新することによって前記元データに含まれるデータ値の個数と同じ個数のデータ値を複数の撹乱値として算出し、算出した前記複数の撹乱値を含んだ撹乱データを生成する撹乱データ生成部とを備え、
前記元データ記憶部は、データ値の属性を示す第一の属性値と第二の属性値との組み合わせ毎のデータ値を含んだデータを前記元データとして記憶し、
前記乱数データ生成部は、
前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を生成し、前記第一の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロになり、前記第二の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロにならないように、前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を調整し、
前記第二の属性値毎の乱数値を生成し、前記第二の属性値毎の乱数値の合計がゼロになるように前記第二の属性値毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とするデータ撹乱装置。
【請求項７】
前記乱数データ生成部は、
複数の第二の属性値を分割する複数の属性値グループの属性値グループ毎の乱数値を生成し、属性値グループ毎の乱数値の合計がゼロになるように属性値グループ毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算した後、前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、属性値グループ毎の調整後の乱数値のうち当該第二の属性値が含まれる属性値グループの調整後の乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とする請求項６に記載のデータ撹乱装置。
【請求項８】
乱数データ生成部が、複数のデータ値を含んだ元データに含まれるデータ値の個数と同じ個数の乱数値を複数の乱数値として算出し、算出した前記複数の乱数値を含んだ乱数データを生成し、
撹乱データ生成部が、前記乱数データに含まれる前記複数の乱数値を用いて前記元データに含まれる前記複数のデータ値を更新することによって前記元データに含まれるデータ値の個数と同じ個数のデータ値を複数の撹乱値として算出し、算出した前記複数の撹乱値を含んだ撹乱データを生成するデータ撹乱方法であって、
前記元データは、データ値の属性を示す第一の属性値と第二の属性値との組み合わせ毎のデータ値を含んだデータであり、
前記乱数データ生成部は、
前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を生成し、前記第一の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロになり、前記第二の属性値が同じである複数の組み合わせのそれぞれの乱数値の合計がゼロにならないように、前記第一の属性値と前記第二の属性値との組み合わせ毎の乱数値を調整し、
前記第二の属性値毎の乱数値を生成し、前記第二の属性値毎の乱数値の合計がゼロになるように前記第二の属性値毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とするデータ撹乱方法。
【請求項９】
前記乱数データ生成部は、
複数の第二の属性値を分割する複数の属性値グループの属性値グループ毎の乱数値を生成し、属性値グループ毎の乱数値の合計がゼロになるように属性値グループ毎の乱数値を調整し、
前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、前記第二の属性値毎の調整後の乱数値のうち前記第二の属性値が一致する乱数値を加算または減算した後、前記第一の属性値と前記第二の属性値との組み合わせ毎の調整後の乱数値に、属性値グループ毎の調整後の乱数値のうち当該第二の属性値が含まれる属性値グループの調整後の乱数値を加算または減算することによって、前記複数の乱数値を算出する
ことを特徴とする請求項８に記載のデータ撹乱方法。
【請求項１０】
請求項８または請求項９記載のデータ撹乱方法をコンピュータに実行させるためのデータ撹乱プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、データ値を秘匿して集計を行う秘匿集計システム、秘匿集計方法、秘匿集計プログラム、データ撹乱装置、データ撹乱方法、データ撹乱プログラム、データ復元装置、データ復元方法およびデータ復元プログラムに関するものである。
【背景技術】
【０００２】
クラウドコンピューティングの進展により、クラウドサーバ上で大量のデータを扱うことが容易になり、これに伴って、企業のデータをクラウドサーバ上に保管するケースが増えている。また、クラウドサーバ上に保管した顧客データやログデータなどを、クラウド事業者側で分析するサービスも提案されつつある。
一方で、このようなデータは企業機密や個人情報などのプライバシ情報を含むことが多く、これらをそのままの形でクラウド事業者に委託することはセキュリティ上の不安がある。
従来の暗号技術を用いてデータを暗号化してクラウドサーバに保管することは可能であるが、データを暗号化してしまうとクラウド事業者側でのデータ分析は難しくなる。
そこで、近年、プライバシ情報を保護してデータ分析を行うための「プライバシ保護データマイニング」が盛んに研究されている。
【０００３】
非特許文献１では、複数のクロス集計表の和をクラウドサーバ上で集計するシステムにおいて、集計結果の個々の要素を秘匿したまま、クラウド事業者が集計処理を実行するための方式が開示されている。また、各行・各列の和がゼロであるような行列「ゼロ和行列」を利用することで、クラウド事業者に各行・各列の合計値だけは知らせる方式についても開示されている。
この他にも、プライバシ保護データマイニングに関する方式が特許文献１〜３などで開示されている。
【０００４】
但し、非特許文献１にて開示されている技術はクラウド事業者に各行・各列の合計値を知らせるものであり、特定の合計値（例えば各行の合計値）のみ知らせて他の合計値をクラウド事業者に対して秘匿する方法については開示も示唆もされていない。
また、非特許文献１の方式は秘密情報のサイズが大きいため、集計表のサイズが大きい場合や秘密情報の更新が必要な場合に非効率である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２３４６０５号公報
【特許文献２】特開２０１１−１４５８６９号公報
【特許文献３】特開２０１１−２４８０６６号公報
【非特許文献】
【０００６】
【非特許文献１】牛田芽生恵，伊藤孝一，片山佳則，小櫻文彦，津田宏，“ゲートウェイによるクラウド間のデータ秘匿集計技術，”２０１１年暗号と情報セキュリティシンポジウム（ＳＣＩＳ２０１１），２０１１．
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、例えば、データ値を集計するデータ集計装置に対して正しい集計値を秘匿できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の秘匿集計システムは、データ撹乱装置と、データ集計装置と、データ復元装置とを有する。
前記データ撹乱装置は、
複数のデータ値を含んだ元データを記憶する元データ記憶部と、
前記元データに含まれるデータ値の個数と同じ個数の乱数値を複数の乱数値として算出し、算出した前記複数の乱数値を含んだ乱数データを生成する乱数データ生成部と、
前記乱数データに含まれる前記複数の乱数値を用いて前記元データに含まれる前記複数のデータ値を更新することによって前記元データに含まれるデータ値の個数と同じ個数のデータ値を複数の撹乱値として算出し、算出した前記複数の撹乱値を含んだ撹乱データを生成する撹乱データ生成部とを備える。
前記データ集計装置は、
前記データ撹乱装置によって生成された前記撹乱データを記憶する撹乱データ記憶部と、
前記撹乱データに含まれる前記複数の撹乱値を集計して撹乱集計値を算出し、算出した前記撹乱集計値を含んだ撹乱集計データを生成する撹乱集計データ生成部とを備える。
前記データ復元装置は、
前記データ集計装置によって生成された前記撹乱集計データを記憶する撹乱集計データ記憶部と、
前記データ撹乱装置によって生成される前記乱数データを記憶する乱数データ記憶部と、
前記乱数データに含まれる前記複数の乱数値を集計して乱数集計値を算出し、算出した前記乱数集計値を用いて前記撹乱集計データに含まれる前記撹乱集計値を更新することにより、前記元データに含まれる前記複数のデータ値を集計した値を示すデータ集計値を算出する集計値復元部とを備える。
【発明の効果】
【０００９】
本発明によれば、例えば、データ値を集計するデータ集計装置に対して正しい集計値を秘匿することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１における秘匿集計システム１００の構成図。
【図２】実施の形態１における端末装置４０１の機能構成図。
【図３】実施の形態１における情報管理装置２０１の機能構成図。
【図４】実施の形態１におけるデータベース管理装置３０１の機能構成図。
【図５】実施の形態１における秘匿集計システム１００の前処理を示すフローチャート。
【図６】実施の形態１におけるログデータ４９１の一例を示す図。
【図７】実施の形態１における集約後のログデータ４９１の一例を示す図。
【図８】実施の形態１におけるログファイル４９１ｂの一例を示す図。
【図９】実施の形態１における元データ２９１の一例を示す図。
【図１０】実施の形態１における乱数データ２９２の一例を示す図。
【図１１】実施の形態１における撹乱データ２９３の一例を示す図。
【図１２】実施の形態１における秘匿集計システム１００のデータ値秘匿集計処理を示すフローチャート。
【図１３】実施の形態１における通知条件データ３９９の一例を示す図。
【図１４】実施の形態１における集計作業データ３９１ａの一例を示す図。
【図１５】実施の形態１における集計データ３９１の一例を示す図。
【図１６】実施の形態１における秘匿集計システム１００の集計値秘匿集計処理を示すフローチャート。
【図１７】実施の形態１における集計値要求データ２９５の一例を示す図。
【図１８】実施の形態１における集計作業データ３９１ａの一例を示す図。
【図１９】実施の形態１における集計データ３９１の一例を示す図。
【図２０】実施の形態１における乱数集計データ２９２ａの一例を示す図。
【図２１】実施の形態１における復元集計データ２９４の一例を示す図。
【図２２】実施の形態１における秘匿集計システム１００の元データ復元処理を示すフローチャート。
【図２３】実施の形態１における撹乱値要求データ２９６の一例を示す図。
【図２４】実施の形態１における乱数作業データ２９２ｂ（一様乱数）の一例を示す図。
【図２５】実施の形態１における乱数データ２９２（ゼロ和行）の一例を示す図。
【図２６】実施の形態１における乱数追加データ２９２ｃの一例を示す図。
【図２７】実施の形態１におけるゼロ和行列の乱数データ２９２の一例を示す図。
【図２８】実施の形態１におけるゼロ和行の乱数データ２９２の一例を示す図。
【図２９】実施の形態１における時間帯毎の元データ２９１の一例を示す図。
【図３０】実施の形態１における時間帯毎の乱数データ２９２の一例を示す図。
【図３１】実施の形態１における時間帯毎の撹乱データ２９３の一例を示す図。
【図３２】実施の形態１における情報管理装置２０１、データベース管理装置３０１および端末装置４０１のハードウェア資源の一例を示す図。
【図３３】実施の形態２における秘匿集計システム１００の構成図。
【図３４】実施の形態２における端末装置４０１の機能構成図。
【図３５】実施の形態２における情報管理装置２０１の機能構成図。
【図３６】実施の形態２における秘匿集計システム１００の前処理を示すフローチャート。
【図３７】実施の形態２におけるログデータ４９１の一例を示す図。
【図３８】実施の形態２における元データ２９１の一例を示す図。
【図３９】実施の形態２における乱数データ２９２の一例を示す図。
【図４０】実施の形態２における撹乱データ２９３の一例を示す図。
【図４１】実施の形態３における乱数追加データ２９２ｄの一例を示す図。
【図４２】実施の形態３における乱数データ２９２の一例を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
データ値を集計するデータ集計装置に対して正しい集計値を秘匿する秘匿集計システムについて説明する。
【００１２】
図１は、実施の形態１における秘匿集計システム１００の構成図である。
実施の形態１における秘匿集計システム１００の構成について、図１に基づいて説明する。
【００１３】
秘匿集計システム１００は、情報管理装置２０１と、データベース管理装置３０１、複数の端末装置４０１Ａ−Ｃとを有する。
情報管理装置２０１、データベース管理装置３０１および複数の端末装置４０１Ａ−Ｃはネットワーク１０１を介して通信接続する。
【００１４】
複数の端末装置４０１Ａ−Ｃは、集計する元データの元になるログデータ（個別データ）を生成し、生成したログデータを情報管理装置２０１に送信する装置である。
例えば、端末装置４０１ＡはユーザＡが使用する端末である。端末装置４０１Ａは、ユーザＡによる端末の使用内容（例えば、日時と印刷枚数）を示すログデータを生成し、生成したログデータを情報管理装置２０１に送信する。同様に、端末装置４０１Ｂ、Ｃは、ユーザＢ、Ｃによる端末の使用内容を示すログデータを生成し、生成したログデータを情報管理装置２０１に送信する。
複数の端末装置４０１Ａ−Ｃの処理の詳細については後述する。
【００１５】
情報管理装置２０１（データ撹乱装置、データ集計装置の一例）は、複数の端末装置４０１Ａ−Ｃから送信される複数のログデータを受信し、受信した複数のログデータをまとめて元データを生成する。元データは集計する対象のデータである。例えば、元データは、各ユーザの印刷枚数（データ値の一例）を時間帯別にまとめたデータである。
情報管理装置２０１は、元データに含まれる複数のデータ値を乱数を用いて撹乱して撹乱データを生成し、生成した撹乱データをデータベース管理装置３０１に送信する。
情報管理装置２０１は、データベース管理装置３０１から送信される撹乱データを集計した集計データを受信する。データベース管理装置３０１は撹乱データに含まれる撹乱されたデータ値を集計するため、集計データは正しくない集計値（撹乱集計値）を含む。
情報管理装置２０１は、データ値の撹乱に用いた乱数を用いて撹乱集計値から正しい集計値を算出する。
情報管理装置２０１の処理の詳細については後述する。
【００１６】
データベース管理装置３０１（データ集計装置の一例）は、情報管理装置２０１から送信される撹乱データを受信し、受信した撹乱データに含まれるデータ値を集計する。
データベース管理装置３０１は、集計により得られる１つまたは複数の集計値を含んだ集計データを生成し、生成した集計データを情報管理装置２０１に送信する。但し、撹乱データに含まれるデータ値は乱数によって撹乱されているため、少なくともいずれかの集計値は正しい値ではない。例えば、データベース管理装置３０１は、集計値としてユーザ別の印刷枚数の合計値と時間帯別の印刷枚数の合計値とを算出する。この場合、ユーザ別の印刷枚数の合計値と時間帯別の印刷枚数の合計値とのうち少なくともいずれかの合計値は正しい値ではない。
データベース管理装置３０１の処理の詳細については後述する。
【００１７】
図２は、実施の形態１における端末装置４０１の機能構成図である。
実施の形態１における端末装置４０１の機能構成について、図２に基づいて説明する。
図１に示した複数の端末装置４０１Ａ−Ｃは、それぞれに図２に示す機能構成を備える。
【００１８】
端末装置４０１は、端末記憶部４１１と、情報生成部４２１と、端末通信部４３１とを備える。
【００１９】
端末記憶部４１１は、端末装置４０１で使用するデータを記憶する。
例えば、端末記憶部４１１は、情報生成部４２１によって生成されるログデータ４９１を記憶する。
【００２０】
情報生成部４２１は、ユーザによる端末の使用内容（例えば、日時と印刷枚数）を示すログデータ４９１を生成する。
情報生成部４２１の処理の詳細については後述する。
【００２１】
端末通信部４３１は、端末装置４０１の通信処理を行う。
例えば、端末通信部４３１は、情報生成部４２１によって生成されたログデータ４９１を情報管理装置２０１に送信する。
【００２２】
図３は、実施の形態１における情報管理装置２０１の機能構成図である。
実施の形態１における情報管理装置２０１の機能構成について、図３に基づいて説明する。
【００２３】
情報管理装置２０１（データ撹乱装置、データ復元装置の一例）は、情報管理記憶部２１１と、情報撹乱部２２１と、統計量復元部２２２と、情報復元部２２３と、情報管理通信部２３１と、乱数生成部２３２とを備える。
【００２４】
情報管理記憶部２１１（元データ記憶部、撹乱集計データ記憶部、乱数データ記憶部の一例）は、情報管理装置２０１で使用するデータを記憶する。
【００２５】
例えば、情報管理記憶部２１１は、以下のようなデータを記憶する。
情報管理記憶部２１１は、情報管理通信部２３１によって受信される複数のログデータ４９１や集計データ３９１を記憶する。
情報管理記憶部２１１は、情報撹乱部２２１によって生成される元データ２９１や撹乱データ２９３を記憶する。
情報管理記憶部２１１は、乱数生成部２３２によって生成される乱数データ２９２や乱数データ２９２を生成するための乱数シード２９９（シード値ともいう）を記憶する。乱数シード２９９は情報管理記憶部２１１に予め記憶する。
情報管理記憶部２１１は、統計量復元部２２２によって生成される復元集計データ２９４を記憶する。
【００２６】
情報管理通信部２３１（撹乱装置通信部、復元装置通信部の一例）は、情報管理装置２０１の通信処理を行う。
【００２７】
例えば、情報管理通信部２３１は、以下のような通信処理を行う。
情報管理通信部２３１は、複数の端末装置４０１Ａ−Ｃから送信される複数のログデータ４９１を受信する。
情報管理通信部２３１は、情報撹乱部２２１によって生成される撹乱データ２９３をデータベース管理装置３０１に送信する。
情報管理通信部２３１は、データベース管理装置３０１から送信される集計データ３９１や撹乱データ２９３を受信する。
【００２８】
乱数生成部２３２（乱数データ生成部の一例）は、乱数シード２９９を用いて乱数データ２９２を生成する。
乱数生成部２３２の処理の詳細については後述する。
【００２９】
情報撹乱部２２１（撹乱データ生成部、元データ生成部の一例）は、情報管理通信部２３１によって受信される複数のログデータ４９１をまとめて元データ２９１を生成する。
情報撹乱部２２１は、乱数生成部２３２によって生成される乱数データ２９２を用いて元データ２９１を撹乱して撹乱データ２９３を生成する。
情報撹乱部２２１の処理の詳細については後述する。
【００３０】
統計量復元部２２２（集計値復元部の一例）は、情報管理通信部２３１によって受信される集計データ３９１（撹乱集計データ）を乱数データ２９２を用いて復元して復元集計データ２９４を生成する。
統計量復元部２２２の処理の詳細については後述する。
【００３１】
情報復元部２２３（元データ復元部の一例）は、データベース管理装置３０１に撹乱データ２９３を要求し、データベース管理装置３０１から取得した撹乱データ２９３を乱数データ２９２を用いて復元して元データ２９１を生成する。
情報復元部２２３の処理の詳細については後述する。
【００３２】
図４は、実施の形態１におけるデータベース管理装置３０１の機能構成図である。
実施の形態１におけるデータベース管理装置３０１の機能構成について、図４に基づいて説明する。
【００３３】
データベース管理装置３０１（データ集計装置の一例）は、データベース記憶部３１１と、データベース処理部３２１と、データベース通知部３２２と、データベース通信部３３１とを備える。
【００３４】
データベース記憶部３１１（撹乱データ記憶部の一例）は、データベース管理装置３０１で使用するデータを記憶する。
例えば、データベース記憶部３１１は、通知条件データ３９９、データベース通信部３３１によって受信される撹乱データ２９３およびデータベース処理部３２１によって生成される集計データ３９１を記憶する。
通知条件データ３９９は、集計データ３９１を生成して情報管理装置２０１に通知する条件を設定したデータである。通知条件データ３９９は、データベース記憶部３１１に予め記憶される。
【００３５】
データベース処理部３２１（撹乱集計データ生成部の一例）は、撹乱データ２９３を集計して集計値を算出する。
データベース処理部３２１の処理の詳細については後述する。
【００３６】
データベース通知部３２２（撹乱集計データ生成部の一例）は、情報管理装置２０１に通知する集計値を通知条件データ３９９に基づいて判定し、通知する集計値を含んだ集計データ３９１を生成する。
【００３７】
データベース通信部３３１（集計装置通信部の一例）は、データベース管理装置３０１の通信処理を行う。
【００３８】
例えば、データベース通信部３３１は、以下のような通信処理を行う。
データベース通信部３３１は、情報管理装置２０１から送信される撹乱データ２９３を受信する。
データベース通信部３３１は、データベース通知部３２２によって生成される集計データ３９１を情報管理装置２０１に送信する。
【００３９】
図５は、実施の形態１における秘匿集計システム１００の前処理を示すフローチャートである。
実施の形態１における秘匿集計システム１００の前処理について、図５に基づいて説明する。
【００４０】
Ｓ１０１において、各端末装置４０１Ａ−Ｃの情報生成部４２１はログデータ４９１を生成し、端末通信部４３１はログデータ４９１を情報管理装置２０１に送信する。
【００４１】
図６は、実施の形態１におけるログデータ４９１の一例を示す図である。
実施の形態１におけるログデータ４９１について、図６に基づいて説明する。
【００４２】
ログデータ４９１は、集計対象のデータ値を示すデータ項目「印刷枚数」と、集計範囲を選択するためのデータ項目「年月日」「時刻」「ユーザ名」とを含む。
以下、集計対象のデータ値を示すデータ項目「印刷枚数」を「集計項目」といい、集計範囲を選択するためのデータ項目「年月日」「時刻」「ユーザ名」を「集計範囲項目」という。
【００４３】
図６のログデータ４９１に含まれるログレコード４９１ａは、２０１２年２月１日の８時３０分にユーザ名「ｓａｔｏ」で識別されるユーザが印刷を１枚したことを示している。
【００４４】
各端末装置４０１Ａ−Ｃの端末通信部４３１は、ログレコード４９１ａが生成される度に、１つのログレコード４９１ａを含んだログデータ４９１を情報管理装置２０１に送信する。
但し、各端末装置４０１Ａ−Ｃの端末通信部４３１は、所定のタイミング（例えば、定期的）で１つまたは複数のログレコード４９１ａを含んだログデータ４９１を情報管理装置２０１に送信してもよい。
また、端末通信部４３１は、ログレコード４９１ａを秘匿するために、集計範囲項目「年月日」「時刻」「ユーザ名」に基づいて集計項目「印刷枚数」を集約したデータ（図７参照）をログデータ４９１として情報管理装置２０１に送信してもよい。
【００４５】
図７は、実施の形態１における集約後のログデータ４９１の一例を示す図である。
例えば、情報生成部４２１は時間帯毎に集計項目「印刷枚数」のデータ値を集約（合計）して図７に示すようなログデータ４９１を生成し、端末通信部４３１は図７に示すような集約後のログデータ４９１を情報管理装置２０１に送信してもよい。
【００４６】
図５に戻り、秘匿集計システム１００の前処理の説明を続ける。
Ｓ１０１の後、Ｓ１０２に進む。
【００４７】
Ｓ１０２において、情報管理装置２０１の情報管理通信部２３１は、Ｓ１０１で各端末装置４０１Ａ−Ｃから送信されたログデータ４９１を受信し、受信したログデータ４９１を情報管理記憶部２１１に記憶する。
例えば、情報管理通信部２３１は、複数のログデータ４９１をログファイル４９１ｂとして記憶する（図８参照）。
図８は、実施の形態１におけるログファイル４９１ｂの一例を示す図である。
Ｓ１０２の後、Ｓ１１０に進む。
【００４８】
Ｓ１１０において、情報管理装置２０１の情報撹乱部２２１は、情報管理記憶部２１１から複数のログデータ４９１（図６のログファイル４９１ｂ）を取得し、取得した複数のログデータ４９１を集約して元データ２９１を生成する。
【００４９】
図９は、実施の形態１における元データ２９１の一例を示す図である。
実施の形態１における元データ２９１について、図９に基づいて説明する。
【００５０】
元データ２９１は、ログデータ４９１（図６参照）に含まれる集計範囲「年月日」「ユーザ名」「時間帯」の組み合わせ毎に集計項目（印刷枚数）のデータ値を集約（合計）したデータである。言い換えると、元データ２９１は、データ値の属性の種類「年月日」「ユーザ名」「時間帯」の組み合わせ毎に属性値（年月日、ユーザ名、時間帯）を示すデータである。但し、データ値の属性の種類は「年月日」「ユーザ名」「時間帯」に限らない。
図９の元データ２９１は、ユーザ名「ｓａｔｏ」で識別されるユーザによる０時から４時までの印刷枚数と４時から８時までの印刷枚数が０枚であることを示している。また、８時から１２時までの印刷枚数が７枚であり、１２時から１６時までの印刷枚数が１０枚であり、１６時から２０時までの印刷枚数が１枚であり、２０時から２４時までの印刷枚数が１２枚であることを示している。
【００５１】
図５に戻り、秘匿集計システム１００の前処理の説明を続ける。
Ｓ１１０の後、Ｓ１２０に進む。
【００５２】
Ｓ１２０において、情報管理装置２０１の乱数生成部２３２は、Ｓ１１０で生成された元データ２９１に含まれるデータ値毎に乱数値を算出し、データ値毎に算出した乱数値を設定して乱数データ２９２を生成する。例えば、乱数生成部２３２は、図１０に示すような乱数データ２９２を生成する。
【００５３】
図１０は、実施の形態１における乱数データ２９２の一例を示す図である。
図１０の乱数データ２９２は、ユーザ名と時間帯との組み合わせ毎に乱数値を示している。各乱数値は、ユーザ名と時間帯との組み合わせが同じであるデータ値に対応付けられる。例えば、ユーザ名「ｓａｔｏ」と時間帯「０〜４時」との組み合わせの乱数値「３１」は、図９に示した元データ２９１のユーザ名「ｓａｔｏ」と時間帯「０〜４時」との組み合わせのデータ値「０」に対応付けられている。
ユーザ名別に各時間帯の乱数値を合計した値は「０」である。つまり、乱数データ２９２の各行は乱数値の合計がゼロになるゼロ和行である。例えば、ユーザ名「ｓａｔｏ」の各時間帯の乱数値の合計は「０（＝３１＋（−３７）＋３＋（−３８）＋６＋３５）」である。
一方、時間帯別に各ユーザ名の乱数値を合計した値は「０」でない。つまり、乱数データ２９２の各列は乱数値の合計がゼロになるゼロ和列ではない。例えば、時間帯「０〜４時」の各ユーザ名の乱数値の合計は「５８（＝３１＋２９＋（−２２）＋１６＋４）」である。
【００５４】
乱数データ２９２の生成方法については別途説明する。
【００５５】
図５に戻り、秘匿集計システム１００の前処理の説明を続ける。
Ｓ１２０の後、Ｓ１３０に進む。
【００５６】
Ｓ１３０において、情報管理装置２０１の情報撹乱部２２１は、Ｓ１１０で生成した元データ２９１とＳ１２０で生成された乱数データ２９２とを用いて撹乱データ２９３を生成する。
撹乱データ２９３を生成した後、情報撹乱部２２１は元データ２９１および乱数データ２９２を情報管理記憶部２１１から削除しても構わない。
【００５７】
このとき、情報撹乱部２２１は、以下のように撹乱データ２９３を生成する。
情報撹乱部２２１は、元データ２９１に含まれるデータ値毎に乱数データ２９２に含まれる乱数値のうち対応付けられた乱数値を加算した値を算出する。以下、データ値に乱数値を加算した値を「撹乱値」という。
情報撹乱部２２１は、データ値毎に算出した撹乱値を設定して撹乱データ２９３を生成する。
【００５８】
例えば、情報撹乱部２２１は、図１１に示すような撹乱データ２９３を生成する。
【００５９】
図１１は、実施の形態１における撹乱データ２９３の一例を示す図である。
図１１の撹乱データ２９３は、ユーザ名と時間帯との組み合わせ毎に撹乱値を示している。各撹乱値は、ユーザ名と時間帯との組み合わせが同じであるデータ値と乱数値とを合計した値である。
例えば、ユーザ名「ｓａｔｏ」と時間帯「０〜４時」との組み合わせの撹乱値「３１」は、ユーザ名「ｓａｔｏ」と時間帯「０〜４時」との組み合わせのデータ値「０」（図９参照）と乱数値「３１」（図１０参照）とを合計した値である。ユーザ名と時間帯とを組み合わせた別の組み合わせについても同様である。
【００６０】
撹乱データ２９３はゼロ和行の乱数データ２９２を元データ２９１に加算したものであるため、撹乱データ２９３の行毎に撹乱値を合計して得られる集計値（ユーザ別の印刷枚数）は、元データ２９１の行毎にデータ値を合計して得られる集計値に等しい。
つまり、撹乱データ２９３の行毎に撹乱値を合計して得られる集計値は正しい値である。
例えば、図１１の撹乱データ２９３のユーザ名「ｓａｔｏ」の印刷枚数「３０（＝３１＋（−３７）＋１０＋（−２８）＋７＋４７）」と、図９の元データ２９１のユーザ名「ｓａｔｏ」の印刷枚数「３０（＝０＋０＋７＋１０＋１＋１２）」は等しい。
【００６１】
但し、撹乱データ２９３はゼロ和列でない乱数データ２９２を元データ２９１に加算したものであるため、撹乱データ２９３の列毎に撹乱値を合計して得られる集計値（時間帯別の印刷枚数）は、元データ２９１の列毎にデータ値を合計して得られる集計値と異なる。
つまり、撹乱データ２９３の列毎に撹乱値を合計して得られる集計値は本当の集計値とは異なる値である。
例えば、図１１の撹乱データ２９３の時間帯「０〜４時」の印刷枚数「６３（＝３１＋２９＋（−２２）＋２１＋４）」と、図９の元データ２９１の時間帯「０〜４時」の印刷枚数「５（＝０＋０＋０＋５＋０）」は異なる。
【００６２】
図５に戻り、秘匿集計システム１００の前処理の説明を続ける。
Ｓ１３０の後、Ｓ１４０に進む。
【００６３】
Ｓ１４０において、情報管理装置２０１の情報管理通信部２３１は、Ｓ１３０で生成された撹乱データ２９３をデータベース管理装置３０１に送信する。
Ｓ１４０の後、Ｓ１４１に進む。
【００６４】
Ｓ１４１において、データベース管理装置３０１のデータベース通信部３３１は、Ｓ１４０で情報管理装置２０１から送信された撹乱データ２９３を受信し、受信した撹乱データ２９３をデータベース記憶部３１１に記憶する。
Ｓ１４１により、秘匿集計システム１００の前処理は終了する。
【００６５】
上記した秘匿集計システム１００の前処理により、行毎の合計値（集計値）が正しくて列毎の合計値が正しくない撹乱データ２９３（図１１参照）が、データベース管理装置３０１のデータベース記憶部３１１に記憶される。
【００６６】
図１２は、実施の形態１における秘匿集計システム１００のデータ値秘匿集計処理を示すフローチャートである。
実施の形態１における秘匿集計システム１００のデータ値秘匿集計処理について、図１２に基づいて説明する。
【００６７】
データ値秘匿集計処理とは、データベース管理装置３０１が元データ２９１のデータ値とは異なる値（撹乱値）を示す撹乱データ２９３を用いて正しい集計値を算出し、情報管理装置２０１（または他のコンピュータ（情報処理装置））がデータベース管理装置３０１から正しい集計値を取得する処理である。
正しい集計値とは、元データ２９１のデータ値を集計して得られる値に等しい集計値である。
【００６８】
秘匿集計システム１００は、図１２に示すデータ値秘匿集計処理を定期的に実行する。
【００６９】
Ｓ２１０において、データベース管理装置３０１のデータベース処理部３２１は、データベース記憶部３１１に予め記憶された通知条件データ３９９を参照し、算出する集計値の種類を選択する。
データベース処理部３２１は、データベース記憶部３１１から撹乱データ２９３を取得し、選択した集計値の種類について撹乱データ２９３を集計し、選択した種類の集計値を算出する。
データベース処理部３２１は、算出した集計値を設定して集計作業データ３９１ａを生成する。
例えば、データベース処理部３２１は、図１３に示すような通知条件データ３９９に基づいて集計値の種類を選択し、図１４に示すような集計作業データ３９１ａを生成する。
【００７０】
図１３は、実施の形態１における通知条件データ３９９の一例を示す図である。
図１３の通知条件データ３９９は、「通知内容」「通知時期」「通知条件」「通知先」を含んでいる。
「通知内容」は、通知する集計値の内容（種類）を示している。
「通知時期」は、集計値を算出するタイミングを示している。
「通知条件」は、集計値を通知する条件を示している。
「通知先」は、集計値を通知するために用いるアドレス（例えば、メールアドレスやＩＰアドレス）を示している。
【００７１】
例えば、データベース処理部３２１は、通知条件データ３９９の項番（１）のレコードを参照し、毎日、ユーザ別の一日あたりの印刷枚数を算出する。
【００７２】
図１４は、実施の形態１における集計作業データ３９１ａの一例を示す図である。
図１４の集計作業データ３９１ａは、「ユーザ別の一日あたりの印刷枚数」について図１１の撹乱データ２９３を集計した場合に生成される。図１４の集計作業データ３９１ａは、図１１の撹乱データ２９３にユーザ別の「集計値」の項目を設けたものである。
【００７３】
通知条件データ３９９の「通知内容」には、正しい値が得られる集計値の種類（撹乱データ２９３の行毎の集計値（ユーザ別の印刷枚数））を設定する（図１３参照）。
このため、集計作業データ３９１ａが示す集計値は正しい値である。つまり、集計作業データ３９１ａが示す集計値（図１４参照）は、元データ２９１が示すデータ値（図９参照）を合計して得られる集計値に等しい。
例えば、図１４の集計作業データ３９１ａが示すユーザ名「ｓａｔｏ」の印刷枚数の集計値「３０」と、図９の元データ２９１が示すユーザ名「ｓａｔｏ」の各時間帯の印刷枚数を合計して得られる集計値「３０（＝０＋０＋７＋１０＋１＋１２）」は等しい。
【００７４】
図１２に戻り、Ｓ２１０の説明を続ける。
Ｓ２１０の後、Ｓ２２０に進む。
【００７５】
Ｓ２２０において、データベース管理装置３０１のデータベース通知部３２２は、通知条件データ３９９に基づいて、Ｓ２１０で生成された集計作業データ３９１ａに含まれる集計値のうち通知条件を満たす集計値を判定する。
例えば、データベース通知部３２２は、通知条件データ３９９（図１３参照）の項番（１）の通知内容について生成された集計作業データ３９１ａ（図１４参照）に含まれる集計値のうち、通知条件データ３９９の項番（１）の通知条件「１００以上」を満たす集計値を判定する。この場合、通知条件「１００以上」を満たす集計値はユーザ名「ｗａｔａｎａｂｅ」の集計値「１１０」である。
通知条件を満たす集計値がある場合（ＹＥＳ）、Ｓ２３０に進む。
通知条件を満たす集計値がない場合（ＮＯ）、データ値秘匿集計処理は終了する。
【００７６】
Ｓ２３０において、データベース管理装置３０１のデータベース通知部３２２は、Ｓ２２０で判定した通知条件を満たす集計作業データ３９１ａの集計値を設定して集計データ３９１を生成する。集計データ３９１に設定した集計値は、正しい集計値を示す集計作業データ３９１ａから抽出した正しい集計値である。
例えば、データベース通知部３２２は、図１５に示すような集計データ３９１を生成する。
図１５は、実施の形態１における集計データ３９１の一例を示す図である。図１５の集計データ３９１は「通知内容」「ユーザ名」「集計値」を含んでいる。
Ｓ２３０の後、Ｓ２３１に進む。
【００７７】
Ｓ２３１において、データベース管理装置３０１のデータベース通信部３３１は、Ｓ２３０で生成された集計データ３９１を情報管理装置２０１（または他のコンピュータ（情報処理装置））に送信する。このとき、データベース通信部３３１は、通知条件データ３９９の「通知先」（図１３参照）に設定されているアドレスを送信先アドレスとして用いる。
Ｓ２３１の後、Ｓ２３２に進む。
【００７８】
Ｓ２３２において、情報管理装置２０１の情報管理通信部２３１（または他のコンピュータ）は、Ｓ２３１でデータベース管理装置３０１から送信された集計データ３９１を受信し、受信した集計データ３９１を出力装置（ディスプレイやプリンタなど）に出力する。
出力される集計値は正しい集計値である。つまり、集計データ３９１に設定された集計値は、元データ２９１が示すデータ値を集計して得られる集計値に等しい。
Ｓ２３２により、データ値秘匿集計処理は終了する。
【００７９】
図１２のデータ値秘匿集計処理では、データベース管理装置３０１が通知条件データ３９９を設けて通知条件を満たす集計値を情報管理装置２０１（または他のコンピュータ）に通知している。
但し、情報管理装置２０１（または他のコンピュータ）が集計値の種類を指定してデータベース管理装置３０１に集計値を要求してもよい。
【００８０】
図１６は、実施の形態１における秘匿集計システム１００の集計値秘匿集計処理を示すフローチャートである。
実施の形態１における秘匿集計システム１００の集計値秘匿集計処理について、図１６に基づいて説明する。
【００８１】
集計値秘匿集計処理とは、データベース管理装置３０１が元データ２９１のデータ値とは異なる値（撹乱値）を示す撹乱データ２９３を用いて正しくない集計値を算出し、情報管理装置２０１がデータベース管理装置３０１によって算出された正しくない集計値を正しい集計値に復元する処理である。
正しくない集計値とは、元データ２９１のデータ値を集計して得られる値と異なる集計値である。
【００８２】
Ｓ３０１において、情報管理装置２０１の統計量復元部２２２は、集計値の種類を設定して集計値要求データ２９５を生成する。集計値要求データ２９５に設定する集計値の種類は、情報管理記憶部２１１に予め記憶してもよいし、情報管理装置２０１に対して利用者が指定してもよい。
集計値要求データ２９５に設定する集計値の種類は、データベース管理装置３０１が正しい値を得られない集計値の種類（撹乱データ２９３の列毎の集計値（時間帯別の印刷枚数））である。但し、データベース管理装置３０１が正しい値を得られない集計値の種類を集計値要求データ２９５に設定しても構わない。
例えば、統計量復元部２２２は、図１７に示すような集計値要求データ２９５を生成する。
【００８３】
図１７は、実施の形態１における集計値要求データ２９５の一例を示す図である。
図１７の集計値要求データ２９５は、「通知内容（集計値の種類）」と「通知先（アドレス）」とを含んでいる。
【００８４】
図１６に戻り、集計値秘匿集計処理の説明を続ける。
Ｓ３０１の後、Ｓ３０２に進む。
【００８５】
Ｓ３０２において、情報管理装置２０１の情報管理通信部２３１は、Ｓ３１０で生成された集計値要求データ２９５をデータベース管理装置３０１に送信する。
Ｓ３０２の後、Ｓ３０３に進む。
【００８６】
Ｓ３０３において、データベース管理装置３０１のデータベース通信部３３１は、Ｓ３０２で情報管理装置２０１から送信された集計値要求データ２９５を受信する。
Ｓ３０３の後、Ｓ３１０に進む。
【００８７】
Ｓ３１０において、データベース管理装置３０１のデータベース処理部３２１は、データベース記憶部３１１から撹乱データ２９３を取得する。
データベース処理部３２１は、Ｓ３０３で受信された集計値要求データ２９５に設定されている集計値の種類について撹乱データ２９３を集計して集計値を算出し、算出した集計値を設定して集計作業データ３９１ａを生成する。但し、データベース処理部３２１が算出する集計値は正しい値ではない。
データベース処理部３２１は、生成した集計作業データ３９１ａに含まれる集計値を設定して集計データ３９１を生成する。
例えば、データベース処理部３２１は、図１８に示すような集計作業データ３９１ａを生成し、図１９に示すような集計データ３９１を生成する。
【００８８】
図１８は、実施の形態１における集計作業データ３９１ａの一例を示す図である。
図１９は、実施の形態１における集計データ３９１の一例を示す図である。
図１８の集計作業データ３９１ａおよび図１９の集計データ３９１は、「時間帯別の印刷枚数」について図１１の撹乱データ２９３を集計した場合に生成される。図１８の集計作業データ３９１ａは、図１１の撹乱データ２９３に時間帯別の「集計値」の項目を設けたものである。
集計作業データ３９１ａおよび集計データ３９１が示す集計値は正しい値ではない。つまり、集計作業データ３９１ａおよび集計データ３９１が示す集計値は、元データ２９１が示すデータ値（図９参照）を合計して得られる集計値と異なる。
例えば、図１８の集計作業データ３９１ａおよび図１９の集計データ３９１が示す時間帯「０〜４時」の印刷枚数の集計値「６３」と、図９の元データ２９１が示す時間帯「０〜４時」の各ユーザの印刷枚数を合計して得られる集計値「５（＝０＋０＋０＋５＋０）」は異なる。
【００８９】
図１６に戻り、集計値秘匿集計処理の説明を続ける。
Ｓ３１０の後、Ｓ３２０に進む。
【００９０】
Ｓ３２０において、データベース管理装置３０１のデータベース通信部３３１は、Ｓ３１０で生成された集計データ３９１を情報管理装置２０１に送信する。このとき、データベース通信部３３１は、Ｓ３０３で受信した集計値要求データ２９５の「通知先」（図１７参照）に設定されているアドレスを送信先アドレスとして用いる。
Ｓ３２０の後、Ｓ３２１に進む。
【００９１】
Ｓ３２１において、情報管理装置２０１の情報管理通信部２３１は、Ｓ３２０で送信された集計データ３９１を受信する。
Ｓ３２１の後、Ｓ３３０に進む。
【００９２】
Ｓ３３０において、情報管理装置２０１の乱数生成部２３２は、前処理（図５のＳ１２０）と同じ乱数データ２９２（図１０参照）を生成する。但し、前処理（図５のＳ１３０）で乱数データ２９２を削除しない場合、Ｓ３３０の処理は不要である。
乱数データ２９２の生成方法については別途説明する。
Ｓ３３０の後、Ｓ３４０に進む。
【００９３】
Ｓ３４０において、情報管理装置２０１の統計量復元部２２２は、Ｓ３０１で集計値要求データ２９５に設定した集計値の種類について、Ｓ３３０（または前処理）で生成された乱数データ２９２を集計して乱数集計データ２９２ａを生成する。
例えば、統計量復元部２２２は、図２０に示すような乱数集計データ２９２ａを生成する。
【００９４】
図２０は、実施の形態１における乱数集計データ２９２ａの一例を示す図である。
図２０の乱数集計データ２９２ａは、「時間帯別の印刷枚数」の乱数値について図１０の乱数データ２９２を集計した場合に生成される。図２０の乱数集計データ２９２ａは、図１０の乱数データ２９２に時間帯別の「集計値」の項目を設けたものである。
【００９５】
図１６に戻り、集計値秘匿集計処理の説明を続ける。
Ｓ３４０の後、Ｓ３５０に進む。
【００９６】
Ｓ３５０において、情報管理装置２０１の統計量復元部２２２は、Ｓ３２１で受信された集計データ３９１が示す集計値からＳ３４０で生成された乱数集計データ２９２ａが示す集計値を減算し、正しい集計値を示す復元集計データ２９４を生成する。
例えば、統計量復元部２２２は、図２１に示すような復元集計データ２９４を生成する。
【００９７】
図２１は、実施の形態１における復元集計データ２９４の一例を示す図である。
図２１の復元集計データ２９４は、図１９の集計データ３９１が示す集計値から図２０の乱数集計データ２９２ａが示す集計値を減算した値を示す。図２１の復元集計データ２９４が示す集計値は正しい集計値である。
例えば、図２１の復元集計データ２９４が示す時間帯「０〜４時」の集計値「５」は、図９の元データ２９１の時間帯「０〜４時」の集計値「５（＝０＋０＋０＋５＋０）」に等しい。
【００９８】
図１６に戻り、集計値秘匿集計処理の説明を続ける。
統計量復元部２２２は、生成した復元集計データ２９４（図２１参照）を出力装置に出力する。
Ｓ３５０により、集計値秘匿集計処理は終了する。
【００９９】
図１６の集計値秘匿集計処理では、情報管理装置２０１が集計値の種類を指定してデータベース管理装置３０１に集計値を要求している。
但し、データベース管理装置３０１が記憶する通知条件データ３９９（図１３参照）にデータベース管理装置３０１が正しい値を得られない集計値の種類について通知条件を設定してもよい。通知条件を満たす場合、データベース管理装置３０１は集計値を情報管理装置２０１に通知する。
【０１００】
図２２は、実施の形態１における秘匿集計システム１００の元データ復元処理を示すフローチャートである。
実施の形態１における秘匿集計システム１００の元データ復元処理について、図２２に基づいて説明する。
【０１０１】
元データ復元処理とは、情報管理装置２０１がデータベース管理装置３０１から撹乱データ２９３を取得し、取得した撹乱データ２９３から元データ２９１を復元する処理である。
前処理（図５のＳ１３０）で元データ２９１を削除しない場合、元データ復元処理は不要である。
【０１０２】
Ｓ４０１において、情報管理装置２０１の情報復元部２２３は、要求する撹乱データ２９３を指定して撹乱値要求データ２９６を生成する。
例えば、情報復元部２２３は、図２３に示すような撹乱値要求データ２９６を生成する。
【０１０３】
図２３は、実施の形態１における撹乱値要求データ２９６の一例を示す図である。
図２３の撹乱値要求データ２９６は、「通知内容（撹乱データ２９３の識別情報）」と「通知先（アドレス）」とを含んでいる。
【０１０４】
図２２に戻り、元データ復元処理の説明を続ける。
Ｓ４０１の後、Ｓ４０２に進む。
【０１０５】
Ｓ４０２において、情報管理装置２０１の情報管理通信部２３１は、Ｓ４０１で生成された撹乱値要求データ２９６をデータベース管理装置３０１に送信する。
Ｓ４０２の後、Ｓ４０３に進む。
【０１０６】
Ｓ４０３において、データベース管理装置３０１のデータベース通信部３３１は、Ｓ４０２で情報管理装置２０１から送信された撹乱値要求データ２９６を受信する。
Ｓ４０３の後、Ｓ４１０に進む。
【０１０７】
Ｓ４１０において、データベース管理装置３０１のデータベース処理部３２１は、Ｓ４０３で受信された撹乱値要求データ２９６が要求する撹乱データ２９３をデータベース記憶部３１１から取得する。
Ｓ４１０の後、Ｓ４１１に進む。
【０１０８】
Ｓ４１１において、データベース管理装置３０１のデータベース通信部３３１は、Ｓ４１０で取得された撹乱データ２９３を情報管理装置２０１に送信する。
Ｓ４１１の後、Ｓ４１２に進む。
【０１０９】
Ｓ４１２において、情報管理装置２０１の情報管理通信部２３１は、Ｓ４１１でデータベース管理装置３０１から送信された撹乱データ２９３を受信する。
Ｓ４１２の後、Ｓ４２０に進む。
【０１１０】
Ｓ４２０において、情報管理装置２０１の乱数生成部２３２は、前処理（図５のＳ１２０）と同じ乱数データ２９２（図１０参照）を生成する。但し、前処理（図５のＳ１３０）で乱数データ２９２を削除しない場合、Ｓ４２０の処理は不要である。
乱数データ２９２の生成方法については別途説明する。
Ｓ４２０の後、Ｓ４３０に進む。
【０１１１】
Ｓ４３０において、情報管理装置２０１の情報復元部２２３は、Ｓ４１２で受信された撹乱データ２９３とＳ４２０（または前処理）で生成された乱数データ２９２とを用いて元データ２９１を生成し、生成した元データ２９１を出力装置に出力する。
例えば、情報復元部２２３は、図１１の撹乱データ２９３が示す撹乱値から図１０の乱数データ２９２が示す乱数値を減算して図９の元データ２９１が示すデータ値を算出する。
例えば、情報復元部２２３は、図１１の撹乱データ２９３が示すユーザ名「ｔａｎａｋａ」の時間帯「０〜４時」の撹乱値「２１」から図１０の乱数データ２９２が示すユーザ名「ｔａｎａｋａ」の時間帯「０〜４時」の乱数値「１６」を減算する。これにより、図９の元データ２９１が示すユーザ名「ｔａｎａｋａ」の時間帯「０〜４時」の印刷枚数「５（＝２１−１６）」が算出される。
Ｓ４３０により、元データ復元処理は終了する。
【０１１２】
次に、情報管理装置２０１の乱数生成部２３２による乱数データ２９２の生成方法について、図２４、図２５、図２６および図１０に基づいて説明する。
図２４は、実施の形態１における乱数作業データ２９２ｂ（一様乱数）の一例を示す図である。
図２５は、実施の形態１における乱数データ２９２（ゼロ和行）の一例を示す図である。
図２６は、実施の形態１における乱数追加データ２９２ｃの一例を示す図である。
【０１１３】
前処理（図３のＳ１２０）、集計値秘匿集計処理（図１６のＳ３３０）および元データ復元処理（図２２のＳ４２０）において、情報管理装置２０１の乱数データ２９２は、以下の手順（１）から（３）によって乱数データ２９２を生成する。
【０１１４】
（１）乱数生成部２３２は、情報管理記憶部２１１から乱数シード２９９を取得する。
【０１１５】
（２）乱数生成部２３２は、元データ２９１（図９参照）に含まれるデータ値毎に、乱数シード２９９とデータ値の属性（識別情報）とを入力にして所定のランダム関数を実行する。これにより、元データ２９１に含まれるデータ値毎に乱数値（一様乱数）が算出される。但し、乱数値は一様乱数以外の乱数（例えば、正規乱数）であっても構わない。
乱数生成部２３２は、元データ２９１に含まれるデータ値毎に算出した乱数値（一様乱数）を設定して乱数作業データ２９２ｂを生成する。
【０１１６】
このランダム関数は、乱数シード２９９とデータ値の属性との組み合わせによって異なる乱数値（一様乱数）を算出するためのプログラムである。このランダム関数に同じ乱数シード２９９と同じデータ値の属性とを入力した場合、いつも同じ乱数値が算出される。これを「確定的な乱数値の生成」という。
データ値の属性はデータ値を識別する情報である。例えば、図９の元データ２９１のデータ値の属性は「年月日」「時間帯」「ユーザ名」である。「時間帯」の代わりに列番号を使用し、「ユーザ名」の代わりに行番号を使用してもよい。
図９の元データ２９１に対する乱数作業データ２９２ｂを図２４に示す。
【０１１７】
（３）乱数生成部２３２は、乱数作業データ２９２ｂの行毎に乱数値の和が「０」になるように乱数作業データ２９２ｂの各乱数値を調整する。これにより、乱数データ２９２が生成される。
【０１１８】
例えば、乱数生成部２３２は、以下の（ａ）（ｂ）または（ｃ）のようにして乱数データ２９２を生成する。
【０１１９】
（ａ）乱数生成部２３２は、乱数作業データ２９２ｂの行毎に乱数値の平均値を算出し、算出した平均値を各乱数値から減算する。平均値の端数は行内のいずれかの乱数値に対して加算または減算すればよい。
図２４の乱数作業データ２９２ｂから生成される乱数データ２９２を図２５に示す。図２５の乱数データ２９２の行毎の乱数値の和は「０」である。例えば、ユーザ名「ｓａｔｏ」の各時間帯の乱数値の和は「０（＝２３＋（−２０）＋（−１７）＋（−１７）＋１３＋１８）」である。
【０１２０】
（ｂ）乱数生成部２３２は、乱数作業データ２９２ｂの行毎に乱数値の和を算出し、算出した乱数値の和を行内の少なくともいずれかの乱数値から減算する。
例えば、図２４の乱数作業データ２９２ｂに対して、ユーザ名「ｓａｔｏ」の各時間帯の乱数値の和「１５７（＝４９＋６＋９＋９＋３９＋４５）」をユーザ名「ｓａｔｏ」の時間帯「２０〜２４時」の乱数値「４５」から減算する。この場合、ユーザ名「ｓａｔｏ」の時間帯「２０〜２４時」の乱数値は「−１１２（＝４５−１５７）」になり、ユーザ名「ｓａｔｏ」の各時間帯の乱数値の和は「０（＝４９＋６＋９＋９＋３９＋（−１１２））」になる。
また、乱数値の和「１５７」を複数の値「７８」「７９」に分けて複数の値「７８」「７９」を複数の乱数値「（時間帯：１６〜２０時）３９」「（時間帯：２０〜２４時）４５」から減算してもよい。この場合、時間帯「１６〜２０時」の乱数値は「−３９（＝３９−７８）」になり、時間帯「２０〜２４時」の乱数値は「−３４（＝４５−７９）」になる。また、各時間帯の乱数値の和は「０（＝４９＋６＋９＋９＋（−３９）＋（−３４））」になる。
【０１２１】
（ｃ）乱数生成部２３２は、適当に第一の乱数列（ｒ１，ｒ２，…，ｒｎ）を生成し、第一の乱数列の要素をランダムに並べ替えて第二の乱数列（ｓ１，ｓ２，…，ｓｎ）を生成し、第一の乱数列と第二の乱数列との各要素の差を算出してゼロ和の数列（ｔ１，ｔ２，…，ｔｎ）（ここで、ｔｉ＝ｒｉ−ｓｉ、ｉは１からｎの整数）を生成する。
【０１２２】
上記手順（３）で生成される乱数データ２９２の各乱数値は一様分布に近い分布となるため、この乱数データ２９２によって元データ２９１の各データ値を保護することができる。
但し、乱数値の分布の平均がゼロであるため、時間帯毎の乱数値の和の分布がゼロをピークにした正規分布に近い分布になる。特に、データの行数（ユーザ数）が多くなると時間帯毎の平均値がゼロに収束する。この場合、データベース管理装置３０１によって時間帯毎の集計値が推測されてしまう可能性がある。
【０１２３】
乱数生成部２３２は、上記手順（３）で生成した乱数データ２９２を以下の手順（４）（５）で更新することによって、上記の懸念を解消することができる。
【０１２４】
（４）乱数生成部２３２は、乱数値の和が「０」である一つのゼロ和行の乱数追加データ２９２ｃを生成する。ゼロ和行の生成方法は上記手順（１）から（３）と同様である。
例えば、乱数生成部２３２は、図２６に示すような乱数追加データ２９２ｃを生成する。
【０１２５】
（５）乱数生成部２３２は、上記手順（３）で生成した乱数データ２９２の行毎に乱数追加データ２９２ｃのゼロ和行を加算（または行毎に減算）する。
例えば、乱数生成部２３２は、図２５の乱数データ２９２の行毎に図２６の乱数追加データ２９２ｃのゼロ和行を加算する。これにより、図１０の乱数データ２９２が生成される。例えば、図１０の乱数データ２９２の「ｓａｔｏ」「０〜４時」の乱数値「３１」は、図２５の乱数データ２９２の「ｓａｔｏ」「０〜４時」の乱数値「２３」に図２６の乱数追加データ２９２ｃの「０〜４時」の乱数値「８」を加算した値である。
【０１２６】
図２７は、実施の形態１におけるゼロ和行列の乱数データ２９２の一例を示す図である。
図２８は、実施の形態１におけるゼロ和行の乱数データ２９２の一例を示す図である。
乱数生成部２３２は、上記手順（３）でゼロ和行・非ゼロ和列の乱数データ２９２を生成する代わりに、ゼロ和行・ゼロ和列（ゼロ和行列）の乱数データ２９２（図２７参照）を生成してもよい。ゼロ和行列は、上記手順（３）で生成されたゼロ和行・非ゼロ和列の乱数データ２９２の各列に対し、上記手順（３）の（ａ）と同様の処理を行うことで生成できる。乱数生成部２３２は、生成したゼロ和行列の乱数データ２９２を上記手順（４）（５）と同じ手順で更新してゼロ和行・非ゼロ和列の乱数データ２９２（図２８参照）を生成する。
これにより、集計値秘匿集計処理（図１６参照）のＳ３４０における乱数集計データ２９２ａの生成が容易になる。このとき、統計量復元部２２２は、乱数追加データ２９２ｃ（図２６参照）の各時間帯の乱数値に乱数データ２９２の行数を乗算することにより、乱数データ２９２の各時間帯の乱数値の和（集計値）を算出することができる。例えば、図２８の乱数データ２９２の時間帯「０〜４時」の乱数値の和「４０（＝２８＋２６＋（−２６）＋１２＋０）」は、図２６の乱数追加データ２９２ｃの時間帯「０〜４時」の乱数値「８」に図２８の乱数データ２９２の行数「５」を乗算した値「４０（＝８×５）」に等しい。
【０１２７】
次に、秘匿集計システム１００の応用例について説明する。
【０１２８】
＜応用例１＞
上記の説明では、秘匿集計システム１００は、データベース管理装置３０１に対して「ユーザ毎の印刷枚数」を開示し、「時間帯毎の印刷枚数」を秘匿する。つまり、データベース管理装置３０１は、「ユーザ毎の印刷枚数」を正しく算出するが、「時間帯毎の印刷枚数」を正しく算出しない。
但し、秘匿集計システム１００は、「ユーザ毎の印刷枚数」以外の情報を開示し、「時間帯毎の印刷枚数」以外の情報を秘匿することもできる。
【０１２９】
例えば、秘匿集計システム１００は、「一日の印刷枚数」を開示し、「ユーザ毎の印刷枚数」「時間帯毎の印刷枚数」を秘匿することができる。
この場合、情報管理装置２０１の乱数生成部２３２は、以下の手順（１）から（３）によって乱数データ２９２を生成する。
（１）乱数生成部２３２は、元データ２９１と同じサイズで総和がゼロである乱数データ２９２を生成する（図２７参照）。総和がゼロである乱数データ２９２は元データ２９１のデータ値（印刷枚数）を秘匿するためのデータである。
（２）乱数生成部２３２は、ゼロ和行の乱数追加データ２９２ｃを生成し、（１）の乱数データ２９２の各行に乱数追加データ２９２ｃのゼロ和行を加算（または減算）して（１）の乱数データ２９２を更新する（図２８参照）。（１）の乱数データ２９２を更新した後の（２）の乱数データ２９２は、元データ２９１の各列のデータ値の合計・平均をさらに秘匿するためのデータである。
（３）乱数生成部２３２は、ゼロ和列の乱数追加データ２９２ｃを生成し、（２）の乱数データ２９２の各列に乱数追加データ２９２ｃのゼロ和列を加算（または減算）して（２）の乱数データ２９２を更新する（処理方法は（２）と同様）。（２）の乱数データ２９２を更新した後の（３）の乱数データ２９２は、元データ２９１の各行のデータ値の合計・平均をさらに秘匿するためのデータである。情報撹乱部２２１は（３）の乱数データ２９２を用いて撹乱データ２９３を生成する。
【０１３０】
（１）総和がゼロである乱数データ２９２に対して（２）ゼロ和行および（３）ゼロ和列を加算（または減算）しているため、（２）（３）によって更新された乱数データ２９２の乱数値の和はゼロである。
つまり、乱数データ２９２は、開示する集計値（一日の印刷枚数）に関する乱数値の和（乱数値の総和）がゼロであり、秘匿する集計値（ユーザ毎の印刷枚数、時間帯毎の印刷枚数）に関する乱数値の和（行毎の乱数値の和、列毎の乱数値の和）がゼロでない。
【０１３１】
＜応用例２＞
上記の説明では、秘匿集計システム１００は、２次元（ユーザ名、時間帯）の表形式の元データ２９１について秘匿集計を行う。
但し、秘匿集計システム１００は、３次元以上（ユーザ名、時間帯、曜日など）の表形式の元データ２９１について秘匿集計を行うこともできる。Ｎ次元の元データ２９１は、Ｎ種類の属性の組み合わせ毎にデータ値を示すデータである。
【０１３２】
例えば、秘匿集計システム１００は、「ユーザ毎または曜日毎の印刷枚数」を開示し、「時間帯毎の印刷枚数」を秘匿することができる。
この場合、情報管理装置２０１の乱数生成部２３２は、以下の手順（１）から（４）によって乱数データ２９２を生成する。
（１）乱数生成部２３２は、元データ２９１と同じサイズで乱数データ２９２を生成する。つまり、乱数生成部２３２は、ユーザ名と時間帯と曜日との組み合わせ毎に乱数値を算出して乱数データ２９２を生成する。但し、乱数データ２９２のユーザ名と曜日との組み合わせ毎の乱数値の和はゼロである。乱数データ２９２は元データ２９１のデータ値（印刷枚数）を秘匿するためのデータである。
（２）乱数生成部２３２は、曜日と時間帯との組み合わせ毎に乱数値を算出して第一の乱数追加データ２９２ｃを生成する。但し、第一の乱数追加データ２９２ｃの曜日毎の乱数値の和はゼロである。乱数生成部２３２は、（１）の乱数データ２９２に対して曜日と時間帯との組み合わせ毎に第一の乱数追加データ２９２ｃの乱数値を加算（または減算）することにより、（１）の乱数データ２９２を更新する。（１）の乱数データ２９２を更新した後の（２）の乱数データ２９２は、元データ２９１の各曜日の時間帯毎のデータ値の合計・平均をさらに秘匿するためのデータである。
（３）乱数生成部２３２は、ユーザ名と時間帯との組み合わせ毎に乱数値を算出して第二の乱数追加データ２９２ｃを生成する。但し、第二の乱数追加データ２９２ｃのユーザ毎の乱数値の和はゼロである。乱数生成部２３２は、（２）の乱数データ２９２に対してユーザ名と時間帯との組み合わせ毎に第二の乱数追加データ２９２ｃの乱数値を加算（または減算）することにより、（２）の乱数データ２９２を更新する。（２）の乱数データ２９２を更新した後の（３）の乱数データ２９２は、元データ２９１の各ユーザの時間帯毎のデータ値の合計・平均をさらに秘匿するためのデータである。情報撹乱部２２１は、（３）の乱数データ２９２を用いて撹乱データ２９３を生成しても構わない。但し、元データ２９１の時間帯毎のデータ値の合計・平均が統計的に推測されてしまう可能性がある。
（４）乱数生成部２３２は、時間帯毎に乱数値を算出して第三の乱数追加データ２９２ｃを生成する。但し、第三の乱数追加データ２９２ｃの乱数値の和はゼロである。乱数生成部２３２は、（３）の乱数データ２９２に対して曜日とユーザ名との組み合わせ毎に第三の乱数追加データ２９２ｃの乱数値を加算（または減算）することにより、（３）の乱数データ２９２を更新する。（３）の乱数データ２９２を更新した後の（４）の乱数データ２９２は、元データ２９１の時間帯毎のデータ値の合計・平均をさらに秘匿するためのデータである。情報撹乱部２２１は（４）の乱数データ２９２を用いて撹乱データ２９３を生成する。
【０１３３】
つまり、乱数データ２９２は、開示する集計値（ユーザ毎または曜日毎の印刷枚数）に関する乱数値の和（ユーザ名または曜日毎の乱数値の和）がゼロであり、秘匿する集計値（時間帯毎の印刷枚数）に関する乱数値の和（時間帯毎の乱数値の和）がゼロでない。
【０１３４】
次に、秘匿集計システム１００の補足説明を行う。
【０１３５】
秘匿集計システム１００の前処理（図５参照）のＳ１３０において、情報撹乱部２２１は元データ２９１のデータ値に乱数データ２９２の乱数値を加算して撹乱データ２９３を生成した。
但し、情報撹乱部２２１は、元データ２９１のデータ値から乱数データ２９２の乱数値を減算して撹乱データ２９３を生成しても構わない。
この場合、集計値秘匿集計処理（図１６参照）のＳ３５０において、統計量復元部２２２は集計データ３９１の集計値に乱数集計データ２９２ａの集計値を加算して復元集計データ２９４を生成する。また、元データ復元処理（図２２参照）のＳ４３０において、情報復元部２２３は撹乱データ２９３の撹乱値に乱数データ２９２の乱数値を加算して元データ２９１を生成する。
【０１３６】
秘匿集計システム１００の前処理（図５参照）のＳ１２０（および集計値秘匿集計処理（図１６参照）のＳ３３０、元データ復元処理（図２２参照）のＳ４２０）において、乱数生成部２３２はゼロ和行・非ゼロ和列の乱数データ２９２（図１０）を生成した。
但し、乱数生成部２３２は非ゼロ和行・ゼロ和列の乱数データ２９２を生成しても構わない。
この場合、撹乱データ２９３の列毎の集計値（時間帯毎の印刷枚数）は正しい値であるが、撹乱データ２９３の行毎の集計値（ユーザ毎の印刷枚数）は正しい値ではない。
【０１３７】
データベース管理装置３０１は、合計値以外の統計量（例えば、平均値）を集計値として算出してもよい。
【０１３８】
情報管理装置２０１を複数の装置で構成しても構わない。例えば、情報管理装置２０１をデータ撹乱装置とデータ復元装置とに分けて構成しても構わない。この場合、データ撹乱装置は、前処理（図５参照）で撹乱データ２９３を生成する。また、データ復元装置は、集計値秘匿集計処理（図１６参照）で復元集計データ２９４を生成し、元データ復元処理（図２２参照）で元データ２９１を復元する。
【０１３９】
秘匿集計システム１００の前処理（図５参照）において、情報管理装置２０１は、一日分の元データ２９１、乱数データ２９２および撹乱データ２９３を生成した。
但し、情報管理装置２０１は、時間帯毎に元データ２９１（図２９参照）、乱数データ２９２（図３０参照）および撹乱データ２９３（図３１参照）を生成してもよい。このとき、乱数シード２９９とデータ値の属性（年月日、ユーザ名、時間帯）とを用いて確定的に乱数値を算出することにより、乱数シード２９９を時間帯毎に生成することができる。
図２９は、実施の形態１における時間帯毎の元データ２９１の一例を示す図である。
図３０は、実施の形態１における時間帯毎の乱数データ２９２の一例を示す図である。
図３１は、実施の形態１における時間帯毎の撹乱データ２９３の一例を示す図である。
【０１４０】
情報管理装置２０１と端末装置４０１との通信および情報管理装置２０１とデータベース管理装置３０１との通信において、認証処理やアクセス制御などを実施してもよい。
【０１４１】
情報管理装置２０１とデータベース管理装置３０１との通信において、ユーザ名などの情報（例えば各データの項目名）を暗号化してもよい。例えば、同じ平文を同じ暗号文に暗号化する確定的暗号を用いる。これにより、データベース管理装置３０１に対してユーザ名などの情報を秘匿することができる。情報管理装置２０１は、必要に応じて、データベース管理装置３０１から受信したデータに含まれる情報を復号してユーザ名などの情報を得る。
【０１４２】
データベース管理装置３０１は、撹乱データ２９３を暗号化してデータベース記憶部３１１に記憶しても構わない。撹乱データ２９３を使用する際、データベース管理装置３０１は暗号化した撹乱データ２９３をデータベース記憶部３１１から読み出し、読み出した撹乱データ２９３を復号する。例えば、データベース管理装置３０１は、確定的暗号や確率的暗号などの暗号化方式を用いて撹乱データ２９３を暗復号する。
【０１４３】
次に、秘匿集計システム１００のハードウェアについて補足する。
【０１４４】
図３２は、実施の形態１における情報管理装置２０１、データベース管理装置３０１および端末装置４０１のハードウェア資源の一例を示す図である。
図３２において、情報管理装置２０１、データベース管理装置３０１および端末装置４０１（それぞれコンピュータの一例）は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ９０１は、バス９０２を介してＲＯＭ９０３、ＲＡＭ９０４、通信ボード９０５（通信装置）、ディスプレイ９１１（表示装置）、キーボード９１２、マウス９１３、ドライブ９１４、磁気ディスク装置９２０などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ドライブ９１４は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
ＲＯＭ９０３、ＲＡＭ９０４、磁気ディスク装置９２０およびドライブ９１４は記憶装置の一例である。キーボード９１２、マウス９１３および通信ボード９０５は入力装置の一例である。ディスプレイ９１１および通信ボード９０５は出力装置の一例である。
【０１４５】
通信ボード９０５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【０１４６】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、プログラム群９２２、ファイル群９２３が記憶されている。
【０１４７】
プログラム群９２２には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラム（例えば、秘匿集計プログラム、データ撹乱プログラム、データ集計プログラム、データ復元プログラム）は、ＣＰＵ９０１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【０１４８】
ファイル群９２３には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【０１４９】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
フローチャートなどに基づいて説明する実施の形態の処理はＣＰＵ９０１、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
【０１５０】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【０１５１】
実施の形態１において、例えば、以下のような秘匿集計システム１００について説明した。
秘匿集計システム１００は、プライバシ情報を含むデータ（元データ２９１）をクラウド事業者（データベース管理装置３０１）などに外部委託して集計を行うシステムとして利用することができる。
秘匿集計システム１００は、秘匿したい統計量（時間帯毎の印刷枚数）をクラウド事業者に対して確実に秘匿しつつ、クラウド事業者に集計処理を行わせる。
情報管理装置２０１は、単一の秘密情報として乱数シード２９９を用いて乱数データ２９２を確定的に生成する。このため、秘密情報のサイズが小さい。情報管理装置２０１は、乱数データ２９２を用いて撹乱データ２９３を生成し、元データ２９１の集計値や元データ２９１を復元する。
【０１５２】
実施の形態２．
端末装置４０１が撹乱データ２９３を生成する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【０１５３】
図３３は、実施の形態２における秘匿集計システム１００の構成図である。
実施の形態２における秘匿集計システム１００の構成について、図３３に基づいて説明する。
【０１５４】
秘匿集計システム１００は、実施の形態１（図１参照）と同様に、情報管理装置２０１とデータベース管理装置３０１と複数の端末装置４０１Ａ−Ｃとを備える。
但し、各端末装置４０１Ａ−Ｃは、情報管理装置２０１の代わりに、撹乱データ２９３を生成するデータ撹乱装置として動作する。
【０１５５】
図３４は、実施の形態２における端末装置４０１の機能構成図である。
実施の形態２における端末装置４０１の機能構成について、図３４に基づいて説明する。
【０１５６】
端末装置４０１（データ撹乱装置の一例）は、実施の形態１の構成（図２参照）に加えて、情報撹乱部４２２（元データ生成部、撹乱データ生成部の一例）と乱数生成部４３２（乱数データ生成部の一例）とを備える。
端末装置４０１は、情報撹乱部４２２と乱数生成部４３２とを備えることにより、元データ２９１、乱数データ２９２および撹乱データ２９３を生成する。
情報撹乱部４２２および乱数生成部４３２は、実施の形態１における情報管理装置２０１の情報撹乱部２２１および乱数生成部２３２と同様の構成である。元データ２９１、乱数データ２９２および撹乱データ２９３の生成方法は、実施の形態１における情報管理装置２０１による生成方法と同様である。
端末通信部４３１（撹乱装置通信部の一例）は、情報撹乱部４２２によって生成される撹乱データ２９３をデータベース管理装置３０１に送信する。
【０１５７】
図３５は、実施の形態２における情報管理装置２０１の機能構成図である。
実施の形態２における情報管理装置２０１の機能構成について、図３５に基づいて説明する。
【０１５８】
端末装置４０１（データ復元装置の一例）は、実施の形態１の構成（図３）から情報撹乱部２２１を除いた構成である。
【０１５９】
データベース管理装置３０１の機能構成は、実施の形態１（図４参照）と同様である。
【０１６０】
図３６は、実施の形態２における秘匿集計システム１００の前処理を示すフローチャートである。実施の形態２における秘匿集計システム１００の前処理について、図３６に基づいて説明する。
【０１６１】
Ｓ１０１Ｂ、Ｓ１１０ＢからＳ１４１Ｂはそれぞれ、実施の形態１で説明したＳ１０１、Ｓ１１０からＳ１４１と同様の処理である。但し、各端末装置４０１Ａ−Ｃが撹乱データ２９３を生成し、生成した撹乱データ２９３をデータベース管理装置３０１に送信する。
【０１６２】
Ｓ１０１Ｂにおいて、各端末装置４０１Ａ−Ｃの情報生成部４２１はログデータ４９１を生成する。
図３７は、実施の形態２におけるログデータ４９１の一例を示す図である。
Ｓ１０１Ｂの後、Ｓ１１０Ｂに進む。
【０１６３】
Ｓ１１０Ｂにおいて、各端末装置４０１Ａ−Ｃの情報撹乱部４２２はログデータ４９１を集約して元データ２９１を生成する。
図３８は、実施の形態２における元データ２９１の一例を示す図である。
Ｓ１１０Ｂの後、Ｓ１２０Ｂに進む。
【０１６４】
Ｓ１２０Ｂにおいて、各端末装置４０１Ａ−Ｃの乱数生成部４３２は乱数データ２９２を生成する（図１０参照）。
但し、他のユーザについての乱数値が不要である場合、乱数生成部４３２は、一部のユーザについての乱数値を含んだ乱数データ２９２を生成しても構わない。これにより、乱数データ２９２の生成に要する処理時間を短縮することができる。
図３９は、実施の形態２における乱数データ２９２の一例を示す図である。
Ｓ１２０Ｂの後、Ｓ１３０Ｂに進む。
【０１６５】
Ｓ１３０Ｂにおいて、各端末装置４０１Ａ−Ｃの情報撹乱部４２２は元データ２９１と乱数データ２９２とを用いて撹乱データ２９３を生成する。
図４０は、実施の形態２における撹乱データ２９３の一例を示す図である。
Ｓ１３０Ｂの後、Ｓ１４０Ｂに進む。
【０１６６】
Ｓ１４０Ｂにおいて、各端末装置４０１Ａ−Ｃの端末通信部４３１は撹乱データ２９３をデータベース管理装置３０１に送信する。
Ｓ１４０Ｂの後、Ｓ１４１Ｂに進む。
【０１６７】
Ｓ１４１Ｂにおいて、データベース管理装置３０１のデータベース通信部３３１は各端末装置４０１Ａ−Ｃから送信された撹乱データ２９３を受信し、受信した撹乱データ２９３をまとめてデータベース記憶部３１１に記憶する（図１１参照）。
Ｓ１４１Ｂにより、秘匿集計システム１００の前処理は終了する。
【０１６８】
データ値秘匿集計処理（図１２参照）、集計値秘匿集計処理（図１６参照）および元データ復元処理（図２２参照）は、実施の形態１と同様である。
【０１６９】
以下に、秘匿集計システム１００の補足説明を行う。
【０１７０】
秘匿集計システム１００は、実施の形態１と同様の効果を奏することができる。
【０１７１】
秘匿集計システム１００は、情報管理装置２０１に元データ２９１が記憶されないため、情報管理装置２０１から元データ２９１が漏えいしてしまうことを防ぐことができる。
情報管理装置２０１が撹乱データ２９３から元データ２９１を復元することを防ぐため、情報管理装置２０１から情報復元部２２３を削除してもよい。また、各端末装置４０１Ａ−Ｃが統計量復元部２２２および情報復元部２２３を備えてもよい。
【０１７２】
以下の手順（１）から（５）により、端末装置４０１が復元集計データ２９４および元データ２９１を生成し、情報管理装置２０１が復元集計データ２９４を生成できても元データ２９１を生成できないようにすることができる。
（１）各端末装置４０１Ａ−Ｃは、データ値撹乱用の乱数シード２９９ａ（秘密情報）と集計値撹乱用の乱数シード２９９ｂ（秘密情報）とを記憶する。情報管理装置２０１は、各端末装置４０１Ａ−Ｃと同じ集計値撹乱用の乱数シード２９９ｂを記憶する。但し、情報管理装置２０１は、データ値撹乱用の乱数シード２９９ａを記憶しない。
（２）各端末装置４０１Ａ−Ｃの乱数生成部４３２は、データ値撹乱用の乱数シード２９９ａを用いてゼロ和行列の乱数データ２９２を生成する。
（３）各端末装置４０１Ａ−Ｃの乱数生成部４３２は、集計値撹乱用の乱数シード２９９ｂを用いて乱数追加データ２９２ｃ（例えば、ゼロ和行の乱数追加データ２９２ｃ）を生成する。各端末装置４０１Ａ−Ｃの乱数生成部４３２は、ゼロ和行列の乱数データ２９２の乱数値に乱数追加データ２９２ｃの乱数値を加算（または減算）して乱数データ２９２を更新する。
（４）各端末装置４０１Ａ−Ｃの情報撹乱部４２２は、元データ２９１のデータ値に乱数データ２９２のデータ値を加算して撹乱データ２９３を生成する。
（５）情報管理装置２０１の乱数生成部２３２は、集計値撹乱用の乱数シード２９９ｂを用いて（３）と同じ乱数追加データ２９２ｃを生成し、生成した乱数追加データ２９２ｃの乱数値を集計して乱数集計データ２９２ａを生成する。情報管理装置２０１の統計量復元部２２２は集計データ３９１の集計値に乱数集計データ２９２ａの集計値を減算（または加算）して復元集計データ２９４を生成する。情報管理装置２０１の乱数生成部２３２はデータ値撹乱用の乱数シード２９９ａが無いため（２）と同じ乱数データ２９２を生成できず、情報管理装置２０１は撹乱データ２９３から元データ２９１を復元することができない。
上記のように各装置に与える秘密情報を選択することで、各装置でのデータの復元の度合いを制御することができる。
【０１７３】
実施の形態３．
秘匿集計システム１００の応用例について説明する。
以下、実施の形態１、２と異なる事項について主に説明する。説明を省略する事項については実施の形態１、２と同様である。
【０１７４】
実施の形態１において、データベース管理装置３０１に対して「ユーザ毎の印刷枚数」を開示し、「時間帯毎の印刷枚数」を秘匿する例について説明した。
但し、データベース管理装置３０１に対して、さらに、「午前・午後の総印刷枚数（もしくは午前・午後の傾向）」を秘匿することもできる。
この場合、情報管理装置２０１の乱数生成部２３２は、以下の手順（１）から（７）により、乱数データ２９２を生成する。
図４１は、実施の形態３における乱数追加データ２９２ｄの一例を示す図である。
図４２は、実施の形態３における乱数データ２９２の一例を示す図である。
【０１７５】
乱数生成部２３２は、実施の形態１で説明した手順（１）から（５）により、乱数データ２９２（図１０参照）を生成する。
（６）乱数生成部２３２は、午前の時間帯用の乱数値と、午後の時間帯用の乱数値との和が「０」であるゼロ和行の乱数追加データ２９２ｄ（図４１参照）を生成する。
（７）乱数生成部２３２は、乱数データ２９２の午前の時間帯の各乱数値に乱数追加データ２９２ｄの午前の時間帯用の乱数値を加算（または減算）し、乱数データ２９２の午後の時間帯の各乱数値に乱数追加データ２９２ｄの午後の時間帯用の乱数値を加算（または減算）して乱数データ２９２を更新する（図４２参照）。
この乱数データ２９２を使用することにより、午前の印刷枚数および午後の印刷枚数（および傾向）の秘匿性を保証することができる。
【符号の説明】
【０１７６】
１００  秘匿集計システム、１０１  ネットワーク、２０１  情報管理装置、２１１  情報管理記憶部、２２１  情報撹乱部、２２２  統計量復元部、２２３  情報復元部、２３１  情報管理通信部、２３２  乱数生成部、２９１  元データ、２９２  乱数データ、２９２ａ  乱数集計データ、２９２ｂ  乱数作業データ、２９２ｃ，２９２ｄ  乱数追加データ、２９３  撹乱データ、２９４  復元集計データ、２９５  集計値要求データ、２９６  撹乱値要求データ、２９９  乱数シード、３０１  データベース管理装置、３１１  データベース記憶部、３２１  データベース処理部、３２２  データベース通知部、３３１  データベース通信部、３９１  集計データ、３９１ａ  集計作業データ、３９９  通知条件データ、４０１  端末装置、４１１  端末記憶部、４２１  情報生成部、４２２  情報撹乱部、４３１  端末通信部、４３２  乱数生成部、４９１  ログデータ、４９１ａ  ログレコード、４９１ｂ  ログファイル、９０１  ＣＰＵ、９０２  バス、９０３  ＲＯＭ、９０４  ＲＡＭ、９０５  通信ボード、９１１  ディスプレイ、９１２  キーボード、９１３  マウス、９１４  ドライブ、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  プログラム群、９２３  ファイル群。
【図１】
0005836152.tif 000002
【図２】
0005836152.tif 000003
【図３】
0005836152.tif 000004
【図４】
0005836152.tif 000005
【図５】
0005836152.tif 000006
【図６】
0005836152.tif 000007
【図７】
0005836152.tif 000008
【図８】
0005836152.tif 000009
【図９】
0005836152.tif 000010
【図１０】
0005836152.tif 000011
【図１１】
0005836152.tif 000012
【図１２】
0005836152.tif 000013
【図１３】
0005836152.tif 000014
【図１４】
0005836152.tif 000015
【図１５】
0005836152.tif 000016
【図１６】
0005836152.tif 000017
【図１７】
0005836152.tif 000018
【図１８】
0005836152.tif 000019
【図１９】
0005836152.tif 000020
【図２０】
0005836152.tif 000021
【図２１】
0005836152.tif 000022
【図２２】
0005836152.tif 000023
【図２３】
0005836152.tif 000024
【図２４】
0005836152.tif 000025
【図２５】
0005836152.tif 000026
【図２６】
0005836152.tif 000027
【図２７】
0005836152.tif 000028
【図２８】
0005836152.tif 000029
【図２９】
0005836152.tif 000030
【図３０】
0005836152.tif 000031
【図３１】
0005836152.tif 000032
【図３２】
0005836152.tif 000033
【図３３】
0005836152.tif 000034
【図３４】
0005836152.tif 000035
【図３５】
0005836152.tif 000036
【図３６】
0005836152.tif 000037
【図３７】
0005836152.tif 000038
【図３８】
0005836152.tif 000039
【図３９】
0005836152.tif 000040
【図４０】
0005836152.tif 000041
【図４１】
0005836152.tif 000042
【図４２】
0005836152.tif 000043