具有两个独立监管方的公钥加密方法、解密方法及其系统技术方案

技术编号:35518196 阅读:13 留言:0更新日期:2022-11-09 14:36
本发明专利技术公开了一种具有两个独立监管方的公钥加密方法、解密方法及其系统,该方法包括:发送方采用加密算法,使用发送方的私钥、接收方公钥、第一监管方公钥和第二监管方公钥对待发送数据进行加密,生成密文;发送方将密文发送至公共系统;接收方从公共系统中获得密文,采用解密算法,根据接收方私钥、发送方的公钥、第一监管方公钥和第二监管方公钥对接收的密文进行解密,生成解密数据;第一监管方从公共系统中获得密文,采用监管算法,根据第一监管方私钥和第二监管方公钥对接收的密文进行解密,生成解密数据;第二监管方从公共系统中获得密文,采用监管算法,根据第二监管方私钥和第一监管方公钥对接收的密文进行解密,生成解密数据。密数据。密数据。

【技术实现步骤摘要】
具有两个独立监管方的公钥加密方法、解密方法及其系统


[0001]本专利技术涉及公钥加密
,特别是涉及具有两个独立监管方的公钥加密方法、解密方法及其系统。

技术介绍

[0002]为确保数据保密性,通常会对数据加密后再发送。但是,仅接收方能够解密密文,而监管方不能解密密文。在需要监管的应用场景下,监管方需要解密密文。因此,针对当前的公钥加密方案中仅接收方能解密,而监管方不能解密的问题,需要一种不仅接收方能够解密,而且监管方也能够解密,实现数据内容的监管的技术。

技术实现思路

[0003]基于此,有必要针对传统技术存在的问题,提供的一种具有两个独立监管方的公钥加密方法、解密方法及其系统,用于解决传统技术中提到的现有加密方法所存在着较大限制的问题。
[0004]第一方面,本专利技术实施例提供了一种具有两个独立监管方的公钥加密方法,包括:
[0005]获取接收方公钥、第一监管方公钥和第二监管方公钥;
[0006]采用加密算法,使用发送方的私钥、所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥对待发送数据进行加密,生成密文;
[0007]将所述密文发送至公共系统,使得所述接收方、第一监管方和第二监管方通过访问所述公共系统获取所述密文。
[0008]优选地,获取接收方公钥、第一监管方公钥和第二监管方公钥包括:
[0009]设置对称双线性映射
[0010]其中,G为群的生成元,为双线性群的生成元;群的阶为素数n;
[0011]利用两个哈希函数hash1,hash2将任意长数据{0,...,n

1}分别映射为整数和长为n的数据,即hash2:{0,1}
*

{0,1}
n

[0012]其中,哈希函数hash1的输入是任意长的0或1,输出范围是0到n

1之间的自然数;哈希函数hash2的输入是任意长的0或1,输出长度为n比特的0或1随机字符串;*号代表任意长的0/1bit;{0,1}
*
代表任意长的0/1bit数据;{0,1}
n
代表固定长的0/1bit数据;是0到n

1之间的自然数;
[0013]利用密钥派生函数KDF将输入固定长度n的随机数,映射为输出一个任意长的随机数KDF:{0,1}
n

{0,1}
*

[0014]发送方的私钥和公钥表达如下:
[0015][0016]接收方的私钥和公钥表达如下:
[0017][0018]第一监管方的私钥和公钥表达如下:
[0019][0020]第二监管方的私钥和公钥表达如下:
[0021][0022]代表发送方在0到n

1范围内选择2个随机数a1,a2,并将私钥拆为2份;
[0023]代表接收方在0到n

1范围内选择2个随机数b1,b2;并将私钥拆为2份;
[0024]代表第一监管方在0到n

1范围内选择2个随机数c1,c2;并将私钥拆为2份;
[0025]代表第二监管方在0到n

1范围内选择2个随机数d1,d2;并将私钥拆为2份;
[0026]G是椭圆曲线上的基点G,是公开的系统参数;
[0027]代表发送方基于基点G和随机数a1,a2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是发送方的公钥,并将公钥拆为2份;
[0028]代表接收方基于基点G和随机数b1,b2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是接收方的公钥,并将公钥拆为2份;
[0029]代表第一监管方基于基点G和随机数c1,c2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是第一监管方的公钥,并将公钥拆为2份;
[0030]代表第二监管方基于基点G和随机数d1,d2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是第二监管方的公钥,,并将公钥拆为2份。
[0031]优选地,所述采用加密算法,使用发送方的私钥、所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥对待发送数据进行加密包括:
[0032]利用发送方私钥将待发送数据中的任意长的消息m∈{0,1}
*
,一个随意元素和所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥进行如下计算:
[0033][0034]C1:=γ,C2:=r
·
G,
[0035][0036]生成密文C=(C1,C2,C3),其中,||表示将两个数据拼接起来,变成一个整体,作为哈希函数的输入;
[0037]r哈希函数hash1输出的0到n

