Some content of this application is unavailable at the moment.
If this situation persist, please contact us atFeedback&Contact
1. (WO2019039381) SECURE COMPUTATION DEVICE, SECURE COMPUTATION METHOD, PROGRAM, AND RECORDING MEDIUM
Document

明 細 書

発明の名称 秘密計算装置、秘密計算方法、プログラム、および記録媒体

技術分野

0001  

背景技術

0002  

先行技術文献

非特許文献

0003  

発明の概要

発明が解決しようとする課題

0004  

課題を解決するための手段

0005   0006  

発明の効果

0007  

図面の簡単な説明

0008  

発明を実施するための形態

0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080  

符号の説明

0081  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11  

図面

1   2   3   4   5   6   7   8   9  

明 細 書

発明の名称 : 秘密計算装置、秘密計算方法、プログラム、および記録媒体

技術分野

[0001]
 本発明はブロック暗号の秘密計算技術に関する。

背景技術

[0002]
 共通鍵暗号方式の一つにAES(Advanced Encryption Standard)がある(例えば、非特許文献1等参照)。AESでは、要素の置換と行の巡回シフトと列の線形和とラウンド鍵の加算とを繰り返すラウンド処理によって暗号化を行う。また、平文を所定長のブロックごとに暗号化する暗号利用モードの一つにCTRモードがある。AESがCTRモードで実装された場合、各ブロックでラウンド処理が行われ、それによって得られた各ブロックの鍵の暗号文が各ブロックの平文に加算される。

先行技術文献

非特許文献

[0003]
非特許文献1 : Daniel J. Bernstein, Peter Schwabe, “New AES software speed records,” INDOCRYPT 2008, Progress in Cryptology - INDOCRYPT 2008 pp. 322 - 336.

発明の概要

発明が解決しようとする課題

[0004]
 本発明の目的は、要素の置換と行の巡回シフトと列の線形和とラウンド鍵の加算とを繰り返すラウンド処理を秘密計算によって効率的に実行することである。

課題を解決するための手段

[0005]
 Bが1以上の整数であり、Rが3以上の整数であり、Sが2以上の整数であり、U=S であり、Fが有限体である。b=0,…,B-1であり、r=1,…,Rであり、j=2,…,Rであり、1ラウンド目のラウンド処理が処理P 1,4を含み、処理P 1,4が1ラウンド目のラウンド鍵k ∈F の要素からなるS×S行列の1つの列のS個の要素にS個のカウンタ値i b,0,…,i b,S-1をそれぞれ加算して行列M b,1,4を得る処理を含む。jラウンド目のラウンド処理が処理P j,1と処理P j,2と処理P j,3と処理P j,4とを含み、処理P j,1が行列M b,j-1,4の各要素を置換して行列M b,j,1を得る処理を含み、処理P j,2が行列M b,j,1の各要素を行ごとに巡回シフトして行列M b,j,2を得る処理を含み、処理P j,3が行列M b,j,2の各列のS個の要素の線形和を当該列のS個の要素とした行列M b,j,3を得る処理を含み、処理P j,4が行列M b,j,3の各要素にjラウンド目のラウンド鍵k の各要素を加算して行列M b,j,4を得る処理を含む。
[0006]
 秘密計算装置は、何れかのラウンド鍵k ,…,k の秘匿情報を用い、秘密計算により、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を得る前段処理を行う。ただし、表M(i ,…,i S-1)にカウンタ値i b,0,…,i b,S-1を代入したM(i b,0,…,i b,S-1)がM b,2,1,…,M b,3,2の何れかである行列M b,γ,μである。秘密計算装置は、カウンタ値i b,0,…,i b,S-1の秘匿情報{i b,0},…,{i b,S-1}および秘匿情報{M(i ,…,i S-1)}を用い、秘密計算によってb=0,…,B-1についての行列M b,γ,μの秘匿情報{M b,γ,μ}を得、何れかのラウンド鍵k ,…,k R+1の秘匿情報および秘匿情報{M b,γ,μ}を用い、秘密計算により、j=2,…,Rについての処理P j,1、処理P j,2、処理P j,3、および処理P j,4のうち、処理P γ,μよりも後に行われる各処理を含む残存処理を実行して得られる行列M b,Γ,MUの秘匿情報{M b,Γ,MU}を得る後段処理を行う。

発明の効果

[0007]
 本発明では、要素の置換と行の巡回シフトと列の線形和とラウンド鍵の加算とを繰り返すラウンド処理を秘密計算によって効率的に実行できる。

図面の簡単な説明

[0008]
[図1] 図1は実施形態の秘密計算システムを例示したブロック図である。
[図2] 図2は実施形態の秘密計算装置の機能構成を例示したブロック図である。
[図3] 図3Aは実施形態の表生成部の機能構成を例示したブロック図である。図3Bは実施形態のラウンド処理部の機能構成を例示したブロック図である。
[図4] 図4は実施形態の処理全体を説明するための概念図である。
[図5] 図5は通常のブロック暗号化を説明するための概念図である。
[図6] 図6は実施形態の暗号化処理を説明するためのフロー図である。
[図7] 図7は実施形態の表生成処理の詳細を説明するためのフロー図である。
[図8] 図8は実施形態のラウンド処理の詳細を説明するためのフロー図である。
[図9] 図9は実施形態のラウンド処理の詳細を説明するためのフロー図である。

発明を実施するための形態

[0009]
 以下、図面を参照して本発明の実施形態を説明する。
 [第1実施形態]
 まず、第1実施形態を説明する。
 <構成>
 図1に例示するように、本形態の秘密計算システム1はN個の秘密計算装置10-0~10-(N-1)を有する。Nは1以上の整数である。例えば、秘密分散によって得られたシェアを用いて秘密計算を行う場合にはN≧2であり、準同型暗号文を用いて秘密計算を行う場合にはN≧1である。N≧2の場合、秘密計算装置10-0~10-(N-1)はネットワークを通じて通信可能に構成される。
[0010]
 図2に例示するように、本形態の秘密計算装置10-n(ただし、n=0,…,N-1)は、初期記憶部1001-n、表記憶部1002-n、カウンタ更新部1003-n、表生成部1010-n、表計算部1020-n、ラウンド処理部1030-n、加算部1041-n、および制御部1051-nを有する。秘密計算装置10-nは制御部1051-nの制御の下で各処理を実行する。各処理で得られたデータは図示していないメモリに記憶される。メモリに格納されたデータは必要に応じて読み出され、各処理に利用される。
[0011]
 図3Aに例示するように、表生成部1010-nは、秘密計算部1011-nおよび制御部1012-nを有する。図3Bに例示するように、ラウンド処理部1030-nは、秘密計算部1031-nおよび制御部1032-nを有する。
[0012]
 <処理の概要>
 図4および図5に例示するように、本形態の秘密計算装置10-nは、1,…,R+1ラウンド目のラウンド鍵k ,…,k R+1∈F の秘匿情報{k },…,{k R+1}∈{F }、および各ブロックb=0,…,B-1のカウンタ値i b,0,…,i b,S-1∈Fの秘匿情報{i b,0},…,{i b,S-1}∈{F}を用い、秘密計算により、各ブロックb=0,…,B-1でブロック暗号化を行う。次に秘密計算装置10-nは、各ブロックb=0,…,B-1のブロック暗号化で得られた秘匿情報と、暗号化対象の平文PをB個のブロックに分割して得られた平文ブロックP ,…,P B-1∈F の秘匿情報{P },…,{P B-1}∈{F }とを秘密計算によって加算(例えば、排他的論理和)する。ただし、Bは1以上の整数であり、Rは3以上の整数であり、Sは2以上の整数であり、U=S であり、Fは有限体である。有限体Fの例は基礎体に基づく拡大体である。基礎体の例は素数を法とした剰余からなる集合であり、当該基礎体での演算結果は当該素数を法とした剰余として得られる。例えば、Fは位数2の基礎体を8次拡大した拡大体GF(2 )である。例えば、基礎体の元が2バイトのデータである場合、拡大体GF(2 )の元は1バイト(=8ビット)のデータとなる。この場合、拡大体GF(2 )によって256通りの値を表現できる。F αはα個の有限体Fの元を要素とする集合を意味する。また、α∈βはαがβに属することを意味する。{β}はα∈βの秘匿情報{α}が属する集合を意味する。
