首页> 中国专利> 加密系统、重加密密钥生成装置、重加密装置和加密程序

加密系统、重加密密钥生成装置、重加密装置和加密程序

摘要

加密装置(200)输出被设定了相互对应的属性信息x

著录项

  • 公开/公告号CN105850071A

    专利类型发明专利

  • 公开/公告日2016-08-10

    原文格式PDF

  • 申请/专利权人 三菱电机株式会社;

    申请/专利号CN201480071416.0

  • 发明设计人 川合丰;高岛克幸;

    申请日2014-01-14

  • 分类号H04L9/08;H04L9/14;

  • 代理机构北京三友知识产权代理有限公司;

  • 代理人李辉

  • 地址 日本东京都

  • 入库时间 2023-06-19 00:16:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-25

    授权

    授权

  • 2016-09-07

    实质审查的生效 IPC(主分类):H04L9/08 申请日:20140114

    实质审查的生效

  • 2016-08-10

    公开

    公开

说明书

技术领域

本发明涉及函数型加密中的代理重加密(Functional Proxy Re-Encryption:FPRE)方式。

背景技术

代理重加密(Proxy Re-Encryption:PRE)是不对密文进行解密而将密文的解密权限委托给他人的系统。在非专利文献1中具有与基于ID的加密中的PRE(Identity-Based PRE:IBPRE)方式有关的记载。在非专利文献2中具有与基于属性的加密中的PRE(Attribute-Based PRE:ABPRE)方式有关的记载。在非专利文献2所述的PRE方式中,能够对密文仅指定由逻辑“与”和“非”构成的属性。

在专利文献1中,具有与函数型加密(Functional Encryption:FE)方式有关的记载。在非专利文献3中,具有与FPRE方式有关的记载。

现有技术文献

专利文献

专利文献1:日本特开2012-133214号公报

非专利文献

非专利文献1:M.Green,and G.Ateniese,Identity-Based Proxy Re-encryption.InApplied Cryptography and Network Security.volume 4521of LNCS,pp 288-306,2007.

非专利文献2:Xiaohui Liang,Zhenfu Cao,Huang Lin,Jun Shao.Attribute basedproxy re-encryption with delegating capabilities.ASIACCS 2009pp.276-286.

非专利文献3:Yutaka kawai and Katuyuki Takashima,Fully-Anonymous FunctionalProxy-Re-Encryption.Cryptology ePrint Archive:Report 2013/318

非专利文献4:R.Canetti and S.Hohenberger.Chosen-Ciphertext Secure ProxyRe-encryption.In ACMCCS 2007.

非专利文献5:Okamoto,T Takashima,K.:Decentralized Attribute-Based Signatures.ePrint http://eprint.iacr.org/2011/701

非专利文献6:Okamoto,T Takashima,K.:Fully Secure Unbounded Inner-Productand Attribute-Based Encryption.ePrint http://eprint.iacr.org/2012/671

非专利文献7:Okamoto,T.,Takashima,K.:Achieving Short Ciphertexts or ShortSecret-Keys for Adaptively Secure General Inner-Product Encryption.CANS 2011,LNCS,vol.7092,pp.138-159Springer Heidelberg(2011).

发明内容

发明要解决的课题

在非专利文献3所述的FPRE方式中,当对通过加密算法生成的原始密文进行重加密时,密文尺寸成为3倍。当进一步对重密文进行重加密时,密文尺寸进一步成为3倍。即,当执行n次重加密时,与原始密文相比,密文尺寸成为3n倍,相对于重加密次数,密文尺寸以指数函数的方式增加。

本发明的目的在于,实现抑制了伴随重加密的密文尺寸的增加量的FPRE方式。

用于解决课题的手段

本发明的加密系统实现在2个信息相互对应的情况下,能够利用被设定了一个信息的解密密钥对被设定了另一个信息的密文进行解密的加密方式下的代理重加密功能,其特征在于,所述加密系统具有:加密装置,其输出被设定了相互对应的属性信息x0、v0中的一方的密文ct0;重加密密钥生成装置,其取得被设定了所述属性信息x0、v0中的另一方的解密密钥k*,输出包含解密密钥k*rk0和密文ct’1的重加密密钥rk1,其中,所述解密密钥k*rk0是利用转换信息r1对所取得的解密密钥k*进行转换而得到的,所述密文ct’1是被设定了相互对应的属性信息x1、v1中的一方且对所述转换信息r1进行加密而得到的;以及重加密装置,其输出包含利用所述解密密钥k*rk0对所述密文ct0进行解密而得到的会话密钥K’0和所述密文ct’1的重密文ct1

发明效果

在本发明的加密系统中,将利用由转换信息转换后的解密密钥对密文进行解密而得到的会话密钥和以传送目的地的利用者能够解密的方式对转换信息进行加密后的密文作为重加密密钥rk。由此,能够抑制伴随重加密的密文尺寸的增加量。

附图说明

图1是矩阵M^的说明图。

图2是矩阵Mδ的说明图。

图3是s0的说明图。

图4是s→T的说明图。

图5是执行CP-FPRE方式的加密系统10的结构图。

图6是示出密钥生成装置100的功能的功能框图。

图7是示出加密装置200的功能的功能框图。

图8是示出解密装置300的功能的功能框图。

图9是示出重加密装置400的功能的功能框图。

图10是示出重密文解密装置500的功能的功能框图。

图11是示出Setup算法的处理的流程图。

图12是示出KG算法的处理的流程图。

图13是示出Enc算法的处理的流程图。

图14是示出RKG算法的处理的流程图。

图15是示出REnc算法的处理的流程图。

图16是示出Dec1算法的处理的流程图。

图17是示出Dec2算法的处理的流程图。

图18是示出Setup算法的处理的流程图。

图19是执行KP-FPRE方式的加密系统10的结构图。

图20是示出密钥生成装置100的功能的功能框图。

图21是示出加密装置200的功能的功能框图。

图22是示出解密装置300的功能的功能框图。

图23是示出重加密装置400的功能的功能框图。

图24是示出重密文解密装置500的功能的功能框图。

图25是示出KG算法的处理的流程图。

图26是示出Enc算法的处理的流程图。

图27是示出RKG算法的处理的流程图。

图28是示出REnc算法的处理的流程图。

图29是示出Dec1算法的处理的流程图。

图30是示出Dec2算法的处理的流程图。

图31是示出实施方式1~4所示的加密系统10的各装置的硬件结构的例子的图。

具体实施方式

对以下说明中的记法进行说明。

在A是随机的变量或分布时,数式101表示根据A的分布而从A中随机选择y。即,在数式101中,y是随机数。

【数式101】

yRA

在A是集合时,数式102表示从A中均匀选择y。即,在数式102中,y是均匀随机数。

【数式102】

yUA

数式103表示在y中设定z,通过z定义y,或y代入z。

【数式103】

y:=z

在a是常数时,数104表示机械(算法)A相对于输入x而输出a。

【数式104】

A(x)→a

例如,

A(x)→1

数式105即Fq表示位数q的有限体。

【数式105】

Fq

矢量表记表示有限体Fq中的矢量显示。即,是数式106。

【数式106】

表示

(x1,...,xn)Fqn.

数式107表示数式108所示的2个矢量x与v的数式109所示的内积。

【数式107】

x·v

【数式108】

x=(x1,...,xn),

v=(v1,...,vn)

【数式109】

Σi=1nxivi

XT表示矩阵X的转置矩阵。

相对于数式110所示的基B和基B*,是数式111。

【数式110】

B:=(b1,...,bN),

B*:=(b1*,...,bN*)

【数式111】

(x1,...,xN)B:=Σi=1Nxibi,

(y1,...,yN)B*:=Σi=1Nyibi*

ej表示数式112所示的标准基矢量。

【数式112】

并且,在以下的说明中,在利用下标或上标表示Vt、nt、wt、zt、nu、wu、zu的情况下,该Vt、nt、wt、zt、nu、wu、zu意味着Vt、nt、wt、zt、nu、wu、zu。同样,在利用上标表示δi、j的情况下,该δi、j意味着δi、j。同样,在利用上标表示的情况下,该意味着

并且,在对下标文字或上标文字标注意味着矢量的→的情况下,该→意味着利用上标标注在下标文字或上标文字上。

实施方式1

在该实施方式中,对实现FPRE方式的基础概念进行说明后,对该实施方式的 FPRE方式的结构进行说明。

第1,对FPRE进行简单说明。

第2,对用于实现FPRE方式的空间即对偶配对矢量空间(Dual Pairing VectorSpaces:DPVS)这样的具有丰富数学构造的空间进行说明。

第3,对用于实现FPRE方式的概念进行说明。这里,对张成方案、属性矢量的内积和访问构造、秘密分散方式(秘密共享方式)进行说明。

第4,对该实施方式的FPRE方式进行说明。在该实施方式中,对密文策略的FPRE方式(Ciphertext-Policy FPRE:CP-FPRE)方式进行说明。因此,首先,对CP-FPRE方式的基本结构进行说明。接着,对实现该CP-FPRE方式的加密系统10的基本结构进行说明。然后,对该实施方式的CP-FPRE方式和加密系统10进行详细说明。

<第1.FPRE>

FPRE是使加密密钥(ek)、解密密钥(dk)、重加密密钥(rk)的关系更加高度化并且变得灵活的代理重加密方式。

FPRE具有以下的2个特征。

第一,加密密钥和解密密钥分别设定属性信息x和属性信息v。而且,针对关系R,仅在R(x、v)成立的情况下,解密密钥dkv能够对由加密密钥ekx加密后的密文进行解密。

第二,除了分别对加密密钥和解密密钥设定属性信息x和属性信息v以外,重加密密钥设定2个属性信息(x’、v)。而且,仅在R(x、v)成立的情况下,重加密密钥rk(x’、v)能够将由加密密钥ekx加密后的密文,变更成能够利用R(x’、v’)成立的解密密钥dkv’进行解密的密文即由加密密钥ekx’加密后的密文。

仅在关系R为等号关系的情况下即x=v的情况下,在R(x、v)成立的情况下,PRE方式是IDPRE。

作为比IDPRE更加一般化的PRE,具有ABPRE。在ABPRE中,加密密钥和解密密钥中设定的属性信息是属性信息的组。例如,加密密钥和解密密钥中设定的属性信息分别是X:=(x1、...、xd)和V:=(v1、...、vd)。

关于属性信息的成分,每个成分的等号关系(例如{xt=vt}t∈{1、...、d})被输入到访问结构S。然后,仅在访问结构S受理了输入的情况下,R(X,V)成立。即,能够利用解密密钥对由加密密钥加密后的密文进行解密。在非专利文献2中提出了访 问结构S被嵌入密文中的密文策略的PRE方式。此时的访问结构是仅由逻辑“与”和“非”构成的构造。

具有不存在密文的传送功能即不存在重加密密钥的通常的FE。在FE中,不存在重加密密钥、重加密处理,加密密钥和解密密钥分别设定有属性信息x和属性信息v。而且,针对关系R,仅在R(x、v)成立的情况下,解密密钥dkv:=(dk、v)能够对由加密密钥ekx:=(ek、x)加密后的密文进行解密。

<第2.对偶配对矢量空间>

首先,对对称双线性配对组进行说明。

