(57)【特許請求の範囲】
【請求項１】
加算について準同型性を持つ公開鍵暗号に基づき構成された環準同型を計算可能な公開鍵暗号方法であって、
受信装置が、任意の２つの大きな素数p,q、任意の整数ｇ、ランダムな整数ｒを選び、n＝p・qとして、c0＝g・rnmod n2を求め、ランダムな整数a,bをa+b＝1 mod nとなる数として選び、μ＝ｃ0a+bを求め、n,g,c0,μを公開鍵として公開し、p,q,a,bを秘密鍵として保持する鍵生成ステップと、
送信装置が、ランダムな整数xを選び、入力された２つのメッセージm1,m2に対する暗号文c1,c2をc1＝gm1・xn mod n2、c2＝gm2・xn mod n2により生成し、処理装置に送信する暗号文生成ステップと、
処理装置が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄを選ぶ第１準備ステップと、
処理装置が、ランダムな２つの整数r1,r2を選び、暗号文w11＝c1・c0r1,w21＝c0r2を計算して、受信装置に送信する第１処理サブステップと、
受信装置が、暗号文w11,w21からメッセージm11,m21をそれぞれ復号し、w'＝w11a・m21
・w21b・m11を計算して処理装置に返信する第１返信サブステップと、
処理装置が、w＝w'・μ-r1・r2を計算し、u＝r2とし、L2の元(υ,s)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果として第１通信ステップの処理を終了し、存在しなければその(w,u)をリストL1に追加する第２処理サブステップと、
処理装置が、ランダムな２つの整数r3,r4を選び、暗号文w12＝c1・c0r3,w22＝c0r4を計算して、受信装置に送信する第３処理サブステップと、
受信装置が、暗号文w12,w22からメッセージm12,m22をそれぞれ復号し、υ'＝w12a・m22
・w22b・m12を計算して処理装置に返信する第２返信サブステップと、
処理装置が、υ＝υ'・μ-r3・r4を計算し、s＝r2とし、L1の元(w,u)でwd・s＝υu mod
n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果として第１通信ステップの処理を終了し、存在しなければその(υ,s)をリストL2に追加する第４処理サブステップ、
の各サブステップを最大t回 (tはセキュリティパラメータkに対して無視できない値）繰り返して実行し、計算結果としての(w,u)が得られない場合には処理を中止する第１通信
ステップと、
計算結果としての(w,u)が得られた場合に、
処理装置が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄを選ぶ第２準備ステップと、
処理装置が、リストL3を空集合で初期化する第５処理サブステップと、
処理装置が、ランダムな２つの整数r5,r6を選び、暗号文w13＝c1r5,w23＝c2・c0u・r6
を計算して、受信装置に送信する第６処理サブステップと、
受信装置が、暗号文w13,w23からメッセージm13,m23をそれぞれ復号し、z'＝w13a・m23
・w23b・m13を計算して処理装置に返信する第３返信サブステップと、
処理装置が、z''＝z'・w-r5・r6を計算し、(z'',r5)をリストL3に追加する第７処理サブステップと、
処理装置が、リストL3の全ての元 (z1,x1),(z2,x2),・・・,(zi,xi),・・・について、x1,x2,・・・,xi,・・・の最大公約数が１であるかどうかを判定し、もし１であれば、Σiyi・xi＝１となる整数y1,y2,・・・,yi,・・・を計算してz＝Πiziyiとし、１でなければ第５処理サブステップに戻る、第８処理サブステップと、
処理装置が、L2の元(υ,s)で、zd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置に返信して第２通信ステップの処理を終了し、存在しなければそのzをリストL1に追加する第９処理サブステップと、
処理装置が、ランダムな２つの整数r7,r8を選び、暗号文w14＝c1r7,w24＝c2d・c0u・r8を計算して、受信装置に送信する第１０処理サブステップと、
受信装置が、暗号文w14,w24からメッセージm14,m24をそれぞれ復号し、υ'＝w14a・m24
・w24b・m14を計算して処理装置に返信する第４返信サブステップと、
処理装置が、υ＝υ'・μ-r7・r8を計算し、s＝r7とし、L1の元zでzd・s＝υu mod n2
またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置に返信して第２通信ステップの処理を終了し、存在しなければ(υ,s)をリストL2に追加する第１１処理サブステップ、
の各サブステップを最大t回(tはセキュリティパラメータkに対して無視できない値）繰り返して実行し、暗号文としてのｚが得られない場合には処理を中止する第２通信ステップと、
受信装置が、処理装置から受信した暗号文ｚからメッセージm1・m2を、
【数３】
0005496756.tif 000004
により復号する復号ステップと、
を実行する環準同型を計算可能な公開鍵暗号方法。
【請求項２】
加算について準同型性を持つ公開鍵暗号に基づき構成された環準同型を計算可能な公開鍵暗号システムであって、
送信装置と処理装置と受信装置とを備え、
受信装置が、任意の２つの大きな素数p,q、任意の整数ｇ、ランダムな整数ｒを選び、n＝p・qとして、c0＝g・rnmod n2を求め、ランダムな整数a,bをa+b＝1 mod nとなる数として選び、μ＝ｃ0a+bを求め、n,g,c0,μを公開鍵として公開し、p,q,a,bを秘密鍵として保持する鍵生成ステップと、
送信装置が、ランダムな整数xを選び、入力された２つのメッセージm1,m2に対する暗号文c1,c2をc1＝gm1・xn mod n2、c2＝gm2・xn mod n2により生成し、処理装置に送信する暗号文生成ステップと、
処理装置が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄを選ぶ第１準備ステップと、
処理装置が、ランダムな２つの整数r1,r2を選び、暗号文w11＝c1・c0r1,w21＝c0r2を計算して、受信装置に送信する第１処理サブステップと、
受信装置が、暗号文w11,w21からメッセージm11,m21をそれぞれ復号し、w'＝w11a・m21
・w21b・m11を計算して処理装置に返信する第１返信サブステップと、
処理装置が、w＝w'・μ-r1・r2を計算し、u＝r2とし、L2の元(υ,s)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果として第１通信ステップの処理を終了し、存在しなければその(w,u)をリストL1に追加する第２処理サブステップと、
処理装置が、ランダムな２つの整数r3,r4を選び、暗号文w12＝c1・c0r3,w22＝c0r4を計算して、受信装置に送信する第３処理サブステップと、
受信装置が、暗号文w12,w22からメッセージm12,m22をそれぞれ復号し、υ'＝w12a・m22
・w22b・m12を計算して処理装置に返信する第２返信サブステップと、
処理装置が、υ＝υ'μ-r3・r4を計算し、s＝r2とし、L1の元(w,u)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、
その(w,u)を計算結果として第１通信ステップの処理を終了し、存在しなければその(υ,s)をリストL2に追加する第４処理サブステップ、
の各サブステップを最大t回(tはセキュリティパラメータkに対して無視できない値）繰り返して実行し、計算結果としての(w,u)が得られない場合には処理を中止する第１通信ス
テップと、
計算結果としての(w,u)が得られた場合に、
処理装置が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄを選ぶ第２準備ステップと、
処理装置が、リストL3を空集合で初期化する第５処理サブステップと、
処理装置が、ランダムな２つの整数r5,r6を選び、暗号文w13＝c1r5,w23＝c2・c0u・r6
を計算して、受信装置に送信する第６処理サブステップと、
受信装置が、暗号文w13,w23からメッセージm13,m23をそれぞれ復号し、z'＝w13a・m23
・w23b・m13を計算して処理装置に返信する第３返信サブステップと、
処理装置が、z''＝z'・w-r5・r6を計算し、(z'',r5)をリストL3に追加する第７処理サブステップと、
処理装置が、リストL3の全ての元 (z1,x1),(z2,x2),・・・,(zi,xi),・・・について、x1,x2,・・・,xi,・・・の最大公約数が１であるかどうかを判定し、もし１であれば、Σiyi・xi＝１となる整数y1,y2,・・・,yi,・・・を計算してz＝Πiziyiとし、１でなければ第５処理サブステップに戻る、第８処理サブステップと、
処理装置が、L2の元(υ,s)で、zd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置に返信して第２通信ステップの処理を終了し、存在しなければそのzをリストL1に追加する第９処理サブステップと、
処理装置が、ランダムな２つの整数r7,r8を選び、暗号文w14＝c1r7,w24＝c2d・c0u・r8を計算して、受信装置に送信する第１０処理サブステップと、
受信装置が、暗号文w14,w24からメッセージm14,m24をそれぞれ復号し、υ'＝w14a・m24
・w24b・m14を計算して処理装置に返信する第４返信サブステップと、
処理装置が、υ＝υ'μ-r7・r8を計算し、s＝r7とし、L1の元zでzd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置に返信して第２通信ステップの処理を終了し、存在しなければ(υ,s)をリストL2に追加する第１１処理サブステップ、
の各サブステップを最大t回 (tはセキュリティパラメータkに対して無視できない値）繰り返して実行し、暗号文としてのｚが得られない場合には処理を中止する第２通信ステップと、
受信装置が、処理装置から受信した暗号文ｚからメッセージm1・m2を、
【数４】
0005496756.tif 000005
により復号する復号ステップと、
を実行する環準同型を計算可能な公開鍵暗号システム。
【請求項３】
任意の２つの大きな素数p,q、任意の整数ｇ、ランダムな整数ｒから、n＝p・qとしてc0＝g・rnmod n2により求められたc0、a+b＝1 mod nとなる数として選ばれたランダムな整数a,bからμ＝ｃ0a+bにより求められたμに関し、n,g,c0,μが公開鍵として公開され、これらを用い、
２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄを選び、
ランダムな２つの整数r1,r2を選び、入力された暗号文c1について、暗号文w11＝c1・c0r1,w21＝c0r2を計算して出力し、
入力されたw'＝w11a・m21・w21b・m11（m11,m21はw11,w21から復号されたメッセージ）について、w＝w'・μ-r1・r2を計算し、u＝r2とし、L2の元(υ,s)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果とし、存在しなければその(w,u)をリストL1に追加し、
ランダムな２つの整数r3,r4を選び、暗号文w12＝c1・c0r3,w22＝c0r4を計算して出力し、
入力されたυ'＝w12a・m22・w22b・m12（m12,m22はw12,w22から復号されたメッセージ
）について、υ＝υ'・μ-r3・r4を計算し、s＝r2とし、L1の元(w,u)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、
その(w,u)を計算結果とし、存在しなければその(υ,s)をリストL2に追加し、
前記ランダムな２つの整数r1,r2の選定以降の処理を最大t回(tはセキュリティパラメータkに対して無視できない値）繰り返して実行して、計算結果としての(w,u)が得られない場合には処理を中止し、
計算結果としての(w,u)が得られた場合に、
２つのリストL1,L2を空集合で初期化し、
リストL3を空集合で初期化し、
ランダムな２つの整数r5,r6を選び、暗号文w13＝c1r5,w23＝c2・c0u・r6を計算して出力し、
入力されたz'＝w13a・m23・w23b・m13（m13,m23はw13,w23から復号されたメッセージ）について、z''＝z'・w-r5・r6を計算し、(z'',r5)をリストL3に追加し、
リストL3の全ての元 (z1,x1),(z2,x2),・・・,(zi,xi),・・・について、x1,x2,・・・,xi,・・・の最大公約数が１であるかどうかを判定し、もし１であれば、Σiyi・xi＝１となる整数y1,y2,・・・,yi,・・・を計算してz＝Πiziyiとし、１でなければ前記リストL3の空集合による初期化以降の処理を再度実行し、
L2の元(υ,s)で、zd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として出力して処理を終了し、存在しなければそのzをリストL1に追加し、
ランダムな２つの整数r7,r8を選び、暗号文w14＝c1r7,w24＝c2d・c0u・r8を計算して出力し、
入力されたυ'＝w14a・m24・w24b・m14（m14,m24はw14,w24から復号されたメッセージ）について、υ＝υ'・μ-r7・r8を計算し、s＝r7とし、L1の元zでzd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として出力して処理を終了し、存在しなければ(υ,s)をリストL2に追加し、
前記リストL3の空集合による初期化以降の処理を最大t回 (tはkに対して無視できない値）繰り返して実行し、暗号文としてのｚが得られない場合には処理を中止する
処理装置。
【請求項４】
任意の２つの大きな素数p,q、任意の整数ｇ、ランダムな整数ｒを選び、n＝p・qとして、c0＝g・rnmod n2を求め、ランダムな整数a,bをa+b＝1 mod nとなる数として選び、μ＝ｃ0a+bを求め、n,g,c0,μを公開鍵として公開し、p,q,a,bを秘密鍵として保持し、
入力された暗号文w1,w2からメッセージm1,m2をそれぞれ復号し、w1a・m2・w2b・m1を計算して出力し、
入力された暗号文zからメッセージm1・m2を、
【数５】
0005496756.tif 000006
により復号する
受信装置。
【請求項５】
請求項２乃至４のいずれかに記載のシステム又は装置としてコンピュータを機能させるためのプログラム。
【請求項６】
請求項２乃至４のいずれかに記載のシステム又は装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータによる計算方式で、情報を暗号化したまま処理する環準同型を計算可能な公開鍵暗号方法、環準同型を計算可能な公開鍵暗号システム、送信装置、処理装置、受信装置、それらのプログラム及び記録媒体に関する。
【背景技術】
【０００２】
暗号方式において、メッセージを暗号化したまま演算することができる方式を準同型暗号とよぶ。例えば、メッセージ（数値）ａ、ｂの暗号文 Ｅ(ａ)、Ｅ(ｂ)から、ａ＋ｂの暗号文Ｅ(ａ＋ｂ)が計算できるもの（加算に関して準同型）や、ａ・ｂの暗号文Ｅ(ａ・ｂ)が計算できるもの（乗算に関して準同型）をいう。加算に関して準同型暗号の例として非特許文献１のPaillier暗号が、乗算に関して準同型暗号の例としてElGamal暗号やＲＳＡ暗号が、それぞれ挙げられる。
【０００３】
乗算と加算の双方に関して準同型性を持つ暗号は環準同型暗号と呼ばれる。環準同型暗号では、平文に関する多項式の計算を暗号化したまま行うことができる。この性質は、暗号文を計算することによる、メッセージに対する論理回路の評価やデータベースの検索を可能にする。そのため、環準同型暗号の設計は長年の課題であったが、近年、Gentryが非特許文献２において環準同型暗号が存在することを示した。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Pascal Paillier, "Public-Key Cryptosystems Based on Composite Degree Residuosity Classes", EUROCRYPT'99, vol. 1592 of Lecture Notes in Computer Science, 2009, p.223-238
【非特許文献２】Craig Gentry, "Fully Homomorphic Encryption Using Ideal Lattices", Proceedings of the 41st annual ACM symposium on Theory of computing, 2009, p.169-178
【発明の概要】
【発明が解決しようとする課題】
【０００５】
Gentryが非特許文献２において示した論証は、実用的な効率で動作する環準同型暗号を具体的に構成したものではなく、少なくとも効率性に問題がある。
【０００６】
本発明の目的は、暗号文に対する演算で平文の加法に対応する新たな暗号文および平文の乗法に対応する新たな暗号文を計算可能で実用的な効率性を有する、環準同型を計算可能な公開鍵暗号方法、環準同型を計算可能な公開鍵暗号システム、送信装置、処理装置、受信装置、それらのプログラム及び記録媒体を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の環準同型を計算可能な公開鍵暗号方法及び公開鍵暗号システムは、加算について準同型性を持つ公開鍵暗号に基づき構成された公開鍵暗号方法及び公開鍵暗号システムであって、送信装置と処理装置と受信装置とが連携して、鍵生成ステップと暗号文生成ステップと第１準備ステップと第１通信ステップと第２準備ステップと第２通信ステップと復号ステップとを実行する。
【０００８】
鍵生成ステップでは、受信装置が、任意の２つの大きな素数p,q、任意の整数ｇ、ランダムな整数ｒを選び、n＝p・qとして、c0＝g・rn mod n2を求め、ランダムな整数a,bをa+b＝1 mod nとなる数として選び、μ＝ｃ0a+bを求め、n,g,c0,μを公開鍵として公開し、p,q,a,bを秘密鍵として保持する。
【０００９】
暗号文生成ステップでは、送信装置が、ランダムな整数xを選び、入力された２つのメッセージm1,m2に対する暗号文c1,c2をc1＝gm1・xn mod n2、c2＝gm2・xn mod n2により生成し、処理装置に送信する。
【００１０】
第１準備ステップでは、処理装置が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄを選ぶ。
【００１１】
第１通信ステップでは、第１処理サブステップと第１返信サブステップと第２処理サブステップと第３処理サブステップと第２返信ステップと第４処理サブステップを、最大ｔ回（ｔはセキュリティパラメータｋに対して無視できない値）繰り返して実行し、計算結果としての(w,u)が得られない場合には処理を中止する。
【００１２】
第１処理サブステップでは、処理装置が、ランダムな２つの整数r1,r2を選び、暗号文w11＝c1・c0r1,w21＝c0r2を計算して、受信装置に送信する。
【００１３】
第１返信サブステップでは、受信装置が、暗号文w11,w21からメッセージm11,m21をそれぞれ復号し、w'＝w11a・m21・w21b・m11を計算して処理装置に返信する。
【００１４】
第２処理サブステップでは、処理装置が、w＝w'・μ-r1・r2を計算し、u＝r2とし、L2の元(υ,s)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果として第１通信ステップの処理を終了し、存在しなければその(w,u)をリストL1に追加する。
【００１５】
第３処理サブステップでは、処理装置が、ランダムな２つの整数r3,r4を選び、暗号文w12＝c1・c0r3,w22＝c0r4を計算して、受信装置に送信する。
【００１６】
第２返信サブステップでは、受信装置が、暗号文w12,w22からメッセージm12,m22をそれぞれ復号し、υ'＝w12a・m22・w22b・m12を計算して処理装置に返信する。
【００１７】
第４処理サブステップでは、処理装置が、υ＝υ'・μ-r3・r4を計算し、s＝r2とし、L1の元(w,u)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果として第１通信ステップの処理を終了し、存在しなければその(υ,s)をリストL2に追加する。
【００１８】
第２準備ステップでは、処理装置が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄを選ぶ。
【００１９】
第２通信ステップでは、第５処理サブステップと第６処理サブステップと第３返信サブステップと第７処理サブステップと第８処理サブステップと第９処理サブステップと第１０処理サブステップと第４返信サブステップと第１１処理サブステップを、最大t回繰り返して実行し、暗号文としてのｚが得られない場合には処理を中止する。
【００２０】
第５処理サブステップでは、処理装置が、リストL3を空集合で初期化する。
【００２１】
第６処理サブステップでは、処理装置が、ランダムな２つの整数r5,r6を選び、暗号文w13＝c1r5,w23＝c2・c0u・r6を計算して、受信装置に送信する。
【００２２】
第３返信サブステップでは、受信装置が、暗号文w13,w23からメッセージm13,m23をそれぞれ復号し、z'＝w13a・m23・w23b・m13を計算して処理装置に返信する。
【００２３】
第７処理サブステップでは、処理装置が、z''＝z'w-r5・r6を計算し、(z'',r5)をリストL3に追加する。
【００２４】
第８処理サブステップでは、処理装置が、リストL3の全ての元 (z1,x1),(z2,x2),・・・,(zi,xi),・・・について、x1,x2,・・・,xi,・・・の最大公約数が１であるかどうかを判定し、もし１であれば、Σiyi・xi＝１となる整数y1,y2,・・・,yi,・・・を計算してz＝Πiziyiとし、１でなければ第５処理サブステップに戻る。
【００２５】
第９処理サブステップでは、処理装置が、L2の元(υ,s)で、zd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置に返信して第２通信ステップの処理を終了し、存在しなければそのzをリストL1に追加する。
【００２６】
第１０処理サブステップでは、処理装置が、ランダムな２つの整数r7,r8を選び、暗号文w14＝c1r7,w24＝c2d・c0u・r8を計算して、受信装置に送信する。
【００２７】
第４返信サブステップでは、受信装置が、暗号文w14,w24からメッセージm14,m24をそれぞれ復号し、υ'＝w14a・m24・w24b・m14を計算して処理装置に返信する。
【００２８】
第１１処理サブステップでは、処理装置が、υ＝υ'・μ-r7・r8を計算し、s＝r7とし、L1の元zでzd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置に返信して第２通信ステップの処理を終了し、存在しなければ(υ,s)をリストL2に追加する。
【００２９】
復号ステップでは、受信装置が処理装置から受信した暗号文ｚからメッセージm1・m2を、
【００３０】
【数１】
0005496756.tif 000002
【００３１】
により復号する。
【発明の効果】
【００３２】
本発明の環準同型を計算可能な公開鍵暗号方法、環準同型を計算可能な公開鍵暗号システム、送信装置、処理装置、受信装置、それらのプログラム及び記録媒体によれば、実用的な効率性にて暗号文に対する演算で平文の加法に対応する新たな暗号文および平文の乗法に対応する新たな暗号文を計算することができる。これにより、公開鍵暗号の利便性が向上し、特に、代数的回路に対してデータを暗号化したままメッセージに対する演算を行うことが可能となる。
【図面の簡単な説明】
【００３３】
【図１】環準同型を計算可能な公開鍵暗号システム１００の構成を示すブロック図。
【図２】環準同型を計算可能な公開鍵暗号方法の処理フロー例を示す図。
【発明を実施するための形態】
【００３４】
図１に、本発明の環準同型を計算可能な公開鍵暗号システム１００の構成を示すブロック図を、図２に当該システムに係る公開鍵暗号方法の各処理ステップのフロー図を示す。本発明の環準同型を計算可能な公開鍵暗号システム１００は、送信装置１１０と処理装置１２０と受信装置１３０とから構成される。
【００３５】
本発明においては、加算について準同型性を持つ公開鍵暗号方式であるPaillier暗号（非特許文献１）を基礎として、メッセージを暗号化したまま安全に乗算を行うシステムを構成する。なお、加算について準同型性を持つ公開鍵暗号方式においては、２つのPaillier暗号文c1,c2の加算の演算は、c1・c2 mod n2である。すなわち、c1を復号して得られる平文がm1で、c2を復号して得られる平文がm2であるとき、c1・c2 mod n2を復号して得られる平文はm1+m2 mod nである。従って、加算については本発明のシステム構成の下で、送信装置１１０で２つの平文m1,m2について生成された２つのPaillier暗号文c1,c2を処理装置１２０に送信し、それを受信した処理装置１２０がc1・c2 mod n2の演算を行い、これを受信装置１３０に送信することで、受信装置１３０は平文m1+m2 mod nを復号することができる。
【００３６】
一方、乗算については安全な乗算を実現するため、処理装置１２０と受信装置１３０との間で通信しつつ処理を行う。具体的には、処理装置１２０から任意の２つのPaillier暗号文w1,w2が受信装置１３０に与えられたとき、受信装置１３０は、w1を復号してメッセージm1を、w2を復号してメッセージm2を計算した上で、w1a・m2・w2b・m1（a,bは受信装置１３０の秘密鍵）を計算して処理装置１２０に返信する。このように処理装置１２０を利用することで安全性が損なわれることがないよう、本発明では誤りを訂正することが可能な形態でアルゴリズムを構成する。本発明のアルゴリズムでは、「処理装置がメッセージの内容を知ることがないという特徴と、処理装置が受信装置と通信しつつ暗号文を処理する際に、処理中の暗号文が受信者に漏洩することがないという特徴と、処理装置が受信装置と通信しつつ暗号文を処理する際に、何者かが正規の受信者になりすましを試みた場合に処理装置は真の受信装置による応答か否かを選別することが可能であるという特徴とを有する。
【００３７】
以下、環準同型を計算可能な公開鍵暗号システム１００の具体的な処理内容について説明する。
【００３８】
まず、受信装置１３０が、通信に先立ち秘密鍵と公開鍵を生成する（Ｓ１）。具体的には、Paillier暗号を構成するために好適な任意の２つの大きな素数p,qと、Paillier暗号を構成するために好適な整数ｇ(0〜n2-1の元で、例えば２)と、ランダムな整数r（例えば0≦r＜n）とを選ぶ。そして、n＝p・qとして、c0＝g・rn mod n2を求め、ランダムな整数a,bをa+b＝1 mod nとなる数として選び、μ＝ｃ0a+bを求め、n,g,c0,μを公開鍵として公開し、p,q,a,bを秘密鍵として保持する。
【００３９】
続いて、送信装置１１０が、ランダムな整数x（例えば0≦x＜n）を選び、入力された２つのメッセージm1,m2（例えば0≦m1＜n、0≦m2＜n）に対するPaillier暗号文c1,c2をc1＝gm1・xn mod n2、c2＝gm2・xn mod n2により生成し、処理装置１２０に送信する（Ｓ２）。
【００４０】
続いて、処理装置１２０と受信装置１３０は、以下の処理によりc0とc1との乗算に関する量を計算する。
【００４１】
まず、処理装置１２０が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄ(例えば2≦d≦2k、kはセキュリティパラメータ)を選ぶ（Ｓ３）。
【００４２】
続いて、ランダムな２つの整数r1,r2(例えば1≦r1≦2k・n2、1≦r2≦2k・n2)を選び、Paillier暗号文w11＝c1・c0r1,w21＝c0r2を計算して、受信装置１３０に送信する（Ｓ４−１）。
【００４３】
続いて、受信装置１３０が、Paillier暗号文w11,w21からメッセージm11,m21をそれぞれ復号し、w'＝w11a・m21・w21b・m11を計算して処理装置に返信する（Ｓ４−２）。
【００４４】
続いて、処理装置１２０が、w＝w'・μ-r1・r2を計算し、u＝r2とし、L2の元(υ,s)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果としてＳ５以降の処理に進む。一方、存在しなければその(w,u)をリストL1に追加する（Ｓ４−３）。
【００４５】
続いて、ランダムな２つの整数r3,r4(例えば1≦r3≦2k・n2、1≦r4≦2k・n2)を選び、Paillier暗号文w12＝c1・c0r3,w22＝c0r4を計算して、受信装置１３０に送信する（Ｓ４−４）。
【００４６】
続いて、受信装置１３０が、Paillier暗号文w12,w22からメッセージm12,m22をそれぞれ復号し、υ'＝w12a・m22・w22b・m12を計算して処理装置１２０に返信する（Ｓ４−５）。
【００４７】
続いて、処理装置１２０が、υ＝υ'・μ-r3・r4を計算し、s＝r2とし、L1の元(w,u)でwd・s＝υu mod n2またはwd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、その(w,u)を計算結果としてＳ５以降の処理に進む。一方、存在しなければ、その(υ,s)をリストL2に追加する（Ｓ４−６）。
【００４８】
Ｓ４−１〜Ｓ４−６の各ステップの処理を最大t回繰り返して実行し、計算結果としての(w,u)が得られない場合には、信頼性が確保されていないとして処理を中止する。ここで、ｔは処理装置１２０が成りすまし攻撃を受けたときの受信装置１３０に対して要求する信頼性であり、セキュリティパラメータｋに関して無視できない確率（例えば、1/kなど）とする。
【００４９】
上記計算結果として得られた(w,u)について、wはc1とc0の乗算のu乗となっている。計算結果としての(w,u)が得られた場合には、続いて以下の処理によりc1とc２の乗算を計算する。
【００５０】
まず、処理装置１２０が、２つのリストL1,L2を空集合で初期化し、ランダムな整数ｄ(例えば2≦d≦2k)を選ぶ（Ｓ５）。
【００５１】
続いて、リストL3を空集合で初期化する（Ｓ６−１）。
【００５２】
続いて、ランダムな２つの整数r5,r6(例えば1≦r5≦2k・n2、1≦r6≦2k・n2)を選び、Paillier暗号文w13＝c1r5,w23＝c2・c0u・r6を計算して、受信装置１３０に送信する（Ｓ６−２）。
【００５３】
続いて、受信装置１３０が、Paillier暗号文w13,w23からメッセージm13,m23をそれぞれ復号し、z'＝w13a・m23・w23b・m13を計算して処理装置１２０に返信する（Ｓ６−３）。
【００５４】
続いて、処理装置１２０が、z''＝z'・w-r5・r6を計算し、(z'',r5)をリストL3に追加する（Ｓ６−４）。
【００５５】
続いて、リストL3の全ての元 (z1,x1),(z2,x2),・・・,(zi,xi),・・・について、x1,x2,・・・,xi,・・・の最大公約数が１であるかどうかを判定し、もし１であれば、Σiyi・xi＝１となる整数y1,y2,・・・,yi,・・・を計算してz＝Πiziyiとし、１でなければＳ６−１の処理に戻る（Ｓ６−５）。
【００５６】
続いて、L2の元(υ,s)で、zd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置１３０に返信してＳ７以降の処理に進む。一方、存在しなければそのzをリストL1に追加する（Ｓ６−６）。
【００５７】
続いて、ランダムな２つの整数r7,r8(例えば1≦r7≦2k・n2、1≦r8≦2k・n2)を選び、Paillier暗号文w14＝c1r7,w24＝c2d・c0u・r8を計算して、受信装置１３０に送信する（Ｓ６−７）。
【００５８】
続いて、受信装置１３０が、Paillier暗号文w14,w24からメッセージm14,m24をそれぞれ復号し、υ'＝w14a・m24・w24b・m14を計算して処理装置１２０に返信する（Ｓ６−８）。
【００５９】
続いて、処理装置１２０が、υ＝υ'・μ-r7・r8を計算し、s＝r7とし、L1の元zでzd・s＝υu mod n2またはzd・s＝-υu mod n2となるものが存在するかどうかを判定し、もし存在すれば、そのzを暗号文として受信装置１３０に返信してＳ７以降の処理に進む。一方、存在しなければ(υ,s)をリストL2に追加する（Ｓ６−９）。
【００６０】
Ｓ６−１からＳ６−９の各ステップを最大t回繰り返して実行し、暗号文としてのｚが得られない場合には、信頼性が確保されていないとして処理を中止する。
【００６１】
上記計算結果として得られたzについて、zはm1のPaillier暗号文c1とm2のPaillier暗号文c2との乗算（＝m1・m2のPaillier暗号文）となっている。以上のＳ１〜Ｓ６の処理により、Paillier暗号文c1,c2について乗算を行うことができる。
【００６２】
そして、受信装置１３０が、処理装置１２０から受信したPaillier暗号文ｚからメッセージm1・m2を、
【００６３】
【数２】
0005496756.tif 000003
【００６４】
により復号する（Ｓ７）。
【００６５】
以上のように、本発明の環準同型を計算可能な公開鍵暗号方法及び環準同型を計算可能な公開鍵暗号システムによれば、実用的な効率性にて暗号文に対する演算で平文の加法に対応する新たな暗号文および平文の乗法に対応する新たな暗号文を計算することができる。これにより、公開鍵暗号の利便性が向上し、特に、代数的回路に対してデータを暗号化したままメッセージに対する演算を行うことが可能となる。
【００６６】
本発明の環準同型を計算可能な公開鍵暗号システム、それを構成する送信装置、処理装置、及び受信装置をコンピュータによって実現する場合、送信装置、処理装置及び受信装置が担う処理機能はプログラムによって記述される。そしてパソコンや携帯端末上で、入力手段や各種記憶手段とＣＰＵとのデータのやりとりを通じてこのプログラムを実行することにより、ハードウェアとソフトウェアが協働し、上記処理機能がコンピュータ上で実現されて本発明の環準同型を計算可能な公開鍵暗号システムの作用効果を奏する。なおこの場合、処理機能の少なくとも一部をハードウェア的に実現することとしてもよい。また、上記の各種処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【００６７】
上記の処理機能を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００６８】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００６９】
また、上述した実施形態とは別の実行形態として、コンピュータが可搬型記録媒体から直接このプログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【図１】
0005496756.tif 000007
【図２】
0005496756.tif 000008