一种基于RLWE支持国产密码算法的双向认证密钥协商方法与系统与流程

文档序号:18811535发布日期:2019-10-08 23:16阅读:932来源:国知局
一种基于RLWE支持国产密码算法的双向认证密钥协商方法与系统与流程

本发明属于信息安全技术领域,具体涉及一种改进的基于rlwe支持国产密码算法的双向认证密钥协商方法与系统。本发明还涉及一种融入国密算法的2轮身份认证密钥协商算法的新模式。



背景技术:

近年来,量子计算机相关技术飞速发展,传统的公钥密码体制受到严重威胁。后量子密码因其抗量子计算机攻击也成为一个非常活跃的研究领域。特别是,由于美国国家安全局(nsa)和美国国家标准与技术研究院(nist)公布了他们关于后量子加密的计划,后量子密码学的研究得到了进一步的推动。

美国国家标准与技术研究院(nist)在2016年4月发布了一份关于“抗量子密码现况”的报告,并在2016年12月继续跟进,面向全球征集后量子密码算法。2017年底,完成后量子密码算法的第一轮征集

2014年peikert提出一种基于理想格的密钥封装机制,借助rlwe问题将加密方案与一个新的和解机制相结合,从而构造出一种选择明文安全的(chosen-plaintextsecurity,cpa-secure)高效密钥封装机制体制;2015年bos等人引入了密钥交换(bcns),它通过基于r-lwe的协议取代了传输层安全协议中的传统数量理论密钥交换,它实质上是引入kem的实例化;2016年alkim等人提出了bcns协议的概括,称为newhope,其主要区别在于广义协调机制和不同的错误分布;2018年等人提出了基于签名的认证密钥协商协议,该协议允许在服务器-客户端使用,提供前向安全性,简单且易实现;同年,bindel等人描述了一些认证密钥协商协议,分别描述了fsxy、peikert和zzdsd等认证密钥协商协议并进行比较。

专利文献1(公开号:cn201711379239,公开日2018年7月10日)提出了一种基于rlwe的抗量子密钥协商方法,这种方法要求秘密消息为稀疏向量或二进制向量的lwr(取整学习)问题或者ring-lwr(环上的取整学习)问题,给出建议参数,并将本方法作为加密套接字用在tls握手协议中,在握手协议中来产生预主密钥,进而通过密钥导出函数生成主密钥。

专利文献2(公开号:cn108111301a,公开日2018年6月1日)提出了一种基于后量子密钥交换实现ssh协议的方法及系统。该方法利用后量子算法实现远程登陆协议ssh协议,提供通信双方身份验证、通信数据加密传输以及完整性校验等多种安全服务,能够抵抗量子攻击,提供了高安全性的远程登录流程。

通过对上述两篇专利文献的分析,抗量子攻击的认证密钥协商有很广泛的应用前景,但是基于我国国密算法的抗量子攻击的认证密钥协商协议研究仍处于探索阶段,相关发明也甚少。我们的方案设计了一种融入国密算法的2轮交互认证与密钥协商,既方便简洁,提升了实际运算的可行性与安全性,又体现了国密算法的先进性,促进了国内抗量子攻击的认证密钥协商体系的研究与进步。如今,量子通信正处于火热探索阶段,为了满足各领域高标准的安全要求,应用于更多的工作环境中,设计基于国密算法的安全高效、能够抵抗量子攻击的认证密钥协商方案的研究还是很有必要的。



技术实现要素:

针对抗量子攻击的认证密钥协商算法的上述需求以及克服现有技术的不足,本发明提出了一种基于rlwe支持国产密码算法的双向认证密钥协商新模式。本方案第一轮采用国密算法sm2加解密模块进行身份认证,第二轮采用国密算法sm3哈希运算进行认证,计算开销和通信开销较低。同时,引入了掩盖因子对传输信息进行保护,抗攻击能力和安全性明显增强。

本发明的优势在于:

1、融入国密算法:本方案基于rlwe支持国产密码算法的双向认证密钥协商方法与系统。第一轮采用国密算法sm2算法加解密及签名验签模块实现身份认证;第二轮运用国密sm3算法进行身份认证。将国密算法与国际先进方案完美结合,实现了安全高效的双向身份认证密钥协商。