[0013]
 ≪ブロック暗号化≫
 本形態のブロック暗号化では、表を用い、通常のブロック暗号化処理を効率化する。図5に例示するように、通常のブロック暗号化処理は、1~R+1ラウンドのラウンド処理を含む。例えば、AESをCTRモードで実装したブロック暗号化処理は、鍵長が128ビットの場合には1~11ラウンドの処理を、鍵長が192ビットの場合には1~13ラウンドの処理を、鍵長が256ビットの場合には1~15ラウンドの処理をそれぞれ含む。
[0014]
 1ラウンド目のラウンド処理は加算処理P 1,4(処理P 1,4)を含む。加算処理P 1,4は1ラウンド目のラウンド鍵k ∈F の要素からなるS×S行列の1つの列のS個の要素にS個のカウンタ値i b,0,…,i b,S-1をそれぞれ加算して行列M b,1,4を得る処理を含む。AESの場合、加算処理P 1,4は1ラウンド目のAddRoundKeyに相当する。
[0015]
 jラウンド目(ただし、j=2,…,R)のラウンド処理は、要素の置換を行う置換処理P j,1(処理P j,1)と、行の巡回シフトを行うシフト処理P j,2(処理P j,2)と、列の線形和を行う混合処理P j,3(処理P j,3)と、ラウンド鍵の加算を行う加算処理P j,4(処理P j,4)とを含む。AESの場合、置換処理P j,1はSubBytesに相当し、シフト処理P j,2はShiftRowsに相当し、混合処理P j,3はMixCoumnsに相当し、加算処理P j,4はAddRoundKeyに相当する。置換処理P j,1は、行列M b,j-1,4の各要素を置換して行列M b,j,1を得る処理を含む。例えば、置換処理P j,1は行列M b,j-1,4の各要素を予め定められた手順(例えば、S-box)に則って置換して行列M b,j,1を得る処理である。AESの場合、行列M b,j-1,4の各要素に対し、既約多項式x +x +x +x+1による拡大体GF(2 )上の乗法逆元演算を行い、さらにアフィン変換を行った結果によって各要素を置換して行列M b,j,1を得る(参考文献1:情報セキュリティ対策基盤整備事業「電子政府推奨暗号の実装」,独立行政法人情報処理推進機構)。シフト処理P j,2は、行列M b,j,1の各要素を行ごとに巡回シフトして行列M b,j,2を得る処理を含む。例えば、シフト処理P j,2は、行列M b,j,1のι+1(ただし、ι=0,…,P-1)行目の行を所定の方向(例えば、左方向)にι要素分だけ巡回シフトする処理である。混合処理P j,3は、行列M b,j,2の各列のS個の要素の線形和を当該列のS個の要素とした行列M b,j,3を得る処理を含む。これらの線形和の各項の係数は行ごとに相違する。加算処理P j,4は、行列M b,j,3の各要素にjラウンド目のラウンド鍵k の各要素を加算して行列M b,j,4を得る処理を含む。
[0016]
 R+1ラウンド目のラウンド処理は、要素の置換を行う置換処理P R+1,1と、行の巡回シフトを行うシフト処理P R+1,2と、ラウンド鍵の加算を行う加算処理P R+1,4とを含む。
[0017]
 ≪本形態のブロック暗号化≫
 本形態のブロック暗号化の特徴を説明する。前述のように、1ラウンド目の加算処理P 1,4では、ラウンド鍵k の要素からなるS×S行列の1つの列のS個の要素にS個のカウンタ値i b,0,…,i b,S-1をそれぞれ加算して行列M b,1,4を得る。S=4、U=16、ラウンド鍵k =(k 1,0,…,k 1,15)の場合、行列M b,1,4は例えば以下のようになる。
[数1]



ただし、n ,…,n 11∈Fは任意値である。n =…=n 11=0であってもよい。AESではn ,…,n 11はnonceに相当する。
[0018]
 2ラウンド目の置換処理P 2,1は、行列M b,1,4の各要素を予め定められた手順に則って置換して行列M b,j,1を得る。この処理は行列M b,1,4の要素ごとに行われる。そのため、各要素の置換処理を関数f :F→Fで表現できる。S=4、U=16、ラウンド鍵k =(k 1,0,…,k 1,15)の場合、行列M b,2,1は以下のようになる。
[数2]


[0019]
 ラウンド鍵k および任意値n ,…,n 12は全ブロックb=0,…,B-1で共通であり、定数とみなせる。ブロックb=0,…,B-1ごとに異なるのはカウンタ値i b,0,…,i b,3である。カウンタ値i b,0,…,i b,3をカウンタ値の変数i ,…,i とすると、式(2)は以下のように変形できる。
[数3]



ここで、f 1,0,…,f 1,11は全ブロックb=0,…,B-1に共通であるため定数とみなせ、f 1,12(i ),…,f 1,15(i )は変数i=i ,…,i に対する一変数関数値である。つまり、各ブロックb=0,…,B-1の行列M b,2,1は、変数i=i ,…,i に対する一変数関数値を要素に持つ表M(i ,…,i )として一般化できる。このことはS=4の場合のみならず、その他のSの場合も同様である。すなわち、各ブロックb=0,…,B-1の行列M b,2,1は、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表として一般化できる。
[0020]
 2ラウンド目のシフト処理P 2,2は、行列M b,2,1の各要素を行ごとに巡回シフトして行列M b,2,2を得る処理である。式(3)の行列M b,2,1のι+1行目の行を左方向にι要素分だけ巡回シフトすると以下の行列M b,2,2が得られる。
[0021]
[数4]



このように、各ブロックb=0,…,B-1の行列M b,2,2も、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表として一般化できる。
[0022]
 2ラウンド目の混合処理P 2,3は、行列M b,2,2の各列のS個の要素の線形和を当該列のS個の要素とした行列M b,2,3を得る処理である。式(4)の行列M b,2,2に対して混合処理P 2,3を行うと例えば以下のようになる。
[数5]



ただし、
[数6]



である。x ,…,x 11は全ブロックb=0,…,B-1で共通であるため定数とみなせ、x 12,…,x 15は変数i=i ,…,i S-1に対する一変数関数値である。そのため、式(5)は以下のように変形できる。
[数7]



ただし、f 2,s(i)(ただし、s=0,…,S-1、i=i ,…,i S-1)は一変数関数値である。つまり、行列M b,2,3も、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表として一般化できる。
[0023]
 その後の2ラウンド目の加算処理P 2,4および3ラウンド目の置換処理P 3,1は要素ごとの処理であるため、加算処理P 2,4によって得られる行列M b,2,4および置換処理P 3,1によって得られる行列M b,3,1も変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表として一般化できる。さらに、3ラウンド目のシフト処理P 3,2は要素を巡回シフトするだけであるため、それによって得られる行列M b,3,2も変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表として一般化できる。例えば、行列M b,3,2は以下のようになる。
[数8]



すなわち、行列M b,2,1,…,M b,3,2は変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表として一般化できる。ここで、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表M(i ,…,i S-1)に、各ブロックbのカウンタ値i b,0,…,i b,S-1を代入すると、各ブロックbでの行列M(i b,0,…,i b,S-1)が得られる。表M(i ,…,i S-1)の要素は一変数関数値または定数とみなせる。そのため、表M(i ,…,i S-1)の各要素は有限体Fの元のデータ量以下で表現でき、表M(i ,…,i S-1)全体はそのU倍のデータ量以下で表現できる。例えば、S=4であり、有限体FがGF(2 )であってその元のとり得る値の数が256通りである場合、表M(i ,…,i S-1)の各要素のとり得る値の数は256通り以下となり、表全体では1バイト×256通り×16個=4096バイト以下のデータ量となる。一方、3ラウンド目の混合処理P 3,3以降では、得られる行列を変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表として表現できず(多変数関数値を要素に持つ表となってしまい)、表のサイズが大きくなってしまう。
[0024]
 以上の特徴を利用し、秘密計算装置10-nは、まず、何れかのラウンド鍵k ,…,k の秘匿情報を用い、秘密計算により、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を得る。ただし、表M(i ,…,i S-1)にカウンタ値i b,0,…,i b,S-1を代入したM(i b,0,…,i b,S-1)が行列M b,γ,μである。行列M b,γ,μはM b,2,1,…,M b,3,2の何れかである(γ=2,3、μ=1,…,4)。次に、秘密計算装置10-nは、カウンタ値i b,0,…,i b,S-1の秘匿情報{i b,0},…,{i b,S-1}および秘匿情報{M(i ,…,i S-1)}を用い、秘密計算によってb=0,…,B-1についての行列M b,γ,μの秘匿情報{M b,γ,μ}を得る。これにより、少ない演算量で行列M b,γ,μの秘匿情報{M b,γ,μ}を得ることができる。特に、秘密計算で置換処理を行う場合には、秘密計算装置10-0~10-(N-1)間で通信を行う必要がある。秘匿情報{M(i ,…,i S-)}を用いればこの通信を削減できる。特にM b,γ,μがM b,3,1またはM b,3,2である場合、2回の置換処理P 2,1,P 2,2に必要な通信を削減できる。鍵長を128ビットとすると、この削減は20%の通信量の削減となり、25%の高速化を実現できる。
