JP6759168B2 - 難読化回路生成装置、難読化回路計算装置、難読化回路生成方法、難読化回路計算方法、プログラム - Google Patents

難読化回路生成装置、難読化回路計算装置、難読化回路生成方法、難読化回路計算方法、プログラム Download PDF

Info

Publication number
JP6759168B2
JP6759168B2 JP2017173690A JP2017173690A JP6759168B2 JP 6759168 B2 JP6759168 B2 JP 6759168B2 JP 2017173690 A JP2017173690 A JP 2017173690A JP 2017173690 A JP2017173690 A JP 2017173690A JP 6759168 B2 JP6759168 B2 JP 6759168B2
Authority
JP
Japan
Prior art keywords
circuit
obfuscation
input
ske
msk
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017173690A
Other languages
English (en)
Other versions
JP2019049641A (ja
Inventor
陵 西巻
陵 西巻
冬航 北川
冬航 北川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2017173690A priority Critical patent/JP6759168B2/ja
Publication of JP2019049641A publication Critical patent/JP2019049641A/ja
Application granted granted Critical
Publication of JP6759168B2 publication Critical patent/JP6759168B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、回路を難読化する技術に関し、特に秘密鍵関数型暗号を用いて構成される識別不可能性難読化技術に関する。
識別不可能性難読化器の構成方法はこれまでにいくつか知られている。その構成方法は大きく分けて2通りある。1つは、多重線形写像を用いて、直接識別不可能性難読化器を構成する方法である(非特許文献1、非特許文献2、非特許文献3、非特許文献4、非特許文献5、非特許文献6、非特許文献7、非特許文献8、非特許文献9、非特許文献10)。もう1つは、例えば、公開鍵暗号、電子署名、IDベース暗号などの一般的な暗号技術を用いて構成する方法である(非特許文献11、非特許文献12、非特許文献13、非特許文献14、非特許文献15、非特許文献16)。
以下、一般的な暗号技術を用いて構成する方法についてさらに詳しく説明する。非特許文献11、非特許文献12では、識別不可能性難読化器を構成する部品となる暗号技術として、1-key弱簡素性公開鍵関数型暗号を利用している。また、非特許文献14、非特許文献15では、結託耐性を持つ秘密鍵関数型暗号と(標準的な)公開鍵暗号を利用して識別不可能性難読化器を構成している。さらに、非特許文献16では、結託耐性を持つ秘密鍵関数型暗号だけを利用して識別不可能性難読化器を構成している。
公開鍵関数型暗号は自明に秘密鍵関数型暗号になるため、公開鍵関数型暗号は秘密鍵関数型暗号より強い部品といえる。したがって、識別不可能性難読化器の構成には、公開鍵関数型暗号よりも秘密鍵関数型暗号を利用して構成できる方が好ましい。
Sanjam Garg, Craig Gentry, Shai Halevi, Mariana Raykova, Amit Sahai, and Brent Waters, "Candidate indistinguishability obfuscation and functional encryption for all circuits", In 54th FOCS, pages 40-49, IEEE Computer Society Press, October 2013. Boaz Barak, Sanjam Garg, Yael Tauman Kalai, Omer Paneth, and Amit Sahai, "Protecting obfuscation against algebraic attacks", In Phong Q. Nguyen and Elisabeth Oswald, editors, EUROCRYPT 2014, volume 8441 of LNCS, pages 221-238, Springer, Heidelberg, May 2014. Prabhanjan Vijendra Ananth, Divya Gupta, Yuval Ishai, and Amit Sahai, "Optimizing obfuscation: Avoiding Barrington's theorem", In Gail-Joon Ahn, Moti Yung, and Ninghui Li, editors, ACM CCS 14, pages 646-658, ACM Press, November 2014. Joe Zimmerman, "How to obfuscate programs directly", In Elisabeth Oswald and Marc Fischlin, editors, EUROCRYPT 2015, Part II, volume 9057 of LNCS, pages 439-467, Springer, Heidelberg, April 2015. Benny Applebaum and Zvika Brakerski, "Obfuscating circuits via composite-order graded encoding", In Yevgeniy Dodis and Jesper Buus Nielsen, editors, TCC 2015, Part II, volume 9015 of LNCS, pages 528-556, Springer, Heidelberg, March 2015. Eric Miles, Amit Sahai, and Mor Weiss, "Protecting obfuscation against arithmetic attacks", Cryptology ePrint Archive, Report 2014/878, <http://eprint.iacr.org/2014/878>, 2014. Eric Miles, Amit Sahai, and Mark Zhandry, "Annihilation attacks for multilinear maps: Cryptanalysis of indistinguishability obfuscation over GGH13", Cryptology ePrint Archive, Report 2016/147, <http://eprint.iacr.org/2016/147>, 2016. Craig Gentry, Allison Bishop Lewko, Amit Sahai, and Brent Waters, "Indistinguishability obfuscation from the multilinear subgroup elimination assumption", In Venkatesan Guruswami, editor, 56th FOCS, pages 151-170, IEEE Computer Society Press, October 2015. Rafael Pass, Karn Seth, and Sidharth Telang, "Indistinguishability obfuscation from semantically-secure multilinear encodings", In Juan A. Garay and Rosario Gennaro, editors, CRYPTO 2014, Part I, volume 8616 of LNCS, pages 500-517, Springer, Heidelberg, August 2014. Huijia Lin, "Indistinguishability obfuscation from constant-degree graded encoding schemes", In Marc Fischlin and Jean-Sebastien Coron, editors, EUROCRYPT 2016, Part I, volume 9665 of LNCS, pages 28-57. Springer, Heidelberg, May 2016. Prabhanjan Ananth and Abhishek Jain, "Indistinguishability obfuscation from compact functional encryption", In Rosario Gennaro and Matthew J. B. Robshaw, editors, CRYPTO 2015, Part I, volume 9215 of LNCS, pages 308-326, Springer, Heidelberg, August 2015. Nir Bitansky and Vinod Vaikuntanathan, "Indistinguishability obfuscation from functional encryption", In Venkatesan Guruswami, editor, 56th FOCS, pages 171-190, IEEE Computer Society Press, October 2015. Prabhanjan Ananth, Abhishek Jain, and Amit Sahai, "Indistinguishability obfuscation from functional encryption for simple functions", Cryptology ePrint Archive, Report 2015/730, <http://eprint.iacr.org/2015/730>, 2015. Nir Bitansky, Ryo Nishimaki, Alain Passelegue, and Daniel Wichs, "From cryptomania to obfustopia through secret-key functional encryption", Cryptology ePrint Archive, Report 2016/558, <http://eprint.iacr.org/2016/558>, 2016. Fuyuki Kitagawa, Ryo Nishimaki, and Keisuke Tanaka, "Indistinguishability obfuscation: Simpler constructions using secret-key functional encryption", IACR Cryptology ePrint Archive, 2017:275, 2017. Ilan Komargodski and Gil Segev, "From minicrypt to obfustopia via private-key functional encryption", IACR Cryptology ePrint Archive, 2017:080, 2017.
しかし、非特許文献16を用いて構成できる識別不可能性難読化器が扱える回路の入力サイズは高々(logλ)1+δ、回路のサイズは高々2(logλ)^νでしかない(ここで、λはセキュリティパラメータ、δ(<1)、ν(<1)は定数であり、^(キャレット)は上付き添字を表す)。これは、任意の多項式サイズ回路を扱える識別不可能性難読化器よりも弱い機能しか持たないことを意味する。なぜなら、任意の多項式サイズ回路の場合、入力サイズはn=λ、回路サイズはpoly(λ)であり、それぞれλ>(logλ)1+δ、poly(λ)>2logλ>2(logλ)^νが成立、多項式サイズ回路に対する識別不可能性難読化器は、非特許文献16を用いて構成できる識別不可能性難読化器が扱える回路よりもより多くの回路を扱えるからである。
そこで本発明では、秘密鍵関数型暗号だけを利用して任意の多項式サイズの回路に対する識別不可能性難読化技術を提供することを目的とする。
本発明の一態様は、λ~をセキュリティパラメータ、Cを入力サイズがn(ただし、nは1以上の整数)である難読化対象回路とし、前記セキュリティパラメータλ~と前記回路Cの入力サイズnと前記回路Cから難読化回路C~を生成する難読化回路生成部とを含む難読化回路生成装置であって、前記難読化回路生成部は、WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を穴あけ可能秘密鍵関数型暗号、SKE=(E, D)を秘密鍵暗号、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数、Uをユニバーサル回路とし、Ciを入力サイズがi(ただし、iは1以上n以下の整数)である難読化対象回路とし、C~n生成部と、C~n-1生成部と、…、C~1生成部とを含み、前記C~i生成部(i>1)は、セキュリティパラメータと回路の入力サイズと回路の組(1λ~, i, Ci)を入力とし、(1)Ki,0,Ki,1r{0,1}λ~を選択し、CTi,0 ske←E(Ki,0, Ci)、CTi,1 ske←E(Ki,1, Ci)を生成し、(2)MSKi←WS.Setup(1λ~)を生成し、skEv_i←WS.KG(MSKi, Evi[CTi,0 ske,CTi,1 ske])を生成し(ただし、2≦i≦nに対して、回路計算回路Evi[CTi,0 ske,CTi,1 ske](x(i),K,α)は、暗号文CTi,0 skeとCTi,1 ske、ユニバーサル回路U(・,・)を回路に直接書き込まれている値、文字列x(i)∈{0,1}i、秘密鍵暗号SKEの秘密鍵K、ビットα∈{0,1}を入力とし、1)Ci←D(K, CTi,α ske)を計算し、2)U(Ci, x(i))を出力する回路)、(3)Sir{0,1}λ~を選択し、前記C~i-1生成部を用いて、セキュリティパラメータと回路の入力サイズと回路の組(1λ~, i-1, Ei-1,0[MSKi,Ki,0,Si])からE~i-1を生成し(ただし、3≦i≦n、α∈{0,1}に対して、暗号化回路Ei-1,α[MSKi,Ki,Si](x(i-1))は、マスター秘密鍵MSKi、秘密鍵暗号SKEの秘密鍵Ki、穴あけ可能PRF鍵Siを回路に直接書き込まれている値、文字列x(i-1)∈{0,1}i-1を入力とし、1)xi∈{0,1}に対して、rx_(i-1)||x_i Enc←FS_i(x(i-1)||xi)を計算し、CTi,x_i←WS.Enc(MSKi,x(i-1),(x(i-1)||xi, Ki, α); rx_(i-1)||x_i Enc)を計算し、2)(CTi,0, CTi,1)を出力する回路)、(4)C~i←(skEv_i, E~i-1)を生成し、前記C~1生成部は、セキュリティパラメータと回路の入力サイズと回路の組(1λ~, 1, C1)を入力とし、C~1←(C1(0),C1(1))を生成する。
本発明の一態様は、λ~をセキュリティパラメータ、Cを入力サイズがn(ただし、nは1以上の整数)である難読化対象回路、C~を請求項1に記載の難読化回路生成装置により前記回路Cを難読化した難読化回路、x(n)∈{0,1}nを前記難読化回路C~に対する入力値とし、前記難読化回路C~の入力サイズnと前記難読化回路C~と前記入力値x(n)から、前記回路Cの出力値C(x(n))を計算する難読化回路計算部とを含む難読化回路計算装置であって、前記難読化回路計算部は、WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を穴あけ可能秘密鍵関数型暗号、SKE=(E, D)を秘密鍵暗号、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数、Uをユニバーサル回路とし、Ciを入力サイズがi(ただし、iは1以上の整数)である難読化対象回路、C~iを請求項1に記載の難読化回路生成装置により前記回路Ciを難読化した難読化回路とし、yn計算部と、yn-1計算部と、…、y1計算部とを含み、前記yi計算部(i>1)は、回路の入力サイズと回路と回路への入力値の組(i, C~i, x(i))を入力とし、(1)(skEv_i, E~i-1) ←C~i、x(i-1)||xi←x(i)とパースし、(2)前記yi-1計算部を用いて、回路の入力サイズと回路と回路への入力値の組(i-1, E~i-1, x(i-1))から(CTi,0, CTi,i)を計算し、(3)yi←WS.Dec(skEv_i, x(i-1), CTi,x_i)を計算し、前記y1計算部は、回路の入力サイズと回路と回路への入力値の組(1, C~1, x(1))を入力とし、(CT1,0,CT1,1)←C~1とパースし、y1←CT1,x_(1)を計算する。
本発明によれば、秘密鍵関数型暗号だけを利用して任意の多項式サイズの回路に対する識別不可能性難読化技術を構成することができる。このことは、より弱い暗号仮定から任意の多項式サイズの回路に対する識別不可能性難読化技術が構成できたことを意味する。
秘密鍵関数型暗号OneKey処理システム100の構成の一例を示すブロック図。 システムパラメータ生成装置110の構成の一例を示すブロック図。 暗号化装置120の構成の一例を示すブロック図。 復号装置130の構成の一例を示すブロック図。 穴あき鍵生成装置140の構成の一例を示すブロック図。 穴あき暗号化装置150の構成の一例を示すブロック図。 難読化処理システム400の構成の一例を示すブロック図。 難読化回路生成装置410の構成の一例を示すブロック図。 難読化回路生成部412の構成の一例を示すブロック図。 難読化回路生成部412の動作の一例を示すフローチャート。 難読化回路計算装置420の構成の一例を示すブロック図。 難読化回路計算部421の構成の一例を示すブロック図。 難読化回路計算部421の動作の一例を示すフローチャート。
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
<記法・用語>
まず、記法や基礎的概念について説明する。
^(キャレット)は上付き添字を表す。例えば、xy^zはyzがxに対する上付き添字であり、xy^zはyzがxに対する下付き添字であることを表す。また、_(アンダースコア)は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
有限集合Xから要素xを一様ランダムに選ぶことを、x←Xと表す。
アルゴリズムAについて、入力xに対してアルゴリズムAがyを出力することを、y←A(x)と表す。なお、アルゴリズムAが乱数rを用いていることを明示したいときは、y←A(x;r)と表す。
文字列x,yに対して、x||yは文字列xと文字列yを連結した文字列を表す。||を連結演算子という。
mを1以上の整数とし、[m]={1,…,m}とする。
λをセキュリティパラメータとする。
y:=zは、yにzが設定または代入されること、あるいはyがzにより定義されることを表す。
次に、暗号に関する要素技術について説明する。なお、以下説明する要素技術のいくつかについては、例えば、非特許文献15に詳しく説明されている。
[秘密鍵暗号(secret-key encryption)]
(標準的な)秘密鍵暗号アルゴリズムをSKE=(Enc, Dec)とする。暗号化アルゴリズムEncは、秘密鍵K∈{0,1}λと平文m∈M(ただし、MはSKEの平文空間である)を入力とし、暗号文cを出力する。復号アルゴリズムDecは、秘密鍵Kと暗号文cを入力とし、平文m~∈{⊥}∪M(ただし、⊥はエラーを表す)を出力する。暗号化アルゴリズムEnc、復号アルゴリズムDecはいずれも確率的多項式時間アルゴリズム(PPT)である。
[擬似ランダム関数(pseudo-random function)]
PRF:={FK:{0,1}m_1→{0,1}m_2|K∈{0,1}λ}を擬似ランダム関数(PRF)の族とする(ただし、m1,m2はλの多項式である)。なお、KをPRF鍵という。
穴あけ可能擬似ランダム関数をPPRF=(F,PuncF)とする。このとき、任意の多項式サイズの集合S⊆Dに対して、x∈D-Sを任意の点として、以下が成り立つ。
Figure 0006759168
[秘匿化スキーム(Garbling scheme)]
{Cn}n∈N(ただし、Nは自然数の集合)を回路集合Cnの族とする(ただし、回路集合Cnの要素である回路はnビットを入力とする回路である)。秘匿化スキームをGC=(Grbl,Eval)とする。秘匿化回路生成アルゴリズムGrblは、セキュリティパラメータ1λと回路C∈Cnを入力とし、秘匿化回路C~と2n個のワイヤーキー(ラベルともいう){wi,α}i∈[n]、α∈{0,1}を出力する。秘匿化回路評価アルゴリズムEvalは、秘匿化回路C~とn個のワイヤーキー{wi,x_i}i∈[n](ただし、xi∈{0,1})を入力とし、yを出力する。ここで、y=C(x1,…,xn)である。
[分解可能ランダムエンコーディング(decomposable randomized encoding)]
cを1以上の整数とする。関数f:{0,1}n→{0,1}mに対するc局所分解可能ランダムエンコーディングをRE=(RE.E,RE.D)とする。エンコーディングアルゴリズムRE.Eは、セキュリティパラメータ1λと関数fと関数fへの入力xを入力とし、乱数rを用いて、エンコーディングf^(x;r)を出力する(ただし、f^:{0,1}n×{0,1}ρ→{0,1}μ)。デコーディングアルゴリズムRE.Dは、エンコーディングf^(x;r)を入力とし、関数値f(x)を出力する。ここで、μをREの分解エンコード数、{0,1}ρ(ただし、ρをλの多項式とする)をREの乱数空間という。
また、エンコーディングf^(x;r)は、集合(R1,…, Rμ)を用いてf^(x;r)=(f^1(x;rR_1),…, f^μ(x;rR_μ))と表現できる。このとき、すべてのi∈[μ]に対して、Ri⊆[ρ]、|Ri|=cとなる。
[秘密鍵関数型暗号(secret-key functional encryption)]
M:={Mλ}λ∈Nをメッセージ空間、Y:={Yλ}λ∈Nを値域、I:={Iλ}λ∈Nをインデックス空間、F:={Fλ}λ∈Nを関数空間とする(ただし、f∈Fは、定義域をM、値域をYとする関数である)。秘密鍵関数型暗号をSKFE=(Setup, KG, Enc, Dec)とする。セットアップアルゴリズムSetupは、セキュリティパラメータ1λを入力とし、マスター秘密鍵MSKを出力する。関数復号鍵生成アルゴリズムKGは、マスター秘密鍵MSKと関数f∈Fとインデックスi∈Iを入力とし、関数fの秘密鍵skfを出力する(以下、秘密鍵skfを関数復号鍵という)。暗号化アルゴリズムEncは、マスター秘密鍵MSKと平文x∈Mを入力とし、暗号文CTを出力する。復号アルゴリズムDecは、関数f∈Fに対する関数復号鍵skfと暗号文CTを入力とし、y∈Yまたは⊥を出力する。ここで、y=f(x)である。
秘密鍵関数型暗号以外の要素技術である秘密鍵暗号、穴あけ可能擬似ランダム関数、秘匿化スキーム、分解可能ランダムエンコーディングは、一方向性関数から構成可能であることが知られている。また、秘密鍵関数型暗号は自明に一方向性を含意する。したがって、秘密鍵暗号、穴あけ可能擬似ランダム関数、秘匿化スキーム、分解可能ランダムエンコーディング、秘密鍵関数型暗号は、いずれも秘密鍵関数型暗号から構成可能である。
以下、本発明の実施の形態を説明する上で、特に重要な概念である識別不可能難読化器と穴あけ可能秘密鍵関数型暗号について説明する。
[識別不可能性難読化器(indistinguishability obfuscator)]
難読化器とは、回路を異なる回路に変換する技術である。変換後の回路の機能は変換前の回路の機能と完全に同一である。また、変換後の回路は変換前の回路に関する情報を漏らさない。
特に、識別不可能性難読化器とは、同一の機能を持つ2つの異なる回路を変換したとき、変換後の回路はどちらの回路を変換して得られたものかわからないという特徴を有する難読化器である。識別不可能性難読化器をフォーマルに定式化すると、次のようになる。
確率的多項式時間機械iOが回路族{Cλ}λ∈Nに対する識別不可能性難読化器であるとは、以下の2つの条件(機能性)と(識別不可能性)を満たすことである。
(機能性)任意のセキュリティパラメータλ∈N、任意の回路C∈Cλ、任意の入力xに対して、
Figure 0006759168
(識別不可能性)任意の多項式サイズ識別器Dに対して、無視できる関数μ(・)が存在し、任意の入力xに対してC0(x)=C1(x)が成立し、回路サイズが等しい(つまり、|C0|=|C1|)任意の回路の対C0,C1∈Cλ(ただし、λ∈Nは任意のセキュリティパラメータ)に対して、以下が成り立つ。
Figure 0006759168
さらに、γ<1を定数とし、確率的多項式時間機械sxiOが回路族{Cλ}λ∈Nに対するγ-圧縮SXIO(Strong Exponentially-Efficient Indistinguishability Obfuscation)であるとは、上記(機能性)と(識別不可能性)の条件に加えて、以下の(非自明時間効率性)の条件を満たすことをいう。
(非自明時間効率性)任意のセキュリティパラメータλ∈N、任意の入力長nの回路C∈{Cλ}λ∈Nに対して、入力(1λ,C)に対する確率的多項式時間機械sxiOの実行時間が、高々2・poly(λ,|C|)となる。
γ-圧縮SXIOに関して、次の定理が知られている(非特許文献14)。
(定理)結託耐性秘密鍵関数型暗号が存在するならば、任意の定数γ<1に対して、γ-圧縮SXIOが存在する。
[穴あけ可能秘密鍵関数型暗号(puncturable secret-key functional encryption)]
次に、穴あけ可能秘密鍵関数型暗号について説明する。なお、これは、非特許文献12で導入された穴あけ可能秘密鍵関数型暗号の定義を緩和したものである。
穴あけ可能秘密鍵関数型暗号pSKFEとは、6つの確率的多項式時間アルゴリズムの組(Setup, KG, Enc, Dec, Punc, PEnc)である。以下、M、F、I、Tをそれぞれ穴あけ可能秘密鍵関数型暗号pSKFEのメッセージ空間、関数空間、インデックス空間、タグ空間とする。
セットアップアルゴリズムSetupは、セキュリティパラメータ1λを入力とし、マスター秘密鍵MSKを出力する。
関数復号鍵生成アルゴリズムKGは、マスター秘密鍵MSK、関数f∈F、インデックスi∈Iを入力とし、乱数rを用いて、関数fの関数復号鍵skfを出力する。
暗号化アルゴリズムEncは、マスター秘密鍵MSK、タグtag∈T、平文m∈Mを入力とし、乱数rを用いて、暗号文CTを出力する。
復号アルゴリズムDecは、関数復号鍵skf、タグtag∈T、暗号文CTを入力とし、平文m~∈{⊥}∪Mを出力する。
穴あき鍵生成アルゴリズムPuncは、マスター秘密鍵MSK、タグtag∈Tを入力とし、乱数rを用いて、穴あき鍵MSK*{tag}を出力する。
穴あき暗号化アルゴリズムPEncは、穴あき鍵MSK*、タグtag′∈T、平文m∈Mを入力とし、乱数rを用いて、暗号文CTを出力する。
穴あけ可能関数型暗号の弱簡素性と結託簡素性について、説明する。これらの、概念は、以下の<技術的背景>で用いるものである。
メッセージ空間M:={Mλ}上の関数空間F:={Fλ}に対して、n(λ)を関数空間Fの関数の入力長、s(λ)=maxf∈F_λ|f|を関数空間Fの関数の回路サイズの上限、d(λ)=maxf∈F_λdepth(f)を関数空間Fの関数の深さの上限とする。
穴あけ可能関数型暗号が弱簡素性(weakly succinct)を持つとは、暗号化回路および穴あけ可能暗号化回路のサイズがどちらもsγ・poly(n,λ)で抑えられることをいう。ただし、γ<1は定数、polyは固定の多項式である。なお、γを圧縮割合と呼ぶ。
同様に、穴あけ可能関数型暗号が結託簡素性(collusion succinct)を持つとは、暗号化回路および穴あけ可能暗号化回路のサイズがどちらもqγ・poly(n,λ,s)で抑えられることをいう。ただし、qは発行可能な鍵の数、γ<1は定数、polyは固定の多項式である。なお、γを圧縮割合と呼ぶ。
<技術的背景>
最初に、秘密鍵関数型暗号OneKey、CollSuc、WeakSucについて説明する。これらの3つの秘密鍵関数型暗号は、CollSucがOneKeyから構成され、WeakSucがCollSucから構成されるという関係にある。そして、最後に秘密鍵関数型暗号WeakSucを用いて、識別不可能性難読化器iOを構成する方法について説明する。
[発行可能な関数復号鍵が1つであり、簡素性を持たない穴あけ可能秘密鍵関数型暗号OneKey]
ここでは、一方向性関数から穴あけ可能秘密鍵関数型暗号OneKeyを構成する。穴あけ可能秘密鍵関数型暗号OneKeyは、関数復号鍵を1つだけ発行することができ、簡素性は持たない。以下、関数復号鍵を1つだけ発行することができる関数型暗号をシングルキー関数型暗号ともいう。
GC=(Grbl, Eval)を秘匿化スキーム、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数とする。GCとPPRFを用いて、穴あけ可能秘密鍵関数型暗号OneKey=(1Key.Setup, 1Key.KG, 1Key.Enc, 1Key.Dec, 1Key.Punc, 1Key.PEnc)を構成する。
OneKeyのタグ空間は、PPRFの定義域と同一の{0,1}m_1である。また、OneKeyのインデックス空間は、[1]である。以下、インデックスを1に固定し、省略することとする。さらに、OneKeyの関数空間の関数fは、すべてsビット文字列(f[1], …, f[s])で表現できるものとする。したがって、各f[i]は1ビットである。
また、ユニバーサル回路Uは、回路C′と文字列x′を入力として、C′(x′)を出力する回路である。
穴あけ可能秘密鍵関数型暗号OneKeyの各アルゴリズムについて説明する。
(セットアップアルゴリズム1Key.Setup(1λ))
(1)すべてのj∈[s]、α∈{0,1}に対して、Sj,αr{0,1}λを生成する。
(2)マスター秘密鍵MSK←{Sj,α}j∈[s]、α∈{0,1}を出力する。
(関数復号鍵生成アルゴリズム1Key.KG(MSK,f))
(1)入力であるマスター秘密鍵MSKと関数fを{Sj,α}j∈[s]、α∈{0,1}←MSK、(f[1], …, f[s])←fとパースする。
(2)関数復号鍵skf←(f,{Sj,f[j]}j∈[s])を出力する。
(暗号化アルゴリズム1Key.Enc(MSK, tag, m))
(1)入力であるマスター秘密鍵MSKを{Sj,α}j∈[s]、α∈{0,1}←MSKとパースする。
(2)(U~, {Lj,α}j∈[s]、α∈{0,1})←Grbl(1λ, U(・, m))を計算する。なお、Lj,α∈{0,1}m_2({0,1}m_2は穴あけ可能擬似ランダム関数PPRFの値域)である。
(3)すべてのj∈[s]、α∈{0,1}に対して、Rj,αとcj,αを次式により計算する。
Figure 0006759168
(4)暗号文CT←(U~, {cj,α}j∈[s]、α∈{0,1})を出力する。
(復号アルゴリズム1Key.Dec(skf, tag, CT))
(1)入力である関数復号鍵skfと暗号文CTを(f, { Sj,f[j]}j∈[s])←skf、(U~, {cj,α}j∈[s]、α∈{0,1})←CTとパースする。
(2)すべてのj∈[s]に対して、RjとLjを次式により計算する。
Figure 0006759168
を計算する。
(3)y←Eval(U~, {Lj}j∈[s])を出力する。
(穴あき鍵生成アルゴリズム1Key.Punc(MSK, tag))
(1)入力であるマスター秘密鍵MSKを{Sj,α}j∈[s]、α∈{0,1}←MSKとパースする。
(2)すべてのj∈[s]、α∈{0,1}に対して、S* j,α{tag}←PuncF(Sj,α, tag)を計算する。
(3)穴あき鍵MSK*{tag}←{S* j,α{tag}}j∈[s]、α∈{0,1}を出力する。
(穴あき暗号化アルゴリズム1Key.PEnc(MSK*, tag′, m)
(1)入力である穴あき鍵MSK*を{Sj,α}j∈[s]、α∈{0,1}←MSK*とパースする。
(2)(U~, {Lj,α}j∈[s]、α∈{0,1})←Grbl(1λ, U(・, m))を計算する。
(3)すべてのj∈[s]、α∈{0,1}に対して、Rj,αとcj,αを次式により計算する。
Figure 0006759168
(4)暗号文CT←(U~, {cj,α}j∈[s]、α∈{0,1})を出力する。
この穴あけ可能秘密鍵関数型暗号OneKeyに対して、以下の定理が成り立つ。
(定理1)GCを安全な秘匿化スキーム、PPRFを安全な穴あけ可能擬似ランダム関数とする。このとき、OneKeyは、発行可能な関数復号鍵が1つである、安全な穴あけ可能秘密鍵関数型暗号となる。
[発行可能な関数復号鍵の数がqであり、結託簡素性を持つ穴あけ可能秘密鍵関数型暗号CollSuc]
OneKey=(1Key.Setup, 1Key.KG, 1Key.Enc, 1Key.Dec, 1Key.Punc, 1Key.PEnc)を(定理1)の穴あけ可能秘密鍵関数型暗号とする。また、sxiOをγ-圧縮SXIO、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数とする。OneKeyとsxiOとPPRFを用いて、穴あけ可能秘密鍵関数型暗号CollSuc=(CS.Setup, CS.KG, CS.Enc, CS.Dec, CS.Punc, CS.PEnc)を構成する。なお、ここで用いるPPRFは、OneKeyを構成する際に用いたPPRFとは異なるものである。具体的には、ここで用いるPPRFとOneKeyを構成する際に用いたPPRFは、定義域及び値域が異なる。
qは固定されたλの多項式である。また、CollSucのタグ空間はOneKeyのタグ空間と同一である。つまり、CollSucのタグ空間は、OneKeyの構成に用いた PPRFの定義域と同一の{0,1}m_1である。
穴あけ可能秘密鍵関数型暗号CollSucの各アルゴリズムについて説明する。
(セットアップアルゴリズムCS.Setup(1λ))
(1)S←r{0,1}λを選択する。
(2)マスター秘密鍵MSK←Sを出力する。
(関数復号鍵生成アルゴリズムCS.KG(MSK,f,i))
(1)入力であるマスター秘密鍵MSKをS←MSKとパースする。
(2)ri Setup←FS(i)、MSKi←1Key.Setup(1λ;ri Setup)を計算する。
(3)1Key.skf←1Key.KG(MSKi,f)を計算する。
(4)関数復号鍵skf←(i, 1Key.skf)を出力する。
(暗号化アルゴリズムCS.Enc(MSK, tag, m))
(1)入力であるマスター秘密鍵MSKをS←MSKとパースする。
(2)SEncr{0,1}λを選択する。
(3)暗号文CT←sxiO(E1Key[S, SEnc, tag, m])を出力する。なお、暗号化回路E1Key[S, SEnc, tag, m](i)は、以下の通りである。
<暗号化回路E1Key[S, SEnc, tag, m](i)>
回路に直接書き込まれている値:穴あけ可能PRF鍵SとSEnc、タグtag、平文m
入力:インデックスi∈[q]
手順:
1)ri Setup←FS(i)、rEnc←FS_Enc(i)を計算する。
2)MSKi←1Key.Setup(1λ;ri Setup)を計算する。
3)暗号文CTi←1Key.Enc(MSKi, tag, m; rEnc)を出力する。
(復号アルゴリズムCS.Dec(skf, tag, CT))
(1)入力である関数復号鍵skfを(i, 1Key.skf)←skfとパースする。
(2)CTi←CT(i)を計算する。ここで、CT(i)は、暗号化回路E1Key[S, SEnc, tag, m]を難読化した暗号化文CTにインデックスiを入力して計算した値である。
(3)y←1Key.Dec(1Key.skf, tag, CTi)を出力する。
(穴あき鍵生成アルゴリズムCS.Punc(MSK, tag))
(1)入力であるマスター秘密鍵MSKをS←MSKとパースする。
(2)SPuncr{0,1}λを選択する。
(3)P~←sxiO(P1Key[S, SPunc, tag])を計算する。なお、穴あき鍵生成回路P1Key[S, SPunc, tag](i)は、以下の通りである。
<穴あき鍵生成回路P1Key[S, SPunc, tag](i)>
回路に直接書き込まれている値:穴あけ可能PRF鍵SとSPunc、タグtag
入力:インデックスi∈[q]
手順:
1)ri Setup←FS(i)、rPunc←FS_Punc(i)を計算する。
2)MSKi←1Key.Setup(1λ;ri Setup)を計算する。
3)穴あき鍵MSK* i{tag}←1Key.Punc(MSKi, tag; rPunc)を出力する。
(4)穴あき鍵MSK*{tag}←P~を出力する。
(穴あき暗号化アルゴリズムCS.PEnc(MSK*, tag′, m)
(1)入力である穴あき鍵MSK*をP~←MSK*とパースする。
(2)SEncr{0,1}λを選択する。
(3)暗号文CT←sxiO(PE1Key[P~, SEnc, tag′, m])を出力する。なお、穴あき暗号化回路PE1Key[P~, SEnc, tag, m](i)は、以下の通りである。
<穴あき暗号化回路PE1Key[P~, SEnc, tag, m](i)>
回路に直接書き込まれている値:回路P~、穴あけ可能PRF鍵SEnc、タグtag、平文m
入力:インデックスi∈[q]
パディング:この回路のサイズは、分析により決定されるpadE:=padE(λ,n,s)にパディングされる。
手順:
1)MSK* i←P~(i)、rEnc←FS_Enc(i)を計算する。
2)CTi←1Key.PEnc(MSK* i, tag, m; rEnc)を出力する。
この穴あけ可能秘密鍵関数型暗号CollSucに対して、以下の定理が成り立つ。
(定理2)OneKeyを(定理1)の穴あけ可能秘密鍵関数型暗号、sxiOを安全なγ-圧縮SXIO、PPRFを安全な穴あけ可能擬似ランダム関数とする。このとき、CollSucは、発行可能な関数復号鍵の数がqである、安全な穴あけ可能秘密鍵関数型暗号である。また、CollSucは、結託簡素性を備える。
[発行可能な関数復号鍵の数が1つであり、弱簡素性を持つ穴あけ可能秘密鍵関数型暗号WeakSuc]
CollSuc=(CS.Setup, CS.KG, CS.Enc, CS.Dec, CS.Punc, CS.PEnc)を(定理2)の結託簡素性を備える穴あけ可能秘密鍵関数型暗号とする。ただし、μをλの多項式とし、CollSucのインデックス空間、タグ空間はそれぞれ[μ]、Tであるものとする(タグ空間Tは、OneKeyのタグ空間と同一である)。
また、RE=(RE.E,RE.D)をc局所分解可能ランダムエンコーディングとする。ただし、cは定数、μはREの分解エンコード数とする。ρをλの多項式とし、REの乱数空間{0,1}ρとする。
SKE=(E, D)を安全な秘密鍵暗号とする。PRFを擬似ランダム関数とする。
CollSucとREとSKEとFを用いて、穴あけ可能秘密鍵関数型暗号WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を構成する。
なお、WeakSucのタグ空間はTとなる。つまり、CollSucのタグ空間と同一になる。
穴あけ可能秘密鍵関数型暗号WeakSucの各アルゴリズムについて説明する。
(セットアップアルゴリズムWS.Setup(1λ))
(1)マスター秘密鍵MSK←CS.Setup(1λ)を出力する。
(関数復号鍵生成アルゴリズムWS.KG(MSK,f))
(1)K←r{0,1}λ、t←r{0,1}λを選択する。
(2)入力である関数fに対して、分解可能ランダムエンコーディングREのエンコーディングアルゴリズムRE.Eを用いて、エンコーディングf^(x;r)=(f^1(x;rR_1),…, f^μ(x;rR_μ))を集合(R1,…, Rμ)とともに生成する。ここで、すべてのi∈[μ]に対して、Ri⊆[ρ]、|Ri|=cとなる。
(3)すべてのi∈[μ]に対して、CTi ske←E(K,0|f^_i(・,・)|)を生成し、skEn_i←CS.KG(MSK, Endre[f^i, Ri,t, CTi ske],i)を計算する。ここで、|f^_i(・,・)|は、エンコーディングf^_iのサイズを表す。なお、分解可能ランダムエンコーディング計算回路Endre[f^i, Ri,t, CTi ske](m,Sencd,K)は、以下の通りである。
<分解可能ランダムエンコーディング計算回路Endre[f^i, Ri,t, CTi ske](m,Sencd,K)>
回路に直接書き込まれている値:エンコーディングf^i、集合Ri、文字列t、暗号文CTi ske
入力:平文m、PRF鍵Sencd、秘密鍵暗号SKEの秘密鍵K
手順:
1)m=⊥の場合、ei←D(K, CTi ske)を出力する。
2)それ以外の場合、以下の処理を行う。
2-1)すべてのj∈Riに対して、rj←PRF(Sencd,t||j)を計算して、rR_i←{rj}j∈R_iとする。
2-2)ei←f^i(m;rR_i)を出力する。
(4)関数復号鍵skf←(skEn_1,…, skEn_μ)を出力する。
(暗号化アルゴリズムWS.Enc(MSK, tag, m))
(1)Sencdr{0,1}λを選択する。
(2)暗号文CT←CS.Enc(MSK,tag,(m, Sencd ,⊥))を出力する。
(復号アルゴリズムWS.Dec(skf, tag, CT))
(1)入力である関数復号鍵skfを(skEn_1,…, skEn_μ)←skfとパースする。
(2)すべてのi∈[μ]に対して、ei←CS.Dec(skEn_i, tag, CT)を計算する。
(3)分解可能ランダムエンコーディングREのデコーディングアルゴリズムRE.Dを用いて、(e1, …, eμ)からyを計算する。
(4)yを出力する。
(穴あき鍵生成アルゴリズムWS.Punc(MSK, tag))
(1)穴あき鍵MSK*{tag}←CS.Punc(MSK, tag)を出力する。
(穴あき暗号化アルゴリズムWS.PEnc(MSK*, tag′, m)
(1)Sencdr{0,1}λを選択する。
(2)暗号文CT←CS.PEnc(MSK*, tag′, (m, Sencd ,⊥))を出力する。
この穴あけ可能秘密鍵関数型暗号WeakSucに対して、以下の定理が成り立つ。
(定理3)μをλの多項式とし、CollSucを発行可能な関数復号鍵の数がμであり、結託簡易性を備える(定理2)の穴あけ可能秘密鍵関数型暗号、REを安全なc局所分解可能ランダムエンコーディング、SKEを安全な秘密鍵暗号、PRFを安全な擬似ランダム関数とする。このとき、WeakSucは、発行可能な関数復号鍵の数が1つである、安全な穴あけ可能秘密鍵関数型暗号である。また、WeakSucは、弱簡素性を備える。
[識別不可能性難読化器iO]
WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を(定理3)の弱簡素性を備える穴あけ可能秘密鍵関数型暗号とする。SKE=(E, D)を秘密鍵暗号とする。PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数とする。Uをユニバーサル回路とする。なお、ここで用いるPPRFは、OneKeyを構成する際に用いたPPRFやCollSucを構成する際に用いたPPRFとは異なるものである。具体的には、ここで用いるPPRFとOneKeyを構成する際に用いたPPRF・CollSucを構成する際に用いたPPRFは、定義域及び値域が異なる。
WeakSuc, SKE, PPRFが準指数的に安全である、つまり、攻撃者が攻撃に成功する確率が高々2-λ^ε(ただし、ε<1は定数)である場合、WeakSucとSKEとPPRFを用いて、任意の多項式サイズの回路に対する識別不可能性難読化器iOを以下のように構成することができる。
なお、以下の識別不可能性難読化器iOの構成では、WeakSucの穴あき鍵生成アルゴリズムWS.Puncと穴あき暗号化アルゴリズムWS.PEncを用いていない。しかし、これらのアルゴリズムWS.PuncとWS.PEncは安全性を数学的に証明する上で必須のものであり、欠くことができないものである。
難読化したい回路をC:{0,1}n→{0,1}m、セキュリティパラメータをλとする。
識別不可能性難読化器iOは、まず新しいセキュリティパラメータλ~=ω((n2+logλ)1/εを計算する(ただし、ωはランダウの記号、ε(<1)は定数)。新しいセキュリティパラメータλ~は、回路Cの入力サイズnとセキュリティパラメータλにより定まる値である。
次に、識別不可能性難読化器iOは、以下の再帰的な難読化手続きriO(1λ~, i, Ci)をi=n, Ci=Cとして呼び出し、回路Cを難読化した回路C~←riO(1λ~, n, C)を生成し、出力する。
(難読化手続きriO(1λ~, i, Ci))
(1)i=1の場合、C~1←(C1(0),C1(1))を出力する。
(2)i>1の場合、以下の処理を実行する。
(2-1)Ki,0,Ki,1r{0,1}λ~を選択し、CTi,0 ske←E(Ki,0, Ci)、CTi,1 ske←E(Ki,1, Ci)を生成する。
(2-2)MSKi←WS.Setup(1λ~)を生成し、skEv_i←WS.KG(MSKi, Evi[CTi,0 ske,CTi,1 ske])を生成する。なお、回路計算回路Evi[CTi,0 ske,CTi,1 ske](x(i),K,α)は、以下の通りである(ただし、2≦i≦n)。
<回路計算回路Evi[CTi,0 ske,CTi,1 ske](x(i),K,α)>
回路に直接書き込まれている値:暗号文CTi,0 skeとCTi,1 ske、ユニバーサル回路U(・,・)
入力:文字列x(i)∈{0,1}i、秘密鍵暗号SKEの秘密鍵K、ビットα∈{0,1}
手順:
1)Ci←D(K, CTi,α ske)を計算する。
2)U(Ci, x(i))を出力する。
(2-3)Sir{0,1}λ~を選択し、E~i-1←riO(1λ~, i-1, Ei-1,0[MSKi,Ki,0,Si])を生成する。なお、暗号化回路Ei-1,α[MSKi,Ki,Si](x(i-1))は、以下の通りである(ただし、3≦i≦n、α∈{0,1})。
<暗号化回路Ei-1,α[MSKi,Ki,Si](x(i-1))>
回路に直接書き込まれている値:マスター秘密鍵MSKi、秘密鍵暗号SKEの秘密鍵Ki、穴あけ可能PRF鍵Si
入力:文字列x(i-1)∈{0,1}i-1
手順:
1)xi∈{0,1}に対して、以下の処理を実行する。
1-1)rx_(i-1)||x_i Enc←FS_i(x(i-1)||xi)を計算する。
1-2)CTi,x_i←WS.Enc(MSKi,x(i-1),(x(i-1)||xi, Ki, α); rx_(i-1)||x_i Enc)を計算する。
2)(CTi,0, CTi,1)を出力する。
(2-4)C~i←(skEv_i, E~i-1)を出力する。
一方、回路Cを難読化した回路C~を用いて入力値x(n)に対する回路Cの出力値C(x(n))を計算するには、識別不可能性難読化器iOは、難読化手続きriOに対応する以下の再帰的な回路計算手続きrEval(i, C~i, x(i)) をi=n, C~i=C~, x(i)=x(n)として呼び出す(ただし、C~←riO(1λ~, n, C)、x(n)∈{0,1}nである)。rEval(n, C~, x(n))を出力値C(x(n))とする。
(回路計算手続きrEval(i, C~i, x(i)))
(1)i=1の場合、(CT1,0,CT1,1)←C~1とパースし、y1←CT1,x_(1)を出力する。
(2)i>1の場合の場合、以下の処理を実行する。
(2-1)(skEv_i, E~i-1) ←C~i、x(i-1)||xi←x(i)とパースする。
(2-2)(CTi,0, CTi,i) ←rEval(i-1, E~i-1, x(i-1))を計算する。
(2-3)yi←WS.Dec(skEv_i, x(i-1), CTi,x_i) を出力する。
この識別不可能性難読化器iOに対して、以下の定理が成り立つ。
(定理4)発行可能な関数復号鍵の数が1つであり、攻撃者の攻撃成功確率が2-λ^ε(ただし、ε<1は定数)で抑えられるほど安全な多項式サイズ回路に対する弱簡素性穴あけ可能秘密鍵関数型暗号が存在するならば、任意の多項式サイズ回路に対する識別不可能性難読化器を構成することができる。
<第一実施形態>
<<秘密鍵関数型暗号OneKey処理システム>>
ここでは、秘密鍵関数型暗号OneKey処理システムについて説明する。このシステムは、<技術的背景>で説明した秘密鍵関数型暗号OneKeyを実行するシステムである。
[システム構成]
図1を参照して、秘密鍵関数型暗号OneKey処理システム100について説明する。図1は、秘密鍵関数型暗号OneKey処理システム100の構成の一例を示すブロック図である。秘密鍵関数型暗号OneKey処理システム100は、システムパラメータ生成装置110、暗号化装置120、復号装置130、穴あき鍵生成装置140、穴あき暗号化装置150を含む。システムパラメータ生成装置110、暗号化装置120、復号装置130、穴あき鍵生成装置140、穴あき暗号化装置150は、インターネットなどのネットワーク800に接続し、相互に通信可能である。
次に、図2〜図6を参照して、システムパラメータ生成装置110、暗号化装置120、復号装置130、穴あき鍵生成装置140、穴あき暗号化装置150の各装置について説明する。図2は、システムパラメータ生成装置110の構成の一例を示すブロック図である。システムパラメータ生成装置110は、セットアップ部111、関数復号鍵生成部112、送受信部118、記録部119を含む。送受信部118は、システムパラメータ生成装置110がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部119は、システムパラメータ生成装置110の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成に用いるセキュリティパラメータλ、関数復号鍵の生成に用いる関数fを記録する。
図3は、暗号化装置120の構成の一例を示すブロック図である。暗号化装置120は、暗号化部121、送受信部128、記録部129を含む。送受信部128は、暗号化装置120がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部129は、暗号化装置120の処理に必要な情報を適宜記録する構成部である。例えば、マスター秘密鍵MSKを記録する。
図4は、復号装置130の構成の一例を示すブロック図である。復号装置130は、復号部131、送受信部138、記録部139を含む。送受信部138は、復号装置130がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部139は、復号装置130の処理に必要な情報を適宜記録する構成部である。例えば、関数復号鍵skfを記録する。
図5は、穴あき鍵生成装置140の構成の一例を示すブロック図である。穴あき鍵生成装置140は、穴あき鍵生成部141、送受信部148、記録部149を含む。送受信部148は、穴あき鍵生成装置140がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部149は、穴あき鍵生成装置140の処理に必要な情報を適宜記録する構成部である。例えば、マスター秘密鍵MSKを記録する。
図6は、穴あき暗号化装置150の構成の一例を示すブロック図である。穴あき暗号化装置150は、穴あき暗号化部151、送受信部158、記録部159を含む。送受信部158は、穴あき暗号化装置150がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部159は、穴あき暗号化装置150の処理に必要な情報を適宜記録する構成部である。例えば、穴あき鍵MSK*を記録する。
[各装置における処理]
以下、システムパラメータ生成装置110、暗号化装置120、復号装置130、穴あき鍵生成装置140、穴あき暗号化装置150の各装置における処理について説明する。
(システムパラメータ生成装置110における処理)
システムパラメータ生成装置110のセットアップ部111は、セットアップアルゴリズム1Key.Setupを用いて、セキュリティパラメータ1λからマスター秘密鍵MSKを生成し、出力する(S111)。システムパラメータ生成装置110は、マスター秘密鍵MSKを記録部119に記録する。システムパラメータ生成装置110の送受信部118は、マスター秘密鍵MSKを暗号化装置120と穴あき鍵生成装置140に送信する。なお、暗号化装置120と穴あき鍵生成装置140は、システムパラメータ生成装置110の送受信部118から受信したマスター秘密鍵MSKをそれぞれ記録部129と記録部149に記録する。
システムパラメータ生成装置110の関数復号鍵生成部112は、関数復号鍵生成アルゴリズム1Key.KGを用いて、マスター秘密鍵MSKと関数fから関数復号鍵skfを生成し、出力する(S112)。システムパラメータ生成装置110は、関数復号鍵skfを記録部119に記録する。システムパラメータ生成装置110の送受信部118は、関数復号鍵skfを復号装置130に送信する。なお、復号装置130は、システムパラメータ生成装置110の送受信部118から受信した関数復号鍵skfを記録部139に記録する。
(暗号化装置120における処理)
暗号化装置120の暗号化部121は、暗号化アルゴリズム1Key.Encを用いて、マスター秘密鍵MSKとタグtagと平文mから暗号文CTを生成し、出力する(S121)。ここで、暗号化アルゴリズム1Key.Encでは、秘匿化スキームGCの秘匿化回路生成アルゴリズムGrblとユニバーサル回路U(・,・)と穴あけ可能擬似ランダム関数PPRFのFが用いられる。また、平文mは、例えば、暗号化装置120のユーザが入力したテキストであり、タグtagは、システムで決まった長さを持つビット列であり、暗号化装置120のユーザが任意に選ぶことができる。暗号化装置120の送受信部128は、暗号文CTを復号装置130に送信する。なお、復号装置130は、暗号化装置120の送受信部128から受信した暗号文CTを記録部139に記録する。
(復号装置130における処理)
復号装置130の復号部131は、復号アルゴリズム1Key.Decを用いて、関数復号鍵skfとタグtagと暗号文CTから復号結果yを生成し、出力する(S131)。ここで、復号アルゴリズム1Key.Decでは、穴あけ可能擬似ランダム関数PPRFのFと秘匿化スキームGCの秘匿化回路評価アルゴリズムEvalが用いられる。なお、関数復号鍵skf、暗号文CTが記録部139に記録されているものであり、タグtagが暗号文CT生成時に用いたものである場合、復号装置130の復号部131は、復号アルゴリズム1Key.Decを用いて、復号結果yとしてf(m)を得る。
(穴あき鍵生成装置140における処理)
穴あき鍵生成装置140の穴あき鍵生成部141は、穴あき鍵生成アルゴリズム1Key.Puncを用いて、マスター秘密鍵MSKとタグtagから穴あき鍵MSK*{tag}を生成し、出力する(S141)。ここで、穴あき鍵生成アルゴリズム1Key.Puncでは、穴あけ可能擬似ランダム関数PPRFのPuncFが用いられる。穴あき鍵生成装置140の送受信部148は、穴あき鍵MSK*{tag}を穴あき暗号化装置150に送信する。なお、穴あき暗号化装置150は、穴あき鍵生成装置140の送受信部148から受信した穴あき鍵MSK*{tag}を記録部149に記録する。
(穴あき暗号化装置150における処理)
穴あき暗号化装置150の穴あき暗号化部151は、穴あき暗号化アルゴリズム1Key.PEncを用いて、穴あき鍵MSK*とタグtag′から暗号文CTを生成し、出力する(S141)。ここで、穴あき暗号化アルゴリズム1Key.PEncでは、秘匿化スキームGCの秘匿化回路生成アルゴリズムGrblとユニバーサル回路U(・,・)と穴あけ可能擬似ランダム関数PPRFのFが用いられる。
なお、ここで生成した暗号文CTは、暗号化装置120で生成された暗号文CTと同様に利用される。つまり、暗号化装置120で生成された暗号文CTの代わりに、ここで生成した暗号文CTを復号装置130に入力すると、復号部131は復号結果を得ることができる。ただし、穴あき鍵生成装置140で用いたタグtagと穴あき暗号化装置150で用いたタグtag′の間にtag≠tag′の関係が成立している限りにおいて、正しく復号されてf(m)が得られる。
<<秘密鍵関数型暗号CollSuc処理システム>>
ここでは、秘密鍵関数型暗号CollSuc処理システムについて説明する。このシステムは、<技術的背景>で説明した秘密鍵関数型暗号CollSucを実行するシステムである。
[システム構成]
秘密鍵関数型暗号CollSuc処理システム200は、秘密鍵関数型暗号OneKey処理システム100と同様の構成を有する。そこで、ここでは図を参照することなく、秘密鍵関数型暗号CollSuc処理システム200について説明する。
一例として、秘密鍵関数型暗号CollSuc処理システム200は、システムパラメータ生成装置210、暗号化装置220、復号装置230、穴あき鍵生成装置240、穴あき暗号化装置250を含む。システムパラメータ生成装置210、暗号化装置220、復号装置230、穴あき鍵生成装置240、穴あき暗号化装置250は、インターネットなどのネットワーク800に接続し、相互に通信可能である。
次に、先ほど同様、図を参照することなく、システムパラメータ生成装置210、暗号化装置220、復号装置230、穴あき鍵生成装置240、穴あき暗号化装置250の各装置について説明する。一例として、システムパラメータ生成装置210は、セットアップ部211、関数復号鍵生成部212、送受信部218、記録部219を含む。送受信部218は、システムパラメータ生成装置210がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部219は、システムパラメータ生成装置210の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成に用いるセキュリティパラメータλ、関数復号鍵の生成に用いる関数f、セキュリティパラメータλの多項式として表現される整数qを記録する。
一例として、暗号化装置220は、暗号化部221、送受信部228、記録部229を含む。送受信部228は、暗号化装置220がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部229は、暗号化装置220の処理に必要な情報を適宜記録する構成部である。例えば、マスター秘密鍵MSKを記録する。
一例として、復号装置230は、復号部231、送受信部238、記録部239を含む。送受信部238は、復号装置230がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部239は、復号装置230の処理に必要な情報を適宜記録する構成部である。例えば、関数復号鍵skfを記録する。
一例として、穴あき鍵生成装置240は、穴あき鍵生成部241、送受信部248、記録部249を含む。送受信部248は、穴あき鍵生成装置240がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部249は、穴あき鍵生成装置240の処理に必要な情報を適宜記録する構成部である。例えば、マスター秘密鍵MSKを記録する。
一例として、穴あき暗号化装置250は、穴あき暗号化部251、送受信部258、記録部259を含む。送受信部258は、穴あき暗号化装置250がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部259は、穴あき暗号化装置250の処理に必要な情報を適宜記録する構成部である。例えば、穴あき鍵MSK*を記録する。
[各装置における処理]
以下、システムパラメータ生成装置210、暗号化装置220、復号装置230、穴あき鍵生成装置240、穴あき暗号化装置250の各装置における処理について説明する。
(システムパラメータ生成装置210における処理)
システムパラメータ生成装置210のセットアップ部211は、セットアップアルゴリズムCS.Setupを用いて、セキュリティパラメータ1λからマスター秘密鍵MSKを生成し、出力する(S211)。システムパラメータ生成装置210は、マスター秘密鍵MSKを記録部219に記録する。システムパラメータ生成装置210の送受信部218は、マスター秘密鍵MSKを暗号化装置220と穴あき鍵生成装置240に送信する。なお、暗号化装置220と穴あき鍵生成装置240は、システムパラメータ生成装置210の送受信部218から受信したマスター秘密鍵MSKをそれぞれ記録部229と記録部249に記録する。
システムパラメータ生成装置210の関数復号鍵生成部212は、関数復号鍵生成アルゴリズムCS.KGを用いて、マスター秘密鍵MSKと関数fとインデックスi(iは1≦i≦qを満たす)から関数復号鍵skfを生成し、出力する(S212)。ここで、関数復号鍵生成アルゴリズムCS.KGでは、秘密鍵関数型暗号OneKeyのセットアップアルゴリズム1Key.Setupと関数復号鍵生成アルゴリズム1Key.KGと穴あけ可能擬似ランダム関数PPRFのFが用いられる。システムパラメータ生成装置210は、関数復号鍵skfを記録部219に記録する。システムパラメータ生成装置210の送受信部218は、関数復号鍵skfを復号装置230に送信する。なお、復号装置230は、システムパラメータ生成装置210の送受信部218から受信した関数復号鍵skfを記録部239に記録する。
(暗号化装置220における処理)
暗号化装置220の暗号化部221は、暗号化アルゴリズムCS.Encを用いて、マスター秘密鍵MSKとタグtagと平文mから暗号文CTを生成し、出力する(S221)。ここで、暗号化アルゴリズムCS.Encでは、γ-圧縮SXIO sxiOと暗号化回路E1Keyが用いられる。なお、暗号化回路E1Keyはインデックスi(iは1≦i≦qを満たす)を入力として、秘密鍵関数型暗号OneKeyのセットアップアルゴリズム1Key.Setupと暗号化アルゴリズム1Key.Encを用いて、暗号文CTiを出力する回路である。また、平文mは、例えば、暗号化装置220のユーザが入力したテキストであり、タグtagは、システムで決まった長さを持つビット列であり、暗号化装置220のユーザが任意に選ぶことができる。暗号化装置220の送受信部228は、暗号文CTを復号装置230に送信する。なお、復号装置230は、暗号化装置220の送受信部228から受信した暗号文CTを記録部239に記録する。
(復号装置230における処理)
復号装置230の復号部231は、復号アルゴリズムCS.Decを用いて、関数復号鍵skfとタグtagと暗号文CTから復号結果yを生成し、出力する(S231)。ここで、復号アルゴリズムCS.Decでは、秘密鍵関数型暗号OneKeyの復号アルゴリズム1Key.Decが用いられる。なお、関数復号鍵skf、暗号文CTが記録部239に記録されているものであり、タグtagが暗号文CT生成時に用いたものである場合、復号装置230の復号部231は、復号アルゴリズムCS.Decを用いて、復号結果yとしてf(m)を得る。
(穴あき鍵生成装置240における処理)
穴あき鍵生成装置240の穴あき鍵生成部241は、穴あき鍵生成アルゴリズムCS.Puncを用いて、マスター秘密鍵MSKとタグtagから穴あき鍵MSK*{tag}を生成し、出力する(S241)。ここで、穴あき鍵生成アルゴリズムCS.Puncでは、γ-圧縮SXIO sxiOと穴あき鍵生成回路P1Keyが用いられる。なお、穴あき鍵生成回路P1Keyはインデックスi(iは1≦i≦qを満たす)を入力として、秘密鍵関数型暗号OneKeyのセットアップアルゴリズム1Key.Setupと穴あき鍵生成アルゴリズム1Key.Puncを用いて、穴あき鍵MSK* i{tag}を出力する回路である。穴あき鍵生成装置240の送受信部248は、穴あき鍵MSK*{tag}を穴あき暗号化装置250に送信する。なお、穴あき暗号化装置250は、穴あき鍵生成装置240の送受信部248から受信した穴あき鍵MSK*{tag}を記録部249に記録する。
(穴あき暗号化装置250における処理)
穴あき暗号化装置250の穴あき暗号化部251は、穴あき暗号化アルゴリズムCS.PEncを用いて、穴あき鍵MSK*とタグtag′から暗号文CTを生成し、出力する(S251)。ここで、穴あき暗号化アルゴリズムCS.PEncでは、γ-圧縮SXIO sxiOと穴あき暗号化回路PE1Keyが用いられる。なお、穴あき暗号化回路PE1Keyはインデックスi(iは1≦i≦qを満たす)を入力として、秘密鍵関数型暗号OneKeyの穴あき暗号化アルゴリズム1Key.PEncを用いて、暗号文CTiを出力する回路である。
なお、ここで生成した暗号文CTは、暗号化装置220で生成された暗号文CTと同様に利用される。つまり、暗号化装置220で生成された暗号文CTの代わりに、ここで生成した暗号文CTを復号装置230に入力すると、復号部231は復号結果を得ることができる。ただし、穴あき鍵生成装置240で用いたタグtagと穴あき暗号化装置250で用いたタグtag′の間にtag≠tag′の関係が成立している限りにおいて、正しく復号されてf(m)が得られる。
<<秘密鍵関数型暗号WeakSuc処理システム>>
ここでは、秘密鍵関数型暗号WeakSuc処理システムについて説明する。このシステムは、<技術的背景>で説明した秘密鍵関数型暗号WeakSucを実行するシステムである。
[システム構成]
秘密鍵関数型暗号WeakSuc処理システム300は、秘密鍵関数型暗号OneKey処理システム100と同様の構成を有する。そこで、ここでは図を参照することなく、秘密鍵関数型暗号WeakSuc処理システム300について説明する。
一例として、秘密鍵関数型暗号WeakSuc処理システム300は、システムパラメータ生成装置310、暗号化装置320、復号装置330、穴あき鍵生成装置340、穴あき暗号化装置350を含む。システムパラメータ生成装置310、暗号化装置320、復号装置330、穴あき鍵生成装置340、穴あき暗号化装置350は、インターネットなどのネットワーク800に接続し、相互に通信可能である。
次に、先ほど同様、図を参照することなく、システムパラメータ生成装置310、暗号化装置320、復号装置330、穴あき鍵生成装置340、穴あき暗号化装置350の各装置について説明する。一例として、システムパラメータ生成装置310は、セットアップ部311、関数復号鍵生成部312、送受信部318、記録部319を含む。送受信部318は、システムパラメータ生成装置310がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部319は、システムパラメータ生成装置310の処理に必要な情報を適宜記録する構成部である。例えば、システムパラメータ生成に用いるセキュリティパラメータλ、関数復号鍵の生成に用いる関数f、セキュリティパラメータλの多項式として表現される整数μ、ρを記録する。
一例として、暗号化装置320は、暗号化部321、送受信部328、記録部329を含む。送受信部328は、暗号化装置320がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部329は、暗号化装置320の処理に必要な情報を適宜記録する構成部である。例えば、マスター秘密鍵MSKを記録する。
一例として、復号装置330は、復号部331、送受信部338、記録部339を含む。送受信部338は、復号装置330がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部339は、復号装置330の処理に必要な情報を適宜記録する構成部である。例えば、関数復号鍵skfを記録する。
一例として、穴あき鍵生成装置340は、穴あき鍵生成部341、送受信部348、記録部349を含む。送受信部348は、穴あき鍵生成装置340がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部349は、穴あき鍵生成装置340の処理に必要な情報を適宜記録する構成部である。例えば、マスター秘密鍵MSKを記録する。
一例として、穴あき暗号化装置350は、穴あき暗号化部351、送受信部358、記録部359を含む。送受信部358は、穴あき暗号化装置350がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部359は、穴あき暗号化装置350の処理に必要な情報を適宜記録する構成部である。例えば、穴あき鍵MSK*を記録する。
[各装置における処理]
以下、システムパラメータ生成装置310、暗号化装置320、復号装置330、穴あき鍵生成装置340、穴あき暗号化装置350の各装置における処理について説明する。
(システムパラメータ生成装置310における処理)
システムパラメータ生成装置310のセットアップ部311は、セットアップアルゴリズムWS.Setupを用いて、セキュリティパラメータ1λからマスター秘密鍵MSKを生成し、出力する(S311)。ここで、セットアップアルゴリズムWS.Setupでは、秘密鍵関数型暗号CollsucのセットアップアルゴリズムCS.Setupが用いられる。システムパラメータ生成装置310は、マスター秘密鍵MSKを記録部319に記録する。システムパラメータ生成装置310の送受信部318は、マスター秘密鍵MSKを暗号化装置320と穴あき鍵生成装置340に送信する。なお、暗号化装置320と穴あき鍵生成装置340は、システムパラメータ生成装置310の送受信部318から受信したマスター秘密鍵MSKをそれぞれ記録部329と記録部349に記録する。
システムパラメータ生成装置310の関数復号鍵生成部312は、関数復号鍵生成アルゴリズムWS.KGを用いて、マスター秘密鍵MSKと関数fから関数復号鍵skfを生成し、出力する(S312)。ここで、関数復号鍵生成アルゴリズムWS.KGでは、分解可能ランダムエンコーディングREのエンコーディングアルゴリズムRE.Eと秘密鍵暗号SKEの暗号化アルゴリズムEと秘密鍵関数型暗号Collsucの関数復号鍵生成アルゴリズムCS.KGと分解可能ランダムエンコーディング計算回路Endreが用いられる。なお、分解可能ランダムエンコーディング計算回路Endreは平文m、穴あけ可能PRF鍵Sencd、秘密鍵暗号SKEの秘密鍵Kを入力として、秘密鍵暗号SKEの復号アルゴリズムDとエンコーディングf^iを用いて、エンコーディング結果eiを出力する回路である。システムパラメータ生成装置310は、関数復号鍵skfを記録部319に記録する。システムパラメータ生成装置310の送受信部318は、関数復号鍵skfを復号装置330に送信する。なお、復号装置330は、システムパラメータ生成装置310の送受信部318から受信した関数復号鍵skfを記録部339に記録する。
(暗号化装置320における処理)
暗号化装置320の暗号化部321は、暗号化アルゴリズムWS.Encを用いて、マスター秘密鍵MSKとタグtagと平文mから暗号文CTを生成し、出力する(S321)。ここで、暗号化アルゴリズムWS.Encでは、秘密鍵関数型暗号Collsucの暗号化アルゴリズムCS.Encが用いられる。また、平文mは、例えば、暗号化装置320のユーザが入力したテキストであり、タグtagは、システムで決まった長さを持つビット列であり、暗号化装置320のユーザが任意に選ぶことができる。暗号化装置320の送受信部328は、暗号文CTを復号装置330に送信する。なお、復号装置330は、暗号化装置320の送受信部328から受信した暗号文CTを記録部339に記録する。
(復号装置330における処理)
復号装置330の復号部331は、復号アルゴリズムWS.Decを用いて、関数復号鍵skfとタグtagと暗号文CTから復号結果yを生成し、出力する(S331)。ここで、復号アルゴリズムWS.Decでは、秘密鍵関数型暗号Collsucの復号アルゴリズムCS.Decと分解可能ランダムエンコーディングREのデコーディングアルゴリズムRE.Dが用いられる。なお、関数復号鍵skf、暗号文CTが記録部339に記録されているものであり、タグtagが暗号文CT生成時に用いたものである場合、復号装置330の復号部331は、復号アルゴリズムWS.Decを用いて、復号結果yとしてf(m)を得る。
(穴あき鍵生成装置340における処理)
穴あき鍵生成装置340の穴あき鍵生成部341は、穴あき鍵生成アルゴリズムWS.Puncを用いて、マスター秘密鍵MSKとタグtagから穴あき鍵MSK*{tag}を生成し、出力する(S341)。ここで、穴あき鍵生成アルゴリズムWS.Puncでは、秘密鍵関数型暗号Collsucの穴あき鍵生成アルゴリズムCS.Puncが用いられる。穴あき鍵生成装置340の送受信部348は、穴あき鍵MSK*{tag}を穴あき暗号化装置350に送信する。なお、穴あき暗号化装置350は、穴あき鍵生成装置340の送受信部348から受信した穴あき鍵MSK*{tag}を記録部349に記録する。
(穴あき暗号化装置350における処理)
穴あき暗号化装置350の穴あき暗号化部351は、穴あき暗号化アルゴリズムWS.PEncを用いて、穴あき鍵MSK*とタグtag′から暗号文CTを生成し、出力する(S351)。ここで、穴あき暗号化アルゴリズムWS.PEncでは、秘密鍵関数型暗号Collsucの穴あき暗号化アルゴリズムCS.PEncが用いられる。
なお、ここで生成した暗号文CTは、暗号化装置320で生成された暗号文CTと同様に利用される。つまり、暗号化装置320で生成された暗号文CTの代わりに、ここで生成した暗号文CTを復号装置330に入力すると、復号部331は復号結果を得ることができる。ただし、穴あき鍵生成装置340で用いたタグtagと穴あき暗号化装置350で用いたタグtag′の間にtag≠tag′の関係が成立している限りにおいて、正しく復号されてf(m)が得られる。
<<難読化処理システム>>
ここでは、難読化処理システムについて説明する。このシステムは、<技術的背景>で説明した識別不可能性難読化器iOに対応するシステムである。
[システム構成]
図7を参照して、難読化処理システム400について説明する。図7は、難読化処理システム400の構成の一例を示すブロック図である。難読化処理システム400は、難読化回路生成装置410、難読化回路計算装置420を含む。難読化回路生成装置410、難読化回路計算装置420は、インターネットなどのネットワーク800に接続し、相互に通信可能である。
次に、図8、図11を参照して、難読化回路生成装置410、難読化回路計算装置420の各装置について説明する。図8は、難読化回路生成装置410の構成の一例を示すブロック図である。難読化回路生成装置410は、セキュリティパラメータ変換部411、難読化回路生成部412、送受信部418、記録部419を含む。送受信部418は、難読化回路生成装置410がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部419は、難読化回路生成装置410の処理に必要な情報を適宜記録する構成部である。
図11は、難読化回路計算装置420の構成の一例を示すブロック図である。難読化回路計算装置420は、難読化回路計算部421、送受信部428、記録部429を含む。送受信部428は、難読化回路計算装置420がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部429は、難読化回路計算装置420の処理に必要な情報を適宜記録する構成部である。
[各装置における処理]
以下、難読化回路生成装置410、難読化回路計算装置420の各装置における処理について説明する。
(難読化回路生成装置410における処理)
難読化回路生成装置410には、セキュリティパラメータλ、難読化対象回路C:{0,1}n→{0,1}m(ただし、n,mは1以上の整数)、回路Cの入力サイズnが入力される。
難読化回路生成装置410のセキュリティパラメータ変換部411は、セキュリティパラメータλから新しいセキュリティパラメータλ~を生成し、出力する(S411)。セキュリティパラメータλ~は、回路Cの入力サイズnとセキュリティパラメータλにより定まる値である。具体的には、λ~=ω((n2+logλ)1/εとなる(ただし、ωはランダウの記号、ε(<1)は定数)。
難読化回路生成装置410の難読化回路生成部412は、セキュリティパラメータλ~と回路Cの入力サイズnと回路Cから難読化回路C~を生成し、出力する(S412)。難読化回路生成部412における処理は、難読化手続きriOに対応する処理である。難読化回路生成装置410は、難読化回路C~を記録部419に記録する。難読化回路生成装置410の送受信部418は、難読化回路C~を難読化回路計算装置420に送信する。なお、難読化回路計算装置420は、難読化回路生成装置410の送受信部418から受信した難読化回路C~を記録部429に記録する。
以下、図9〜図10を参照して、難読化回路生成部412について説明する。図9は、難読化回路生成部412の構成の一例を示すブロック図である。難読化回路生成部412は、C~1生成部412−1、…、C~n生成部412−nを含む。
入力サイズがiである難読化対象回路Ciに対して、C~i生成部412−iは、セキュリティパラメータ1λ~、入力サイズi、難読化対象回路Ciを入力として、回路Ciを難読化した難読化回路C~iを生成する。
難読化回路生成部412は、セキュリティパラメータを1λ~、i=n, Ci=Cとし、i=1であるか否か判断する(S412−0)。i=1の場合、C~1生成部412−1は、C~1←(C1(0),C1(1))を生成し、出力する(S412−1)。ここで、C~1生成部412−1における処理は、難読化手続きriOの(1)の処理に対応する。i>1の場合、C~i生成部412−iは、C~iを生成し、出力する(S412−i)。ここで、C~i生成部412−iにおける処理は、難読化手続きriOの(2)の処理に対応する。したがって、C~i生成部412−iは、C~iを生成する過程でC~i-1生成部412−(i−1)を用いる。
(難読化回路計算装置420における処理)
難読化回路計算装置420には、回路Cの難読化回路C~、難読化回路C~の入力サイズn、難読化回路C~に対する入力値x(n)∈{0,1}nが入力される。
難読化回路計算装置420の難読化回路計算部421は、難読化回路C~の入力サイズnと難読化回路C~と難読化回路C~に対する入力値x(n)から、ynを回路Cの出力値C(x(n))として計算し、出力する(S421)。難読化回路計算部421における処理は、回路計算手続きrEvalに対応する処理である。
以下、図12〜図13を参照して、難読化回路計算部421について説明する。図12は、難読化回路計算部421の構成の一例を示すブロック図である。難読化回路計算部421は、y1計算部421−1、…、yn計算部421−nを含む。
入力サイズがiである難読化対象回路Ciを難読化した難読化回路C~iに対して、yi計算部421−iは、入力サイズi、難読化回路C~i、難読化回路C~iに対する入力値x(i)∈{0,1}iを入力として、難読化対象回路Ciの出力値Ci(x(i))を計算する。
難読化回路計算部421は、i=n, C~i=C~, x(i)=x(n)とし、i=1であるか否か判断する(S421−0)。i=1の場合、y1計算部421−1は、y1←CT1,x_(1)を計算し、y1を回路Cの出力値C(x(1))として出力する(S421−1)。ここで、y1計算部421−1における処理は、回路計算手続きrEvalの(1)の処理に対応する。i>1の場合、yi計算部421−iは、yiを計算し、yiを回路Cの出力値C(x(i))として出力する(S412−i)。ここで、yi計算部421−iにおける処理は、回路計算手続きrEvalの(2)の処理に対応する。したがって、yi計算部421−iは、yiを計算する過程でyi-1計算部421−(i−1)を用いる。
本実施形態の発明によれば、秘密鍵関数型暗号だけを利用して任意の多項式サイズの回路に対する識別不可能性難読化技術を構成することができる。このことは、より弱い暗号仮定から任意の多項式サイズの回路に対する識別不可能性難読化技術が構成できたことを意味する。
<補記>
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD−ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成要件)を実現する。
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。

