(57)【要約】【課題】データを秘匿しつつ、データの部分集計を行う。【解決手段】プログラムは、二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文データの部分集計を可能とする第１準同型暗号と第２準同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを取得し、取得された暗号化データと属性情報とを関連付けて記憶部に記憶し、所定の属性情報に対応する複数の暗号化データを演算する処理をコンピュータに実行させる。【選択図】図６
2013205655.tif 000002
【特許請求の範囲】
【請求項１】
二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文データの部分集計を可能とする第１準同型暗号と第２準同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを取得し、
取得された暗号化データと属性情報とを関連付けて記憶部に記憶し、
所定の属性情報に対応する複数の暗号化データを演算する処理をコンピュータに実行させるためのプログラム。
【請求項２】
前記二重に暗号化された暗号化データは、
暗号化データを演算して平文データの加算が可能な前記第１準同型暗号により暗号化されたデータが、暗号化データを演算して平文の乗算が可能な前記第２準同型暗号により暗号化されたデータである請求項１記載のプログラム。
【請求項３】
前記第１準同型暗号は、Ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ暗号であり、
前記第２準同型暗号は、ＥｌＧａｍａｌ暗号である請求項２記載のプログラム。
【請求項４】
二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文の部分集計を可能とする第１準同型暗号と第２準同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを取得し、
取得された暗号化データと属性情報とを関連付けて記憶部に記憶し、
所定の属性情報に対応する複数の暗号化データを演算する処理をコンピュータが実行する情報処理方法。
【請求項５】
二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文の部分集計を可能とする第１準同型暗号と第２順同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを受信する受信部と、
受信された暗号化データと属性情報とを関連付けて記憶する記憶部と、
所定の属性情報に対応する複数の暗号化データを演算する暗号操作部と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号操作を行うプログラム、情報処理方法及び情報処理装置に関する。
【背景技術】
【０００２】
現在、クラウドコンピューティングは、システムの新規導入や更新を検討している企業などから注目を集めている技術の一つである。クラウドコンピューティングとは、従来ユーザが保有していたハードウェア・ソフトウェアやアプリケーションなどを、インターネットなどのネットワークを通じて利用する利用形態のことである。
【０００３】
このクラウドコンピューティングは、イメージ図で表すと、インターネットを雲（cloud；クラウド）のように図示することから、このように呼ばれている。コンピューティングをクラウド化することで、ユーザは、利便性を手に入れる代わりに、安全性や信頼性への不安など、新たな情報セキュリティの問題に直面する。
【０００４】
ここで、セキュリティを高めるため、サーバを用いて情報処理を行うシステムで、端末からデータを送信する際に、準同型暗号化方式による第１の暗号化と、ＳＳＬプロトコルによる第２の暗号化とを行った後のデータをサーバに送信する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１２８８６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、クラウドコンピューティングにおける情報セキュリティ技術の一つに、準同型暗号を用いる方法がある。準同型暗号とは暗号データを操作することができる暗号である。このシステムでは、ユーザデータの暗号文のみをクラウド側の装置に預け、クラウド上では暗号文操作のみを行うことで、ユーザデータが漏洩することなく演算結果を入手できる。そのため、準同型暗号は、クラウドにおける様々な差異化サービスを実現すると期待される技術である。
【０００７】
しかしながら、データを秘匿しつつ、データ計算を行う技術において、データの部分集計を行う技術がなかった。
【０００８】
そこで、開示の技術では、データを秘匿しつつ、データの部分集計を行うことができるプログラム、情報処理方法及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
開示の技術における一態様のプログラムは、二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文データの部分集計を可能とする第１準同型暗号と第２準同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを取得し、取得された暗号化データと属性情報とを関連付けて記憶部に記憶し、所定の属性情報に対応する複数の暗号化データを演算する処理をコンピュータに実行させる。
【発明の効果】
【００１０】
開示の技術によれば、データを秘匿しつつ、データの部分集計を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】実施例における秘匿部分集計システムの一例を示す図。
【図２】実施例における情報処理装置のハードウェア構成の一例を示すブロック図。
【図３】実施例における秘匿部分集計システムを示す概念図。
【図４】実施例における秘匿部分集計システム内の各装置の機能構成の一例を示すブロック図。
【図５】実施例における暗号化処理の一例を示すフローチャート。
【図６】実施例における部分集計処理の一例を示すフローチャート。
【図７】実施例における復号処理（その１）の一例を示すフローチャート。
【図８】実施例における復号処理（その２）の一例を示すフローチャート。
【図９】適用例１を説明するための図。
【図１０】適用例２を説明するための図。
【発明を実施するための形態】
【００１２】
まず、実施例を説明する前に、データを秘匿しつつデータ計算を行う技術を、クラウドコンピューティングを用いて実現する例について説明する。以降では、この技術を秘匿集計システムと呼ぶ。
【００１３】
各ユーザは、データｍｉにマスク値Ｔｉを付加したデータｍｉ＋Ｔｉに対し、準同型暗号Ｅを用いて暗号化を行い、この準同型暗号Ｅによる暗号文データＥ（ｍｉ＋Ｔｉ）をクラウド上のシステムに預ける。
【００１４】
次に、クラウド上のシステムでは、次の式（１）により、暗号化データの加算を行う
【００１５】
【数１】
2013205655.tif 000003
【００１６】
このとき、秘密鍵を持つ管理者は、集計された暗号化データを復号することで、ユーザの集計データｍ１＋ｍ２＋・・・＋ｍｋを得ることができる。マスク値を付加していることで、秘密鍵を持つ管理者でさえも、各ユーザのデータｍｉを知ることができない。
【００１７】
このシステムを用いることにより、クラウド上でユーザのデータを秘匿しつつユーザの集計値を計算することができる。また、暗号文の加算操作可能な準同型暗号として、Ｐａｉｌｌｉｅｒ暗号やＡｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ方式などを用いる。加算操作可能な準同型暗号で暗号化されたデータＥ（）は、次の式（２）を満たす。
【００１８】
【数２】
2013205655.tif 000004
暗号加算の具体的な計算方法は各暗号化方式によって異なる。
【００１９】
上述した秘匿集計システムでは、各データを秘匿しつつ、クラウド上で部分集計を行うことができないという問題点があった。
【００２０】
上述した秘匿集計システムでは、マスク値Ｔｉで各データｍｉを秘匿するため、部分集計を行うことができない。これは、（ｍｉ＋Ｔｉ）＋（ｍｊ＋Ｔｊ）＝（ｍｉ＋ｍｊ）＋（Ｔｉ＋Ｔｊ）の式のうち、マスク値の合計値Ｔｉ＋Ｔｊが必ずしも０にならないからである。
【００２１】
つまり、マスク値を利用した秘匿集計システムでは、事前に定められたｋ個の集計にしか対応できない。
【００２２】
また、マスク値を利用せずにデータを暗号化してクラウド上に送信した場合、秘密鍵を有する管理者は、各データを復号することができ、各データを秘匿することができない。
【００２３】
そこで、上記の問題点を解決することができる実施例について、添付図面を参照しながら説明する。
【００２４】
［実施例］
＜システム＞
図１は、実施例における秘匿部分集計システム１の一例を示す図である。図１に示す秘匿部分集計システム１は、例えばクラウドコンピューティングシステムを用いて実装されうる。図１に示す秘匿部分集計システム１では、第１準同型暗号と、第２準同型暗号とを用いる。第１準同型暗号では、第１公開鍵と第１秘密鍵を用いる。第２準同型暗号では、第２公開鍵と、第２秘密鍵を用いる。
【００２５】
図１に示す秘匿部分集計システム１は、サーバとしての情報処理装置１０と、データを提供する情報処理装置２０、３０と、第２秘密鍵を有する情報処理装置４０と、第１秘密鍵を有する情報処理装置５０とがネットワークを介して接続されている。秘匿部分集計システム１に接続される情報処理装置の数は、図１に示す例に限られない。
【００２６】
情報処理装置２０、３０は、秘匿したいデータを第１準同型暗号と、第２準同型暗号とを用いて二重に暗号化する。この二重に暗号化されたデータを、二重暗号化データとも呼ぶ。情報処理装置２０、３０は、二重暗号化データと、そのデータの属性情報とを情報処理装置１０に送信する。
【００２７】
情報処理装置１０は、情報を提供する情報処理装置２０、３０から、二重暗号化データと、属性情報とを取得して記憶する。情報処理装置１０は、所定の属性情報に対応する二重暗号化データを取得し、暗号操作を行う。
【００２８】
情報処理装置４０は、情報処理装置１０から暗号操作された結果を取得し、第２秘密鍵で復号を行う。この復号処理を、第１の復号処理と呼ぶ。
【００２９】
情報処理装置５０は、情報処理装置４０から第１の復号処理がなされた結果である、第１の暗号化データを取得し、第１秘密鍵で復号する。これにより、第１秘密鍵を持つ利用者は、情報処理装置１０で部分集計された結果を知ることができる。
【００３０】
また、この利用者は、クラウド上にあるデータを復号しようとしても、クラウド上では、二重に暗号化されているため、第１準同型暗号化方式の秘密鍵（第１秘密鍵）だけでは復号することはできない。
【００３１】
＜ハードウェア＞
図２は、実施例における情報処理装置１０のハードウェア構成の一例を示すブロック図である。図２に示す情報処理装置１０は、制御部１０２、主記憶部１０４、補助記憶部１０６、通信部１０８、及び記録媒体Ｉ／Ｆ部１１０を少なくとも有する。各部は、バスを介して相互にデータ送受信可能に接続されている。
【００３２】
制御部１０２は、コンピュータの中で、各装置の制御やデータの演算、加工を行うＣＰＵ（Central Processing Unit）である。また、制御部１０２は、主記憶部１０４や補助記憶部１０４に記憶されたプログラムを実行する演算装置であり、通信部１０８や各記憶部からデータを受け取り、演算、加工した上で、出力部や各記憶部に出力する。
【００３３】
また、制御部１０２は、例えば補助記憶部１０６に記憶される部分集計プログラムを実行することで、秘匿されたデータの部分集計機能を果たす。
【００３４】
主記憶部１０４は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などであり、制御部１０２が実行する基本ソフトウェアであるＯＳやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【００３５】
補助記憶部１０６は、ＨＤＤ（Hard Disk Drive）などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。また、補助記憶部１０６は、記録媒体１１２などから取得した部分集計プログラムや、通信部１０８から取得した二重暗号化データなど記憶しておいてもよい。
【００３６】
通信部１０８は、有線又は無線などのネットワークを通じて通信を行う。通信部１０８は、例えば、情報処理装置２０などから二重暗号化データと属性情報とを取得し、また、情報処理装置５０から秘匿部分集計のサービスの利用指示を受けたりする。
【００３７】
記録媒体Ｉ／Ｆ（インターフェース）部１１０は、ＵＳＢ（Universal Serial Bus）などのデータ伝送路を介して接続された記録媒体１１２（例えば、フラッシュメモリなど）と情報処理装置１０とのインターフェースである。
【００３８】
また、記録媒体１１２に、所定のプログラムを格納し、この記録媒体１１２に格納されたプログラムは記録媒体Ｉ／Ｆ部１１０を介して情報処理装置１０にインストールされる。インストールされた所定のプログラムは、情報処理装置１０により実行可能となる。
【００３９】
なお、上記情報処理装置１０の構成は、情報処理装置２０〜５０についても同様である。各情報処理装置は、図２に示すように、一般的なコンピュータの構成を有する。各情報処理装置は、入力部や表示部を備えてもよい。以降では、各情報処理装置の構成については、図２に示す符号と同じ符号を共通して用いる。
【００４０】
＜システム概念＞
図３は、秘匿部分集計システム１を示す概念図である。図３に示すように、情報提供者の装置（情報処理装置２０など）は、２つの準同型暗号Ｅ、Ｆに関する公開鍵情報を用いて、自身が持つデータｍｉの二重暗号化データＦ（Ｅ（ｍｉ））を生成する。情報提供者の装置は、二重暗号化データを属性情報とともにクラウド側に送信する。
【００４１】
クラウド側（情報処理装置１０）では、情報提供者から送信された暗号データＦ（Ｅ（ｍｉ））を保存し、その暗号データの秘匿部分集計を行う。例えば、クラウド側で、男性のデータだけ集計したい場合は、暗号データＦ（Ｅ（ｍ１）），Ｆ（Ｅ（ｍ３）），Ｆ（Ｅ（ｍ４））を暗号操作する。暗号操作とは、暗号化データのまま演算することをいう。
【００４２】
この場合、以下の式（３）が成り立つ。
【００４３】
【数３】
2013205655.tif 000005
この集計データＳを第２暗号集計データとも呼ぶ。
【００４４】
次に、クラウド側は、この第２暗号集計データＳをＦの秘密鍵（第２秘密鍵）を持つ第２利用者の端末（情報処理装置４０）に送信する。
【００４５】
なお、上記例では、Ｆの秘密鍵を持つ第２利用者をクラウド外にいると想定しているが、クラウド内にいる利用者でもよい。Ｆの秘密鍵を持つ第２利用者は、クラウドから送信された第２暗号集計データＳを受け取り、Ｆの秘密鍵を用いて復号する。
【００４６】
これにより、Ｔ＝Ｅ（ｍ１＋ｍ３＋ｍ４）が得られる。このＴのデータ（第１暗号集計データ）を第１利用者の端末（情報処理装置５０）に送信する。
【００４７】
第１利用者の端末（情報処理装置５０）は、第１暗号集計データＴを受け取り、Ｅの秘密鍵（第１秘密鍵）を用いて復号する。これにより、第１利用者は、男性のみの部分集計値ｍ１＋ｍ３＋ｍ４を知ることができる。
【００４８】
安全性に関して、Ｆの秘密鍵を持つ第２利用者と結託しない限り、第１利用者（Ｅの秘密鍵保持）は、クラウド内にある各ユーザのデータＦ（Ｅ（ｍｉ））を復号することはできない。よって、秘匿部分集計システム１は、上記に挙げた問題点を解決することができる。
【００４９】
＜機能＞
図４は、実施例における秘匿部分集計システム内の各装置の機能構成の一例を示すブロック図である。
【００５０】
（情報処理装置２０）
情報処理装置２０は、情報提供者により使用されるパーソナルコンピュータやタブレット端末などである。情報処理装置２０は、秘匿したい数値データを２つの準同型暗号により二重に暗号化し、二重暗号化データを、その数値データの属性情報と共にクラウド側に送信する。
【００５１】
上記機能を果たすため、情報処理装置２０は、第１暗号化部２０２、第２暗号化部２０４、及び通信部２０６を少なくとも有する。
【００５２】
第１暗号化部２０２は、二重に暗号化された暗号化データを複数用いて暗号操作（演算）することで該暗号化データの平文データの部分集計を可能とする二つの暗号化方式のうちの第１準同型暗号の公開鍵（第１公開鍵）を用いて、平文データの暗号化を行う。
【００５３】
平文データは、例えば整数のデータである。以降では、第１準同型暗号により暗号化されたデータを第１暗号化データとも呼ぶ。第１準同型暗号は、例えば、Ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ暗号である。
【００５４】
第２暗号化部２０４は、二重に暗号化された暗号化データを複数用いて暗号操作（演算
することで該暗号化データの平文データの部分集計を可能とする二つの暗号化方式のうちの第２準同型暗号の公開鍵（第２公開鍵）を用いて、第１暗号化データの暗号化を行う。
【００５５】
以降では、第２準同型暗号により暗号化されたデータを二重暗号化データ（又は第２暗号化データ）とも呼ぶ。第２準同型暗号は、例えば、ＥｌＧａｍａｌ暗号である。
【００５６】
通信部２０６は、二重暗号化データをクラウド側に送信する際、このデータの属性を含む属性情報も送信する。属性は、図３に示す例では、「男性」又は「女性」である。この属性は、データを暗号化する際に、情報提供者により複数の属性から１つを選択されるようにしておけばよい。また、属性は、情報処理装置１０にログインした情報提供者のログイン情報から取得するようにしてもよい。
【００５７】
なお、第１暗号化部２０２及び第２暗号化部２０４は、例えば図２に示す制御部１０２やワークメモリとしての主記憶部１０４により実現されうる。通信部２０６は、例えば通信部１０８により実現されうる。また、二重暗号化データを送信する情報処理装置３０も、情報処理装置２０と同様の機能構成を有する。
【００５８】
（情報処理装置１０）
情報処理装置１０は、クラウド側で使用されるサーバなどである。情報処理装置１０は、各装置から二重暗号化データと属性情報とを取得し、二重暗号化データを暗号操作することで、平文データの部分集計を行う。
【００５９】
上記機能を果たすため、情報処理装置１０は、通信部３０２、記憶部３０４、及び暗号操作部２０６を少なくとも有する。
【００６０】
通信部３０２は、ネットワークを介して接続される各装置とデータ通信を行う。通信部３０２は、受信部３２２及び送信部３２４を有する。
【００６１】
受信部３２４は、情報提供者により操作された各装置から二重暗号化データ及び属性情報を受信する。例えば、受信部３２４は、二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文データの部分集計を可能とする第１準同型暗号と第２準同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを取得する。
【００６２】
また、受信部３２４は、第１利用者により操作された装置から部分集計の指示を受信してもよい。このとき、部分集計を行うための属性情報を合わせて指示される。
【００６３】
送信部３２２は、後述する暗号操作部３０６により暗号操作（演算）された二重暗号化データの演算結果であるデータ（第２暗号集計データ）を、第２準同型暗号の秘密鍵を保持する第２利用者の装置に送信する。
【００６４】
記憶部３０４は、受信部３２４により受信された二重暗号化データと属性情報とを関連付けて記憶する。記憶部３０４は、二重暗号化データが受信される度に二重暗号化データと属性情報とを関連付けて記憶する。
【００６５】
暗号操作部３０６は、所定の属性情報に対応する複数の二重暗号化データを暗号操作（演算）し、その演算結果である第２暗号集計データを送信部３２２に出力する。暗号操作は、暗号化データのまま演算することをいい、暗号操作の具体的な計算方法は、各暗号方式によって異なる。所定の属性情報は、予め設定されていたり、他装置から部分集計の指示とともに通知されたりする。
【００６６】
なお、暗号操作部３０６は、例えば図２に示す制御部１０２及びワークメモリとしての主記憶部１０４により実現されうる。記憶部３０４は、例えば補助記憶部１０６により実現されうる。通信部３０２は、例えば通信部１０８により実現されうる。
【００６７】
（情報処理装置４０）
情報処理装置４０は、第２準同型暗号の秘密鍵を有する第２利用者により操作されるパーソナルコンピュータなどである。情報処理装置４０は、第２暗号集計データを取得し、秘密鍵を用いて復号し、復号したデータを送信する。
【００６８】
上記機能を果たすため、情報処理装置４０は、通信部４０２及び第２復号部４０４を少なくとも有する。
【００６９】
通信部４０２は、情報処理装置１０から第２暗号集計データを受信すると、第２暗号集計データを第２復号部４０４に出力する。また、通信部４０２は、第２復号部４０４により復号されたデータ（第１暗号集計データ）を情報処理装置５０に送信する。第２復号部４０４により復号されたデータが、第１暗号集計データである。
【００７０】
第２復号部４０４は、第２準同型暗号の秘密鍵（第２秘密鍵）を有し、第２暗号集計データを、この第２秘密鍵を用いて復号する。第２復号部４０４は、復号された第１暗号集計データを通信部４０２に出力する。
【００７１】
なお、第２復号部４０４は、例えば図２に示す制御部１０２及びワークメモリとしての主記憶部１０４により実現されうる。通信部４０２は、例えば通信部１０８により実現されうる。
【００７２】
（情報処理装置５０）
情報処理装置５０は、部分集計の結果を希望する第１利用者により操作されるパーソナルコンピュータなどである。情報処理装置５０は、クラウド側に部分集計を依頼し、情報処理装置４０から第１暗号集計データを受信し、秘密鍵を用いて復号する。
【００７３】
上記機能を果たすため、情報処理装置５０は、通信部５０２、第１復号部５０４、及び表示部５０６を少なくとも有する。
【００７４】
通信部５０２は、クラウド側（情報処理装置１０）に対し、属性情報を指定して、その属性情報に対応するデータの部分集計要求を行う。通信部５０２は、情報処理装置４０から第１暗号集計データを受信する。
【００７５】
第１復号部５０４は、第１準同型暗号の秘密鍵（第１秘密鍵）を有し、第１暗号集計データを、この第１秘密鍵を用いて復号する。第１復号部５０４は、復号された部分集計データを、表示部５０６に出力する。
【００７６】
表示部５０６は、第１復号部５０４により復号された部分集計データを表示する。これにより、第１利用者は、指定した属性情報に対応する部分集計結果を知ることができる。
【００７７】
なお、第１復号部５０４は、例えば図２に示す制御部１０２及びワークメモリとしての主記憶部１０４により実現されうる。通信部５０２は、例えば通信部１０８により実現されうる。表示部５０６は、例えば液晶ディスプレイなどである。
【００７８】
＜部分集計が可能になることの説明＞
まず、暗号操作としての加算操作可能な準同型暗号方式として、Ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ方式がある。ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ方式では、上記の式（２）が成り立つ。ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ方式は、Ｅ（）と表記される。
【００７９】
次に、ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ方式の構成を簡単に説明する。群Ｇと位数ｑの元ｇが固定される。また、ｑ以下の乱数ｄが選ばれ、ｈ＝ｇｄとおく。
【００８０】
このとき、（Ｇ，ｇ，ｈ）が公開鍵情報となり、ｄが秘密鍵情報となる。平文データｍに対して、ｒがランダムに選ばれ、ｃ１＝ｇｒ，ｃ２＝ｇｍ＊ｈｒとし、平文データｍの暗号データがＥ（ｍ）＝（ｃ１，ｃ２）となる。暗号データが生成される際には、公開鍵情報しか利用しないことに注意する。
【００８１】
暗号データＥ（ｍ）＝（ｃ１，ｃ２）は、秘密鍵情報ｄを用いて復号される場合、まずｔ＝ｃ２／ｃ１ｄが計算される。次に、ｔ＝ｇｍを満たすので、このｍを求めることで、復号データｍが得られる。
【００８２】
２つの平文ｍ，ｍ'に対応する暗号データＥ（ｍ）＝（ｃ１，ｃ２），Ｅ（ｍ'）＝（ｃ１'，ｃ２'）に対して、次の式（４）が計算される。
Ｅ（ｍ）＊Ｅ（ｍ'）＝（ｃ１＊ｃ１'，ｃ２＊ｃ２'）＝（ｇｒ＋ｒ'，ｇｍ＋ｍ'＊ｈｒ＋ｒ'）  ・・・式（４）
式（４）を計算することで、このデータは、加算された平文データｍ＋ｍ'の暗号文に対応することが分かる。
【００８３】
これにより、ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ方式は、Ｅ（ｍ）＊Ｅ（ｍ'）＝Ｅ（ｍ＋ｍ'）を満たす準同型暗号方式であることが分かる。
【００８４】
ここで、第２準同型暗号（Ｆ（）と表記）を用いて、二重暗号化データＦ（Ｅ（ｍ））の秘匿部分集計システム１を実現するためには、Ｆ（Ｍ＊Ｍ'）＝Ｆ（Ｍ）＊Ｆ（Ｍ'）を満たす乗算操作可能な準同型暗号方式Ｆを選択する必要がある。
【００８５】
その理由としては、平文ｍ，ｍ'に対して、まず第１準同型暗号Ｅを用いて暗号データＭ＝Ｅ（ｍ），Ｍ'＝Ｅ（ｍ'）が生成される。
【００８６】
次に、Ｍ，Ｍ'の準同型暗号Ｆに対する暗号データＦ（Ｍ），Ｆ（Ｍ'）を生成することで、二重暗号化データＦ（Ｍ）＝Ｆ（Ｅ（ｍ）），Ｆ（Ｍ'）＝Ｆ（Ｅ（ｍ'））が生成される。
【００８７】
ここで、Ｆの性質Ｆ（Ｍ＊Ｍ'）＝Ｆ（Ｍ）＊Ｆ（Ｍ'）を利用すると、次の式（５）が成り立つ。
Ｆ（Ｍ）＊Ｆ（Ｍ'）＝Ｆ（Ｍ＊Ｍ'）＝Ｆ（Ｅ（ｍ）＊Ｅ（ｍ'））＝Ｆ（Ｅ（ｍ＋ｍ'））  ・・・式（５）
そこで、Ｅ，Ｆの秘密鍵を用いて復号することで、平文の部分集計値ｍ＋ｍ'を求めることができる。
【００８８】
よって、上記の第１準同型暗号と第２準同型暗号とを用いることで、秘匿部分集計システム１に適用することができる。そこで、Ｆ（Ｍ＊Ｍ'）＝Ｆ（Ｍ＊Ｍ'）を満たす乗算操作可能な第２準同型暗号方式Ｆとして、ＥｌＧａｍａｌ方式がある。
【００８９】
第１準同型暗号Ｅのときと同様、（Ｇ，ｇ）が固定される。また、ｇの位数ｑ以下の乱数ｅが選ばれ、ｆ＝ｇｅとおく。
【００９０】
このとき、（Ｇ，ｇ，ｆ）がＦの公開鍵情報となり、ｅがＦの秘密鍵情報となる。平文データＭに対して、ｒがランダムに選ばれ、Ｃ１＝ｇｒ，Ｃ２＝Ｍ＊ｆ＾ｅとする。平文データＭの暗号データは、Ｆ（Ｍ）＝（Ｃ１，Ｃ２）となる。また、暗号データＦ（Ｍ）＝（Ｃ１，Ｃ２）は、秘密鍵情報ｅを用いて復号される場合、まずＴ＝Ｃ２／Ｃ１＾ｅを計算することで、平文データＭが得られる。
【００９１】
２つの平文Ｍ，Ｍ'に対応する暗号データＦ（Ｍ），Ｆ（Ｍ'）に対して、次の式（５）が計算される。
Ｆ（Ｍ）＊Ｆ（Ｍ'）＝（Ｃ１＊Ｃ１'，Ｃ２＊Ｃ２'）＝（ｇｒ＋ｒ'，（Ｍ＊Ｍ'）＊ｆ＾（ｒ＋ｒ'））  ・・・式（５）
式（５）を計算することで、平文データＭ＊Ｍ'に対応する暗号データが生成される。
【００９２】
これにより、ＥｌＧａｍａｌ方式Ｆは、Ｆ（Ｍ＊Ｍ'）＝Ｆ（Ｍ）＊Ｆ（Ｍ'）を満たす準同型暗号方式であることが分かる。
【００９３】
次に、Ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ方式ＥとＥｌＧａｍａｌ方式Ｆを利用した実施例の秘匿部分集計システム１に適した二重暗号化方式について説明する。
【００９４】
平文データｍに対して、まずＥの暗号データＥ（ｍ）＝（ｃ１，ｃ２）が生成される。次に、Ｅ（ｍ）＝（ｃ１，ｃ２）に対して、Ｆの暗号データＦ（Ｅ（ｍ））＝（Ｆ（ｃ１），Ｆ（ｃ２））が生成される。これにより、ｍの二重暗号化データＦ（Ｅ（ｍ））が生成される。
【００９５】
このとき、２つの平文データｍ，ｍ'に対して、二重暗号化データＦ（Ｅ（ｍ））＝（Ｆ（ｃ１），Ｆ（ｃ２）），Ｆ（Ｅ（ｍ'））＝（Ｆ（ｃ１'），Ｆ（ｃ２'））を考える。これらの二重暗号化データを用いて暗号操作を行うことで、次の式（６）が成り立つ。
【００９６】
【数４】
2013205655.tif 000006
【００９７】
よって、暗号Ｅと暗号Ｆの組み合わせは、実施例の秘匿部分集計システム１に適する暗号方式の組み合わせであることが分かる。ただし、上記式（６）の式変形は、Ｅ（ｍ）＝（ｃ１，ｃ２）＝（ｇｒ，ｇｍ＊ｈｒ），Ｅ（ｍ'）＝（ｃ１'，ｃ２'）＝（ｇｒ'，ｇｍ'＊ｈｒ'）と、（ｃ１＊ｃ１'，ｃ２＊ｃ２'）＝（ｇｒ＋ｒ'，ｇｍ＋ｍ'＊ｈｒ＋ｒ'）＝Ｅ（ｍ＋ｍ'）とから成立することが分かる。
【００９８】
＜動作＞
次に、秘匿部分集計システム１の各装置の動作について説明する。図５は、実施例における暗号化処理の一例を示すフローチャートである。
【００９９】
ステップＳ１０１で、第１暗号化部２０２は、情報提供者により指定された秘匿したデータを、第１準同型暗号の第１公開鍵を用いて暗号化する。
【０１００】
ステップＳ１０２で、第２暗号化部２０４は、暗号化された第１暗号化データを、第２準同型暗号の第２公開鍵を用いて暗号化する。
【０１０１】
ステップＳ１０３で、情報処理装置２０は、そのデータに対応する属性を含む属性情報を二重暗号化データに付加する。
【０１０２】
ステップＳ１０４で、通信部２０６は、二重暗号化データと属性情報とを、クラウド側に送信する。
【０１０３】
図６は、実施例における部分集計処理の一例を示すフローチャートである。図６に示すステップＳ２０１で、受信部３２４は、情報提供者が操作する情報処理装置２０から二重暗号化データと属性情報とを受信したか否かを判定する。データを受信していれば（ステップＳ２０１−ＹＥＳ）ステップＳ２０２に進み、データを受信していなければ（ステップＳ２０１−ＮＯ）ステップＳ２０３に進む。
【０１０４】
ステップＳ２０２で、記憶部３０４は、受信部３２４により受信された二重暗号化データと属性情報とを関連付けて記憶する。
【０１０５】
ステップＳ２０３で、受信部３２４は、外部の装置から部分集計の要求を受けたか否かを判定する。要求を受けていれば（ステップＳ２０３−ＹＥＳ）ステップＳ２０４に進み、要求を受けていなければ（ステップＳ２０３−ＮＯ）ステップＳ２０１に戻る。
【０１０６】
ステップＳ２０４で、暗号操作部３０６は、要求された属性情報に対応する二重暗号化データを記憶部３０４から取得し、暗号操作を行う。暗号操作部３０６は、暗号操作した結果の第２暗号集計データを送信部３２２に出力する。
【０１０７】
図７は、実施例における復号処理（その１）の一例を示すフローチャートである。図７に示すステップＳ３０１で、通信部４０２は、第２暗号集計データを受信する。
【０１０８】
ステップＳ３０２で、第２復号部４０４は、第２暗号集計データに対し、第２秘密鍵を用いて復号する。
【０１０９】
ステップＳ３０３で、通信部４０２は、第２秘密鍵で復号された第１暗号集計データを情報処理装置５０に送信する。なお、情報処理装置４０をクラウド側に設け、図７に示す処理は、クラウド側で行うようにしてもよい。
【０１１０】
図８は、実施例における復号処理（その２）の一例を示すフローチャートである。図８に示すステップＳ４０１で、通信部５０２は、第１暗号集計データを受信する。
【０１１１】
ステップＳ４０２で、第１復号部５０４は、第１暗号集計データに対し、第１秘密鍵を用いて復号する。
【０１１２】
ステップＳ４０３で、表示部５０６は、復号された部分集計結果のデータを表示し、第１利用者に知らせる。
【０１１３】
以上の処理により、クラウド側で、暗号化データのまま部分集計を行うことができる。また、第２秘密鍵を保持する第２利用者をクラウド側とは別に設けることで、第１秘密鍵を保持する第１利用者は、クラウド側にある各データを復号することはできない。
【０１１４】
＜適用例＞
次に、実施例における秘匿部分集計システム１の適用例について次の２つを説明する。まず、秘匿部分集計システム１を全国学力テストの集計システムに適用した例について説明する。
【０１１５】
図９は、適用例１を説明するための図である。適用例１では、国の機関（例えば文科省）が、第１準同型暗号方式と、第２準同型暗号方式とのそれぞれの鍵を生成する。国の機関は、各都道府県の集計者に第２準同型暗号方式の鍵（第２秘密鍵）を配布する。集計を依頼するのは、第２秘密鍵を保持する各都道府県の集計者である。
【０１１６】
この集計者は、クラウド側から取得した部分集計の二重暗号化データを取得し、保持している第２秘密鍵で復号し、国の機関に送信する。国の機関は、各都道府県の集計者から取得したデータを、第１秘密鍵で復号し、復号結果の都道府県別の集計結果を取得し、各都道府県の集計者に送信する。図９に示す適用例では、以下の手順で処理が行われる。
【０１１７】
（１）データ送信
各受験者は、情報処理装置２０などを操作することで、自分のテスト結果を第１の公開鍵で暗号化し、さらに第２の公開鍵で暗号化して二重暗号化データを生成する。属性情報は、例えば都道府県、性別である。各受験者の情報処理装置は、属性情報とともに二重暗号化データをクラウド側に送信する。
【０１１８】
（２）集計依頼
都道府県別の集計者が、自身の都道府県の集計結果を、クラウド側に依頼する。集計依頼は、例えば、都道府県＝東京、性別＝男性である。
【０１１９】
（３）秘匿部分集計
クラウド側のサーバとしての機能を果たす情報処理装置１０は、集計依頼に基づき、属性情報が東京、男性である二重暗号化データを取得し、平文データが加算されるよう暗号操作する。
【０１２０】
（４）集計結果の送信
クラウド側の情報処理装置１０は、集計者が操作する情報処理装置４０に対し、集計結果Ｓ（第２暗号集計データ）を送信する。
【０１２１】
（５）復号（その１）
各都道府県の集計者が操作する情報処理装置４０は、第２秘密鍵を用いて、暗号操作の結果Ｓを復号し、復号結果Ｔ（第１暗号集計データ）を生成する。
【０１２２】
（６）復号結果の送信
情報処理装置４０は、第２秘密鍵で復号した復号結果Ｔを、復号サーバ（情報処理装置５０）に送信する。
【０１２３】
（７）復号（その２）
国の機関の情報処理装置５０は、第１秘密鍵で復号結果Ｔをさらに復号する。これにより、部分集計結果が得られる。
【０１２４】
（８）集計結果を送信
国の機関の情報処理装置５０は、第１秘密鍵で復号した部分集計結果を、各都道府県の集計者が操作する情報処理装置４０に送信する。
【０１２５】
以上により、適用例１では、集計者は、各受験者のデータを知ることはできないが、部分集計結果を国の機関から取得することができる。また、国の機関は、部分集計結果を復号するが、各受験者のデータを知ることはできない。
【０１２６】
次に、秘匿部分集計システム１を都道府県別医療費の集計システムに適用した例について説明する。
【０１２７】
図１０は、適用例２を説明するための図である。適用例２では、国の機関（例えば厚生労働省）が、第１準同型暗号方式と、第２準同型暗号方式とのそれぞれの鍵を生成する。国の機関は、各都道府県の集計者に第２準同型暗号方式の鍵（第２秘密鍵）を配布する。集計を依頼するのは、第２秘密鍵を保持する各都道府県の集計者である。
【０１２８】
この集計者は、クラウド側から取得した部分集計の二重暗号化データを取得し、保持している第２秘密鍵で復号し、国の機関に送信する。国の機関は、各都道府県の集計者から取得したデータを、第１秘密鍵で復号し、復号結果を取得する。図１０に示す適用例では、以下の手順で処理が行われる。
（１）データ送信
各病院は、情報処理装置２０などを操作することで、自病院で支払われた年毎の医療費を第１公開鍵で暗号化し、さらに第２公開鍵で暗号化して二重暗号化データを生成する。属性情報は、例えば都道府県である。各病院の情報処理装置は、属性情報とともに二重暗号化データをクラウド側に送信する。
【０１２９】
（２）集計依頼
都道府県別の集計者が、自身の都道府県の集計結果を、クラウド側に依頼する。集計依頼は、例えば、都道府県＝東京都である。
【０１３０】
（３）秘匿部分集計
クラウド側のサーバとしての機能を果たす情報処理装置１０は、集計依頼に基づき、属性情報が東京都である二重暗号化データを取得し、平文データが加算されるよう暗号操作する。
【０１３１】
（４）集計結果の送信
クラウド側の情報処理装置１０は、集計者が操作する情報処理装置４０に対し、集計結果Ｓ（第２暗号集計データ）を送信する。
【０１３２】
（５）復号（その１）
各都道府県の集計者が操作する情報処理装置４０は、第２秘密鍵を用いて、暗号操作の結果Ｓを復号し、復号結果Ｔ（第１暗号集計データ）を生成する。
【０１３３】
（６）復号結果の送信
情報処理装置４０は、第２秘密鍵で復号した復号結果Ｔを、復号サーバ（情報処理装置５０）に送信する。
【０１３４】
（７）復号（その２）
国の機関の情報処理装置５０は、第１秘密鍵で復号結果Ｔをさらに復号する。これにより、部分集計結果が得られる。
【０１３５】
以上により、適用例１では、集計者は、各病院の医療費を知ることはできない。また、国の機関は、部分集計結果を復号するが、各病院の医療費を知ることはできない。
【０１３６】
以上、実施例によれば、二重暗号化データをサーバに送信し、サーバ上で二重暗号化データの演算のみを行うことで、サーバ上ではデータを秘匿した部分集計を行うことが可能となる。また、集計を行う秘密鍵を保持する利用者は、サーバ上にある暗号化された個々のデータＦ（Ｅ（ｍｉ））を見ることはできない。
【０１３７】
さらに、秘匿部分集計システム１では、部分集計だけではなく、各二重暗号化データの更新、追加、削除を行っても、秘匿部分集計を行うことができる。例えば、マスク値を用いる場合では、二重暗号化データの更新、追加、削除を行うことはできない。
【０１３８】
［変形例］
なお、前述した実施例で説明した処理を実現するためのプログラムを記録媒体に記録することで、実施例での処理をコンピュータに実施させることができる。例えば、このプログラムを記録媒体に記録し、このプログラムが記録された記録媒体をコンピュータに読み取らせて、前述した処理を実現させることも可能である。
【０１３９】
なお、記録媒体は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。この記録媒体には、搬送波は含まれない。
【０１４０】
以上、実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。
【０１４１】
なお、以上の各実施例に関し、さらに以下の付記を開示する。
（付記１）
二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文データの部分集計を可能とする第１準同型暗号と第２準同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを取得し、
取得された暗号化データと属性情報とを関連付けて記憶部に記憶し、
所定の属性情報に対応する複数の暗号化データを演算する処理）をコンピュータに実行させるためのプログラム。
（付記２）
前記二重に暗号化された暗号化データは、
暗号化データを演算して平文データの加算が可能な前記第１準同型暗号により暗号化されたデータが、暗号化データを演算して平文の乗算が可能な前記第２準同型暗号により暗号化されたデータである付記１記載のプログラム。
（付記３）
前記第１準同型暗号は、Ａｄｄｉｔｉｖｅ  ＥｌＧａｍａｌ暗号であり、
前記第２準同型暗号は、ＥｌＧａｍａｌ暗号である付記２記載のプログラム。
（付記４）
前記演算結果に対して前記第２準同型暗号に対応する復号処理を行い、
復号されたデータを出力する処理をさらにコンピュータに実行させるための付記１乃至３いずれか一項に記載のプログラム。
（付記５）
二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文の部分集計を可能とする第１準同型暗号と第２準同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを取得し、
取得された暗号化データと属性情報とを関連付けて記憶部に記憶し、
所定の属性情報に対応する複数の暗号化データを演算する処理をコンピュータが実行する情報処理方法。
（付記６）
二重に暗号化された暗号化データを複数用いて演算することで該暗号化データの平文の部分集計を可能とする第１準同型暗号と第２順同型暗号とを用いて二重に暗号化された暗号化データと、属性情報とを受信する受信部と、
受信された暗号化データと属性情報とを関連付けて記憶する記憶部と、
所定の属性情報に対応する複数の暗号化データを演算する暗号操作部と、
を備える情報処理装置。
【符号の説明】
【０１４２】
１  秘匿部分集計システム
１０、２０、３０、４０、５０情報処理装置
１０２  制御部
１０４  主記憶部
１０６  補助記憶部
３０２  通信部
３０４  記憶部
３０６  暗号操作部
【図１】
2013205655.tif 000007
【図２】
2013205655.tif 000008
【図３】
2013205655.tif 000009
【図４】
2013205655.tif 000010
【図５】
2013205655.tif 000011
【図６】
2013205655.tif 000012
【図７】
2013205655.tif 000013
【図８】
2013205655.tif 000014
【図９】
2013205655.tif 000015
【図１０】
2013205655.tif 000016