[0025]
 その後、秘密計算装置10-nは、何れかのラウンド鍵k ,…,k R+1の秘匿情報および秘匿情報{M b,γ,μ}を用い、秘密計算により、残存処理を実行して得られる行列M b,Γ,MUの秘匿情報{M b,Γ,MU}を得る後段処理を行う。後段処理は、j=2,…,Rについての置換処理P j,1、シフト処理P j,2、混合処理P j,3、および加算処理P j,4のうち、処理P γ,μよりも後に行われる各処理を含む。例えば、Γ=R+1,MU=4である場合、秘密計算装置10-nは、後段処理によって秘匿情報{M b,R+1,4}を得て出力する。
[0026]
 <処理の詳細>
 図6から図11を用い、処理の詳細を説明する。
 ≪前提≫
 前提として、初期記憶部1001-nにラウンド鍵k ,…,k R+1の秘匿情報{k },…,{k R+1}、カウンタ値i 0,0,…,i 0,S-1の秘匿情報{i 0,0},…,{i 0,S-1}、平文ブロックP ,…,P B-1の秘匿情報{P },…,{P B-1}が格納されているものとする。秘匿情報は、秘密分散方式に則ったシェア(秘密分散値)であってもよいし、準同型暗号方式に則った暗号文(RSA暗号方式やElGamal暗号方式などの暗号文)であってもよい。なお、秘密分散方式に則った秘匿情報を用いた秘密計算の方法は、例えば、千田浩司、濱田浩気、五十嵐大、高橋克巳、“軽量検証可能3パーティ秘匿関数計算の再考”,CSS2010,2010年(参考文献2)、「Michael Ben-Or, Shafi Goldwasser, Avi Wigderson: Completeness Theorems for Non-Cryptographic Fault-Tolerant Distributed Computation (Extended Abstract). STOC 1988: 1-10」(参考文献3)等に記載されている。
[0027]
 ≪ステップS1010-n≫
 表生成部1010-nは、何れかのラウンド鍵k ,…,k の秘匿情報を用い、秘密計算により、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を得る前段処理を行う。ただし、表M(i ,…,i S-1)にカウンタ値i b,0,…,i b,S-1を代入したM(i b,0,…,i b,S-1)が何れかの行列M b,γ,μ=M b,2,1,…,M b,3,2となる。すなわち、表生成部1010-nの秘密計算部1011-nが、カウンタ値i b,0,…,i b,S-1を変数i ,…,i S-1とし、制御部1012-nの制御の下、必要となるラウンド鍵k ,…,k の秘匿情報を用い、加算処理P 1,4から何れかの処理P γ,μ(ただし、P γ,μはP 2,1,…,P 3,2の何れか)までを秘密計算によって実行して(ステップS1011-n)、秘匿情報{M(i ,…,i S-1)}を得る。例えば、M b,γ,μ=M b,2,1の場合、表生成部1010-nの秘密計算部1011-nは、カウンタ値i b,0,…,i b,S-1を変数i ,…,i S-1とし、秘匿情報{k },{k }を用い、1ラウンド目の加算処理P 1,4と2ラウンド目の置換処理P 2,1とを秘密計算によって実行し、置換処理P 2,1によって得られる行列の秘匿情報を秘匿情報{M(i ,…,i S-1)}として得て出力する(例えば、式(3)の秘匿情報)。例えば、M b,γ,μ=M b,3,1の場合、表生成部1010-nの秘密計算部1011-nは、カウンタ値i b,0,…,i b,S-1を変数i ,…,i S-1とし、秘匿情報{k },{k },{k }を用い、1ラウンド目の加算処理P 1,4、2ラウンド目の置換処理P 2,1、シフト処理P 2,2、混合処理P 2,3、加算処理P 2,4、3ラウンド目の置換処理P 3,1を秘密計算によって実行し、置換処理P 3,1によって得られる行列の秘匿情報を秘匿情報{M(i ,…,i S-1)}として得て出力する。例えば、M b,γ,μ=M b,3,2の場合、表生成部1010-nの秘密計算部1011-nは、カウンタ値i b,0,…,i b,S-1を変数i ,…,i S-1とし、秘匿情報{k },{k },{k }を用い、1ラウンド目の加算処理P 1,4、2ラウンド目の置換処理P 2,1、シフト処理P 2,2、混合処理P 2,3、加算処理P 2,4、3ラウンド目の置換処理P 3,1、シフト処理P 3,2を秘密計算によって実行し、シフト処理P 3,2によって得られる行列の秘匿情報を秘匿情報{M(i ,…,i S-1)}として得て出力する(例えば、式(8)の秘匿情報)。秘匿情報{M(i ,…,i S-1)}は表記憶部1002-nに格納される。
[0028]
 ≪ステップS1020-n≫
 カウンタ更新部1003-nは、初期記憶部1001-nに格納されたカウンタ値i 0,0,…,i 0,S-1の秘匿情報{i 0,0},…,{i 0,S-1}を用い、秘密計算によって、ブロックb’=2,…,B-1のカウンタ値i b’,0,…,i b’,S-1の秘匿情報{i b’,0},…,{i b’,S-1}を得て出力する。カウンタ値i b’,0,…,i b’,S-1は、カウンタ値i 0,0,…,i 0,S-1に予め定められた規則を適用することで得られる値である。例えば、カウンタ値i b’-1,0,…,i b’-1,S-1によって表現される値i b’-1,0…i b’-1,S-1を所定値(例えば、1)だけ増加させた値i b’-1,0…i b’-1,S-1+1を表現する値をカウンタ値i b’,0,…,i b’,S-1とする。表計算部1020-nは、初期記憶部1001-nから読み出したか、または、カウンタ更新部1003-nから出力された秘匿情報{i b,0},…,{i b,S-1}、および表記憶部1002-nから読み出した秘匿情報{M(i ,…,i S-1)}を用い、秘密計算によって、b=0,…,B-1について、行列M b,γ,μの秘匿情報{M b,γ,μ}={M(i b,0,…,i b,S-1)}を得て出力する。
[0029]
 ≪ステップS1030-n≫
 ラウンド処理部1030-nは、何れかのラウンド鍵k ,…,k R+1の秘匿情報および秘匿情報{M b,γ,μ}を用い、秘密計算(ステップS1031b-n)により、残存処理を実行して得られる行列M b,Γ,MUの秘匿情報{M b,Γ,MU}を得る後段処理を行う。残存処理は、j=2,…,Rについての置換処理P j,1、シフト処理P j,2、混合処理P j,3、および加算処理P j,4のうち、処理P γ,μよりも後に行われる各処理を含む処理である。処理P γ,μは、表計算部1020-nで得られた秘匿情報{M b,γ,μ}={M(i b,0,…,i b,S-1)}に対応する。例えば、M b,γ,μ=M b,3,2かつΓ=R+1,MU=4の場合、ラウンド処理部1030-nは、秘匿情報{k },…{k R+1}および秘匿情報{M b,3,2}を用い、秘密計算により、3ラウンド目の混合処理P 3,3からRラウンド目の加算処理P R,4までを実行し、さらにR+1ラウンド目の置換処理P R+1,1、シフト処理P R+1,2、加算処理P R+1,4を実行して得られる行列M b,R+1,4の秘匿情報{M b,R+1,4}を得て出力する。
[0030]
 ≪ステップS1041-n≫
 加算部1041-nは、各ブロックb=0,…,B-1について、秘匿情報{M b,R+1,4}および秘匿情報{P }を入力とし、秘密計算によってC =M b,R+1,4+P ∈F の秘匿情報{C }を得て出力する。