对称双线性配对组(q、G、GT、g、e)是质数q、位数q的循环加法组G、位数q的循环乘法组GT、g≠0∈G、能够利用多项式时间计算的非退化双线性配对(Nondegenerate>T的组。非退化双线性配对是e(sg、tg)=e(g、g)st,e(g、g)≠1。

在以下的说明中,设Gbpg为如下算法:将1λ作为输入,输出设安全参数为λ的双线性配对组的参数paramG:=(q、G、GT、g、e)的值。

接着,对对偶配对矢量空间进行说明。

对偶配对矢量空间(q、V、GT、A、e)可以由对称双线性配对组(paramG:=(q、G、GT、g、e))的直积构成。对偶配对矢量空间(q、V、GT、A、e)是质数q、数式113所示的Fq上的N维矢量空间V、位数q的循环组GT、空间V的标准基A:=(a1、...、aN)的组,具有以下的运算(1)(2)。这里,ai如数式114所示。

【数式113】

【数式114】

运算(1):非退化双线性配对

空间V中的配对由数式115定义。

【数式115】

e(x,y):=Πi=1Ne(Gi,Hi)GT

其中,

(G1,...,GN):=x∈V,

(H1,...,HN):=y∈V

这是非退化双线性。即,e(sx、ty)=e(x、y)st,相对于全部的y∈V,在e(x、y)=1的情况下,x=0。并且,相对于全部的i和j,e(ai、aj)=e(g、g)δi、j。这里,如果i=j,则δi、j=1,如果i≠j,则δi、j=0。并且,e(g、g)≠1∈GT

运算(2):失真映射

数式116所示的空间V中的线性变换能够进行数式117。

【数式116】

φi,j(aj)=ai

如果k≠j,则φi,j(ak)=0。

【数式117】

其中,

(g1,...gN):=x

这里,将线性变换称作失真映射。

在以下的说明中,设Gdpvs为如下算法:将1λ(λ∈自然数)、N∈自然数、双线性配对组的参数paramG:=(q、G、GT、g、e)的值作为输入,输出安全参数为λ、设为N维空间V的对偶配对矢量空间的参数paramV:=(q、V、GT、A、e)的值。

另外,这里,对通过上述对称双线性配对组构成对偶配对矢量空间的情况进行说明。另外,也可以通过非对称双线性配对组构成对偶配对矢量空间。在通过非对称双线性配对组构成对偶配对矢量空间的情况下,容易应用以下的说明。

<第3.用于实现FPRE方式的概念>

<第3-1.张成方案>

图1是矩阵M^的说明图。

设{p1、...、pn}为变量的集合。M^:=(M、ρ)是带标签的矩阵。这里,矩阵M是Fq上的(L行×r列)的矩阵。并且,ρ是对矩阵M的各行附加的标签,与{p1、...、pn、¬p1、...、¬pn}中的任意一个常量对应。另外,对M的全部行附加的标签ρi(i=1、...、L)与任意一个常量对应。即,ρ:{1、...、L}→{p1、...、pn、¬p1、...、¬pn}。

针对全部输入列δ∈{0、1}n来定义矩阵M的部分矩阵Mδ。矩阵Mδ是由通过输入列δ使值“1”与标签ρ对应的矩阵M的行构成的部分矩阵。即,矩阵Mδ是由与δi=1的pi对应的矩阵M的行和与δi=0的¬pi对应的矩阵M的行构成的部分矩阵。

图2是矩阵Mδ的说明图。另外,在图2中,设n=7、L=6、r=5。即,变量的集合是{p1、...、p7},矩阵M是(6行×5列)的矩阵。并且,在图2中,关于标签ρ,ρ1与¬p2对应,ρ2与p1对应,ρ3与p4对应,ρ4与¬p5对应,ρ5与¬p3对应,ρ6与p5对应。

这里,设输入列δ∈{0、1}7为δ1=1、δ2=0、δ3=1、δ4=0、δ5=0、δ6=1、δ7=1。该情况下,由与虚线包围的常量(p1、p3、p6、p7、¬p2、¬p4、¬p5)对应的矩阵M的行构成的部分矩阵是矩阵Mδ。即,由矩阵M的第1行(M1)、第2行(M2)、第4行(M4)构成的部分矩阵是矩阵Mδ

换言之,在映射γ:{1、...、L}→{0、1}为[ρ(j)=pi]∧[δi=1]或[ρ(j)=¬pi]∧[δi=0]的情况下,γ(j)=1,在其它情况下,γ(j)=0。该情况下,Mδ:=(Mj)γ(j)=1。这里,Mj是矩阵M的第j行。

即,在图2中,映射γ(j)=1(j=1、2、4),映射γ(j)=0(j=3、5、6)。因此,(Mj)γ(j)=1是M1、M2、M4,是矩阵Mδ

即,根据映射γ(j)的值是“0”还是“1”,决定矩阵M的第j行是否包含在矩阵Mδ中。

仅在1∈span<Mδ>的情况下,张成方案M^受理输入列δ,在其它情况下,拒绝输入列δ。即,仅在对通过输入列δ从矩阵M^得到的矩阵Mδ的行进行线性耦合而得到1的情况下,张成方案M^受理输入列δ。另外,1是各要素为值“1”的行矢量。

例如,如果是图2的例子,则仅在对由矩阵M的第1、2、4行构成的矩阵Mδ的各行进行线性耦合而得到1的情况下,张成方案M^受理输入列δ。即,在存在α1(M1)+α2(M2)+α4(M4)=1的α1、α2、α4的情况下,张成方案M^受理输入列δ。

这里,在标签ρ仅与正的常量{p1、...、pn}对应的情况下,张成方案被称作单调。另一方面,在标签ρ与常量{p1、...、pn、¬p1、...、¬pn}对应的情况下,张成方案被称作非单调。这里,设张成方案为非单调。而且,使用非单调张成方案构成访问结构(非单调访问结构)。简单地讲,访问结构是指进行对加密的访问控制。即,是指进行是否能够对密文进行解密的控制。

在后面详细叙述,由于张成方案不是单调而是非单调,由此,利用张成方案构成的FPRE方式的利用范围较广。

<第3-2.属性信息的内积和访问结构>

这里,使用属性信息的内积计算上述映射γ(j)。即,使用属性信息的内积决定将矩阵M的哪个行包含在矩阵Mδ中。

是部分全集合(sub-universe),是属性的集合。而且,Ut分别包含部分全集合的识别信息(t)和n维矢量(v)。即,Ut是(t、v)。这里,t∈{1、...、d},v∈Fqn

设Ut:=(t、v)为张成方案M^:=(M、ρ)中的变量p。即,p:=(t、v)。而且,设变量(p:=(t、v)、(t、v’)、...)的张成方案M^:=(M、ρ)为访问结构S。

即,访问结构S:=(M、ρ),ρ:{1、...、L}→{(t、v)、(t、v’)、...、¬(t、v)、¬(t、v’)、...}。

接着,设Γ为属性的集合。即,Γ:={(t、xt)|xt∈Fqn、1≦t≦d}。

在对访问结构S赋予Γ的情况下,如下定义针对张成方案M^:=(M、ρ)的映射γ:{1、...、L}→{0、1}。关于i=1、...、L的各整数i,在[ρ(i)=(t、vi)]∧[(t、xt)∈Γ]∧[vi·xt=0]或[ρ(i)=¬(t、vi)]∧[(t、xt)∈Γ]∧[vi·xt≠0]的情况下,γ(j)=1,在其它情况下,γ(j)=0。

即,根据属性信息v与x的内积来计算映射γ。然后,如上所述,通过映射γ决定将矩阵M的哪个行包含在矩阵Mδ中。即,通过属性信息v与x的内积来决定将矩阵M的哪个行包含在矩阵Mδ中,仅在1∈span<(Mi)γ(i)=1>的情况下,访问结构S:=(M、ρ)受理Γ。

<第3-3.秘密分散方式>

对针对访问结构S:=(M、ρ)的秘密分散方式进行说明。

另外,秘密分散方式是指使秘密信息分散而成为没有意义的分散信息。例如,使秘密信息s分散成10个,生成10个分散信息。这里,10个分散信息各自不具有秘密信息s的信息。因此,即使得到某1个分散信息,也无法得到关于秘密信息s的任何信息。另一方面,如果得到全部10个分散信息,则能够恢复秘密信息s。

并且,还存在如下的秘密分散方式:即使没有得到全部10个分散信息,只要得 到一部分(例如8个),就能够恢复秘密信息s。这样,将能够利用10个分散信息中的8个来恢复秘密信息s的情况称作8-out-of-10。即,将能够利用n个分散信息中的t个来恢复秘密信息s的情况称作t-out-of-n。将该t称作阈值。

并且,还存在如下的秘密分散方式:在生成d1、...、d10这10个分散信息的情况下,如果是d1、...、d8这8个分散信息,则能够恢复秘密信息s,如果是d3、...、d10这8个分散信息,则无法恢复秘密信息s。即,还存在不仅根据得到的分散信息的数量还根据分散信息的组合来控制是否能够恢复秘密信息s的秘密分散方式。

图3是s0的说明图。图4是s→T的说明图。

设矩阵M为(L行×r列)的矩阵。设f→T为数式118所示的列矢量。

【数式118】

fT:=(f1,...fr)TUFqr

设数式119所示的s0为共享的秘密信息。

【数式119】

s0:=1·fT:=Σk=1rfk

并且,设数式120所示的s→T为s0的L个分散信息的矢量。

【数式120】

sT:=(s1,...sL)T:=M·fT

而且,设分散信息si属于ρ(i)。

在访问结构S:=(M、ρ)受理Γ的情况下,即,关于γ:{1、...、L}→{0、1},在1∈span<(Mi)γ(i)=1>的情况下,存在的常数{αi∈Fq|i∈I}。

在图2的例子中,说明了在存在α1(M1)+α2(M2)+α4(M4)=1的α1、α2、α4的情况下张成方案M^受理输入列δ,因此,这是显而易见的。即,在存在α1(M1)+α2(M2)+α4(M4)=1的α1、α2、α4的情况下,如果张成方案M^受理输入列δ,则存在α1(M1)+α2(M2)+α4(M4)=1的α1、α2、α4

然后,是数式121。

【数式121】

i∈Iαisi:=s0

另外,常数{αi}能够利用矩阵M的尺寸下的多项式时间进行计算。

如上所述,以下的实施方式的FPRE方式在张成方案中应用内积谓语和秘密分散方式构成访问结构。因此,通过设计张成方案中的矩阵M、内积谓语中的属性信息x和属性信息v(谓语信息),能够自由设计访问控制。即,能够以非常高的自由度进行访问控制的设计。另外,矩阵M的设计相当于秘密分散方式的阈值等的条件设计。

例如,上述基于属性的加密方式相当于在以下的实施方式的FPRE方式下的访问结构中将内积谓语的设计限定成某个条件的情况。即,与以下的实施方式的FPRE方式下的访问结构相比,在基于属性的加密方式下的访问结构中,没有内积谓语中的属性信息x和属性信息v(谓语信息)的设计的自由度,相应地,访问控制的设计自由度较低。另外,具体而言,基于属性的加密方式相当于将属性信息{xt}t∈{1、...、d}和{vt}t∈{1、...、d}限定成针对等号关系的二维矢量例如xt:=(1、xt)和vt:=(vt、-1)的情况。

并且,内积谓语加密方式下的PRE相当于在以下的实施方式的FPRE方式下的访问结构中将张成方案中的矩阵M的设计限定成某个条件的情况。即,与以下的实施方式的FPRE方式中的访问结构相比,在内积谓语加密方式下的访问结构中,没有张成方案中的矩阵M的设计的自由度,相应地,访问控制的设计自由度较低。另外,具体而言,内积谓语加密方式是将秘密分散方式限定成1-out-of-1(或d-out-of-d)的情况。

特别地,以下的实施方式的FPRE方式下的访问结构构成使用非单调张成方案的非单调访问结构。因此,访问控制的设计自由度更高。

具体而言,由于在非单调张成方案中包含否定形的常量(¬p),因此,能够设定否定形的条件。例如,假设在第1公司中存在A部、B部、C部、D部这4个部门。这里,假设希望进行仅属于第1公司的B部以外的部门的用户能够访问(能够解密)这样的访问控制。该情况下,如果无法进行否定形的条件设定,则需要设定“属于第1公司的A部、C部、D部中的任意部”这样的条件。另一方面,如果能够进行否定形的条件设定,则能够设定“是第1公司的职员且属于B部以外的部”这样的条件。即,由于能够设定否定形的条件,因而能够进行自然的条件设定。另外,这里,部门的数量较少,但是,可知在部门的数量较多的情况下等非常有效。

<第4.FPRE方式的基本结构>

<第4-1.CP-FPRE方式的基本结构>

对CP-FPRE方式的结构进行简单说明。另外,CP(密文策略)意味着在密文中嵌入Policy,即嵌入访问结构。

CP-FPRE方式具有Setup、KG、Enc、RKG、REnc、Dec1、Dec2这7个算法。

(Setup)

Setup算法是将安全参数λ、属性的格式n:=(d;n1、...、nd;u1、...、ud;z1、...、zd)、表示重加密次数的上限值的值Q作为输入而输出公开参数pk和主密钥sk的概率算法。

(KG)

KG算法是将属性集合Γ:={(t、xt)|xt∈Fqnt、1≦t≦d}、公开参数pk、主密钥sk作为输入而输出解密密钥skΓ的概率算法。

(Enc)

Enc算法是将消息m、访问结构S=(M、ρ)、公开参数pk作为输入而输出密文ctnS的概率算法。

(RKG)

RKG算法是将解密密钥skΓ、访问结构S’:=(M’、ρ’)、公开参数pk、表示对要进行重加密的密文ctnS进行重加密的次数的值n作为输入而输出重加密密钥rknΓ.S’的概率算法。

(REnc)

REnc算法是将密文ctnS、重加密密钥rknΓ.S’、公开参数pk作为输入而输出重密文ctn+1S’的概率算法。

(Dec1)

Dec1算法是将重密文ctnS’、解密密钥skΓ’、公开参数pk作为输入而输出消息m或识别信息⊥的算法。

(Dec2)

Dec2算法是将密文ctnS(ct0S)、解密密钥skΓ、公开参数pk作为输入而输出消息m或识别信息⊥的算法。

<第4-2.加密系统10>

对执行CP-FPRE方式的算法的加密系统10进行说明。

图5是执行CP-FPRE方式的加密系统10的结构图。

加密系统10具有密钥生成装置100、加密装置200、解密装置300(重加密密钥生成装置)、重加密装置400、重密文解密装置500(重加密密钥生成装置)。

密钥生成装置100将安全参数λ、属性的格式n:=(d;n1、...、nd;u1、...、ud;z1、...、zd)、值Q作为输入来执行Setup算法,生成公开参数pk和主密钥sk。

然后,密钥生成装置100对公开参数pk进行公开。并且,密钥生成装置100将属性集合Γ作为输入来执行KG算法,生成解密密钥skΓ,秘密地向解密装置300发送。并且,密钥生成装置100将属性集合Γ’作为输入来执行KG算法,生成解密密钥skΓ’,秘密地向重密文解密装置500发送。

加密装置200将消息m、访问结构S、公开参数pk作为输入来执行Enc算法,生成密文ctnS。加密装置200向重加密装置400发送密文ctnS

解密装置300将公开参数pk、解密密钥skΓ、访问结构S’、值n作为输入来执行RKG算法,生成重加密密钥rknΓ.S’。解密装置300秘密地向重加密装置发送重加密密钥rknΓ.S’

并且,解密装置300将公开参数pk、解密密钥skΓ、密文ctnS(ct0S)作为输入来执行Dec2算法,输出消息m或识别信息⊥。

重加密装置400将公开参数pk、重加密密钥rknΓ.S’、密文ctnS作为输入来执行REnc算法,生成重密文ctn+1S’。重加密装置400向重密文解密装置500发送重密文ctn+1S’

重密文解密装置500将公开参数pk、解密密钥skΓ’、重密文ctn+1S’作为输入来执行Dec1算法,输出消息m或识别信息⊥。

<第4-4.CP-FPRE方式和加密系统10的详细>

根据图6~图17对执行CP-FPRE方式和CP-FPRE方式的加密系统10的功能和动作进行说明。

图6是示出密钥生成装置100的功能的功能框图。图7是示出加密装置200的功能的功能框图。图8是示出解密装置300的功能的功能框图。图9是示出重加密装置400的功能的功能框图。图10是示出重密文解密装置500的功能的功能框图。

图11和图12是示出密钥生成装置100的动作的流程图。另外,图11是示出Setup算法的处理的流程图,图12是示出KG算法的处理的流程图。图13是示出加密装置200的动作的流程图,是示出Enc算法的处理的流程图。图14是示出解密装置300的动作的流程图,是示出RKG算法的处理的流程图。图15是示出重加密装置400 的动作的流程图,是示出REnc算法的处理的流程图。图16是示出重密文解密装置500的动作的流程图,是示出Dec1算法的处理的流程图。图17是示出解密装置300的动作的流程图,是示出Dec2算法的处理的流程图。

对密钥生成装置100的功能和动作进行说明。

如图6所示,密钥生成装置100具有主密钥生成部110、主密钥存储部120、信息输入部130、解密密钥生成部140、密钥发送部150(密钥输出部)。并且,解密密钥生成部140具有随机数生成部141、解密密钥k*生成部142。

首先,根据图11对Setup算法的处理进行说明。

(S101:初始设定步骤)

主密钥生成部110执行初始设定。

具体而言,主密钥生成部110执行以下的(1)~(3)的处理。

(1)主密钥生成部110通过输入装置输入安全参数λ(1λ)、属性的格式n:=(d;n1、...、nd;w1、...、wd;z1、...、zd)。这里,d是1以上的整数,关于t=1、...、d的各整数t,nt是1以上的整数,wt、zt是0以上的整数。

(2)主密钥生成部110通过处理装置将(1)中输入的安全参数λ作为输入来执行算法Gbpg,生成双线性配对组的参数paramG:=(q、G、GT、g、e)的值。

(3)主密钥生成部110在N0中设定5,关于t=1、...、d的各整数t,在Nt中设定nt+wt+zt+1。

(S102:重加密次数输入步骤)

主密钥生成部110通过输入装置输入表示重加密次数的上限的值Q。值Q是1以上的整数。

主密钥生成部110反复执行j=0、...、Q次以下的S103~S105的处理。

(S103:标准正交基生成步骤)

主密钥生成部110通过处理装置,针对t=0、...、d的各整数t计算数式122,生成参数paramn→、基B0.j和基B*0.j、基Bt.j和基B*t.j

【数式122】

(1)

关于t=0、...、d的各整数t,执行(2)~(4)的处理

(2)

(3)

(4)

(5)

bt.j,i*:=Σj=1Ntνt,i,jat,j,Bt,j*:=(bt.j,1*,...,bt.j,Nt*)

(6)

即,主密钥生成部110执行以下的处理。

(1)主密钥生成部110生成随机数ψj。并且,主密钥生成部110在gT.j中设定e(G、G)ψj

关于t=0、...、d的各整数t,执行(2)~(5)的处理。

(2)主密钥生成部110将安全参数λ、Nt、paramG:=(q、G、GT、g、e)的值作为输入来执行算法Gdpvs,生成对偶配对矢量空间的参数paramVt:=(q、Vt、GT、At、e)的值。

(3)主密钥生成部110将Nt、Fq作为输入,随机生成线性变换Xt:=(χt、i、j’)i、j’。另外,GL是General>t、i、j’)i、j’意味着与矩阵χt、i、j’的小标i、j’有关的矩阵。这里,在(χt、i、j’)i、j’中,i、j’=1、...、Nt

