JP6649288B2 - 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム - Google Patents

暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム Download PDF

Info

Publication number
JP6649288B2
JP6649288B2 JP2017001751A JP2017001751A JP6649288B2 JP 6649288 B2 JP6649288 B2 JP 6649288B2 JP 2017001751 A JP2017001751 A JP 2017001751A JP 2017001751 A JP2017001751 A JP 2017001751A JP 6649288 B2 JP6649288 B2 JP 6649288B2
Authority
JP
Japan
Prior art keywords
secret key
key
master
setup
ciphertext
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
JP2017001751A
Other languages
English (en)
Other versions
JP2018112612A (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 JP2017001751A priority Critical patent/JP6649288B2/ja
Publication of JP2018112612A publication Critical patent/JP2018112612A/ja
Application granted granted Critical
Publication of JP6649288B2 publication Critical patent/JP6649288B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、関数型暗号技術に関し、特に、識別不可能性難読化技術に関する。
「難読化(obfuscation)」とは、入力されたプログラムを変換し、異なるプログラムに変換することをいう。特に、同一の機能をもつ2つの異なるプログラムを変換したとき、変換後のプログラムがどちらのプログラムを変換して得られたものかを判別できない「難読化」を「識別不可能性難読化(Indistinguishability Obfuscation)」という(例えば、非特許文献1等参照)。このような難読化を行う識別不可能性難読化器の構成方法の一つに、一般的な暗号機能を用いた構成方法が知られている(例えば、非特許文献2から5等参照)。例えば、非特許文献2,3に記載された構成方法では、1-keyweakly-succinct 公開鍵関数型暗号を利用して識別不可能性難読化器を構成している。また、非特許文献5に記載された構成方法では、unbounded-key non-succinct 秘密鍵関数型暗号と(標準的な)公開鍵暗号を利用して識別不可能性難読化器を構成している(用語の定義は後述)。
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. 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 Guruswami [Gur15], pages 171-190. Prabhanjan Ananth, Abhishek Jain, and Amit Sahai, "Indistinguishability obfuscation from functional encryption for simple functions," Cryptology ePrint Archive, Report 2015/730, 2015. Nir Bitansky, Ryo Nishimaki, Alain Passel`egue, and Daniel Wichs, "From cryptomania to obfustopia through secret-key functional encryption," IACR Cryptology ePrint Archive, 2016:558, 2016.
従来の構成方法では、暗号化回路のサイズが秘密鍵に対応する関数fのサイズに依存する関数型暗号(1-key weakly-succinct 公開鍵関数型暗号やunbounded-key non-succinct 秘密鍵関数型暗号など)を用いて識別不可能性難読化器を構成していた。しかし、暗号化回路のサイズの関数fのサイズへの依存性がより小さな結託簡素性を持つ関数型暗号を用いることができれば、識別不可能性難読化に必要な演算コストや記憶容量をさらに低減できる。
本発明はこのような点に鑑みてなされたものであり、結託簡素性を持つ関数型暗号を提供することを目的とする。
第2関数型暗号のセットアップアルゴリズムPKFE2.setup、鍵生成アルゴリズムFE2.keygen、暗号化アルゴリズムPKFE2.enc、および復号アルゴリズムFE2.decを実行する。ただし、qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、マスター秘密鍵msk1および所定の関数f1を入力とし、関数f1に対する秘密鍵skf1を生成する第1関数型暗号の鍵生成アルゴリズムであり、PKFE1.encが、マスター公開鍵mpk1およびメッセージmを入力とし、メッセージmの暗号文c1を生成する第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、秘密鍵skf1および暗号文c1を入力とし、メッセージmの関数値f1(m)を生成する第1関数型暗号の復号アルゴリズムである。
セットアップアルゴリズムPKFE2.setupでは、(1)擬似ランダム関数F’の鍵Kとランダムビット列ρを得、(2)入力されたi∈[q]について擬似乱数r’=F’(K,(ρ,i))を得るステップと、PKFE1.setupを実行して擬似乱数r’でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成するステップと、マスター公開鍵mpk1を出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K,ρ)をマスター秘密鍵msk2として得る。
FE2.keygenでは、いずれかのi∈[q]、マスター秘密鍵msk2、および所定の関数f2を入力とし、PKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1を得、FE1.keygenを実行してマスター秘密鍵msk1および関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る。
暗号化アルゴリズムPKFE2.encでは、(1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行してマスター公開鍵mpk1を得るステップと、入力されたi∈[q]について擬似乱数r=F(K,i)を生成するステップと、マスター公開鍵mpk1、メッセージm、および擬似乱数rを入力としてPKFE1.encを実行して擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムη’を得、(3)暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得る。
復号アルゴリズムFE2.decでは、秘密鍵skf2および難読化プログラムctを入力とし、秘密鍵skf2から取り出したi∈[q]について暗号文ctを得、秘密鍵skf2 (i)および暗号文ctを入力としてFE1.decを実行して復元値を得る。
これにより、結託簡素性を持つ関数型暗号を構成できる。
図1はq−key結託簡素性を持つ関数型暗号の暗号システムを例示したブロック図である。 図2はq−key結託簡素性を持つ関数型暗号の暗号システムを例示したブロック図である。 図3は1−key完全簡素性を持つ関数型暗号の暗号システムを例示したブロック図である。 図4は1−key完全簡素性公開鍵関数型暗号を利用した識別不可能性難読化装置を例示したブロック図である。
以下、本発明の実施形態を説明する。
[前提]
まず実施形態の前提事項を説明する。
「難読化(obfuscation)」とは、入力されたプログラムを変換し、異なるプログラムに変換することをいう(例えば、非特許文献1等参照)。変換後のプログラムの機能は変換前のプログラムの機能と完全に同一である。変換後のプログラムは変換前のプログラムに関する情報を漏らさない。特に「識別不可能性難読化(Indistinguishability Obfuscation)」とは、同一の機能をもつ2つの異なるプログラムを変換したとき、変換後のプログラムがどちらのプログラムを変換して得られたものかを判別できない「難読化」を意味する。「難読化器(Obfuscator)」とは難読化を行う装置を意味し、「識別不可能性難読化器(Indistinguishability Obfuscator(iO))」とは識別不可能性難読化を行う装置を意味する。確率的多項式時間機械iOがプログラムによって記述される回路が属する回路族{Cλλ∈Nに対する「識別不可能性難読化器(Indistinguishability Obfuscator)」であるとは、「機能性」および「識別不可能性」を満たすことである。
「機能性」とは、任意のセキュリティパラメータλ∈N、任意のプログラムC∈{Cλλ∈N、任意の入力xに対して以下を満たすことを意味する。ただし、Nは自然数を表し、Pr[α]は事象αの確率を表し、iO(C)はiOによってCを難読化することを表し、α←βはβの結果をαとすることを表す。
Pr[C’(x)=C(x):C’←iO(C)]=1
すなわち、iOが機能性を満たすとは、確率的多項式時間機械iOで任意のプログラムCをプログラムC’に変換したとき、入力xに対するプログラムC’の出力C’(x)とプログラムCの出力C(x)とが等しくなることを意味する。
「識別不可能性」とは、任意の多項式サイズ識別器Dに対して、無視できる関数δ(・)が存在して、任意のセキュリティパラメータλ∈N,サイズが等しい任意のプログラム対(回路対)C,C∈Cλで任意の入力xについてC(x)=C(x)が成立するものに対し、以下を満たすことを意味する。
Pr[D(iO(C0))=1]-Pr[D(iO(C1))=1]≦δ(λ)
すなわち、iOが識別不可能性を満たすとは、iO(C)の判別結果D(iO(C))(iO(C)がCを難読化して得られたものなのかCを難読化して得られたものなのかの判別結果)が1となる(例えば、iO(C)がCを難読化して得られたものであると判別される)確率と、iO(C)の判別結果D(iO(C))が1となる(例えば、iO(C)がCを難読化して得られたものであると判別される)確率との違いが無視できることを意味する。
「公開鍵関数型暗号(PKFE:Public-Key Functional Encryption)」とは、マスター公開鍵を用いて暗号化を行う関数型暗号(Functional Encryption)を意味する。以下に公開鍵関数型暗号のアルゴリズム(PKFE.setup, FE.keygen, PKFE.enc, FE.dec)を示す(例えば、非特許文献5、参考文献1(Dan Boneh, Amit Sahai, Brent Waters, "Functional Encryption: Definitions and Challenges," Proceedings of Theory of Cryptography Conference (TCC) 2011)等参照)。
セットアップアルゴリズム(PKFE.setup):鍵の長さ(ビット長)を表す任意のセキュリティパラメータλ∈Nを入力とし、マスター公開鍵mpk(システムパラメータ)とマスター秘密鍵mskを生成する。
(mpk, msk) ← PKFE.setup(1λ)
鍵生成アルゴリズム(FE.keygen):マスター秘密鍵mskおよび関数fを入力とし、関数fに対する秘密鍵skを生成する。関数fは任意の関数でよく、例えば、f(m)=mまたはf(m)=⊥を満たす関数である。ただし、⊥はエラーを表す。
skf ← FE.keygen(msk,f)
暗号化アルゴリズム(PKFE.enc):マスター公開鍵mpkとメッセージmを入力とし、暗号文cを生成する。
c ← PKFE.enc(mpk, m)
復号アルゴリズム(FE.dec):関数fに対する秘密鍵skと暗号文cを入力とし、メッセージmの関数値f(m)を生成する。
f(m) ← FE.dec(skf,c)
「秘密鍵関数型暗号(SKFE:Secret-Key Functional Encryption)」とは、マスター秘密鍵を用いて暗号化を行う関数型暗号を意味する。以下に秘密鍵関数型暗号のアルゴリズム(SKFE.setup, FE.keygen, SKFE.enc, FE.dec)を示す(例えば、非特許文献5等参照)。
セットアップアルゴリズム(SKFE.setup):鍵の長さ(ビット長)を表す任意のセキュリティパラメータλ∈Nを入力とし、マスター秘密鍵mskを生成する。
msk ← SKFE.setup(1λ)
鍵生成アルゴリズム(FE.keygen):マスター秘密鍵mskおよび関数fを入力とし、関数fに対する秘密鍵skを生成する。関数fは任意の関数でよく、例えば、f(m)=mまたはf(m)=⊥を満たす関数である。ただし、⊥はエラーを表す。
skf ← FE.keygen(msk,f)
暗号化アルゴリズム(SKFE.enc):マスター秘密鍵mskとメッセージmを入力とし、暗号文cを生成する。
c ← SKFE.enc(msk, m)
復号アルゴリズム(FE.dec):関数fに対する秘密鍵skと暗号文cを入力とし、メッセージmの関数値f(m)を生成する。
f(m) ← FE.dec(skf,c)
「1-key(single-key)方式」とは、鍵生成アルゴリズムによる鍵の発行回数(すなわち、攻撃者による鍵の入手回数)が1回の場合には安全性が保たれるが、鍵の発行回数が2回以上の場合には安全性が保たれるとは限らない暗号方式をいう。
「bounded-key方式」とは、鍵生成アルゴリズムによる鍵の発行回数が事前(セットアップアルゴリズムの実行時)に定められた回数(複数回数)以下の場合には安全性が保たれるが、鍵の発行回数が事前に定められた回数を超えた場合には安全性が保たれるとは限らない暗号方式をいう。特に、鍵生成アルゴリズムによる鍵の発行回数が事前に定められたq(ただし、q≧2)以下の場合安全性が保たれるが、鍵の発行回数がqを超えた場合には安全性が保たれるとは限らない暗号方式を「q-Key方式」という。
「unbounded-key方式」とは、鍵生成アルゴリズムによる鍵の発行回数にかかわらず、安全性が保たれる暗号方式をいう。
「non-succinct方式」とは、暗号化アルゴリズムによって記述される暗号化回路のサイズ|E|が以下の関係を満たす暗号方式をいう。ただし、poly(α)はαの多項式を表し、nはメッセージmの長さ(ビット長)を表し、|f|は上述の関数fのサイズを表す。
|E|=poly(λ,n,|f|)
「weakly-succinct方式」とは、暗号化アルゴリズムによって記述される暗号化回路のサイズ|E|が以下の関係を満たす暗号方式をいう。ただし、εは0<ε<1を満たす。
|E|=poly(λ,n)・|f|1-ε
「succinct(完全簡素性)方式」とは、暗号化アルゴリズムによって記述される暗号化回路のサイズ|E|が以下の関係を満たす暗号方式をいう。
|E|=poly(λ,n)
「q-key collusion-succinctness(q−key結託簡素性)方式」とは、暗号化アルゴリズムによって記述される暗号化回路のサイズ|E|が以下の関係を満たす暗号方式をいう。ただし、qは鍵生成アルゴリズムによる鍵の発行回数を表し、εは0<ε<1を満たす。
|E|=poly(λ,n,|f|)・q1-ε
上記で定義した「α方式」の関数型暗号を「α関数型暗号」と呼び、「α方式」の公開鍵関数型暗号を「α公開鍵関数型暗号」と呼び、「α方式」の秘密鍵関数型暗号を「α秘密鍵関数型暗号」と呼ぶことにする。例えば、1-key方式の関数型暗号を「1-key関数型暗号」と呼び、1-key方式の公開鍵関数型暗号を「1-key公開鍵関数型暗号」と呼び、1-key方式の秘密鍵関数型暗号を「1-key秘密鍵関数型暗号」と呼ぶ。また、上記で定義した複数の方式の用語を組み合わせることで、それらの方式の性質を兼ね備える暗号方式を表現することにする。例えば、1-key方式およびweakly-succinct方式の両方の性質を備える公開鍵関数型暗号を「1-key weakly-succinct 公開鍵関数型暗号」と呼び、bounded-key方式およびnon-succinct方式の両方の性質を備える秘密鍵関数型暗号を「bounded-key non-succinct 秘密鍵関数型暗号」と呼び、1-key方式およびsuccinct方式の両方の性質を備える秘密鍵関数型暗号を「1-key succinct 秘密鍵関数型暗号」と呼ぶ。
「Strong Exponentially-Efficient Indistinguishability Obfuscator(SXIO)」とは、難読化アルゴリズムを実現する回路サイズ|iO|が以下を満たす識別不可能性難読化器iOをいう(例えば、非特許文献5等参照)。ただし、λはセキュリティパラメータを表し、|C|は難読化しようとするプログラムCによって記述される回路のサイズを表し、nは当該回路への入力値の大きさ(ビット数)を表し、εは0<ε<1を満たす。なお、2は暗号化アルゴリズムへの入力値の総数となる。
|iO|=poly(λ,|C|)・2n(1-ε)
「γ-compressingStrong Exponentially-Efficient Indistinguishability Obfuscator(γ-SXIO)」とは、任意のセキュリティパラメータλ∈NおよびプログラムC∈{Cλλ∈Nについて、入力(1λ,C)に対するSXIOの実行時間が高々2・poly(λ,|C|)である(Non-trivial time efficiency)識別不可能性難読化器iOをいう(例えば、非特許文献5等参照)。ただし、γは0<γ<1を満たす。
[原理]
次に原理を説明する。
<q−key結託簡素性公開鍵関数型暗号(q-key collusion-succinctness PKFE)(I)>
1−key公開鍵関数型暗号である第1関数型暗号とγ−SXIOとを用い、以下のようにq−key結託簡素性公開鍵関数型暗号である第2関数型暗号(PKFE2.setup, FE2.keygen, PKFE2.enc, FE2.dec)を構成する。
ただし、qが1以上の整数(例えば、qは2以上の整数)であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、マスター秘密鍵msk1および所定の関数f1を入力とし、関数f1に対する秘密鍵skf1を生成する第1関数型暗号の鍵生成アルゴリズムであり、PKFE1.encが、マスター公開鍵mpk1およびメッセージmを入力とし、メッセージmの暗号文c1を生成する第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、秘密鍵skf1および暗号文c1を入力とし、メッセージmの関数値f1(m)を生成する第1関数型暗号の復号アルゴリズムである。
参考文献2(Sergey Gorbunov, Vinod Vaikuntanathan, and Hoeteck Wee, “Functional encryption with bounded collusions via multi-party computation,” In Reihaneh Safavi-Naini and Ran Canetti, editors, CRYPTO 2012, volume 7417 of LNCS, pages 162-179. Springer, Heidelberg, August 2012)には、公開鍵暗号からr−key公開鍵関数型暗号を構成する方法が開示されている(ただし、rは1以上の整数であり、例えば、rは2以上の整数である)。r−key公開鍵関数型暗号は1−key公開鍵関数型暗号でもあるため、参考文献2で得られるr−key公開鍵関数型暗号を第1関数型暗号として用いることができる。また、非特許文献5には、公知の1−key完全簡素性秘密鍵関数型暗号から1/2≦γ≦1を満たすγ−SXIOを構成する方法が開示されている。
セットアップアルゴリズム(PKFE2.setup(1λ)):
PKFE2.setup(1λ)は、λを入力として各i∈[q]についてPKFE1.setupを実行してマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成する。すなわち、PKFE2.setupは、q対の(mpk1,msk1)(ただし、i∈[q]であり、[q]は{1,2,…,q}を意味する)を生成する。
(mpk1i,msk1i)←PKFE1.setup(1λ) for i∈[q]
ただし、λは正整数のセキュリティパラメータであり、PKFE1.setupは、各i∈[q]についてランダム化した(mpk1,msk1)を得る。PKFE2.setupは、各i∈[q]について得られた(mpk1,msk1)から、マスター公開鍵(システムパラメータ)mpk2=(mpk1,…,mpk1)およびマスター秘密鍵msk2=(msk1,…,msk1)を得て出力する。
鍵生成アルゴリズム(FE2.keygen(msk2,f2,i)):
FE2.keygen(msk2,f2,i)は、いずれかのi∈[q]、マスター秘密鍵msk2、および所定の関数f2を入力としてFE1.keygenを実行して関数f2に対する秘密鍵skf2 (i)を生成し、関数f2に対する秘密鍵skf2=(skf2 (i),i)を得て出力する。
skf2 (i)←FE1.keygen(msk1i,f2)
暗号化アルゴリズム(PKFE2.enc(mpk2,m)):
PKFE2.enc(mpk2,m)は、穴開け可能擬似ランダム関数Fの鍵Kを生成し、暗号文生成プログラムηを生成し、当該暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る。ただし、PKFE2.encの暗号文生成プログラムηは、入力されたi∈[q]について擬似乱数rを生成するステップと、マスター公開鍵mpk1、メッセージm、および擬似乱数rを入力としてPKFE1.encを実行して擬似乱数rでランダム化された暗号文ct(ただし、ctはメッセージmの暗号文)を得るステップと、を実行するプログラムである。なお、穴開け可能擬似ランダム関数Fは、鍵Kおよびインデックスiを入力として、それらに対応する擬似乱数F(K,i)を出力する。穴開け可能擬似ランダム関数の概念は、例えば、参考文献3(Amit Sahai, Brent Waters,“How to Use Indistinguishability Obfuscation: Deniable Encryption, and More,”Proceeding STOC '14 Proceedings of the 46th Annual ACM Symposium on Theory of Computing, Pages 475-484)等に開示されている。また穴開け可能擬似ランダム関数の具体的構成は、参考文献4(Dan Boneh, Brent Waters, “Constrained Pseudorandom Functions and Their Applications,” Advances in Cryptology - ASIACRYPT 2013, Volume 8270 of the series Lecture Notes in Computer Science pp 280-300)などに開示されている。なお、前述の擬似ランダム関数F’として穴開け可能擬似ランダム関数Fを用いてもよい。
≪PKFE2.encの暗号文生成プログラムη≫
Hardwired:K, m, mpk11,…,mpk1q
Input:或るインデックスi∈[q]
1.ri=F(K,i)を計算する。
2.暗号文cti←PKFE1.enc(mpk1i,m;ri)を生成する。
3.暗号文ctiを出力する。
また、難読化プログラムct=sxiO(η)は、当該暗号文生成プログラムηをγ−SXIOで識別不可能性難読化したものである。
復号アルゴリズム(FE2.dec(skf2,ct)):
FE2.dec(skf2,ct)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムct=sxiO(η)を入力とし、秘密鍵skf2から取り出したi∈[q]をct=sxiO(η)に入力してct=sxiO(η)を実行することで暗号文ctを得る。難読化の「機能性」により、難読化プログラムctにiを入力することで、暗号文生成プログラムηのiに対する出力である暗号文ctが得られる。さらにFE2.dec(skf2,ct)は、秘密鍵skf2から取りだした秘密鍵skf2 (i)および得られた暗号文ctを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
正しく復号が行われた場合にはm’=f2(m)となる。
<q−key結託簡素性公開鍵関数型暗号 (II)>
q−key結託簡素性公開鍵関数型暗号の他の構成を示す。1−key公開鍵関数型暗号である第1関数型暗号とγ−SXIOとを用い、以下のようにq−key結託簡素性公開鍵関数型暗号である第2関数型暗号(PKFE2.setup, FE2.keygen, PKFE2.enc, FE2.dec)を構成する。
セットアップアルゴリズム(PKFE2.setup(1λ)):
PKFE2.setup(1λ)は、まず、λを入力として擬似ランダム関数F’の鍵Kとランダムビット列ρ∈{0,1}λを得る。鍵Kおよびランダムビット列ρは、例えば、ランダムに選択される。次に、PKFE2.setup(1λ)は、マスター公開鍵生成プログラムΣを生成する。ただし、PKFE2.setupのマスター公開鍵生成プログラムΣは、入力されたi∈[q]について擬似乱数r’=F’(K,(ρ,i))を得るステップと、PKFE1.setupを実行して擬似乱数r’でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成するステップと、マスター公開鍵mpk1を出力するステップと、を実行するプログラムである。なお、擬似ランダム関数F’は、鍵Kおよびインデックス(ρ,i)を入力として、それらに対応する擬似乱数F’(K,(ρ,i))を出力する。インデックス(ρ,i)は(ρ,i)から一義的に決まり、例えばρとiとのビット結合値である。さらに、PKFE2.setup(1λ)は、マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得て出力し、(K,ρ)をマスター秘密鍵msk2として得て出力する。
mpk2:=sxiO(Σ)
msk2:=(K00)
≪PKFE2.setupのマスター公開鍵生成プログラムΣ≫
Hardwired:K0, ρ0
Input:或るインデックスi∈[q]
1.ri’=F’(K0,(ρ0,i))を計算する。
2.鍵対(mpk1i,msk1i)←PKFE1.setup(1λ;ri’)を生成する。
3.マスター公開鍵mpk1iを出力する。
鍵生成アルゴリズム(FE2.keygen(msk2,f2,i)):
FE2.keygen(msk2,f2,i)は、λ、いずれかのi∈[q]、マスター秘密鍵msk2=(K,ρ)、および所定の関数f2を入力とし、PKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1を得る。
(mpk1i, msk1i)←PKFE1.setup(1λ;F’(K0,(ρ0,i)))
またFE2.keygen(msk2,f2,i)は、FE1.keygenを実行してマスター秘密鍵msk1および関数f2に対する秘密鍵skf2 (i)を生成する。
skf2 (i)←FE1.keygen(msk1i,f2)
さらにFE2.keygen(msk2,f2,i)は、関数f2に対する秘密鍵skf2=(skf2 (i),i)を得て出力する。
skf2:=(skf2 (i),i)
暗号化アルゴリズム(PKFE2.enc(mpk2,m)):
PKFE2.enc(mpk2,m)は、穴開け可能擬似ランダム関数Fの鍵Kを得る。例えば、鍵Kはランダムに生成される。またPKFE2.enc(mpk2,m)は、暗号文生成プログラムη’を生成する。ただし、PKFE2.encの暗号文生成プログラムη’は、入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行してマスター公開鍵mpk1を得るステップと、入力されたi∈[q]について擬似乱数r=F(K,i)を生成するステップと、マスター公開鍵mpk1、メッセージm、および擬似乱数rを入力としてPKFE1.encを実行して擬似乱数rでランダム化された暗号文ct(ただし、ctはメッセージmの暗号文)を得るステップと、を実行するプログラムである。難読化の「機能性」より、或るi∈[q]について難読化プログラムsxiO(Σ)を実行して得られる値sxiO(Σ)(i)は、このi∈[q]についてマスター公開鍵生成プログラムΣを実行して得られる値Σ(i)に等しい。さらにPKFE2.enc(mpk2,m)は、暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得て出力する。
≪PKFE2.encの暗号文生成プログラムη’≫
Hardwired:K, m, mpk2=sxiO(Σ)
Input:或るインデックスi∈[q]
1.mpk1i←sxiO(Σ)(i)
2.ri=F(K,i)を計算する。
3.暗号文cti←PKFE1.enc(mpk1i,m;ri)を生成する。
4.暗号文ctiを出力する。
復号アルゴリズム(FE2.dec(skf2,ct)):
FE2.dec(skf2,ct)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctを入力とし、秘密鍵skf2から取り出したi∈[q]について暗号文ctを得る。難読化の「機能性」により難読化プログラムctにiを入力することで、暗号文生成プログラムη’のiに対する出力である暗号文ctが得られる。
cti←ct(i)
またFE2.dec(skf2,ct)は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および得られた暗号文ctを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
<q−key結託簡素性秘密鍵関数型暗号(q-key collusion-succinctness SKFE)(I)>
1−key秘密鍵関数型暗号である第1関数型暗号とγ−SXIOとを用い、以下のようにq−key結託簡素性秘密鍵関数型暗号である第2関数型暗号(SKFE2.setup, FE2.keygen, SKFE2.enc, FE2.dec)を構成する。
ただし、qが1以上の整数(例えば、qは2以上の整数)であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、マスター秘密鍵msk1および所定の関数f1を入力とし、関数f1に対する秘密鍵skf1を生成する第1関数型暗号の鍵生成アルゴリズムであり、SKFE1.encが、マスター秘密鍵msk1およびメッセージmを入力とし、メッセージmの暗号文c1を生成する第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、秘密鍵skf1および暗号文c1を入力とし、メッセージmの関数値f1(m)を生成する第1関数型暗号の復号アルゴリズムである。参考文献2には、一方向性関数からr−key秘密鍵関数型暗号を構成する方法が開示されている。r−key秘密鍵関数型暗号は1−key秘密鍵関数型暗号でもあるため、参考文献2で得られるr−key秘密鍵関数型暗号を第1秘密型暗号として用いることができる。
セットアップアルゴリズム(SKFE2.setup(1λ)):
SKFE2.setup(1λ)は、λを入力とし、各i∈[q]についてSKFE1.setupを実行してマスター秘密鍵msk1の組を生成する。すなわち、SKFE2.setupは、q個のmsk1(ただし、i∈[q]であり、[q]は{1,2,…,q}を意味する)を生成する。
msk1i←SKFE1.setup(1λ) for i∈[q]
ただし、λは正整数のセキュリティパラメータであり、SKFE1.setupは、各i∈[q]についてランダム化したmsk1を得る。SKFE2.setupは、各i∈[q]について得られたmsk1から、マスター秘密鍵msk2=(msk1,…,msk1)を得て出力する。
鍵生成アルゴリズム(FE2.keygen(msk2,f2,i)):
FE2.keygen(msk2,f2,i)は、いずれかのi∈[q]、マスター秘密鍵msk2、および所定の関数f2を入力としてFE1.keygenを実行して関数f2に対する秘密鍵skf2 (i)を生成し、関数f2に対する秘密鍵skf2=(skf2 (i),i)を得て出力する。
skf2 (i)←FE1.keygen(msk1i,f2)
暗号化アルゴリズム(SKFE2.enc(msk2,m)):
SKFE2.enc(msk2,m)は、穴開け可能擬似ランダム関数Fの鍵Kを生成し、暗号文生成プログラムμを生成し、当該暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る。ただし、SKFE2.encの暗号文生成プログラムμは、入力されたi∈[q]について擬似乱数rを生成するステップと、マスター秘密鍵msk1、メッセージm、および擬似乱数rを入力としてSKFE1.encを実行して擬似乱数rでランダム化された暗号文ctを得るステップと、を実行するプログラムである。なお、穴開け可能擬似ランダム関数Fは、鍵Kおよびインデックスiを入力として、それらに対応する擬似乱数F(K,i)を出力する。
≪SKFE2.encの暗号文生成プログラムμ≫
Hardwired:K, m, msk11,…,msk1q
Input:或るインデックスi∈[q]
1.ri=F(K,i)を計算する。
2.暗号文cti←SKFE1.enc(msk1i,m;ri)を生成する。
3.暗号文ctiを出力する。
また、難読化プログラムct=sxiO(μ)は、当該暗号文生成プログラムμをγ−SXIOで識別不可能性難読化したものである。
復号アルゴリズム(FE2.dec(skf2,ct)):
FE2.dec(skf2,ct)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムct=sxiO(μ)を入力とし、秘密鍵skf2から取り出したi∈[q]をct=sxiO(μ)に入力してct=sxiO(μ)を実行することで暗号文ctを得る。さらにFE2.dec(skf2,ct)は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および得られた暗号文ctを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
正しく復号が行われた場合にはm’=f2(m)となる。
<q−key結託簡素性秘密鍵関数型暗号 (II)>
q−key結託簡素性秘密鍵関数型暗号の他の構成を示す。1−key秘密鍵関数型暗号である第1関数型暗号とγ−SXIOとを用い、以下のようにq−key結託簡素性秘密鍵関数型暗号である第2関数型暗号(SKFE2.setup, FE2.keygen, SKFE2.enc, FE2.dec)を構成する。
セットアップアルゴリズム(SKFE2.setup(1λ)):
SKFE2.setup(1λ)は、まず、λを入力とし、擬似ランダム関数F’の鍵Kとランダムビット列ρ∈{0,1}λを得る。鍵Kおよびランダムビット列ρは、例えば、ランダムに選択される。SKFE2.setup(1λ)は、マスター秘密鍵msk2=(K,ρ)を得て出力する。
鍵生成アルゴリズム(FE2.keygen(msk2,f2,i)):
FE2.keygen(msk2,f2,i)は、λ、いずれかのi∈[q]、マスター秘密鍵msk2=(K,ρ)、および所定の関数f2を入力とし、以下の処理を実行する。
FE2.keygen(msk2,f2,i)は、鍵Kおよびインデックス(ρ,i)を入力として擬似乱数F’(K,(ρ,i))を得、SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得る。
msk1i←SKFE1.setup(1λ;F’(K0,(ρ0,i)))
次にFE2.keygen(msk2,f2,i)は、FE1.keygenを実行してマスター秘密鍵msk1および関数f2に対する秘密鍵skf2 (i)を生成する。
skf2 (i)←FE1.keygen(msk1i,f2)
FE2.keygen(msk2,f2,i)は、関数f2に対する秘密鍵skf2=(skf2 (i),i)を得て出力する。
skf2:=(skf2 (i),i)
暗号化アルゴリズム(SKFE2.enc(msk2,m)):
SKFE2.enc(msk2,m)は、穴開け可能擬似ランダム関数Fの鍵Kを得る。例えば、鍵Kはランダムに生成される。またSKFE2.enc(msk2,m)は、暗号文生成プログラムμ’を得る。ただし、SKFE2.encの暗号文生成プログラムμ’は、マスター秘密鍵msk2=(K,ρ)およびi∈[q]を入力とし、入力されたi∈[q]についてSKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得るステップと、擬似乱数r=F(K,i)を生成するステップと、マスター秘密鍵msk1、メッセージm、および擬似乱数rを入力としてSKFE1.encを実行して擬似乱数rでランダム化された暗号文ct(ただし、ctはメッセージmの暗号文)を得るステップと、を実行するプログラムである。
≪SKFE2.encの暗号文生成プログラムμ’≫
Hardwired:K, m, K00
Input:或るインデックスi∈[q]
1.msk1i←SKFE1.setup(1λ;F’(K0,(ρ0,i)))
2.ri=F(K,i)を計算する。
3.暗号文cti←SKFE1.enc(msk1i,m;ri)を生成する。
4.暗号文ctiを出力する。
さらにSKFE2.enc(msk2,m)は、暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得て出力する。
ct:=sxiO(μ’)
復号アルゴリズム(FE2.dec(skf2,ct)):
FE2.dec(skf2,ct)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctを入力とし、以下の処理を実行する。
まずFE2.dec(skf2,ct)は、秘密鍵skf2から取り出したi∈[q]について暗号文ctを得る。難読化の「機能性」により難読化プログラムctにiを入力することで、暗号文生成プログラムμ’のiに対する出力である暗号文ctが得られる。
cti←ct(i)
またFE2.dec(skf2,ct)は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および得られた暗号文ctを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
<q−key結託簡素性>
上述した暗号化アルゴリズム(PKFE2.encおよびSKFE2.enc)は、各i∈[q]に対する暗号文を生成するのではなく、iに対する暗号文を生成する暗号文生成プログラムηまたはμをγ−SXIOで難読化した難読化プログラムct=sxiO(η)またはct=sxiO(μ)を生成する。前述したSXIOの性質より、当該暗号化アルゴリズムによって記述される暗号化回路のサイズはpoly(λ,|μ|)・2となる。ここで難読化プログラムctへの入力値であるi∈[q]の総数はq=2であるため、当該サイズはpoly(λ,|μ|)・qγと記述できる。また、γは0<γ<1を満たし、εは0<ε<1を満たすため、γ=1−εと置くことができ、当該暗号化アルゴリズムでの|μ|は|f|およびmの長さLに依存するため、q−key結託簡素性の要件を満たす。よって、上述のように構成される暗号方式は、q−key結託簡素性公開鍵関数型暗号およびq−key結託簡素性秘密鍵関数型暗号となる。このようなq−key結託簡素性方式の関数型暗号を識別不可能性難読化に用いることにより、識別不可能性難読化に必要な演算コストや記憶容量を削減できる。
<1−key完全簡素性公開鍵関数型暗号(1-key succinct PKFE)>
上述したq−key結託簡素性公開鍵関数型暗号を利用することで、以下のように1−key完全簡素性公開鍵関数型暗号を構成できる。
PK−1.前述のように参考文献2には、公開鍵暗号からr−key公開鍵関数型暗号を構成する方法が開示されている。
PK−2.前述したように、r−key公開鍵関数型暗号を1−key公開鍵関数型暗号(第1関数型暗号)として用い、さらにγ−SXIOを用いることでq−key結託簡素性公開鍵関数型暗号(第2関数型暗号)を構成できる。
PK−3.非特許文献3,4には、q−key結託簡素性公開鍵関数型暗号を用い、1−key完全簡素性公開鍵関数型暗号(第3関数型暗号)を構成する方法が開示されている。
これらにより、公開鍵暗号を用いて構成されるr−key公開鍵関数型暗号を「第1関数型暗号」とし、以下のような1−key完全簡素性公開鍵関数型暗号(1−key完全簡素性を持つ第3関数型暗号)を構成できる。
セットアップアルゴリズム(PKFE3.setup):
PKFE3.setupは、PKFE2.setupを用い、1−key完全簡素性公開鍵関数型暗号のマスター公開鍵mpk3およびマスター秘密鍵msk3を生成して出力する。
鍵生成アルゴリズム(FE3.keygen):
FE3.keygenは、マスター秘密鍵msk3および所定の関数f3を入力とし、FE2.keygenを用い、1−key完全簡素性公開鍵関数型暗号の秘密鍵skf3(関数f3に対する秘密鍵skf3)を生成して出力する。
暗号化アルゴリズム(PKFE3.enc):
PKFE3.encは、マスター公開鍵mpk3およびメッセージmを入力とし、PKFE2.encを用い、1−key完全簡素性公開鍵関数型暗号に則って、メッセージmの暗号文c3を生成して出力する。
復号アルゴリズム(FE3.dec):
FE3.decは、秘密鍵skf3および暗号文c3を入力とし、FE2.decを用い、1−key完全簡素性公開鍵関数型暗号に則って、メッセージmの関数値f3(m)を生成して出力する。
<識別不可能性難読化器>
前述のように、公知の1−key完全簡素性秘密鍵関数型暗号を用いてγ−SXIOを構成できる(非特許文献5参照)。また非特許文献2,3には、1−key完全簡素性公開鍵関数型暗号を用いて識別不可能性難読化器が構成できることが記載されている。よって、上述のように構成される1−key完全簡素性公開鍵関数型暗号(1−key完全簡素性を持つ第3関数型暗号)を用いて識別不可能性難読化器が構成できる。さらに、上記のPK−1〜3より、公開鍵暗号とγ−SXIOから識別不可能性難読化器が構成できる。つまり、総合すると1−key完全簡素性秘密鍵関数型暗号と公開鍵暗号とから識別不可能性難読化器が構成できる(公開鍵暗号は自明に一方向性関数を含意する)。
公開鍵関数型暗号は秘密鍵関数型暗号よりも強い安全仮定を満たす必要があり(公開鍵関数型暗号は自明に秘密鍵関数型暗号に変換できる)、秘密鍵関数型暗号のほうが公開鍵関数型暗号よりも要求条件が低く扱いやすい。そのため、公開鍵関数型暗号よりも秘密鍵関数型暗号を利用して識別不可能性難読化器を構成するほうが望ましい。また、鍵の発行回数が1回の場合には安全性が保たれる1-key方式は、鍵の発行回数にかかわらず安全性が保たれるunbounded-key方式の暗号方式よりも要求条件が低く扱いやすい。そのため、1-key方式を利用するほうが望ましい。さらに完全簡素性方式は、暗号化回路のサイズが関数fのサイズに依存しないため、演算コストや記憶容量を削減できる。よって、完全簡素性方式を利用するほうが望ましい。また、標準的な公開鍵暗号は広く構成方法が知られているもっとも標準的な暗号機能の1つであり、要求条件としては十分低い。本形態では、1−key完全簡素性秘密鍵関数型暗号と公開鍵暗号とから識別不可能性難読化器が構成できるため、従来よりも弱い暗号仮定から識別不可能性難読化器を構成できるといえる。
<1−key完全簡素性秘密鍵関数型暗号(1-key succinct SKFE)>
加えて、上述したq−key結託簡素性秘密鍵関数型暗号を利用することで、以下のように1−key完全簡素性秘密鍵関数型暗号を構成できる。
SK−1.前述のように参考文献2には、一方向性関数からr−key秘密鍵関数型暗号を構成する方法が開示されている。
SK−2.前述したように、r−key秘密鍵関数型暗号を1−key秘密鍵関数型暗号(第1関数型暗号)として用い、さらにγ−SXIOを用いることでq−key結託簡素性秘密鍵関数型暗号(第2関数型暗号)を構成できる。
SK−3.非特許文献3,4には、q−key結託簡素性秘密鍵関数型暗号を用い、1−key完全簡素性秘密鍵関数型暗号(第3関数型暗号)を構成する方法が開示されている。
これらにより、一方向性関数を用いて構成されるr−key秘密鍵関数型暗号を「第1関数型暗号」とし、以下のような1−key完全簡素性秘密鍵関数型暗号(1−key完全簡素性を持つ第3関数型暗号)を構成できる。
セットアップアルゴリズム(SKFE3.setup):
SKFE3.setupは、SKFE2.setupを用い、1−key完全簡素性秘密鍵関数型暗号のマスター秘密鍵msk3を生成して出力する。
鍵生成アルゴリズム(FE3.keygen):
FE3.keygenは、マスター秘密鍵msk3および所定の関数f3を入力とし、FE2.keygenを用い、1−key完全簡素性秘密鍵関数型暗号の秘密鍵skf3(関数f3に対する秘密鍵skf3)を生成して出力する。
暗号化アルゴリズム(SKFE3.enc):
SKFE3.encは、マスター秘密鍵msk3およびメッセージmを入力とし、SKFE2.encを用い、1−key完全簡素性秘密鍵関数型暗号に則って、メッセージmの暗号文c3を生成して出力する。
復号アルゴリズム(FE3.dec):
FE3.decは、秘密鍵skf3および暗号文c3を入力とし、FE2.decを用い、1−key完全簡素性秘密鍵関数型暗号に則って、メッセージmの関数値f3(m)を生成して出力する。
[第1実施形態]
図面を用いて本発明の第1実施形態を説明する。
本形態は、前述した<q−key結託簡素性公開鍵関数型暗号(I)>の具体例である。
<構成>
図1に例示するように、本形態の暗号システム1は、セットアップ装置11、鍵生成装置12、暗号化装置13、および復号装置14を有する。セットアップ装置11は、例えば、メモリ111、マスター鍵生成部112、および通信部113を有する。鍵生成装置12は、例えば、メモリ121、疑似乱数生成部122、秘密鍵生成部123、および通信部124を有する。暗号化装置13は、例えば、メモリ131、疑似乱数生成部132、疑似乱数鍵生成部133、プログラム生成部134、難読化部135、および通信部136を有する。復号装置14は、例えば、メモリ141、暗号文生成部142、復号部143、および通信部144を有する。
セットアップ装置11、鍵生成装置12、暗号化装置13、および復号装置14は、入力情報、演算過程で保存する必要がある情報、演算結果の情報をメモリ111,121,131,141にそれぞれ格納し、必要に応じて読み出して利用する。また、セットアップ装置11、鍵生成装置12、暗号化装置13、および復号装置14は、それぞれ通信部113,124,136,144によって情報の送受信を行う。各装置から送信された情報は、例えばネットワークを通じて他の装置に送信される。
セットアップ装置11、鍵生成装置12、暗号化装置13、および復号装置14のそれぞれは、例えば、通信装置、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)、およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される装置である。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。また、1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
なお、図1では、セットアップ装置11、鍵生成装置12、暗号化装置13、および復号装置14を1個ずつ例示するが、これらの少なくとも一部の装置が複数個存在していてもよい。
<処理>
次に本形態の処理を説明する。
≪セットアップアルゴリズム(PKFE2.setup(1λ))の実行処理≫
セットアップ装置11のマスター鍵生成部112は、各i∈[q]についてPKFE1.setupを実行してマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成し、生成されたq対の(mpk1,msk1)(ただし、i∈[q])をメモリ111に格納する。ただし、(mpk1,msk1)はi∈[q]ごとに生成された疑似乱数によってランダム化されている。マスター鍵生成部112は、各i∈[q]について得られた(mpk1,msk1)から、マスター公開鍵mpk2=(mpk1,…,mpk1)およびマスター秘密鍵msk2=(msk1,…,msk1)を生成してメモリ111に格納する。通信部113は、マスター公開鍵mpk2を暗号化装置13に送信し、マスター秘密鍵msk2を鍵生成装置12に送信する。
≪鍵生成アルゴリズム(FE2.keygen(msk2,f2,i))の実行処理≫
鍵生成装置12の通信部124には、復号装置14から送信されたいずれかのi∈[q]および所定の関数f2、ならびにマスター秘密鍵msk2が入力される。これらはメモリ121に格納される。疑似乱数生成部122は疑似乱数を生成して出力する。秘密鍵生成部123は、通信部124に入力されたi∈[q]、関数f2、マスター秘密鍵msk2、および疑似乱数生成部122で生成された疑似乱数を入力とし、FE1.keygenを実行して関数f2に対する秘密鍵skf2 (i)を生成し、関数f2に対する秘密鍵skf2=(skf2 (i),i)を得てメモリ121に格納する。なお、秘密鍵skf2 (i)は当該疑似乱数によってランダム化されている。通信部124は、秘密鍵skf2を復号装置14に送信する。
≪暗号化アルゴリズム(PKFE2.enc(mpk2,m))の実行処理≫
暗号化装置13の通信部136にはマスター公開鍵mpk2が入力され、このマスター公開鍵mpk2はメモリ131に格納される。疑似乱数生成部132は、疑似乱数を生成して疑似乱数鍵生成部133に送る。疑似乱数鍵生成部133は、送られた疑似乱数を用いて穴開け可能擬似ランダム関数Fの鍵Kを生成してメモリ131に格納する。鍵Kはこの疑似乱数によってランダム化されている。プログラム生成部134は、メッセージm、マスター公開鍵mpk2、および鍵Kを入力とし、前述したPKFE2.encの暗号文生成プログラムηを生成してメモリ121に格納する。難読化部135は、当該暗号文生成プログラムηをγ−SXIOで識別不可能性難読化した難読化プログラムct=sxiO(η)を生成してメモリ121に格納する。通信部136は、当該難読化プログラムctを復号装置14に送信する。
≪復号アルゴリズム(FE2.dec(skf2,ct))の実行処理≫
復号装置14の通信部144には、秘密鍵skf2および難読化プログラムctが入力され、これらはメモリ141に格納される。暗号文生成部142は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムct=sxiO(η)を入力とし、秘密鍵skf2から取り出したi∈[q](鍵生成装置12に送信したi)をct=sxiO(η)に入力し、sxiO(η)を実行することで暗号文ctを生成し、当該暗号文ctをメモリ141に格納する。復号部143は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および暗号文ctを入力としてFE1.decを実行し、秘密鍵skf2 (i)で暗号文ctを復号することで復元値m’を得て出力する。
[第2実施形態]
図面を用いて本発明の第2実施形態を説明する。
本形態は、前述した<q−key結託簡素性秘密鍵関数型暗号(I)>の具体例である。以下では、既に説明した事項について同じ参照番号を引用して説明を省略する。
<構成>
図1に例示するように、本形態の暗号システム2は、セットアップ装置21、鍵生成装置12、暗号化装置23、および復号装置14を有する。セットアップ装置21は、例えば、メモリ111、マスター鍵生成部212、および通信部113を有する。暗号化装置23は、例えば、メモリ131、疑似乱数生成部132、疑似乱数鍵生成部133、プログラム生成部234、難読化部135、および通信部136を有する。セットアップ装置21および暗号化装置23は、入力情報、演算過程で保存する必要がある情報、演算結果の情報をメモリ111および131にそれぞれ格納し、必要に応じて読み出して利用する。セットアップ装置21および暗号化装置23は、それぞれ、通信部113および136によって情報の送受信を行う。セットアップ装置21および暗号化装置23は、例えば、前述のコンピュータが所定のプログラムを実行することで構成される装置である。図1では、1個のセットアップ装置21および暗号化装置23を例示するが、セットアップ装置21および暗号化装置23の少なくとも一方が複数個存在していてもよい。
<処理>
次に本形態の処理を説明する
≪セットアップアルゴリズム(SKFE2.setup(1λ))の実行処理≫
セットアップ装置21のマスター鍵生成部212は、各i∈[q]についてSKFE1.setupを実行してマスター秘密鍵msk1を生成し、生成されたq個のmsk1(ただし、i∈[q])をメモリ111に格納する。ただし、msk1はi∈[q]ごとに生成された疑似乱数によってランダム化されている。マスター鍵生成部212は、各i∈[q]について得られたmsk1から、マスター秘密鍵msk2=(msk1,…,msk1)を生成してメモリ111に格納する。通信部113は、マスター秘密鍵msk2を鍵生成装置12および暗号化装置23に送信する。
≪鍵生成アルゴリズム(FE2.keygen(msk2,f2,i))の実行処理≫
本形態の鍵生成アルゴリズムの実行処理は、第1実施形態のものと同じである。
≪暗号化アルゴリズム(SKFE2.enc(msk2,m))の実行処理≫
暗号化装置23の通信部136にはセットアップ装置21から送信されたマスター秘密鍵msk2が入力され、このマスター秘密鍵msk2はメモリ131に格納される。疑似乱数生成部132は、疑似乱数を生成して疑似乱数鍵生成部133に送る。疑似乱数鍵生成部133は、送られた疑似乱数を用いて穴開け可能擬似ランダム関数Fの鍵Kを生成してメモリ131に格納する。鍵Kはこの疑似乱数によってランダム化されている。プログラム生成部234は、メッセージm、マスター秘密鍵msk2、および鍵Kを入力とし、前述したSKFE2.encの暗号文生成プログラムμを生成してメモリ121に格納する。難読化部135は、当該暗号文生成プログラムμをγ−SXIOで識別不可能性難読化した難読化プログラムct=sxiO(μ)を生成してメモリ121に格納する。通信部136は、当該難読化プログラムctを復号装置14に送信する。
≪復号アルゴリズム(FE2.dec(skf2,ct))の実行処理≫
本形態の復号アルゴリズム(FE2.dec(skf2,ct))の実行処理は、暗号化装置13から送信された難読化プログラムctが通信部144に入力されることに代えて、暗号化装置23から送信された難読化プログラムctが通信部144に入力されること、および、難読化プログラムctがsxiO(η)であることに代えて、難読化プログラムctがsxiO(μ)であることを除き、第1実施形態のものと同じである。
[第3実施形態]
図面を用いて本発明の第1実施形態を説明する。本形態は、前述した<q−key結託簡素性公開鍵関数型暗号(II)>の具体例である。以下では、既に説明した事項について同じ参照番号を引用して説明を省略する。
<構成>
図2に例示するように、本形態の暗号システム6は、セットアップ装置61、鍵生成装置62、暗号化装置63、および復号装置64を有する。セットアップ装置61は、例えば、メモリ111、設定部612、プログラム生成部613、マスター鍵生成部614、および通信部113を有する。鍵生成装置62は、例えば、メモリ121、マスター鍵生成部622、秘密鍵生成部623、および通信部124を有する。暗号化装置63は、例えば、メモリ131、設定部632、プログラム生成部634、難読化部635、および通信部136を有する。復号装置64は、例えば、メモリ141、実行部642、復号部643、および通信部144を有する。
セットアップ装置61、鍵生成装置62、暗号化装置63、および復号装置64は、入力情報、演算過程で保存する必要がある情報、演算結果の情報をメモリ111,121,131,141にそれぞれ格納し、必要に応じて読み出して利用する。また、セットアップ装置61、鍵生成装置62、暗号化装置63、および復号装置64は、それぞれ通信部113,124,136,144によって情報の送受信を行う。各装置から送信された情報は、例えばネットワークを通じて他の装置に送信される。セットアップ装置61、鍵生成装置62、暗号化装置63、および復号装置64のそれぞれは、例えば、前述のコンピュータが所定のプログラムを実行することで構成される装置である。図2では、セットアップ装置61、鍵生成装置62、暗号化装置63、および復号装置64を1個ずつ例示するが、これらの少なくとも一部の装置が複数個存在していてもよい。
<処理>
次に本形態の処理を説明する。
≪セットアップアルゴリズム(PKFE2.setup(1λ))の実行処理≫
セットアップ装置61の設定部612は、λを入力として擬似ランダム関数F’の鍵Kとランダムビット列ρ∈{0,1}λを得てメモリ111に格納する。鍵Kおよびランダムビット列ρは、例えば、ランダムに選択される。次に、プログラム生成部613は、鍵Kおよびランダムビット列ρを入力とし、前述したPKFE2.setupのマスター公開鍵生成プログラムΣを生成してメモリ111に格納する。マスター鍵生成部614は、このマスター公開鍵生成プログラムΣを入力とし、マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得て出力し、(K,ρ)をマスター秘密鍵msk2として得て出力する。マスター公開鍵mpk2およびマスター秘密鍵msk2はメモリ111に格納される。通信部113は、マスター公開鍵mpk2を暗号化装置63に送信し、マスター秘密鍵msk2を鍵生成装置62に送信する。
≪鍵生成アルゴリズム(FE2.keygen(msk2,f2,i))の実行処理≫
鍵生成装置62の通信部124には、復号装置64から送信されたいずれかのi∈[q]および所定の関数f2、ならびにマスター秘密鍵msk2が入力される。これらはメモリ121に格納される。マスター鍵生成部622は、λ、いずれかのi∈[q]、マスター秘密鍵msk2=(K,ρ)、および関数f2を入力とし、PKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1を得てメモリ121に格納する。秘密鍵生成部623は、マスター秘密鍵msk1および関数f2を入力とし、FE1.keygenを実行してマスター秘密鍵msk1および関数f2に対する秘密鍵skf2 (i)を生成してメモリ121に格納する。さらに秘密鍵生成部623は、復号装置64から送信されたいずれかのi∈[q]および所定の関数f2を入力とし、関数f2に対する秘密鍵skf2=(skf2 (i),i)を得てメモリ121に格納する。通信部124は、秘密鍵skf2を復号装置64に送信する。
≪暗号化アルゴリズム(PKFE2.enc(mpk2,m))の実行処理≫
暗号化装置63の通信部136にはマスター公開鍵mpk2=sxiO(Σ)が入力され、このマスター公開鍵mpk2はメモリ131に格納される。設定部632は、穴開け可能擬似ランダム関数Fの鍵Kを生成してメモリ131に格納する。例えば、鍵Kはランダムに生成される。プログラム生成部634は、マスター公開鍵mpk2=sxiO(Σ)、メッセージm、および鍵Kを入力とし、前述したPKFE2.encの暗号文生成プログラムη’を生成する。難読化部635は、暗号文生成プログラムη’を入力とし、この暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得てメモリ131に格納する。通信部136は、当該難読化プログラムctを復号装置64に送信する。
≪復号アルゴリズム(FE2.dec(skf2,ct))の実行処理≫
復号装置64の通信部144には、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctが入力され、これらはメモリ141に格納される。実行部642は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctを入力とし、秘密鍵skf2から取り出したi∈[q]について暗号文ctを得てメモリ141に格納する。難読化プログラムctにiを入力することで暗号文ctが得られる。復号部643は、秘密鍵skf2=(skf2 (i),i)から取り出した秘密鍵skf2 (i)および得られた暗号文ctを入力としてFE1.decを実行し、秘密鍵skf2 (i)で暗号文ctを復号して復元値m’を得て出力する。
[第4実施形態]
図面を用いて本発明の第4実施形態を説明する。本形態は、前述した<q−key結託簡素性秘密鍵関数型暗号(II)>の具体例である。以下では、既に説明した事項について同じ参照番号を引用して説明を省略する。
<構成>
図2に例示するように、本形態の暗号システム7は、セットアップ装置71、鍵生成装置72、暗号化装置73、および復号装置64を有する。セットアップ装置71は、例えば、メモリ111、設定部612、マスター鍵生成部714、および通信部113を有する。鍵生成装置72は、例えば、メモリ121、マスター鍵生成部622、秘密鍵生成部623、および通信部124を有する。暗号化装置73は、例えば、メモリ131、設定部632、プログラム生成部734、難読化部735、および通信部136を有する。復号装置64は、例えば、メモリ141、実行部642、復号部643、および通信部144を有する。
セットアップ装置71、鍵生成装置72、暗号化装置73、および復号装置64は、入力情報、演算過程で保存する必要がある情報、演算結果の情報をメモリ111,121,131,141にそれぞれ格納し、必要に応じて読み出して利用する。また、セットアップ装置71、鍵生成装置72、暗号化装置73、および復号装置64は、それぞれ通信部113,124,136,144によって情報の送受信を行う。各装置から送信された情報は、例えばネットワークを通じて他の装置に送信される。セットアップ装置71、鍵生成装置72、暗号化装置73、および復号装置64のそれぞれは、例えば、前述のコンピュータが所定のプログラムを実行することで構成される装置である。図2では、セットアップ装置71、鍵生成装置72、暗号化装置73、および復号装置64を1個ずつ例示するが、これらの少なくとも一部の装置が複数個存在していてもよい。
<処理>
次に本形態の処理を説明する。
≪セットアップアルゴリズム(SKFE2.setup(1λ))の実行処理≫
セットアップ装置71の設定部612は、λを入力とし、擬似ランダム関数F’の鍵Kとランダムビット列ρ∈{0,1}λを得てメモリ111に格納する。鍵Kおよびランダムビット列ρは、例えば、ランダムに選択される。マスター鍵生成部714は、鍵Kおよびランダムビット列ρを入力とし、マスター秘密鍵msk2=(K,ρ)を得てメモリ111に格納する。通信部113は、マスター秘密鍵msk2を鍵生成装置72および暗号化装置73に送信する。
≪鍵生成アルゴリズム(FE2.keygen(msk2,f2,i))の実行処理≫
鍵生成装置72の通信部124には、復号装置64から送信されたいずれかのi∈[q]および所定の関数f2、ならびにマスター秘密鍵msk2=(K,ρ)が入力される。これらはメモリ121に格納される。マスター鍵生成部722は、鍵Kおよびインデックス(ρ,i)を入力として擬似乱数F’(K,(ρ,i))を得てメモリ121に格納する。さらにマスター鍵生成部722は、λおよび擬似乱数F’(K,(ρ,i))を入力とし、SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得てメモリ121に格納する。秘密鍵生成部623は、マスター秘密鍵msk1および関数f2を入力とし、E1.keygenを実行してマスター秘密鍵msk1および関数f2に対する秘密鍵skf2 (i)を生成してメモリ121に格納する。さらに秘密鍵生成部623は、skf2 (i)およびiを入力として関数f2に対する秘密鍵skf2=(skf2 (i),i)を得てメモリ121に格納する。通信部124は、秘密鍵skf2を復号装置64に送信する。
≪暗号化アルゴリズム(SKFE2.enc(msk2,m))の実行処理≫
暗号化装置73の通信部136にはマスター秘密鍵msk2=(K,ρ)が入力され、このマスター公開鍵mpk2はメモリ131に格納される。設定部632は、穴開け可能擬似ランダム関数Fの鍵Kを得てメモリ131に格納する。例えば、鍵Kはランダムに生成される。プログラム生成部734は、鍵K、ランダムビット列ρ、鍵K、およびメッセージmを入力として、前述したSKFE2.encの暗号文生成プログラムμ’を得てメモリ131に格納する。難読化部735は、暗号文生成プログラムμ’を入力とし、暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得てメモリ131に格納する。通信部136は、当該難読化プログラムctを復号装置64に送信する。
≪復号アルゴリズム(FE2.dec(skf2,ct))の実行処理≫
本形態の復号アルゴリズム(FE2.dec(skf2,ct))の実行処理は、暗号化装置63から送信された難読化プログラムctが通信部144に入力されることに代えて、暗号化装置73から送信された難読化プログラムctが通信部144に入力されること、および、難読化プログラムctがsxiO(η’)であることに代えて、難読化プログラムctがsxiO(μ’)であることを除き、第3実施形態のものと同じである。
[第5実施形態]
図面を用いて本発明の第5実施形態を説明する。
本形態は、前述した<1−key完全簡素性公開鍵関数型暗号>の具体例である。
<構成>
図3に例示するように、本形態の暗号システム3は、セットアップ装置31、鍵生成装置32、暗号化装置33、および復号装置34を有する。セットアップ装置31は、例えば、メモリ311、マスター鍵生成部312、および通信部313を有する。鍵生成装32は、例えば、メモリ321、秘密鍵生成部322、および通信部323を有する。暗号化装置33は、例えば、メモリ331、暗号化部332、および通信部333を有する。復号装置34は、例えば、メモリ341、復号部342、および通信部343を有する。
セットアップ装置31、鍵生成装置32、暗号化装置33、および復号装置34は、入力情報、演算過程で保存する必要がある情報、演算結果の情報をメモリ311,321,331,341にそれぞれ格納し、必要に応じて読み出して利用する。また、セットアップ装置31、鍵生成装置32、暗号化装置33、および復号装置34は、それぞれ通信部313,323,333,344によって情報の送受信を行う。各装置から送信された情報は、例えばネットワークを通じて他の装置に送信される。セットアップ装置31、鍵生成装置32、暗号化装置33、および復号装置34のそれぞれは、例えば、前述のコンピュータが所定のプログラムを実行することで構成される装置である。図3では、セットアップ装置31、鍵生成装置32、暗号化装置33、および復号装置34を1個ずつ例示するが、これらの少なくとも一部の装置が複数個存在していてもよい。
<処理>
次に本形態の処理を説明する。本形態では、第1実施形態または第3実施形態の何れか一方のq−key結託簡素性公開鍵関数型暗号(第2関数型暗号)を利用し、非特許文献4に記載された方法に従って、以下に示す1−key完全簡素性公開鍵関数型暗号(第3関数型暗号)の各アルゴリズムを実行する。
≪セットアップアルゴリズム(PKFE3.setup)の実行処理≫
セットアップ装置31のマスター鍵生成部312は、第1実施形態または第3実施形態のセットアップアルゴリズム(PKFE2.setup)を用い、非特許文献4に記載された1−key完全簡素性公開鍵関数型暗号(第3関数型暗号)のセットアップアルゴリズム(PKFE3.setup)を実行し、マスター公開鍵mpk3およびマスター秘密鍵msk3を生成してメモリ311に格納する。通信部313は、マスター公開鍵mpk3を暗号化装置33に送信し、マスター秘密鍵msk3を鍵生成装置32に送信する。
≪鍵生成アルゴリズム(FE3.keygen)の実行処理≫
鍵生成装置32の通信部323にはマスター秘密鍵msk3および復号装置34から送信されたiおよび所定の関数f3が入力され、これらはメモリ321に格納される。秘密鍵生成部322は、マスター秘密鍵msk3および所定の関数f3を入力とし、第1実施形態または第3実施形態の鍵生成アルゴリズム(FE2.keygen)を用い、非特許文献4に記載された1−key完全簡素性公開鍵関数型暗号の鍵生成アルゴリズム(FE3.keygen)を実行し、関数f3に対する秘密鍵skf3を生成してメモリ321に格納する。通信部323は、秘密鍵skf3を復号装置34に送信する。
≪暗号化アルゴリズム(PKFE3.enc)の実行処理≫
暗号化装置33の通信部333にはマスター公開鍵mpk3が入力され、これはメモリ331に格納される。暗号化部332は、マスター公開鍵mpk3およびメッセージmを入力とし、第1実施形態または第3実施形態の暗号化アルゴリズム(PKFE2.enc)を用い、非特許文献4に記載された1−key完全簡素性公開鍵関数型暗号の暗号化アルゴリズム(PKFE3.enc)を実行し、メッセージmの暗号文c3を生成してメモリ331に格納する。通信部333は、暗号文c3を復号装置34に送信する。
≪復号アルゴリズム(FE3.dec)の実行処理≫
復号装置34の通信部343には秘密鍵skf3および暗号文c3が入力され、これらはメモリ341に格納される。復号部342は、秘密鍵skf3および暗号文c3を入力とし、第1実施形態または第3実施形態の復号アルゴリズムFE2.decを用い、非特許文献4に記載された1−key完全簡素性公開鍵関数型暗号の暗号化アルゴリズム(FE3.dec)を実行し、メッセージmの関数値f3(m)を生成して出力する。
[第6実施形態]
図面を用いて本発明の第6実施形態を説明する。
本形態は、前述した<1−key完全簡素性秘密鍵関数型暗号>の具体例である。
<構成>
図3に例示するように、本形態の暗号システム4は、セットアップ装置41、鍵生成装置32、暗号化装置43、および復号装置34を有する。セットアップ装置41は、例えば、メモリ311、マスター鍵生成部412、および通信部313を有する。暗号化装置43は、例えば、メモリ331、暗号化部332、および通信部333を有する。
セットアップ装置41および暗号化装置43は、入力情報、演算過程で保存する必要がある情報、演算結果の情報をメモリ311および331にそれぞれ格納し、必要に応じて読み出して利用する。また、セットアップ装置41および暗号化装置43は、それぞれ、通信部313および333によって情報の送受信を行う。各装置から送信された情報は、例えばネットワークを通じて他の装置に送信される。セットアップ装置41および暗号化装置43は、前述のコンピュータが所定のプログラムを実行することで構成される装置である。図3では、1個のセットアップ装置41および暗号化装置43を例示するが、セットアップ装置41および暗号化装置43の少なくとも一方が複数個存在していてもよい。
<処理>
次に本形態の処理を説明する。本形態では、第2実施形態または第4実施形態の何れか一方のq−key結託簡素性秘密鍵関数型暗号(第2関数型暗号)を利用し、非特許文献4に記載された方法に従って、以下に示す1−key完全簡素性秘密鍵関数型暗号(第3関数型暗号)の各アルゴリズムを実行する。
≪セットアップアルゴリズム(SKFE3.setup)の実行処理≫
セットアップ装置41のマスター鍵生成部412は、第2実施形態または第4実施形態のセットアップアルゴリズム(SKFE2.setup)を用い、非特許文献4に記載された1−key完全簡素性秘密鍵関数型暗号(第3関数型暗号)のセットアップアルゴリズム(SKFE3.setup)を実行し、マスター秘密鍵msk3を生成してメモリ311に格納する。通信部313は、マスター秘密鍵msk3を鍵生成装置32および暗号化装置43に送信する。
≪鍵生成アルゴリズム(FE3.keygen)の実行処理≫
本形態の鍵生成アルゴリズム(FE3.keygen)の実行処理は、第5実施形態のものと同じである。
≪暗号化アルゴリズム(SKFE3.enc)の実行処理≫
暗号化装置43の通信部333にはマスター秘密鍵msk3が入力され、これはメモリ331に格納される。暗号化部332は、マスター秘密鍵msk3およびメッセージmを入力とし、第2実施形態または第4実施形態の暗号化アルゴリズム(SKFE2.enc)を用い、非特許文献4に記載された1−key完全簡素性秘密鍵関数型暗号の暗号化アルゴリズム(SKFE3.enc)を実行し、メッセージmの暗号文c3を生成してメモリ331に格納する。通信部333は、暗号文c3を復号装置34に送信する。
≪復号アルゴリズム(FE3.dec)の実行処理≫
本形態の復号アルゴリズムの実行処理は、暗号化装置33から送信された暗号文c3が通信部344に入力されることに代えて、暗号化装置43から送信された暗号文c3が通信部343に入力されること、第1実施形態または第3実施形態の復号アルゴリズムFE2.decに代えて、第2実施形態または第4実施形態の復号アルゴリズムFE2.decが用いられることを除き、第5実施形態のものと同じである。
[第7実施形態]
図面を用いて本発明の第7実施形態を説明する。
本形態では、第5実施形態の1−key完全簡素性公開鍵関数型暗号を用い、非特許文献2,3に記載された識別不可能性難読化を行う。
<構成>
図4に例示するように、本形態の暗号システム5は、セットアップ装置31、鍵生成装置32、難読化装置53、および実行装置54を有する。難読化装置53は、メモリ431、暗号化装置33、難読化部532、および通信部533を有する。実行装置54は、メモリ541、復号装置34、実行部542、および通信部543を有する。
難読化装置53および実行装置54は、入力情報、演算過程で保存する必要がある情報、演算結果の情報をメモリ531および541にそれぞれ格納し、必要に応じて読み出して利用する。また、難読化装置53および実行装置54は、それぞれ通信部533および543によって情報の送受信を行う。各装置から送信された情報は、例えばネットワークを通じて他の装置に送信される。難読化装置53および実行装置54は、それぞれ前述のコンピュータが所定のプログラムを実行することで構成される装置である。図4では、1個の難読化装置53および実行装置54を例示するが、これらの少なくとも一方が複数個存在してもよい。
<処理>
次に本形態の処理を説明する。
≪セットアップアルゴリズム(PKFE3.setup)の実行処理≫
本形態のセットアップアルゴリズム(PKFE3.setup)の実行処理は、第5実施形態のものと同じである。
≪鍵生成アルゴリズム(FE3.keygen)の実行処理≫
本形態の鍵生成アルゴリズム(FE3.keygen)は、第5実施形態のものと同じである。
≪プログラムの難読化の実行処理≫
難読化装置53の難読化部532は、難読化対象のプログラムproを入力とし、暗号化アルゴリズム(PKFE3.enc)を実行する暗号化装置33を用い、非特許文献2または3に記載された識別不可能性難読化によってプログラムproを難読化し(すなわち、特許文献2または3に記載された識別不可能性難読化の過程で実行される暗号化アルゴリズムとしてPKFE3.encを用いてプログラムproを難読化し)、難読化プログラムiO(pro)を得てメモリ531に格納する。通信部533は、難読化プログラムiO(pro)を実行装置54に送信する。
≪難読化プログラムの実行処理≫
実行装置54の通信部543には難読化プログラムiO(pro)が入力され、これはメモリ541に格納される。実行部542は、難読化プログラムiO(pro)を入力とし、復号アルゴリズム(FE3.dec)を実行する復号装置34を用い、非特許文献2または3に記載された難読化プログラムiO(pro)の実行処理を行い(すなわち、特許文献2または3に記載された難読化プログラムの実行処理の過程で実行される復号アルゴリズムとしてFE3.decを用いて難読化プログラムiO(pro)の実行処理を行い)、実行結果を得て出力する。
[変形例等]
なお、本発明は上述の実施の形態に限定されるものではない。例えば、各装置がネットワークを通じて情報をやり取りするのではなく、少なくとも一部の組の装置が可搬型記録媒体を介して情報をやり取りしてもよい。或いは、少なくとも一部の組の装置が非可搬型の記録媒体を介して情報をやり取りしてもよい。これらの装置の一部からなる組み合わせが、同一の装置であってもよい。例えば、難読化装置53が、セットアップアルゴリズム(PKFE3.setup)および鍵生成アルゴリズム(FE3.keygen)を実行してもよい。この場合には、難読化装置53から実行装置54に送られる難読化プログラムiO(pro)に秘密鍵skf2が含まれる。また、実行部542が難読化プログラムiO(pro)と入力値xとを入力として、入力値xに対する難読化プログラムiO(pro)の実行処理を行ってもよい。
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
上記実施形態では、コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されたが、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
1〜5 暗号システム

Claims (23)

  1. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    (1)擬似ランダム関数F’の鍵Kとランダムビット列ρを得、(2)入力されたi∈[q]について擬似乱数r’=F’(K,(ρ,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数r’でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成するステップと、前記マスター公開鍵mpk1を出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K,ρ)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupを実行するセットアップ装置と、
    いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力とし、前記PKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1を得、前記FE1.keygenを実行して前記マスター秘密鍵msk1および前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
    (1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行して前記マスター公開鍵mpk1を得るステップと、入力されたi∈[q]について擬似乱数r=F(K,i)を生成するステップと、前記マスター公開鍵mpk1、前記メッセージm、および前記擬似乱数rを入力として前記PKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムη’を得、(3)前記暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encを実行する暗号化装置と、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得、前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号装置と、
    を有する暗号システム。
  2. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    各i∈[q]について前記PKFE1.setupを実行してマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成し、マスター公開鍵mpk2=(mpk1,…,mpk1)およびマスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupを実行するセットアップ装置と、
    いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
    入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター公開鍵mpk1、前記メッセージm、および前記擬似乱数rを入力として前記PKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムηを得、前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encを実行する暗号化装置と、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得、前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号装置と、
    を有する暗号システム。
  3. qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    擬似ランダム関数F’の鍵Kとランダムビット列ρを得、マスター秘密鍵msk2=(K,ρ)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupを実行するセットアップ装置と、
    いずれかのi∈[q]、前記マスター秘密鍵msk2=(K,ρ)、および所定の関数f2を入力とし、前記SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得、前記FE1.keygenを実行して前記マスター秘密鍵msk1および前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
    (1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)前記マスター秘密鍵msk2=(K,ρ)およびi∈[q]を入力とし、入力されたi∈[q]について前記SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得るステップと、擬似乱数r=F(K,i)を生成するステップと、前記マスター秘密鍵msk1、前記メッセージm、および前記擬似乱数rを入力として前記SKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムμ’を得、(3)前記暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encを実行する暗号化装置と、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得、前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号装置と、
    を有する暗号システム。
  4. qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    各i∈[q]について前記SKFE1.setupを実行してマスター秘密鍵msk1を生成し、マスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupを実行するセットアップ装置と、
    いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
    入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター秘密鍵msk1、前記メッセージm、および前記擬似乱数rを入力として前記SKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムμを得、前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encを実行する暗号化装置と、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得、前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号装置と、
    を有する暗号システム。
  5. 請求項1から4のいずれかの暗号システムであって、
    前記第1関数型暗号が1−key関数型暗号である、暗号システム。
  6. 請求項1から5のいずれかの暗号システムであって、
    前記難読化プログラムctは、前記暗号文生成プログラムηをγ−SXIOで識別不可能性難読化したものである、暗号システム。
  7. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、 擬似ランダム関数F’の鍵Kとランダムビット列ρを得る設定部と、
    入力されたi∈[q]について擬似乱数r’=F’(K,(ρ,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数r’でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成するステップと、前記マスター公開鍵mpk1を出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成するプログラム生成部と、
    前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K,ρ)をマスター秘密鍵msk2として得るマスター鍵生成部と、
    を有するセットアップ装置。
  8. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、
    (1)擬似ランダム関数F’の鍵Kとランダムビット列ρを得、(2)入力されたi∈[q]について擬似乱数r’=F’(K,(ρ,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数r’でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成するステップと、前記マスター公開鍵mpk1を出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K,ρ)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
    いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力とし、前記PKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1を得るマスター鍵生成部と、
    前記FE1.keygenを実行して前記マスター秘密鍵msk1および前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る秘密鍵生成部と、
    を有する鍵生成装置。
  9. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、
    (1)擬似ランダム関数F’の鍵Kとランダムビット列ρを得、(2)入力されたi∈[q]について擬似乱数r’=F’(K,(ρ,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数r’でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成するステップと、前記マスター公開鍵mpk1を出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K,ρ)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
    穴開け可能擬似ランダム関数Fの鍵Kを得る設定部と、
    入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行して前記マスター公開鍵mpk1を得るステップと、入力されたi∈[q]について擬似乱数r=F(K,i)を生成するステップと、前記マスター公開鍵mpk1、前記メッセージm、および前記擬似乱数rを入力として前記PKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムη’を得るプログラム生成部と、
    前記暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得る難読化部と、
    を有する暗号化装置。
  10. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    (1)擬似ランダム関数F’の鍵Kとランダムビット列ρを得、(2)入力されたi∈[q]について擬似乱数r’=F’(K,(ρ,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数r’でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成するステップと、前記マスター公開鍵mpk1を出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K,ρ)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
    いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力とし、前記PKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター公開鍵mpk1およびマスター秘密鍵msk1を得、前記FE1.keygenを実行して前記マスター秘密鍵msk1および前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenが実行されており、
    (1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行して前記マスター公開鍵mpk1を得るステップと、入力されたi∈[q]について擬似乱数r=F(K,i)を生成するステップと、前記マスター公開鍵mpk1、前記メッセージm、および前記擬似乱数rを入力として前記PKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムη’を得、(3)前記暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encが実行されており、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得る実行部と、
    前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る復号部と、
    を有する復号装置。
  11. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、
    各i∈[q]について前記PKFE1.setupを実行してマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成し、マスター公開鍵mpk2=(mpk1,…,mpk1)およびマスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
    入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター公開鍵mpk1、前記メッセージm、および前記擬似乱数rを入力として前記PKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムηを得るプログラム生成部と、
    前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encを実行する難読化部と、
    を有する暗号化装置。
  12. qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    各i∈[q]について前記PKFE1.setupを実行してマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成し、マスター公開鍵mpk2=(mpk1,…,mpk1)およびマスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupと、
    いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenと、
    入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター公開鍵mpk1、前記メッセージm、および前記擬似乱数rを入力として前記PKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムηを得、前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encと、が実行されており、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、いずれかのi∈[q]について前記暗号文ctを得る暗号文生成部と、
    前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号部と、
    を有する復号装置。
  13. qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、
    擬似ランダム関数F’の鍵Kとランダムビット列ρを得、マスター秘密鍵msk2=(K,ρ)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupが実行されており、
    いずれかのi∈[q]、前記マスター秘密鍵msk2=(K,ρ)、および所定の関数f2を入力とし、前記SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得るマスター鍵生成部と、
    前記FE1.keygenを実行して前記マスター秘密鍵msk1および前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る秘密鍵生成部と、
    を有する鍵生成装置。
  14. qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、 擬似ランダム関数F’の鍵Kとランダムビット列ρを得、マスター秘密鍵msk2=(K,ρ)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupが実行されており、
    穴開け可能擬似ランダム関数Fの鍵Kを得る設定部と、
    前記マスター秘密鍵msk2=(K,ρ)およびi∈[q]を入力とし、入力されたi∈[q]について前記SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得るステップと、擬似乱数r=F(K,i)を生成するステップと、前記マスター秘密鍵msk1、前記メッセージm、および前記擬似乱数rを入力として前記SKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムμ’を得るプログラム生成部と、
    前記暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得る難読化部と、
    を有する暗号化装置。
  15. qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    擬似ランダム関数F’の鍵Kとランダムビット列ρを得、マスター秘密鍵msk2=(K,ρ)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupと、
    いずれかのi∈[q]、前記マスター秘密鍵msk2=(K,ρ)、および所定の関数f2を入力とし、前記SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得、前記FE1.keygenを実行して前記マスター秘密鍵msk1および前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenと、
    (1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)前記マスター秘密鍵msk2=(K,ρ)およびi∈[q]を入力とし、入力されたi∈[q]について前記SKFE1.setupを実行して疑似乱数F’(K,(ρ,i))でランダム化されたマスター秘密鍵msk1を得るステップと、擬似乱数r=F(K,i)を生成するステップと、前記マスター秘密鍵msk1、前記メッセージm、および前記擬似乱数rを入力として前記SKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムμ’を得、(3)前記暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encと、が実行されており、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得る実行部と、
    前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る復号部と、
    を有する復号装置。
  16. qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、
    各i∈[q]について前記SKFE1.setupを実行してマスター秘密鍵msk1を生成し、マスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupが実行されており、
    入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター秘密鍵msk1、前記メッセージm、および前記擬似乱数rを入力として前記SKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムμを得るプログラム生成部と、
    前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encを実行する難読化部と、
    を有する暗号化装置。
  17. qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、
    各i∈[q]について前記SKFE1.setupを実行してマスター秘密鍵msk1を生成し、マスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupと、
    いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenと、
    入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター秘密鍵msk1、前記メッセージm、および前記擬似乱数rを入力として前記SKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムμを得、前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encと、が実行されており、
    前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得る暗号文生成部と、
    前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号部と、
    を有する復号装置。
  18. qが1以上の整数であり、rが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、前記第1関数型暗号は公開鍵暗号を用いて構成されるr−key公開鍵関数型暗号であり、
    PKFE2.setupが、各i∈[q]について前記PKFE1.setupを実行してマスター公開鍵mpk1およびマスター秘密鍵msk1の組を生成し、マスター公開鍵mpk2=(mpk1,…,mpk1)およびマスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムであり、FE2.keygenが、いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムであり、PKFE2.encが、入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター公開鍵mpk1、前記メッセージm、および前記擬似乱数rを入力として前記PKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムηを得、前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムであり、FE2.decが、前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得、前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムであり、
    前記PKFE2.setupを用いて1−key完全簡素性を持つ第3関数型暗号のセットアップアルゴリズムPKFE3.setupを実行し、マスター公開鍵mpk3およびマスター秘密鍵msk3を生成するセットアップ装置と、
    前記マスター秘密鍵msk3および所定の関数f3を入力とし、前記FE2.keygenを用いて前記第3関数型暗号の鍵生成アルゴリズムFE3.keygenを実行し、前記関数f3に対する秘密鍵skf3を生成する鍵生成装置と、
    前記マスター公開鍵mpk3および前記メッセージmを入力とし、前記PKFE2.encを用いて前記第3関数型暗号の暗号化アルゴリズムPKFE3.encを実行し、前記メッセージmの暗号文c3を生成する暗号化装置と、
    前記秘密鍵skf3および前記暗号文c3を入力とし、前記FE2.decを用いて前記第3関数型暗号の復号アルゴリズムFE3.decを実行し、前記メッセージmの関数値f3(m)を生成する復号装置と、
    を有する暗号システム。
  19. qが1以上の整数であり、rが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、FE1.decが、前記秘密鍵skf1および前記暗号文c1を入力とし、前記メッセージmの関数値f1(m)を生成する前記第1関数型暗号の復号アルゴリズムであり、前記第1関数型暗号は秘密鍵暗号を用いて構成されるr−key秘密鍵関数型暗号であり、
    SKFE2.setupが、各i∈[q]について前記SKFE1.setupを実行してマスター秘密鍵msk1を生成し、マスター秘密鍵msk2=(msk1,…,msk1)を得る第2関数型暗号のセットアップアルゴリズムであり、FE2.keygenが、いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムであり、SKFE2.encが、入力されたi∈[q]について擬似乱数rを生成するステップと、前記マスター秘密鍵spk1、前記メッセージm、および前記擬似乱数rを入力として前記SKFE1.encを実行して前記擬似乱数rでランダム化された暗号文ctを得るステップと、を実行する暗号文生成プログラムμを得、前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムであり、FE2.decが、前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctを得、前記秘密鍵skf2 (i)および前記暗号文ctを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムであり、
    前記SKFE2.setupを用いて1−key完全簡素性を持つ第3関数型暗号のセットアップアルゴリズムSKFE3.setupを実行し、マスター秘密鍵msk3を生成するセットアップ装置と、
    前記マスター秘密鍵msk3および所定の関数f3を入力とし、前記FE2.keygenを用いて前記第3関数型暗号の鍵生成アルゴリズムFE3.keygenを実行し、前記関数f3に対する秘密鍵skf3を生成する鍵生成装置と、
    前記マスター秘密鍵msk3および前記メッセージmを入力とし、前記SKFE2.encを用いて前記第3関数型暗号の暗号化アルゴリズムPKFE3.encを実行し、前記メッセージmの暗号文c3を生成する暗号化装置と、
    前記秘密鍵skf3および前記暗号文c3を入力とし、前記FE2.decを用いて前記第3関数型暗号の復号アルゴリズムFE3.decを実行し、前記メッセージmの関数値f3(m)を生成する復号装置と、
    を有する暗号システム。
  20. 請求項7のセットアップ装置の機能をコンピュータに実行させるためのプログラム。
  21. 請求項8または13の鍵生成装置の機能をコンピュータに実行させるためのプログラム。
  22. 請求項9、11、14、または16の暗号化装置の機能をコンピュータに実行させるためのプログラム。
  23. 請求項10,12、15または17の復号装置の機能をコンピュータに実行させるためのプログラム。
JP2017001751A 2017-01-10 2017-01-10 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム Active JP6649288B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017001751A JP6649288B2 (ja) 2017-01-10 2017-01-10 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017001751A JP6649288B2 (ja) 2017-01-10 2017-01-10 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム

Publications (2)

Publication Number Publication Date
JP2018112612A JP2018112612A (ja) 2018-07-19
JP6649288B2 true JP6649288B2 (ja) 2020-02-19

Family

ID=62912080

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017001751A Active JP6649288B2 (ja) 2017-01-10 2017-01-10 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム

Country Status (1)

Country Link
JP (1) JP6649288B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023238230A1 (ja) * 2022-06-07 2023-12-14 日本電信電話株式会社 暗号システム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4802274B2 (ja) * 2009-10-30 2011-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション メッセージ送信および受信方法
JP5400740B2 (ja) * 2010-10-05 2014-01-29 日本電信電話株式会社 検索可能暗号システム、検索可能暗号方法、ストレージ装置、検索装置、及び登録者装置
US10140460B2 (en) * 2013-12-11 2018-11-27 Mitsubishi Electric Corporation File storage system and user terminal
KR102000861B1 (ko) * 2015-01-27 2019-07-16 애리스 엔터프라이지즈 엘엘씨 스트리밍 미디어 및 다른 데이터 흐름들의 보호를 위한 난독화

Also Published As

Publication number Publication date
JP2018112612A (ja) 2018-07-19

Similar Documents

Publication Publication Date Title
Abd El-Latif et al. Secure data encryption based on quantum walks for 5G Internet of Things scenario
Huang et al. Achieving accountable and efficient data sharing in industrial internet of things
JP4981072B2 (ja) 復号可能かつ検索可能な暗号化のための方法およびシステム
JP2019531673A (ja) データ処理方法および装置
JP4979068B2 (ja) 秘匿関数計算方法及び装置、並びにプログラム
Jayapandian et al. Secure and efficient online data storage and sharing over cloud environment using probabilistic with homomorphic encryption
CN111510281A (zh) 一种同态加密方法及装置
JP2015184594A (ja) 暗号文処理装置、暗号文処理方法、暗号文処理プログラムおよび情報処理装置
WO2018043573A1 (ja) 鍵交換方法、鍵交換システム
Vegh et al. Enhancing security in cyber-physical systems through cryptographic and steganographic techniques
JP5578754B2 (ja) 暗号変換方法および装置、並びにプログラム
WO2014030706A1 (ja) 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム
JP6368047B2 (ja) 鍵交換方法、鍵交換システム、鍵配送装置、代表通信装置、一般通信装置、およびプログラム
JP6649289B2 (ja) 暗号システム、鍵生成装置、暗号化装置、復号装置、およびプログラム
JP6259402B2 (ja) 鍵配送管理装置、端末装置、鍵配送システム、およびプログラム
JP6649288B2 (ja) 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム
JP7384216B2 (ja) 電子透かしシステム、電子透かし方法及びプログラム
JP7119605B2 (ja) 暗号文変換システム、暗号文変換方法、及びプログラム
Dharminder et al. Post‐Quantum Secure Identity‐Based Encryption Scheme using Random Integer Lattices for IoT‐enabled AI Applications
JP6189788B2 (ja) 鍵生成装置、再暗号化装置、およびプログラム
Jahan et al. An algorithm to secure data for cloud storage
Mashhadi Share secrets stage by stage with homogeneous linear feedback shift register in the standard model
Krzywiecki et al. Coalition resistant anonymous broadcast encryption scheme based on PUF
JP5297918B2 (ja) 暗号化数値二進変換システム及び方法とプログラム
Zhang et al. Strongly average‐case secure obfuscation: achieving input privacy and circuit obscurity

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191225

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: 20200114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200116

R150 Certificate of patent or registration of utility model

Ref document number: 6649288

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150