[0031]
 <本形態の特徴>
 以上のように、本形態では表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を生成し、秘匿情報{M(i ,…,i S-1)}を用いて秘密計算によって各ブロックb=0,…,B-1の秘匿情報{M b,γ,μ}を得る。表M(i ,…,i S-1)のサイズはFのU倍のデータ量以下で表現でき、秘匿情報{M(i ,…,i S-1)}を用いて各ブロックb=0,…,B-1の処理を行うことで演算量を削減できる。さらに、M b,γ,μがM b,3,1またはM b,3,2である場合には、2回の置換処理P 2,1,P 2,2の秘密計算に必要な通信を削減できる。このように、本形態では、要素の置換と行の巡回シフトと列の線形和とラウンド鍵の加算とを繰り返すラウンド処理を秘密計算によって効率的に実行できる。
[0032]
 [第2実施形態]
 第2実施形態は第1実施形態の変形例であり、改ざん検知を行うためのチェックサムを生成し、改ざん検知を行う。ただし、前述のように、表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を得るまでの前段処理で処理されるデータ量は小さい。一方、前段処理の後に行われる後段処理で処理されるデータ量は格段に大きくなる。本形態では、これらの違いに応じ、異なる方式でチェックサムを生成する。これにより、安全に効率的な暗号化を行うことができる。以下では第1実施形態との相違点を中心に説明し、既に説明した事項については、同じ参照番号を用いて説明を簡略化する。
[0033]
 <構成>
 図1に例示するように、本形態の秘密計算システム2はN個の秘密計算装置20-0~20-(N-1)を有する。Nは1以上の整数である。N≧2の場合、秘密計算装置20-0~20-(N-1)はネットワークを通じて通信可能に構成される。
[0034]
 図2に例示するように、本形態の秘密計算装置20-n(ただし、n=0,…,N-1)は、初期記憶部1001-n、表記憶部1002-n、カウンタ更新部1003-n、表生成部2010-n、表計算部1020-n、ラウンド処理部2030-n、加算部1041-n、同期部2042-n、正当性検証部2043-n,2044-n、および制御部1051-nを有する。秘密計算装置20-nは制御部1051-nの制御の下で各処理を実行する。各処理で得られたデータは図示していないメモリに記憶される。メモリに格納されたデータは必要に応じて読み出され、各処理に利用される。
[0035]
 図3Aに例示するように、表生成部2010-nは、秘密計算部1011-n、制御部1012-n、乱数生成部2015-n、およびチェックサム更新部2016-nを有する。図3Bに例示するように、ラウンド処理部2030-nは、秘密計算部1031-n、制御部1032-n、ダミーブロック生成部2035a-n、秘匿化部2035b-n、結合部2035c-n、ランダム置換部2036-n、およびチェックサム更新部2037,2038を有する。
[0036]
 <処理の概要>
 本形態では、処理データ量が小さい前段処理と処理データ量が格段に大きくなる後段処理とで互いに異なる方式によってチェックサムを生成する。すなわち、表生成部2010が、前段処理での改ざんを検知するための第1チェックサムを第1方式に則って生成し、ラウンド処理部2030が、後段処理での改ざんを検知するための第2チェックサムを第2方式に則って生成する。ここで、第1方式は、改ざん検知対象である秘匿情報の復元値のデータ量に、安全性の高さが依存しない方式である。第1方式の例としては、「Dai Ikarashi, Ryo Kikuchi, Koki Hamada, and Koji Chida, “Actively Private and Correct MPC Scheme in t < n/2 from Passively Secure Schemes with Small Overhead,” Cryptology ePrint Archive, Report 2014/304, 2014.(参考文献4)」および国際公開第WO/2016/104476号(参考文献5)に記載された方式を例示できる。一方、第2方式は、改ざん検知対象である秘匿情報の復元値のデータ量に、安全性の高さが依存する方式である。すなわち、第2方式は、改ざん検知対象である秘匿情報の復元値のデータ量がα であるときの安全性が、改ざん検知対象である秘匿情報の復元値のデータ量がα であるときの安全性よりも高い方式である。ただし、α がα よりも大きい。例えば、第2方式は、改ざん検知対象である秘匿情報の復元値のデータ量が多いほど安全性が高い方式である。第2方式の例としては、「五十嵐大,菊池亮,濱田浩気,千田浩司,“少パーティ数の秘密分散ベース秘密計算における効率的なmaliciousモデル上SIMD計算の構成法,”コンピュータセキュリティシンポジウム2013論文集 2013(4), 793-800, 2013-10-14(参考文献6)」および国際公開第WO/2015/053184号(参考文献7)に記載された方式を例示できる。ただし、参考文献6,7には明記されていないが、さらなる高速化のためにはランダム置換としてランダム巡回シフト(ランダムローテーション)が用いられることが望ましい。同様に、参考文献6,7には明記されていないが、さらなる高速化のためには、生成されるダミーブロックの個数Yとブロック数Bとの合計がブロック数Bよりも大きな素数pであることが望ましい。すなわち、Y=p-Bであることが望ましい。より好ましくは、pがブロック数Bよりも大きな最小の素数であることが望ましい。また、参考文献6,7の方式は、ダミーブロックが秘匿化されずに計算可能であることを前提としている。しかし、本形態ではダミーブロックも秘匿情報として処理される。そのため、本形態ではダミーブロックの何れかを要処理ダミーブロックとし、要処理ダミーブロックに対するチェックサムを第3方式によって生成する。これによってより高い安全性を担保する。なお、第3方式は、改ざん検知対象である秘匿情報の復元値のデータ量に、安全性の高さが依存しない方式である。例えば、第3方式は第1方式と同じ方式である。
[0037]
 <処理の詳細>
 図6から図11を用い、処理の詳細を説明する。
 ≪前提≫
 第1実施形態と同じである。
[0038]
 ≪ステップS2010-n≫
 第1実施形態と同様、表生成部2010-nは、何れかのラウンド鍵k ,…,k の秘匿情報を用い、秘密計算により、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を得る前段処理を行う。さらに本形態では、表生成部2010-nが当該前段処理での改ざんを検知するための第1チェックサムを第1方式に則って生成する。以下に、第1方式として参考文献4,5の方式を採用した例を示す。
[0039]
 ステップS2010-nの詳細:
 図7を用いてステップS2010-nの詳細を例示する。この例の秘匿情報は秘密分散方式に則ったシェアである。前段処理はT種類の秘密分散方式meth ,…,meth T-1に則った秘匿情報を用いた秘密計算を含む。当該秘密計算は前述のステップS1010-nの過程で実行される各秘密計算である。
[0040]
 表生成部2010-nの乱数生成部2015-n(図2A)は、t=0,…,T-1について乱数r ∈Fを秘密分散した秘匿情報{r }を得て出力する。ただし、Tは1以上の整数であり、t=0,…,T-1である。秘匿情報{r }の生成方法の具体例は参考文献5に開示されている。例えば、まず、秘密計算装置20-nの乱数生成部2015-nそれぞれが乱数r’ ∈Fを生成する。次に、各乱数生成部2015-nは、上記の参考文献2に記載された秘匿方法により乱数r’ のシェア{r’ }を生成して他の乱数生成部2015-n’(ただし、n’=0,…,N-1)に送る。そして、乱数生成部2015-nはそれぞれ{r }=Σ n<N{r’ }を計算し、乱数r の秘匿情報{r }を得る。これにより、いずれの秘密計算装置20-1~20-(N-1)も乱数r を知ることなく、乱数生成部2015-nが乱数r の秘匿情報{r }を得ることができる(ステップS2015-n)。
[0041]
 次に、チェックサム更新部2016-nは、第1チェックサムに含まれるC 1,tをヌル(空集合)に初期化する。第1チェックサムはC 1,tのみから構成されてもよいし、C 1,tとその他の情報とから構成されてもよい(ステップS2016-n)。
[0042]
 前述の前段処理で秘匿情報{M(i ,…,i S-1)}を得るためにΨ個の秘密計算Com ,…,Com Ψ-1が行われるとする。ただし、Ψは1以上の整数である。秘密分散方式meth に則った秘匿情報{a λ}∈{F}を用いる秘密計算Com ψ(ただし、ψ=0,…,Ψ-1)が行われる際、チェックサム更新部2016-nは、秘匿情報{a λ}と秘匿情報{r }とを用いた秘密計算によって秘匿情報{a λ}を生成する。ただし、Λは1以上の整数であり、λ=0,…,Λ-1である。さらにチェックサム更新部2016-nは、秘匿情報{a λ}と秘匿情報{a λ}との組であるランダム化分散値<a λ>=<{a λ},{a λ}>を得、ランダム化分散値<a λ>の追加によってC 1,tを更新する。秘密計算Com ψに複数の秘匿情報が用いられる場合、チェックサム更新部2016-nは、それぞれの秘匿情報についてランダム化分散値を生成し、それらの追加によってC 1,tを更新する(ステップS2016a-n)。
