一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于身份的可穿刺代理重加密方法与流程

2022-02-25 23:15:22 来源:中国专利 TAG:


1.本发明涉及网络安全和通信领域,具体涉及了一种基于身份的可穿刺代理重加密方法。该方法在代理重加密的基础上引入了细粒度撤销功能,并实现了前向安全性。


背景技术:

2.1998年,blaze、bleumer和strauss提出了代理重加密(proxy re-encryption, pre)的概念。此后,各种代理重加密方案被相继提出。在代理重加密中,半可信代理者可以使用代理密钥将使用委托者公钥加密的密文转化为被委托者公钥加密的密文,从而使得被委托者可以解密密文。一般来说,代理重加密方案分为两类:单向(unidirectional)代理重加密和双向(bidirectional)代理重加密。单向代理重加密仅能实现从alice到bob的密文转换,而双向代理重加密还能实现从bob到alice的密文转换。
3.2015年,为了实现前向安全,green和miers首次提出了可穿刺加密 (puncturable encryption,pe)的概念。在上述可穿刺的加密方案中,解密者可以反复更新其解密密钥,从而撤销密钥对特定时间段或发信人的消息的解密能力。


技术实现要素:

4.本发明针对现有技术的弊端,提供了一种高效安全的基于身份的可穿刺代理重加密方法。
5.为了达到上述发明目的,本发明采用以下技术方案实现:通过对代理重加密中的私钥和重加密密钥等结构和算法进行设计,将可穿刺加密技术与代理重加密原语结合。加密用户使用委托用户alice的身份作为公钥对消息m加密,并能够在密文中嵌入任意标签。代理服务器能将该密文转换为相同消息m下受托用户bob的密文。受托用户bob可以通过更新密钥实现对特定消息的细粒度撤销功能。当受托用户bob的私钥中嵌入了与密文中相同的标签时将无法解密该密文。
6.与现有技术相比,本发明的有益效果是技巧性地将可穿刺加密与基于身份的代理重加密方法相结合,不仅节省了计算和通信成本,同时提供了细粒度撤销功能,并满足机密性、不可否认性、可撤销、访问控制和前向安全等性质。
7.本发明共涉及三个实体:代理服务器、委托用户和受托用户。所述方法的具体步骤包括:
8.(1)系统建立setup:输入安全参数和系统最大标签数,pkg运行该算法并生成系统公开参数和系统主密钥;
9.(2)密钥生成keygen:输入系统公开参数、用户身份和系统主密钥,pkg 运行该算法生成对应用户的私钥;
10.(3)加密encrypt:输入明文消息、系统公开参数、用户身份和若干标签,由加密用户运行该算法并输出密文消息;
11.(4)代理重加密密钥生成rekeygen:输入系统公开参数、委托用户的身份信息和受
托用户的身份信息,由委托用户运行该算法生成代理重加密密钥。
12.(5)代理重加密reencrypt:输入密文和代理重加密密钥,由代理服务器执行该算法并生成重加密密文;
13.(6)可穿刺加密puncture:输入系统公开参数、用户私钥和一个标签,由 pkg执行该算法并输出用户私钥;
14.(7)密文解密decrypt-i:输入密文消息、委托用户的私钥和若干标签,由用户执行该算法解密出明文消息;
15.(8)重加密密文解密decrypt-ii:输入重加密密文消息、受托用户的私钥和若干标签,由代理用户执行该算法解密出明文消息。
具体实施方式
16.下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
17.本发明所述方法由八个算法组成,具体构造过程如下:
18.(1)系统建立setup:输入安全参数k和密文能嵌入的最大标签数d;选择一个素数p,并构造两个阶数为p的乘法循环群和设g是群的生成元;定义一个双线性映射随机选取三个哈希函数:和随机选取α,和并计算g1=g
α
和g2=g
β
;随机选取一个满足q(0)=β的d次多项式q(
·
);定义v(x)=gq(x);令t0为一个在正常操作中不会被使用的标签值;pkg秘密保留主密钥msk=α,并发布系统公开参数 param=(g,g1,g2,g
q(1)
,...,g
q(d)
,h1,h2,h3);注意,任何人都可以通过对 (g2,g
q(1)
,...,g
q(d)
)进行插值,从而计算出v(
·
);
19.(2)密钥提取keyextract:输入系统公开参数param、用户身份id和主密钥msk。对每个id∈{0,1}
l
的用户,pkg按如下方式生成用户id的私钥:
20.a)随机选取r,
21.b)生成用户id的初始私钥为:
[0022][0023]
在收到了pkg发送的私钥后,用户id可以通过检查下列等式是否成立来验证私钥的正确性:
[0024][0025]
(3)加密encrypt:输入系统公开参数param、用户身份id和一个标签集合t1...,td,随机选取对于消息输出密文为
[0026]cid
=(c1,c2,c3.c
(4,1)

,c
(4,d)
,c5)
[0027]
=(m
·
e(g1,g2)s,gs,h2(id)s,v(h1(t1))s,...,v(h1(td))s)
[0028]
(4)重加密密钥生成rekeygen:输入系统公开参数param、一组用户的身份(id,id

),用户id首先设定和然后随机选取δ,和并计算:
[0029][0030]c′
=encrypt(param,σ,id

,t1,...,td)
[0031]
=(c
′1,c
′2,c
′3,c

(4,1)
,...,c

(4,d)
)
[0032]
=(σ
·
e(g1,g2)s′
,gs′
,h2(id

)s′
,v(h1(t1))s′
,...,v(h1(td))s′
)
[0033]
用户id在和的条件下计算重加密密钥:
[0034][0035]
(5)重加密reencrypt:输入系统公开参数param,原始密文 c
id
=(c1,c2,c3.c
(4,1)
...,c
(4,d)
,c5)和重加密密钥rk
id

id

=(rk1,rk2,rk3)。对于 .j=1,2,...,i,将拆分为接下来计算一组满足的系数ω1,...,ωd,ω
*
,然后计算:
[0036][0037][0038][0039][0040]
得到重加密密文:
[0041][0042]
(6)穿刺puncture:输入用户id的私钥和标签t∈{0,1}
*
/{t0},将私钥拆分为并进一步将拆分为并输入从中随机选取样本λ和 n1,n2,并计算:
[0043][0044][0045]
则用户id新的私钥为
[0046]
(7)原始密文解密decrypt-i:输入密钥原始密文c和附加在密文上的一组标签t1,...,td,令c=(c1,c2,c3.c
(4,1)

,c
(4,d)
,c5),且将拆分为对于j=1,2,...,i,将拆分为接下来计算一组满足的系数ω1,...,ωd,ω
*
,使用该系数计算:
[0047][0048]
原始明文最终可以通过以下算式被恢复:
[0049][0050]
(8)重加密密文解密decrypt-ii:输入密钥重加密密文c
id

id

和附加在密文上的一组标签t1,...,td,令可以恢复出:
[0051][0052]
原始明文最终可以通过以下算式被恢复:
[0053]

再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献