3、通过设计多个掩盖因子来防范主动攻击:双方在通信过程中,掩盖因子很好地解决信道中的消息极易被窃听或截取的问题,多个掩盖因子能够更彻底地保证方案的安全性。

4、用国密算法保护用户身份隐私功能:本方案运用国密算法sm3对身份id进行哈希运算来隐藏自身信息,增强了方案的安全性,保护了用户的身份隐私。

5、方案简洁高效,便于软硬件实现,具有很高的计算效率。有较高的安全性,满足可证明安全性,提供了前向安全性,并且具有抗中间入攻击、重放攻击和未知密钥共享攻击等安全属性。

附图说明

图1是一种基于rlwe支持国产密码算法的双向认证密钥协商方法与系统的整体流程。

具体实施方式

下面结合附图和具体实施例对本发明做进一步详细的说明,但不以任何方式限制本发明的范围。

本方案基于格的密钥协商方案进行构建。

如图1所示,步骤一:密钥生成。客户端和服务端双方分别用0~255的随机数发生器,随机采样32个整数元素作为种子。这个随机数发生器可以使用物理熵源。我们对随机采样得到的32字节的种子进行散列函数处理,这里使用的散列函数是我国的sm3算法,其中l表示输入数据的比特数,d表示输出数据的比特数。在密钥生成过程中,我们利用sm3算法对32字节的种子进行哈希运算得到一个64字节的数组z。这里的z数值范围同样是0~255。然后通过gena()函数分别生成公私密钥对(pkc,skc)和(pks,sks)。

步骤二:客户端生成认证标识verc并向服务端发送信息。sc,ec和ec′是ψ16域上的多项式。运算符表示两个多项式系数相乘,若s,e∈rq,则:

对客户端的身份idc进行哈希运算,得到客户端的身份隐藏值mc。a是由种子变换得来的多项式,对其进行计算得到

其中,引入两个混淆因子vc和rc:

混淆因子在后面的流程中可以起到抵抗主动攻击的作用。对bc、mc和种子seed进行哈希运算,对得到的哈希值与bc、种子seed、mc和rc用服务端的公钥加密,即得到客户端的认证标识verc,这里的公钥加密算法我们选用rsa1024和我国的商密算法sm2(当然,也可以采用其他传统公钥加密算法或后量子公钥加密算法)。

之后,客户端将自己的认证标识verc发送给服务端。

步骤三:服务端验证客户端的身份。服务端收到verc后,先用自己的私钥sks对客户端的认证标识verc进行解密,得到签名。服务端用客户端的公钥进行验签,若验签成功,则服务端成功认证客户端的身份,可以进行接下来的认证与密钥协商;否则,认证失败,停止认证密钥协商。

步骤四:服务端生成认证标识vers并向客户端发送信息。服务端成功认证客户端的身份后,选取ψ16域上的多项式ss、es和es′进行运算。对服务端的身份ids进行哈希运算,得到服务端的身份隐藏值ms。计算得到bs,计算得到vs。对vs进行helprec()函数运算得到中间值r。为了对rs和bs进行保护,引入三个掩盖因子b、r和m,b是bc和bs的模2和,r是rc和rs的模2和,m是服务端与客户端的身份标识

对ms、bs和rs进行哈希运算,可以得到服务端的认证标识vers:

vers←h(ms,bs,rs),

服务端发送三个掩盖因子b、r、m和服务端的认证标识vers给客户端。

步骤五:客户端验证服务端的身份。客户端收到vers后,先用身份标识m异或客户端本身的身份隐藏值mc,得到服务端的身份隐藏值ms。通过掩盖因子b和r与客户端本身求得的bc和rc分别执行异或操作,求得对应的bs和rs值。然后客户端根据这3个值求得hc(ms,bs,rs),与服务端的认证值vers进行比对,若一致,则客户端成功认证服务端的身份;否则,认证失败,停止认证密钥协商。

步骤六:客户端与服务端双方进行密钥协商。客户端成功认证服务端的身份后,计算客户端和服务端分别对vc和vs进行rec()函数计算得到密钥。最终的共享会话密钥ss,通过对mc、ms和密钥k/k′进行哈希运算可以得到。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1