Claims (5)

  1. λ~をセキュリティパラメータ、Cを入力サイズがn(ただし、nは1以上の整数)である難読化対象回路とし、
    前記セキュリティパラメータλ~と前記回路Cの入力サイズnと前記回路Cから難読化回路C~を生成する難読化回路生成部と
    を含む難読化回路生成装置であって、
    前記難読化回路生成部は、
    WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を穴あけ可能秘密鍵関数型暗号、SKE=(E, D)を秘密鍵暗号、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数、Uをユニバーサル回路とし、
    Ciを入力サイズがi(ただし、iは1以上n以下の整数)である難読化対象回路とし、
    C~n生成部と、C~n-1生成部と、…、C~1生成部とを含み、
    前記C~i生成部(i>1)は、
    セキュリティパラメータと回路の入力サイズと回路の組(1λ~, i, Ci)を入力とし、
    (1)Ki,0,Ki,1r{0,1}λ~を選択し、CTi,0 ske←E(Ki,0, Ci)、CTi,1 ske←E(Ki,1, Ci)を生成し、
    (2)MSKi←WS.Setup(1λ~)を生成し、skEv_i←WS.KG(MSKi, Evi[CTi,0 ske,CTi,1 ske])を生成し(ただし、2≦i≦nに対して、回路計算回路Evi[CTi,0 ske,CTi,1 ske](x(i),K,α)は、暗号文CTi,0 skeとCTi,1 ske、ユニバーサル回路U(・,・)を回路に直接書き込まれている値、文字列x(i)∈{0,1}i、秘密鍵暗号SKEの秘密鍵K、ビットα∈{0,1}を入力とし、1)Ci←D(K, CTi,α ske)を計算し、2)U(Ci, x(i))を出力する回路)、
    (3)Sir{0,1}λ~を選択し、前記C~i-1生成部を用いて、セキュリティパラメータと回路の入力サイズと回路の組(1λ~, i-1, Ei-1,0[MSKi,Ki,0,Si])からE~i-1を生成し(ただし、3≦i≦n、α∈{0,1}に対して、暗号化回路Ei-1,α[MSKi,Ki,Si](x(i-1))は、マスター秘密鍵MSKi、秘密鍵暗号SKEの秘密鍵Ki、穴あけ可能PRF鍵Siを回路に直接書き込まれている値、文字列x(i-1)∈{0,1}i-1を入力とし、1)xi∈{0,1}に対して、rx_(i-1)||x_i Enc←FS_i(x(i-1)||xi)を計算し、CTi,x_i←WS.Enc(MSKi,x(i-1),(x(i-1)||xi, Ki, α); rx_(i-1)||x_i Enc)を計算し、2)(CTi,0, CTi,1)を出力する回路)、
    (4)C~i←(skEv_i, E~i-1)を生成し、
    前記C~1生成部は、
    セキュリティパラメータと回路の入力サイズと回路の組(1λ~, 1, C1)を入力とし、
    C~1←(C1(0),C1(1))を生成する
    難読化回路生成装置。
  2. λ~をセキュリティパラメータ、Cを入力サイズがn(ただし、nは1以上の整数)である難読化対象回路、C~を請求項1に記載の難読化回路生成装置により前記回路Cを難読化した難読化回路、x(n)∈{0,1}nを前記難読化回路C~に対する入力値とし、
    前記難読化回路C~の入力サイズnと前記難読化回路C~と前記入力値x(n)から、前記回路Cの出力値C(x(n))を計算する難読化回路計算部と
    を含む難読化回路計算装置であって、
    前記難読化回路計算部は、
    WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を穴あけ可能秘密鍵関数型暗号、SKE=(E, D)を秘密鍵暗号、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数、Uをユニバーサル回路とし、
    Ciを入力サイズがi(ただし、iは1以上の整数)である難読化対象回路、C~iを請求項1に記載の難読化回路生成装置により前記回路Ciを難読化した難読化回路とし、
    yn計算部と、yn-1計算部と、…、y1計算部とを含み、
    前記yi計算部(i>1)は、
    回路の入力サイズと回路と回路への入力値の組(i, C~i, x(i))を入力とし、
    (1)(skEv_i, E~i-1) ←C~i、x(i-1)||xi←x(i)とパースし、
    (2)前記yi-1計算部を用いて、回路の入力サイズと回路と回路への入力値の組(i-1, E~i-1, x(i-1))から(CTi,0, CTi,i)を計算し、
    (3)yi←WS.Dec(skEv_i, x(i-1), CTi,x_i)を計算し、
    前記y1計算部は、
    回路の入力サイズと回路と回路への入力値の組(1, C~1, x(1))を入力とし、
    (CT1,0,CT1,1)←C~1とパースし、y1←CT1,x_(1)を計算する
    難読化回路計算装置。
  3. λ~をセキュリティパラメータ、Cを入力サイズがn(ただし、nは1以上の整数)である難読化対象回路とし、
    難読化回路生成装置が、前記セキュリティパラメータλ~と前記回路Cの入力サイズnと前記回路Cから難読化回路C~を生成する難読化回路生成ステップと
    を含む難読化回路生成方法であって、
    前記難読化回路生成ステップは、
    WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を穴あけ可能秘密鍵関数型暗号、SKE=(E, D)を秘密鍵暗号、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数、Uをユニバーサル回路とし、
    Ciを入力サイズがi(ただし、iは1以上n以下の整数)である難読化対象回路とし、
    C~n生成ステップと、C~n-1生成ステップと、…、C~1生成ステップとを含み、
    前記C~i生成ステップ(i>1)は、
    セキュリティパラメータと回路の入力サイズと回路の組(1λ~, i, Ci)を入力とし、
    (1)Ki,0,Ki,1r{0,1}λ~を選択し、CTi,0 ske←E(Ki,0, Ci)、CTi,1 ske←E(Ki,1, Ci)を生成し、
    (2)MSKi←WS.Setup(1λ~)を生成し、skEv_i←WS.KG(MSKi, Evi[CTi,0 ske,CTi,1 ske])を生成し(ただし、2≦i≦nに対して、回路計算回路Evi[CTi,0 ske,CTi,1 ske](x(i),K,α)は、暗号文CTi,0 skeとCTi,1 ske、ユニバーサル回路U(・,・)を回路に直接書き込まれている値、文字列x(i)∈{0,1}i、秘密鍵暗号SKEの秘密鍵K、ビットα∈{0,1}を入力とし、1)Ci←D(K, CTi,α ske)を計算し、2)U(Ci, x(i))を出力する回路)、
    (3)Sir{0,1}λ~を選択し、前記C~i-1生成部を用いて、セキュリティパラメータと回路の入力サイズと回路の組(1λ~, i-1, Ei-1,0[MSKi,Ki,0,Si])からE~i-1を生成し(ただし、3≦i≦n、α∈{0,1}に対して、暗号化回路Ei-1,α[MSKi,Ki,Si](x(i-1))は、マスター秘密鍵MSKi、秘密鍵暗号SKEの秘密鍵Ki、穴あけ可能PRF鍵Siを回路に直接書き込まれている値、文字列x(i-1)∈{0,1}i-1を入力とし、1)xi∈{0,1}に対して、rx_(i-1)||x_i Enc←FS_i(x(i-1)||xi)を計算し、CTi,x_i←WS.Enc(MSKi,x(i-1),(x(i-1)||xi, Ki, α); rx_(i-1)||x_i Enc)を計算し、2)(CTi,0, CTi,1)を出力する回路)、
    (4)C~i←(skEv_i, E~i-1)を生成し、
    前記C~1生成ステップは、
    セキュリティパラメータと回路の入力サイズと回路の組(1λ~, 1, C1)を入力とし、
    C~1←(C1(0),C1(1))を生成する
    難読化回路生成方法。
  4. λ~をセキュリティパラメータ、Cを入力サイズがn(ただし、nは1以上の整数)である難読化対象回路、C~を請求項1に記載の難読化回路生成装置により前記回路Cを難読化した難読化回路、x(n)∈{0,1}nを前記難読化回路C~に対する入力値とし、
    難読化回路計算装置が、前記難読化回路C~の入力サイズnと前記難読化回路C~と前記入力値x(n)から、前記回路Cの出力値C(x(n))を計算する難読化回路計算ステップと
    を含む難読化回路計算方法であって、
    前記難読化回路計算ステップは、
    WeakSuc=(WS.Setup, WS.KG, WS.Enc, WS.Dec, WS.Punc, WS.PEnc)を穴あけ可能秘密鍵関数型暗号、SKE=(E, D)を秘密鍵暗号、PPRF=(F, PuncF)を穴あけ可能擬似ランダム関数、Uをユニバーサル回路とし、
    Ciを入力サイズがi(ただし、iは1以上の整数)である難読化対象回路、C~iを請求項1に記載の難読化回路生成装置により前記回路Ciを難読化した難読化回路とし、
    yn計算ステップと、yn-1計算ステップと、…、y1計算ステップとを含み、
    前記yi計算ステップ(i>1)は、
    回路の入力サイズと回路と回路への入力値の組(i, C~i, x(i))を入力とし、
    (1)(skEv_i, E~i-1) ←C~i、x(i-1)||xi←x(i)とパースし、
    (2)前記yi-1計算部を用いて、回路の入力サイズと回路と回路への入力値の組(i-1, E~i-1, x(i-1))から(CTi,0, CTi,i)を計算し、
    (3)yi←WS.Dec(skEv_i, x(i-1), CTi,x_i)を計算し、
    前記y1計算ステップは、
    回路の入力サイズと回路と回路への入力値の組(1, C~1, x(1))を入力とし、
    (CT1,0,CT1,1)←C~1とパースし、y1←CT1,x_(1)を計算する
    難読化回路計算方法。
  5. 請求項1に記載の難読化回路生成装置または請求項2に記載の難読化回路計算装置のいずれかの装置としてコンピュータを機能させるためのプログラム。
