一种基于椭圆曲线的茫然传输方法及装置
技术领域
本发明涉及数据解密技术领域,尤其涉及一种基于椭圆曲线的茫然传输方法及装置。
背景技术
随着计算机和网络逐步进入大众的生活,各种信息系统得到了广泛的使用,在电子商务领域内,如何保护参与交易各方的利益正日益变得重要。网上交易的消费者须提供一些认证,最常见的如信用卡号或者账户名,而这些均能泄漏消费者的身份。因此,如何实现对私人数据的隐私保护成为信息社会令人关注的问题。
茫然传输(Oblivious Transfer OT)是一种可保护隐私的密码协议,也称不经意传输协议。它能够使参与协议的各方以一种不经意的方式传递消息,在协议执行完毕后,接收方能够根据自己的意愿得到其中的一个或者多个消息,而发送方对接收方具体获得的消息却一无所知。它首先于1981年提出,在该协议中,Alice持有一条消息s,她与Bob通过协议来传输此消息。最后,Bob或计算得到了s,或完全不知道s,并且这2个事件发生的概率都是1/2。此外对Alice来说,她除了随机猜测外,不会清楚Bob是否得到了这个消息。现在大多数的不经意传输协议都是基于有限域上离散对数问题的,对于接收方的接入控制问题尚缺乏专门的研究,即任何与消息发送方通信的用户在执行完协议后都可以得到他想要的消息,这为攻击者窃取消息创造了条件。
茫然传输需要解决的问题可以描述如下:A拥有n个秘密,n>=2,分别记为m1,m2,m3,…,mn,B想要获得这n个秘密中的k个,1<=k<=n,B不希望A知晓自己具体选择了n个秘密中的哪k个,A希望B除了获得其选择的k个秘密外,对剩余的n-k个秘密一无所知,无论是单个信息还是其组合信息。
当n=2,k=1时,我们称之为2选1的不经意传输;当n>2,k=1时,我们称之为n选1的不经意传输;当n>2,1<k<n,我们称之为n选k的不经意传输。
目前,茫然传输协议(Oblivious transfer OT)可大致归为以下9类:Rabin-OT协议、2选1的OT协议、n选1的OT协议、n选k的OT协议、有价格的不经意传输协议(POT)、量子不经意传输(Quantum-OT)协议、比特承诺不经意传输(COT)协议、分布式不经意传输(DOT)协议及其它类型的OT协议。
1.Rabin-OT协议
不经意传输协议首先由Rabin于1981年提出,在该协议中构造是基于二次剩余假设问题,Bob有一个消息b需要传输给Alice,传输完成后,Alice只有一半的概率接收到b,而Bob也不知道Alice是否收到了b。
2. 2选1的OT协议
利用任意的公钥密码体制都可以构造2选1的OT协议,接收方从2条信息中选择一条信息,发送方不知道接收方选择了哪条信息。
3.n选1的OT协议
接收方从n条信息中选择一条信息,发送方不知道接收方选择了哪条信息。
4.n选k的OT协议
接收方从n条信息中选择k条信息,发送方不知道接收方选择了几条信息,也不知道选择哪k条信息。
5.有价格的不经意传输协议(Priced-OT)
数字产品私密交易机制设计的目的是完成用户与网络商家之间的正常交易:即一方面,用户在不泄露自己敏感信息的情况下,向网络商家支付了相应的费用,并且也确实从商家那里获得了其购买的数字产品;另一方面,商家无法跟踪该用户何时、何地购买了何种物品。一般的不经意传输协议无法满足此项要求,但有价格的不经意传输协议就可以很好地解决这类问题。
假设商家有n种物品待销售,且每个商品具有不同的价格:
a.商家有待售物品g1,g2,g3,...,gn,其价格分别为p1,p2,p3,...,pn;
b.用户选择其期望购买的物品,并确保其账户余额不小于购买产品的总价;
c.双方执行不经意传输协议;
d.用户支付具有对应物品价格的电子货币后,只能获得其选择的物品,对其余的物品一无所知。
6.量子不经意传输(Quantum-OT)协议
前面介绍的OT协议是密码学安全的,即其安全性是建立在数学难题之上的。如何建立信息论安全的OT协议也是不少学者的研究方向,其中就有一个研究分支研究量子OT,这主要利用量子及量子计算的不可探测性来满足信息论安全的要求的。
7.比特承诺不经意传输(COT)协议
前面提到的所有OT协议都只是处理了Bob及Alice均是诚实的参与者的情况,即Bob在协议的执行过程中不改变其拥有的数据m1,m2,m3,...,mn而Alice一旦选择了mi也不可抵赖的否认其确实是选择了mi。然而,在现实中经常会有不诚实的参与者存在,为了解决这种不诚实参与者的问题,需要使用承诺不经意传输协议,即COT。在执行协议之前,Bob对他拥有的数据或消息m1,m2,m3,...,mn,进行承诺,Alice对她的选择i进行承诺,承诺分别用c(m1),c(m2),...,c(mn),c(mi)表示,执行完成协议后,Alice得到承诺c(mi),进而获取到mi。
8.分布式不经意传输(DOT)协议
在分布式不经意传输中,Bob被处于不同地理位置的代理服务器所代替,Alice要得到其选择的消息mi就必须与特定的代理服务器集合交互,进而获取其期望的消息。
设计具有特定功能的茫然传输协议以适应不同的应用环境是茫然传输协议研究的另一个重要方面。
现有技术中公开了基于OT协议的合同签订协议,解决了在网络环境中,需要解决合同签订过程中保证信息交换的同时性的问题;基于不经意传输的数字产品交易机制,不但可以使得消费者交易的信息得以隐藏,而且还可以避免引来对交易机制本身的攻击;基于OT协议的电子选举方案,解决了电子选举对多选性的要求。分布式技术的迅猛发展,也促进了分布式不经意传输协议的进步;可验证的分布式不经意传输协议在隐私保护的移动代理方案中的应用;有条件的OT协议,即R的输入满足S预先设定的条件时,R才可以得到期望的消息。此外,S不能判断R是否满足此条件,也就是S不知道R是否得到了该消息,此协议可用于定时释放的加密及电子拍卖等方面;有价格的不经意传输协议,可以很方便的应用到电子商务系统中,如网上购买数字产品,该协议要求购买方必须事先在账户中存放一定数额的存款,且账户余额应不小于所期望购买产品的总价,那么,在执行协议的过程中,用户就可以在不泄露自己敏感信息的情况下,向网络商家支付费用,并且也确实从商家那里获得了期望购买的数字产品。
发明内容
本发明的目的是提供一种基于椭圆曲线的茫然传输方法及装置,以解决区块链项目场景中涉及的隐私数据保护难题,包括:
1.区块链参与多方不愿开放隐私数据,如何保护数字资产,防止客户流失;
2.区块链参与多方不敢开放隐私数据,如何避免敏感数据泄漏;
3.区块链参与多方不会开放隐私数据,如何共享数据流通;
4.区块链参与多方身份已在业务层鉴别与控制,通信时不需要再做身份接入控制。
本发明提供一种基于椭圆曲线的茫然传输方法,包括,
S1:接收方采用随机算法生成私钥d,并基于SM2椭圆曲线生成公钥Q;
S2:发送方构建多项选择信息,每项选择信息包括标识和信息内容,仅将所述多项选择信息的标识清单发送给接收方;
S3:接收方从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数发送给发送方;
S4:发送方使用加密参数和公钥Q对所有选择信息进行加密,将加密后的密文发送给接收方;
S5:接收方使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容。
进一步的,所述步骤S3包括:
接收方生成两个随机数t,u∈[1,2t1n],t1为一个大于1的安全参数,n为SM2-P256曲线阶数;通过如下公式计算生成加密参数:
V=[t]G mod n
Ra=[u]G-[a]Q mod n
其中,G为SM2-P256曲线生成元的点坐标;mod为取余操作;a为接收方对所选择标识赋予的标识值。
进一步的,所述步骤S4包括:
发送方生成随机数(w,vi)∈[1,n-1],通过如下公式计算生成密文(T,Si,Fi):
T=[w]G mod n
Si=[vi]G mod n
其中,w,vi为发送方生成的随机数,i取值为[1,k],mi为某项选择信息的信息内容,n为SM2-P256曲线阶数。
进一步的,所述步骤S5包括:
接收方对于收到的密文(T,Si,Fi),通过如下公式计算得到所选择的标识对应的信息内容:
其中,a为接收方对所选择标识赋予的标识值,ma是所选择标识对应的信息内容,f函数表示对应SM2-P256椭圆曲线中a点的两坐标字节拼接x||y。
进一步的,所述步骤S3包括:
接收方生成一个随机数u∈[1,2t1n],t1为一个大于1的安全参数,n为SM2-P256曲线阶数;通过如下公式计算生成加密参数:
V=[d]G mod n
Ra=[u]G-[a]Q mod n
其中,d为私钥;G为SM2-P256曲线生成元的点坐标;mod为取余操作;a为接收方对所选择标识赋予的标识值。
进一步的,
所述步骤S4包括:
发送方生成随机数(w,vi)∈[1,n-1],通过如下公式计算生成密文(T,Si,Fi):
T=[w]G mod n
Si=[vi]G mod n
其中,w,vi为发送方生成的随机数,i取值为[1,k],mi为某项选择信息的信息内容,n为SM2-P256曲线阶数;
所述步骤S5包括:
接收方对于收到的密文(T,Si,Fi),通过如下公式计算得到所选择的标识对应的信息内容,
其中,a为接收方对所选择标识赋予的标识值,ma是所选择标识对应的信息内容,f函数表示对应SM2-P256椭圆曲线中a点的两坐标字节拼接x||y。
本发明还提供一种基于椭圆曲线的茫然传输方法,包括:
S1:接收方采用随机算法生成初始私钥d,并基于椭圆曲线算法生成初始公钥Q;
S2:发送方构建多项选择信息,每项选择信息包括标识和信息内容,仅将所述多项选择信息的标识清单发送给接收方;
S3:接收方从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数发送给发送方;
S4:发送方利用椭圆曲线算法对于每条选择信息生成密钥对,分别使用密钥对中的公钥将对应的选择信息进行加密,并使用所述加密参数和初始公钥Q将每个密钥对中的私钥进行加密,基于加密后的所有选择信息和私钥生成密文并发送给接收方;
S5:接收方使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容。
进一步的,
所述步骤S3包括:
接收方生成两个随机数t,u∈[1,2t1n],t1为一个大于1的安全参数,n为SM2-P256曲线阶数;通过如下公式计算生成加密参数:
V=[t]G mod n
Ra=[u]G-[a]Q mod n
其中,G为SM2-P256曲线生成元的点坐标;mod为取余操作;a为接收方对所选择标识赋予的标识值。
进一步的,所述步骤S4包括:
发送方生成k对密钥对(d1,Q1),(d2,Q2),...,(dk,Qk),分别用公钥Qi对选择信息m1,m2,...,mk进行加密得到加密信息M1,M2,...,Mk,其中i取值为[1,k];
发送方生成随机数(w,vi)∈[1,n-1],通过如下公式计算生成密文(T,Si,Fi,Mi):
T=[w]G mod n
Si=[vi]G mod n
其中,w,vi为发送方生成的随机数,di为发送方生成的密钥,n为椭圆曲线阶数;
所述步骤S5包括:
接收方对于收到的密文(T,Si,Fi,Mi),通过如下公式计算得到所选择的标识对应的信息内容:
其中,a为接收方对所选择标识赋予的标识值,da是解密后的私钥,f函数表示对应椭圆曲线中a点的两坐标字节拼接x||y。
本发明还提供了一种基于椭圆曲线的茫然传输装置,包括接收端和发送端:
接收端包括第一传输单元和第一处理单元;
发送端包括第二传输单元和第二处理单元;
所述第一处理单元采用随机算法生成私钥d,并基于SM2椭圆曲线生成公钥Q;
所述第二处理单元构建多项选择信息,每项选择信息包括标识和信息内容,仅将所述多项选择信息的标识清单通过第二传输单元发送给第一传输单元;
所述第一传输单元将接收的标识清单发送给第一处理单元,所述第一处理单元从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数和公钥Q经由第一传输单元发送给第二传输单元;
所述第二传输单元将接收的密文参数发送给第二处理单元,所述第二处理单元使用加密参数对所有选择信息进行加密,将加密后的密文经由第二传输单元发送给第一传输单元;
所述第一传输单元将接收的密文发送给第一处理单元,所述第一处理单元使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容。
本发明与现有技术相比,在以下方面具有有益效果:
1.支持基于国家商用密码SM2、SM4加解密实现传输内容长度的扩展,从原本单条数据最高支持256字节扩展至理论上近128G字节的数据长度。
2.现有技术均处于理论研究阶段,未经实际应用实践使用,本发明属于n选1的OT协议(n>=3),现已投入场景应用实践。能够满足实际场景需求。在2选1的不经意传输基础方案扩展实现n选1的不经意传输方案,贴近实际运用场景需求。
3.现有技术大多基于RSA签名设计,本发明移除接入控制功能,简化计算并使用SM2椭圆曲线。通信量不变,通信双方计算量减少。到目前为止,尚未具体提出基于椭圆曲线的茫然传输协议,因此,本文在对椭圆曲线密码(ECC)体制研究的基础上,使用国家商用密码SM2所用P256椭圆曲线,提出了基于SM2的不经意传输方案。椭圆曲线密码体制的优点包括:它具有每位最高强度的安全性,最快的处理速度和最低的开销,且至今解决椭圆曲线离散对数问题(Elliptic Curve Discrete LogarithmProblem,ECDLP)最好的算法是完全指数时间算法,而大整数因数分解难题(IFP)和离散对数问题(DLP)都是亚指数时间算法,这意味着随着长度的增加,求解ECDLP的难度比求解IFP和DLP的难度增加要快得多。因此,ECC仅需要较小的密钥长度就可以提供与RSA和DSA相当的安全性。
4.本发明使用SM2-P256椭圆曲线,系统建立后协议不需要第三方参与,参与协议的双方不需要陷门信息,本发明具有可证明的安全性。(陷门信息:如果一个登陆处理系统允许一个特定的用户识别码,通过该识别码可以绕过通常的口令检查,直观的理解就是可以通过一个特殊的用户名和密码登陆进行修改等操作。这种安全危险称为陷门,又称为非授权访问)。
附图说明
图1为本发明一种基于椭圆曲线的茫然传输方法的方法流程图;
图2为本发明一种基于椭圆曲线的茫然传输方法的双方通信流程图;
图3为本发明一种基于椭圆曲线的茫然传输方法的双方通信时序图;
图4为本发明一种基于椭圆曲线的茫然传输装置的装置流程图。
具体实施方式
下面将结合附图对本发明作进一步的详细描述,需要说明的是,以下描述用于公开本发明以使本领域技术人员能够实现本发明。以下描述中的优选实施例只作为举例,本领域技术人员可以想到其他显而易见的变形。在以下描述中界定的本发明的基本原理可以应用于其他实施方案、变形方案、改进方案、等同方案以及没有背离本发明的精神和范围的其他技术方案,其皆属于本发明的技术保护范围内。
本发明是基于2选1不经意传输协议中的不经意电子信封协议、SM2-P256椭圆曲线和SM4分组密码算法而提出的,并改进为基于n选1的不经意传输方法。
1、不经意电子信封协议(OSBE)
对于不经意电子信封协议(OSBE)的解释如下:
一般情况下,基于访问控制策略的协议无法解决信任协商中出现的循环依赖问题,如Alice和Bob都有一个第三方颁发的具有某项顶级秘密的特权证书,现在他们需要交换这一信息,但为了保护各自的利益,双方在知道对方拥有该特权的情况下才出示自己的证书。为了解决上述问题,Li等人提出了不经意的电子信封协议,即它可以使发送方发送一条加密的消息给接收方,当且仅当接收方拥有可信第三方的签名时才可以解密该消息,且发送方不能确定接收方是否持有签名。
不经意电子信封协议(OSBE)包括系统建立阶段和信息交互阶段:
在系统建立阶段,产生签名方案的私钥和公钥,以及证书的内容M(含有可标识R身份的假名及属性特征但不含M的签名)和待发送的消息P。M和公钥发送给参与协议的所有三方,即发送方,接收方1,接收方2。发送方持有消息P,接收方1持有签名δ(M)(对外保密)。
在信息交互阶段,发送方与接收方进行信息交互,但发送方不能区分接收方是接收方1和接收方2中的哪一个,执行协议后,若R=R1,则在交互阶段选择了接收方1,接收方能打开消息P否则,接收方不能打开消息P。
另外,不经意电子信封协议(OSBE)必须满足三个性质,包括有效性、不经意性和语义安全性:
有效性:一个OSBE协议是有效的,当且仅当在协议执行完毕后,接收方1不能输出P的概率是可以忽略的。
不经意性:如果协议执行完毕后发送方不知道接收方是否拥有第三方对M的签名,则称OSBE协议是不经意的,即在下面的游戏中,敌手A
*的优势概率是可以忽略的:挑战者完成初始化过程,并把PK、M和P交给敌手A
*;然后随机选择b∈{0,1},模拟R
b和敌手交互;然后敌手A
*输出b',如果b=b'则称敌手A
*赢。一个OSBE协议是不经意的,对每个概率交互式图灵机A
*都有:
即A
*的优势概率是可忽略不计的,其中f(t)是关于t的可忽略函数。
语义安全性:如果接收方2不能打开信封,且最终接收方2不知道有关P的任何消息,就称该OSBE协议是语义安全的,即不存在概率多项式时间的对手A*能以不可忽略的优势概率赢得下述游戏:挑战者完成初始化过程,并把PK和M交给A*,A*选取消息P0和P1送给挑战者,挑战者随机选取b∈{0,1},然后使用Pb模拟发送方和A*进行交互,最后敌手A*输出b'∈{0,1},如果b=b'则敌手A*赢。
2、SM2和SM4椭圆曲线算法
本发明基于SM2椭圆曲线算法,此前,多数使用公钥密码学进行加密和数字签名的产品和标准都使用RSA算法。为了保证RSA使用的安全性,最近这些年来密钥的位数一直在增加,这对使用RSA的应用是很重的负担,对进行大量安全交易的电子商务更是如此。于是近年来,人们尝试使用具有强大竞争力的椭圆曲线密码学进行安全保护。与RSA相比,椭圆曲线(ECC)的主要优点在于,它可以使用比RSA短很多的密钥得到相同的安全性,因此可以减少数据处理负荷。
本发明具有实用性,采用基于椭圆曲线的密码学替换基于离散对数的密码学,利用椭圆曲线密码学所使用的参数较小的特点,使得密钥更短、密钥证书更小、计算量更小、计算速度更快,特别是在处理能力、存储空间、带宽和功耗等受限的环境中,其优点突出,有助于不经意传输协议的实用化。
SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我国商用密码体系中被用来替换RSA算法,随着密码技术和计算技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我国密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法,其安全性、性能上具有更大优势,算法攻破时间参见表1,算法性能参见表2。
RSA密钥强度 |
椭圆曲线密钥强度 |
攻破时间(年) |
512 |
106 |
104,已被攻破 |
768 |
132 |
108,已被攻破 |
1024 |
160 |
1011 |
2048 |
210 |
1020 |
表1算法攻破时间表
算法 |
签名速度(次/秒) |
验签速度(次/秒) |
1024位RSA |
2792 |
51224 |
2048位RSA |
455 |
15122 |
256位SM2 |
4095 |
871 |
表2算法性能表
通过表1和表2可以看出,SM2椭圆曲线算法无论是在密钥强度和攻破时间上,还是在算法性能上都占有很大的优势,更适合用于目前的网络安全保护。
本发明还使用了SM4(也称SMS4)分组密码算法,SMS4是我国无线局域网标准WAPI中所采用的分组密码标准,随后被我国商用密码标准采用,又名SM4(SM是“商密”的缩写,目前公布的其他商密标准包括SM2椭圆曲线公钥密码、SM3密码杂凑算法)。国密算法SM4是一种分组密码算法,属于对称加密算法。分组长度为32字节,密钥长度为32字节。加密算法与密钥扩展算法都采用32非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。在密码指标性能方面,国密算法SM4的S盒设计已到了欧美分组密码标准算法的S盒设计水平,有较高的安全特性。线性置换的分支数达到了最优,可抵抗差分分析、线性分析、代数攻击等密码分析方法。
在本发明中,主要讨论有限域中Fp上的椭圆曲线,一般情况下,椭圆曲线的三次方程为y2modn=(x3+ax+b),其中,a和b必须满足4a3+27b2≠0且由满足上述方程的所有点(x,y)和单元O组成椭圆群E(a,b)。对于任何点P,Q∈E(a,b)有:
1.P+O=P;
2.若P=(xp,yp),则P+(xp,-yp)=O,点(xp,-yp)是P的负元,记为-P;
3.若P=(xp,yp),Q=(xq,yq),且P≠-Q,则R=P+Q=(xryr),由如下规则确定:xr=(λ2-xp-xq)modn,yr=(λ(xp-xr)-yp)modn,其中:
4.乘法定义为重复相加,如4P=P+P+P+P。
在下述实施例中,涉及到的参数及字符说明如下:
1.Fq为SM2-P256曲线中点坐标值的取值范围,Fq∈[0,FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF),为GM/T0003.5-2012《SM2椭圆曲线公钥密码算法第五部分:参数定义》标准中明文规定;
2.G为SM2-P256曲线生成元的点坐标,具体值为十六进制表示的值:G=(32C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7,BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0),为GM/T0003.5-2012《SM2椭圆曲线公钥密码算法第五部分:参数定义》标准中明文规定;
3.n为SM2-P256曲线的曲线阶数,具体值为十六进制表示的FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123,为GM/T0003.5-2012《SM2椭圆曲线公钥密码算法第五部分:参数定义》标准中明文规定;
4.函数f:f(G)=f(x,y)=x,函数f即椭圆曲线上坐标为(x,y)点的两坐标字节拼接x||y;
5.“mod”为取余操作,Amodn表示A点坐标值(x,y)分别除以n得到的余数(x’,y’),得到的余数值∈[0,n);
6.
为二进制下的异或操作,其运算法则为:
若a和b的值不同,亦或结果则为1,若a和b的值相同,亦或结果则为0;
7.“+”为椭圆曲线中的相加操作,两个点相加,得到的结果为椭圆曲线上一点;
8.大写字母表示椭圆曲线上一点,由横坐标和纵坐标(x,y)组成;
9.小写字母表示一个数值;
10.小写字母在前大写字母在后的组合表示椭圆曲线中的倍乘操作,得到的结果为椭圆曲线上一点,由横坐标和纵坐标(x,y)组成,如[u]G表示数值u与坐标点G的倍乘,如下:
3、本发明的第一实施例
在基于RSA的不经意电子信封方案进行研究的基础上,本发明对其改进提出了一种基于椭圆曲线的茫然传输方法。
如图1所示,为本发明的方法流程图,本发明提供一种基于椭圆曲线的茫然传输方法,包括如下步骤:
S1:接收方采用随机算法生成私钥d,并基于SM2椭圆曲线生成公钥Q;
S2:发送方构建多项选择信息,每项选择信息包括标识和信息内容,仅将所述多项选择信息的标识清单发送给接收方;
S3:接收方从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数发送给发送方;
S4:发送方使用加密参数和公钥Q对所有选择信息进行加密,将加密后的密文发送给接收方;
S5:接收方使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容。
下面将针对每个方法步骤对本发明作进一步说明解释:
S1:接收方采用随机算法生成私钥d,并基于SM2椭圆曲线生成公钥Q:
首先,需设置协议双方中的接收方和发送方,并且生成一个随机数d作为私钥,其中,d∈[1,n-2],接收方获取私钥d并保管,公钥Q由私钥d通过计算获得:Q=[d]G,公钥Q可公开明文传输给他人。
其中,n为SM2-P256曲线的曲线阶数,G为SM2-P256曲线生成元的点坐标。
S2:发送方构建多项选择信息,每项选择信息包括标识和信息内容,仅将所述多项选择信息的标识清单发送给接收方:
首先,发送方构建m1,m2,...,mk共k项选择信息,每项选择信息由(key:value)两字符串结构组成,要求每项选择信息属于Fq,其中,Fq为SM2-P256曲线中点坐标值的取值范围,key为标识,value为信息内容。每条信息都有各自不同的标识,信息内容value转为字节后需在Fq参数范围内,为便于描述,本发明中标识key值取值为数字1~k,实际应用时可根据情况修改标识的内容。
然后,发送方仅发送k项信息的标识key清单给接收方,而不发送每项信息的具体内容value。
S3:接收方从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数发送给发送方:
接收方根据标识key清单从发送方的k项信息中选择一条信息,确认所选信息的标识key的值,对其赋予标识值,记为a(1≤a≤k)。
然后,接收方生成两个随机数t,u∈[1,2t1n],t1为一个大于1的安全参数,是由接收方根据想要达到的安全系数而自行规定的参数,其数值越大,安全性越高,但数值过大会导致计算量增加,从而影响性能,n为SM2-P256曲线阶数;将两个随机数带入如下公式,对带有标识值的信息进行加密,生成加密参数(V,Ra,Q),将加密参数传输给发送方:
V=[t]G mod n
Ra=[u]G-[a]Q mod n
其中,V用于加密随机数t,防止非接收方破解信息;t和u为接收方自动生成的随机数;G为SM2-P256曲线生成元的点坐标;Ra用于隐藏接收方选择的信息标识a;a为接收方对所选择的标识key赋予的标识值;mod为取余操作。
S4:发送方使用加密参数和公钥Q对所有选择信息进行加密,将加密后的密文发送给接收方:
发送方生成随机数(w,vi)∈[1,n-1],带入如下公式计算生成密文(T,Si,Fi)发送给接收方。其中,Fi用于加密所有选择信息mi,T和用于Si用于对随机数w和vi进行加密:
T=[w]Gmodn
Si=[vi]Gmodn
其中,Fi使用了接收方提供的(V,Ra,Q)参数加密数据mi,确保只能接收方解密信息并且只能解密第a项数据;w,vi为发送方生成的随机数,V用于加密,n为SM2-P256曲线阶数,i取值为[1,k],下标i为信息m中各项数据的标识key,Q为公钥。因为共有k项选择信息,所以上述公式需要从i取1到i取k共计算k次,随机数vi有k个,对应的(Si,Fi)也有k项,每项选择信息mi均做相同的计算操作。
S5:接收方使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容:
接收方对于收到的密文(T,Si,Fi),通过如下公式计算得到所选择的标识值为a所对应的信息内容,且无法解密其他标识对应的信息内容:
其中,a为接收方对所选择标识赋予的标识值,ma是所选择标识值为a所对应的信息内容,f函数表示对应SM2-P256椭圆曲线中a点的两坐标字节拼接x||y,t和u为接收方生成的随机数。
至此,本方法结束,接收方最终可以获取并知晓所选择的标识对应的信息内容,并且在上述过程中可以保证只有接收方能够获取且只能获取所选标识对应的信息内容,而非接收方则无法获取接收方所选标识对应的信息内容。
下面对上述方法的可行性与正确性进行验证。
其中,i取值为a,V=[t]Gmodn,在上述验证过程的第三步中分别交换两乘法中的系数位置,结合T=[w]Gmodn和Sa=[va]Gmodn公式即可推导出结果。
由于接收方持有(u,T,Si,Fi),因此可以计算得到([t]T,[u]Sa),进而获得期望的值ma。
本发明的方法是基于椭圆曲线算法实现的,而椭圆曲线算法是基于决策性假设和计算性假设进行计算的,故本发明也基于决策性假设和计算性假设此两种假设。对这两种假设的解释如下:
其中,决策性Diffie-Hellman假设简称DDH假设,如果设G是一个随机选择的阶为n的生成元,a,b,c∈Zn,那么有以下两种概率总体是计算性不可区分的:Y1=(G,Ga,Gb,Gab)与Y2=(G,Ga,Gb,Gc)。
另外一种假设为计算性Diffie-Hellman假设:简称CDH假设,给定G,Ga,Gb不存在有效概率多项式时间图灵机(PPTM)算法能以不可忽略的概率计算出Gab。在椭圆曲线中推广为给定G,[a]G,[b]G,那么不存在有效概率多项式时间图灵机(PPTM)算法能以不可忽略的概率计算出[ab]G。
由此,通过上述两种假设可以判断并说明接收方的选择“标识值a”是无条件安全的,发送方得不到a的任何消息。假设存在u'、a',满足等式uG+aQ=[u']G+[a']Q,即[u+ad]G=[u'+a'd]G。若发送方要获得接收方请求消息的标识a,则其必须先求解u和d,u是接收方在安全参数范围内随机选取的,d是签名算法的私钥,而要获得d,则必须求解椭圆曲线离散对数问题。故即使发送方有无限的计算能力,也不能构造出满足上述条件的等式,因而得不到a的任何消息。
并且,在DDH决策性假设条件下,半可信的接收方得不到其余mi(1≤i≠a≤k)的任何消息。为了说明该观点,将从两个方面予以说明:
一方面,接收方不能计算出2个满足等式uG+aQ=[u']G+[a']Q的序偶(u,a)和(u',a')。在DDH假设成立的条件下,u+ad和u'+a'd是计算性不可区分的,因此,接收方不可能同时获得2个消息。
另一方面,接收方可以从发送方处获得加密消息Ci,通过化简得到:
在DDH假设条件成立下[u]Si+[i-a][d]Simodn和[u]Sj+[j-a][d]Sjmodn(i≠j≠a)是计算性不可区分的,从而f([u]Si+[i-a][d]Simodn)看起来是随机的。
综上,半可信的接收方得不到其余mi(1≤i≠a≤k)的任何消息。
本实施例是对信息内容进行加密解密,通过对信息原文进行异或操作来实现信息加密过程,保证了选择信息在通信过程中的安全性。
4、本发明的第二实施例
在本实施例中,本发明加入了数字验证的过程,提升了信息的传输性能。数字验证过程使用数字证书,数字证书是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在Internet上验证身份的方式,其作用类似于司机的驾驶执照或日常生活中的身份证。它是由一个权威机构–CA机构,又称为证书授权中心发行的,人们可以在网上用它来识别对方的身份。数字证书是一个经证书授权中心数字签名的包含公钥拥有者信息以及公钥的文件。最简单的证书包含一个公钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循ITUTX.509国际标准。本实施例与第一实施例在步骤S3至S5部分有所区别,具体方案如下:
S3’:接收方从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数发送给发送方:
接收方根据标识清单从发送方的k项信息中选择一条信息,确认所选信息的标识值,记为a(1≤a≤k)。
然后,接收方生成随机数u∈[1,2t1n],n为SM2-P256曲线阶数,t1为一个大于1的安全参数,是由接收方根据想要达到的安全系数而自行规定的参数,其数值越大,安全性越高,但数值过大会导致计算量增加,从而影响性能;将随机数带入如下公式,将带有标识值的信息加密,计算后将(V,Ra,Q)发送给发送方:
V=[d]Gmodn
Ra=[u]G-[a]Qmodn
其中,V用于加密私钥d,防止非接收方破解信息;d为接收方私钥;G为SM2-P256曲线生成元的点坐标;Ra用于隐藏接收方选择的信息标识a;u为接收方自动生成的随机数;a为接收方对所选择标识赋予的标识值;mod为取余操作;Q为接收方公钥,可以通过发送接收方的SM2数字证书的方式实现,数字证书中包含接收方的公钥。
S4’:发送方使用加密参数和公钥Q对所有选择信息进行加密,将加密后的密文发送给接收方:
发送方生成随机数(w,vi)∈[1,n-1],带入如下公式,将带有相应标识值的信息内容进行加密,通过如下公式计算生成密文(T,Si,Fi)发送给接收方:
T=[w]Gmodn
Si=[vi]Gmodn
其中,w,vi为发送方生成的随机数,i取值为[1,k],mi为某项选择信息的信息内容,Q为公钥,实现加密隐藏数据,T和Si用于对随机数w和vi进行加密。因为有k项信息,所以上述公式需要从i取1到i取k共计算k次,随机数vi有k个,对应的(Si,Fi)也有k项,每项选择信息mi均做相同的计算操作。
此过程中,Fi使用了接收方提供的(V,Ra,Q)参数加密数据mi,确保只能接收方解密信息并且只能解密第a项数据,发送方通过使用根证书验证SM2数字证书中的签名值确认接收方的身份,若验证成功,进入后续步骤;若验证失败,将失败消息返回给接收方。由于他人不知道私钥d,所以无法在后续步骤中解密数据,以此防止非接收方获取信息。
S5’:接收方使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容:
接收方由收到的密文(T,Si,Fi)通过如下公式计算得到所选择的标识对应的信息内容,且无法解密其他标识对应的信息内容:
其中,a为接收方对所选择标识赋予的标识值,ma是所选择标识对应的信息内容,f函数表示对应SM2-P256椭圆曲线中a点的两坐标字节拼接x||y,d为密钥,u为接收方生成的随机数。
本具体实施例舍弃了随机数t,直接使用公钥V=Q=[d]Gmodn,在S3中,发送方可以先通过使用发证机关(证书授权中心)的根证书验证SM2数字证书中的签名值,再从数字证书中获取V,进行加密,其中,根证书可以从官网等途径公开获取。加密过程即:
本实施例支持通过数字证书验证接收方的身份。避免攻击者冒用接收方身份向发送方通信获取信息。
5、本发明的第三实施例
在本实施例中是对密钥进行加密解密,通过对密钥进行异或操作来实现,对选择信息的长度进行了扩展,与第一实施例不同的是,本实施例在S1步骤中,接收方采用随机算法生成初始私钥d,并基于椭圆曲线算法生成初始公钥Q,以及在S4和S5步骤中使用了另一种方法来实现本方案过程,具体步骤如下:
S4”:发送方利用椭圆曲线算法对于每条选择信息生成密钥对,分别使用密钥对中的公钥将对应的选择信息进行加密,并使用所述加密参数和初始公钥Q将每个密钥对中的私钥进行加密,基于加密后的所有选择信息和私钥生成密文并发送给接收方:
首先,发送方生成k对密钥对(d1,Q1),(d2,Q2),...,(dk,Qk),分别用公钥Qi对选择信息m1,m2,...,mk进行加密得到加密信息M1,M2,...,Mk,此处根据GB/T 32907-2016《信息安全技术SM4分组密码算法》对选择信息进行加密,其中i取值为[1,k]。
然后,发送方生成随机数(w,vi)∈[1,n-1],带入如下公式计算生成密文(T,Si,Fi,Mi)发送给接收方。其中,Fi用于将密钥di进行加密,T和用于Si用于对随机数w和vi进行加密:
T=[w]G mod n
Si=[vi]G mod n
其中,Fi用于隐藏密钥di,确保只能接收方解密信息并且只能解密第a项数据;w,vi为发送方生成的随机数,n为椭圆曲线阶数,i取值为[1,k]。因为有k项信息,所以上述公式需要从i取1到i取k共计算k次,随机数vi有k个,对应的(Si,Fi)也有k项,每个密钥di均做相同的计算操作。
S5”:接收方使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容:
接收方对于收到的密文(T,Si,Fi,Mi)通过如下公式计算,解密得到私钥da:
其中,da是解密后的私钥,f函数表示对应椭圆曲线中a点的两坐标字节拼接x||y,t和u为接收方生成的随机数。
然后,接收方使用密钥da根据GB/T 32907-2016《信息安全技术SM4分组密码算法》解密密文Ma,从而得到信息内容ma。
上述实施例实现了对输入信息长度的扩展,在安全上得到了有效提升。信息原文在加密解密操作中进行两次异或操作,由函数f的定义:f(G)=f(x,y)=x,函数f即椭圆曲线上坐标为(x,y)点的两坐标字节拼接x||y。由于在SM2-P256椭圆曲线中,坐标长度为32字节,拼接后为64字节。假如信息原文ma长度大于64字节,由于f([w]Vmodn)和f([va]([u]G-[a]Q+[a]Q)modn)只有64字节,异或时高于64字节的数据会取默认值0,会导致ma进行异或操作时除64字节低位数据外的高位数据没有进行加密。所以信息原文不能超过64字节。本方法中使用SM4密钥da代替信息原文ma参与加密,由于密钥长度为32字节,所以不会出现加密不全的情况。在S3步骤中,发送方先随机生成k个SM4密钥,使用密钥da对原信息ma按照标准实现进行SM4加密得到密文Ma。并额外把密文Ma发送给接收方。使用密钥参与后续的加密解密过程。在S4步骤中,接收方只能够恢复出密钥da,所以只能使用密钥da通过SM4算法解密Ma密文得到ma信息。
该方案中原文信息使用SM4密钥进行加密,则不受64字节长度限制,内容以密文Ma形式传输。该方案额外要求S生成k对SM4密钥,并进行信息SM4加密k次,R解密一次。再多次传输密文M内容,实现了理论上无限扩展输入信息长度,保证信息传输的安全性。
5、本发明的整体通信流程
上述第一至第三实施例分别描述了本发明的三个加密解密方案,下文中将针对本发明的整理通信流程做一个具体说明。
如图2所示,为本发明混合茫然传输方法的双方通信流程图,首先,创建通信通道,发送方发送选择信息的标识列表给接收方;其次,接收方选择信息,即根据所需信息选择一项标识并赋予标识值,加密标识值生成加密参数发送给发送方;然后发送方加密信息,即利用加密参数将所有选择信息进行加密生成密文,将加密后的密文发送给接收方;然后,接收方对接收的信息进行解密,即根据椭圆曲线算法解密密文,得到所需的对应选择信息,随后发送完成通道信息请求给发送方;最后,关闭通信通道,通信流程结束。
如图3所示,为本发明混合茫然传输方法的双方通信时序图,接收方首先发送请求拉取信息标识列表的请求命令给发送方;发送方在收到请求后将信息标识列表返回给接收方;接收方选择标识列表中的一个标识并对其加密生成加密参数,发送加密参数和公钥给发送方;发送方根据加密参数和公钥加密对应的标识列表中的所有选择信息内容,然后将密文返回给接收方;接收方使用密文,解密得到所选择标识的对应信息内容,流程到此结束。
如图4所示,本发明还提供一种基于椭圆曲线的茫然传输装置,包括接收端和发送端:
接收端包括第一传输单元和第一处理单元;
发送端包括第二传输单元和第二处理单元;
所述第一处理单元采用随机算法生成私钥d,并基于SM2椭圆曲线生成公钥Q;
所述第二处理单元构建多项选择信息,每项选择信息包括标识和信息内容,仅将所述多项选择信息的标识清单通过第二传输单元发送给第一传输单元;
所述第一传输单元将接收的标识清单发送给第一处理单元,所述第一处理单元从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数和公钥Q经由第一传输单元发送给第二传输单元;
所述第二传输单元将接收的密文参数发送给第二处理单元,所述第二处理单元使用加密参数对所有选择信息进行加密,将加密后的密文经由第二传输单元发送给第一传输单元;
所述第一传输单元将接收的密文发送给第一处理单元,所述第一处理单元使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容。
在另一个实施例中,本发明还提供一种基于椭圆曲线的茫然传输装置,包括接收端和发送端:
接收端包括第一传输单元和第一处理单元;
发送端包括第二传输单元和第二处理单元;
所述第一处理单元采用随机算法生成初始私钥d,并基于椭圆曲线算法生成初始公钥Q;
所述第二处理单元构建多项选择信息,每项选择信息包括标识和信息内容,仅将所述多项选择信息的标识清单通过第二传输单元发送给第一传输单元;
所述第一传输单元将接收的标识清单发送给第一处理单元,第一处理单元从所述标识清单中选择一项标识,对所选择的标识赋予标识值,并将所述选择的标识和标识值使用椭圆曲线算法加密生成加密参数,将加密参数和公钥Q经由第一传输单元发送给第二传输单元;
所述第二传输单元将接收的密文参数发送给第二处理单元,所述第二处理单元利用椭圆曲线算法对于每条选择信息生成密钥对,分别使用密钥对中的公钥将对应的选择信息进行加密,并使用所述加密参数和初始公钥Q将每个密钥对中的私钥进行加密,基于加密后的所有选择信息和私钥生成密文并发送给第一传输单元;
所述第一传输单元将接收的密文发送给第一处理单元,所述第一处理单元使用椭圆曲线算法对发送方传输的密文进行解密,以获取所选择的标识对应的信息内容。
本发明的一种基于椭圆曲线的茫然传输装置的具体处理过程已在本发明的一种基于椭圆曲线的茫然传输方法中详细叙述说明,故不在此赘述。
以上为本发明的具体实施例及技术方案,显然,上述具体实施例和技术方案为说明本发明而使用,本技术领域的技术人员在未付出创造性劳动的前提下在本发明的基础上做出的变形或修改皆属于本发明的保护范围。