(57)【要約】【課題】マスク行列を変更する。【解決手段】第１の方法では、被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出し、マスク行列の行又は列単位の所定の更新演算式に従った演算を、マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、データ格納部に格納する処理を含む。第２の方法では、被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出し、マスク行列の行又は列単位の所定の拡張演算式に従った演算をマスク行列における行又は列方向に行うことでマスク行列の新たな行又は列を生成し、マスク行列に付加することで新たなマスク行列を生成し、データ格納部に格納する処理を含む。【選択図】図３
2014134732.tif 000002
【特許請求の範囲】
【請求項１】
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出し、
前記マスク行列の行又は列単位の所定の更新演算式に従った演算を、前記マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、前記データ格納部に格納する
処理を含み、コンピュータにより実行されるマスク行列更新方法。
【請求項２】
前記更新タイミングが、時間、他のコンピュータからの指示、又は前記コンピュータにおいて実施された他の所定の処理の開始又は終了である
請求項１記載のマスク行列更新方法。
【請求項３】
前記更新タイミング毎に、前記所定の更新演算式が変更される
請求項１又は２記載のマスク行列更新方法。
【請求項４】
前記所定の更新演算式が、他のコンピュータから通知されるか、予め定められている複数の更新演算式から予め定められている順番にて選定される
請求項１乃至３のいずれか１つ記載のマスク行列更新方法。
【請求項５】
前記所定の更新演算式が、複数の行又は列の和又は差、又は第１の行又は列と第１の係数との第１の積と第２の行又は列と第２の係数との第２の積との和を含む
請求項１乃至４のいずれか１つ記載のマスク行列更新方法。
【請求項６】
前記所定の更新演算式が、第１の行又は列と第１の係数との第１の積と第２の行又は列と第２の係数との第２の積と第３の行又は列と第３の係数との第３の積との和である
請求項１乃至４のいずれか１つ記載のマスク行列更新方法。
【請求項７】
前記マスク行列が、
複数の第１のマスク行列と補助行列との和により得られる行列における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第１のマスク行列のうちの１つの第１のマスク行列であるか、
複数の第２のマスク行列の総和における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第２のマスク行列のうちの１つの第２のマスク行列である、
請求項１乃至６のいずれか１つ記載のマスク行列更新方法。
【請求項８】
前記補助行列の行又は列単位の前記所定の更新演算式に従った演算を、前記補助行列における行又は列方向にサイクリックに行うことで、新たな補助行列を生成する処理
をさらに含む、請求項７記載のマスク行列更新方法。
【請求項９】
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出し、
前記マスク行列の行又は列単位の所定の拡張演算式に従った演算を前記マスク行列における行又は列方向に行うことで前記マスク行列の新たな行又は列を生成し、前記マスク行列に付加することで新たなマスク行列を生成し、前記データ格納部に格納する
処理を含み、コンピュータにより実行されるマスク行列拡張方法。
【請求項１０】
前記所定の拡張演算式が、前記マスク行列における第１の行又は列と第２の行又は列との和又は差を含む
請求項９記載のマスク行列拡張方法。
【請求項１１】
前記格納する処理が、
前記第１の行又は列と前記第２の行又は列との和を、前記マスク行列における前記第１及び第２の行又は列以外の行又は列から行又は列単位で差し引く
処理を含む請求項１０記載のマスク行列拡張方法。
【請求項１２】
前記マスク行列が、
複数の第１のマスク行列と補助行列との和により得られる行列における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第１のマスク行列のうちの１つの第１のマスク行列であるか、
複数の第２のマスク行列の総和における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第２のマスク行列のうちの１つの第２のマスク行列である、
請求項９乃至１１のいずれか１つ記載のマスク行列拡張方法。
【請求項１３】
前記補助行列の行又は列単位の前記所定の拡張演算式に従った演算を前記補助行列における行又は列方向に行うことで前記補助行列の新たな行又は列を生成する処理
をさらに含む、請求項１２記載のマスク行列拡張方法。
【請求項１４】
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出し、
前記マスク行列の行又は列単位の所定の更新演算式に従った演算を、前記マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、前記データ格納部に格納する
処理を、コンピュータに実行させるためのマスク行列更新プログラム。
【請求項１５】
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出し、
前記マスク行列の行又は列単位の所定の拡張演算式に従った演算を前記マスク行列における行又は列方向に行うことで前記マスク行列の新たな行又は列を生成し、前記マスク行列に付加することで新たなマスク行列を生成し、前記データ格納部に格納する
処理を、コンピュータに実行させるためのマスク行列拡張プログラム。
【請求項１６】
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出する検出部と、
前記マスク行列の行又は列単位の所定の更新演算式に従った演算を、前記マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、前記データ格納部に格納する生成部と、
を有する情報処理装置。
【請求項１７】
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出する検出部と、
前記マスク行列の行又は列単位の所定の拡張演算式に従った演算を前記マスク行列における行又は列方向に行うことで前記マスク行列の新たな行又は列を生成し、前記マスク行列に付加することで新たなマスク行列を生成し、前記データ格納部に格納する生成部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、データの秘匿化技術に関する。
【背景技術】
【０００２】
例えば、各支店で各商品の月別売上表をサーバで共有し、本部の集計担当者が商品別集計、月別集計などを行うというようなケースを考える。例えば図１の左に示すように、支店Ａでは、商品Ａ、商品Ｂ及び商品Ｃの月毎の売上を表す売上表を有し、支店Ｂでは、同じく商品Ａ、商品Ｂ及び商品Ｃの月毎の売上を表す売上表を有する。そして、図１の右に示すように、本部では、全ての支店に関して、商品Ａ、商品Ｂ、商品Ｃそれぞれについての売上合計値、全商品についての月毎の売上合計値といった集計値を算出する。場合によっては、全売上高というような集計値を計算する場合もある。
【０００３】
このような場合に、各支店では細かい売上高を他の支店などに知らせたくなく、本部も細かい情報を把握できなくとも集計値を得られればよい、といった要望が出てくることがある。
【０００４】
これに対して、次のような技術が提案されている。例えば、各支店を情報提供者とし、本部をユーザとする。そして、ユーザとは別に、集計処理を行う集計者と、秘匿化のためのマスク行列を管理するマスタとが登場するものとする。
【０００５】
この場合、図２に示すように、マスク行列Ｍは、各情報提供者のためのマスク行列Ｍ１乃至Ｍ３の和となっており、マスタから、情報提供者ａ乃至ｃへ配布される。なお、ここでは、マスク行列Ｍと、補助行列Ａとを加算すると、各行及び各列の成分の総和がゼロとなるゼロサム行列になるものとする。この補助行列Ａは、ユーザに配布される。
【０００６】
情報提供者ａは、例えば月別商品別の売上高を表す行列Ｄ１と、マスタから配布されたマスク行列Ｍ１とを加算して、マスク化行列ＭＤ１を生成すると、集計者へ送付する。同様に、情報提供者ｂは、例えば月別商品別の売上高を表す行列Ｄ２と、マスタから配布されたマスク行列Ｍ２とを加算して、マスク化行列ＭＤ２を生成すると、集計者へ送付する。さらに、情報提供者ｃは、例えば月別商品別の売上高を表す行列Ｄ３と、マスタから配布されたマスク行列Ｍ３とを加算して、マスク化行列ＭＤ３を生成すると、集計者へ送信する。集計者は、行列Ｍ１乃至Ｍ３ではなくマスク化行列ＭＤ１乃至ＭＤ３を受信するため、行列Ｍ１乃至Ｍ３を知ることはできない。集計者以外の第三者も、行列Ｍ１乃至Ｍ３を知ることはできない。
【０００７】
集計者は、各情報提供者ａ乃至ｃからマスク化行列ＭＤ１乃至ＭＤ３を受信すると、マスク化行列ＭＤ１乃至ＭＤ３の和を算出することで、マスク化行列ＭＤを生成する。マスク化行列ＭＤであるから、マスク化のために集計者以外の第三者も、行列Ｄ１乃至Ｄ３の加算結果Ｄを知ることはできない。
【０００８】
その後、例えばユーザからの要求に応じて、集計者は、マスク化行列ＭＤを、ユーザに送信する。ユーザは、受信したマスク化行列ＭＤと、マスタから配布された補助行列Ａとを加算すると、集計行列ＴＤが得られる。このようにすれば、ユーザは、当該集計行列ＴＤにおける各行又は各列について成分の総和を計算すれば、情報提供者ａ乃至ｃが有していた行列Ｄ１乃至Ｄ３の加算結果Ｄにおける各行又は各列について成分の総和を得ることができる。すなわち、月別の売上高、商品別の売上高、売上合計といった値を得ることができるようになる。これは、Ｍ＋Ａがゼロサム行列だからである。
【０００９】
このような技術によれば、上で述べたような要望を満たすことはできるが、行列Ｄ１乃至Ｄ３の行列成分が０又は１しかないような場合に、何度も同じマスク行列Ｍ１乃至Ｍ３を利用すると集計者に行列Ｄ１乃至Ｄ３が漏洩してしまう問題がある。このため、できれば集計者に送信する都度マスク行列Ｍ１乃至Ｍ３を更新する方が好ましい。
【００１０】
しかしながら、例えば行列Ｄ１乃至Ｄ３のサイズが、３万×３万行列（およそ４ＧＢｙｔｅｓ）程度だとすると、マスク行列Ｍ１乃至Ｍ３を情報提供者に配布するコストは大きい。
【００１１】
なお、同じサイズのマスク行列だけではなく、マスク行列のサイズを大きくする場合も同様の問題がある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１２−８３５３６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
従って、本技術の目的は、一側面によれば、格納されたマスク行列を利用して新たなマスク行列を生成するための技術を提供することである。
【課題を解決するための手段】
【００１４】
本技術の第１の態様に係るマスク行列更新方法は、（Ａ）被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出し、（Ｂ）マスク行列の行又は列単位の所定の更新演算式に従った演算を、マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、データ格納部に格納する処理を含む。
【００１５】
本技術の第２の態様に係るマスク行列拡張方法は、（Ｃ）被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出し、（Ｄ）マスク行列の行又は列単位の所定の拡張演算式に従った演算をマスク行列における行又は列方向に行うことでマスク行列の新たな行又は列を生成し、マスク行列に付加することで新たなマスク行列を生成し、データ格納部に格納する処理を含む。
【発明の効果】
【００１６】
一側面によれば、格納されたマスク行列を利用して新たなマスク行列を生成する。
【図面の簡単な説明】
【００１７】
【図１】図１は、集計処理の一例を示す図である。
【図２】図２は、秘匿集計処理の一例を示す図である。
【図３】図３は、実施の形態におけるシステム構成の一例を示す図である。
【図４】図４は、情報提供者装置の機能ブロック図である。
【図５】図５は、ユーザサーバの機能ブロック図である。
【図６】図６は、第１の演算式例を模式的に示す図である。
【図７】図７は、第２の演算式例を模式的に示す図である。
【図８】図８は、第３の演算式例を模式的に示す図である。
【図９】図９は、第４の演算式例を模式的に示す図である。
【図１０】図１０は、第５の演算式例を模式的に示す図である。
【図１１】図１１は、第６の演算式例を模式的に示す図である。
【図１２】図１２は、第１の実施の形態に係る処理フローを示す図である。
【図１３】図１３は、更新処理の処理フローを示す図である。
【図１４】図１４は、第１の実施の形態の第２の変形例における処理フローを示す図である。
【図１５】図１５は、第１の実施の形態の第３の変形例における処理フローを示す図である。
【図１６】図１６（ａ）乃至（ｄ）は、行列を拡張させる場合の問題点を説明するための図である。
【図１７】図１７は、第２の実施の形態におけるマスタサーバの機能ブロック図である。
【図１８】図１８は、第２の実施の形態における処理フローを示す図である。
【図１９】図１９は、拡張処理の処理フローを示す図である。
【図２０】図２０は、拡張のための演算式を模式的に示す図である。
【図２１】図２１は、補助行列拡張処理の処理フローを示す図である。
【図２２】図２２は、調整付きの拡張演算式を模式的に示す図である。
【図２３】図２３は、第２の実施の形態の第３の変形例における処理フローを示す図である。
【図２４】図２４は、第２の実施の形態の第４の変形例における処理フローを示す図である。
【図２５】図２５は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１８】
［実施の形態１］
図３に、本実施の形態におけるシステム構成の概要を示す。図３の例では、インターネットその他のネットワーク１には、図２に示したマスタのためのマスタサーバ３と、図２に示したユーザのためのユーザサーバ９と、図２に示した集計者のための集計者サーバ７と、図２に示した情報提供者のための情報提供者装置５ａ乃至５ｃとが接続されている。なお、ユーザサーバ９及び情報提供者装置５ａ乃至５ｃの数については図示した数に限定されるものではない。また、集計者サーバ７は、１台のコンピュータで構成される場合もあれば、複数台のコンピュータで構成される場合もある。
【００１９】
集計者サーバ７は、情報提供者装置５ａ乃至５ｃから受信したマスク化行列の総和を算出する機能を有するが、これは従来と同じである。
【００２０】
マスタサーバ３は、初期的なマスク行列Ｍ１乃至Ｍ３を、情報提供者装置５ａ乃至５ｃに配布すると共に、補助行列Ａを、ユーザサーバ９へ配布する処理を行う。さらに、本実施の形態では、マスタサーバ３は、情報提供者装置５ａ乃至５ｃとユーザサーバ９に対して、マスク行列又は補助行列を更新するように要求する。
【００２１】
情報提供者装置５（５ａ乃至５ｃ）の構成例を、図４に示す。情報提供者装置５は、制御部５１と、変更処理部５２と、データ格納部５３と、データ更新部５４と、マスク処理部５５と、マスク化データ格納部５６と、送信部５７とを有する。制御部５１は、マスク行列の変更（更新及び後に述べる拡張）、マスク処理、マスク化行列の送信を制御する。変更処理部５２は、データ格納部５３に格納されているマスク行列Ｍiを変更する処理を行い、変更後のマスク行列をデータ格納部５３に格納する。データ更新部５４は、例えば商品別月別の売上高のような行列Ｄiを、例えば情報提供者装置５に接続された他の装置からのデータに応じて更新する処理を行う。マスク処理部５５は、データ格納部５３に格納されているマスク行列Ｍiと行列Ｄiとの加算を行うことで、マスク化行列ＭＤiを生成し、マスク化データ格納部５６に格納する。送信部５７は、マスク化データ格納部５６に格納されているマスク化行列ＭＤiを、集計者サーバ７へ送信する。
【００２２】
図５に、ユーザサーバ９の構成例を示す。ユーザサーバ９は、データ受信部９１と、制御部９２と、変更処理部９３と、データ格納部９４と、集計処理部９５と、集計データ格納部９６と、データ出力部９７とを有する。制御部９２は、データ格納部９４に格納されている補助行列の変更（更新及び後に述べる拡張）、マスクを解除するアンマスク処理、集計処理、データ出力処理を制御する。データ受信部９１は、集計者サーバ７からマスク化行列ＭＤ（＝ΣＭＤi）を受信して、データ格納部９４に格納する。変更処理部９３は、補助行列Ａの更新又は拡張等の処理を行う。集計処理部９５は、データ格納部９４に格納されている補助行列Ａとマスク化行列ＭＤとの加算を行うことで集計行列ＴＤを生成し、集計行列ＴＤにおける各行及び各列の成分を加算することで集計処理を実行し、集計結果を集計データ格納部９６に格納する。データ出力部９７は、集計データ格納部９６に格納されているデータを、ユーザサーバ９に接続されているユーザの他のコンピュータ等に出力する。
【００２３】
このようなシステムの動作を説明する前に、マスク行列の更新及び補助行列の更新について、前提及び基本的な演算内容について説明しておく。
【００２４】
上で述べたように、マスク行列Ｍと補助行列Ａとの和がゼロサム行列となる。従って、以下のように表される。
【００２５】
【数１】
2014134732.tif 000003
【００２６】
なお、ｍijは、マスク行列Ｍのｉ行ｊ列成分を表し、ａijは、補助行列Ａのｉ行ｊ列成分を表す。ゼロサム行列の性質から、以下が成り立つ。
【００２７】
【数２】
2014134732.tif 000004
【００２８】
【数３】
2014134732.tif 000005
【００２９】
ゼロであるから、行単位又は列単位で加算しても差し引いても、所定の係数を乗じてから加算してもゼロとなる。例えば１列目と２列目を加算した場合には、以下のように表される。
【００３０】
【数４】
2014134732.tif 000006
【００３１】
このように、マスク行列Ｍと補助行列Ａとを別々に１列目と２列目とを加算した後で加算しても同じ結果が得られる。これは、行であっても同じである。
【００３２】
一方、マスク行列Ｍは、図２の例では３つの個別のマスク行列Ｍ１乃至Ｍ３の和である。すなわち、マスク行列Ｍは、以下のように表される。
【００３３】
【数５】
2014134732.tif 000007
【００３４】
ここで、ｍij1は、マスク行列Ｍ１のｉ行ｊ列成分を表し、ｍij2は、マスク行列Ｍ２のｉ行ｊ列成分を表し、ｍij3は、マスク行列Ｍ３のｉ行ｊ列成分を表す。
【００３５】
そして、同じように、例えば１列目と２列目を加算した場合には、以下のように表される。
【００３６】
【数６】
2014134732.tif 000008
【００３７】
このように、当然ながらマスク行列Ｍ１について１列目と２列目とを加算した結果と、マスク行列Ｍ２について１列目と２列目とを加算した結果と、マスク行列Ｍ３について１列目と２列目とを加算した結果との和となる。従って、マスク行列Ｍ１乃至Ｍ３の各々について同一行又は列の演算を行った上で加算し、補助行列Ａについても同一行又は列の同一演算を実施した結果と加算すれば、結果もゼロとなる。
【００３８】
このような性質をマスク行列Ｍ１乃至Ｍ３及び補助行列Ａの更新に使用する。すなわち、行単位又は列単位で演算を行った結果を新たなマスク行列Ｍ１乃至Ｍ３及び補助行列Ａの新たな行又は列の値として用いる。但し、演算式を、情報提供者及びユーザ（基本的にはマスタも）で共有し、同一の演算式で演算を行うものとする。
【００３９】
なお、Ｍ＋Ａは、各列の成分の総和がゼロというだけではなく、各行の成分の総和がゼロという要件も満たさなければならない。但し、元々Ｍ＋Ａの各行の成分の総和がゼロであるから、各行の総和は何倍されてもゼロのままである。従って、例えば、１列目の値と２列目の値を加算して１列目の値に採用し、２列目の値と３列目の値を加算して２列目の値に採用し、．．．．ｍ列目の値と１列目の値を加算してｍ列目の値に採用する、といったようなサイクリックな演算を行えば、行方向では成分の総和は元の２倍になっている。以下に、その結果を示すが、各成分は行方向で２回出現する。しかしながら、０を２倍しても０なので、各行の成分の総和は０になる。
【００４０】
【数７】
2014134732.tif 000009
【００４１】
演算式については様々なものが可能であるが、例えば以下のような演算式が考えられる。
【００４２】
なお、マスク行列Ｍ１を５行５列として以下のように表すものとする。
【００４３】
【数８】
2014134732.tif 000010
【００４４】
そして、列ベクトルｘiで表現すると、Ｍ１＝（ｘ1，ｘ2，ｘ3，ｘ4，ｘ5）であり、行ベクトルｙで表現すると、Ｍ１＝（ｙ1，ｙ2，ｙ3，ｙ4，ｙ5）Tとなる。
【００４５】
（Ａ）隣の列の加算
ｘi＝ｘi＋ｘ(i+1 mod 5)｜ｉ＝｛１，２，３，４，５｝
【００４６】
模式的に示せば、図６のように表される。図６の例では右隣の列との加算により、当該列の新たな成分が計算される。なお、右隣がない５列目については１列目の成分が加算される。
【００４７】
（Ｂ）隣の行の加算
ｙi＝ｙi＋ｙ(i+1 mod 5)｜ｉ＝｛１，２，３，４，５｝
【００４８】
模式的に示せば、図７に示すように表される。図７の例では１つ下の行との加算により、当該行の新たな成分が計算される。なお、１つ下の行がない５行目については１行目の成分が加算される。
【００４９】
（Ｃ）隣の列の減算
ｘi＝ｘi−ｘ(i+1 mod 5)｜ｉ＝｛１，２，３，４，５｝
【００５０】
模式的に示せば、図８のように表される。図８の例では右隣の列を減算することにより、当該列の新たな成分が計算される。なお、右隣がない５列目については１列目の成分が減算される。
【００５１】
（Ｄ）２つ隣の列の加算
ｘi＝ｘi＋ｘ(i+2 mod 5)｜ｉ＝｛１，２，３，４，５｝
【００５２】
模式的に示せば、図９のように表される。図９の例では２つ右隣の列との加算により、当該列の新たな成分が計算される。なお、２つ右隣がない４列目については１列目の成分が加算され、同じく５列目については２列目の成分が加算される。
【００５３】
（Ｅ）隣の列の２倍を加算
ｘi＝ｘi＋２ｘ(i+1 mod 5)｜ｉ＝｛１，２，３，４，５｝
【００５４】
模式的に示せば、図１０のように表される。図１０の例では右隣の列における成分の２倍との加算により、当該列の新たな成分が計算される。なお、右隣がない５列目については１列目の成分の２倍が加算される。
【００５５】
この場合、行の値は３倍となるがマスク行列Ｍ＋補助行列Ａについて行の総和は上で述べたように０となるので、問題は無い。
【００５６】
（Ｆ）複数の列の加算
ｘi＝ｘi＋ｘ(i+1 mod 5)＋ｘ(i+2 mod 5)｜ｉ＝｛１，２，３，４，５｝
【００５７】
模式的に示せば、図１１のように表される。図１１の例では右隣の列と２つ右隣の列との加算により、当該列の新たな成分が計算される。なお、２つ右隣がない４列目については２つ右隣の列の代わりに１列目の成分が加算される。同様に、右隣がない５列目については１列目及び２列目の成分が加算される。
【００５８】
説明を省略しているが、補助行列Ａについても同様の演算を行う。
【００５９】
これ以外にも上記の主旨に従った演算式をサイクリックに適用すれば、マスク行列Ｍ＋補助行列Ａがゼロサム行列となる。
【００６０】
次に、図１２及び図１３を用いて、本実施の形態に係るシステムの動作内容について説明する。
【００６１】
なお、既にマスク行列Ｍ１は情報提供者装置５ａに配布済みであり、マスク行列Ｍ２は情報提供者装置５ｂに配布済みであり、マスク行列Ｍ３は情報提供者装置５ｃに配布済みであり、補助行列Ａもユーザサーバ９に配布済みであるものとする。
【００６２】
また、例えば上で述べた（Ａ）乃至（Ｆ）の演算式については、情報提供者装置５ａ乃至５ｃ及びユーザサーバ９に通知されているものとする。
【００６３】
そして、適切なタイミングで、マスタサーバ３は、ここでは演算式の識別子を含む更新指示を各情報提供者装置５ａ乃至５ｃへ送信する（図１２：ステップＳ１）。各情報提供者装置５ａ乃至５ｃの制御部５１は、マスタサーバ３から、演算式の識別子を含む更新指示を受信する（ステップＳ３）。そうすると、情報提供者装置５ａ乃至５ｃは、マスク行列の更新処理を実行する（ステップＳ５）。マスク行列の更新処理については、図１３を用いて説明する。
【００６４】
制御部５１が、変更処理部５２に対して、演算式の識別子を含む、マスク行列の変更指示を行うと、変更処理部５２は、演算式の識別子により、更新のための演算式を特定する（図１３：ステップＳ３１）。また、変更処理部５２は、カウンタｉを１に初期化する（ステップＳ３３）。そして、変更処理部５２は、特定された更新のための演算式に従って、データ格納部５３に格納されているマスク行列におけるｉ行又は列目の新たな値を生成し、データ格納部５３に格納する（ステップＳ３５）。演算式については、例えば上で述べた（Ａ）乃至（Ｆ）のいずれかである。そして、変更処理部５２は、カウンタｉの値が、行又は列の最大値Ｎ以上であるか判断する（ステップＳ３７）。ｉがＮ未満であれば、変更処理部５２は、ｉを１インクリメントし（ステップＳ３９）、処理はステップＳ３５に戻る。
【００６５】
このような処理を実行することで、新たなマスク行列Ｍ１が得られるようになる。
【００６６】
図１２の処理の説明に戻って、変更処理部５２は処理が終了すると制御部５１に対して処理終了を通知する。その後、適切なタイミングで、制御部５１は、マスク処理部５５に処理を指示する。そうすると、マスク処理部５５は、制御部５１から処理の指示を受けると、マスク化処理を実行し、マスク化データ格納部５６に処理結果を格納する（ステップＳ７）。すなわち、マスク行列Ｍ１と行列Ｄ１との和を算出することで、マスク化行列ＭＤ１が得られる。
【００６７】
その後、マスク処理部５５は、処理終了を制御部５１に通知し、制御部５１は、送信部５７に処理を指示する。そうすると、送信部５７は、マスク化データ格納部５６に格納されているマスク化行列ＭＤ１を、集計者サーバ７に送信する（ステップＳ９）。
【００６８】
この他の情報提供者装置５ｂ及び５ｃについても、同様の処理を実行する。
【００６９】
集計者サーバ７は、情報提供者装置５ａ乃至５ｃから、マスク化行列ＭＤ１乃至ＭＤ３を受信し、データ格納部に格納する（ステップＳ１１）。そして、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計であるマスク化行列ＭＤを算出し、データ格納部に格納する（ステップＳ１３）。
【００７０】
一方、マスタサーバ３は、演算式の識別子を含む更新指示をユーザサーバ９へも送信する（ステップＳ１）。ユーザサーバ９の制御部９２は、演算式の識別子を含む更新指示を受信し（ステップＳ１７）、変更処理部９３に処理を指示する。変更処理部９３は、データ格納部９４に格納されている補助行列Ａの更新処理を実行する（ステップＳ１９）。この更新処理は、図１３で示した更新処理と同様であり、詳細な説明は省略する。これによって、補助行列Ａもマスク行列Ｍ１乃至Ｍ３と同様に更新される。
【００７１】
その後、ユーザサーバ９の制御部９２は、自動的に又はユーザからの指示などに応じて集計者サーバ７へマスク化行列ＭＤの要求を送信する。但し、要求を送信せずとも、集計者サーバ７側で自動的にマスク化行列ＭＤを送信してくる場合もある。
【００７２】
自動的に又はユーザサーバ９からの要求に応じて、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤをユーザサーバ９へ送信する（ステップＳ１５）。ユーザサーバ９の制御部９２は、集計者サーバ７からマスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤを受信すると（ステップＳ２１）、集計処理部９５に出力する。
【００７３】
集計処理部９５は、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤと、更新後の補助行列Ａとを加算して、集計行列ＴＤを生成し、集計データ格納部９６に格納する（ステップＳ２３）。これによって図２を用いて説明された演算結果と同様の結果を得ることができるようになる。
【００７４】
さらに、集計処理部９５は、集計行列ＴＤの各行及び各列について成分を合計するという集計処理を実行し、集計結果を集計データ格納部９６に格納する（ステップＳ２５）。そして、集計処理部９５は、処理終了を制御部９２に通知する。制御部９２は、例えばユーザサーバ９に接続された他のコンピュータからの要求等に応じて、データ出力部９７に出力を指示し、データ出力部９７は、集計データ格納部９６に格納されている集計結果を出力する（ステップＳ２７）。
【００７５】
以上のような処理を実行することで、マスタサーバ３からの指示に応じてマスク行列Ｍ１乃至Ｍ３と補助行列Ａとが更新されると共に行列Ｄ１乃至Ｄ３の集計結果が算出される。
【００７６】
［実施の形態１の第１の変形例］
上で述べた例では、マスタサーバ３は、演算式の識別子を含む更新指示を送信するものであったが、これは各情報提供者装置５ａ乃至５ｃ及びユーザサーバ９が、使用すべき演算式を予め保持していることを前提としている。一方、各情報提供者装置５ａ乃至５ｃ及びユーザサーバ９に、マスタサーバ３が、演算式を含む更新指示を送信するようにしても良い。
【００７７】
［実施の形態１の第２の変形例］
マスタサーバ３の関与を少なくすることもできる。例えば、図１４に示すように、情報提供者装置５の制御部５１が、情報提供者装置５の時計により予め定められている時刻や例えばステップＳ３の直後といったようなイベントを検出する（ステップＳ４１）。
【００７８】
そして、制御部５１は、変更処理部５２に対して処理を指示し、変更処理部５２は、マスク行列の更新処理を実行する（ステップＳ４３）。この更新処理については、第１の実施の形態と同様である。但し、演算式については、ラウンドロビンなど予め定められている順番で、予め定められている演算式を順番に選択して更新を行う。
【００７９】
図１４と同様の処理にて、ユーザサーバ９においても、補助行列の更新を行うようにする。
【００８０】
このようにすれば、マスタサーバ３は、一度マスク行列及び補助行列を配布してしまい、複数の演算式を定めておけば、その後の関与がなくても適切な更新が行われるようになる。
【００８１】
なお、マスタサーバ３が一部関与するようなやり方も考えられる。例えば、更新指示に所定回数分の演算式の選択順番を含めるようにして、情報提供者装置５ａ乃至５ｃ及びユーザサーバ９が、所定回数分の更新時期においては、マスタサーバ３から指示された順番で演算式を選択するようにしても良い。
【００８２】
［実施の形態１の第３の変形例］
上で述べた例では、補助行列が存在するケースについての処理を説明した。但し、マスク行列Ｍ１乃至Ｍ３を適切に生成すれば、マスク行列Ｍ１乃至Ｍ３の加算結果であるマスク行列Ｍ自体が、ゼロサム行列となる。このような場合でも補助行列Ａが無くなっただけで上で述べたようなマスク行列Ｍ１乃至Ｍ３の性質は変わらない。
【００８３】
このようなマスク行列Ｍ１乃至Ｍ３を採用する場合には、ユーザサーバ９は、補助行列の更新を行うことはなく、アンマスク処理も行わない。
【００８４】
例えば、図１２に示した処理フローは図１５に示すような処理フローに変更される。
【００８５】
なお、既にマスク行列Ｍ１は情報提供者装置５ａに配布済みであり、マスク行列Ｍ２は情報提供者装置５ｂに配布済みであり、マスク行列Ｍ３は情報提供者装置５ｃに配布済みであるものとする。
【００８６】
また、例えば上で述べた（Ａ）乃至（Ｆ）の演算式については、情報提供者装置５ａに通知されているものとする。
【００８７】
そして、適切なタイミングで、マスタサーバ３は、ここでは演算式の識別子を含む更新指示を各情報提供者装置５ａ乃至５ｃへ送信する（図１５：ステップＳ５１）。各情報提供者装置５ａ乃至５ｃの制御部５１は、マスタサーバ３から、演算式の識別子を含む更新指示を受信する（ステップＳ５３）。そうすると、情報提供者装置５ａ乃至５ｃは、マスク行列の更新処理を実行する（ステップＳ５５）。マスク行列の更新処理については、上で述べたものと同じであるから、説明は省略する。
【００８８】
新たなマスク行列Ｍ１が得られた後、適切なタイミングで、制御部５１は、マスク処理部５５に処理を指示する。そうすると、マスク処理部５５は、制御部５１から処理の指示を受けると、マスク化処理を実行し、マスク化データ格納部５６に処理結果を格納する（ステップＳ５７）。すなわち、マスク行列Ｍ１と行列Ｄ１との和を算出することで、マスク化行列ＭＤ１が得られる。
【００８９】
その後、マスク処理部５５は、処理終了を制御部５１に通知し、制御部５１は、送信部５７に処理を指示する。そうすると、送信部５７は、マスク化データ格納部５６に格納されているマスク化行列ＭＤ１を、集計者サーバ７に送信する（ステップＳ５９）。
【００９０】
この他の情報提供者装置５ｂ及び５ｃについても、同様の処理を実行する。
【００９１】
集計者サーバ７は、情報提供者装置５ａ乃至５ｃから、マスク化行列ＭＤ１乃至ＭＤ３を受信し、データ格納部に格納する（ステップＳ６１）。そして、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計であるマスク化行列ＭＤを算出し、データ格納部に格納する（ステップＳ６３）。ここまでは、図１２と同じである。
【００９２】
しかし、本実施の形態では、集計者サーバ７が、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤ（＝集計行列ＴＤ）の各行及び各列について成分を合計するという集計処理を実行し（ステップＳ６７）、集計結果をデータ格納部に格納する。
【００９３】
その後、ユーザサーバ９からの要求に応じて又は自動的に、集計者サーバ７は、集計結果を、ユーザサーバ９に送信する（ステップＳ６９）。これに対して、ユーザサーバ９は、集計者サーバ７から集計結果を受信して、例えば集計データ格納部９６に格納する（ステップＳ７１）。
【００９４】
このように、マスク行列Ｍ１乃至Ｍ３の加算結果であるマスク行列Ｍ自体がゼロサム行列であれば、補助行列についての処理を省略することができる。
【００９５】
なお、マスク化行列ＭＤを、集計者サーバ７からユーザサーバ９に送信して、ユーザサーバ９が、集計処理から実行するようにしてもよい。
【００９６】
さらに、マスク行列Ｍ１乃至Ｍ３自体がゼロサム行列である場合もある。
【００９７】
また、情報提供者が多数存在している場合には、例えば情報提供者のグループ毎に、そのグループに属する情報提供者用のマスク行列の加算結果がゼロサム行列となるように変形することも可能である。
【００９８】
［実施の形態２］
第１の実施の形態では、商品別月別売上高についての行列のサイズ自体は変更がない例を示している。しかしながら、新しい商品が追加されたといった場合には、行列のサイズを変更することになる。
【００９９】
マスク行列及び補助行列の性質は上で述べたとおりであるから、行又は列を追加する場合には、特定の行又は列ベクトルの線形従属な行又は列ベクトルを生成すればよい。例えば、図１６（ａ）に示すような３行３列の行列を３行４列の行列に拡張する場合には、図１６（ｂ）に示すように、右から１列目及び２列目のベクトルを加算して４列目に採用する。但し、図１６（ｃ）に示すように行方向の成分の総和については追加した１列分だけ総和が増加してしまう。そこで、補助行列に追加する列については、同様の演算を行った上で、図１６（ｄ）に示すように、符号を反転させた列ベクトルを、拡張された列のベクトルに加算することにする。
【０１００】
本実施の形態では、マスタサーバ３ｂは、例えば図１７に示すような構成を有する。マスタサーバ３ｂは、制御部３１と、データ格納部３２と、行列拡張部３３と、調整部３４とを有する。
【０１０１】
制御部３１は、マスク行列Ｍの拡張及び調整ベクトルの生成を制御する。データ格納部３２は、マスク行列Ｍと補助行列Ａとが格納されている。行列拡張部３３は、所定の演算式に従ってマスク行列Ｍを拡張する処理を実行する。調整部３４は、調整ベクトルを生成する処理を実行する。
【０１０２】
情報提供者装置５ａ乃至５ｃとユーザサーバ９と集計者サーバ７とについては、異なる処理を行う部分もあるが基本的な構成は第１の実施の形態と同様である。
【０１０３】
次に、マスク行列及び補助行列の拡張を行う場合におけるシステムの処理内容を図１８に示す。
【０１０４】
なお、既にマスク行列Ｍ１は情報提供者装置５ａに配布済みであり、マスク行列Ｍ２は情報提供者装置５ｂに配布済みであり、マスク行列Ｍ３は情報提供者装置５ｃに配布済みであり、補助行列Ａもユーザサーバ９に配布済みであるものとする。
【０１０５】
また、例えば予め定められている複数の演算式については、情報提供者装置５ａ乃至５ｃ及びユーザサーバ９に通知されているものとする。
【０１０６】
そして、適切なタイミングで、マスタサーバ３ｂは、ここでは演算式の識別子を含む拡張指示を各情報提供者装置５ａ乃至５ｃへ送信する（図１８：ステップＳ８１）。各情報提供者装置５ａ乃至５ｃの制御部５１は、マスタサーバ３ｂから、演算式の識別子を含む拡張指示を受信する（ステップＳ８７）。そうすると、情報提供者装置５ａ乃至５ｃは、マスク行列の拡張処理を実行する（ステップＳ８９）。マスク行列の拡張処理については、図１９を用いて説明する。
【０１０７】
制御部５１が、変更処理部５２に対して、演算式の識別子を含む、マスク行列の拡張指示を行うと、変更処理部５２は、演算式の識別子により、拡張のための演算式を特定する（図１９：ステップＳ１２１）。また、変更処理部５２は、特定された拡張のための演算式に従って、データ格納部５３に格納されているマスク行列における追加される行又は列の新たな値（ベクトル）を生成し、データ格納部５３に格納する（ステップＳ１２３）。このような行又は列が付加された新たなマスク行列が生成される。拡張のための演算式については、基本的には、上で述べた（Ａ）乃至（Ｆ）と同様であるが、サイクリックではないので、以下のようになる。なお、マスク行列はｎ行ｍ列の行列であるものとする。
【０１０８】
（Ａ）特定の列の加算
ｘm+1＝ｘi＋ｘj｜ｉ，ｊ＝｛１，２，３，４，５｝
【０１０９】
ｉ＝１且つｊ＝２であれば、図２０に模式的に示すような演算で、列が追加される。
【０１１０】
（Ｂ）特定の行の加算
ｙn+1＝ｙi＋ｙj｜ｉ、ｊ＝｛１，２，３，４，５｝
【０１１１】
（Ｃ）特定の列の減算
ｘm+1＝ｘi−ｘj｜ｉ，ｊ＝｛１，２，３，４，５｝ｉ≠ｊ
【０１１２】
（Ｄ）第１の列と第２の列の２倍を加算
ｘm+1＝ｘi＋２ｘj｜ｉ，ｊ＝｛１，２，３，４，５｝
【０１１３】
（Ｅ）複数の列の加算
ｘm+1＝ｘi＋ｘj＋ｘk｜ｉ，ｊ，ｋ＝｛１，２，３，４，５｝
【０１１４】
このような処理を実行することで、行又は列が追加された新たなマスク行列Ｍ１が得られるようになる。
【０１１５】
図１８の処理の説明に戻って、変更処理部５２は処理が終了すると制御部５１に対して処理終了を通知する。その後、適切なタイミングで、制御部５１は、マスク処理部５５に処理を指示する。そうすると、マスク処理部５５は、制御部５１から処理の指示を受けると、マスク化処理を実行し、マスク化データ格納部５６に格納する（ステップＳ９１）。すなわち、マスク行列Ｍ１と行列Ｄ１との和を算出することで、マスク化行列ＭＤ１が得られる。
【０１１６】
その後、マスク処理部５５は、処理終了を制御部５１に通知し、制御部５１は、送信部５７に処理を指示する。そうすると、送信部５７は、マスク化データ格納部５６に格納されているマスク化行列ＭＤ１を、集計者サーバ７に送信する（ステップＳ９３）。
【０１１７】
この他の情報提供者装置５ｂ及び５ｃについても、同様の処理を実行する。
【０１１８】
集計者サーバ７は、情報提供者装置５ａ乃至５ｃから、マスク化行列ＭＤ１乃至ＭＤ３を受信し、データ格納部に格納する（ステップＳ９５）。そして、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計であるマスク化行列ＭＤを算出し、データ格納部に格納する（ステップＳ９７）。
【０１１９】
一方、マスタサーバ３の制御部３１は、行列拡張部３３に、データ格納部３２に格納されているマスク行列Ｍに対して今回の拡張のための演算式に従ってマスク行列Ｍを拡張させてデータ格納部３２に格納させ、調整部３４に、拡張されたのが行であれば列方向の成分の総和をゼロにするための調整ベクトル、拡張されたのが列であれば行方向の成分の総和をゼロにするための調整ベクトル（行又は列の総和を表すベクトルの符号を反転させたベクトル）を生成させ、データ格納部３２に格納させる（ステップＳ８３）。そして、制御部３１は、調整部３４によって生成された調整ベクトルを、データ格納部３２から読み出して、当該調整ベクトル及び拡張のための演算式の識別子を含む拡張指示を、ユーザサーバ９へ送信する（ステップＳ８５）。
【０１２０】
ユーザサーバ９の制御部９２は、調整ベクトル及び演算式の識別子を含む拡張指示を受信し（ステップＳ１０１）、変更処理部９３に処理を指示する。変更処理部９３は、データ格納部９４に格納されている補助行列Ａに対して補助行列拡張処理を実行する（ステップＳ１０３）。補助行列拡張処理については、図２１を用いて説明する。
【０１２１】
制御部９２が、変更処理部９３に対して、調整ベクトル及び演算式の識別子を含む、マスク行列の拡張指示を行うと、変更処理部９３は、演算式の識別子により、拡張のための演算式を特定する（図２１：ステップＳ１３１）。また、変更処理部９３は、特定された拡張のための演算式に従って、データ格納部９４に格納されている補助行列における追加される行又は列の新たな値（ベクトル）を生成する（ステップＳ１３３）。さらに、変更処理部９３は、追加される行又は列の新たな値（ベクトル）と調整ベクトルとを加算し、その結果をデータ格納部９４に格納する（ステップＳ１３５）。このようにして得られた結果を補助行列Ａに付加することで新たな補助行列Ａが生成される。
【０１２２】
これによって、拡張された補助行列Ａを用いても、集計行列ＴＤを生成できるようになる。
【０１２３】
その後、ユーザサーバ９の制御部９２は、自動的に又はユーザからの指示などに応じて集計者サーバ７へマスク化行列ＭＤの要求を送信する。但し、要求を送信せずとも、集計者サーバ７側で自動的にマスク化行列ＭＤを送信してくる場合もある。
【０１２４】
自動的に又はユーザサーバ９からの要求に応じて、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤをユーザサーバ９へ送信する（ステップＳ９９）。ユーザサーバ９の制御部９２は、集計者サーバ７からマスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤを受信すると（ステップＳ１０５）、集計処理部９５に出力する。
【０１２５】
集計処理部９５は、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤと、拡張後の補助行列Ａとを加算して、集計行列ＴＤを生成し、集計データ格納部９６に格納する（ステップＳ１０７）。
【０１２６】
さらに、集計処理部９５は、集計行列ＴＤの各行及び各列について成分を合計するという集計処理を実行し、集計結果を集計データ格納部９６に格納する（ステップＳ１０９）。そして、集計処理部９５は、処理終了を制御部９２に通知する。制御部９２は、例えばユーザサーバ９に接続された他のコンピュータからの要求等に応じて、データ出力部９７に指示し、データ出力部９７は、集計データ格納部９６に格納されている集計結果を出力する（ステップＳ１１１）。
【０１２７】
以上のような処理を実行することで、マスタサーバ３ｂからの指示に応じてマスク行列Ｍ１乃至Ｍ３と補助行列Ａとが拡張され、適切な集計行列ＴＤが得られるようになる。
【０１２８】
［実施の形態２の第１の変形例］
上で述べた例では、マスタサーバ３ｂは、演算式の識別子を含む拡張指示を送信するものであったが、これは各情報提供者装置５ａ乃至５ｃ及びユーザサーバ９が、使用すべき演算式を予め保持していることを前提としている。一方、各情報提供者装置５ａ乃至５ｃ及びユーザサーバ９が、演算式を保持していない場合には、マスタサーバ３ｂが、演算式を含む拡張指示を送信すればよい。
【０１２９】
［実施の形態２の第２の変形例］
マスタサーバ３ｂの関与を少なくすることもできる。
【０１３０】
第１の実施の形態の第２の変形例と同様に、情報提供者装置５の制御部５１が、情報提供者装置５の時計により予め定められている時刻や例えばステップＳ８７の直後といったようなイベントを検出すると、変更処理部５２が、図１９のような処理を実行するようにしても良い。
【０１３１】
但し、ユーザサーバ９における補助行列Ａの拡張処理については簡略化できないので、図１８のとおりに行うことになる。
【０１３２】
［実施の形態２の第３の変形例］
上で述べた例では、拡張された行又は列の分の調整をマスク行列Ｍ１乃至Ｍ３内部で行っていない。従って、補助行列Ａについては別途調整ベクトルで調整することになっていた。
【０１３３】
しかしながら、例えば、図２２に模式的に示すように、ｘm+1＝ｘ1＋ｘ2、ｘm＝ｘm−ｘ1−ｘ2といったような演算式を採用する場合には、マスク行列内で拡張された列の分を相殺できるようになっている。
【０１３４】
このように、追加する行又は列については、特定の行又は列ベクトルの線形従属のベクトルとして生成し、特定の行又は列及び追加された行又は列以外の行又は列において当該線形従属のベクトルを当該行又は列のベクトルから差し引いておくことで、調整できる。
【０１３５】
このような場合には、補助行列Ａについても、同様の演算式を適用すれば、調整ベクトルなしに、Ｍ＋Ａがゼロサム行列となる。
【０１３６】
このような場合には、例えば図２３に示すような処理を実行することになる。
【０１３７】
なお、既にマスク行列Ｍ１は情報提供者装置５ａに配布済みであり、マスク行列Ｍ２は情報提供者装置５ｂに配布済みであり、マスク行列Ｍ３は情報提供者装置５ｃに配布済みであり、補助行列Ａもユーザサーバ９に配布済みであるものとする。
【０１３８】
また、例えば予め定められている複数の演算式については、情報提供者装置５ａ乃至５ｃ及びユーザサーバ９に通知されているものとする。
【０１３９】
そして、適切なタイミングで、マスタサーバ３ｂは、ここでは演算式の識別子を含む拡張指示を各情報提供者装置５ａ乃至５ｃへ送信する（図２３：ステップＳ１４１）。各情報提供者装置５ａ乃至５ｃの制御部５１は、マスタサーバ３ｂから、演算式の識別子を含む拡張指示を受信する（ステップＳ１４３）。そうすると、情報提供者装置５ａ乃至５ｃは、マスク行列の拡張処理を実行する（ステップＳ１４５）。マスク行列の拡張処理については、図１９を用いて説明した処理フローと同じであるから、ここでは説明を省略する。
【０１４０】
これによって、行又は列が追加された新たなマスク行列Ｍ１が得られるようになる。
【０１４１】
そして、変更処理部５２は処理が終了すると制御部５１に対して処理終了を通知する。その後、適切なタイミングで、制御部５１は、マスク処理部５５に処理を指示する。そうすると、マスク処理部５５は、制御部５１から処理の指示を受けると、マスク化処理を実行し、マスク化データ格納部５６に格納する（ステップＳ１４７）。すなわち、マスク行列Ｍ１と行列Ｄ１との和を算出することで、マスク化行列ＭＤ１が得られる。
【０１４２】
その後、マスク処理部５５は、処理終了を制御部５１に通知し、制御部５１は、送信部５７に処理を指示する。そうすると、送信部５７は、マスク化データ格納部５６に格納されているマスク化行列ＭＤ１を、集計者サーバ７に送信する（ステップＳ１４９）。
【０１４３】
この他の情報提供者装置５ｂ及び５ｃについても、同様の処理を実行する。
【０１４４】
集計者サーバ７は、情報提供者装置５ａ乃至５ｃから、マスク化行列ＭＤ１乃至ＭＤ３を受信し、データ格納部に格納する（ステップＳ１５１）。そして、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計であるマスク化行列ＭＤを算出し、データ格納部に格納する（ステップＳ１５３）。
【０１４５】
また、マスタサーバ３ｂの制御部３１は、拡張のための演算式の識別子を含む拡張指示を、ユーザサーバ９へ送信する（ステップＳ１４１）。
【０１４６】
ユーザサーバ９の制御部９２は、調整ベクトル及び演算式の識別子を含む拡張指示を受信し（ステップＳ１５７）、変更処理部９３に処理を指示する。変更処理部９３は、データ格納部９４に格納されている補助行列Ａに対して拡張処理を実行する（ステップＳ１５９）。補助行列の拡張処理については、本実施の形態では図２１を用いて説明したものと同じである。
【０１４７】
その後、ユーザサーバ９の制御部９２は、自動的に又はユーザからの指示などに応じて集計者サーバ７へマスク化行列ＭＤの要求を送信する。但し、要求を送信せずとも、集計者サーバ７側で自動的にマスク化行列ＭＤを送信してくる場合もある。
【０１４８】
自動的に又はユーザサーバ９からの要求に応じて、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤをユーザサーバ９へ送信する（ステップＳ１５５）。ユーザサーバ９の制御部９２は、集計者サーバ７からマスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤを受信すると（ステップＳ１６１）、集計処理部９５に出力する。
【０１４９】
集計処理部９５は、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤと、拡張後の補助行列Ａとを加算して、集計行列ＴＤを生成し、集計データ格納部９６に格納する（ステップＳ１６３）。
【０１５０】
さらに、集計処理部９５は、集計行列ＴＤの各行及び各列について成分を合計するという集計処理を実行し、集計結果を集計データ格納部９６に格納する（ステップＳ１６５）。そして、集計処理部９５は、処理終了を制御部９２に通知する。制御部９２は、例えばユーザサーバ９に接続された他のコンピュータからの要求等に応じて、データ出力部９７に指示し、データ出力部９７は、集計データ格納部９６に格納されている集計結果を出力する（ステップＳ１６７）。
【０１５１】
以上のような演算式を採用することで、マスタサーバ３ｂからの指示に応じてマスク行列Ｍ１乃至Ｍ３と補助行列Ａとが拡張され、適切な集計行列ＴＤが得られるようになる。
【０１５２】
［実施の形態２の第４の変形例］
上で述べた例では、補助行列が存在するケースについての処理を説明した。但し、マスク行列Ｍ１乃至Ｍ３を適切に生成すれば、マスク行列Ｍ１乃至Ｍ３の加算結果であるマスク行列Ｍ自体が、ゼロサム行列となる。このような場合でも補助行列Ａが無くなっただけで上で述べたようなマスク行列Ｍ１乃至Ｍ３の性質は変わらない。
【０１５３】
従って、第２の実施の形態における第３の変形例のような演算式を採用すれば、情報提供者装置５ａ乃至５ｃにおいて、マスク行列Ｍ１乃至Ｍ３の拡張を行うだけで良くなる。
【０１５４】
また、このようなマスク行列Ｍ１乃至Ｍ３を採用する場合には、ユーザサーバ９は、補助行列の更新を行うことはなく、アンマスク処理も行わない。
【０１５５】
例えば、図１８に示した処理フローは図２４に示すような処理フローに変更される。
【０１５６】
なお、既にマスク行列Ｍ１は情報提供者装置５ａに配布済みであり、マスク行列Ｍ２は情報提供者装置５ｂに配布済みであり、マスク行列Ｍ３は情報提供者装置５ｃに配布済みであるものとする。
【０１５７】
また、例えば第３の変形例に従った複数の拡張のための演算式については、情報提供者装置５ａに通知されているものとする。
【０１５８】
そして、適切なタイミングで、マスタサーバ３ｂは、ここでは演算式の識別子を含む拡張指示を各情報提供者装置５ａ乃至５ｃへ送信する（図２４：ステップＳ１７１）。各情報提供者装置５ａ乃至５ｃの制御部５１は、マスタサーバ３ｂから、演算式の識別子を含む拡張指示を受信する（ステップＳ１７３）。そうすると、情報提供者装置５ａ乃至５ｃは、マスク行列の拡張処理を実行する（ステップＳ１７５）。マスク行列の拡張処理については、上で述べたものと同じであるから、説明は省略する。
【０１５９】
新たなマスク行列Ｍ１が得られた後、適切なタイミングで、制御部５１は、マスク処理部５５に処理を指示する。そうすると、マスク処理部５５は、制御部５１から処理の指示を受けると、マスク化処理を実行し、マスク化データ格納部５６に格納する（ステップＳ１７７）。すなわち、マスク行列Ｍ１と行列Ｄ１との和を算出することで、マスク化行列ＭＤ１が得られる。
【０１６０】
その後、マスク処理部５５は、処理終了を制御部５１に通知し、制御部５１は、送信部５７に処理を指示する。そうすると、送信部５７は、マスク化データ格納部５６に格納されているマスク化行列ＭＤ１を、集計者サーバ７に送信する（ステップＳ１７９）。
【０１６１】
この他の情報提供者装置５ｂ及び５ｃについても、同様の処理を実行する。
【０１６２】
集計者サーバ７は、情報提供者装置５ａ乃至５ｃから、マスク化行列ＭＤ１乃至ＭＤ３を受信し、データ格納部に格納する（ステップＳ１８１）。そして、集計者サーバ７は、マスク化行列ＭＤ１乃至ＭＤ３の合計であるマスク化行列ＭＤを算出し、データ格納部に格納する（ステップＳ１８３）。ここまでは、図１８と同じである。
【０１６３】
しかし、本実施の形態では、集計者サーバ７が、マスク化行列ＭＤ１乃至ＭＤ３の合計結果であるマスク化行列ＭＤ（＝集計行列ＴＤ）の各行及び各列について成分を合計するという集計処理を実行し（ステップＳ１８５）、集計結果をデータ格納部に格納する。
【０１６４】
その後、ユーザサーバ９からの要求に応じて又は自動的に、集計者サーバ７は、集計結果を、ユーザサーバ９に送信する（ステップＳ１８７）。これに対して、ユーザサーバ９は、集計者サーバ７から集計結果を受信して、例えば集計データ格納部９６に格納する（ステップＳ１８９）。
【０１６５】
このように、マスク行列Ｍ１乃至Ｍ３の加算結果であるマスク行列Ｍ自体がゼロサム行列であれば、補助行列についての処理を省略することができる。
【０１６６】
なお、マスク化行列ＭＤを、集計者サーバ７からユーザサーバ９に送信して、ユーザサーバ９が、集計処理から実行するようにしてもよい。
【０１６７】
さらに、マスク行列Ｍ１乃至Ｍ３自体がゼロサム行列である場合もある。
【０１６８】
また、情報提供者が多数存在している場合には、例えば情報提供者のグループ毎に、そのグループに属する情報提供者用のマスク行列の加算結果がゼロサム行列となるように変形することも可能である。
【０１６９】
［実施の形態２の第５の変形例］
演算式が第２の実施の形態における第３の変形例のような形でない場合には、第４の変形例では、調整ベクトルをユーザサーバ９に送信して、調整ベクトルが行ベクトルであれば、列方向の集計結果を調整し、調整ベクトルが列ベクトルであれば、行方向の集計結果を調整することになる。
【０１７０】
［実施の形態２の第６の変形例］
拡張した上で更新するというような処理を実行する場合もある。この場合、上で述べた更新処理及び拡張処理を行う場合もあるが、拡張を簡易化して、０ベクトルを行又は列に追加することもある。この場合、（Ｅ）の演算式で更新処理を行えば、問題は発生しない。すなわち、３以上の行又は列で更新する演算式であれば、０ベクトルが演算式で用いられる場合にも問題なく更新される。
【０１７１】
以上様々な実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で述べた変形例の組み合わせなども可能な場合がある。処理フローについても、処理結果が変わらない限りにおいて、処理順番を入れ替えたり、複数のステップを並列に実行する場合もある。
【０１７２】
サーバ等の機能ブロック構成も、一例であって、プログラムモジュール構成とは一致しない場合がある。各サーバ及び装置は、複数のコンピュータで実現される場合もある。
【０１７３】
なお、上で述べたマスタサーバ３及び３ｂ、情報提供者装置５ａ乃至５ｃ、集計者サーバ７及びユーザサーバ９は、コンピュータ装置であって、図２５に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１７４】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１７５】
本実施の形態の第１の態様に係るマスク行列更新方法は、（Ａ）被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出し、（Ｂ）マスク行列の行又は列単位の所定の更新演算式に従った演算を、マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、データ格納部に格納する処理を含む。このようにすれば、更新後のマスク行列を配布せずに済むので、低コストでマスク行列を更新できるようになる。
【０１７６】
また、上で述べた更新タイミングが、時間、他のコンピュータからの指示、又はコンピュータにおいて実施された他の所定の処理の開始又は終了である場合もある。様々な実装方法に対応できる。
【０１７７】
また、上で述べた更新タイミング毎に、上記所定の更新演算式が変更されるようにしても良い。秘匿化のレベルが向上する。
【０１７８】
さらに、上で述べた所定の更新演算式が、他のコンピュータから通知されるか、予め定められている複数の更新演算式から予め定められている順番にて選定される場合もある。更新演算式を切り替えて用いるようにすれば、秘匿化のレベルが向上する。
【０１７９】
さらに、上で述べた所定の更新演算式が、複数の行又は列の和又は差、又は第１の行又は列と第１の係数との第１の積と第２の行又は列と第２の係数との第２の積との和を含むようにしても良い。マスク行列の性質に基づく演算内容である。
【０１８０】
さらに、上で述べた所定の更新演算式が、第１の行又は列と第１の係数との第１の積と第２の行又は列と第２の係数との第２の積と第３の行又は列と第３の係数との第３の積との和である場合もある。マスク行列が０ベクトルを追加することで拡張された場合には、マスク行列における１行又は１列がゼロとなっているが、このような演算式であれば、適切に更新される。
【０１８１】
また、上で述べたマスク行列が、（ａ）複数の第１のマスク行列と補助行列との和により得られる行列における各行及び各列についての成分の総和がゼロとなるという性質を有する複数の第１のマスク行列のうちの１つの第１のマスク行列であるか、（ｂ）複数の第２のマスク行列の総和における各行及び各列についての成分の総和がゼロとなるという性質を有する複数の第２のマスク行列のうちの１つの第２のマスク行列である場合もある。このようなマスク行列の性質は、秘匿集計で有用である。
【０１８２】
さらに、上で述べた補助行列の行又は列単位の所定の更新演算式に従った演算を、補助行列における行又は列方向にサイクリックに行うことで、新たな補助行列を生成する処理をさらに含むようにしても良い。補助行列を用いる場合にも、同様の更新演算式を用いて更新を行えば、補助行列を配布するコストを下げることができる。
【０１８３】
また、本実施の形態の第２の態様に係るマスク行列拡張方法は、（Ｃ）被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出し、（Ｄ）マスク行列の行又は列単位の所定の拡張演算式に従った演算をマスク行列における行又は列方向に行うことでマスク行列の新たな行又は列を生成し、マスク行列に付加することで新たなマスク行列を生成し、データ格納部に格納する処理を含む。このようにすれば、行列の拡張であっても、低コストでマスク行列を拡張できる。
【０１８４】
また、上で述べた所定の拡張演算式が、マスク行列における第１の行又は列と第２の行又は列との和又は差を含むようにしても良い。
【０１８５】
さらに、上で述べた格納する処理が、第１の行又は列と第２の行又は列との和を、マスク行列における第１及び第２の行又は列以外の行又は列から行又は列単位で差し引くようにしても良い。このようにすれば、マスク行列内における調整がなされることになる。
【０１８６】
さらに、上で述べたマスク行列が、（ａ）複数の第１のマスク行列と補助行列との和により得られる行列における各行及び各列についての成分の総和がゼロとなるという性質を有する複数の第１のマスク行列のうちの１つの第１のマスク行列であるか、（ｂ）複数の第２のマスク行列の総和における各行及び各列についての成分の総和がゼロとなるという性質を有する複数の第２のマスク行列のうちの１つの第２のマスク行列であることもある。秘匿集計で有用なマスク行列の性質を表すものである。
【０１８７】
また、補助行列の行又は列単位の所定の拡張演算式に従った演算を補助行列における行又は列方向に行うことで補助行列の新たな行又は列を生成する処理をさらに含むようにしても良い。拡張演算式によっては、これだけでなく調整ベクトルを用いて調整を行うことになる場合もある。
【０１８８】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【０１８９】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１９０】
（付記１）
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出し、
前記マスク行列の行又は列単位の所定の更新演算式に従った演算を、前記マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、前記データ格納部に格納する
処理を含み、コンピュータにより実行されるマスク行列更新方法。
【０１９１】
（付記２）
前記更新タイミングが、時間、他のコンピュータからの指示、又は前記コンピュータにおいて実施された他の所定の処理の開始又は終了である
付記１記載のマスク行列更新方法。
【０１９２】
（付記３）
前記更新タイミング毎に、前記所定の更新演算式が変更される
付記１又は２記載のマスク行列更新方法。
【０１９３】
（付記４）
前記所定の更新演算式が、他のコンピュータから通知されるか、予め定められている複数の更新演算式から予め定められている順番にて選定される
付記１乃至３のいずれか１つ記載のマスク行列更新方法。
【０１９４】
（付記５）
前記所定の更新演算式が、複数の行又は列の和又は差、又は第１の行又は列と第１の係数との第１の積と第２の行又は列と第２の係数との第２の積との和を含む
付記１乃至４のいずれか１つ記載のマスク行列更新方法。
【０１９５】
（付記６）
前記所定の更新演算式が、第１の行又は列と第１の係数との第１の積と第２の行又は列と第２の係数との第２の積と第３の行又は列と第３の係数との第３の積との和である
付記１乃至４のいずれか１つ記載のマスク行列更新方法。
【０１９６】
（付記７）
前記マスク行列が、
複数の第１のマスク行列と補助行列との和により得られる行列における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第１のマスク行列のうちの１つの第１のマスク行列であるか、
複数の第２のマスク行列の総和における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第２のマスク行列のうちの１つの第２のマスク行列である、
付記１乃至６のいずれか１つ記載のマスク行列更新方法。
【０１９７】
（付記８）
前記補助行列の行又は列単位の前記所定の更新演算式に従った演算を、前記補助行列における行又は列方向にサイクリックに行うことで、新たな補助行列を生成する処理
をさらに含む、請求項７記載のマスク行列更新方法。
【０１９８】
（付記９）
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出し、
前記マスク行列の行又は列単位の所定の拡張演算式に従った演算を前記マスク行列における行又は列方向に行うことで前記マスク行列の新たな行又は列を生成し、前記マスク行列に付加することで新たなマスク行列を生成し、前記データ格納部に格納する
処理を含み、コンピュータにより実行されるマスク行列拡張方法。
【０１９９】
（付記１０）
前記所定の拡張演算式が、前記マスク行列における第１の行又は列と第２の行又は列との和又は差を含む
付記９記載のマスク行列拡張方法。
【０２００】
（付記１１）
前記格納する処理が、
前記第１の行又は列と前記第２の行又は列との和を、前記マスク行列における前記第１及び第２の行又は列以外の行又は列から行又は列単位で差し引く
処理を含む付記１０記載のマスク行列拡張方法。
【０２０１】
（付記１２）
前記マスク行列が、
複数の第１のマスク行列と補助行列との和により得られる行列における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第１のマスク行列のうちの１つの第１のマスク行列であるか、
複数の第２のマスク行列の総和における各行及び各列についての成分の総和がゼロとなるという性質を有する前記複数の第２のマスク行列のうちの１つの第２のマスク行列である、
付記９乃至１１のいずれか１つ記載のマスク行列拡張方法。
【０２０２】
（付記１３）
前記補助行列の行又は列単位の前記所定の拡張演算式に従った演算を前記補助行列における行又は列方向に行うことで前記補助行列の新たな行又は列を生成する処理
をさらに含む、付記１２記載のマスク行列拡張方法。
【０２０３】
（付記１４）
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出し、
前記マスク行列の行又は列単位の所定の更新演算式に従った演算を、前記マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、前記データ格納部に格納する
処理を、コンピュータに実行させるためのマスク行列更新プログラム。
【０２０４】
（付記１５）
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出し、
前記マスク行列の行又は列単位の所定の拡張演算式に従った演算を前記マスク行列における行又は列方向に行うことで前記マスク行列の新たな行又は列を生成し、前記マスク行列に付加することで新たなマスク行列を生成し、前記データ格納部に格納する
処理を、コンピュータに実行させるためのマスク行列拡張プログラム。
【０２０５】
（付記１６）
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の更新タイミングを検出する検出部と、
前記マスク行列の行又は列単位の所定の更新演算式に従った演算を、前記マスク行列における行又は列方向にサイクリックに行うことで、新たなマスク行列を生成し、前記データ格納部に格納する生成部と、
を有する情報処理装置。
【０２０６】
（付記１７）
被マスク行列をマスクするための、データ格納部に格納されたマスク行列の拡張タイミングを検出する検出部と、
前記マスク行列の行又は列単位の所定の拡張演算式に従った演算を前記マスク行列における行又は列方向に行うことで前記マスク行列の新たな行又は列を生成し、前記マスク行列に付加することで新たなマスク行列を生成し、前記データ格納部に格納する生成部と、
を有する情報処理装置。
【符号の説明】
【０２０７】
１  ネットワーク
３  マスタサーバ
５  情報提供者装置
７  集計者サーバ
９  ユーザサーバ
【図１】
2014134732.tif 000011
【図２】
2014134732.tif 000012
【図３】
2014134732.tif 000013
【図４】
2014134732.tif 000014
【図５】
2014134732.tif 000015
【図６】
2014134732.tif 000016
【図７】
2014134732.tif 000017
【図８】
2014134732.tif 000018
【図９】
2014134732.tif 000019
【図１０】
2014134732.tif 000020
【図１１】
2014134732.tif 000021
【図１２】
2014134732.tif 000022
【図１３】
2014134732.tif 000023
【図１４】
2014134732.tif 000024
【図１５】
2014134732.tif 000025
【図１６】
2014134732.tif 000026
【図１７】
2014134732.tif 000027
【図１８】
2014134732.tif 000028
【図１９】
2014134732.tif 000029
【図２０】
2014134732.tif 000030
【図２１】
2014134732.tif 000031
【図２２】
2014134732.tif 000032
【図２３】
2014134732.tif 000033
【図２４】
2014134732.tif 000034
【図２５】
2014134732.tif 000035