(4)主密钥生成部110根据随机数ψ和线性变换Xt生成(νt、i、j’)i、j’:=ψ·(XtT)-1。另外,(νt、i、j’)i、j’也与(χt、i、j’)i、j’同样,意味着与矩阵νt、i、j’的小标i、j’有关的矩阵。这里,在(νt、i、j’)i、j’中,i、j’=1、...、Nt

(5)主密钥生成部110根据(3)中生成的线性变换Xt,根据(2)中生成的标准基At生成基Bt.j。主密钥生成部110根据(4)中生成的(νt、i、j’)i、j’,根据(2)中生成的标准基At生成基B*t.j

(6)主密钥生成部110在paramn→.j中设定(1)中生成的gT.j和(2)中生成的 {paramVt}t=0、...、d

(S104:公开参数生成步骤)

主密钥生成部110通过处理装置,如数式123所示生成基B0.j的部分基B^0.j、基Bt.j的部分基B^t.j、基B*0.j的部分基B^*0.j、基B*t.j的部分基B^*t.j

【数式123】

B^0.j*:=(b0.j,2*,b0.j,4*),

B^t,j*:=(bt.j,1*,...,bt.j,nt*,bt.j,nt+wt+1*,...,bt.j,nt+wt+zt*)for>t=1,...,d,

主密钥生成部110将安全参数λ、paramn→.j、部分基B^0.j、B^t.j、B^*0.j、B^*t.j作为公开参数pk。

(S105:主密钥生成步骤)

主密钥生成部110将基矢量b*0.j.1作为主密钥sk。

(S106:主密钥存储步骤)

主密钥存储部120将(S104)中生成的公开参数pk存储在存储装置中。并且,主密钥存储部120将(S105)中生成的主密钥sk存储在存储装置中。

即,在(S101)~(S105)中,密钥生成装置100执行数式124所示的Setup算法,生成公开参数pk和主密钥sk。然后,在(S106)中,密钥生成装置100将生成的公开参数pk和主密钥sk存储在存储装置中。

另外,公开参数例如经由网络公开,成为加密装置200、解密装置300、重加密装置400、重密文解密装置500能够取得的状态。

【数式124】

Setup(1λ,n=(d;n1,...,nd;w1,...,wd;z1,...,zd)):

paramG:=(q,G,GT,g,e)RGbpg(1λ),

N0:=5,Nt:=nt+wt+zt+1for>

for j=0,...,Q,

ψjUFq×,gT.j:=e(g,g)ψj,

for t=0,...,d

Xt=χ~t,1...χ~t,Nt:=(χt,i,j)i,jUGL(Nt,Fq),

νt,1...νt,Nt:=(νt,i,j)i,j:=ψ·(XtT)-1,

bt.j,i:=Σj=1Ntχt,i,jat,j,Bt.j:=(bt.j,1,...,bt.j,Nt),,

bt.j,i*:=Σj=1Ntνt,i,jat,j,Bt,j*:=(bt.j,1*,...,bt.j,Nt*),

B^0.j*:=(b0.j,2*,b0.j,4*),

B^t.j*:=(bt.j,1*,...,bt.j,nt*,bt.j,nt+wt+1*,...,bt.j,nt+wt+zt*)for>t=1,...,d,

sk=({b0.j,1*}j=0,...,Q).

接着,根据图12对KG算法的处理进行说明。

(S201:信息输入步骤)

信息输入部130通过输入装置输入属性集合另外,t也可以不是1以上d以下的全部整数而是1以上d以下的至少一部分整数。并且,属性集合Γ例如设定解密密钥skΓ的使用者的属性信息。

(S202:随机数生成步骤)

随机数生成部141通过处理装置,如数式125所示生成随机数。

【数式125】

(S203:解密密钥k*生成步骤)

解密密钥k*生成部142通过处理装置,关于j=0、...、Q的各整数j,如数式126所示生成解密密钥k*0、j

【数式126】

另外,相对于数式110所示的基B和基B*,是数式111。因此,数式126意味着设定1作为基B*0的基矢量b*0.j.1的系数,设定δj作为基矢量b*0.j.2的系数,设定0作为基矢量b*0.j.3的系数,设定作为基矢量b*0.j.4的系数,设定0作为基矢量b*0.j.5的系数。

并且,解密密钥k*生成部142通过处理装置,关于属性集合Γ中包含的各整数t和j=0、...、Q的各整数j,如数式127所示生成解密密钥k*t.j

【数式127】

另外,数式127意味着设定δjxt.1、...、δjxt.nt作为基B*t的基矢量b*t.j.1、...、b*t.j.nt的系数,设定0作为基矢量b*t.j.nt+1、...、b*t.j.nt+wt的系数,设定作为基矢量b*t.j.nt+wt+1、...、b*t.j.nt+wt+zt的系数,设定0作为基矢量b*t.j.nt+wt+zt+1的系数。

