基于量子密钥的身份认证系统和方法
技术领域
本发明属于量子通信领域,具体涉及一种基于量子密钥的身份认证系统和方法。
背景技术
随着人类社会步入信息化,人们之间的交往越来越频繁,人们对信息的需求与日俱增,信息的获取和发布已经深入到每个人的日常生活中。但与此同时,各种信息泄露以及非法获取信息的事件不断发生,这就使得信息安全日益成为人们关注的焦点。
通信安全不仅是通信双方所关心的首要问题,也是信息社会最突出的安全问题。验证用户的合法身份是保证通信安全的第一个保障。现有的身份认证机制一般采用用户名和密码的验证机制,其解决办法是使用MD5、SHA-1等算法对用户名和密码的明文进行信息摘要的提取。当服务器要求身份识别时,系统对存储在服务器上的明文密码使用MD5、SHA-1等算法对其进行信息摘要的提取,然后同客户端发送的信息摘要作比较,假如相同则通过身份认证。更加安全的做法是在用户对明文进行信息摘要的提取后,再对信息摘要进行加密得到最终密文。目前使用最多的加密算法包括DES、AES、RSA等经典的加密算法,其安全性都是基于某种复杂的数学运算。然而随着量子计算机的诞生,其超强的并行计算能力使得传统密码算法的安全性受到毁灭性的打击。因此,寻找一个更加安全的密码通信机制迫在眉睫。
加密算法的安全性主要取决于加密密钥的安全性,现有技术使用的加密算法其密钥的产生都是基于某种复杂的数学运算,其安全性并没有得到证明。
20世纪以来量子力学的发展使人类对物质的研究进入了微观领域,并且发现了量子力学的两大原理,即量子不确定性原理和量子不可克隆原理。量子不确定性原理表明一个未知的量子态无法被精确的测量,量子不可克隆原理表明人们无法对一个未知的量子态进行复制。这两大原理共同保证了未知量子态在传输的过程中不可能被第三方窃取到其所携带的信息。于是,把量子力学和密码学相结合,得到了由物理定律保证的、具有绝对安全性的量子密码学。目前,量子密码学的应用以量子密钥分配为主。
发明内容
针对现有的身份认证机制中的不足和缺陷,本发明基于量子密钥的安全性,提供一种量子密钥应用于验证用户合法身份的方法,实现系统对用户合法身份的验证,其验证所需要的数据在网络中的传输具有绝对的安全性。
本发明基于量子密钥的身份认证系统,包括用户端和认证服务端,
量子网络:用于量子密钥的生成、存储及传输;包括用于申请量子密钥生成服务的量子密钥生成控制服务器、用于存储及管理量子密钥的量子密钥存储管理服务器、用于分发量子密钥的量子网关;
经典网络:用于传输量子密钥之外的经典数据;
用户端:包括用户服务器、加密算法库、散列算法库;
认证服务端:认证服务器、用户信息数据库、加密算法库、散列算法库;认证服务器用于对用户端传输来的明文信息进行验证,验证成功,允许用户进入其登录的系统;验证失败,不允许用户登录其所要登录的系统。
一种基于量子密钥的身份认证系统的方法,包括如下步骤
S101、认证准备;用户服务器将明文信息发送给认证服务器注册,认证服务器将用户的明文信息储存到用户信息数据库中存储,用户与认证服务器之间约定用户登录服务器的身份凭证;
S102、量子密钥分配;量子密钥存储管理服务器将量子密钥分配给用户端;用户端得到量子密钥后对明文信息进行加密,把明文信息记为key,用户服务器从量子密钥存储器中取出的量子密钥记为K,然后按照约定的协议将K划分为4部分,记做K1、K2、K3、K4;
K1是用来与密码原文串行组合的一段字节串;
K2是用来进行加密的密钥,其长度由传统加密算法所使用的密钥长度决定;
K3是用来选择使用哪种散列算法,由散列算法库中所包含的散列算法的数量决定;
K4是用来选择使用哪种加密算法,由加密算法库中所包含的加密算法的数量决定。
S103、用户端数据加密传输;用户端将key和K1串行组合得到Ks,再根据K3的值调用散列算法库中相应标号的散列算法对Ks计算其散列值为Kh,然后根据K4的值调用加密算法库中相同值标号的加密算法并使用密钥K2对Kh进行加密,加密后的密文记为Km,Km即为用户端加密后的最终密钥;最后,用户端将Km通过量子网关由经典网络传输到认证服务端;
S104、认证服务端身份认证;认证服务端从经典网络中接收到由用户端发来的最终密文Km,根据量子密钥K4从认证服务端的加密算法库中查找到相应的解密算法,再结合加密密钥K2,解密得到散列值Kh;然后,认证服务器从用户数据库中取出该用户注册的明文信息,并通过与用户端相同的方法计算其散列值,即将明文信息与K1串行组合后使用与K3的值相同编号的散列值算法对其计算散列值,得到的散列值记为Kh’;最后,认证服务器比较两个散列值Kh和Kh’是否相同,若Kh=Kh’,则认证成功;若Kh≠Kh’,则认证失败;认证服务器通知用户端身份认证成功或失败。
进一步地,在步骤S101中,所述的认证服务端会将不同的加密算法封装成加密算法库,也将不同的散列值算法封装成散列算法库,并将库中所有的算法进行标号;所述的用户服务器的加密算法库和散列算法库从所述的认证服务端下载或更新。
进一步地,在步骤S102中,所述的用户服务器对量子密钥存储管理服务器中所存储的量子密钥的长度进行判断;如果量子密钥的长度满足量子密钥加密任务的需要时,量子密钥存储管理服务器向用户端分配量子密钥;如果量子密钥的长度不满足量子密钥加密任务的需要时,量子密钥存储管理服务器需要向量子密钥生成服务器申请进行量子密钥分发即生成量子密钥,使得量子密钥的长度满足量子密钥加密任务的需要。
进一步地,所述的K1的长度为64位。
进一步地,所述的K2的长度为128位。
进一步地,如果散列算法的数量为16个,所述的K3的长度为4位。
进一步地,如果散列算法的数量为16个,所述的K4的长度为4位。
采用以上结构后,本发明与现有技术相比,具有以下优点:
本发明一种基于量子密钥的身份认证系统和方法,提出的身份认证机制是经典认证机制与量子密钥结合的体现,即在量子密钥产生的基础上,随机选择加密算法对用户的身份信息进行加密,其密钥的安全性依赖于量子不确定性原理和量子不可克隆定理,保证了绝对的安全性。
与现有技术相比,本发明将传统技术中用于身份认证的明文信息与量子密钥K1串行组合后作为每次验证的明文信息。这样做有两个好处:第一,增加了密码的长度,使得用户端的密码采用长密码机制,该密码就有足够的抗攻击强度,可以抗字典攻击。第二,用户每次验证所使用的量子密钥都是不同的,所以用户端每次发送的验证信息都不相同,这使得本发明具有强的抗重放攻击。
本发明先对明文信息进行摘要的提取,再用加密算法对明文的摘要进行加密,最后将加密后的密文传输到认证服务端。在此过程中,用户的明文信息并没有出现在IP包内,窃听者即使获得传输的数据,也无法得到用户的密码,这使得网络监听无效。
本发明进行摘要提取所使用的散列算法和加密摘要所使用的加密算法都是由量子密钥K3和K4决定,由于每次使用的量子密钥不同,使得每次所使用的散列算法和加密算法不同。这在一定程度上增加了加密的复杂度,提高了信息传输的安全性。认证服务端可以根据需要修改算法库,用户端只要实时的更新自己的算法库与认证端保持一致即可。
附图说明
图1为本发明的量子密钥分配网络实施示意图。
图2为本发明的用户端身份认证流图。
图3为本发明的认证服务端身份认证流图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如图1所示本发明由用户端、认证服务端及连接两者之间的网络组成,且用户端与认证服务端之间通过各自的量子网关相连,量子网关之间有两条信道即量子信道和经典信道,量子信道是用来进行量子密钥的分发,经典信道是用来传输量子密钥之外的经典信息。用户端与认证服务端不仅有各自的量子网关,还有各自的量子密钥生成控制服务器、量子密钥存储管理服务器、加密算法库和散列算法库等。认证服务端还有认证服务器和用来存储用户信息的用户信息数据库。
本发明基于量子密钥的身份认证的加密系统,包括用户端和认证服务端,
量子网络:用于量子密钥的生成、存储及传输;包括用于申请量子密钥生成服务的量子密钥生成控制服务器、用于存储及管理量子密钥的量子密钥存储管理服务器、量子网关;量子网关在量子网络中分发量子密钥,在经典网络中传输经典信息;经典网络用于连接量子网关,传输量子密钥之外的经典数据;
用户端:包括用户服务器、加密算法库、散列算法库;
认证服务端:认证服务器、用户信息数据库、加密算法库、散列算法库;认证服务器用于对用户端传输来的明文信息进行验证,验证成功,允许用户进入其登录的系统;验证失败,不允许用户登录其所要登录的系统。
一种基于量子密钥的身份认证的加密系统的方法,包括如下步骤
S101、 认证准备;用户服务器将明文信息发送给认证服务器注册,认证服务器将用户的明文信息储存到用户信息数据库中存储,用户与认证服务器之间约定用户登录服务器的身份凭证;
S102、量子密钥分配;量子密钥存储管理服务器将量子密钥分配给用户端;用户端得到量子密钥后对明文信息进行加密,把明文信息记为key,用户服务器从量子密钥存储器中取出的量子密钥记为K,然后按照约定的协议将K划分为4部分,记做K1、K2、K3、K4;
K1是用来与密码原文串行组合的一段字节串;
K2是用来进行加密的密钥,其长度由传统加密算法所使用的密钥长度决定;
K3是用来选择使用哪种散列算法,由散列算法库中所包含的散列算法的数量决定;
K4是用来选择使用哪种加密算法,由加密算法库中所包含的加密算法的数量决定。
S103、用户端数据加密传输;用户端将key和K1串行组合得到Ks,再根据K3的值调用散列算法库中相应标号的散列算法对Ks计算其散列值为Kh,然后根据K4的值调用加密算法库中相同值标号的加密算法并使用密钥K2对Kh进行加密 ,加密后的密文记为Km,Km即为用户端加密后的最终密钥;最后,用户端将Km通过量子网关由经典网络传输到认证服务端;
S104、认证服务端身份认证;认证服务端从经典网络中接收到由用户端发来的最终密文Km,根据量子密钥K4从认证服务端的加密算法库中查找到相应的解密算法,再结合加密密钥K2,解密得到散列值Kh;然后,认证服务器从用户数据库中取出该用户注册的明文信息,并通过与用户端相同的方法计算其散列值, 即将明文信息与K1串行组合后使用与K3的值相同编号的散列值算法对其计算散列值,得到的散列值记为Kh’;最后,认证服务器比较两个散列值Kh和Kh’是否相同,若Kh=Kh’,则认证成功;若Kh≠Kh’,则认证失败;认证服务器通知用户端身份认证成功或失败。
在步骤S101中,所述的认证服务端会将不同的加密算法封装成加密算法库,也将不同的散列值算法封装成散列算法库,并将库中所有的算法进行标号;所述的用户服务器的加密算法库和散列算法库从所述的认证服务端下载或更新。
在步骤S102中,所述的用户服务器对量子密钥存储管理服务器中所存储的量子密钥的长度进行判断;如果量子密钥的长度满足量子密钥加密任务的需要时,量子密钥存储管理服务器向用户端分配量子密钥;如果量子密钥的长度不满足量子密钥加密任务的需要时,量子密钥存储管理服务器需要向量子密钥生成服务器申请进行量子密钥分发即生成量子密钥,使得量子密钥的长度满足量子密钥加密任务的需要。
所述的K1的长度为64位。
所述的K2的长度为128位。
如果散列算法的数量为16个,所述的K3的长度为4位。
如果散列算法的数量为16个,所述的K4的长度为4位。
本发明所述的注册的明文信息包括用户名和密码。
认证服务端会将不同的加密算法封装成库即为加密算法库,也将不同的散列值算法封装成库即为散列算法库,并将库中所有的算法进行标号。用户需要从认证服务端将加密算法库和散列值算法库下载到用户端。此后认证服务端负责算法库的修改与颁布,用户在一次认证前需对本地的算法库进行更新,以保证用户端和认证服务端的算法库标号一致。
以上仅就本发明的最佳实施例作了说明,但不能理解为是对权利要求的限制。本发明不仅限于以上实施例,凡在本发明独立权利要求的保护范围内所作的各种变化均在本发明的保护范围内。