[0043]
 秘密計算部1011-nは秘密計算Com ψを実行する(ステップS1011-n)。
[0044]
 秘密計算Com ψの実行により、秘密分散方式meth に則った秘密計算結果である秘匿情報{h }が得られる。この際、チェックサム更新部2016-nは、秘匿情報{h }と秘匿情報{r }とを用いた秘密計算によって秘匿情報{h }を得る。ただし、Wは1以上の整数であり、w=0,…,W-1である。さらに、チェックサム更新部2016-nは、秘匿情報{h }と秘匿情報{h }との組であるランダム化分散値<h >=<{h },{h }>を得、ランダム化分散値<h >の追加によってC 1,tを更新する。秘密計算結果が複数の秘匿情報を含む場合、チェックサム更新部2016-nは、それぞれの秘匿情報についてランダム化分散値を生成し、それらの追加によってC 1,tを更新する(ステップS2016b-n)。
[0045]
 ステップS2016a-n~S2016b-nの処理は、Ψ個の秘密計算Com ,…,Com Ψ-1が実行され、秘匿情報{M(i ,…,i S-1)}が得られるまで繰り返される。秘匿情報{M(i ,…,i S-1)}が得られると、チェックサム更新部2016-nは、C 1,t=<φ >,…,<φ Δ-1>を含む第1チェックサムを出力する。ただし、δ=0,…,Δ-1であり、<φ δ>はランダム化分散値である。
[0046]
 ≪ステップS1020-n≫
 秘密計算装置10-nに代えて秘密計算装置20-nが実行する以外、第1実施形態と同じである。
[0047]
 ≪ステップS2030-n≫
 第1実施形態と同様、ラウンド処理部2030-nは、何れかのラウンド鍵k ,…,k R+1の秘匿情報および秘匿情報{M b,γ,μ}を用い、秘密計算により、残存処理を実行して得られる行列M b,Γ,MUの秘匿情報{M b,Γ,MU}を得る後段処理を行う。さらに本形態では、ラウンド処理部2030-nが当該後段処理での改ざんを検知するための第2チェックサムを第2方式に則って生成する。以下に、第2方式として参考文献6,7の方式の変更方式を採用した例を示す。
[0048]
 ステップS2030-nの具体例:
 図8および図9を用いてステップS2030-nの具体例を説明する。この例の秘匿情報は秘密分散方式に則ったシェアである。
 まず、ダミーブロック生成部2035a-nは、Y個のダミーブロックD ,…,D Y-1∈F の秘匿情報{D },…,{D Y-1}を生成して出力する。ただし、Yは1以上の整数であり、y=0,…,Y-1である。前述のように、好ましくはY=p-Bである。ただし、pはBより大きな素数である。ダミーブロックD ,…,D Y-1のうち何れかが要処理ダミーブロックDPとされる。要処理ダミーブロックDPは1個であってもよいし、2個以上であってもよい。要処理ダミーブロックDP以外のダミーブロックD y’は公開値である。ダミーブロック生成部2035a-nは、公開値であるダミーブロックD y’を、正当性を持つ方法で秘匿して秘匿情報{D y’}を得る。要処理ダミーブロックDPは公開値であってもよいし、公開値でなくてもよい。前者の場合、ダミーブロック生成部2035a-nが、公開値であるダミーブロックDPを秘匿して秘匿情報{DP}を得る。後者の場合、ダミーブロック生成部2035a-nは、例えば、前述の秘匿情報{M(i ,…,i S-1)}と任意のカウンタ値i dp,0,…,i dp,S-1の秘匿情報{i dp,0},…,{i dp,S-1}とを用い、秘密計算によって秘匿情報{M(i dp,0,…,i dp,S-1)}を得、秘匿情報{DP}={M(i dp,0,…,i dp,S-1)}を得る(ステップS2035-n)。
[0049]
 次に、ラウンド処理部2030-nは、必要な何れかのラウンド鍵k ,…,k R+1の秘匿情報および要処理ダミーブロックDPの秘匿情報{DP}を用い、行列M DP,Γ,MUの秘匿情報{M DP,Γ,MU}を得るダミー後段処理を行う。ただし、行列M DP,Γ,MUは要処理ダミーブロックDPに前述の残存処理を行って得られる処理結果である。ここではΓ=R+1かつMU=4の例を説明する。この際、ダミー後段処理での改ざんを検知するための第3チェックサムを第3方式に則って生成する。第3方式は、安全性がダミー後段処理の対象となる秘匿情報の復元値のデータ量に依存しない方式である。第3方式は、第1方式と同一であってもなくてもよい。ここでは第3方式と第1方式とが互いに同一である例を示す。
[0050]
 まず、チェックサム更新部2038-nは、第3チェックサムに含まれるC 3,tをヌル(空集合)に初期化する。第3チェックサムはC 3,tのみから構成されてもよいし、C 3,tとその他の情報とから構成されてもよい(ステップS2038-n)。
[0051]
 前述の残存処理でΨ’個の秘密計算Com3 ,…,Com3 Ψ’-1が行われるとする。ただし、Ψ’は1以上の整数である。秘密分散方式meth に則った秘匿情報{d λ}∈{F}を用いる秘密計算Com3 ψ’(ただし、ψ’=0,…,Ψ’-1)が行われる際、チェックサム更新部2038-nは、秘匿情報{d λ}と秘匿情報{r }とを用いた秘密計算によって秘匿情報{d λ}を生成する。ただし、Λは1以上の整数であり、λ=0,…,Λ-1である。さらにチェックサム更新部2038-nは、秘匿情報{d λ}と秘匿情報{d λ}との組であるランダム化分散値<d λ>=<{d λ},{d λ}>を得、ランダム化分散値<d λ>の追加によってC 3,tを更新する(ステップS2038a-n)。
[0052]
 秘密計算部1031-nは秘密計算Com3 ψ’を実行する(ステップS2031a-n)。
[0053]
 秘密計算Com3 ψ’の実行により、秘密分散方式meth に則った秘密計算結果である秘匿情報{h’ }が得られる。この際、チェックサム更新部2038-nは、秘匿情報{h’ }と秘匿情報{r }とを用いた秘密計算によって秘匿情報{h’ }を得る。ただし、Wは1以上の整数であり、w=0,…,W-1である。さらに、チェックサム更新部2038-nは、秘匿情報{h’ }と秘匿情報{h’ }との組であるランダム化分散値<h’ >=<{h’ },{h’ }>を得、ランダム化分散値<h’ >の追加によってC 3,tを更新する。秘密計算結果が複数の秘匿情報を含む場合、チェックサム更新部2038-nは、それぞれの秘匿情報についてランダム化分散値を生成し、それらの追加によってC 3,tを更新する(ステップS2038b-n)。
[0054]
 ステップS2038a-n~S2038b-nの処理は、Ψ’個の秘密計算Com3 ,…,Com3 Ψ’-1が実行され、秘匿情報{M DP,Γ,MU}が得られるまで繰り返される。Γ=R+1かつMU=4の場合、R+1ラウンドが終了するまで、ステップS2038a-n~S2038b-nの処理が繰り返される。秘匿情報{M DP,Γ,MU}が得られると、チェックサム更新部2038-nは、C 3,t=<φ3 >,…,<φ3 Δ’-1>を含む第3チェックサムを出力する。ただし、δ’=0,…,Δ’-1であり、<φ3 δ’>はランダム化分散値である。
[0055]
 次に、チェックサム更新部2037-nが、第2チェックサムに含まれるC 2,A,C 2,Π_q,C 2,Dをヌル(空集合)に初期化する。第2チェックサムはC 2,A,C 2,Π_q,C 2,Dのみから構成されてもよいし、C 2,A,C 2,Π_q,C 2,Dとその他の情報とから構成されてもよい(ステップS2037-n)。
[0056]
 ランダム置換部2036-nが、ランダム置換の内容を表すランダム置換情報π の秘匿情報{π }を生成する。ただし、Qは1以上の整数であり、q=0,…,Q-1である。好ましくは、ランダム置換情報π はランダム巡回シフトを表す情報である(ステップS2036-n)。