(S204:密钥发送步骤)

密钥发送部150例如通过通信装置,经由网络秘密地向解密装置300发送将属性集合Γ、解密密钥k*0.j、k*t.j作为要素的解密密钥skΓ。当然,也可以通过其它方法向解密装置300发送解密密钥skΓ

即,在(S201)~(S203)中,密钥生成装置100执行数式128所示的KG算法,生成解密密钥skΓ。然后,在(S204)中,密钥生成装置100向解密装置300发送解密密钥skΓ

【数式128】

KG=(pk,sk,Γ=({t,xt)|xtFqnt{0},1td}):

for j=0,...,Q

return>skΓ:=(Γ,{k0.j*,{kt.j*}(t,xt)Γ}j=0,...,Q).

另外,密钥生成装置100在(S201)中输入设定了解密密钥skΓ’的使用者的属性信息的属性集合Γ’:={(t、x’t:=(x’t、1、...、x’t、nt∈Fqnt{0}))|1≦t≦d},执行KG算法,生成解密密钥skΓ’。然后,密钥生成装置100向重密文解密装置500发送解密密钥skΓ’:=(Γ’、{k’*0.j、{k’*t.j}(t、x→t)∈Γ’}j=0、...、Q)。

对加密装置200的功能和动作进行说明。

如图7所示,加密装置200具有公开参数接收部210、信息输入部220、加密部230、密文发送部240(密文输出部)。并且,加密部230具有f矢量生成部231、s矢量生成部232、随机数生成部233、密文c生成部234。

根据图13对Enc算法的处理进行说明。

(S301:公开参数接收步骤)

公开参数接收部210例如通过通信装置,经由网络接收密钥生成装置100生成的公开参数pk。

(S302:信息输入步骤)

信息输入部220通过输入装置输入访问结构S:=(M、ρ)。另外,访问结构S是根据希望实现的系统的条件进行设定的。并且,访问结构S的ρ例如设定有能够对 密文ct0S进行解密的用户的属性信息。这里,ρ(i)=(t、vi:=(vi、1、...、vi、nt)∈Fqnt{0})(vi、nt≠0)。另外,M是L行r列的矩阵。

并且,信息输入部220通过输入装置输入向解密装置300发送的消息m。

并且,信息输入部220通过输入装置输入重加密次数n。这里输入的重加密次数n通常为0,在后述RKG算法中调出Enc算法的情况下,成为由RKG算法指定的值。

(S303:f矢量生成步骤)

f矢量生成部231通过处理装置,如数式129所示生成矢量f

【数式129】

(S304:s矢量生成步骤)

s矢量生成部232通过处理装置,如数式130所示生成矢量s→T

【数式130】

sT:=(s1,...,sL)T:=M·fT

并且,s矢量生成部232通过处理装置,如数式131所示生成值s0

【数式131】

s0:=1·fT

(S305:随机数生成步骤)

随机数生成部233通过处理装置,如数式132所示生成随机数。

【数式132】

η0.n,ζUFq,

θi.n,ηi.nUFqfor>i=1,...,L

(S306:密文c生成步骤)

密文c生成部234通过处理装置,如数式133所示生成密文c0.n

【数式133】

c0.n:=(ζ,-s0,0,0,η0.n)B0.n

并且,密文c生成部234通过处理装置,关于i=1、...、L的各整数i,如数式134所示生成密文ci.n

【数式134】

for i=1,...,L,

ifρ(i)=(t,vi),

并且,密文c生成部234通过处理装置,如数式135所示生成密文cT.n

【数式135】

cT.n:=m·gT.nζ

(S307:密文发送步骤)

密文发送部240例如通过通信装置,经由网络向解密装置300发送将访问结构S、密文c0.n、c1.n、...、cL.n、cT.n、重加密次数n作为要素的密文ctnS。当然,也可以通过其它方法向解密装置300发送密文ctnS

即,在(S301)~(S306)中,加密装置200执行数式136所示的Enc算法,生成密文ctnS。然后,在(S307)中,加密装置200向解密装置300发送已生成的密文ctnS

【数式136】

Enc=(pk,m,S=(M,ρ),n):

sT:=(s1,...,sL)T:=M·fT,s0:=1·fT,

η0.n,ζUFq,

c0.n:=(ζ,-s0,0,0,η0.n)B0.n,cT.n:=m·gT.nζ,

for i=1,...,L,

ifρ(i)=(t,vi),θi.n,ηi.nUFq,

return>ctSn:=(S,{ci.n}i=0,...,L,cT.n,n).

对解密装置300的功能和动作进行说明。

如图8所示,解密装置300具有解密密钥接收部310(解密密钥取得部)、信息输入部320、重加密密钥生成部330、重加密密钥发送部340(重加密密钥输出部)、密文接收部350、张成方案计算部360、补充系数计算部370、配对运算部380、消息计算部390。并且,重加密密钥生成部330具有随机数生成部331、加密部332、解密密钥k*rk生成部333。

这里,根据图14对RKG算法的处理进行说明。在后面叙述Dec2算法。

(S401:解密密钥接收步骤)

解密密钥接收部310例如通过通信装置,经由网络接收从密钥生成装置100发送的解密密钥skΓ。并且,解密密钥接收部310接收密钥生成装置100生成的公开参数pk。

(S402:信息输入步骤)

信息输入部320通过输入装置输入访问结构S’:=(M’、ρ’)。另外,访问结构S’ 是根据希望实现的系统的条件进行设定的。并且,访问结构S’的ρ’例如设定有能够对重密文ctn+1S’进行解密的用户的属性信息。这里,ρ’(i)=(t、v→’i:=(v’i、1、...、v’i、nt)∈Fqnt{0})(v’i、nt≠0)。

并且,信息输入部320通过输入装置输入重加密次数n。这里输入的重加密次数n表示生成用于对几次重加密后的密文进行重加密的重加密密钥。即,在生成用于对一次也没重加密的密文ct0S进行重加密的重加密密钥的情况下,输入0作为重加密次数n。并且,在生成用于对一次重加密后的密文ct1S进行重加密的重加密密钥的情况下,输入1作为重加密次数n。

(S403:随机数生成步骤)

随机数生成部331通过处理装置,如数式137所示生成随机数。

【数式137】

(S404:随机数加密步骤)

加密部332通过处理装置,如数式138所示对随机数rn+1(转换信息)进行加密,生成密文ct’n+1S’。这里,函数En+1是从Fq到GT.n+1的编码函数。

【数式138】

ctSn+1:=(S,{ci.n+1}i=0,...,L,cT.n+1)

REnc(pk,En+1(rn+1),S=(M,ρ))

(S405:解密密钥k*rk生成步骤)

解密密钥k*rk生成部333通过处理装置,如数式139所示生成解密密钥k*rk0.n

【数式139】

并且,解密密钥k*rk生成部333通过处理装置,关于属性集合Γ中包含的各整数t,如数式140所示生成解密密钥k*rkt.n

【数式140】

(S406:密钥发送步骤)

重加密密钥发送部340例如通过通信装置,经由网络秘密地向重加密装置400发送将属性集合Γ、访问结构S’、解密密钥k*rk0.n、k*rkt.n、密文ct’n+1S’、重加密次数n(这里是(S402)中输入的值)作为要素的重加密密钥rknΓ、S’。当然,也可以通过其它方法向重加密装置400发送重加密密钥rknΓ、S’

即,在(S401)~(S405)中,解密装置300执行数式141所示的RKG算法,生成重加密密钥rknΓ、S’。然后,在(S406)中,解密装置300向重加密装置400发送已生成的重加密密钥rknΓ、S’

【数式141】

RKG=(pk,skΓ,n,S′):

ctSn+1:=(S,{ci.n+1}i=0,...,L,cT.n+1)

REnc(pk,En+1(rn+1),S=(M,ρ)),

return>rkΓ,Sn:=(Γ,S,k0.n*rk,{kt.n*rk}(t,xt)Γ,ctSn+1,n).

对重加密装置400的功能和动作进行说明。

如图9所示,重加密装置400具有公开参数接收部410、密文接收部420(密文取得部)、重加密密钥接收部430(重加密密钥取得部)、张成方案计算部440、补充系数计算部450、配对运算部460、重密文发送部470(重密文输出部)。

根据图15对REnc算法的处理进行说明。

(S501:公开参数接收步骤)

公开参数接收部410例如通过通信装置,经由网络接收密钥生成装置100生成的公开参数pk。

(S502:密文接收步骤)

密文接收部420例如通过通信装置,经由网络接收加密装置200发送的密文ctnS

(S503:重加密密钥接收步骤)

重加密密钥接收部430例如通过通信装置,经由网络接收从解密装置300发送的重加密密钥rknΓ、S’

(S504:张成方案计算步骤)

张成方案计算部440通过处理装置判定密文ctnS中包含的访问结构S是否受理重加密密钥rknΓ、S’中包含的Γ。访问结构S是否受理Γ的判定方法如实施方式1中的“第3.用于实现FPRE的概念”中说明的那样。

张成方案计算部440在访问结构S受理Γ的情况下(S504:受理),使处理进入(S505)。另一方面,在访问结构S拒绝Γ的情况下(S504:拒绝),结束处理。

(S505:补充系数计算步骤)

补充系数计算部450通过处理装置计算成为数式142的I和常数(补充系数){αi}i∈I

【数式142】

1=ΣiIαiMi

where Mi>

(S506:配对运算步骤)

配对运算部460通过处理装置计算数式143,生成会话密钥K’n

【数式143】

(S507:重密文发送步骤)

重密文发送部470例如通过通信装置,经由网络秘密地向重密文解密装置500发送将会话密钥K’n、密文cT.n、访问结构S’、密文ct’n+1S’、重加密次数n+1(这里是 (S502)中接收到的密文ctnS中包含的重加密次数n或(S503)中接收到的重加密密钥rknΓ、S’中包含的重加密次数n加1而得到的值)作为要素的重密文ctn+1S’。当然,也可以通过其它方法向重密文解密装置500发送重密文ctn+1S’

另外,这里,假设对加密装置200输出的密文ctnS(ct0S)进行重加密的情况进行了说明。但是,也可以进一步对重加密装置400输出的重密文ctn+1S’进行重加密。

该情况下,在(S502)中,密文接收部420代替加密装置200输出的密文ctnS而取得重加密装置400输出的重密文ctn+1S’作为密文ctnS。另外,在密文ctn+1S’中作为要素包含访问结构S’,但是,为了简便而将该访问结构S’改写成访问结构S。并且,在密文ctn+1S’中,重加密次数成为n+1,但是,为了简便而将该重加密次数改写成n。

然后,在(S507)中,重密文发送部470向重密文解密装置500发送除了上述要素以外还将(S502)中取得的密文ctnS中包含的要素(会话密钥{K’j}j=1、...、n和密文{cT.j}j=0、...、n-1)作为要素的重密文ctn+1S’

其它处理如上所述。

即,在(S501)~(S506)中,重加密装置400执行数式144所示的REnc算法,生成重密文ctn+1S’。然后,在(S507)中,重加密装置400向重密文解密装置500发送已生成的重密文ctn+1S’

【数式144】

REnc=(pk,rkΓ,Sn,ctSn)

If S acceptsΓ,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi>

return>ctSn+1:=(S,{cT.j,Kj}j=0,...,n,ctSn+1,n+1).

另外,在(S502)中接收到的密文ctnS中包含的重加密次数n和(S503)中接收到的重加密密钥rknΓ、S’中包含的重加密次数n不一致的情况下,无法进行重加密。

对重密文解密装置500的功能和动作进行说明。

如图10所示,重密文解密装置500具有解密密钥接收部510、密文接收部520、张成方案计算部530、补充系数计算部540、配对运算部550、随机数计算部560、消息计算部570。

根据图16对Dec1算法的处理进行说明。

(S601:解密密钥接收步骤)