1之间的自然数;
[0038]是计算机中的逐位异或运算;
[0039]或者,利用发送方私钥将待发送数据中的任意长的消息m∈{0,1}
*
,一个随意元素和所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥进行如下计算:
[0040][0041][0042][0043][0044]生成密文C=(C1,C2,C3,C4,C5),其中,表示将私钥作为随机数对椭圆曲线点进行倍点运算,其中,该椭圆曲线点是接收方的公钥;
[0045]:=表示赋值,将符号右边参数的值赋值给符号左边参数;
[0046]右上角的角标r,是指双线性映射计算完毕后,再计算r次方。
[0047]另一方面,本专利技术还提供一种具有两个独立监管方的解密方法,包括:公共系统中的密文通过上述的方法进行加密;
[0048]接收方从公共系统中获得密文,采用解密算法,根据接收方私钥、发送方的公钥、第一监管方公钥和第二监管方公钥对接收的密文进行解密,生成解密数据;
[0049]第一监管方从公共系统中获得密文,采用监管算法,根据第一监管方私钥和第二监管方公钥对接收的密文进行解密,生成解密数据;
[0050]第二监管方从公共系统中获得密文,采用监管算法,根据第二监管方私钥和第一监管方公钥对接收的密文进行解密,生成解密数据。
[0051]优选地,所述的方法,还包括:
[0052]所述接收方、所述第一监管方和所述第二监管方分别对获得的解密数据进行解密一致性验证。
[0053]优选地,接收方采用解密算法,根据接收方私钥、发送方的公钥、第一监管方公钥和第二监管方公钥对接收的密文进行解密包括:
[0054]接收方对从公共系统中获得密文C=(C1,C2,C3)进行解析;利用接收方私钥局部密文C1,C3,所述发送方公钥、所述第一监管方公钥和所述第二监管方公钥进行如下计算:
[0055][0056][0057]其中,r

是哈希函数hash1输出的0到n

1之间的自然数;
[0058]或者,接收方对从公共系统中获得密文C=(C1,C2,C3本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.具有两个独立监管方的公钥加密方法,包括:获取接收方公钥、第一监管方公钥和第二监管方公钥;采用加密算法,使用发送方的私钥、所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥对待发送数据进行加密,生成密文;将所述密文发送至公共系统,使得所述接收方、第一监管方和第二监管方通过访问所述公共系统获取所述密文。2.根据权利要求1所述的方法,获取接收方公钥、第一监管方公钥和第二监管方公钥包括:设置对称双线性映射其中,G为群的生成元,为双线性群的生成元;群的阶为素数n;利用两个哈希函数hash1,hash2将任意长数据{0,...,n

1}分别映射为整数和长为n的数据,即hash2:{0,1}
*

{0,1}
n
;其中,哈希函数hash1的输入是任意长的0或1,输出范围是0到n

1之间的自然数;哈希函数hash2的输入是任意长的0或1,输出长度为n比特的0或1随机字符串;*号代表任意长的0/1bit;{0,1}
*
代表任意长的0/1bit数据;{0,1}
n
代表固定长的0/1bit数据;是0到n

1之间的自然数;利用密钥派生函数KDF将输入固定长度n的随机数,映射为输出一个任意长的随机数KDF:{0,1}
n

{0,1}
*
;发送方的私钥和公钥表达如下:接收方的私钥和公钥表达如下:第一监管方的私钥和公钥表达如下:第二监管方的私钥和公钥表达如下:表达如下:代表发送方在0到n

1范围内选择2个随机数a1,a2,并将私钥拆为2份;代表接收方在0到n

1范围内选择2个随机数b1,b2;并将私钥拆为2份;代表第一监管方在0到n

1范围内选择2个随机数c1,c2;并将私钥拆为2份;代表第二监管方在0到n

1范围内选择2个随机数d1,d2;并将私钥拆为2份;G是椭圆曲线上的基点G,是公开的系统参数;
代表发送方基于基点G和随机数a1,a2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是发送方的公钥,并将公钥拆为2份;代表接收方基于基点G和随机数b1,b2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是接收方的公钥,并将公钥拆为2份;代表第一监管方基于基点G和随机数c1,c2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是第一监管方的公钥,并将公钥拆为2份;代表第二监管方基于基点G和随机数d1,d2计算出来的2个椭圆曲线点,这2个椭圆曲线点就是第二监管方的公钥,并将公钥拆为2份。3.根据权利要求2所述的方法,所述采用加密算法,使用发送方的私钥、所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥对待发送数据进行加密包括:利用发送方私钥将待发送数据中的任意长的消息m∈{0,1}
*
,一个随意元素和所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥进行如下计算:C1:=γ,C2:=r
·
G,生成密文C=(C1,C2,C3),其中,||表示将两个数据拼接起来,变成一个整体,作为哈希函数的输入;r哈希函数hash1输出的0到n

1之间的自然数;是计算机中的逐位异或运算;或者,利用发送方私钥将待发送数据中的任意长的消息m∈{0,1}
*
,一个随意元素和所述接收方公钥、所述第一监管方公钥和所述第二监管方公钥进行如下计算:进行如下计算:进行如下计算:进行如下计算:
生成密文C=(C1,C2,C3,C4,C5),其中,表示将私钥作为随机数对椭圆曲线点进行倍点运算,其中,该椭圆曲线点是接收方的公...

【专利技术属性】
技术研发人员:赵琉涛钟林李自钦贾冬
申请(专利权)人:北京北科融智云计算科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1