(57)【要約】  特許文献１に記載された技術により、データ委託先のサーバ内でデータ分析を行う場合、サーバ内で個々の暗号文を復号する必要が生じる。すなわち、サーバ内で基本統計量を算出する場合には、サーバ側に個々のデータの平文が開示されてしまうという課題がある。  本発明の鍵生成装置は、個々の平文データを暗号化する際に用いた鍵である乱数の総和を、暗号文データの総和を復号するための鍵としてサーバに送信し、その鍵を用いて暗号文データの総和を復号する。
2017149686.tif 000002
【特許請求の範囲】
【請求項１】
疑似乱数である暗号化鍵を複数生成し、生成された複数の疑似乱数の総和である集約値復号鍵を生成し、前記複数の暗号化鍵と、前記集約値復号鍵と、を外部に送信する、鍵生成装置。
【請求項２】
請求項１に記載の鍵生成装置と、管理サーバと、を備える計算機システムにおいて、
前記鍵生成装置は、前記複数の暗号化鍵をクライアント端末に送信し、前記集約値復号鍵を前記管理サーバに送信し、
前記管理サーバは、前記複数の暗号化鍵を用いて暗号化された複数のデータを前記クライアント端末から受信し、当該暗号化された複数のデータの総和を算出し、当該総和の値を、前記集約値復号鍵を用いて復号し、平文の値を得る、ことを特徴とする計算機システム。
【請求項３】
請求項１に記載の鍵生成装置と、クライアント端末と、を備える計算機システムにおいて、
前記鍵生成装置は、前記複数の暗号化鍵と、前記集約値復号鍵と、を前記クライアント端末に送信し、
前記クライアント端末は、受信した複数の暗号化鍵を用いて複数のデータを暗号化し、当該暗号化された複数のデータを管理サーバに送信し、当該暗号化された複数のデータの総和の値を前記管理サーバから受信し、受信した総和の値を前記集約値復号鍵を用いて復号し、平文の値を得る、ことを特徴とする計算機システム。
【請求項４】
請求項２に記載の計算機システムにおいて、
前記管理サーバは、前記平文の値をデータ数で除し、前記複数のデータの平均値を得る、ことを特徴とする計算機システム。
【請求項５】
請求項３に記載の計算機システムにおいて、
前記クライアント端末は、前記平文の値をデータ数で除し、前記複数のデータの平均値を得る、ことを特徴とする計算機システム。
【請求項６】
第１のＣＰＵが、疑似乱数である暗号化鍵を複数生成し、生成された複数の疑似乱数の総和である集約値復号鍵を生成し、
第２のＣＰＵが、前記複数の暗号化鍵を用いて暗号化された複数のデータの総和を算出し、当該総和の値を、前記集約値復号鍵を用いて復号する、ことを特徴とする暗号化統計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機環境における暗号データの統計処理に関する。
【背景技術】
【０００２】
情報システムの開発・運用管理費の効率化を目的として、自組織の情報システムを利用したデータ処理だけでなく、他組織が提供するクラウド上のサーバでデータ処理を行うことが一般化しつつある。クラウドを利用する場合、自組織のデータを他組織が管理するサーバに預けることとなる。そのため、情報漏洩の予防を目的とし、暗号技術の活用が注目されている。【０００３】
データの管理を他組織のサーバに委託しながら情報漏洩を防ぐ技術として、演算を可能とする準同型暗号を活用した発明が知られている。例えば特許文献１には、暗号文の加算や乗算を計算可能とする準同型暗号を利用し、集計等の特定の処理をデータ預託先のサーバに委託する方式が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許番号 第５６７９０１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
クラウド上のサーバにデータ分析を依頼したいという需要がある。データ分析は、データの類似性や傾向等を探る作業であり、その演算には、平均や分散等の基本統計量を必要とする。しかしながら、情報漏洩の予防を目的に、クラウドが復号できないよう、個々のデータを暗号化してしまうと、基本統計量の計算が困難になる、という課題がある。これは、暗号文の除算の困難性にある。そのため、従来は、除算を必要とする平均や分散等の基本統計量を求める際には、暗号文を復号して平文を得る必要があった。【０００６】
例えば、特許文献１に記載された技術を用いてデータ預託先のサーバ内でデータ分析を行う場合、サーバからクライアントに暗号文を戻し、クライアントが暗号文を復号し、除算を処理した上で、再暗号化し、再びサーバに暗号文を渡す必要がある。すなわち、データ預託先のサーバ内で基本統計量を算出しようとすると、処理が煩雑になり、計算リソースの高負荷を招くという課題があった。
【課題を解決するための手段】
【０００７】
上述の課題を解決するために、本発明の鍵生成装置は、個々の平文データを暗号化する際に用いた鍵である乱数の総和を、暗号文データの総和を復号するための鍵としてサーバに送信し、その鍵を用いて暗号文データの総和を復号する。
【発明の効果】
【０００８】
データの総和の値のみがサーバ側で復号され平文となる。すなわち、個々のデータの平文がサーバ側に開示されることなく、サーバ内で基本統計量を算出することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】実施形態の概略を例示する。
【図２】暗号化統計処理システムが取り扱うデータを例示する。
【図３】鍵配布PCの概略構成を例示する。
【図４】暗号化統計処理システムの全体処理をシーケンス図で示す。
【図５】鍵配布PCにおける暗号化統計計算用パラメータの生成処理フローを示す。
【図６】鍵配布PCにおける暗号化鍵生成処理フローを示す。
【図７】鍵配布PCにおける集約値復号鍵と暗号化鍵の管理用のデータベースを示す。
【図８】登録PCにおける暗号文の生成処理フローを示す。
【図９】管理サーバにおける暗号化統計計算処理フローを示す。
【図１０】実施例２における管理サーバの暗号化統計計算処理フローを示す。
【図１１】実施例２における登録PCの暗号文の生成処理フローを示す。
【図１２】実施例２における管理サーバの暗号化統計計算処理フローを示す。
【図１３】実施例２における管理サーバの暗号化統計計算処理フローを示す。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、これにより本発明が限定されるものではない。実施の形態において、同一の部材には原則として同一の符号を付け、繰り返しの説明は省略する。まず、本発明の実施例で使用する用語を定義する。
【００１１】
(1)  法
剰余算（除算の余りを求める計算）における割る値を指す。
【００１２】
(2)  mod t
剰余算を指す。特に断りがない限り、本実施例では、法をｔとする剰余算の結果は、
整数 [0, 1, 2, ・・・, t-1]で表し、0未満またはｔ以上の値を用いないものとする。
【００１３】
(3)  剰余加算
整数の加算結果に対し、剰余算を行う。例えば、4 + 5 mod 7 = 2が成立する。
【００１４】
(4)  剰余減算
整数の減算結果に対し、剰余算を行う。例えば、4 - 5 mod 7 = 6が成立する。
【００１５】
(5)  平方剰余
整数の自乗結果に対し、剰余算を行う。例えば、42 mod 7 = 2が成立する。
【００１６】
(6)  基本統計量
本発明では、代表的な統計量である合計、平均、分散、標準偏差のいずれかを指す。
【００１７】
(7)  データベース
データの管理形態の一種であり、本発明ではDBと略す場合もある。また、データとして暗号文を保存する場合、暗号化DBと略す場合もある。
【００１８】
(8)  登録PC100
登録PC100a、登録PC100b、・・・、登録PC100nのいずれかまたは全てを指す。
【００１９】
(9)  集約値復号鍵
平均用特集約値復号鍵と分散用集約値復号鍵の総称である。
【００２０】
(10)  暗号化鍵
平均用暗号化鍵と分散用暗号化鍵の総称である。
【００２１】
(11)  平文
暗号化対象のデータを平文と呼ぶ。暗号化後は、暗号文と呼ばれる。
【００２２】
(12)  平文空間
平文がとりえる値の集合を指す。例えば、平文空間を0以上ｔ未満とするとき、整数[0、1、2、・・・t-1]のいずれかをが平文が取りうる。
【００２３】
(13)  分散
データの分布のばらつき度合いを示す統計指標の一つ。平文Miの平均と平文Mi2の平均から、平文Miの分散Varが計算できる。Var(Mi) = Avg(Mi2) - Avg(Mi)2が一般に成り立つ。
【００２４】
(14)  標準偏差
分散と同様、データの分布のばらつき度合いを示す統計指標の一つ。分散の平方根が標準偏差Stdである。即ち、Std = √Varが一般に成り立つ。
【００２５】
(15)  整数丸め込み関数
入力された実数値に対して、もっとも近い整数の値を返す関数である。ｘを整数丸め込み関数の入力値、yを出力値（出力値は整数）とし、丸め込み関数を「・」(・は入力値)で表す。このとき、y=「x」であり、｜y-x｜<=1/2が成立する。
【実施例１】
【００２６】
図１は、暗号化統計処理システムの実施形態の概略を示す図である。図示するように、統計処理システムは、第三者機関と、事業主体Ａ(1〜n)と、事業主体Ｂと、事業主体Ｃと、により実施される。ハードウェアとしては、第三者機関が所有する鍵配布PC000と、事業主体Ａ(1〜n)が所有する登録PC100a・・・100nと、事業主体Ｂが所有する管理サーバ300と、事業主体Ｃが所有する閲覧PC200と、のそれぞれがネットワーク400を介して接続される構成となっている。【００２７】
本実施例をヘルスケア事業への適用例として説明する。以下、第三者機関を「認証局」、事業主体Ａ(1〜n)を「健康診断事業者」、事業主体Ｂを「クラウドサービス提供者」、事業主体Ｃを「病院」と想定する。【００２８】
健康診断事業者は、自社の情報システムをクラウドサービス提供者の管理サーバ300に預託する運用をしている。故に、健康診断受診者から取得する健診データを、管理サーバ300に預託している。健診データは受診者の個人情報であり、他者に漏洩しないよう慎重に取り扱う必要がある。健診データの詳細は、図２(a)で後述する。【００２９】
そのため、健康診断事業者は、受診者から取得して登録PC100aに入力した健診データにおいて指定した項目を、認証局の鍵配布PC000が発行する暗号化鍵で暗号化した上で、クラウドサービス提供者の管理サーバ300に預託する。すなわち、クラウドサービス提供者には、個々の健診データ内の暗号化された項目の内容が開示されない。【００３０】
病院側は健診データに基づく疾病の基本統計量データを必要としているので、健診データを格納するクラウドサービス提供者にその基本統計量データを要求する。統計統計量データの詳細は、図２（ｄ）で後述する。【００３１】
クラウドサービス提供者の管理サーバは、内部に格納された健診データの暗号文の総和を求め、認証局の鍵配布PC000が発行する集約値復号鍵で総和を復号し、総和の平文データを得る。総和の平文データの詳細は、図２(c)で後述する。【００３２】
平文については除算が可能なので、健診データの数で総和の平文を除した値が、代表的な基本統計量データである平均値となる。この後、平均値は病院側に開示されるが、個々の健診データは開示されない。すなわち、健康診断事業者の所持する個々の健診データが、いずれの他者に開示されることなく、病院が基本統計量を取得できたことになる。なお、前述の通り、暗号文の総和を求める処理は、従来技術で可能である。【００３３】
図２は、本実施例で取り扱うデータの具体例を示す図である。この図を用いて図１の説明を補足する。【００３４】
図２(a)は健康診断事業者が受診者から取得して登録PC100に登録した健診データを、図２(b)は管理サーバ300内で保管されるデータ例として年齢(歳)と入院期間(日)が暗号化された健診データを、図２(c)は管理サーバ300内で復号された総和の平文データを、図２(d)は管理サーバ300内で算出された基本統計量データを、それぞれ示している。【００３５】
図２(a)の各行のデータを「個々の健診データ」と呼んでいる。認証局の鍵配布PC000は、指定された範囲または項目毎に暗号化鍵を発行し、健康診断事業者の登録PC100は、発行された暗号化鍵を用いて健診データをそれぞれ暗号化する。
図２(b)は、個々の健診データのうち、「年齢(歳)」列および「入院期間(日)」列に格納される値が暗号化されていることを示している。【００３６】
図２(c)の「年齢総和」列および「入院期間総和」列に格納される値は、それぞれ指定された範囲または項目における図２(a)の「年齢(歳)」列および「入院期間(日)」列の総和の値である。この例では、指定された項目が「肺炎」および「男」であったとする。この場合、図２(c)には、肺炎を患った経験のある男性受診者の年齢の総和と、当該受診者が肺炎を患った際の入院期間の総和が、認証局の鍵配布PC000が発行する集約値復号鍵により復号されて、平文となっている。【００３７】
図２(d)の「平均年齢(歳)」列および「平均入院期間(日)」列に格納される値は、それぞれ図２(c)の「年齢総和」列の値および「入院期間(日)」列の値をデータ数で除した値である。この例では、各列のデータ数は3であるので、3で除した値となっている。これらの数値は病院側に提供され、医師等が閲覧PC200を用いて閲覧することができる。【００３８】
なお、上記の健診データはあくまで一例である。必要に応じて複数の暗号文を組み合わせてよい。例えば、平文で管理されている他の項目を、ブロック暗号や、検索可能暗号、公開鍵暗号等で暗号化してもよい。【００３９】
図３は、鍵配布PC000のハードウェア構成図である。図示するように、鍵配布PC000は、CPU001、メモリ002、記憶装置003、入力装置005、出力装置006、読書装置007、通信装置008、らが内部信号線004で連結し、構成される。また、記憶装置003には、所定のプログラムが格納されている。プログラムは、メモリ002にロードされCPU001によって実行される。なお、所定のプログラムは、外部記憶装置に記憶されていてもよい。【００４０】
登録PC100、閲覧PC200、管理サーバ300も同様のハードウェア構成を具備する。それぞれの詳細は、繰り返しの記載となるので省略する。【００４１】
図４は、暗号統計処理システムの全体処理を示すシーケンス図である。S010-S030は認証局の鍵配布PCの処理、S110 -S140は健康診断事業者の登録PC100の処理、S210は病院の閲覧PC200の処理、S310-S330はクラウドサービス事業者の管理サーバ300の処理である。以下、各ステップにつき説明する。【００４２】
S110は、登録PCが統計処理対象のデータの範囲または項目を指定する処理である。図２(a)で説明した通り、例えば「病歴」「性別」等の項目が指定される。データの範囲を指定する場合の例としては、「東京都」「神奈川県」のように地域を指定したり、「2015年1月1日〜2015年12月31日」のように期間を指定することが考えられる。【００４３】
S120は、S110で指定した範囲または項目につき、登録PCが鍵配布PCに対して暗号化鍵を要求する処理である。【００４４】
S010は、S120で受信した要求に基づき、暗号化統計計算用パラメータを生成する処理である。詳細は図５で後述する。【００４５】
S020は、S010で生成された暗号化統計計算用パラメータを用いて、暗号化鍵D010と集約値復号鍵D020を生成する処理である。詳細は図６で後述する。【００４６】
S030は、S020で生成された暗号化鍵D010を登録PC100に、集約値復号鍵D020を管理サーバに、それぞれ送付する処理である。【００４７】
S130は、S030で送付された暗号化鍵D010を用いて、暗号文D110を生成する処理である。詳細は図８で後述する。【００４８】
S140は、S130で生成された暗号文D110を管理サーバに送付する処理である。【００４９】
S310は、S140で送付された暗号文D110の状態を遷移させる処理である。詳細は図９で後述する。【００５０】
S320は、S310で状態遷移した暗号文D110の基本統計量D210を計算する処理である。詳細は図９で後述する。【００５１】
S210は、S320で算出された基本統計量D210を、閲覧PCから要求する処理である。【００５２】
S330は、S110の要求を受け、閲覧PCに基本統計量D210を送信する処理である。【００５３】
このようにして、管理サーバ300が個々のデータの平文を得ることなく、分析に有用な基本統計量の平文を得ることができる。【００５４】
なお、上述の処理手順はあくまで一例であり、必要に応じて処理順序や処理内容を変更してもよい。例えば、登録PCと閲覧PCが同一の主体（本例では病院を想定する）に属している場合には、S210の要求処理を待つことなくS330の処理を実施してもよい。この場合、登録PC100と閲覧PC200が同じ端末であることも考えられ、S210も登録PC100に実施されることになる。【００５５】
また、S320の処理は、S310の出力である対象データの総和の平文をデータ数で除する処理であるから、必ずしも管理サーバ内で実施する必要はない。例えば、S310の出力を閲覧PC200に送付し、閲覧PC200内でS320に相当する処理を実施してもよい。【００５６】
更に、複数の健康診断事業者(登録PC100a-100n)から収集した健診データについての基本統計量を計算することも可能である。【００５７】
図５に鍵配布PC000における暗号化統計計算用パラメータ生成の処理フローを示す。鍵配布PC000は正の整数Pと正の整数ｔを生成する(S011)。ただし、ｔはｎの約数とする。例えば、ｎ＝6のとき、tはｎの約数であるので、t＝1，2，3，6のいずれかである。なお、鍵配布PC000は、作成した正の整数Pと正の整数ｔを公開、または送付することにより、登録PC100や管理サーバ300が利用可能な状態にしておく。【００５８】
図６に鍵配布PC000における暗号化鍵生成の処理フローを示す。鍵配布PC000は0以上P未満のｔ個の乱数S1、S2、・・・Sｔとｔ個の乱数L1、L2、・・・Ltを生成する(S021)。次に、法をPとし、乱数S1、S2、・・・Stの剰余加算をS、乱数L1、L2、・・・Ltの剰余加算をLとする。即ち、
S = S1 ＋ S2 ＋・・・＋ St mod P、L = L1 ＋ L2 ＋ ・・・ ＋ Lt mod Pである(S022)。最後に、乱数S1、S2、・・・Sｔを平均用暗号化鍵、乱数L1、L2、・・・Ltを分散用暗号化鍵、Sを平均用集約値復号鍵、Lを分散用集約値復号鍵として出力する(S023)。すなわち、
平均用集約値復号鍵Sは法をPとするt個の乱数S1、S2、・・・、Stの総和となり、
分散用集約値復号鍵Lは法をPとするt個の乱数L1、L2、・・・、Ltの総和となる。【００５９】
図７は、鍵配布PC000が集約値復号鍵と暗号化鍵の送信時に用いるデータベースである。鍵管理DBと呼ばれるこのデータベースで、送信先と送信対象を管理する。例えば、図７aのデータベース2行目には、送信先として登録用PC100a、送信対象として平均用暗号化鍵S1と分散用暗号化鍵L1が指定されている。また図７bのデータベースには、送信先として管理サーバ300、送信対象として平均用集約値復号鍵Sと分散用集約値復号鍵Lが指定されている。鍵配布PC000は鍵管理DBで指定されている送信対象と送信先に従い、暗号化鍵と集約値復号鍵を送付する。すなわち、この例では集約値復号鍵のみがサーバに送信されることになるため、個々の暗号化鍵がサーバに開示されることはない。【００６０】
図８中の図８aは、登録PC100における暗号文生成の処理フローを示す。本暗号文は管理サーバ300上で合計と平均の算出に用いられる。登録PC100は暗号化対象の平文Miに対し、法をPとする平均用暗号化鍵Siの剰余加算を行い、暗号文Ciを作成する。即ち、Ci= Mi + Si mod Pが成立する(S111a)。このとき、平文Miの平文空間は0以上P/t未満の整数である。次に、暗号文Ciを出力する(S112a)。【００６１】
図８中の図８ｂは、登録PC100における暗号文生成の処理フローを示す。本暗号文は管理サーバ300上で分散と標準偏差の算出に用いられる。登録PC100は暗号化対象の平文Miに対し、法をPとするMiの平方剰余であるMi2  mod Pを算出し、分散用暗号化鍵Liとの剰余加算を行い、暗号文Diを作成する。即ち、Di= Mi2 + Li mod Pが成立する(S111b)。このとき、平文Mi2の平文空間は0以上P/t未満の整数である。次に、暗号文Diを出力する(S112b)。【００６２】
図９中の図９aは、管理サーバ300が、t個の暗号文Ciの暗号化状態を0遷移させる際の処理フローである。【００６３】
管理サーバ300は法をPとするｔ個の暗号文Ciの剰余加算と、Sの剰余減算を行い、暗号化状態が解除された中間データSUMを作成する。即ち、
Sum = (C1 + C2 + ・・・・+ Ct) - S mod Pが成立する(S211a)。ここで、平文Miの平文空間は0以上P/t未満の整数であるため、Sumはt個の平文 Miの合計と等しい。即ち、Sum = M1 + M2 + ・・・・+ Mtが成立する。つまり、平均用集約値復号鍵Sを用いて、対象データの総和の値のみを管理サーバ300内で復号できたことになる。【００６４】
図９中の図９ｂは、管理サーバ300が、平均値を算出する際の処理フローである。中間データSUMがt個の平文Miの合計と等しいことは既に述べた通りである。この中間データSUMをｔで除算することにより、平均Avgが作成できる。即ち、Avg= SUM/tが成立する(S221a)。次に、中間データSUMは合計として、Avgは平均として出力する(S222a)。なお、図３で述べた通り、この処理は平文SUMをデータ数ｔで除する一般的な統計処理であるから、必ずしも管理サーバ300内で実施する必要はない。【００６５】
図１０中の図１０aは、管理サーバ300が、分散または標準偏差を算出する際に、暗号化状態を遷移させる処理フローである。【００６６】
管理サーバ300は法をPとするｔ個の暗号文Diの剰余加算と、Lの剰余減算を行い、暗号化状態が解除された中間データtmpを作成する。即ち、
tmp = (D1 + D2 + ・・・・+ Dt) - L mod Pが成立する(S211b)。ここで、平文Mi2の平文空間は0以上P/t未満の整数であるため、tmpはt個の平文 Mi2の合計と等しい。即ち、tmp = M12 + M22 + ・・・・+ Mt2が成立する。つまり、分散用集約値復号鍵Lを用いて、対象データの総和の値のみを管理サーバ300内で復号できてこととなる。【００６７】
図１０中の図１０ｂは、管理サーバ300が、分散および標準偏差を算出する際の処理フローである。中間データtmpがt個の平文Mi2の合計と等しいことは既に述べた通りである。この中間データSUMをｔで除算し、さらにAvg2を減算することにより、分散Varが作成できる。即ち、
Var= tmp/t - Avg2が成立する(S221b)。次に、Varの平方根を算出し、これを標準偏差Stdとする(S222b)。最後に、Varは分散として、Stdは標準偏差として出力する(S223b)。なお、この処理は一般的な統計処理であるから、必ずしも管理サーバ300内で実施する必要はない。【００６８】
上記の処理により、管理サーバ300は、登録サーバから受け取った暗号文Ciや暗号文Diから各々の平文Mi、Mi2の値を得ることなく、また個々のデータについての暗号鍵を得ることなく、更に集計PC200との複雑なやり取りをすることもなく、平文Miの基本統計量である計SUM、平均Avg、分散Var、標準偏差Stdを得ることが可能となる。【００６９】
なお、本発明は上述の実施形態に限定されるものではなく、その趣旨の範囲内で様々な変形が可能である。例えば、統計計算は平均や分散に限定されるものではなく、それ以外の統計値を算出しても良い。また、データの値は整数に限定されるものではなく、実数としても良い。
【実施例２】
【００７０】
実施の形態２では、実施の例１と同様、管理サーバ300が受け取った個々の暗号文から、その基本統計量のみが平文で得られる方式を説明する。本実施例では、暗号化の際にLWE（Learning with Errors）と呼ばれる計算量困難な問題をベースにしている。【００７１】
実施例２のシステムの概略図は実施例１と同様である。また鍵配布PC000と、1台以上の登録PC100a・・・100nと、集計PC200と、管理サーバ300の構成も、実施例1と同様である。更に、鍵配布PC000,登録PC100a・・・登録PC100n、管理サーバ300、集計PC200におけるデータ送受信とプログラムの処理フローも、実施例１と同様である。【００７２】
ここで、鍵配布PC000における暗号化統計計算用パラメータ生成の処理フロー(S010)につき、実施例１との差分を説明する。【００７３】
鍵配布PC000は正の整数Pと正の整数Nと正の整数ｔと正の整数mを生成する。ただし、ｔはｎの約数とする。また、0以上P未満の乱数を要素とするN次元ベクトルAを生成する(S011)。【００７４】
次に、鍵配布PC000における暗号化鍵生成の処理フロー(S020)につき、実施例１との差分を説明する。【００７５】
鍵配布PC000は0以上P未満乱数を要素とするのN次元ベクトルS1、S2、・・・SｔとL1、L2、・・・Ltを生成する(S021)。次に、法をPとし、乱数S1、S2、・・・Stの剰余加算をS、乱数L1、L2、・・・Ltの剰余加算をLとする。即ち、
S = S1 ＋ S2 ＋・・・＋ St mod P、
L = L1 ＋ L2 ＋ ・・・ ＋ Lt mod Pである(S022)。最後に、乱数S1、S2、・・・Sｔを平均用暗号化鍵、乱数L1、L2、・・・Ltを分散用暗号化鍵、Sを平均用集約値復号鍵、Lを分散用集約値復号鍵として出力する(S023)。【００７６】
鍵配布PC000が集約値復号鍵と暗号化鍵の送信時に用いるデータベースは、実施例１と同様である。【００７７】
図１１中の図１１aは、実施例２における登録PC100が暗号文Ciを生成する際の処理フローである。本暗号文は管理サーバ300上で合計と平均の算出に用いられる。【００７８】
登録PC100はN次元ベクトルAとｎ次元ベクトルSiに対し法をPとする内積＜A, Si＞を行う。さらに、登録PC100は
|Ei|  <  P/(2mt)を満たす乱数Eiを作成する。最後に、法をPとし、内積＜A, Si＞、乱数Eiと、P/ｍ倍平文Miとの剰余加算を行い、暗号文Ciを作成する。即ち、Ci=(Mi)P/m＋＜A, Si＞＋Ei mod Pが成立する(S111a)。このとき、平文Miの平文空間は0以上ｍ/t未満の整数である。次に、暗号文Ciを出力する(S112a)。【００７９】
図１１中の図１１ｂは、実施例２における登録PC100が暗号文Diを生成の処理フローである。本暗号文は管理サーバ300上で分散と標準偏差の算出に用いられる。登録PC100はN次元ベクトルAとｎ次元ベクトルLiに対し、法をPとする内積＜A, Li＞を行う。さらに、登録PC100は|Fi|  <  P/(2mt)を満たす乱数Fiを作成する。最後に、法をPとし、内積＜A, Li＞、乱数Fiと、P/m倍したMiの平方剰余Mi2  との剰余加算を行い、暗号文Diを作成する。即ち、
Di=Mi2 m/t＋＜A, Li＞＋Fi mod Pが成立する(S111b)。このとき、平文Mi2の平文空間は0以上m/t未満の整数である。次に、暗号文Diを出力する(S112b)。【００８０】
図１２は、実施例２における、管理サーバ300が平文を算出する際に暗号文の暗号化状態を遷移させる処理フローである。管理サーバ300はN次元ベクトルAとｎ次元ベクトルSに対し、法をPとする内積＜A, S＞を行う。管理サーバ300は法をPとするｔ個の暗号文Ciの剰余加算と、内積＜A, S＞の剰余減算を行い、暗号化状態が解除された中間データTMPを作成する。即ち、
TMP = (C1 + C2 + ・・・・+ Ct) - ＜A, S＞ mod Pが成立する(S211a)。ここで、このTMPをm/P倍した実数値を整数丸め込み関数に入力し、出力値SUMを得る(S212a)。「m/P(TMP)」=「(M1+M2 + ・・・・+ Mt)+ m/P(E1+E2 + ・・・・+ Et)」=M1+M2 + ・・・・+ Mtである。【００８１】
|Ei|<P/2mtより、|t/m(E1+E2 + ・・・・+ Et)| <1/2であり、乱数Eiの総和は整数丸め込み関数により破棄される。従って、SUMは平文Miの合計値である。【００８２】
管理サーバ300が平均値を算出する際の処理フローは、実施例１と同様である。【００８３】
図１３は、実施例２における、管理サーバ300が平文を算出する際に暗号文の暗号化状態を遷移させる処理フローである。管理サーバ300はN次元ベクトルAとｎ次元ベクトルLに対し、法をPとする内積＜A, L＞を行う。管理サーバ300は法をPとするｔ個の暗号文Diの剰余加算と、内積＜A, L＞の剰余減算を行い、暗号化状態が解除された中間データTMPを作成する。即ち、
TMP = (D1 + D2 + ・・・・+ Dt) - ＜A, L＞ mod Pが成立する(S211a)。ここで、このTMPをm/P倍した実数値を整数丸め込み関数に入力し、出力値tmpを得る(S212a)。「m/P(TMP)」=「(M12+M22 + ・・・・+ Mt2)+ m/P(F1+F2 + ・・・・+ Ft)」=M12 + M22 + ・・・・+ Mt2である。|Fi|<P/2mtより、|t/m(F1+F2 + ・・・・+ Ft)| <1/2であり、乱数Fiの総和は整数丸め込み関数により破棄される。従って、tmpは平文Mi2の合計値である。【００８４】
管理サーバ300において、分散または標準偏差を算出する際の処理フローは、実施例１と同様である。【００８５】
上記の処理により、管理サーバ300は、登録サーバから受け取った暗号文Ciや暗号文Diから各々の平文Mi、Mi2の値を得ることなく、集計PC200との複雑なやり取りなしで、平文Miの基本統計量である計SUM、平均Avg、分散Var、標準偏差Stdを得ることが出来た。【００８６】
なお、本発明は、実施例１と同様、その趣旨の範囲内で様々な変形が可能である。例えば、乱数生成に当たっては、乱数の分布をガウス分布や一様分布など、特定の分布を仮定としてもよい。【００８７】
実施例２では、管理サーバ300は平文Miの基本統計量を平文として得たが、暗号化状態のまま基本統計量を算出し、管理サーバ300には基本統計量を秘匿するようにしても良い。例えば、鍵配布PC000は、集計PC200に復号鍵を事前に渡しておき、管理サーバ300から暗号化された基本統計量を受けとった集計PC200が復号しても良い。また、管理サーバ300は特定の処理を行うことにより、合計は集計PC200には開示しないが、平均は開示するなど、部分開示を行うように調整しても良い。【００８８】
例えば、管理サーバ300は平均計算で用いる分母ｔを秘匿するため、1/t≒r/Rとなる数を求め、r倍した暗号文の総和とRを集計PC200に渡し、集計PC200でr倍された暗号文を復号後、得られたr倍された平文の総和をRで除算し、平均値を算出する。このとき、集計PC200はｒが分からないため、ｒ倍された平均の総和から、元の平文総和が得られない。一方、Rで除算することにより、分母をｔとする平均は得ることができる。【００８９】
例えば、管理サーバ300が対応する対応する法の値をPからP/tに変更し、新しい法の値P/t用に変換した暗号文を集約PCに送信してもよい。このとき、集約PCは法P/tを用いて暗号文を復号し、ｔで除算された平均を入手できる。
【符号の説明】
【００９０】
000：鍵配布PC  100、100a、100b、100n：登録PC  200：集計PC  300：管理サーバ  400：ネットワーク  001：CPU(Central Processing Unit)  002：メモリ  003:記憶装置  004:内部通信線  005:入力装置  006:出力装置  007:読書装置  008:通信装置
【図１】
2017149686.tif 000003
【図２】
2017149686.tif 000004
【図３】
2017149686.tif 000005
【図４】
2017149686.tif 000006
【図５】
2017149686.tif 000007
【図６】
2017149686.tif 000008
【図７】
2017149686.tif 000009
【図８】
2017149686.tif 000010
【図９】
2017149686.tif 000011
【図１０】
2017149686.tif 000012
【図１１】
2017149686.tif 000013
【図１２】
2017149686.tif 000014
【図１３】
2017149686.tif 000015
【国際調査報告】
2017149686.tif 000016
2017149686.tif 000017
2017149686.tif 000018
2017149686.tif 000019