解密密钥接收部510例如通过通信装置,经由网络接收从密钥生成装置100发送的解密密钥skΓ’。并且,解密密钥接收部310接收密钥生成装置100生成的公开参数pk。

(S602:密文接收步骤)

密文接收部520例如通过通信装置,经由网络接收重加密装置400发送的重密文ctnS’

另外,在REnc算法中是输出重密文ctn+1S’,但是,这里,将表记变更成重密文ctnS’。即,在利用重加密密钥rknΓ、S’(rk0Γ、S’)对重加密次数0(n=0)的密文ctnS(ct0S)进行重加密而生成重密文ctn+1S(ct0+1S)的情况下,这里,将该重密文ctn+1S(ct0+1S)表记成重密文ctnS(ct1S)。

(S603:张成方案计算步骤)

张成方案计算部530通过处理装置判定重密文ctnS’中包含的访问结构S’是否受理解密密钥skΓ’中包含的Γ’。访问结构S’是否受理Γ’的判定方法如实施方式1中的“第3.用于实现FPRE的概念”中说明的那样。

张成方案计算部530在访问结构S’受理Γ’的情况下(S603:受理),使处理进入(S604)。另一方面,在访问结构S’拒绝Γ’的情况下(S603:拒绝),结束处理。

(S604:补充系数计算步骤)

补充系数计算部540通过处理装置计算成为数式145的I和常数(补充系数){αi}i∈I

【数式145】

1=ΣiIαiMi

where Mi'>

(S605:配对运算步骤)

配对运算部550通过处理装置计算数式146,生成会话密钥K’n

【数式146】

(S606:随机数计算步骤)

随机数计算部560通过处理装置计算数式147,生成随机数rn

【数式147】

En(rn):=cT.n/K'n,

rn:=decode(En(rn))

进而,在n为2以上的情况下,随机数计算部560通过处理装置,关于j=n-1、...、1的各整数j,依次计算数式148,生成随机数r1

【数式148】

Ej(rj):=cT.j/(Kj)rj+1,

rj:=decode(Ej(rj))

(S607:消息计算步骤)

消息计算部570通过处理装置计算m=cT.0/(K’0)r1,生成消息m。这里,r1意味着随机数r1

即,在(S601)~(S607)中,重密文解密装置500执行数式149所示的Dec1算法,生成消息m。

【数式149】

Dec1=(pk,skΓ,ctSn)

If S′acceptsΓ′,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi'is>

En(rn):=cT.n/K'n,rn:=decode(En(rn)),

for j=n-1,...,1,

Ej(rj):=cT.j/(Kj)rj+1,rj:=decode(Ej(rj)),

