説明

プロキシ再暗号化システム、鍵生成装置、再暗号化装置、プロキシ再暗号化方法、プログラム

【課題】安全性を確保しながら、使い捨て署名を用いず、システムパラメータや暗号文のサイズが小さい方式を提供する。
【解決手段】本発明のプロキシ再暗号化システムは、送信装置、N個の受信装置、再暗号化装置、鍵生成手段を有する。送信装置は暗号化部を、受信装置は復号部を、鍵生成手段は再暗号化鍵生成部を、再暗号化装置は再暗号化部を備える。秘密鍵をsk=x、公開鍵をpk=g^skとする。暗号化部は、C=pk,C=h,C=e(g,g・M,t=H(C,C),C=(ud),C=sを計算し、暗号文Cとする。復号部は、平文M=C/(e(C,g)^(1/sk))を求める。再暗号化鍵生成部は、再暗号化鍵rkm/n=sk/skを生成する。再暗号化部は、Cm1=C^rkm/nとし、暗号文C=(Cm1,C,Cn3,C,C)とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、公開鍵方式の暗号文をその暗号文を暗号化する際に用いた公開鍵以外の公開鍵で暗号化したと同等の暗号文に再暗号化するプロキシ再暗号化システム、鍵生成装置、再暗号化装置、プロキシ再暗号化方法、プログラムに関する。
【背景技術】
【0002】
公開鍵暗号を用いて何らかのデータを暗号化してやりとりする場合,アリスの公開鍵pkで暗号化されたデータをボブの公開鍵pkで暗号化されたデータに変換したいという状況が考えられる。例えばアリスが自分宛の(暗号化された)メールをボブに転送してボブに読んで欲しい場合、アリスが自分の保有する秘密鍵skで一度復号し、ボブの公開鍵pkで再度暗号化して転送すればよい。しかしこの場合、転送時にアリスがオンラインである必要があり、さらに一度復号するという手間が発生する。そのため、メールサーバのような(信頼できない可能性がある)第三者が復号することなく直接ボブの公開鍵による暗号文に変換し、転送できることが望ましい(もちろんメールサーバはメールの内容について一切知ることができないことが要求される)。これを実現する方法の一つにプロキシ再暗号が挙げられる。プロキシと呼ばれる第三者は(アリスとボブ間の)再暗号化鍵と呼ばれる鍵rk2−1を用いて,アリスへの暗号文Cを(skを利用することなく)ボブへの暗号文Cに変換できる。この技術によって、安全なe−mail転送,安全な分散ファイル(ストレージ)システム、安全なdigital right management(DRM)システムなどを実現することが期待できる。
【0003】
プロキシ再暗号は公開鍵暗号を拡張した概念と考えられるため、公開鍵暗号と同様に適応的選択暗号文攻撃(CCA2)に対して安全な方式が望ましい。非特許文献1や非特許文献2が、安全性の高いプロキシ再暗号化技術として知られている。非特許文献1では、(双方向)プロキシ再暗号に対するCCA2安全性を定義し、判定双線型Diffie-Hellman(DBDH)仮定に基づく具体的な方式(ランダムオラクルモデルで安全な方式と標準モデルで安全な方式)を構成した。非特許文献2では、非特許文献3に示されたIDベース暗号を利用することで使い捨て署名を使わずにCCA2安全な方式を構成できることを指摘している。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】R. Canetti and S. Hohenberger, “Chosenciphertext secure proxy re-encryption”, In ACM Conference on Computer and Communications Security, pp.185-194, ACM, 2007.
【非特許文献2】B. Libert and D. Vergnaud, “Unidirectional Chosen-Ciphertext Secure Proxy Reencryption”, In Public Key Cryptography, volume 4939 of Lecture Notes in Computer Science, pp.360-379, Springer, 2008.
【非特許文献3】B. Waters, “Efficient Identity-Based Encryption Without Random Oracles”, In EUROCRYPT, volume 3494 of Lecture Notes in Computer Science, pp.114-127, Springer, 2005.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1の方式は、使い捨て署名を使用しているため、暗号文のサイズが大きい。非特許文献2の方式は、システムパラメータのサイズが非常に大きくなってしまう。
【0006】
本発明のプロキシ再暗号化システムは、従来技術と同じ安全性を確保しながら、使い捨て署名を用いず、システムパラメータや暗号文のサイズが小さい方式を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明のプロキシ再暗号化システムは、送信装置、N個の受信装置R,…,R、再暗号化装置、鍵生成手段を有する。ここで、Nは2以上の整数、nとmは1以上N以下の整数、λはセキュリティパラメータを示す整数、qはλビットの素数、GとGは素数位数qの巡回乗算群、gは群Gの生成元、eはG×G→Gのように写像する双線形ペアリング関数、Hは群Gの元と群Gの元を入力とし所定のビット長の整数に写像するハッシュ関数を示す記号、g1,h,u,v,dはランダムに選択された群Gの生成元、^はべき乗を示す記号とする。
【0008】
送信装置は、暗号化部を備える。受信装置R,…,Rは、それぞれ復号記録部と復号部を備える。鍵生成手段は、鍵記録部と再暗号化鍵生成部を備える。再暗号化装置は、再暗号化記録部と再暗号化部を備える。
【0009】
送信装置の暗号化部は、受信装置Rの公開鍵pkと平文Mとを取得すると、0以上q−1以下の整数からランダムにr,sを選ぶ。そして、
n1=pk
n2=h
n3=e(g,g・M
t=H(Cn2,Cn3
n4=(ud)
n5=s
を計算し、Cn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成する。
【0010】
受信装置Rの復号記録部は、あらかじめ秘密鍵skと公開鍵pkを記録する。なお、秘密鍵skと公開鍵pkは、xを0以上q−1以下からランダムに選ばれた整数とし、sk=xまたはsk=1/x、pk=g^skの関係を有する。また、秘密鍵skと公開鍵pkは、受信装置R自身が生成してもよいし、信頼できる鍵生成装置が生成してもよい。復号部は、受信した暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つかを確認する。そして、この条件が成り立つ場合には、
M=Cn3/(e(Cn1,g)^(1/sk))
を計算し、平文Mを求める。
【0011】
鍵生成手段の鍵記録部は、受信装置Rの秘密鍵skと受信装置R(ただし、m≠n)の秘密鍵skを記録する。再暗号化鍵生成部は、再暗号化鍵rkm/n
rkm/n=sk/sk
のように生成する。
【0012】
再暗号化装置の再暗号化記録部は、再暗号化鍵rkm/nを記録する。再暗号化部は、公開鍵pkを用いて暗号化された暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つかを確認する。そして、この条件が成り立つ場合には、
m1=Cn1^rkm/n
m2=Cn2
m3=Cn3
m4=Cn4
m5=Cn5
の関係を有するCm1,Cm2,Cm3,Cm4,Cm5が含まれる暗号文Cを生成する。
【発明の効果】
【0013】
本発明のプロキシ再暗号化システムによれば、暗号文Cの中のCn4が署名の役割を果たすので、暗号文の正当性を保証できる。したがって、従来技術と同じ安全性を確保できる。また、使い捨て署名を用いておらず、システムパラメータや暗号文のサイズが従来技術に比べて小さい。
【図面の簡単な説明】
【0014】
【図1】実施例1のプロキシ再暗号化システムの構成例を示す図。
【図2】実施例1のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをn番目の受信装置が復号する場合の処理フローを示す図。
【図3】実施例1のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをm番目の受信装置が復号する場合の処理フローを示す図。
【図4】変形例のプロキシ再暗号化システムの構成例を示す図。
【図5】変形例のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをn番目の受信装置が復号する場合の処理フローを示す図。
【図6】変形例のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをm番目の受信装置が復号する場合の処理フローを示す図。
【図7】従来技術と本発明との比較表を示す図。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例1】
【0016】
図1に実施例1のプロキシ再暗号化システムの構成例を示す。図2に実施例1のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをn番目の受信装置が復号する場合の処理フローを示す。図3に実施例1のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをm番目の受信装置が復号する場合の処理フローを示す。
【0017】
実施例1のプロキシ再暗号化システムは、ネットワーク1000で接続された送信装置100、N個の受信装置201,…,201、再暗号化装置300、鍵生成手段401を有する。ここで、Nは2以上の整数、nとmは1以上N以下の整数、λはセキュリティパラメータを示す整数、qはλビットの素数、GとGは素数位数qの巡回乗算群、gは群Gの生成元、eはG×G→Gのように写像する双線形ペアリング関数、Hは群Gの元と群Gの元を入力とし所定のビット長の整数に写像するハッシュ関数を示す記号、g1,h,u,v,dはランダムに選択された群Gの生成元、^はべき乗を示す記号とする。
【0018】
送信装置は、暗号化記録部190、暗号化部110を備える。各受信装置201は、秘密鍵・公開鍵生成部210、復号記録部290、復号部220を備える。鍵生成手段401は、鍵記録部490と再暗号化鍵生成部420を備える。再暗号化装置300は、再暗号化記録部390と再暗号化部310を備える。なお、鍵生成手段401は、受信装置201,…,201の秘密鍵sk,…,skを鍵記録部490に安全に記録し、必要な計算に利用できる手段であればよく、方式を限定する必要はない。例えば、鍵生成手段401は、1つの信頼できる鍵生成装置でもよいし、秘密鍵skを秘密分散して記録するような複数の装置から構成された秘密計算システムでもよい(この場合は鍵記録部490と再暗号化鍵生成部420も複数の装置に分散されて構成される)。秘密計算システムの具体例としては、参考文献1(千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考”, In CSS, 2010.)などがある。
【0019】
まず、図2にしたがって、n番目の受信装置201の公開鍵pkを用いて暗号化された暗号文Cをn番目の受信装置201が復号する場合の処理フローを説明する。受信装置201の秘密鍵・公開鍵生成部210は、xを0以上q−1以下の整数からランダムに選ぶ。秘密鍵・公開鍵生成部210は、秘密鍵skをsk=xまたはsk=1/xとし、公開鍵pkをpk=g^skとする(S211)。そして、秘密鍵skと公開鍵pkを復号記録部290に記録し、公開鍵pkを公開する。
【0020】
受信装置201の公開鍵pkと暗号化の対象である平文Mは、送信装置100の暗号化記録部190に記録しておけばよい。そして、送信装置100の暗号化部110は、公開鍵pkと平文Mとを取得すると、0以上q−1以下の整数からランダムにr,sを選ぶ。そして、
n1=pk
n2=h
n3=e(g,g・M
t=H(Cn2,Cn3
n4=(ud)
n5=s
を計算し、Cn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成し(S410)、受信装置201に送信する。
【0021】
受信装置201の復号部220は、受信した暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つかを確認する。そして、この条件が成り立つ場合には、
M=Cn3/(e(Cn1,g)^(1/sk))
を計算し、平文Mを求める(S221)。なお、上記の条件が成り立たない場合には、エラーを出力する。
【0022】
次に、図3にしたがって、n番目の受信装置201の公開鍵pkを用いて暗号化された暗号文Cをm番目の受信装置201が復号する場合の処理フローを説明する。受信装置201の秘密鍵・公開鍵生成部210は、xを0以上q−1以下の整数からランダムに選ぶ。秘密鍵skをsk=xまたはsk=1/xとし、公開鍵pkをpk=g^skとする(S211)。そして、秘密鍵skと公開鍵pkを復号記録部290に記録し、公開鍵pkを公開する。また、受信装置201は、秘密鍵skを鍵生成手段401に送信する。さらに、受信装置201(ただし、m≠n)の秘密鍵・公開鍵生成部210は、xを0以上q−1以下の整数からランダムに選ぶ。秘密鍵skをsk=xまたはsk=1/xとし、公開鍵pkをpk=g^skとする(S211)。そして、秘密鍵skと公開鍵pkを復号記録部290に記録し、公開鍵pkを公開する。また、受信装置201は、秘密鍵skを鍵生成手段401に送信する。鍵生成手段401の鍵記録部490は、受信した受信装置201の秘密鍵skと受信装置201の秘密鍵skを記録する。このときに、受信装置201は、秘密鍵skを鍵生成手段401にそのまま記録させてもよいし、鍵生成手段401に対して秘密鍵skを秘匿できるように秘密分散して送信し、秘密分散された秘密鍵skの断片を記録させてもよい。
【0023】
送信装置100の暗号化部110は、公開鍵pkと平文Mとを取得すると、0以上q−1以下の整数からランダムにr,sを選ぶ。そして、
n1=pk
n2=h
n3=e(g,g・M
t=H(Cn2,Cn3
n4=(ud)
n5=s
を計算し、Cn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成し(S410)、再暗号化装置300に送信する。
【0024】
鍵生成手段401の再暗号化鍵生成部420は、再暗号化鍵rkm/n
rkm/n=sk/sk
のように生成する(S421m/n)。そして、再暗号化装置300に再暗号化鍵rkm/nを送信する。再暗号化装置300の再暗号化記録部390は、再暗号化鍵rkm/nを記録する。なお、ステップS410とステップS421m/nの順番は逆でもよい。例えば、再暗号化装置300が、暗号文Cを受信した後で、鍵生成手段401に再暗号化前の受信装置の番号nと再暗号化の後の受信装置の番号mを送って再暗号化鍵の生成を依頼し、鍵生成手段401が再暗号化鍵rkm/nを生成するのであれば、ステップS410、ステップS421m/nの順番になる。一方、鍵生成手段401が、秘密鍵sk,skを受信したときに再暗号化鍵rkm/nを生成しておくのであれば、ステップS421m/n、ステップS410の順番になる。
【0025】
再暗号化部310は、再暗号化鍵rkm/nを用いて、秘密鍵skで復号できる暗号文C(公開鍵pkで暗号化された暗号文Cまたは再暗号化によって生成された暗号文C)から秘密鍵skで復号できる暗号文C(公開鍵pkで暗号化されたのと同等な暗号文C)を生成するときには、次のように再暗号化する。まず、受信した暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つかを確認する。そして、この条件が成り立つ場合には、
m1=Cn1^rkm/n
m2=Cn2
m3=Cn3
m4=Cn4
m5=Cn5
の関係を有するCm1,Cm2,Cm3,Cm4,Cm5が含まれる暗号文Cを生成する(S310)。なお、上記の条件が成り立たない場合には、エラーを出力する。
【0026】
また、再暗号化鍵rkm/nを用いて、秘密鍵skで復号できる暗号文C(公開鍵pkで暗号化された暗号文Cまたは再暗号化によって生成された暗号文C)から秘密鍵skで復号できる暗号文C(公開鍵pkで暗号化されたのと同等な暗号文C)を生成するときには、再暗号化部310は、次のように再暗号化すればよい。受信した暗号文CからCm1,Cm2,Cm3,Cm4,Cm5を取得する。そして、
t=H(Cm2,Cm3
を計算し、
e(h,Cm1)=e(Cm2,pk
e(h,Cm4)=e(Cm2,u(v^Cm5)d)
が成り立つかを確認する。そして、この条件が成り立つ場合には、
n1=Cm1^(1/rkm/n
n2=Cm2
n3=Cm3
n4=Cm4
n5=Cm5
の関係を有するCn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成し(S310)、受信装置201に送信する。
【0027】
受信装置201の復号部220は、受信した暗号文CからCm1,Cm2,Cm3,Cm4,Cm5を取得し、
t=H(Cm2,Cm3
を計算し、
e(h,Cm1)=e(Cm2,pk
e(h,Cm4)=e(Cm2,u(v^Cm5)d)
が成り立つかを確認する。そして、この条件が成り立つ場合には、
M=Cm3/(e(Cm1,g)^(1/sk))
を計算し、平文Mを求める(S221)。なお、上記の条件が成り立たない場合には、エラーを出力する。
【0028】
[変形例]
実施例1では、秘密鍵・公開鍵生成部を各受信装置が備えたが、変形例では鍵生成手段が備える場合を示す。この場合は、鍵生成手段を、例えば信頼できる鍵生成装置にすればよい。図4に変形例のプロキシ再暗号化システムの構成例を示す。図5に変形例のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをn番目の受信装置が復号する場合の処理フローを示す。図6に変形例のn番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをm番目の受信装置が復号する場合の処理フローを示す。
【0029】
変形例のプロキシ再暗号化システムは、ネットワーク1000で接続された送信装置100、N個の受信装置202,…,202、再暗号化装置300、鍵生成手段402を有する。実施例1との構成上の違いは、受信装置202が秘密鍵・公開鍵生成部を備えておらず、鍵生成手段402が秘密鍵・公開鍵生成部410を備えている点だけである。
【0030】
まず、図5にしたがって、n番目の受信装置202の公開鍵pkを用いて暗号化された暗号文Cをn番目の受信装置202が復号する場合の処理フローを説明する。鍵生成手段402の秘密鍵・公開鍵生成部410は、xを0以上q−1以下の整数からランダムに選ぶ。秘密鍵・公開鍵生成部410は、秘密鍵skをsk=xまたはsk=1/xとし、公開鍵pkをpk=g^skとする(S412)。そして、秘密鍵skと公開鍵pkを鍵記録部490に記録し、公開鍵pkを公開し、秘密鍵skを受信装置201に送信する。受信装置202は、秘密鍵skと公開鍵pkを復号記録部290に記録する。このように、変形例の場合も、復号記録部290に秘密鍵skと公開鍵pkが記録される。この状態は、実施例1のステップS211が終了した状態と同じである。この後の処理は実施例1と同じなので説明を省略する。
【0031】
次に、図6にしたがって、n番目の受信装置の公開鍵pkを用いて暗号化された暗号文Cをm番目の受信装置が復号する場合の処理フローを説明する。鍵生成手段402の秘密鍵・公開鍵生成部410は、xを0以上q−1以下の整数からランダムに選ぶ。秘密鍵・公開鍵生成部410は、秘密鍵skをsk=xまたはsk=1/xとし、公開鍵pkをpk=g^skとする(S412)。そして、秘密鍵skと公開鍵pkを鍵記録部490に記録し、公開鍵pkを公開し、秘密鍵skを受信装置202に送信する。受信装置202は、秘密鍵skと公開鍵pkを復号記録部290に記録する。なお、この処理フローの場合、受信装置202は処理を行わないので、鍵生成手段402が秘密鍵skを受信装置202に送信する処理と、受信装置202が秘密鍵skと公開鍵pkを記録する処理とが実行されていなくても、図6の処理フローは進めることができる。
【0032】
秘密鍵・公開鍵生成部410は、xを0以上q−1以下の整数からランダムに選ぶ。秘密鍵・公開鍵生成部410は、秘密鍵skをsk=xまたはsk=1/xとし、公開鍵pkをpk=g^skとする(S412)。そして、秘密鍵skと公開鍵pkを鍵記録部490に記録し、公開鍵pkを公開し、秘密鍵skを受信装置202に送信する。受信装置202は、秘密鍵skと公開鍵pkを復号記録部290に記録する。ここまでの処理で、受信装置202の復号記録部290に秘密鍵skと公開鍵pkが記録され、鍵生成手段402の鍵記録部490に秘密鍵skと秘密鍵skが記録された状態となる。つまり、実施例1のステップS211が終了した状態と同じである。この後の処理は実施例1と同じなので説明は省略する。
【0033】
実施例1と変形例1が相違する部分は、本発明を実行するための準備の部分である。つまり、本発明は、何らかの方法で、受信装置が自己の秘密鍵を記録し、鍵生成手段が複数の受信装置の秘密鍵を記録し、受信装置の公開鍵が公開された状態にすれば実行可能である。つまり、この状態にするまでの方法は、限定する必要がない。
【0034】
以下に、本発明の効果について説明する。なお、実施例1と変形例の効果は同じである。図7に、従来技術と本発明との比較表を示す。なお、|Z|は0以上q−1以下の整数で形成される群Zの要素サイズ、|G|は群Gの要素サイズ、|G|は群Gの要素サイズ、|H|はハッシュ関数の記述長、nはハッシュ関数の出力長、|vk|,|Sig|はそれぞれ使い捨て署名の検証鍵のサイズと署名のサイズを示している。図7に示すように、本発明のプロキシ再暗号化システムによれば、使い捨て署名を用いておらず、非特許文献2の方式よりもシステムパラメータのサイズが小さく、非特許文献1の方式よりも暗号文のサイズが小さい。
【0035】
本発明のプロキシ再暗号化システムによれば、暗号文Cの中のCn4が署名の役割を果たすので、後述の安全性の証明で示すように暗号文の正当性を保証できる。したがって、従来技術と同じ安全性を確保できる。また、本発明のプロキシ再暗号化システムによれば、再暗号化鍵rkm/n
rkm/n=sk/sk
のように生成されるので、再暗号化鍵を繰返し乗算することで別の再暗号化鍵を生成できる。具体的には、n番目の受信装置201で復号できる暗号文Cからm番目の受信装置201で復号できる暗号文Cに再暗号化するための再暗号化鍵rkm/nと、m番目の受信装置201で復号できる暗号文Cからi番目の受信装置201で復号できる暗号文Cに再暗号化するための再暗号化鍵rki/mとがある場合に、
rki/n=rki/m・rkm/n
のように再暗号化鍵を乗算するだけでrki/n(n番目の受信装置201で復号できる暗号文Cからi番目の受信装置201で復号できる暗号文Cに再暗号化するための再暗号化鍵)を生成できる。この方法の場合、3つ以上の再暗号化鍵を乗算することも可能である。また、
1/rkm/n
のように逆数にするだけで、逆方向の再暗号化鍵rkn/mになる。したがって、再暗号化を繰り返すことや双方向の再暗号化が容易である。
【0036】
[安全性の証明]
定理:もしDBDH仮定が成立し、ハッシュ関数が標的衝突困難ハッシュ関数ならば、方式Σは標準モデルでIND−biPRE−CCA2安全な双方向プロキシ再暗号方式である。
略証:DBDH仮定と等価なmDBDH仮定を用いる。Σの攻撃者Aがオラクルに質問する回数をqとする。どのようなPPT Aに対してもあるPPT Bが存在して
【0037】
【数1】

【0038】
が成立することを示す。mDBDH問題を解くPPT Bは(g,g,g,g,Q)を入力として受け取り、Qがe(g,g)ab/cかランダムなGの元か判定したい。BはIND−bi−CCA2安全性を破る攻撃者Aを利用するためにシステムパラメータを準備し、各オラクルのシミュレーションを行う。最初にシステムパラメータを以下のように設定する。
Setup:入力(g,g,g,g,Q)を受け取ると0以上q−1以下の整数ωを選び、
h=(g)ω
を計算する。次にg=gとして、さらに0以上q−1以下の整数x,x,y,y,yを選び、
u=g(g)^y
v=(g^x)(g)^y
d=(g^x)(g)^y
を計算してPP=(G,G,e,q,g,g,h,u,v,d)とする。
【0039】
鍵生成、再暗号鍵生成、再暗号化、復号オラクルのシミュレーションを以下のように行う。なおアスタリスクが付いた文字はチャレンジ暗号文の要素であることを示す。
Key Generation:0以上q−1以下の整数xを選び、ユーザiがuncorruptedなら
pk=(g)^x
を返し,corruptedなら
sk=x, pk=g^x
として(pk,sk)を返す。
Re-Key Generation:(i,j)を受け取ると、もしユーザiとユーザjの一方がuncorrupted でもう一方がcorruptecdならば何も返さない。そうでなければx/xを返す。
Decryption:pkとC=(C,C,C,C,C)を受け取ると以下を実行する。
1. check(C)=1を検証する。成立しないならエラーを出力する。
2. (C,C)≠(C,C)かつt=tを検証する。成立するならシミュレーションを中止しランダムなビットを出力する。
3. t+sx+x=0を検証する。成立するならシミュレーションを中止しランダムなビットを出力する。
なお。DOの場合,上記2の判定は行わない。
【0040】
これまでの検証に合格している場合、ある0以上p−1以下の整数rが存在して
=pk^r
=(ud)
t=H(C,C
s=C
という形になっている(check(C)=1が成立するため)。このときpkはuncorruptedユーザの鍵であり
^x=g^(cr)
が成立する。したがって、
α=C^((ty+sy+y)/x
=g^(cr(ty+sy+y))
が計算できる。システムパラメータの設定より
=(ud)=g^(r(t+sx+x+c(ty+sy+y)))
と書けるため、
τ=C/α=g^(r(t+sx+x))
とすれば
τ^(1/(t+sx+x))=g
を得ることができる。これを用いて
m’=C/e(g,g
を計算して返す。
Re-Encryption:暗号文C=(C,C,C,C,C)を受け取ると以下を実行する。
1. ユーザi,jが共にuncorruptedならx/xを再暗号化鍵としてReEncを実行し、
C’=ReEnc(x/x,C)
を返す。
2. ユーザiがcorrupted、ユーザjがuncorruptedならpk=g^x,pk=g^(cx)となっているため、
’=C^(x/ω)=(h)^(x/ω)=g^(crx)=pk
としてC’=(C’,C,C,C,C
を返す。
3. ユーザiがuncorrupted、ユーザjがcorruptedならpk=g^(cx),pk=g^xとなっているため、復号オラクルのシミュレーションと同様の方法でgを得て
’=(g)^x=pk
とし、C’=(C’,C,C,C,C)を返す。
IND−biPRE−CCA2の攻撃者Aが(i,m,m)を出力すると以下のようにチャレンジ暗号文を生成する。
Challenge:{0,1}からランダムにσを選び、
=(g)^xi*=g^(cxi*)=(pki*b/c
=(gω=hb/c
=Qmσ
=H(C,C
=−(t+x)/x
=(g)^(t+s+y
=(gb/c)^(t+s+x+c(t+s+y))
=(u^(td))b/c
を計算する。
【0041】
以上がBによるシミュレーションの記述である。最終的にAはσ’を出力し、このときBはσ’=σならば1を出力(Q=e(g,g)ab/cと判定)し、そうでなければ0を出力(Qはランダムと判定)する。
【0042】
復号オラクル(Decryption)のシミュレーションにおいて、2番目の条件によって中止する確率は高々AdvTCR(λ)である。また、攻撃者Aがt+sx+x=0を満たす暗号文C=(C,C,C,C,s)を質問しない限り、再暗号化オラクルと復号オラクルを完全にシミュレート可能である。チャレンジ暗号文からt+s+x=0という情報が得られるが、攻撃者Aは(x,x)の情報を得られないためt+sx+x=0が成立する確率は高々1/pしかない。よって3番目の条件によって中止する確率は高々q/qである。Q=e(g,g)ab/cの場合、IND−biPRE−CCA2ゲームを完全にシミュレートしており、
【0043】
【数2】

【0044】
が成立する(証明終)。
【0045】
[プログラム、記録媒体]
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【0046】
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0047】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【0048】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【0049】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
【0050】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【0051】
100 送信装置
110 暗号化部
190 暗号化記録部
201,…,201,202,…,202 受信装置
210 秘密鍵・公開鍵生成部
220 復号部
290 復号記録部
300 再暗号化装置
310 再暗号化部
390 再暗号化記録部
401,402 鍵生成手段
410 秘密鍵・公開鍵生成部
420 再暗号化鍵生成部
490 鍵記録部
1000 ネットワーク

【特許請求の範囲】
【請求項1】
送信装置、N個の受信装置R,…,R、再暗号化装置、鍵生成手段を有するプロキシ再暗号化システムであって、
Nは2以上の整数、nとmは1以上N以下の整数、λはセキュリティパラメータを示す整数、qはλビットの素数、GとGは素数位数qの巡回乗算群、gは群Gの生成元、eはG×G→Gのように写像する双線形ペアリング関数、Hは群Gの元と群Gの元を入力とし所定のビット長の整数に写像するハッシュ関数を示す記号、g1,h,u,v,dはランダムに選択された群Gの生成元、xを0以上q−1以下からランダムに選ばれた整数、^はべき乗を示す記号とし、
前記送信装置は、
受信装置Rの公開鍵pkと平文Mとを取得すると、0以上q−1以下の整数からランダムにr,sを選び、
n1=pk
n2=h
n3=e(g,g・M
t=H(Cn2,Cn3
n4=(ud)
n5=s
を生成し、Cn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成する暗号化部
を備え、
前記受信装置Rは、
sk=xまたはsk=1/x、pk=g^skの関係を有する秘密鍵skと公開鍵pkを記録する復号記録部と、
受信した暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つ場合には、
M=Cn3/(e(Cn1,g)^(1/sk))
を計算し、平文Mを求める復号部と、
を備え、
前記鍵生成手段は、
受信装置Rの秘密鍵skと受信装置R(ただし、m≠n)の秘密鍵skを記録する鍵記録部と、
再暗号化鍵rkm/n
rkm/n=sk/sk
のように生成する再暗号化鍵生成部と、
を備え、
前記再暗号化装置は、
再暗号化鍵rkm/nを記録する再暗号化記録部と、
秘密鍵skで復号できる暗号文Cから、再暗号化鍵rkm/nを用いて秘密鍵skで復号できる暗号文Cを生成するときには、暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つ場合には、
m1=Cn1^rkm/n
m2=Cn2
m3=Cn3
m4=Cn4
m5=Cn5
の関係を有するCm1,Cm2,Cm3,Cm4,Cm5が含まれる暗号文Cを生成する再暗号化部と、
を備える
プロキシ再暗号化システム。
【請求項2】
請求項1記載のプロキシ再暗号化システムであって、
前記再暗号化部は、
秘密鍵skで復号できる暗号文Cから、再暗号化鍵rkm/nを用いて秘密鍵skで復号できる暗号文Cを生成するときには、暗号文CからCm1,Cm2,Cm3,Cm4,Cm5を取得し、
t=H(Cm2,Cm3
を計算し、
e(h,Cm1)=e(Cm2,pk
e(h,Cm4)=e(Cm2,u(v^Cm5)d)
が成り立つ場合には、
n1=Cm1^(1/rkm/n
n2=Cm2
n3=Cm3
n4=Cm4
n5=Cm5
の関係を有するCn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成する
ことを特徴とするプロキシ再暗号化システム。
【請求項3】
受信装置Rの秘密鍵skで復号できる暗号文Cと受信装置R(ただし、m≠n)の秘密鍵skで復号できる暗号文Cとの間で再暗号化を行うための再暗号化鍵rkm/nを生成する鍵生成装置であって、
秘密鍵skと秘密鍵skを記録する鍵記録部と、
再暗号化鍵rkm/n
rkm/n=sk/sk
のように生成する再暗号化鍵生成部と、
を備える鍵生成装置。
【請求項4】
受信装置Rの秘密鍵skで復号できる暗号文Cと受信装置R(ただし、m≠n)の秘密鍵skで復号できる暗号文Cとの間で再暗号化を行う再暗号化装置であって、
rkm/n=sk/skである再暗号化鍵rkm/nを記録する再暗号化記録部と、
秘密鍵skで復号できる暗号文Cから、再暗号化鍵rkm/nを用いて秘密鍵skで復号できる暗号文Cを生成するときには、暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つ場合には、
m1=Cn1^rkm/n
m2=Cn2
m3=Cn3
m4=Cn4
m5=Cn5
の関係を有するCm1,Cm2,Cm3,Cm4,Cm5が含まれる暗号文Cを生成する再暗号化部と、
を備える再暗号化装置。
【請求項5】
請求項4記載の再暗号化装置であって、
前記再暗号化部は、
秘密鍵skで復号できる暗号文Cから、再暗号化鍵rkm/nを用いて秘密鍵skで復号できる暗号文Cを生成するときには、暗号文CからCm1,Cm2,Cm3,Cm4,Cm5を取得し、
t=H(Cm2,Cm3
を計算し、
e(h,Cm1)=e(Cm2,pk
e(h,Cm4)=e(Cm2,u(v^Cm5)d)
が成り立つ場合には、
n1=Cm1^(1/rkm/n
n2=Cm2
n3=Cm3
n4=Cm4
n5=Cm5
の関係を有するCn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成する
ことを特徴とする再暗号化装置。
【請求項6】
再暗号化装置、鍵生成手段を用いたプロキシ再暗号化方法であって、
Nは2以上の整数、nとmは1以上N以下の整数、λはセキュリティパラメータを示す整数、qはλビットの素数、GとGは素数位数qの巡回乗算群、gは群Gの生成元、eはG×G→Gのように写像する双線形ペアリング関数、Hは群Gの元と群Gの元を入力とし所定のビット長の整数に写像するハッシュ関数を示す記号、g1,h,u,v,dはランダムに選択された群Gの生成元、x,r,sは0以上q−1以下からランダムに選ばれた整数、^はべき乗を示す記号とし、
秘密鍵skはsk=xまたはsk=1/x、公開鍵pkはpk=g^skの関係を有し、
暗号文Cは、
n1=pk
n2=h
n3=e(g,g・M
t=H(Cn2,Cn3
n4=(ud)
n5=s
であるCn1,Cn2,Cn3,Cn4,Cn5を含んでおり、
前記鍵生成手段が、再暗号化鍵rkm/n(ただし、m≠n)を
rkm/n=sk/sk
のように生成する再暗号化鍵生成ステップと、
前記再暗号化装置が、秘密鍵skで復号できる暗号文Cから、再暗号化鍵rkm/nを用いて秘密鍵skで復号できる暗号文Cを生成するときには、暗号文CからCn1,Cn2,Cn3,Cn4,Cn5を取得し、
t=H(Cn2,Cn3
を計算し、
e(h,Cn1)=e(Cn2,pk
e(h,Cn4)=e(Cn2,u(v^Cn5)d)
が成り立つ場合には、
m1=Cn1^rkm/n
m2=Cn2
m3=Cn3
m4=Cn4
m5=Cn5
の関係を有するCm1,Cm2,Cm3,Cm4,Cm5が含まれる暗号文Cを生成する再暗号化ステップと、
を有するプロキシ再暗号化方法。
【請求項7】
請求項6記載のプロキシ再暗号化方法であって、
前記再暗号化部が、秘密鍵skで復号できる暗号文Cから、再暗号化鍵rkm/nを用いて秘密鍵skで復号できる暗号文Cを生成するときには、暗号文CからCm1,Cm2,Cm3,Cm4,Cm5を取得し、
t=H(Cm2,Cm3
を計算し、
e(h,Cm1)=e(Cm2,pk
e(h,Cm4)=e(Cm2,u(v^Cm5)d)
が成り立つ場合には、
n1=Cm1^(1/rkm/n
n2=Cm2
n3=Cm3
n4=Cm4
n5=Cm5
の関係を有するCn1,Cn2,Cn3,Cn4,Cn5が含まれる暗号文Cを生成する逆向き再暗号化ステップも有する
ことを特徴とするプロキシ再暗号化方法。
【請求項8】
請求項1または2に記載のプロキシ再暗号化システムを構成する前記送信装置、前記受信装置、前記再暗号化装置、前記鍵生成手段のいずれかとしてコンピュータを機能させるためのプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−150378(P2012−150378A)
【公開日】平成24年8月9日(2012.8.9)
【国際特許分類】
【出願番号】特願2011−10541(P2011−10541)
【出願日】平成23年1月21日(2011.1.21)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】