JP6649288B2 - 暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム - Google Patents
暗号システム、セットアップ装置、鍵生成装置、暗号化装置、復号装置、およびプログラム Download PDFInfo
- 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
Links
Images
Description
本発明はこのような点に鑑みてなされたものであり、結託簡素性を持つ関数型暗号を提供することを目的とする。
[前提]
まず実施形態の前提事項を説明する。
「難読化(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,サイズが等しい任意のプログラム対(回路対)C0,C1∈Cλで任意の入力xについてC0(x)=C1(x)が成立するものに対し、以下を満たすことを意味する。
Pr[D(iO(C0))=1]-Pr[D(iO(C1))=1]≦δ(λ)
すなわち、iOが識別不可能性を満たすとは、iO(C0)の判別結果D(iO(C0))(iO(C0)がC0を難読化して得られたものなのかC1を難読化して得られたものなのかの判別結果)が1となる(例えば、iO(C0)がC1を難読化して得られたものであると判別される)確率と、iO(C1)の判別結果D(iO(C1))が1となる(例えば、iO(C1)がC1を難読化して得られたものであると判別される)確率との違いが無視できることを意味する。
セットアップアルゴリズム(PKFE.setup):鍵の長さ(ビット長)を表す任意のセキュリティパラメータλ∈Nを入力とし、マスター公開鍵mpk(システムパラメータ)とマスター秘密鍵mskを生成する。
(mpk, msk) ← PKFE.setup(1λ)
鍵生成アルゴリズム(FE.keygen):マスター秘密鍵mskおよび関数fを入力とし、関数fに対する秘密鍵skfを生成する。関数fは任意の関数でよく、例えば、f(m)=mまたはf(m)=⊥を満たす関数である。ただし、⊥はエラーを表す。
skf ← FE.keygen(msk,f)
暗号化アルゴリズム(PKFE.enc):マスター公開鍵mpkとメッセージmを入力とし、暗号文cを生成する。
c ← PKFE.enc(mpk, m)
復号アルゴリズム(FE.dec):関数fに対する秘密鍵skfと暗号文cを入力とし、メッセージmの関数値f(m)を生成する。
f(m) ← FE.dec(skf,c)
セットアップアルゴリズム(SKFE.setup):鍵の長さ(ビット長)を表す任意のセキュリティパラメータλ∈Nを入力とし、マスター秘密鍵mskを生成する。
msk ← SKFE.setup(1λ)
鍵生成アルゴリズム(FE.keygen):マスター秘密鍵mskおよび関数fを入力とし、関数fに対する秘密鍵skfを生成する。関数fは任意の関数でよく、例えば、f(m)=mまたはf(m)=⊥を満たす関数である。ただし、⊥はエラーを表す。
skf ← FE.keygen(msk,f)
暗号化アルゴリズム(SKFE.enc):マスター秘密鍵mskとメッセージmを入力とし、暗号文cを生成する。
c ← SKFE.enc(msk, m)
復号アルゴリズム(FE.dec):関数fに対する秘密鍵skfと暗号文cを入力とし、メッセージmの関数値f(m)を生成する。
f(m) ← FE.dec(skf,c)
「bounded-key方式」とは、鍵生成アルゴリズムによる鍵の発行回数が事前(セットアップアルゴリズムの実行時)に定められた回数(複数回数)以下の場合には安全性が保たれるが、鍵の発行回数が事前に定められた回数を超えた場合には安全性が保たれるとは限らない暗号方式をいう。特に、鍵生成アルゴリズムによる鍵の発行回数が事前に定められたq(ただし、q≧2)以下の場合安全性が保たれるが、鍵の発行回数がqを超えた場合には安全性が保たれるとは限らない暗号方式を「q-Key方式」という。
「unbounded-key方式」とは、鍵生成アルゴリズムによる鍵の発行回数にかかわらず、安全性が保たれる暗号方式をいう。
|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-ε
|iO|=poly(λ,|C|)・2n(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λ)は、λを入力として各i∈[q]についてPKFE1.setupを実行してマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成する。すなわち、PKFE2.setupは、q対の(mpk1i,msk1i)(ただし、i∈[q]であり、[q]は{1,2,…,q}を意味する)を生成する。
(mpk1i,msk1i)←PKFE1.setup(1λ) for i∈[q]
ただし、λは正整数のセキュリティパラメータであり、PKFE1.setupは、各i∈[q]についてランダム化した(mpk1i,msk1i)を得る。PKFE2.setupは、各i∈[q]について得られた(mpk1i,msk1i)から、マスター公開鍵(システムパラメータ)mpk2=(mpk11,…,mpk1q)およびマスター秘密鍵msk2=(msk11,…,msk1q)を得て出力する。
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)は、穴開け可能擬似ランダム関数Fの鍵Kを生成し、暗号文生成プログラムηを生成し、当該暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る。ただし、PKFE2.encの暗号文生成プログラムηは、入力されたi∈[q]について擬似乱数riを生成するステップと、マスター公開鍵mpk1i、メッセージm、および擬似乱数riを入力としてPKFE1.encを実行して擬似乱数riでランダム化された暗号文cti(ただし、ctiはメッセージ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を用いてもよい。
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)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムct=sxiO(η)を入力とし、秘密鍵skf2から取り出したi∈[q]をct=sxiO(η)に入力してct=sxiO(η)を実行することで暗号文ctiを得る。難読化の「機能性」により、難読化プログラムctにiを入力することで、暗号文生成プログラムηのiに対する出力である暗号文ctiが得られる。さらにFE2.dec(skf2,ct)は、秘密鍵skf2から取りだした秘密鍵skf2 (i)および得られた暗号文ctiを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
正しく復号が行われた場合にはm’=f2(m)となる。
q−key結託簡素性公開鍵関数型暗号の他の構成を示す。1−key公開鍵関数型暗号である第1関数型暗号とγ−SXIOとを用い、以下のようにq−key結託簡素性公開鍵関数型暗号である第2関数型暗号(PKFE2.setup, FE2.keygen, PKFE2.enc, FE2.dec)を構成する。
PKFE2.setup(1λ)は、まず、λを入力として擬似ランダム関数F’の鍵K0とランダムビット列ρ0∈{0,1}λを得る。鍵K0およびランダムビット列ρ0は、例えば、ランダムに選択される。次に、PKFE2.setup(1λ)は、マスター公開鍵生成プログラムΣを生成する。ただし、PKFE2.setupのマスター公開鍵生成プログラムΣは、入力されたi∈[q]について擬似乱数ri’=F’(K0,(ρ0,i))を得るステップと、PKFE1.setupを実行して擬似乱数ri’でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成するステップと、マスター公開鍵mpk1iを出力するステップと、を実行するプログラムである。なお、擬似ランダム関数F’は、鍵K0およびインデックス(ρ0,i)を入力として、それらに対応する擬似乱数F’(K0,(ρ0,i))を出力する。インデックス(ρ0,i)は(ρ0,i)から一義的に決まり、例えばρ0とiとのビット結合値である。さらに、PKFE2.setup(1λ)は、マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得て出力し、(K0,ρ0)をマスター秘密鍵msk2として得て出力する。
mpk2:=sxiO(Σ)
msk2:=(K0,ρ0)
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)は、λ、いずれかのi∈[q]、マスター秘密鍵msk2=(K0,ρ0)、および所定の関数f2を入力とし、PKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iを得る。
(mpk1i, msk1i)←PKFE1.setup(1λ;F’(K0,(ρ0,i)))
またFE2.keygen(msk2,f2,i)は、FE1.keygenを実行してマスター秘密鍵msk1iおよび関数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)は、穴開け可能擬似ランダム関数Fの鍵Kを得る。例えば、鍵Kはランダムに生成される。またPKFE2.enc(mpk2,m)は、暗号文生成プログラムη’を生成する。ただし、PKFE2.encの暗号文生成プログラムη’は、入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行してマスター公開鍵mpk1iを得るステップと、入力されたi∈[q]について擬似乱数ri=F(K,i)を生成するステップと、マスター公開鍵mpk1i、メッセージm、および擬似乱数riを入力としてPKFE1.encを実行して擬似乱数riでランダム化された暗号文cti(ただし、ctiはメッセージmの暗号文)を得るステップと、を実行するプログラムである。難読化の「機能性」より、或るi∈[q]について難読化プログラムsxiO(Σ)を実行して得られる値sxiO(Σ)(i)は、このi∈[q]についてマスター公開鍵生成プログラムΣを実行して得られる値Σ(i)に等しい。さらにPKFE2.enc(mpk2,m)は、暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得て出力する。
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)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctを入力とし、秘密鍵skf2から取り出したi∈[q]について暗号文ctiを得る。難読化の「機能性」により難読化プログラムctにiを入力することで、暗号文生成プログラムη’のiに対する出力である暗号文ctiが得られる。
cti←ct(i)
またFE2.dec(skf2,ct)は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および得られた暗号文ctiを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
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λ)は、λを入力とし、各i∈[q]についてSKFE1.setupを実行してマスター秘密鍵msk1iの組を生成する。すなわち、SKFE2.setupは、q個のmsk1i(ただし、i∈[q]であり、[q]は{1,2,…,q}を意味する)を生成する。
msk1i←SKFE1.setup(1λ) for i∈[q]
ただし、λは正整数のセキュリティパラメータであり、SKFE1.setupは、各i∈[q]についてランダム化したmsk1iを得る。SKFE2.setupは、各i∈[q]について得られたmsk1iから、マスター秘密鍵msk2=(msk11,…,msk1q)を得て出力する。
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)は、穴開け可能擬似ランダム関数Fの鍵Kを生成し、暗号文生成プログラムμを生成し、当該暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る。ただし、SKFE2.encの暗号文生成プログラムμは、入力されたi∈[q]について擬似乱数riを生成するステップと、マスター秘密鍵msk1i、メッセージm、および擬似乱数riを入力としてSKFE1.encを実行して擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行するプログラムである。なお、穴開け可能擬似ランダム関数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)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムct=sxiO(μ)を入力とし、秘密鍵skf2から取り出したi∈[q]をct=sxiO(μ)に入力してct=sxiO(μ)を実行することで暗号文ctiを得る。さらにFE2.dec(skf2,ct)は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および得られた暗号文ctiを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
正しく復号が行われた場合にはm’=f2(m)となる。
q−key結託簡素性秘密鍵関数型暗号の他の構成を示す。1−key秘密鍵関数型暗号である第1関数型暗号とγ−SXIOとを用い、以下のようにq−key結託簡素性秘密鍵関数型暗号である第2関数型暗号(SKFE2.setup, FE2.keygen, SKFE2.enc, FE2.dec)を構成する。
SKFE2.setup(1λ)は、まず、λを入力とし、擬似ランダム関数F’の鍵K0とランダムビット列ρ0∈{0,1}λを得る。鍵K0およびランダムビット列ρ0は、例えば、ランダムに選択される。SKFE2.setup(1λ)は、マスター秘密鍵msk2=(K0,ρ0)を得て出力する。
FE2.keygen(msk2,f2,i)は、λ、いずれかのi∈[q]、マスター秘密鍵msk2=(K0,ρ0)、および所定の関数f2を入力とし、以下の処理を実行する。
FE2.keygen(msk2,f2,i)は、鍵K0およびインデックス(ρ0,i)を入力として擬似乱数F’(K0,(ρ0,i))を得、SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得る。
msk1i←SKFE1.setup(1λ;F’(K0,(ρ0,i)))
次にFE2.keygen(msk2,f2,i)は、FE1.keygenを実行してマスター秘密鍵msk1iおよび関数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)は、穴開け可能擬似ランダム関数Fの鍵Kを得る。例えば、鍵Kはランダムに生成される。またSKFE2.enc(msk2,m)は、暗号文生成プログラムμ’を得る。ただし、SKFE2.encの暗号文生成プログラムμ’は、マスター秘密鍵msk2=(K0,ρ0)およびi∈[q]を入力とし、入力されたi∈[q]についてSKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得るステップと、擬似乱数ri=F(K,i)を生成するステップと、マスター秘密鍵msk1i、メッセージm、および擬似乱数riを入力としてSKFE1.encを実行して擬似乱数riでランダム化された暗号文cti(ただし、ctiはメッセージmの暗号文)を得るステップと、を実行するプログラムである。
Hardwired:K, m, K0,ρ0
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を出力する。
ct:=sxiO(μ’)
FE2.dec(skf2,ct)は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctを入力とし、以下の処理を実行する。
まずFE2.dec(skf2,ct)は、秘密鍵skf2から取り出したi∈[q]について暗号文ctiを得る。難読化の「機能性」により難読化プログラムctにiを入力することで、暗号文生成プログラムμ’のiに対する出力である暗号文ctiが得られる。
cti←ct(i)
またFE2.dec(skf2,ct)は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および得られた暗号文ctiを入力としてFE1.decを実行して復元値m’を得て出力する。
m’←FE1.dec(skf2 (i),cti)
上述した暗号化アルゴリズム(PKFE2.encおよびSKFE2.enc)は、各i∈[q]に対する暗号文を生成するのではなく、iに対する暗号文を生成する暗号文生成プログラムηまたはμをγ−SXIOで難読化した難読化プログラムct=sxiO(η)またはct=sxiO(μ)を生成する。前述したSXIOの性質より、当該暗号化アルゴリズムによって記述される暗号化回路のサイズはpoly(λ,|μ|)・2nγとなる。ここで難読化プログラムctへの入力値であるi∈[q]の総数はq=2nであるため、当該サイズはpoly(λ,|μ|)・qγと記述できる。また、γは0<γ<1を満たし、εは0<ε<1を満たすため、γ=1−εと置くことができ、当該暗号化アルゴリズムでの|μ|は|f|およびmの長さLに依存するため、q−key結託簡素性の要件を満たす。よって、上述のように構成される暗号方式は、q−key結託簡素性公開鍵関数型暗号およびq−key結託簡素性秘密鍵関数型暗号となる。このようなq−key結託簡素性方式の関数型暗号を識別不可能性難読化に用いることにより、識別不可能性難読化に必要な演算コストや記憶容量を削減できる。
上述した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関数型暗号)を構成する方法が開示されている。
セットアップアルゴリズム(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完全簡素性秘密鍵関数型暗号と公開鍵暗号とから識別不可能性難読化器が構成できる(公開鍵暗号は自明に一方向性関数を含意する)。
加えて、上述した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関数型暗号)を構成する方法が開示されている。
セットアップアルゴリズム(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実施形態を説明する。
本形態は、前述した<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を有する。
次に本形態の処理を説明する。
≪セットアップアルゴリズム(PKFE2.setup(1λ))の実行処理≫
セットアップ装置11のマスター鍵生成部112は、各i∈[q]についてPKFE1.setupを実行してマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成し、生成されたq対の(mpk1i,msk1i)(ただし、i∈[q])をメモリ111に格納する。ただし、(mpk1i,msk1i)はi∈[q]ごとに生成された疑似乱数によってランダム化されている。マスター鍵生成部112は、各i∈[q]について得られた(mpk1i,msk1i)から、マスター公開鍵mpk2=(mpk11,…,mpk1q)およびマスター秘密鍵msk2=(msk11,…,msk1q)を生成してメモリ111に格納する。通信部113は、マスター公開鍵mpk2を暗号化装置13に送信し、マスター秘密鍵msk2を鍵生成装置12に送信する。
鍵生成装置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に送信する。
暗号化装置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に送信する。
復号装置14の通信部144には、秘密鍵skf2および難読化プログラムctが入力され、これらはメモリ141に格納される。暗号文生成部142は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムct=sxiO(η)を入力とし、秘密鍵skf2から取り出したi∈[q](鍵生成装置12に送信したi)をct=sxiO(η)に入力し、sxiO(η)を実行することで暗号文ctiを生成し、当該暗号文ctiをメモリ141に格納する。復号部143は、秘密鍵skf2から取り出した秘密鍵skf2 (i)および暗号文ctiを入力としてFE1.decを実行し、秘密鍵skf2 (i)で暗号文ctiを復号することで復元値m’を得て出力する。
図面を用いて本発明の第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を実行してマスター秘密鍵msk1iを生成し、生成されたq個のmsk1i(ただし、i∈[q])をメモリ111に格納する。ただし、msk1iはi∈[q]ごとに生成された疑似乱数によってランダム化されている。マスター鍵生成部212は、各i∈[q]について得られたmsk1iから、マスター秘密鍵msk2=(msk11,…,msk1q)を生成してメモリ111に格納する。通信部113は、マスター秘密鍵msk2を鍵生成装置12および暗号化装置23に送信する。
本形態の鍵生成アルゴリズムの実行処理は、第1実施形態のものと同じである。
暗号化装置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))の実行処理は、暗号化装置13から送信された難読化プログラムctが通信部144に入力されることに代えて、暗号化装置23から送信された難読化プログラムctが通信部144に入力されること、および、難読化プログラムctがsxiO(η)であることに代えて、難読化プログラムctがsxiO(μ)であることを除き、第1実施形態のものと同じである。
図面を用いて本発明の第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を有する。
次に本形態の処理を説明する。
≪セットアップアルゴリズム(PKFE2.setup(1λ))の実行処理≫
セットアップ装置61の設定部612は、λを入力として擬似ランダム関数F’の鍵K0とランダムビット列ρ0∈{0,1}λを得てメモリ111に格納する。鍵K0およびランダムビット列ρ0は、例えば、ランダムに選択される。次に、プログラム生成部613は、鍵K0およびランダムビット列ρ0を入力とし、前述したPKFE2.setupのマスター公開鍵生成プログラムΣを生成してメモリ111に格納する。マスター鍵生成部614は、このマスター公開鍵生成プログラムΣを入力とし、マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得て出力し、(K0,ρ0)をマスター秘密鍵msk2として得て出力する。マスター公開鍵mpk2およびマスター秘密鍵msk2はメモリ111に格納される。通信部113は、マスター公開鍵mpk2を暗号化装置63に送信し、マスター秘密鍵msk2を鍵生成装置62に送信する。
鍵生成装置62の通信部124には、復号装置64から送信されたいずれかのi∈[q]および所定の関数f2、ならびにマスター秘密鍵msk2が入力される。これらはメモリ121に格納される。マスター鍵生成部622は、λ、いずれかのi∈[q]、マスター秘密鍵msk2=(K0,ρ0)、および関数f2を入力とし、PKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iを得てメモリ121に格納する。秘密鍵生成部623は、マスター秘密鍵msk1iおよび関数f2を入力とし、FE1.keygenを実行してマスター秘密鍵msk1iおよび関数f2に対する秘密鍵skf2 (i)を生成してメモリ121に格納する。さらに秘密鍵生成部623は、復号装置64から送信されたいずれかのi∈[q]および所定の関数f2を入力とし、関数f2に対する秘密鍵skf2=(skf2 (i),i)を得てメモリ121に格納する。通信部124は、秘密鍵skf2を復号装置64に送信する。
暗号化装置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に送信する。
復号装置64の通信部144には、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctが入力され、これらはメモリ141に格納される。実行部642は、秘密鍵skf2=(skf2 (i),i)および難読化プログラムctを入力とし、秘密鍵skf2から取り出したi∈[q]について暗号文ctiを得てメモリ141に格納する。難読化プログラムctにiを入力することで暗号文ctiが得られる。復号部643は、秘密鍵skf2=(skf2 (i),i)から取り出した秘密鍵skf2 (i)および得られた暗号文ctiを入力としてFE1.decを実行し、秘密鍵skf2 (i)で暗号文ctiを復号して復元値m’を得て出力する。
図面を用いて本発明の第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を有する。
次に本形態の処理を説明する。
≪セットアップアルゴリズム(SKFE2.setup(1λ))の実行処理≫
セットアップ装置71の設定部612は、λを入力とし、擬似ランダム関数F’の鍵K0とランダムビット列ρ0∈{0,1}λを得てメモリ111に格納する。鍵K0およびランダムビット列ρ0は、例えば、ランダムに選択される。マスター鍵生成部714は、鍵K0およびランダムビット列ρ0を入力とし、マスター秘密鍵msk2=(K0,ρ0)を得てメモリ111に格納する。通信部113は、マスター秘密鍵msk2を鍵生成装置72および暗号化装置73に送信する。
鍵生成装置72の通信部124には、復号装置64から送信されたいずれかのi∈[q]および所定の関数f2、ならびにマスター秘密鍵msk2=(K0,ρ0)が入力される。これらはメモリ121に格納される。マスター鍵生成部722は、鍵K0およびインデックス(ρ0,i)を入力として擬似乱数F’(K0,(ρ0,i))を得てメモリ121に格納する。さらにマスター鍵生成部722は、λおよび擬似乱数F’(K0,(ρ0,i))を入力とし、SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得てメモリ121に格納する。秘密鍵生成部623は、マスター秘密鍵msk1iおよび関数f2を入力とし、E1.keygenを実行してマスター秘密鍵msk1iおよび関数f2に対する秘密鍵skf2 (i)を生成してメモリ121に格納する。さらに秘密鍵生成部623は、skf2 (i)およびiを入力として関数f2に対する秘密鍵skf2=(skf2 (i),i)を得てメモリ121に格納する。通信部124は、秘密鍵skf2を復号装置64に送信する。
暗号化装置73の通信部136にはマスター秘密鍵msk2=(K0,ρ0)が入力され、このマスター公開鍵mpk2はメモリ131に格納される。設定部632は、穴開け可能擬似ランダム関数Fの鍵Kを得てメモリ131に格納する。例えば、鍵Kはランダムに生成される。プログラム生成部734は、鍵K0、ランダムビット列ρ0、鍵K、およびメッセージmを入力として、前述したSKFE2.encの暗号文生成プログラムμ’を得てメモリ131に格納する。難読化部735は、暗号文生成プログラムμ’を入力とし、暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得てメモリ131に格納する。通信部136は、当該難読化プログラムctを復号装置64に送信する。
本形態の復号アルゴリズム(FE2.dec(skf2,ct))の実行処理は、暗号化装置63から送信された難読化プログラムctが通信部144に入力されることに代えて、暗号化装置73から送信された難読化プログラムctが通信部144に入力されること、および、難読化プログラムctがsxiO(η’)であることに代えて、難読化プログラムctがsxiO(μ’)であることを除き、第3実施形態のものと同じである。
図面を用いて本発明の第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を有する。
次に本形態の処理を説明する。本形態では、第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に送信する。
鍵生成装置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に送信する。
暗号化装置33の通信部333にはマスター公開鍵mpk3が入力され、これはメモリ331に格納される。暗号化部332は、マスター公開鍵mpk3およびメッセージmを入力とし、第1実施形態または第3実施形態の暗号化アルゴリズム(PKFE2.enc)を用い、非特許文献4に記載された1−key完全簡素性公開鍵関数型暗号の暗号化アルゴリズム(PKFE3.enc)を実行し、メッセージmの暗号文c3を生成してメモリ331に格納する。通信部333は、暗号文c3を復号装置34に送信する。
復号装置34の通信部343には秘密鍵skf3および暗号文c3が入力され、これらはメモリ341に格納される。復号部342は、秘密鍵skf3および暗号文c3を入力とし、第1実施形態または第3実施形態の復号アルゴリズムFE2.decを用い、非特許文献4に記載された1−key完全簡素性公開鍵関数型暗号の暗号化アルゴリズム(FE3.dec)を実行し、メッセージmの関数値f3(m)を生成して出力する。
図面を用いて本発明の第6実施形態を説明する。
本形態は、前述した<1−key完全簡素性秘密鍵関数型暗号>の具体例である。
<構成>
図3に例示するように、本形態の暗号システム4は、セットアップ装置41、鍵生成装置32、暗号化装置43、および復号装置34を有する。セットアップ装置41は、例えば、メモリ311、マスター鍵生成部412、および通信部313を有する。暗号化装置43は、例えば、メモリ331、暗号化部332、および通信部333を有する。
次に本形態の処理を説明する。本形態では、第2実施形態または第4実施形態の何れか一方のq−key結託簡素性秘密鍵関数型暗号(第2関数型暗号)を利用し、非特許文献4に記載された方法に従って、以下に示す1−key完全簡素性秘密鍵関数型暗号(第3関数型暗号)の各アルゴリズムを実行する。
セットアップ装置41のマスター鍵生成部412は、第2実施形態または第4実施形態のセットアップアルゴリズム(SKFE2.setup)を用い、非特許文献4に記載された1−key完全簡素性秘密鍵関数型暗号(第3関数型暗号)のセットアップアルゴリズム(SKFE3.setup)を実行し、マスター秘密鍵msk3を生成してメモリ311に格納する。通信部313は、マスター秘密鍵msk3を鍵生成装置32および暗号化装置43に送信する。
本形態の鍵生成アルゴリズム(FE3.keygen)の実行処理は、第5実施形態のものと同じである。
暗号化装置43の通信部333にはマスター秘密鍵msk3が入力され、これはメモリ331に格納される。暗号化部332は、マスター秘密鍵msk3およびメッセージmを入力とし、第2実施形態または第4実施形態の暗号化アルゴリズム(SKFE2.enc)を用い、非特許文献4に記載された1−key完全簡素性秘密鍵関数型暗号の暗号化アルゴリズム(SKFE3.enc)を実行し、メッセージmの暗号文c3を生成してメモリ331に格納する。通信部333は、暗号文c3を復号装置34に送信する。
本形態の復号アルゴリズムの実行処理は、暗号化装置33から送信された暗号文c3が通信部344に入力されることに代えて、暗号化装置43から送信された暗号文c3が通信部343に入力されること、第1実施形態または第3実施形態の復号アルゴリズムFE2.decに代えて、第2実施形態または第4実施形態の復号アルゴリズムFE2.decが用いられることを除き、第5実施形態のものと同じである。
図面を用いて本発明の第7実施形態を説明する。
本形態では、第5実施形態の1−key完全簡素性公開鍵関数型暗号を用い、非特許文献2,3に記載された識別不可能性難読化を行う。
図4に例示するように、本形態の暗号システム5は、セットアップ装置31、鍵生成装置32、難読化装置53、および実行装置54を有する。難読化装置53は、メモリ431、暗号化装置33、難読化部532、および通信部533を有する。実行装置54は、メモリ541、復号装置34、実行部542、および通信部543を有する。
次に本形態の処理を説明する。
≪セットアップアルゴリズム(PKFE3.setup)の実行処理≫
本形態のセットアップアルゴリズム(PKFE3.setup)の実行処理は、第5実施形態のものと同じである。
本形態の鍵生成アルゴリズム(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)の実行処理を行ってもよい。
Claims (23)
- 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’の鍵K0とランダムビット列ρ0を得、(2)入力されたi∈[q]について擬似乱数ri’=F’(K0,(ρ0,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数ri’でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成するステップと、前記マスター公開鍵mpk1iを出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K0,ρ0)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupを実行するセットアップ装置と、
いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力とし、前記PKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iを得、前記FE1.keygenを実行して前記マスター秘密鍵msk1iおよび前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
(1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行して前記マスター公開鍵mpk1iを得るステップと、入力されたi∈[q]について擬似乱数ri=F(K,i)を生成するステップと、前記マスター公開鍵mpk1i、前記メッセージm、および前記擬似乱数riを入力として前記PKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムη’を得、(3)前記暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encを実行する暗号化装置と、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得、前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズム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関数型暗号の復号アルゴリズムであり、
各i∈[q]について前記PKFE1.setupを実行してマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成し、マスター公開鍵mpk2=(mpk11,…,mpk1q)およびマスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupを実行するセットアップ装置と、
いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター公開鍵mpk1i、前記メッセージm、および前記擬似乱数riを入力として前記PKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムηを得、前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encを実行する暗号化装置と、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得、前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号装置と、
を有する暗号システム。 - 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’の鍵K0とランダムビット列ρ0を得、マスター秘密鍵msk2=(K0,ρ0)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupを実行するセットアップ装置と、
いずれかのi∈[q]、前記マスター秘密鍵msk2=(K0,ρ0)、および所定の関数f2を入力とし、前記SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得、前記FE1.keygenを実行して前記マスター秘密鍵msk1iおよび前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
(1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)前記マスター秘密鍵msk2=(K0,ρ0)およびi∈[q]を入力とし、入力されたi∈[q]について前記SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得るステップと、擬似乱数ri=F(K,i)を生成するステップと、前記マスター秘密鍵msk1i、前記メッセージm、および前記擬似乱数riを入力として前記SKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムμ’を得、(3)前記暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encを実行する暗号化装置と、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得、前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号装置と、
を有する暗号システム。 - 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を実行してマスター秘密鍵msk1iを生成し、マスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupを実行するセットアップ装置と、
いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenを実行する鍵生成装置と、
入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター秘密鍵msk1i、前記メッセージm、および前記擬似乱数riを入力として前記SKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムμを得、前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encを実行する暗号化装置と、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得、前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号装置と、
を有する暗号システム。 - 請求項1から4のいずれかの暗号システムであって、
前記第1関数型暗号が1−key関数型暗号である、暗号システム。 - 請求項1から5のいずれかの暗号システムであって、
前記難読化プログラムctは、前記暗号文生成プログラムηをγ−SXIOで識別不可能性難読化したものである、暗号システム。 - qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、 擬似ランダム関数F’の鍵K0とランダムビット列ρ0を得る設定部と、
入力されたi∈[q]について擬似乱数ri’=F’(K0,(ρ0,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数ri’でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成するステップと、前記マスター公開鍵mpk1iを出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成するプログラム生成部と、
前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K0,ρ0)をマスター秘密鍵msk2として得るマスター鍵生成部と、
を有するセットアップ装置。 - qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、
(1)擬似ランダム関数F’の鍵K0とランダムビット列ρ0を得、(2)入力されたi∈[q]について擬似乱数ri’=F’(K0,(ρ0,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数ri’でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成するステップと、前記マスター公開鍵mpk1iを出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K0,ρ0)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力とし、前記PKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iを得るマスター鍵生成部と、
前記FE1.keygenを実行して前記マスター秘密鍵msk1iおよび前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る秘密鍵生成部と、
を有する鍵生成装置。 - qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、
(1)擬似ランダム関数F’の鍵K0とランダムビット列ρ0を得、(2)入力されたi∈[q]について擬似乱数ri’=F’(K0,(ρ0,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数ri’でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成するステップと、前記マスター公開鍵mpk1iを出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K0,ρ0)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
穴開け可能擬似ランダム関数Fの鍵Kを得る設定部と、
入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行して前記マスター公開鍵mpk1iを得るステップと、入力されたi∈[q]について擬似乱数ri=F(K,i)を生成するステップと、前記マスター公開鍵mpk1i、前記メッセージm、および前記擬似乱数riを入力として前記PKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムη’を得るプログラム生成部と、
前記暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得る難読化部と、
を有する暗号化装置。 - 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’の鍵K0とランダムビット列ρ0を得、(2)入力されたi∈[q]について擬似乱数ri’=F’(K0,(ρ0,i))を得るステップと、前記PKFE1.setupを実行して前記擬似乱数ri’でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成するステップと、前記マスター公開鍵mpk1iを出力するステップと、を実行するマスター公開鍵生成プログラムΣを生成し、(3)前記マスター公開鍵生成プログラムΣを識別不可能性難読化した難読化プログラムsxiO(Σ)をマスター公開鍵mpk2として得、(K0,ρ0)をマスター秘密鍵msk2として得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力とし、前記PKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター公開鍵mpk1iおよびマスター秘密鍵msk1iを得、前記FE1.keygenを実行して前記マスター秘密鍵msk1iおよび前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenが実行されており、
(1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)入力されたi∈[q]について難読化プログラムsxiO(Σ)を実行して前記マスター公開鍵mpk1iを得るステップと、入力されたi∈[q]について擬似乱数ri=F(K,i)を生成するステップと、前記マスター公開鍵mpk1i、前記メッセージm、および前記擬似乱数riを入力として前記PKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムη’を得、(3)前記暗号文生成プログラムη’を識別不可能性難読化した難読化プログラムct=sxiO(η’)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encが実行されており、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得る実行部と、
前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る復号部と、
を有する復号装置。 - qが1以上の整数であり、PKFE1.setupが、マスター公開鍵mpk1およびマスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、PKFE1.encが、前記マスター公開鍵mpk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、
各i∈[q]について前記PKFE1.setupを実行してマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成し、マスター公開鍵mpk2=(mpk11,…,mpk1q)およびマスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupが実行されており、
入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター公開鍵mpk1i、前記メッセージm、および前記擬似乱数riを入力として前記PKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムηを得るプログラム生成部と、
前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encを実行する難読化部と、
を有する暗号化装置。 - 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を実行してマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成し、マスター公開鍵mpk2=(mpk11,…,mpk1q)およびマスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムPKFE2.setupと、
いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenと、
入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター公開鍵mpk1i、前記メッセージm、および前記擬似乱数riを入力として前記PKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムηを得、前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムPKFE2.encと、が実行されており、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、いずれかのi∈[q]について前記暗号文ctiを得る暗号文生成部と、
前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号部と、
を有する復号装置。 - qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、FE1.keygenが、前記マスター秘密鍵msk1および所定の関数f1を入力とし、前記関数f1に対する秘密鍵skf1を生成する前記第1関数型暗号の鍵生成アルゴリズムであり、
擬似ランダム関数F’の鍵K0とランダムビット列ρ0を得、マスター秘密鍵msk2=(K0,ρ0)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupが実行されており、
いずれかのi∈[q]、前記マスター秘密鍵msk2=(K0,ρ0)、および所定の関数f2を入力とし、前記SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得るマスター鍵生成部と、
前記FE1.keygenを実行して前記マスター秘密鍵msk1iおよび前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る秘密鍵生成部と、
を有する鍵生成装置。 - qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、 擬似ランダム関数F’の鍵K0とランダムビット列ρ0を得、マスター秘密鍵msk2=(K0,ρ0)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupが実行されており、
穴開け可能擬似ランダム関数Fの鍵Kを得る設定部と、
前記マスター秘密鍵msk2=(K0,ρ0)およびi∈[q]を入力とし、入力されたi∈[q]について前記SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得るステップと、擬似乱数ri=F(K,i)を生成するステップと、前記マスター秘密鍵msk1i、前記メッセージm、および前記擬似乱数riを入力として前記SKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムμ’を得るプログラム生成部と、
前記暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得る難読化部と、
を有する暗号化装置。 - 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’の鍵K0とランダムビット列ρ0を得、マスター秘密鍵msk2=(K0,ρ0)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupと、
いずれかのi∈[q]、前記マスター秘密鍵msk2=(K0,ρ0)、および所定の関数f2を入力とし、前記SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得、前記FE1.keygenを実行して前記マスター秘密鍵msk1iおよび前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenと、
(1)穴開け可能擬似ランダム関数Fの鍵Kを得、(2)前記マスター秘密鍵msk2=(K0,ρ0)およびi∈[q]を入力とし、入力されたi∈[q]について前記SKFE1.setupを実行して疑似乱数F’(K0,(ρ0,i))でランダム化されたマスター秘密鍵msk1iを得るステップと、擬似乱数ri=F(K,i)を生成するステップと、前記マスター秘密鍵msk1i、前記メッセージm、および前記擬似乱数riを入力として前記SKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムμ’を得、(3)前記暗号文生成プログラムμ’を識別不可能性難読化した難読化プログラムct=sxiO(μ’)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encと、が実行されており、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得る実行部と、
前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る復号部と、
を有する復号装置。 - qが1以上の整数であり、SKFE1.setupが、マスター秘密鍵msk1を生成する第1関数型暗号のセットアップアルゴリズムであり、SKFE1.encが、前記マスター秘密鍵msk1およびメッセージmを入力とし、前記メッセージmの暗号文c1を生成する前記第1関数型暗号の暗号化アルゴリズムであり、
各i∈[q]について前記SKFE1.setupを実行してマスター秘密鍵msk1iを生成し、マスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupが実行されており、
入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター秘密鍵msk1i、前記メッセージm、および前記擬似乱数riを入力として前記SKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムμを得るプログラム生成部と、
前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encを実行する難読化部と、
を有する暗号化装置。 - 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を実行してマスター秘密鍵msk1iを生成し、マスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムSKFE2.setupと、
いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムFE2.keygenと、
入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター秘密鍵msk1i、前記メッセージm、および前記擬似乱数riを入力として前記SKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムμを得、前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムSKFE2.encと、が実行されており、
前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得る暗号文生成部と、
前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記FE1.decを実行して復元値を得る前記第2関数型暗号の復号アルゴリズムFE2.decを実行する復号部と、
を有する復号装置。 - 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を実行してマスター公開鍵mpk1iおよびマスター秘密鍵msk1iの組を生成し、マスター公開鍵mpk2=(mpk11,…,mpk1q)およびマスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムであり、FE2.keygenが、いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムであり、PKFE2.encが、入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター公開鍵mpk1i、前記メッセージm、および前記擬似乱数riを入力として前記PKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムηを得、前記暗号文生成プログラムηを識別不可能性難読化した難読化プログラムct=sxiO(η)を得る前記第2関数型暗号の暗号化アルゴリズムであり、FE2.decが、前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得、前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記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)を生成する復号装置と、
を有する暗号システム。 - 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を実行してマスター秘密鍵msk1iを生成し、マスター秘密鍵msk2=(msk11,…,msk1q)を得る第2関数型暗号のセットアップアルゴリズムであり、FE2.keygenが、いずれかのi∈[q]、前記マスター秘密鍵msk2、および所定の関数f2を入力として前記FE1.keygenを実行して前記関数f2に対する秘密鍵skf2 (i)を生成し、秘密鍵skf2=(skf2 (i),i)を得る前記第2関数型暗号の鍵生成アルゴリズムであり、SKFE2.encが、入力されたi∈[q]について擬似乱数riを生成するステップと、前記マスター秘密鍵spk1i、前記メッセージm、および前記擬似乱数riを入力として前記SKFE1.encを実行して前記擬似乱数riでランダム化された暗号文ctiを得るステップと、を実行する暗号文生成プログラムμを得、前記暗号文生成プログラムμを識別不可能性難読化した難読化プログラムct=sxiO(μ)を得る前記第2関数型暗号の暗号化アルゴリズムであり、FE2.decが、前記秘密鍵skf2および前記難読化プログラムctを入力とし、前記秘密鍵skf2から取り出したi∈[q]について前記暗号文ctiを得、前記秘密鍵skf2 (i)および前記暗号文ctiを入力として前記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)を生成する復号装置と、
を有する暗号システム。 - 請求項7のセットアップ装置の機能をコンピュータに実行させるためのプログラム。
- 請求項8または13の鍵生成装置の機能をコンピュータに実行させるためのプログラム。
- 請求項9、11、14、または16の暗号化装置の機能をコンピュータに実行させるためのプログラム。
- 請求項10,12、15または17の復号装置の機能をコンピュータに実行させるためのプログラム。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023238230A1 (ja) * | 2022-06-07 | 2023-12-14 | 日本電信電話株式会社 | 暗号システム |
Family Cites Families (4)
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 | 애리스 엔터프라이지즈 엘엘씨 | 스트리밍 미디어 및 다른 데이터 흐름들의 보호를 위한 난독화 |
-
2017
- 2017-01-10 JP JP2017001751A patent/JP6649288B2/ja active Active
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 |