JP2017173690A 2017-09-11 2017-09-11 難読化回路生成装置、難読化回路計算装置、難読化回路生成方法、難読化回路計算方法、プログラム Active JP6759168B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017173690A JP6759168B2 (ja) 2017-09-11 2017-09-11 難読化回路生成装置、難読化回路計算装置、難読化回路生成方法、難読化回路計算方法、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017173690A JP6759168B2 (ja) 2017-09-11 2017-09-11 難読化回路生成装置、難読化回路計算装置、難読化回路生成方法、難読化回路計算方法、プログラム

Publications (2)

Publication Number Publication Date
JP2019049641A JP2019049641A (ja) 2019-03-28
JP6759168B2 true JP6759168B2 (ja) 2020-09-23

Family

ID=65906032

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017173690A Active JP6759168B2 (ja) 2017-09-11 2017-09-11 難読化回路生成装置、難読化回路計算装置、難読化回路生成方法、難読化回路計算方法、プログラム

Country Status (1)

Country Link
JP (1) JP6759168B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113452649B (zh) * 2020-03-24 2023-09-12 阿里巴巴集团控股有限公司 一种安全多方计算方法、设备、系统及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8683204B2 (en) * 2009-12-04 2014-03-25 Alcatel Lucent Efficient techniques for achieving secure transactions using tamper-resistant tokens
KR20150122162A (ko) * 2013-03-04 2015-10-30 톰슨 라이센싱 프라이버시 보호 카운팅을 위한 방법 및 시스템
KR20160041028A (ko) * 2013-08-09 2016-04-15 톰슨 라이센싱 프라이버시 보호 행렬 분해를 위한 방법 및 시스템
US9209974B1 (en) * 2015-05-03 2015-12-08 Zeutro, Llc Functional encryption key management
US9923717B2 (en) * 2015-10-07 2018-03-20 International Business Machines Corporation Refresh of shared cryptographic keys
JP6649289B2 (ja) * 2017-01-10 2020-02-19 日本電信電話株式会社 暗号システム、鍵生成装置、暗号化装置、復号装置、およびプログラム