[0057]
 結合部2035c-nには、ステップS1020-nで得られたb=0,…,B-1についての秘匿情報{M b,γ,μ}、および、ステップS2035-nで得られた秘匿情報{D },…,{D Y-1}が入力される。結合部2035c-nは、これらを用い、秘密計算により、行列M 0,γ,μ,…,M B-1,γ,μの要素からなる非ランダム化列A∈F UBの秘匿情報{A}とY個のダミーブロックD ,…,D Y-1∈F の秘匿情報{D },…,{D Y-1}とを結合した秘匿情報{A|D}={A|D |…|D Y-1}を得る。ただし、α|βはαとβとの結合(連結)を表す(ステップS2035c-n)。
[0058]
 ランダム置換部2036-nは、秘匿情報{π }および秘匿情報{A|D}を用い、A|Dをランダム置換して得られるランダム化列Π =π (A|D)∈F U(B+Y)の秘匿情報{Π }={π (A|D)}を秘密計算によって得て出力する。この処理は各q=0,…,Q-1について実行される(ステップS2036b-n)。
[0059]
 前述の残存処理でΘ個のサブ処理Sub ,…,Sub Θ-1の秘密計算が行われるとする。ただし、Θが1以上の整数であり、θ=0,…,Θ-1である。秘密計算部1031-nは、秘匿情報{A}を用い、非ランダム化列Aを構成する行列M b,γ,μのU個の要素に対応する秘匿情報{M b,γ,μ}ごとに各サブ処理Sub Θの秘密計算を実行する。すなわち、秘密計算部1031-nは、各秘匿情報{M b,γ,μ}に対して各サブ処理Sub Θの秘密計算を実行する。これにより、秘密計算部1031-nは、非ランダム化列Aを構成する各行列M b,γ,μに残存処理を適用して得られる行列M b,Γ,MUの秘匿情報{M b,Γ,MU}を得る。また秘密計算部1031-nは、q=0,…,Q-1について、秘匿情報{Π }を用い、ランダム化列Π ∈F U(B+Y)を構成するU個の要素Π q,b”,γ,μ∈F に対応する秘匿情報{Π q,b”,γ,μ}∈{F }ごとに、各サブ処理Sub Θの秘密計算を実行する。すなわち、秘密計算部1031-nは、各秘匿情報{Π q,b”,γ,μ}に対して各サブ処理Sub Θの秘密計算を実行する。ただし、b”=0,…,B-1,…,B+Y-1であり、Π =Π q,0,γ,μ|…|Π q,B+Y-1,γ,μである。これにより、秘密計算部1031-nは、各サブ処理Sub θの秘密計算結果である秘密情報{Π q,b”,Γ,MU}∈{F }を得る。さらに秘密計算部1031-nは、少なくとも一部のダミーブロックD (例えば、要処理ダミーブロックDPを除くダミーブロックD )に対して各サブ処理Sub Θを実行することで、各サブ処理Sub θの演算結果D y,Γ,MU∈F を得る(ステップS2031b-n)。
[0060]
 秘匿化部2035b-nは、演算結果D y,Γ,MUを正当性を持つ方法で秘匿し、秘匿情報{D y,Γ,MU}を得て出力する(ステップS2035b-n)。
[0061]
 チェックサム更新部2037-nは、秘匿情報{M b,Γ,MU}を得るまでの過程で得られる各サブ処理Sub θの秘密計算結果である秘匿情報{M b,θ,Γ,MU}∈{F }でC 2,Aを更新する。例えば、C 2,A=(C 0,2,A,…,C B-1,2,A)の場合、チェックサム更新部2037-nは(C 0,2,A|{M 0,θ,Γ,MU},…,C B-1,2,A|{M B-1,θ,Γ,MU})を新たなC 2,Aとする(ステップS2037b-n)。
[0062]
 また、チェックサム更新部2037-nは、q=0,…,Q-1について、各サブ処理Sub θの秘密計算結果である秘密情報{Π q,b”,θ,Γ,MU}∈{F }でC 2,Π_qを更新する。例えば、C 2,Π_q=(C 0,2,Π_q,…,C B+Y-1,2,Π_q)の場合、チェックサム更新部2037-nは(C 0,2,Π_q|{Π q,0,θ,Γ,MU},…,C B+Y-1,2,Π_q|{Π q,B+Y-1,θ,Γ,MU})を新たなC 2,Π_qとする(ステップS2037c-n)。
[0063]
 さらに、チェックサム更新部2037-nは、各サブ処理Sub θの演算結果の秘匿情報{D y,θ,Γ,MU}∈{F }でC 2,Dを更新する。例えば、C 2,D=(C 0,2,D,…,C Y-1,2,D)の場合、チェックサム更新部2037-nは(C 0,2,D|{D 0,θ,Γ,MU},…,C Y-1,2,D|{D Y-1,θ,Γ,MU})を新たなC 2,Dとする(ステップS2037d-n)。
[0064]
 ステップS2031b-n~S2037d-nの処理は、Θ個のサブ処理Sub ,…,Sub Θ-1のすべてについて実行される。その後、チェックサム更新部2037-nは、C 2,A,C 2,Π_q,C 2,Dを含む第2チェックサムを出力する。
[0065]
 ≪ステップS1041-n≫
 秘密計算装置10-nに代えて秘密計算装置20-nが実行する以外、第1実施形態と同じである。
[0066]
 ≪ステップS2042-n≫
 同期部2042-nは、すべての秘密計算装置20-1~20-(N-1)でのすべての秘密計算が終了するまで待機する同期処理を実行する。N=1の場合には同期処理は実行されない。
[0067]
 ≪ステップS2043-n≫
 正当性検証部2043-nには、C 1,t=<φ >,…,<φ Δ-1>を含む第1チェックサムおよびC 3,t=<φ3 >,…,<φ3 Δ’-1>を含む第3チェックサムが入力される。正当性検証部2043-nは、参考文献4,5に記載されているように、C 1,tおよびC 3,tの正当性を検証する。
[0068]
 C 1,tの正当性を検証する場合、正当性検証部2043-nは、<φ >=<{φ },{φ }>,…,<φ Δ―1>=<{φ Δ―1},{φ Δ―1}>の{φ },…,{φ Δ―1}および{r }を用い、秘密計算によって、φ ,…,φ Δ―1の総和にr を乗じて得られる結果の秘匿情報{r (φ +…+φ Δ―1)}を求める。さらに正当性検証部2043-nは、{φ },…,{φ Δ―1}を用い、秘密計算によって、φ ,…,φ Δ―1の総和の秘匿情報{φ +…+φ Δ―1}を求める。正当性検証部2043-nは、秘匿情報{r (φ +…+φ Δ―1)}および{φ +…+φ Δ―1}を用いて、秘密計算によって、DC 1,t=r (φ +…+φ Δ―1)-(φ +…+φ Δ―1)の秘匿情報{DC 1,t}を得てDC 1,tを復元する。正当性検証部2043-nは、すべてのt=0,…,T-1についてDC 1,t=0であれば前段処理に改ざんが無かったと判定し、そうでなければ前段処理に改ざんがあったと判定する。
[0069]
 C 3,tの正当性を検証する場合、正当性検証部2043-nは、<φ3 >=<{φ3 },{φ3 }>,…,<φ3 Δ’―1>=<{φ3 Δ’―1},{φ3 Δ’―1}>の{φ3 },…,{φ3 Δ’―1}および{r }を用い、秘密計算によって、φ3 ,…,φ3 Δ’―1の総和にr を乗じて得られる結果の秘匿情報{r (φ3 +…+φ3 Δ―1)}を求める。さらに正当性検証部2043-nは、{φ3 },…,{φ3 Δ’―1}を用い、秘密計算によって、φ3 ,…,φ3 Δ’―1の総和の秘匿情報{φ3 +…+φ3 Δ’―1}を求める。正当性検証部2043-nは、秘匿情報{r (φ3 +…+φ3 Δ’―1)}および{φ3 +…+φ3 Δ’―1}を用いて、秘密計算によって、DC 3,t=r (φ3 +…+φ3 Δ’―1)-(φ3 +…+φ3 Δ’―1)の秘匿情報{DC 3,t}を得てDC 3,tを復元する。正当性検証部2043-nは、すべてのt=0,…,T-1についてDC 3,t=0であれば後段処理に改ざんが無かったと判定し、そうでなければ後段処理に改ざんがあったと判定する。
