一种量子密钥申请过程中的身份认证方法
技术领域
本发明属于量子通信领域,具体涉及一种量子密钥申请过程中的身份认证方法。
背景技术
随着人类社会步入信息化,人们之间的交往越来越频繁,人们对信息的需求与日俱增,信息的获取和发布已经深入到每个人的日常生活中。但与此同时,各种信息泄露以及非法获取信息的事件不断发生,这就使得信息安全日益成为人们关注的焦点。
通信安全不仅是通信双方所关心的首要问题,也是信息社会最突出的安全问题。验证通信双方的合法身份是保证通信安全的第一个保障。现有的身份认证机制一般采用用户信息的验证机制,其解决办法是使用MD、SHA、MAC等算法对用户信息的明文进行信息摘要的提取。当服务器要求身份识别时,系统通过客户端发送的用户身份标识查找到对应的用户身份信息摘要,然后同客户端发送的摘要作比较,假如相同则通过身份认证。更加安全的做法是在用户对明文进行信息摘要的提取后,再对信息摘要进行加密得到最终密文。目前使用最多的加密算法包括DES、AES、RSA、ECC等经典的加密算法,其安全性都是基于某种复杂的数学运算。加密算法的安全性主要取决于加密密钥的安全性,现有技术使用的加密算法其密钥的产生都是基于某种复杂的数学运算,其安全性并没有得到证明。然而随着量子计算机的诞生,其超强的并行计算能力使得传统密码算法的安全性受到毁灭性的打击。因此,寻找一个更加安全的密码通信机制迫在眉睫。
20世纪以来量子力学的发展使人类对物质的研究进入了微观领域,并且发现了量子力学的两大原理,即量子不确定性原理和量子不可克隆原理。量子不确定性原理表明一个未知的量子态无法被精确的测量,量子不可克隆原理表明人们无法对一个未知的量子态进行复制。这两大原理共同保证了未知量子态在传输的过程中不可能被第三方窃取到其所携带的信息。于是,把量子力学和密码学相结合,得到了由物理定律保证的、具有绝对安全性的量子密码学。目前,量子密码学的应用以量子密钥分配为主。
发明内容
本发明所要解决的技术问题是针对现有技术中存在的上述问题,提供了一种量子密钥申请过程中的身份认证方法,密钥应用于量子密钥申请过程中通信双方之间验证合法身份的方法,实现通信双方之间验证对方合法身份。其验证所需要的数据在网络中的传输具有绝对的安全性。
本发明一种量子密钥申请过程中的身份认证方法,包括如下步骤:
S1,量子网络部署阶段;通过客户端和服务端首先配置一个共同的设备标识加密存储于自身,确定当次共同使用的摘要算法,先在可信任的局域网内申请一定数量的量子密钥分别存放于各自的数据存储服务端的对应设备的认证密钥库中作为认证密钥并标记为未使用,再申请一定数量的量子密钥分别存放于数据存储服务端的根密钥库中作为根密钥并标记为未使用,将客户端和服务端存储于安全环境中,当客户申请量子密钥客户端的使用时,人工登记客户的身份信息,审核通过后将客户端部署给客户;
S2,准备初始阶段;所述的客户端和服务端统一相同的加密算法库版本号AlgVersion、对称算法Alg、摘要算法HashAlg和会话ID;
S3,密钥准备阶段;所述的客户端从根密钥中随机取一个量子密钥,比对量子密钥摘要qhash和服务端的量子密钥摘要qhash1,寻找对应的服务端量子密钥qkey1;从qkey1中分别提取部分作为用于加密通讯信息的基本密钥mainkey、用于MAC算法的MAC密钥mackey和用于会话ID的变换的会话密钥sessionkey,将相关信息通过所述的Alg加密发送到客户端,所述的客户端通过Alg解密,比对相关信息,然后从客户端量子密钥qkey中分别提取基本密钥mainkey、MAC密钥mackey和会话密钥sessionkey,并将该量子密钥标记为已使用;
S4,身份认证阶段;客户端使用所述的会话密钥sessionkey加密所述的会话ID,在认证密钥库中取前n1个量子密钥排序并分别提取量子密钥摘要qhash和量子密钥申请时间qtime,随机获取设备信息摘要devicehash和设备标识deviceflag,通过qhash、qtime、devicehash、deviceflag的运算加密得到s并发送到服务端,所述的服务端解密会话ID后,将s使用相同方法运算解密获取n1个量子密钥的qhash和qtime,将认证密钥库中的量子密钥同样排序,并对比两边的前n1项的qhash和qtime是否相同,若相同,则通过加密与运算形成新的会话ID;将新的会话ID重新加密后发送到服务端,解密后使用相同的运算方法验证新的会话ID,若验证不通过,则重新进行本步骤S4,;若服务端在收到请求后比对会话ID与当前会话ID不相等,而与历史会话ID相等,则会重新进行本步骤S4;若验证通过,则保存新的会话ID,保存原来的会话ID为历史会话ID;
S5,申请密钥阶段;所述的客户端向服务端发送密钥申请请求,服务端发送加密后的新的会话ID和内容响应以及特征算法和特征码给客户端。
进一步地,准备初始阶段S2中,客户端发送开始会话请求给服务端,所述的开始会话请求包括加密算法库版本号AlgVersion和会话ID;所述的服务端根据所述的客户端发送的加密算法库版本号AlgVersion找到对应的加密算法库,从中随机选择一个对称算法Alg和一个摘要算法HashAlg,将加密算法库版本号AlgVersion和选择的算法的标识发送给客户端;若服务端不支持客户端发送的加密算法库版本,则返回信息要求客户端重新选择加密算法库版本,重新开始加密算法库和当前加密算法的确认,直到确认完成或会话终止。
进一步地,密钥准备阶段S3中,客户端先从根密钥中随机取一个量子密钥,将其量子密钥摘要qhash发送给服务端,并将该量子密钥标记为已使用,将会话ID用于确定基本密钥的尝试次数记为x1,则x1=x1+1,x1的初始值为0;服务端从自身的根密钥中寻找服务端量子密钥摘要qhash1与所述的客户端量子密钥摘要qhash所对应的相同的量子密钥,若不存在,则停止会话分析;若存在,将相应的量子密钥申请时间qtime1、以及参数len1、len2和len3通过相应的服务端量子密钥qkey1使用Alg加密后发送给客户端作为响应,根据len1从qkey1中取出部分作为基本密钥mainkey,根据len2从qkey1中取出部分作为MAC密钥mackey,根据len3从qkey1中取出部分作为会话密钥sessionkey,并将该量子密钥标记为已使用,将会话ID用于确定基本密钥的尝试次数记为x,则x=x+1,x的初始值为0;客户端收到响应后,使用自身发送的qhash对应的客户端量子密钥qkey使用Alg解密接收的数据,再将数据的qtime1部分与自身对应的qtime比对,若不同,则判断此会话ID的确定基本加密密钥尝试次数是否超过阈值,若超过,则停止会话,否则重新开始本步骤S3;若相同,根据len1从qkey中取出部分作为基本密钥mainkey,根据len2从qkey中取出部分作为MAC密钥mackey,根据len3从qkey中取出部分作为会话密钥sessionkey。
身份认证阶段S4中,身份认证阶段S4中,所述的客户端从认证密钥库中按照qtime递增排序,取前n1个量子密钥的qhash和qtime,经过一系列变换exchange得到s1;获取当前设备的设备信息,随机使用加密算法库中的一种摘要算法获取设备信息的摘要devicehash并保存,并与设备标识deviceflag组合,得到s2;从所述的加密算法库版本号AlgVersion对应的加密算法库中随机取一种MAC算法,标识为MacAlg,使用MacAlg获取s1+s2的摘要hs作为鉴别码,将s1、s2、MacAlg、hs串行组合后得到s,将s发送给服务端,并标记n1条量子密钥为已使用;服务端先使用sessionkey解密会话ID,再比对会话ID,若不同,则停止会话分析;若相同,则从s中获取MacAlg,寻找AlgVersion对应的加密算法库中对应的MAC算法,若不存在,则停止会话分析;若存在,则使用MacAlg处理s1+s2得到hs1,比对hs1和hs,若不同,表明信息被篡改,则停止会话分析;若相同,从s2中获取deviceflag,根据deviceflag寻找对应的认证密钥库,若不存在,则停止会话分析;若存在,则从s1经过exchange获取n1个量子密钥的qhash和qtime,将认证密钥库中的量子密钥按qtime递增排序,若第一项的qhash与n1个量子密钥按qtime递增排序后的第一项不相同,寻找最近n2条被标记为已使用的量子密钥和所有的量子密钥,若有符合,则发送重新进行身份认证的响应并停止会话分析,若不符合,则停止会话分析;若相等,则按顺序比对排序后n1个量子密钥和认证密钥库中的第一项的qtime,以及其余n1-1项的量子密钥的qhash和qtime,若不完全符合,则计算符合比例,若高于预设值,则发送重新进行身份认证的响应并停止会话分析,若低于预设值,则停止会话分析;若完全符合,则将该n1条量子密钥标记为已使用,则记录s2中的devicehash,使用HashAlg运算n1条量子密钥的qhash和qtime获得r1,使用MacAlg运算devicehash+会话ID获得r2,将r1+r2组合作为新的会话ID,保存原来的会话ID为历史会话ID,发送使用sessionkey加密后的新的会话ID,身份认证完成信息,MAC算法标识以及数据的鉴别码完成响应给客户端;客户端收到身份认证完成响应后,先鉴别报文是否被篡改,然后使用sessionkey解密新的会话ID后使用相同的运算方法验证新的会话ID。
进一步地,所述的客户端向服务端发送密钥申请请求,所述的申请请求包括使用sessionkey加密的当前会话ID,设备信息摘要devicehash,内容,摘要算法MacAlg,鉴别码hs;所述的服务端收到请求后先通过鉴别码hs检查请求信息是否被篡改,若被篡改则停止会话分析,再比对解密后的会话ID和devicehash,若不符合,则停止会话分析;若符合,则使用HashAlg运算内容获得r1,使用MacAlg运算devicehash+会话ID获得r2,将r1+r2作为新的会话ID,保存原来的会话ID为历史会话ID,发送加密后的新的会话ID和内容响应以及特征算法和特征码给客户端;重复本步骤,直到密钥申请结束;客户端发送会话结束请求,服务端收到请求后结束此次会话,并清除会话相关内容。
进一步地,所述的客户端在用户请求的量子密钥外,额外申请一定数量的量子密钥,用于补充根密钥库和认证密钥库。
进一步地,在单次会话过程中,客户端或服务端均可提出更换所述的mainkey或mackey;客户端或服务端先检查根密钥库是否还有存量,若没有,则无法更换;若有,则在发往对方的数据中添加更改mainkey或mackey请求标识,对方接收到后,暂停下一步请求或响应,先检查根密钥库是否还有存量,若无,则发送更换失败标识,再发送下一步请求或响应;若有,则开始步骤S3,使用当前mainkey和mackey,并且会加上鉴别码,交换成功后则会替代当前mainkey或mackey,并继续原过程。
采用以上方案后,本发明与现有技术相比,具有以下优点:
与现有技术相比,本发明一种量子密钥申请过程中的身份认证方法采用密钥全部是量子密钥,其安全性是基于物理定律的、由量子不确定性原理和量子不可克隆定理所保证的,具有绝对的安全性。
本发明使用量子密钥协商过程用于产生初始的加密密钥。这样做有两个好处:第一,量子密钥的传输安全保障了初始的加密密钥可以进行安全的更新。第二,每次验证所使用的量子密钥都是不同的,所以每次发送的验证信息都不相同,这使得本发明具有强的抗重放攻击。
本发明在摘要提取过程中使用了量子密钥,由于量子密钥的真随机性,可以进一步降低对摘要进行逆向运算的难度,提高了信息传输的安全。同时,在一次会话身份认证完成后,只允许进行身份认证的设备进行申请密钥,通过设备信息的验证进一步提高了安全性。并且,在过程中会话ID处于不停的改变状态,并依赖于多个因素,通过会话ID的验证可及时排除大量的伪装攻击。
本发明在过程中可随时更改加密密钥和摘要算法密钥,当察觉到有密钥泄露的可能性时可通过更改密钥,使得窃听方无法获取完整的信息流。
在通讯过程中,会话ID通过算法加入认证因子,并不断变化,使得会话ID的仿造难度大大提高,并能随时验证通讯双方的合法性。
在身份认证时,本发明使用的是量子密钥的摘要作为身份信息,一次使用多个量子密钥的摘要,并且关联量子密钥申请时间,通过增加身份信息的长度来提高身份认证过程中的安全性。
附图说明
图1为本发明的量子密钥分配网络实施示意图。
图2为本发明的准备初始阶段和密钥准备阶段时序图。
图3为本发明的身份认证阶段时序图。
图4为本发明的申请密钥阶段流程图。
具体实施方式
下面结合附图和实施例进一步详细说明本发明,但本发明的保护范围并不限于此。
参照图1-4,本发明一种量子密钥申请过程中的身份认证方法,包括如下步骤:
S1、量子网络部署阶段;本发明包括客户端、服务端及连接两者之间的量子网络,量子网络中包括两条信道即量子信道和经典信道,量子信道是用来进行量子密钥的分发,经典信道是用来传输量子密钥之外的经典信息。客户端和服务端有各自的量子网关,加密算法库,散列算法库。服务端还有数据存储服务器。开始时,通过可信任的工作人员进行操作如下:客户端和服务端首先配置一个共同的设备标识加密存储于自身,确定当次共同使用的摘要算法,先在可信任的局域网内申请一定数量的量子密钥分别存放于各自的数据存储服务器的对应设备的认证密钥库中作为认证密钥并标记为未使用,再申请一定数量的量子密钥分别存放于数据存储服务器的根密钥库中作为根密钥并标记为未使用,将客户端和服务端存储于安全环境中。当客户申请量子密钥客户端的使用时,人工登记客户的身份信息,审核通过后将客户端部署给客户。之后获取量子密钥除非有说明,不然都是指获取标记为未使用的量子密钥。
S2、准备初始阶段;
客户端发送开始会话请求给量子密钥申请服务器,包括自身当前可支持的最新的加密算法库版本号给量子密钥申请服务器,会话ID(用于标识当次会话,会发生改变,之后除非特别说明,每次服务端与客户端通信都要发送并检查此数据,不再赘述)。量子密钥申请服务器根据客户端发送的加密算法库版本号找到对应的加密算法库,从中随机选择一个对称算法和一个摘要算法,将加密算法库版本号和选择的算法的标识发送给客户端。若量子密钥申请服务器不支持客户端发送的加密算法库版本,则返回信息要求客户端重新选择加密算法库版本,重新开始加密算法库和当前加密算法的确认,直到确认完成或会话终止。此阶段成功后,客户端和量子密钥申请服务器将拥有相同的加密算法库版本号AlgVersion,对称算法Alg,摘要算法HashAlg和会话ID。其中,AlgVersion用于确定加密算法库版本,对称算法Alg用于加密,摘要算法HashAlg用于提取摘要。
S3、密钥准备阶段;客户端先从根密钥中随机取一个量子密钥,将其qhash发送给服务端,并将该量子密钥标记为已使用,同时,此会话ID的确定基本密钥尝试次数(初始值为0)+1。服务端从自身的根密钥中寻找qhash1与qhash相同的量子密钥,若不存在,则停止会话分析;若存在,将相应的qtime1+len1(用于提取基本密钥)+len2(用于提取MAC密钥)+len3(用于提取会话密钥,该密钥用于会话ID的变换)使用相应的qkey1使用Alg加密后发送给客户端作为响应,同时根据len1从qkey1中取出部分作为基本密钥mainkey(用于加密通讯信息),根据len2从qkey1中取出部分作为MAC密钥mackey(用于MAC算法中提取),根据len3从qkey1中取出部分作为会话密钥sessionkey,并将该量子密钥标记为已使用,同时,此会话ID的确定基本密钥尝试次数(初始值为0)+1。客户端收到响应后,使用自身发送的qhash对应的qkey使用Alg解密接收的数据,再将数据的qtime1部分与自身对应的qtime比对(验证对方是否为合法服务端),若不同,则判断此会话ID的确定基本加密密钥尝试次数是否超过阈值,若超过,则停止会话,否则重新开始第三阶段;若相同,根据len1从qkey中取出部分作为基本密钥mainkey,根据len2从qkey中取出部分作为MAC密钥mackey,根据len3从qkey中取出部分作为会话密钥sessionkey,并将该量子密钥标记为已使用。至此确定基本加密密钥mainkey,MAC密钥mackey,会话密钥sessionkey,之后发送的所有数据均会使用mainkey进行加解密,使用MAC算法时均会使用mackey,变换会话ID时均会使用sessionkey,除非特别说明,否则不再赘述,直到单次会话结束或主动提出更换mainkey或mackey或sessionkey,除此之外更重要的是,更换mainkey,mackey和sessionkey可以降低一次会话密钥被破解的概率。
S4、身份认证阶段;客户端使用sessionkey加密会话ID,从认证密钥库中按照qtime递增排序,取前n1个量子密钥的qhash和qtime,qhash和qtime用于服务器的认证,经过一系列变换exchange得到s1,获取当前设备的设备信息,随机使用加密算法库中的一种摘要算法获取设备信息的摘要devicehash,保存设备信息摘要devicehash,并与设备标识deviceflag组合,得到s2;其中,信息摘要devicehash用于一次会话绑定设备,从AlgVersion对应的加密算法库中随机取一种MAC算法,其标识为MacAlg,使用MacAlg获取s1+s2的摘要hs作为鉴别码,发送s=s1+s2+MacAlg+hs给服务端,并标记n1条量子密钥为已使用。服务端先使用sessionkey解密会话ID,再比对会话ID,若不同,则停止会话分析;若相同,则从s中获取MacAlg,寻找AlgVersion对应的加密算法库中对应的MAC算法,若不存在,则停止会话分析;若存在,则使用MacAlg处理s1+s2得到hs1,比对hs1和hs,若不同,表明信息被篡改,则停止会话分析;若相同,从s2中获取deviceflag,根据deviceflag寻找对应的认证密钥库,若不存在,则停止会话分析;若存在,则从s1经过exchange获取n1个量子密钥的qhash和qtime,将认证密钥库中的量子密钥按qtime递增排序,若第一项的qhash1不等于qhash[1],寻找最近n2条被标记为已使用的量子密钥和所有的量子密钥,若有符合,则发送重新进行身份认证的响应并停止会话分析,若不符合,则停止会话分析;若相等,则比对第一项的qtime1和qtime[1],以及其余的量子密钥的qhash和qtime,若不完全符合(一个量子密钥的qhash和qtime均相同视为符合),则计算符合比例,若高于预设值,则发送重新进行身份认证的响应并停止会话分析,若低于预设值,则停止会话分析;若完全符合,则将该n1条量子密钥标记为已使用,则记录s2中的devicehash,使用HashAlg运算n1条量子密钥的qhash和qtime获得r1,使用MacAlg运算devicehash+会话ID获得r2,将r1+r2组合作为新的会话ID,保存原来的会话ID为历史会话ID(用于客户端请求能回退到上一次通讯),发送使用sessionkey加密后的新的会话ID,身份认证完成信息,MAC算法标识以及数据(包括加密的新的会话ID和身份认证完成信息)的鉴别码完成响应给客户端。客户端收到身份认证完成响应后,先鉴别报文是否被篡改,然后使用sessionkey解密新的会话ID后使用相同的运算方法验证新的会话ID,若验证不通过,则重新进行步骤S4,服务端在收到请求后比对会话ID与当前ID不相等,而与历史会话ID相等,则会重新进行第四阶段;若验证通过,则保存新的会话ID,保存原来的会话ID为历史会话ID(用于服务端响应能回退到上一次通讯),本阶段完成。
S5、申请密钥阶段;客户端向服务端发送密钥申请请求,包括使用sessionkey加密的当前会话ID,devicehash,内容,摘要算法MacAlg,鉴别码hs。服务端收到请求后先通过鉴别码检查请求信息是否被篡改,若被篡改则停止会话分析,再比对解密后的会话ID和设备信息摘要,若不符合,则停止会话分析;若符合,则使用HashAlg运算内容获得r1,使用MacAlg运算devicehash+会话ID获得r2,将r1+r2作为新的会话ID,保存原来的会话ID为历史会话ID(作用同上),发送加密后的新的会话ID和内容响应以及特征算法和特征码给客户端。重复此过程,直到密钥申请结束。同时客户端会在用户请求的量子密钥外,额外申请一定数量的量子密钥,用于补充根密钥库和认证密钥库。客户端发送会话结束请求,服务端收到请求后结束此次会话,并清除会话相关内容。
除此之外,在单次会话过程中,客户端或服务端均可提出更换mainkey或mackey。具体过程为,客户端或服务端先检查根密钥库是否还有存量,若没有,则无法更换;若有,则在发往对方的数据中添加更改mainkey或mackey请求标识,对方接收到后,暂停下一步请求或响应,先检查根密钥库是否还有存量,若无,则发送更换失败标识,再发送下一步请求或响应;若有,则开始第三阶段,但会使用当前mainkey和mackey,并且会加上鉴别码,同第四阶段,交换成功后则会替代当前mainkey或mackey,并继续原过程。
如图1所示,本发明的系统的组成部分包括:
量子网络:用于量子密钥的生成、存储及传输。包括量子密钥生成控制服务器、量子网关,经典网络;
量子密钥生成控制服务器:用于协助量子密钥生成服务;
量子网关:量子网关是量子网络的核心设备,在量子网络中用于量子密钥分发,量子密钥输出;
经典网络:用于传输量子密钥之外的经典数据。
量子密钥申请客户端,简称客户端:用于完成量子密钥的申请过程。包括量子密钥申请服务,加密算法库,散列算法库,数据存储服务器;
量子密钥申请服务:用于完成量子密钥的申请过程和存储量子密钥。
量子密钥申请服务端,简称服务器:用于完成量子密钥的申请过程。包括量子密钥申请服务,加密算法库,数据存储服务器。
客户端或服务端的身份认证:用于保证量子密钥申请过程中的安全性和稳定性。
数据存储服务器:用于存储量子密钥和用户信息。
加密算法库:含有多种经典加密算法的接口供加密时调用。
量子密钥:量子密钥为包含量子密钥的数据结构,包括量子密钥摘要qhash(要求在所属库内值唯一,在经典网络中加密传输),量子密钥qkey(不在经典网络中传输),量子密钥申请时间qtime(在经典网络中加密传输)。
需要说明的是,本申请文件中,对量子密钥的操作均指对量子密钥数据结构的操作;
用户:申请量子密钥的对象。
上述说明中,凡未加特别说明的,均采用现有技术中的技术手段。
以上仅就本发明的最佳实施例作了说明,但不能理解为是对权利要求的限制。本发明不仅限于以上实施例,凡在本发明独立权利要求的保护范围内所作的各种变化均在本发明的保护范围内。