m:=cT.0/(K'0)r1,

return m.

根据图17对Dec2算法的处理进行说明。

(S701:解密密钥接收步骤)

解密密钥接收部310例如通过通信装置,经由网络接收从密钥生成装置100发送的解密密钥skΓ。并且,解密密钥接收部310接收密钥生成装置100生成的公开参数pk。

(S702:密文接收步骤)

密文接收部350例如通过通信装置,经由网络接收加密装置200发送的密文ctnS(ct0S)。

(S703:张成方案计算步骤)

张成方案计算部360通过处理装置判定密文ctS中包含的访问结构S是否受理解密密钥skΓ中包含的Γ。访问结构S是否受理Γ的判定方法如实施方式1中的“第3.用于实现FPRE的概念”中说明的那样。

张成方案计算部360在访问结构S受理Γ的情况下(S703:受理),使处理进入 (S704)。另一方面,在访问结构S拒绝Γ的情况下(S703:拒绝),结束处理。

(S704:补充系数计算步骤)

补充系数计算部370通过处理装置计算成为数式150的I和常数(补充系数){αi}i∈I

【数式150】

1=ΣiIαiMi

where Mi>

(S705:配对运算步骤)

配对运算部380通过处理装置计算数式151,生成会话密钥K0

【数式151】

(S706:消息计算步骤)

消息计算部390通过处理装置计算m=cT.0/K0,生成消息m。

即,在(S701)~(S706)中,解密装置300执行数式152所示的Dec2算法,生成消息m。

【数式152】

Dec2=(pk,skΓ,ctS0)

If S acceptsΓ,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi>

m:=cT.0/K0,

return m.

如上所述,实施方式1的加密系统10实现CP-FPRE方式。因此,能够利用1个重加密密钥向多种用户的集合传送密文。

特别地,在实施方式1的加密系统10中,通过一次重加密,密文尺寸增加常数尺寸的要素量。因此,即使执行n次重加密,关于密文尺寸,相对于重加密的执行次数n,仅仅是多项式倍的要素增加。与现有FPRE方式相比,这是非常高效的,能够更加广泛地使用FPRE方式。

另外,在上述说明中,解密装置300兼作重加密密钥生成装置,解密装置300不仅执行Dec2算法,还执行RKG算法。但是,重密文解密装置500作为重加密密钥生成装置,执行RKG算法,生成进一步对重密文ctnS’进行重加密的情况下的重加密密钥。因此,该情况下,重密文解密装置500还具有解密装置300具有的功能结构中的执行RKG算法所需要的功能结构。

并且,解密装置300(或重密文解密装置500)和重加密密钥生成装置也可以是不同的装置。该情况下,解密装置300执行Dec2算法,重加密密钥生成装置执行RKG算法。因此,该情况下,解密装置300具有执行Dec2算法所需要的功能结构,重加密密钥生成装置具有执行RKG算法所需要的功能结构。

并且,在上述说明中是在Nt中设定nt+wt+zt+1。但是,也可以在Nt中设定 nt+wt+ztt。这里,βt是0以上的整数。

并且,在上述说明中是在N0中设定5。但是,也可以在N0中设定1+1+w0+z00。这里,w0、z0、β0是0以上的整数。

实施方式2

在实施方式1中说明的FPRE方式中,在Setup算法中,输入表示重加密次数的上限值的值Q,关于j=1、...、Q的各整数j,分别生成不同的基Bt.j和基B*t.j。因此,重加密次数的上限值越大,则公开参数的尺寸越大,加密处理的效率越差。

在实施方式2中,对如下的FPRE方式进行说明:通过使用带索引的方法,消除重加密次数的上限值,并且,与重加密次数的上限值无关地使公开参数的尺寸固定。

在实施方式2中,省略与实施方式1相同的部分的说明,对与实施方式1不同的部分进行说明。

加密系统10的结构与图5所示的实施方式1的加密系统10的结构相同。但是,在Setup算法中不需要输入值Q。并且,构成加密系统10的各装置的结构与图6~图10所示的实施方式1的各装置的结构相同。

图18是示出Setup算法的处理的流程图。其它算法的处理流程与图12~图17所示的各算法的处理流程相同。REnc算法和Dec2算法的处理内容也与实施方式1相同。

根据图18对Setup算法的处理进行说明。

(S801:标准正交基生成步骤)

主密钥生成部110通过处理装置计算数式153,生成参数paramn→、基B0和基B*0、基Bt和基B*t

【数式153】

paramG:=(q,G,GT,g,e)RGbpg(1λ),

N0:=5,Nt:=2+nt+wt+zt+1for>

ψUFq×,gT:=e(g,g)ψ,

for t=0,...,d,

Xt=χ~t,1...χ~t,Nt:=(χt,i,j)i,jUGL(Nt,Fq),

νt,1...νt,Nt:=(νt,i,j)i,j:=ψ·(XtT)-1,

bt,i:=Σj=1Ntχt,i,jat,j,Bt:=(bt,1,...,bt,Nt),,

bt,i*:=Σj=1Ntνt,i,jat,j,Bt*:=(bt,1*,...,bt,Nt*),

paramn:=(gT,{paramt}t=0,...,d)

(S802:公开参数生成步骤)

主密钥生成部110通过处理装置,如数式154所示生成基B0的部分基B^0、基Bt的部分基B^t、基B*0的部分基B^*0、基B*t的部分基B^*t

【数式154】

B^0*:=(b0,2*,b0,4*),

B^t*:=(bt,1*,...,bt,2+nt*,bt,2+nt+wt+1*,...,bt,2+nt+wt+zt*)for>t=1,...,d,

主密钥生成部110对安全参数λ、paramn→、部分基B^0、B^t、B^*0、B^*t进行合并,设为公开参数pk。

(S803:主密钥生成步骤)

主密钥生成部110将基矢量b*0.1作为主密钥sk。

(S804:主密钥存储步骤)

主密钥存储部120将(S802)中生成的公开参数pk存储在存储装置中。并且,主密钥存储部120将(S803)中生成的主密钥sk存储在存储装置中。

即,在(S801)~(S803)中,密钥生成装置100执行数式155所示的Setup算法,生成公开参数pk和主密钥sk。然后,在(S804)中,密钥生成装置100将生成的公开参数pk和主密钥sk存储在存储装置中。

【数式155】

Setup(1λ,n=(d;n1,...,nd;w1,...,wd;z1,...,zd)):

paramG:=(q,G,GT,g,e)RGbpg(1λ),

N0:=5,Nt:=2+nt+wt+zt+1for>

ψUFq×,gT:=e(g,g)ψ,

for t=0,...,d,

Xt=χ~t,1...χ~t,Nt:=(χt,i,j)i,jUGL(Nt,Fq),

νt,1...νt,Nt:=(νt,i,j)i,j:=ψ·(XtT)-1,

bt,i:=Σj=1Ntχt,i,jat,j,Bt:=(bt,1,...,bt,Nt),,

bt,i*:=Σj=1Ntνt,i,jat,j,Bt*:=(bt,1*,...,bt,Nt*),

paramn:=(gT,{paramt}t=0,...,d)

B^0*:=(b0,2*,b0,4*),

B^t*:=(bt,1*,...,bt,2+nt*,bt,2+nt+wt+1*,...,bt,2+nt+wt+zt*)for>t=1,...,d,,

sk=(b0,1*).

根据图12对KG算法的处理进行说明。

(S201)的处理与实施方式1相同。

(S202:随机数生成步骤)

随机数生成部141通过处理装置,如数式156所示生成随机数。

【数式156】

(S203:解密密钥k*生成步骤)

解密密钥k*生成部142通过处理装置,如数式157所示生成解密密钥k*0

【数式157】

并且,解密密钥k*生成部142通过处理装置,关于属性集合Γ中包含的各整数t,如数式158所示生成解密密钥k*t

【数式158】

(S204:密钥发送步骤)

密钥发送部150例如通过通信装置,经由网络秘密地向解密装置300发送将属性集合Γ、解密密钥k*0、k*t作为要素的解密密钥skΓ

即,在(S201)~(S203)中,密钥生成装置100执行数式159所示的KG算法,生成解密密钥skΓ。然后,在(S204)中,密钥生成装置100向解密装置300发送解密密钥skΓ

【数式159】

KG=(pk,sk,Γ=({t,xt)|xtFqnt{0},1td}):

return>skΓ:=(Γ,k0*{kt*}(t,xt)Γ).

根据图13对Enc算法的处理进行说明。

(S301)~(S304)和(S307)的处理与实施方式1相同。

(S305:随机数生成步骤)

随机数生成部233通过处理装置,如数式160所示生成随机数。

【数式160】

η0.n,ζ,μnUFq,

θi.n,ηi.nUFqfor>i=1,...,L

(S306:密文c生成步骤)

密文c生成部234通过处理装置,如数式161所示生成密文c0.n

【数式161】

c0.n:=(ζ,-s0,0,0,η0.n)B0

并且,密文c生成部234关于i=1、...、L的各整数i,如数式162所示生成密文ci.n

【数式162】

for i=1,...,L,

ifρ(i)=(t,vi),

并且,密文c生成部234通过处理装置,如数式163所示生成密文cT.n

【数式163】

cT.n:=m·gTζ

即,在(S301)~(S306)中,加密装置200执行数式164所示的Enc算法,生成密文ctnS。然后,在(S307)中,加密装置200向解密装置300发送已生成的密文ctnS

【数式164】

Enc=(pk,m,S=(M,ρ),n):

sT:=(s1,...,sL)T:=M·fT,s0:=1·fT,

η0.n,ζ,μnUFq,

c0.n:=(ζ,-s0,0,0,η0.n)B0,cT.n:=m·gTζ,

for i=1,...,L,

ifρ(i)=(t,vi),θi.n,ηi.nUFq,

return>ctSn:=(S,{ci.n}i=0,...,L,cT.n,n).

根据图14对RKG算法的处理进行说明。

(S401)~(S402)、(S404)、(S406)的处理与实施方式1相同。

(S403:随机数生成步骤)

随机数生成部331通过处理装置,如数式165所示生成随机数。

【数式165】

(S405:解密密钥k*rk生成步骤)

解密密钥k*rk生成部333通过处理装置,如数式166所示生成解密密钥k*rk0.n

【数式166】

并且,解密密钥k*rk生成部333关于属性集合Γ中包含的各整数t,如数式167 所示生成解密密钥k*rkt.n

【数式167】

for(t,xt)Γ

即,在(S401)~(S405)中,解密装置300执行数式168所示的RKG算法,生成重加密密钥rknΓ、S’。然后,在(S406)中,解密装置300向重加密装置400发送已生成的重加密密钥rknΓ、S’

【数式168】

RKG=(pk,skΓ,n,S′):

ctSn+1:=(S,{ci.n+1}i=0,...,L,cT.n+1)

REnc(pk,En+1(rn+1),S=(M,ρ)),

for(t,xt)Γ,

return>rkΓ,Sn:=(Γ,S,k0.n*rk,{kt.n*rk}(t,xt)Γ,ctSn+1,n).

根据图16对Dec1算法的处理进行说明。

(S601)~(S604)、(S606)~(S607)的处理与实施方式1相同。

(S605:配对运算步骤)

配对运算部550通过处理装置计算数式169,生成会话密钥Kn

【数式169】

即,在(S601)~(S607)中,重密文解密装置500执行数式170所示的Dec1算法,生成消息m。

【数式170】

Dec1=(pk,skΓ,ctSn)

If S′acceptsΓ′,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi'is>

En(rn):=cT.n/K'n,rn:=decode(En(rn)),

for j=n-1,...,1,

Ej(rj):=cT.j/(Kj)rj+1,rj:=decode(Ej(rj)),

m:=cT.0/(K'0)r1,

return m.

如上所述,实施方式2的加密系统10在密文ci.0的开头2个基矢量中设定索引μn(n、-1),在解密密钥k*rkt.n的开头2个基矢量中嵌入索引σn(1、n)。由此,每当进行重加密时,不用使用不同的基,能够使用相同的基进行重加密。

其结果是,不需要设定重加密次数的上限值。并且,能够与重加密次数的上限值无关地使公开参数的尺寸固定。

另外,关于设定了索引的部分,内积的结果为0即可。因此,在上述说明中,在开头2个基矢量的二维中设定了索引,但是不限于此,也可以在三维以上设定索引。并且,作为索引设定的值也不限于上述说明的值,也可以是其它值。

实施方式3

在实施方式1中,对CP-FPRE方式进行了说明。在实施方式3中,对密钥策略 的FPRE方式(Key-Policy FPRE:KP-FPRE)方式进行说明。

在实施方式3中,省略与实施方式1相同的部分的说明,对与实施方式1不同的部分进行说明。

首先,对KP-FPRE方式的基本结构进行说明。接着,对实现该KP-FPRE方式的加密系统10的基本结构进行说明。然后,对该实施方式的KP-FPRE方式和加密系统10进行详细说明。

对KP-FPRE方式的结构进行简单说明。另外,KP(密钥策略)意味着在密钥中嵌入Policy,即嵌入访问结构。

<第1-1.KP-FPRE方式的基本结构>

KP-FPRE方式具有Setup、KG、Enc、RKG、REnc、Dec1、Dec2这7个算法。

(Setup)

Setup算法是将安全参数λ、属性的格式n:=(d;n1、...、nd;w1、...、wd;z1、...、zd)、表示重加密次数的上限值的值Q作为输入而输出公开参数pk和主密钥sk的概率算法。

(KG)

KG算法是将访问结构S=(M、ρ)、公开参数pk、主密钥sk作为输入而输出解密密钥skS的概率算法。

(Enc)

Enc算法是将消息m、属性集合Γ:={(t、xt)|xt∈Fqnt、1≦t≦d}、公开参数pk作为输入而输出密文ctnΓ的概率算法。

(RKG)

RKG算法是将解密密钥skS、属性集合Γ’:={(t、x’t)|x’t∈Fqnt、1≦t≦d}、公开参数pk作为输入而输出重加密密钥rknS、Γ’的概率算法。

(REnc)

REnc算法是将密文ctnΓ、重加密密钥rknS.Γ’、公开参数pk作为输入而输出重密文ctn+1Γ’的概率算法。

(Dec1)

Dec1算法是将重密文ctnΓ’、解密密钥skS’、公开参数pk作为输入而输出消息m或识别信息⊥的算法。

(Dec2)

Dec2算法是将密文ctnΓ(ct0Γ)、解密密钥skS、公开参数pk作为输入而输出消息m或识别信息⊥的算法。

<第1-2.加密系统10>

对执行KP-FPRE方式的算法的加密系统10进行说明。

图19是执行KP-FPRE方式的加密系统10的结构图。

与图5所示的加密系统10同样,加密系统10具有密钥生成装置100、加密装置200、解密装置300(重加密密钥生成装置)、重加密装置400、重密文解密装置500(重加密密钥生成装置)。

密钥生成装置100将安全参数λ、属性的格式n:=(d;n1、...、nd;w1、...、wd;z1、...、zd)、值Q作为输入来执行Setup算法,生成公开参数pk和主密钥sk。

然后,密钥生成装置100对公开参数pk进行公开。并且,密钥生成装置100将访问结构S作为输入来执行KG算法,生成解密密钥skS,秘密地向解密装置300发送。并且,密钥生成装置100将访问结构S’作为输入来执行KG算法,生成解密密钥skS’,秘密地向重密文解密装置500发送。

加密装置200将消息m、属性集合Γ、公开参数pk作为输入来执行Enc算法,生成密文ctnΓ。加密装置200向重加密装置400发送密文ctnΓ

解密装置300将公开参数pk、解密密钥skS、属性集合Γ’、值n作为输入来执行RKG算法,生成重加密密钥rknS、Γ’。解密装置300秘密地向重加密装置400发送重加密密钥rknS、Γ’

并且,解密装置300将公开参数pk、解密密钥skS、密文ctnΓ(ct0Γ)作为输入来执行Dec2算法,输出消息m或识别信息⊥。

重加密装置400将公开参数pk、重加密密钥rknS、Γ’、密文ctnΓ作为输入来执行REnc算法,生成重密文ctn+1Γ’。重加密装置400向重密文解密装置500发送重密文ctn+1Γ’

重密文解密装置500将公开参数pk、解密密钥skS’、重密文rctn+1Γ’作为输入来执行Dec1算法,输出消息m或识别信息⊥。

<第1-4.KP-FPRE方式和加密系统10的详细>

根据图20~图30对KP-FPRE方式和执行KP-FPRE方式的加密系统10的功能 和动作进行说明。

图20是示出密钥生成装置100的功能的功能框图。图21是示出加密装置200的功能的功能框图。图22是示出解密装置300的功能的功能框图。图23是示出重加密装置400的功能的功能框图。图24是示出重密文解密装置500的功能的功能框图。

图25是示出密钥生成装置100的动作的流程图,是示出KG算法的处理的流程图。图26是示出加密装置200的动作的流程图,是示出Enc算法的处理的流程图。图27是示出解密装置300的动作的流程图,是示出RKG算法的处理的流程图。图28是示出重加密装置400的动作的流程图,是示出REnc算法的处理的流程图。图29是示出重密文解密装置500的动作的流程图,是示出Dec1算法的处理的流程图。图30是示出解密装置300的动作的流程图,是示出Dec2算法的处理的流程图。

对密钥生成装置100的功能和动作进行说明。

如图20所示,密钥生成装置100具有主密钥生成部110、主密钥存储部120、信息输入部130、解密密钥生成部140、密钥发送部150(密钥输出部)。并且,解密密钥生成部140具有随机数生成部141、解密密钥k*生成部142、f矢量生成部143、s矢量生成部144。

Setup算法的处理基本上与实施方式1中说明的Setup算法的处理相同,因此省略说明。但是,基B^0、基B^t、基B*^0、基B*^t中包含的基矢量与实施方式1不同。

密钥生成装置100执行数式171所示的Setup算法,生成公开参数pk和主密钥sk。

【数式171】

Setup(1λ,n=(d;n1,...,nd;w1,...,wd;z1,...,zd)):

paramG:=(q,G,GT,g,e)RGbpg(1λ),

N0:=5,Nt:=nt+wt+zt+1for>

for j=0,...,Q,

ψjUFq×,gT.j:=e(g,g)ψj,

for t=0,...,d,

Xt=χ~t,1...χ~t,Nt:=(χt,i,j)i,jUGL(Nt,Fq),

νt,1...νt,Nt:=(νt,i,j)i,j:=ψ·(XtT)-1,

bt.j,i:=Σj=1Ntχt,i,jat,j,Bt.j:=(bt.j,1,...,bt.j,Nt),,

bt.j,i*:=Σj=1Ntνt,i,jat,j,Bt,j*:=(bt.j,1*,...,bt.j,Nt*),

B^0.j*:=(b0.j,2*,b0.j,5*),

B^t.j*:=(bt.j,1*,...,bt.j,nt*,bt.j,Nt*)for>t=1,...,d,

sk=({b0.j,1*}j=0,...,Q).

根据图25对KG算法的处理进行说明。

(S901:信息输入步骤)

信息输入部130通过输入装置输入访问结构S:=(M、ρ)。另外,访问结构S 的矩阵M是根据希望实现的系统的条件进行设定的。并且,访问结构S的ρ例如设定有解密密钥skS的使用者的属性信息。这里,ρ(i)=(t、vi:=(vi.1、...、vi.nt)∈Fqnt{0})(vi、nt≠0)。

(S902:f矢量生成步骤)

f矢量生成部143通过处理装置,如数式172所示生成矢量f

【数式172】

(S903:s矢量生成步骤)

s矢量生成部144通过处理装置,如数式173所示生成矢量s→T:=(s1、...、sL)T。

【数式173】

sT:=(s1,...,sL)T:=M·fT

并且,s矢量生成部144通过处理装置,如数式174所示生成值s0

【数式174】

s0:=1·fT

(S904:随机数生成步骤)

随机数生成部141通过处理装置,如数式175所示生成随机数。

【数式175】

η0.jUFq,j=0,...,Q,

θi,ηi.jUFqfor>i=1,...,L;j=1,...,Q

(S905:解密密钥k*生成步骤)

解密密钥k*生成部142通过处理装置,关于j=0、...、Q的各整数j,如数式176所示生成解密密钥k*0.j

【数式176】

k0.j*:=(1,-s0,0,0,η0.j)B0.j*for>j=0,...,Q

并且,解密密钥k*生成部142通过处理装置,关于i=1、...、L的各整数i和j=0、...、Q的各整数j,如数式177所示生成解密密钥k*i.j

【数式177】

for i=1,...,L;j=0,...,Q,

ifρ(i)=(t,vi),

(S906:密钥发送步骤)

密钥发送部150例如通过通信装置,经由网络秘密地向解密装置300发送将访问结构S、解密密钥k*0.j、k*i.j作为要素的解密密钥skS。当然,也可以通过其它方法向解密装置300发送解密密钥skS

即,在(S901)~(S905)中,密钥生成装置100执行数式178所示的KG算法,生成解密密钥skS。然后,在(S906)中,密钥生成装置100向解密装置300发送已生成的解密密钥skS

【数式178】

KG=(pk,sk,S=(M,ρ)):

sT:=(s1,...,sL)T:=M·fT,s0:=1·fT,

for j=0,...,Q

η0.jUFq,

k0.j*:=(1,-s0,0,0,η0.j)B0.j*,

for i=1,...,L,

ifρ(i)=(t,vi),θi,ηi.jUFq,

return>skΓ:=(S,{ki.j*}i=0,...,L;j=0,...,Q).

另外,密钥生成装置100在(S901)中输入设定有解密密钥skS’的使用者的属性信息的访问结构S’:=(M’、ρ’),执行KG算法,生成解密密钥skS’。然后,向重密文解密装置500发送解密密钥skS’:=(S’、k’*0、k’*i)。这里,ρ’(i)=(t、v→’i:=(v’i.1、...、v’i.nt)∈Fqnt{0})(v’i、nt≠0)。

对加密装置200的功能和动作进行说明。

如图21所示,加密装置200具有公开参数接收部210、信息输入部220、加密部230、密文发送部240(密文输出部)。并且,加密部230具有随机数生成部233、密文c生成部234。

根据图26对Enc算法的处理进行说明。

(S1001:公开参数接收步骤)

公开参数接收部210例如通过通信装置,经由网络接收密钥生成装置100生成的公开参数pk。

(S1002:信息输入步骤)

信息输入部220通过输入装置输入属性集合Γ:={(t、xt:=(xt.1、...、xt.nt∈Fqnt))|1≦t≦d}。另外,t也可以不是1以上d以下的全部整数而是1以上d以下的至少一部分整数。并且,属性集合Γ例如设定有能够解密的用户的属性信息。

并且,信息输入部220通过输入装置输入向解密装置300发送的消息m。

并且,信息输入部220通过输入装置输入重加密次数n。这里输入的重加密次数n通常为0,在后述RKG算法中调出Enc算法的情况下,成为由RKG算法指定的值。

(S1003:随机数生成步骤)

随机数生成部233通过处理装置,如数式139所示生成随机数。

【数式179】

(S1004:密文c生成步骤)

密文c生成部234通过处理装置,如数式180所示生成密文c0.n

【数式180】

并且,密文c生成部234通过处理装置,关于属性信息Γ中包含的各整数t,如数式181所示生成密文ct.n

【数式181】

并且,密文c生成部234通过处理装置,如数式182所示生成密文cT.n

【数式182】

cT.n:=m·gT.nζ

(S1005:密文发送步骤)

密文发送部240例如通过通信装置,经由网络向解密装置300发送将属性集合Γ、 密文c0.n、ct.n、cT.n作为要素的密文ctnΓ。当然,也可以通过其它方法向解密装置300发送密文ctnΓ

即,在(S1001)~(S1004)中,加密装置200执行数式183所示的Enc算法,生成密文ctnΓ。然后,在(S1005)中,加密装置200向解密装置300发送已生成的密文ctnΓ

【数式183】

Enc=(pk,m,Γ=({t,xt)|xtFqnt{0},1td},n):

return>ctΓn:=(Γ,c0.n,{ct.n}(t,xt),Γ,cT.n,n).

对解密装置300的功能和动作进行说明。

如图22所示,解密装置300具有解密密钥接收部310、信息输入部320、重加密密钥生成部330、重加密密钥发送部340(重加密密钥输出部)、密文接收部350、张成方案计算部360、补充系数计算部370、配对运算部380、消息计算部390。并且,重加密密钥生成部330具有随机数生成部331、加密部332、解密密钥k*rk生成部333。

这里,根据图27对RKG算法的处理进行说明。在后面叙述Dec2算法。

(S1101:解密密钥接收步骤)

解密密钥接收部310例如通过通信装置,经由网络接收从密钥生成装置100发送的解密密钥skS。并且,解密密钥接收部310接收密钥生成装置100生成的公开参数pk。

(S1102:信息输入步骤)

信息输入部320通过输入装置输入属性集合Γ’:={(t、x’t:=(x’t.1、...、x’t.nt∈Fqnt{0}))|1≦t≦d}。另外,t也可以不是1以上d以下的全部整数而是1以上d以下的至少一部分整数。并且,属性集合Γ’例如设定有能够对重密文ctn+1Γ’进行解密的用户的 属性信息。

并且,信息输入部320通过输入装置输入重加密次数n。这里输入的重加密次数n表示生成用于对重加密几次的密文进行重加密的重加密密钥。

(S1103:随机数生成步骤)

随机数生成部331通过处理装置,如数式184所示生成随机数。

【数式184】

rn+1,η0.nranUFq,

ηi.nranUFqfor>i=1,...,L

(S1104:随机数加密步骤)

加密部332通过处理装置,如数式185所示对随机数rn+1(转换信息)进行加密,生成密文ct’n+1Γ’。这里,函数En+1是从Fq到GT.n+1的编码函数。

【数式185】

ctΓn+1:=(Γ,c0.n+1,{ci.n+1}(t,xt),Γ,cT.n+1)

REnc(pk,En+1(rn+1),Γ)

(S1105:解密密钥k*rk生成步骤)

解密密钥k*rk生成部333通过处理装置,如数式186所示生成解密密钥k*rk0.n

【数式186】

k0.n*rk:=(rn+1k0.n*+(0,0,0,0,η0.nran)B0.n*)

并且,解密密钥k*rk生成部333通过处理装置,关于i=1、...、L的各整数i,如数式187所示生成解密密钥k*rki.n

【数式187】

ki.n*rk:=(rn+1ki.n*+(0nt,0wt,0zt,ηi.nran)Bi.n*))for>i=1,...,L

(S1106:密钥发送步骤)

重加密密钥发送部340例如通过通信装置,经由网络秘密地向重加密装置400发送将访问结构S、属性集合Γ’、解密密钥k*rk0.n、k*rki.n、密文ct’n+1Γ’、重加密次数n(这里是(S1102)中输入的值)作为要素的重加密密钥rknS、Γ’。当然,也可以通过其它方法向重加密装置400发送重加密密钥rknS、Γ’

即,在(S1101)~(S1105)中,解密装置300执行数式188所示的RKG算法,生成重加密密钥rknS、Γ’。然后,在(S1106)中,解密装置300向重加密装置400发送已生成的重加密密钥rknS、Γ’

【数式188】

RKG=(pk,skΓ,n,S′):

rn+1,η0.nranUFq,

ηi.nranUFqfor>i=1,...,L,

ctΓn+1:=(Γ,c0.n+1,{ci.n+1}(t,xt),Γ,cT.n+1)

REnc(pk,En+1(rn+1),Γ),

k0.n*rk:=(rn+1k0.n*+(0,0,0,0,η0.nran)B0.n*),

ki.n*rk:=(rn+1ki.n*+(0nt,0wt,0zt,ηi.nran)Bi.n*))for>i=1,...,L,