[0070]
 ≪ステップS2044-n≫
 正当性検証部2044-nには、C 2,A,C 2,Π_q,C 2,Dを含む第2チェックサムおよび秘匿情報{π }が入力される。正当性検証部2044-nは、参考文献5,6に記載されているように、C 2,A,C 2,Π_q,C 2,Dの正当性を検証する。すなわち、正当性検証部2044-nは、秘匿情報{π }を公開してランダム置換情報π を得、π ,C 2,A,C 2,Π_q,C 2,Dを用い、秘密計算によって、C 2,Π_qの復元値から、π に従ってC 2,A|C 2,Dをランダム置換した列の復元値を減じた列の秘匿情報{ζ }={ζ 0,q},…,{ζ B+Y-1,q}を得る。正当性検証部2044-nは、秘匿情報{ζ }={ζ 0,q},…,{ζ B+Y-1,q}の各要素{ζ b”,q}(ただし、b”=0,…,B+Y-1)を{F }の元ごとに分割し、{ζ’ b”,q,0},…,{ζ’ b”,q,M”-1}∈{F }の列を得る。ただし、M”は正の整数である。{F }に満たない要素には{0}がパディングされる。正当性検証部2044-nは、秘密計算によって、乱数ranの秘匿情報{ran}と{ζ’ b”,q,0},…,{ζ’ b”,q,M”-1}との積和演算を行い、その結果{ζ}を公開してζを得る。正当性検証部2044-nは、ζが0であれば後段処理に改ざんが無かったと判定し、そうでなければ後段処理に改ざんがあったと判定する。
[0071]
 <本形態の特徴>
 第1実施形態と同様、本形態でも要素の置換と行の巡回シフトと列の線形和とラウンド鍵の加算とを繰り返すラウンド処理を秘密計算によって効率的に実行できる。特に本形態では、前段処理での改ざんを検知するための第1チェックサムを第1方式に則って生成し、後段処理での改ざんを検知するための第2チェックサムを第2方式に則って生成した。前段処理に比べて後段処理では処理データ量が格段に多い。第2方式は処理データ量が多いほど安全性が高い方式であり、後段処理での改ざんを検知に適している。一方、前段処理では処理データ量が少ないため、第2方式を用いても効率が悪い。本形態では、前段処理と後段処理とでチェックサムの生成方式を変更することで、安全性の高い通信を効率よく実現できる。なお、前段処理で改ざんが検知された場合にはすべての処理が破棄される。一方、後段処理で改ざんが検知された場合にはすべての処理が破棄されてもよいし、後段処理のみが破棄されてもよい。
[0072]
 [第2実施形態の変形例]
 第2実施形態では、Ψ個の秘密計算Com ,…,Com Ψ-1のすべてについてランダム化分散値が生成され、C 1,tが更新される例を説明した(図7)。しかしながら、Ψ個の秘密計算Com ,…,Com Ψ-1の一部のみについてランダム化分散値が生成され、C 1,tが更新されてもよい。例えば、Ψ個の秘密計算Com ,…,Com Ψ-1のうち、通信を必要とする最後の秘密計算までについてランダム化分散値が生成され、C 1,tが更新されてもよい。例えば、秘匿情報{M(i ,…,i S-1)}が秘匿情報{M b,3,1}または{M b,3,2}である場合に、置換処理P 3,1の通信を必要とする秘密計算(例えば、SubBytesの乗法逆元演算の秘密計算)までについてランダム化分散値が生成され、C 1,tが更新されてもよい。
[0073]
 また、ステップS1020-nで行われる各秘密計算の前後においてランダム化分散値が生成され、C 1,tが更新されてもよい。すなわち、ステップS1020-nにおいて、秘密分散方式meth に則った秘匿情報{a λ}を用いた秘密計算を行う際に、秘匿情報{a λ}と秘匿情報{r }とを用いた秘密計算によって秘匿情報{a λ}を得、秘匿情報{a λ}と秘匿情報{a λ}との組であるランダム化分散値<a λ>=<{a λ},{a λ}>を得、ランダム化分散値<a λ>の追加によってC 1,tを更新してもよい。さらに、ステップS1020-nにおいて、秘密分散方式meth に則った秘密計算結果である秘匿情報{h }が得られた際に、秘匿情報{h }と秘匿情報{r }とを用いた秘密計算によって秘匿情報{h }を得、秘匿情報{h }と秘匿情報{h }との組であるランダム化分散値<h >=<{h },{h }>を得、ランダム化分散値<h >の追加によってC 1,tを更新することで、C 1,tを含む第1チェックサムを更新してもよい。
[0074]
 また、ステップS1041-nでの改ざんを検知するためのチェックサムが生成され、検証されてもよい。このチェックサムは、第2方式に則って生成されることが望ましい。
[0075]
 [その他の変形例等]
 なお、本発明は上述の実施形態に限定されるものではない。上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
[0076]
 上記の各装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
[0077]
 上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
[0078]
 このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
[0079]
 このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
[0080]
 コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。

符号の説明

[0081]
1,2 秘密計算システム
10-n,20-n 秘密計算装置

請求の範囲

[請求項1]
 Bが1以上の整数であり、Rが3以上の整数であり、Sが2以上の整数であり、U=S であり、Fが有限体であり、b=0,…,B-1であり、r=1,…,Rであり、j=2,…,Rであり、
 1ラウンド目のラウンド処理が処理P 1,4を含み、前記処理P 1,4が1ラウンド目のラウンド鍵k ∈F の要素からなるS×S行列の1つの列のS個の要素にS個のカウンタ値i b,0,…,i b,S-1をそれぞれ加算して行列M b,1,4を得る処理を含み、
 jラウンド目のラウンド処理が処理P j,1と処理P j,2と処理P j,3と処理P j,4とを含み、前記処理P j,1が前記行列M b,j-1,4の各要素を置換して行列M b,j,1を得る処理を含み、前記処理P j,2が前記行列M b,j,1の各要素を行ごとに巡回シフトして行列M b,j,2を得る処理を含み、前記処理P j,3が前記行列M b,j,2の各列のS個の要素の線形和を当該列のS個の要素とした行列M b,j,3を得る処理を含み、前記処理P j,4が前記行列M b,j,3の各要素にjラウンド目のラウンド鍵k の各要素を加算して行列M b,j,4を得る処理を含み、
 何れかのラウンド鍵k ,…,k の秘匿情報を用い、秘密計算により、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を得る前段処理を行う表生成部と、
 前記表M(i ,…,i S-1)に前記カウンタ値i b,0,…,i b,S-1を代入したM(i b,0,…,i b,S-1)がM b,2,1,…,M b,3,2の何れかである行列M b,γ,μであり、前記カウンタ値i b,0,…,i b,S-1の秘匿情報{i b,0},…,{i b,S-1}および前記秘匿情報{M(i ,…,i S-1)}を用い、秘密計算によってb=0,…,B-1についての前記行列M b,γ,μの秘匿情報{M b,γ,μ}を得る表計算部と、
 何れかのラウンド鍵k ,…,k R+1の秘匿情報および前記秘匿情報{M b,γ,μ}を用い、秘密計算により、j=2,…,Rについての前記処理P j,1、前記処理P j,2、前記処理P j,3、および前記処理P j,4のうち、処理P γ,μよりも後に行われる各処理を含む残存処理を実行して得られる行列M b,Γ,MUの秘匿情報{M b,Γ,MU}を得る後段処理を行うラウンド処理部と、
を有する秘密計算装置。
[請求項2]
 請求項1の秘密計算装置であって、
 前記表生成部は、前記前段処理での改ざんを検知するための第1チェックサムを第1方式に則って生成し、
 前記ラウンド処理部は、前記後段処理での改ざんを検知するための第2チェックサムを第2方式に則って生成し、
 前記第1方式は、改ざん検知対象である秘匿情報の復元値のデータ量に、安全性の高さが依存しない方式であり、
 前記第2方式は、改ざん検知対象である秘匿情報の復元値のデータ量がα であるときの安全性が、改ざん検知対象である秘匿情報の復元値のデータ量がα であるときの安全性よりも高い方式であり、α がα よりも大きい、秘密計算装置。