Also Published As

Publication number Publication date
JP2019049641A (ja) 2019-03-28

Similar Documents

Publication Publication Date Title
JP6019453B2 (ja) 暗号化装置、復号化装置、及びプログラム
WO2018210895A1 (en) Post-quantum secure private stream aggregation
JP6363032B2 (ja) 鍵付替え方向制御システムおよび鍵付替え方向制御方法
US20160013933A1 (en) Order-preserving encryption system, device, method, and program
KR101249394B1 (ko) 래티스 환경을 기반으로 한 대리 재암호화 방법 및 장치
JP5578754B2 (ja) 暗号変換方法および装置、並びにプログラム
WO2018043049A1 (ja) 暗号システム、暗号方法及び暗号プログラム
CN105637799B (zh) 加密系统、加密装置、重加密密钥生成装置以及重加密装置
Holz et al. Linear-complexity private function evaluation is practical
Jana et al. A novel time-stamp-based audio encryption scheme using sudoku puzzle
Deshmukh et al. Secure key sharing scheme using Hamiltonian path
JP6759168B2 (ja) 難読化回路生成装置、難読化回路計算装置、難読化回路生成方法、難読化回路計算方法、プログラム
JP6649289B2 (ja) 暗号システム、鍵生成装置、暗号化装置、復号装置、およびプログラム
JP7119605B2 (ja) 暗号文変換システム、暗号文変換方法、及びプログラム
Shirole et al. Review paper on data security in cloud computing environment
RU2470470C2 (ru) Защита выполнения криптографического вычисления
Al-Ramini Implementation of proposed lightweight cryptosystem for use in Cloud Computing Security
JP2011109510A (ja) 原本性保証装置、原本性保証プログラム、及びこのプログラムを記録する記録媒体
Adedeji et al. Improved image encryption for real-time application over wireless communication networks using hybrid cryptography technique
JP2018112612A (ja) 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、難読化装置、実行装置、およびプログラム
WO2023238230A1 (ja) 暗号システム
JP6189788B2 (ja) 鍵生成装置、再暗号化装置、およびプログラム
Shaik et al. A Compatible Hexadecimal Encryption-Booster Algorithm for Augmenting Security in the Advanced Encryption Standard
WO2022254578A1 (ja) 暗号システム、暗号文更新装置、プログラム
JP6885325B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、プログラム

Legal Events

Date Code Title Description
A80 Written request to apply exceptions to lack of novelty of invention

Free format text: JAPANESE INTERMEDIATE CODE: A80

Effective date: 20170927

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190819

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200812

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200902

R150 Certificate of patent or registration of utility model

Ref document number: 6759168

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150