return>rkS,Γn:=(S,Γ,k0.n*rk,{ki.n*rk}i=1,...,L,ctΓn+1,n).

对重加密装置400的功能和动作进行说明。

如图23所示,重加密装置400具有公开参数接收部410、密文接收部420、重加密密钥接收部430、张成方案计算部440、补充系数计算部450、配对运算部460、重密文发送部470(重密文输出部)。

根据图28对REnc算法的处理进行说明。

(S1201:公开参数接收步骤)

公开参数接收部410例如通过通信装置,经由网络接收密钥生成装置100生成的公开参数pk。

(S1202:密文接收步骤)

密文接收部420例如通过通信装置,经由网络接收加密装置200发送的密文ctnΓ(ct0Γ)。

(S1203:重加密密钥接收步骤)

重加密密钥接收部430例如通过通信装置,经由网络接收从解密装置300发送的重加密密钥rknS、Γ’

(S1204:张成方案计算步骤)

张成方案计算部440通过处理装置判定重加密密钥rknS、Γ’中包含的访问结构S是否受理密文ctnΓ中包含的Γ。访问结构S是否受理Γ的判定方法如实施方式1中的“第3.用于实现FPRE的概念”中说明的那样。

张成方案计算部440在访问结构S受理Γ的情况下(S1204:受理),使处理进入(S1205)。另一方面,在访问结构S拒绝Γ的情况下(S1204:拒绝),结束处理。

(S1205:补充系数计算步骤)

补充系数计算部450通过处理装置计算成为数式189的I和常数(补充系数){αi}i∈I

【数式189】

1=ΣiIαiMi

where Mi>

(S1206:配对运算步骤)

配对运算部460通过处理装置计算数式190,生成会话密钥K’n

【数式190】

(S1207:重密文发送步骤)

重密文发送部470例如通过通信装置,经由网络秘密地向重密文解密装置500发送将会话密钥K’n、密文cT.n、属性集合Γ’、密文ct’n+1Γ’、重加密次数n+1(这里是(S1202)中接收到的密文ctnΓ中包含的重加密次数n或(S1203)中接收到的重加密密钥rknS、Γ’中包含的重加密次数n加1而得到的值)作为要素的重密文ctn+1Γ’。当然,也可以通过其它方法向重密文解密装置500发送重密文ctn+1Γ’

另外,这里,假设对加密装置200输出的密文ctnΓ进行重加密的情况进行了说明。

但是,也可以进一步对重加密装置400输出的重密文ctn+1Γ’进行重加密。

该情况下,在(S1202)中,密文接收部420代替加密装置200输出的密文ct0Γ而取得重加密装置400输出的重密文ctn+1Γ’作为密文ctnΓ。另外,在密文ctn+1Γ’中作为要素包含属性集合Γ’,但是,为了简便而将该属性集合Γ’改写成属性集合Γ。并且,在密文ctn+1Γ’中,重加密次数成为n+1,但是,为了简便而将该重加密次数改写成n。

然后,在(S1207)中,重密文发送部470向重密文解密装置500发送除了上述要素以外还将(S1202)中取得的密文ctnΓ中包含的要素(会话密钥{K’j}j=1、...、n和密文{cT.j}j=0、...、n-1)作为要素的重密文ctn+1Γ’

其它处理如上所述。

即,在(S1201)~(S1206)中,重加密装置400执行数式191所示的REnc算法,生成重密文ctn+1Γ’。然后,在(S1207)中,重加密装置400向重密文解密装置500发送已生成的重密文ctn+1Γ’

【数式191】

REnc=(pk,rkS,Γn,ctΓn)

If S acceptsΓ,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi>

return>ctΓn+1:=(Γ,{cT.j,Kj}j=0,...,n,ctΓn+1,n+1).

另外,在(S1202)中接收到的密文ctnΓ中包含的重加密次数n和(S1203)中接收到的重加密密钥rknS、Γ’中包含的重加密次数n不一致的情况下,无法进行重加密。

对重密文解密装置500的功能和动作进行说明。

如图24所示,重密文解密装置500具有解密密钥接收部510、密文接收部520、 张成方案计算部530、补充系数计算部540、配对运算部550、随机数计算部560、消息计算部570。

根据图29对Dec1算法的处理进行说明。

(S1301:解密密钥接收步骤)

解密密钥接收部510例如通过通信装置,经由网络接收从密钥生成装置100发送的解密密钥skS’。并且,解密密钥接收部310接收密钥生成装置100生成的公开参数pk。

(S1302:密文接收步骤)

密文接收部520例如通过通信装置,经由网络接收重加密装置400发送的重密文ctnΓ’

另外,在REnc算法中,输出重密文ctn+1Γ’,但是,这里,将表记变更成重密文ctnΓ’

(S1303:张成方案计算步骤)

张成方案计算部530通过处理装置判定解密密钥skS’中包含的访问结构S’是否受理重密文ctnΓ’中包含的Γ’。访问结构S’是否受理Γ’的判定方法如实施方式1中的“第3.用于实现FPRE的概念”中说明的那样。

张成方案计算部530在访问结构S’受理Γ’的情况下(S1303:受理),使处理进入(S1304)。另一方面,在访问结构S’拒绝Γ’的情况下(S1303:拒绝),结束处理。

(S1304:补充系数计算步骤)