[請求項3]
 請求項2の秘密計算装置であって、
 T,Λ,W,Y,Q,Θが1以上の整数であり、t=0,…,T-1であり、λ=0,…,Λ-1であり、w=0,…,W-1であり、y=0,…,Y-1であり、q=0,…,Q-1であり、θ=0,…,Θ-1であり、前記前段処理はT種類の秘密分散方式meth ,…,meth T-1に則った秘匿情報を用いた秘密計算を含み、
 (1)前記第1チェックサムを前記第1方式に則って生成する処理は、
 (1-1)乱数r を秘密分散した秘匿情報{r }を得る処理と、
 (1-2)前記秘密分散方式meth に則った秘匿情報{a λ}を用いた秘密計算を行う際に、前記秘匿情報{a λ}と前記秘匿情報{r }とを用いた秘密計算によって秘匿情報{a λ}を得、前記秘匿情報{a λ}と前記秘匿情報{a λ}との組であるランダム化分散値<a λ>=<{a λ},{a λ}>を得、前記ランダム化分散値<a λ>の追加によってC 1,tを更新し、
前記秘密分散方式meth に則った秘密計算結果である秘匿情報{h }が得られた際に、前記秘匿情報{h }と前記秘匿情報{r }とを用いた秘密計算によって秘匿情報{h }を得、前記秘匿情報{h }と前記秘匿情報{h }との組であるランダム化分散値<h >=<{h },{h }>を得、前記ランダム化分散値<h >の追加によってC 1,tを更新することで、
1,tを含む前記第1チェックサムを更新する処理と、を含み、
 (2)前記第2チェックサムを前記第2方式に則って生成する処理は、
 (2-1)行列M 0,γ,μ,…,M B-1,γ,μの要素からなる非ランダム化列A∈F UBの秘匿情報{A}とY個のダミーブロックD ,…,D Y-1∈F の秘匿情報{D },…,{D Y-1}とを結合した秘匿情報{A|D}={A|D |…|D Y-1}を得る処理と、
 (2-2)前記秘匿情報{A|D}を用い、A|Dをランダム置換して得られるランダム化列Π =π (A|D)∈F U(B+Y)の秘匿情報{Π }={π (A|D)}を秘密計算によって得る処理と、
 (2-3)前記秘匿情報{A}を用い、前記非ランダム化列Aを構成する前記行列M b,γ,μのU個の要素に対応する秘匿情報{M b,γ,μ}ごとにサブ処理Sub ,…,Sub Θ-1の秘密計算を実行して、前記非ランダム化列Aを構成する前記行列M b,γ,μの要素に前記残存処理を適用して得られる前記行列M b,Γ,MUの前記秘匿情報{M b,Γ,MU}を得、前記秘匿情報{M b,Γ,MU}を得るまでの過程で得られるサブ処理Sub θの秘密計算結果でC 2,Aを更新し、
 前記秘匿情報{Π }を用い、前記ランダム化列Π を構成するU個の要素に対応する秘匿情報ごとに前記サブ処理Sub ,…,Sub Θ-1の秘密計算を実行することで得られる各サブ処理Sub θの秘密計算結果でC 2,Π_qを更新し、
 少なくとも一部の前記ダミーブロックD に対して前記サブ処理Sub ,…,Sub Θ-1を実行することで得られる各サブ処理Sub θの演算結果の秘匿情報でC 2,Dを更新することで、
 C 2,A,C 2,Π_q,C 2,Dを含む前記第2チェックサムを更新する処理と、を含む秘密計算装置。
[請求項4]
 請求項3の秘密計算装置であって、
 前記ラウンド処理部は、何れかのラウンド鍵k ,…,k R+1の秘匿情報および前記ダミーブロックD ,…,D Y-1の何れかである要処理ダミーブロックDPの秘匿情報{DP}を用い、前記要処理ダミーブロックDPに前記残存処理を行って得られる処理結果の秘匿情報を得るダミー後段処理をさらに行い、前記ダミー後段処理での改ざんを検知するための第3チェックサムを第3方式に則って生成し、
 前記第3方式は、改ざん検知対象である秘匿情報の復元値のデータ量に、安全性の高さが依存しない方式である、秘密計算装置。
[請求項5]
 請求項4の秘密計算装置であって、
 (3)前記第3チェックサムを前記第3方式に則って生成する処理は、
 前記秘密分散方式meth に則った秘匿情報{d λ}を用いた秘密計算を行う際に、前記秘匿情報{d λ}と前記秘匿情報{r }とを用いた秘密計算によって秘匿情報{d λ}を得、前記秘匿情報{d λ}と前記秘匿情報{d λ}との組であるランダム化分散値<d λ>=<{d λ},{d λ}>を得、前記ランダム化分散値<d λ>の追加によってC 3,tを更新し、
前記秘密分散方式meth に則った秘密計算結果である秘匿情報{h’ }が得られた際に、前記秘匿情報{h’ }と前記秘匿情報{r }とを用いた秘密計算によって秘匿情報{h’ }を得、前記秘匿情報{h’ }と前記秘匿情報{h’ }との組であるランダム化分散値<h’ >=<{h’ },{h’ }>を得、前記ランダム化分散値<h’ >の追加によってC 3,tを更新することで、
3,tを含む前記第3チェックサムを更新する処理を含む、秘密計算装置。
[請求項6]
 請求項3から5の何れかの秘密計算装置であって、
 pがBより大きな素数であり、Y=p-Bである、秘密計算装置。
[請求項7]
 請求項3から6の何れかの秘密計算装置であって、
 前記ランダム置換はランダム巡回シフトである、秘密計算装置。
[請求項8]
 請求項1から7の何れかの秘密計算装置であって、
 前記行列M b,γ,μはM b,3,1またはM b,3,2である、秘密計算装置。
[請求項9]
 Bが1以上の整数であり、Rが3以上の整数であり、Sが2以上の整数であり、U=S であり、Fが体であり、b=0,…,B-1であり、r=1,…,Rであり、j=2,…,Rであり、
 1ラウンド目のラウンド処理が処理P 1,4を含み、前記処理P 1,4が1ラウンド目のラウンド鍵k ∈F の要素からなるS×S行列の1つの列のS個の要素にS個のカウンタ値i b,0,…,i b,S-1をそれぞれ加算して行列M b,1,4を得る処理を含み、
 jラウンド目のラウンド処理が処理P j,1と処理P j,2と処理P j,3と処理P j,4とを含み、前記処理P j,1が前記行列M b,j-1,4の各要素を置換して行列M b,j,1を得る処理を含み、前記処理P j,2が前記行列M b,j,1の各要素を行ごとに巡回シフトして行列M b,j,2を得る処理を含み、前記処理P j,3が前記行列M b,j,2の各列のS個の要素の線形和を当該列のS個の要素とした行列M b,j,3を得る処理を含み、前記処理P j,4が前記行列M b,j,3の各要素にjラウンド目のラウンド鍵k の各要素を加算して行列M b,j,4を得る処理を含み、
 表生成部が、何れかのラウンド鍵k ,…,k の秘匿情報を用い、秘密計算により、変数i=i ,…,i S-1に対する一変数関数値を要素に持つ表M(i ,…,i S-1)の秘匿情報{M(i ,…,i S-1)}を得る前段処理を行う表生成ステップと、
 前記表M(i ,…,i S-1)に前記カウンタ値i b,0,…,i b,S-1を代入したM(i b,0,…,i b,S-1)がM b,2,1,…,M b,3,2の何れかである行列M b,γ,μであり、表計算部が、前記カウンタ値i b,0,…,i b,S-1の秘匿情報{i b,0},…,{i b,S-1}および前記秘匿情報{M(i ,…,i S-1)}を用い、秘密計算によってb=0,…,B-1についての前記行列M b,γ,μの秘匿情報{M b,γ,μ}を得る表計算ステップと、
 ラウンド処理部が、何れかのラウンド鍵k ,…,k R+1の秘匿情報および前記秘匿情報{M b,γ,μ}を用い、秘密計算により、j=2,…,Rについての前記処理P j,1、前記処理P j,2、前記処理P j,3、および前記処理P j,4のうち、処理P γ,μよりも後に行われる各処理を含む残存処理を実行して得られる行列M b,Γ,MUの秘匿情報{M b,Γ,MU}を得る後段処理を行うラウンド処理ステップと、
を有する秘密計算方法。
[請求項10]
 請求項1から8の何れかの秘密計算装置としてコンピュータを機能させるためのプログラム。
[請求項11]
 請求項1から8の何れかの秘密計算装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]