补充系数计算部540通过处理装置计算成为数式192的I和常数(补充系数){αi}i∈I

【数式192】

1=ΣiIαiMi

where Mi'is>

(S1305:配对运算步骤)

配对运算部550通过处理装置计算数式193,生成会话密钥K’n

【数式193】

(S1306)~(S1307)的处理与图16所示的实施方式1的(S606)~(S607)的处理相同。

即,在(S1301)~(S1307)中,重密文解密装置500执行数式194所示的Dec1算法,生成消息m。

【数式194】

Dec1=(pk,skS,ctΓn)

If S′acceptsΓ′,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi'is>

En(rn):=cT.n/K'n,rn:=decode(En(rn)),

for j=n-1,...,1,

Ej(rj):=cT.j/(Kj)rj+1,rj:=decode(Ej(rj)),

m:=cT.0/(K'0)r1,

return m.

根据图30对Dec2算法的处理进行说明。

(S1401:解密密钥接收步骤)

解密密钥接收部310例如通过通信装置,经由网络接收从密钥生成装置100发送 的解密密钥skS。并且,解密密钥接收部310接收密钥生成装置100生成的公开参数pk。

(S1402:密文接收步骤)

密文接收部350例如通过通信装置,经由网络接收重加密装置400发送的密文ct0Γ

(S1403:张成方案计算步骤)

张成方案计算部360通过处理装置判定解密密钥skS中包含的访问结构S是否受理密文ctΓ中包含的Γ。访问结构S是否受理Γ的判定方法如实施方式1中的“第3.用于实现FPRE的概念”中说明的那样。

张成方案计算部360在访问结构S受理Γ的情况下(S1403:受理),使处理进入(S1404)。另一方面,在访问结构S拒绝Γ的情况下(S1403:拒绝),结束处理。

(S1404:补充系数计算步骤)

补充系数计算部370通过处理装置计算成为数式195的I和常数(补充系数){αi}i∈I

【数式195】

1=ΣiIαiMi

where Mi>

(S1405:配对运算步骤)

配对运算部380通过处理装置计算数式196,生成会话密钥K0

【数式196】

(S1406:消息计算步骤)

消息计算部390通过处理装置计算m=cT.0/K0,生成消息m。

即,在(S1401)~(S1406)中,解密装置300执行数式197所示的Dec2算法,生成消息m。

【数式197】

Dec2=(pk,skS,ctΓ0)

If S acceptsΓ,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi>

m:=cT.0/K0,

return m.

如上所述,实施方式3的加密系统10实现KP-FPRE方式。因此,能够利用1个重加密密钥向多种用户的集合传送密文。

另外,在实施方式2中,对针对实施方式1中说明的CP-FPRE方式应用带索引的方法的方式进行了说明。而且,在实施方式2中,实现了消除重加密次数的上限值并且与重加密次数的上限值无关地使公开参数的尺寸固定的CP-FPRE方式。

同样,针对实施方式3中说明的KP-FPRE方式,如数式198~数式201所示,也可以应用带索引的方法。另外,RKG算法、REnc算法、Dec2算法的处理内容也与上述KP-FPRE方式相同。

由此,能够实现消除重加密次数的上限值并且与重加密次数的上限值无关地使公开参数的尺寸固定的KP-FPRE方式。

【数式198】

Setup(1λ,n=(d;n1,...,nd;w1,...,wd;z1,...,zd)):

paramG:=(q,G,GT,g,e)RGbpg(1λ),

N0:=5,Nt:=2+nt+wt+zt+1for>

ψUFq×,gT:=e(g,g)ψ,

for t=0,...,d,

Xt=χ~t,1...χ~t,Nt:=(χt,i,j)i,jUGL(Nt,Fq),

νt,1...νt,Nt:=(νt,i,j)i,j:=ψ·(XtT)-1,

bt,i:=Σj=1Ntχt,i,jat,j,Bt:=(bt,1,...,bt,Nt),,

bt,i*:=Σj=1Ntνt,i,jat,j,Bt*:=(bt,1*,...,bt,Nt*),

paramn:=(gT,{paramt}t=0,...,d),

B^0*:=(b0,2*,b0,5*),

B^t*:=(bt,1*,...,bt,2+nt*,bt,Nt*)for>t=1,...,d,,

sk=(b0,1*).

【数式199】

KG=(pk,sk,S=(M,ρ)):

sT:=(s1,...,sL)T:=M·fT,s0:=1·fT,

η0UFq,

k0.0*:=(1,-s0,0,0,η0)B0*,

for j=0,...,Q

for i=1,...,L,

ifρ(i)=(t,vi),μj,θi,ηi.jUFq,

return>skΓ:=(S,{ki.j*}i=0,...,L;j=0,...,Q).

【数式200】

Enc=(pk,m,Γ=({t,xt)|xtFqnt{0},1td},n):

return>ctΓ0:=(Γ,c0.n,{ct.n}(t,xt),Γ,cT.n,n).

【数式201】

Dec1=(pk,skS,ctΓn)

If S′acceptsΓ′,then com pute I and{αi}i∈I>

1=ΣiIαiMi

where Mi'is>

En(rn):=cT.n/K'n,rn:=decode(En(rn)),

for j=n-1,...,1,

Ej(rj):=cT.j/(Kj)rj+1,rj:=decode(Ej(rj)),

m:=cT.0/(K'0)r1,

return m.

实施方式4

在以上的实施方式中,对在对偶矢量空间中实现加密处理的方法进行了说明。在 实施方式4中,对在对偶模块中实现加密处理的方法进行说明。

即,在以上的实施方式中,在质数位数q的循环组内实现了加密处理。但是,在使用合成数M如数式202那样表示环R的情况下,在将环R作为系数的模块中,也能够应用上述实施方式中说明的加密处理。

【数式202】

R:=Z/MZ

其中,

Z:整数

M合成数

如果将在以上的实施方式中说明的算法中的Fq变更成R,则能够实现对偶模块中的加密处理。

另外,在以上的实施方式中,假设通过FE对消息进行加密并向目的地发送的情况,说明了重加密装置400对密文进行重加密并变更密文的目的地。

FE不仅能够实现对消息进行加密并向目的地发送的功能,还能够实现不对密文进行解密就能够进行检索的可检索加密。在通过FE实现了可检索加密的情况下,能够通过在以上的实施方式中说明的算法来变更所设定的检索关键字。

在以上的实施方式中,指定了能够对密文中设定的属性信息进行解密的用户。而且,通过变更属性信息,对密文的目的地进行变更。在通过FE实现可检索加密的情况下,密文中设定的属性信息的一部分指定能够进行检索的用户,属性信息的其余一部分指定检索关键字。因此,通过利用在以上的实施方式中说明的算法来变更属性信息中的指定了检索关键字的部分,能够对所设定的检索关键字进行变更。

并且,在以上的实施方式中,设一台密钥生成装置100生成解密密钥。但是,也可以将以上的实施方式的算法与非专利文献5所述的分散多管理者的方式进行组合,通过多个密钥生成装置100生成一个解密密钥。

并且,在以上的实施方式中,在追加属性的范畴的情况下(增加属性的格式n中的d值的情况下),需要再次发行公开参数。但是,也可以将以上的实施方式的算法与非专利文献6所述的Unbounded的方式进行组合,不用再次发行公开参数,也能够追加属性的范畴。

并且,在以上的实施方式中,当设内积加密中使用的矢量的长度为N时,公开 参数和主秘密密钥的尺寸与N2成比例,赋予用户的解密密钥的生成和加密处理需要花费与N2成比例的时间。但是,也可以将以上的实施方式的算法与非专利文献7所述的方式进行组合,能够减小公开参数和主秘密密钥的尺寸,并且,能够缩短赋予用户的解密密钥的生成处理和加密处理所需要花费的时间。

并且,在以上的实施方式中,设为向发送目的地的装置发送密钥和密文。但是,取而代之,也可以将密钥和密文输出到CD或DVD等存储介质,发送目的地的装置读入存储介质。因此,可以将发送改写成输出,将接收改写成取得。

另外,在以上的实施方式中,根据安全性证明的观点,与i=1、...、L的各整数i有关的ρ(i)可以限定成与彼此不同的识别信息t有关的肯定形的组(t、v)或否定形的组¬(t、v)。

换言之,在ρ(i)=(t、v)或ρ(i)=¬(t、v)的情况下,设函数ρ~为ρ~(i)=t即{1、...、L}→{1、...d}的映射。该情况下,ρ~可以限定为单射。另外,ρ(i)是上述访问结构S:=(M、ρ(i))的ρ(i)。

图31是示出实施方式1~4所示的加密系统10的各装置(密钥生成装置100、加密装置200、解密装置300、重加密装置400、重密文解密装置500)的硬件结构的例子的图。

加密系统10的各装置是计算机,能够通过程序来实现加密系统10的各装置的各要素。

作为加密系统10的各装置的硬件结构,在总线上连接有运算装置901、外部存储装置902、主存储装置903、通信装置904、输入输出装置905。

运算装置901是执行程序的CPU(Central Processing Unit)等。外部存储装置902例如是ROM(Read Only Memory)、闪存、硬盘装置等。主存储装置903例如是RAM(Random Access Memory)等。通信装置904例如是通信板等。输入输出装置905例如是鼠标、键盘、显示装置等。

程序通常存储在外部存储装置902中,在下载到主存储装置903的状态下,依次被运算装置901读入并执行。

程序是实现作为主密钥生成部110、主密钥存储部120、信息输入部130、解密密钥生成部140、密钥发送部150、公开参数接收部210、信息输入部220、加密部230、密文发送部240、解密密钥接收部310、信息输入部320、重加密密钥生成部330、 重加密密钥发送部340、密文接收部350、张成方案计算部360、补充系数计算部370、配对运算部380、消息计算部390、公开参数接收部410、密文接收部420、重加密密钥接收部430、张成方案计算部440、补充系数计算部450、配对运算部460、重密文发送部470、解密密钥接收部510、密文接收部520、张成方案计算部530、补充系数计算部540、配对运算部550、随机数计算部560、消息计算部570说明的功能的程序。

进而,在外部存储装置902中还存储有操作系统(OS),OS的至少一部分被下载到主存储装置903中,运算装置901执行OS并执行上述程序。

并且,在实施方式1~5的说明中,在主存储装置903中作为文件存储有作为“公开参数pk”、“主秘密密钥sk”、“解密密钥skS、skΓ”、“密文ctnΓ、ctnS”、“重加密密钥rknΓ、S’、rknS、Γ’”、“重密文ctnS’、ctnΓ’”、“访问结构S、S’”、“属性集合Γ、Γ”、“消息m”等说明的信息、数据、信号值、变量值。

另外,图31的结构只不过示出加密系统10的各装置的硬件结构的一例,加密系统10的各装置的硬件结构不限于图31所述的结构,也可以是其它结构。

标号说明

10:加密系统;100:密钥生成装置;110:主密钥生成部;120:主密钥存储部;130:信息输入部;140:解密密钥生成部;141:随机数生成部;142:解密密钥k*生成部;143:f矢量生成部;144:s矢量生成部;150:密钥发送部;200:加密装置;210:公开参数接收部;220:信息输入部;230:加密部;231:f矢量生成部;232:s矢量生成部;233:随机数生成部;234:密文c生成部;240:密文发送部;300:解密装置;310:解密密钥接收部;320:信息输入部;330:重加密密钥生成部;331:随机数生成部;332:加密部;333:解密密钥k*rk生成部;340:重加密密钥发送部;350:密文接收部;360:张成方案计算部;370:补充系数计算部;380:配对运算部;390:消息计算部;400:重加密装置;410:公开参数接收部;420:密文接收部;430:重加密密钥接收部;440:张成方案计算部;450:补充系数计算部;460:配对运算部;470:重密文发送部;500:重密文解密装置;510:解密密钥接收部;520:密文接收部;530:张成方案计算部;540:补充系数计算部;550:配对运算部;560:随机数计算部;570:消息计算部。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号