基于秘密共享和时间戳的量子通信服务站密钥协商系统和方法与流程

文档序号:20203018发布日期:2020-03-27 20:50阅读:441来源:国知局
基于秘密共享和时间戳的量子通信服务站密钥协商系统和方法与流程

本发明涉及秘密共享技术领域,尤其涉及一种基于秘密共享和时间戳的量子通信服务站密钥协商系统和方法。



背景技术:

鉴权,即身份认证是实现信息安全的基本技术,系统通过审查用户的身份来确认该用户是否具有对某种资源的访问和使用权限,同样也可以进行系统与系统间的身份认证。

当前通信网络中身份认证系统普遍采用kerberos认证方案。kerberos是一种网络认证协议,其设计目标是通过密钥系统为用户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意的读取、修改和插入数据。在以上情况下,kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

在kerberos认证方案中,引入了时间戳来对重放攻击进行遏止,但是票据有生命周期,在其生命周期的有效时间内仍然可以使用。如果收到消息的时间是在规定允许的范围之内,那么就认为该消息具有新鲜性。但是,在得到许可证后的攻击者可以发送伪造的消息,这样的话,在允许的时间内是很难发现的。

正如大多数人所了解的,量子计算机在密码破解上有着巨大潜力。当今主流的非对称(公钥)加密算法,如rsa加密算法,大多数都是基于大整数的因式分解或者有限域上的离散对数的计算这两个数学难题。他们的破解难度也就依赖于解决这些问题的效率。传统计算机上,要求解这两个数学难题,花费时间为指数时间(即破解时间随着公钥长度的增长以指数级增长),这在实际应用中是无法接受的。而为量子计算机量身定做的秀尔算法可以在多项式时间内(即破解时间随着公钥长度的增长以k次方的速度增长,其中k为与公钥长度无关的常数)进行整数因式分解或者离散对数计算,从而为rsa、离散对数加密算法的破解提供可能。

现有技术存在的问题:

1.随着量子计算机的发展,主流的非对称加密算法将不再安全,无论加解密还是密钥交换方法,量子计算机都可以通过公钥计算得到私钥,因此目前常用的非对称密钥将在量子时代变得不堪一击。

2.现有量子通信服务站与量子密钥卡之间使用非对称密钥池的方法,大大减轻了服务站的密钥存储压力。但是服务站中的非对称密钥池拥有与众多客户端进行保密通信的非对称密钥,因此非对称密钥池所在的密钥卡一旦遭到暴力破解,该服务站所对应的众多客户端将悉数丧失保密通信能力,且客户端的历史信息可根据客户端的身份进行搜索并破解;

3.当前主流的密钥协商系统,客户端id或其他身份信息必须公开,造成用户信息泄露。



技术实现要素:

发明目的:本发明的目的在于提供一种隐藏能够客户端id实现抗量子运算防止破解的秘密共享和时间戳的量子通信服务站密钥的协商系统及其通信方法。

技术方案:为了实现上述目的,本发明的基于秘密共享和时间戳的量子通信服务站密钥协商系统,用于用户端之间通过量子通信服务站的协商通信,包括密钥卡、多个用户端和量子通信服务站,不同量子通信服务站之间可以通过qkd方式共享站间量子密钥,用户端id不公开、量子通信服务站对用户端id进行秘密共享生成不同的秘密分量,分别存储在用户端密钥卡内和量子通信服务站中;

用户端为接入量子通信服务站的设备,配备密钥卡,密钥卡内置有身份认证协议,各密钥卡均设有唯一的密钥卡身份信息;所述密钥卡内存储有用户端的公钥、私钥、假身份,由量子通信服务站生成用户端id的秘密分量以及匹配量子通信服务站的身份信息idq;

量子通信服务站内存储多组用户端信息的列表,每组用户端信息包括假身份pid以及id的部分秘密分量;

量子通信服务站选取一个随机数作为系统管理私钥,对系统管理私钥进行计算生成系统管理公钥。

为了实现量子通信服务站密钥的颁发和协商通信,量子通信服务站下配置有用户端,各个量子通信服务站间存有认证协议,所述量子通信服务站包括:

量子服务中心,主要用于通过经典网络与用户侧的各用户端通信连接以及与其他量子通信服务站通信连接;

量子密钥分发设备,主要用于通过qkd方式实现站间量子密钥的共享;

密钥颁发服务器,用于密钥卡颁发,是一台离线装置,由服务器管理员进行统一管理,密钥颁发服务器的密钥卡中存储有系统管理公钥;

真随机数发生器,用于接收用户侧密钥管理服务器提出的申请用户侧密钥的请求,生成用户侧密钥,并发送给用户侧密钥管理服务器;

用户侧密钥管理服务器,存放、管理从真随机数发生器生成的用户侧密钥,接收量子服务中心提出的申请用户侧密钥请求,发送相应长度的用户侧密钥给量子服务中心,接入量子密钥卡,实现发卡、登记、拷贝用户侧密钥。

所述量子服务中心包括:身份认证服务器,票据许可服务器;

身份认证服务器用于实现用户在接受消息认证、数字签名服务前与量子通信服务站的相互身份认证;内部具有加密卡,用于存储身份认证协议,包括密钥生成算法、认证函数、加密传输协议;

票据许可服务器用于实现用户在获得与量子通信服务站的相互身份认证后,为用户分发其访问其他用户申请的许可。

为了实现抗量子运算,本发明的基于秘密共享和时间戳的量子通信服务站密钥的协商方法:

(1)当用户端配置在同一个量子通信服务站下时,包括如下步骤:

步骤1:用户端a向用户端b发起密钥协商请求,用户端a将信息m1发送给用户端b;m1中包含当前时间戳na、用户端a的假身份、id分量以及用户端a的私钥对na、用户端a的两个新的秘密分量随机数进行的签名;

步骤2:用户端b接收到信息m1,将信息m2发送给量子通信服务站q,m2中包含m1、当前时间戳nb、用户端b的假身份、id分量以及用户端b的私钥对m1、nb、用户端b的两个新的秘密分量随机数进行的签名;

步骤3:量子通信服务站q接收信息m2,分别利用用户端的两组秘密分量恢复用户端的真实身份,从而获得两个用户端的公钥。再采用哈希运算得到两组新的秘密分量随机数,并对m1和m2进行签名验证,验证通过后,进一步计算得到两个用户端的新id分量以及两个新的假身份并分别更新;

量子通信服务站q生成会话密钥和随机数密钥k3a;

通过随机数密钥k3a对两个用户端的假身份、na和会话密钥进行加密运算,再根据用户端a的公钥对k3a进行加密得到enca,组合得到ticketa,使用新的秘密分量随机数对用户端a的假身份和新的部分id分量以及ticketa计算得到消息认证码maca;

量子通信服务站q生成会话密钥和随机数密钥k3b;

通过随机数密钥k3b对两个用户端的假身份、nb和会话密钥进行加密运算,再根据用户端b的公钥对k3b进行加密得到encb,组合得到ticketb,使用新的秘密分量随机数对用户端b的假身份和新的部分id分量以及ticketb计算得到消息认证码macb;

量子通信服务器把m3a和m3b组合成m3发送到用户端b;

m3a包括maca,用户端a的假身份、新的部分id分量、ticketa;m3b包括macb,用户端b的假身份、新的部分id分量、ticketb;

步骤4:用户端b接收信息m3并解密还原用户端b的身份,并验证macb,验证通过后更新假身份及秘密分量,通过用户端b的私钥解密encb得到随机数密钥k3b,通过k3b对ticketb解密得到会话密钥,并生成随机数nc,并对na通过会话密钥计算消息验证码macab,将m3a、使用会话密钥加密的nc和macab一起作为m4发送至客户端a;

步骤5:用户端a对信息m4并解密并还原用户端a的身份,并验证maca,验证通过后更新假身份及秘密分量,通过用户端a的私钥解密enca得到随机数密钥k3a,k3a对ticketa解密得到会话密钥,使用会话密钥验证消息验证码macab,确认一致后,用户端a对nc通过会话密钥计算消息验证码macac,并将该消息验证码macac作为信息发送m5至用户端b;

步骤6:用户端b接收到m5后,使用会话密钥验证macac,确认一致后,用户端b对用户端a认证通过,且确认会话密钥,用户端a和用户端b进行安全通信。

(2)当用户端属于不同的量子通信服务站时,包括如下步骤:

步骤1:用户端a向用户端b发起密钥协商请求,用户端a将信息m1发送给用户端b;m1中包含当前时间戳na、用户端a的假身份、id分量,以及用户端a的私钥对na、用户端a的两个新的秘密分量随机数进行的签名;

步骤2:用户端b接收到信息m1,并将信息m2发送给量子通信服务站qb,m2中包含m1、当前时间戳nb、用户端b的假身份和id分量,以及用户端b的私钥对m1、nb、用户端b的两个秘密分量随机数进行的签名;

步骤3:量子通信服务站qb接收信息m2,利用用户端b的秘密分量恢复用户端b的真实身份,从而获得用户端b的公钥。再采用哈希运算得到两组新的秘密分量随机数,并对m2进行签名验证,验证通过后,进一步计算得到新的id分量,同时量子通信服务站qb生成会话密钥,将会话密钥与m1、用户端b的假身份一起作为m′3发送至量子通信服务站qa,通过qkd密钥进行m′3的加密、解密和消息认证;

步骤4:量子通信服务站qa通过qkd密钥解密m′3,利用用户端a的秘密分量恢复用户端a的真实身份,从而获得用户端a的公钥。再采用哈希运算得到两组新的秘密分量随机数,并对m1中的签名进行验证;验证通过后,进一步计算得到新的id分量及新的假身份并更新,同时量子通信服务站qa生成会话密钥和随机数k3a;

通过随机数密钥k3a对两个用户端的假身份、na和会话密钥进行加密运算,再根据用户端a的公钥对k3a进行加密得到enca,组合得到ticketa,使用新的秘密分量随机数对用户端a的假身份和新的部分id分量以及ticketa计算得到消息认证码maca,将maca、ticketa、用户端a的假身份及新的部分id分量组成m3a其发送到量子通信服务站qb;

步骤5:量子通信服务站qb接收到信息m3a后,生成随机数密钥k3b;通过随机数密钥k3b,对两个用户端的假身份、nb和会话密钥进行加密运算,再根据用户端b的公钥对k3b进行加密得到encb,组合得到ticketb,使用新的秘密分量随机数对用户端b的假身份和新的id分量以及ticketb计算得到消息认证码macb,将macb、ticketb、用户端b的假身份及新的部分id分量组成m3b;

将m3a和m3b作为m3发送到用户端b。

步骤6:用户端b接收信息m3并解密还原用户端b的身份,并验证macb,验证通过后更新假身份及秘密分量,通过用户端b的私钥解密encb得到随机数密钥k3b,通过k3b对ticketb解密得到会话密钥,并生成随机数nc,并对na通过会话密钥计算消息验证码macab,将m3a、使用会话密钥加密的nc和macab一起作为m4发送至客户端a;

步骤7:用户端a收到信息m4后解密并还原用户端a的身份,并验证maca,验证通过后更新假身份及秘密分量,通过用户端a的私钥对enca解密得到随机数密钥k3a,k3a对ticketa解密得到会话密钥,使用会话密钥验证消息验证码macab,确认一致后,用户端a对nc通过会话密钥计算消息验证码macac,并将该消息验证码macac作为信息发送m5至用户端b;

步骤8:用户端b接收到m5后,使用会话密钥验证macac,确认一致后,用户端b对用户端a认证通过,且确认会话密钥,用户端a和用户端b进行安全通信。

上述通信方法中,信息m3的处理还可以采用下述方法:通过随机数密钥k3b,对两个用户端的假身份、nb和会话密钥进行加密运算,再根据用户端b的公钥对k3b进行加密得到encb,组合得到ticketb,使用新的秘密分量随机数对m3a、用户端b的假身份和新的部分id分量以及ticketb计算得到消息认证码mac′b;将m3a、mac′b、ticketb、用户端b的假身份及新的部分id分量组成m3发送到用户端b。

为了认证客户端的身份,量子通信服务站收到消息后,根据假身份搜索本地客户端信息列表中的假身份,如找不到对应假身份,则认证失败,流程结束;找到对应假身份后,根据当前时间戳判断与当前时间是否位于可允许误差范围内,如在允许误差范围内,则认证通过。

优选的,步骤1中,用户端的初始id分量通过随机数、两个不相等的秘密分量随机数、用户端id计算得到。

用户端的假身份是通过用户端id和id分量通过哈希运算得到的。

凑齐两组秘密分量通过计算恢复用户端id,对用户端id进行哈希运算得到公钥,公钥和系统管理私钥计算得到用户端私钥。

公钥对随机数密钥的加密结果中,还包括用于抗量子计算加密的偏移量,该偏移量通过用户端id、量子通信服务站id和秘密分量随机数进行哈希运算得到的。

有益效果:

1、本发明采用独立的密钥卡存储公钥和私钥,密钥卡为硬件隔离设备,被恶意软件或恶意操作窃取密钥的可能性大大降低;由于量子计算机无法得到用户公钥,因此也无法得到对应的私钥;同时,基于公私钥的抗量子计算签名和加密,即使在量子计算机存在的情况下,也难以被推导出私钥;因此该方案不容易被量子计算机破解。

2、本发明将id进行隐藏,采用假id的方式,实现不公开id却可以完成用户端和服务器之间身份认证的目的,敌方无法通过通信与存储数据得到用户的真实id,则敌方无法实现id追踪,大大提高了通信的安全性。

3、本发明中,在流程中的不同场合使用偏移量,偏移量的使用对数据进行了加密,使得传输过程更加安全,具有抗量子计算的特性;偏移量都需要不公开的id的参与,其他方将无法破解这些被偏移量保护的数据,采用本发明中的加密方式比普通加密方式的计算量更小,因此避免了使用普通加密方式来抵抗量子计算机的攻击,同时降低了各方的设备负担。

4、本发明对量子通信服务站与量子密钥卡之间的密钥管理机制进行改进,通过各个量子通信服务站与量子密钥卡对各个id进行秘密共享,使得敌方盗取id信息更加困难。

附图说明

图1为本发明实施例提供的系统结构图;

图2为本发明中实施例1流程图;

图3为本发明中实施例2流程图。

具体实施方式

下面结合附图1对本方案做进一步的说明。

如附图1所示为本发明的一个实施例的结构示意图,一种基于秘密共享和时间戳的量子通信服务站密钥协商系统,用于用户端之间通过量子通信服务站的协商通信,包括密钥卡、多个用户端和量子通信服务站,不同量子通信服务站之间可以通过qkd方式共享站间量子密钥,用户端id不公开、量子通信服务站对用户端id通过秘密共享分成不同的秘密分量,分别存储在用户端密钥卡内和量子通信服务站中。

量子通信服务站包括:

量子服务中心,主要用于通过经典网络与用户侧的各用户端通信连接以及与其他量子通信服务站通信连接;经典网络包括但不限于电信网、互联网、广播电视网或者其他通信网络等。

量子密钥分发设备,主要用于通过qkd方式实现站间量子密钥的共享。

密钥颁发服务器,用于密钥卡颁发,是一台离线装置,由服务器管理员进行统一管理。

真随机数发生器,用于接收用户侧密钥管理服务器提出的申请用户侧密钥的请求,生成用户侧密钥,并发送给用户侧密钥管理服务器;此处采用的为真随机数发生器。其优选为量子真随机数发生器,也可以为基于电路的真随机数发生器、基于物理源的真随机数发生器以及其他种类的真随机发生器。

用户侧密钥管理服务器,存放、管理从真随机数发生器生成的用户侧密钥,可以接入可移动式的量子密钥卡,实现发卡、登记、拷贝用户侧密钥,还可以接收量子服务中心提出的申请用户侧密钥请求,发送相应长度的用户侧密钥给量子服务中心。

其中量子服务中心包括:身份认证服务器,票据许可服务器,还可根据需要设置其他服务器,例如数字签名服务器、签名验证服务器、加解密服务器等。

身份认证服务器用于实现用户在接受消息认证、数字签名等服务前与量子通信服务站的相互身份认证。身份认证服务器内部具有加密卡,用于存储身份认证协议,包括密钥生成算法、认证函数、加密传输协议。

票据许可服务器用于实现用户在获得与量子通信服务站的相互身份认证后,为用户分发其访问某一用户的申请的许可。

各量子通信服务站下配置有用户端,如用户端1-用户端n,本说明书中不同的服务器或其他装置在硬件上也可以根据需要进行整合。

用户端为接入量子通信服务站的设备,可为移动终端,或为固定终端。当为移动终端时,量子密钥卡优选为量子sd卡;当为固定终端时,量子密钥卡优选为usbkey或主机加密板卡。

当用户前往所在区域的量子通信服务站进行注册登记,获批后得到量子密钥卡(具有唯一的量子密钥卡id)。量子密钥卡存储了用户注册登记信息,还内置有身份认证协议,至少包括密钥生成算法以及认证函数,或其他与身份认证相关的算法。

网络侧的各个量子通信服务站也相应的存有认证协议,若协议中各算法存在两种以上,量子密钥卡在与量子通信服务站通信时会将算法标号发送给量子通信服务站,供量子通信服务站选取。

量子密钥卡从智能卡技术上发展而来,是结合了量子物理学技术、密码学技术、智能卡技术的身份认证产品。量子密钥卡的内嵌芯片和芯片操作系统可以提供秘密信息的安全存储和密码算法等功能。由于其具有独立的数据处理能力和良好的安全性,量子密钥卡成为秘密信息的安全载体。每一个量子密钥卡都有硬件pin码保护,pin码和硬件构成了用户使用量子密钥卡的两个必要因素。即所谓“双因子认证”,用户只有同时取得保存了相关认证信息的量子密钥卡和用户pin码,才可以登录系统。即使用户的pin码被泄露,只要用户持有的量子密钥卡不被盗取,合法用户的身份就不会被仿冒;如果用户的量子密钥卡遗失,拾到者由于不知道用户pin码,也无法仿冒合法用户的身份。

量子通信服务站(以下简称服务站)在密钥卡注册时,先由服务站选择椭圆曲线的域参数包含q,a,b,g和n。q代表有限域fq的大小;变量a和b是椭圆曲线y2=x3+ax+b的系数,这里4a3+27b2≠0;g是基点生成元。服务站生成椭圆曲线后,选择基点生成元g,满足它的阶是整数n。算法的相关参数{q,a,b,g,n}写入到密钥卡指定区域。

本专利所用非对称算法为id密码学。基于id密码学的相关知识,服务站选取一个随机数作为系统管理私钥s,进一步生成系统管理公钥ppub=s*g。系统管理公钥ppub存储在服务站的密钥颁发服务器的密钥卡中,密钥颁发服务器是服务器的一部分,由服务器管理员进行统一管理,而且为保证安全,是一台离线装置。系统管理公钥ppub还通过qkd密钥加密发送给其他服务站成员,那些成员将得到的ppub存储在己端的密钥卡高安全级别密码芯片内。

用户端的身份为id,公钥为pk,私钥为sk。其中,公钥pk=h(id),私钥sk=s*pk,其中s为系统管理私钥,h是hash函数。

量子通信服务站对用户id进行(2,2)的秘密共享。在对信息m进行(t,n)的秘密共享时,n为m拆分共享秘密的碎片数,t为恢复m的最小碎片数,2≤t≤n。

构造函数fid(x)=id+rand*x。rand为随机数,不同的id,rand也不同。

服务站根据匹配的密钥卡生成随机数x1和x2。其中,x1与x2不能相等,如相等则进行更换。

计算得到id1=fid(x1)=id+rand*x1,id2=fid(x2)=id+rand*x2

计算得到两个秘密即秘密分量为(x1,id1),(x2,id2)。凑齐2组秘密即可恢复id,具体步骤如下:

2组秘密求得拉格朗日参数其中求得

计算用户端pk=h(id)。由于本专利的用户id不公开,敌方无法得到pk。计算假身份id即pid=hash(id||id1||id2),将pid、秘密分量(x1,id1)以及用户的公私钥pk和sk存入用户密钥卡中,同时存入的还有匹配的服务站的身份。

服务站存储有包括多组客户端信息的列表,每组客户端信息包括pid||x1||(x2,id2)。

实施例1,局域网内的两个用户端的密钥协商:

本实施例中,用户端a、用户端b属于同一个量子通信服务站q。流程图如图2所示。

步骤1:a→b。

用户端a获取当前时间戳timestampa,令x0a=timestampa

用户端a由匹配的密钥卡中读取x1a,计算x′1a=hash(x1a||x0a),x′2a=hash(x0a||x1a)。

将x1a、x′1a以及x′2a进行比较,如果任意二者相等,则当前timestampa不满足更换pid的条件,此时需要重新获得timestampa并进行更换,查看是否满足更换pid的条件。

令na=timestampa。使用用户端a的私钥对na、x′1a以及x′2a进行签名得到sign(na||x′1a||x′2a,ska)。sign(m,k)表示以m为消息、以k为密钥的基于id密码学的签名,签名过程如下:

以计算sign(m,k)为例。取随机数r,计算参数u=r*pk。计算哈希值h=h1(m,u),h1是一个hash函数。计算参数v=(r+h)*sk。即sign(m,sk)=(u,v)=(r*pk,(r+h)*sk)。由于本专利id不公开且敌方无法得到pk,因此敌方无法通过u和pk得到随机数r。由于签名的对象m无法被敌方所知,因此敌方无法通过m得到h;由于敌方无法得到r和h,因此敌方无法通过v=(r+h)*sk得到sk。综上所述,公开的数字签名能抵抗敌方量子计算机对基于身份的公钥密码学的攻击。

用户端a从密钥卡中读取pida和id1a,与na以及签名一起作为m1发送至客户端b,m1可表示为pida||id1a||na||sign(na||x′1a||x′2a,ska)。

步骤2:b→q。

用户端b收到m1后,获取当前时间戳timestampb,令x0b=timestampb。

用户端b由匹配的密钥卡中读取x1b,计算x′1b=hash(x1b||x0b),x′2b=hash(x0b||x1b)。

将x1b、x′1b以及x′2b进行比较,如果任意二者相等,则当前timestampb不满足更换pid的条件,此时需要重新获得timestampb并进行更换,查看是否满足更换pid的条件。

令nb=timestampb。使用用户端b的私钥对m1、nb、x′1b以及x′2b进行签名得到sign(m1||nb||x′1b|x′2b,skb)。

用户端b从密钥卡中读取pidb和id1b,与m1、nb以及签名一起作为m2发送至服务站q,m2可表示为m1||pidb||id1b||nb||sign(m1||nb||x′1b|x′2b,skb)。

步骤3:q→b。

服务站q收到m2后,根据pida和pidb搜索本地客户端信息列表中的pida和pidb项,如找不到pida和pidb,则认证失败,流程结束。

找到pida和pidb后,根据na和nb判断与当前时间是否位于可允许误差范围内。

判断通过后,根据(x1a,id1a)和(x2a,id2a),按照上文所述方式恢复ida和randa;根据(x1b,id1b)和(x2b,id2b),按照上文所述方式恢复idb和randb。

计算x′1a=hash(x1a||x0a),x′2a=hash(x0a||x1a),进一步计算id′1a=ida+randa*x′1a,id′2a=ida+randa*x′2a。

计算x′1b=hash(x1b||x0b),x′2b=hash(x0b||x1b),进一步计算id′1b=idb+randb*x′1b,id′2b=idb+randb*x′2b。

计算pka=h(ida)对m1中签名进行验证。具体原理可见参考文献:《anidentity-basedsignaturefromgapdiffie-hellmangroups》。

签名验证成功则表明找到ida,认证成功。

对m2中签名进行验证。签名验证方式与上文相同。签名验证成功则表明找到idb,认证成功。

服务站q生成会话密钥kab。

接下来服务站q计算用户端a的新的假身份pid′a=hash(ida||id′1a||id′2a),将pida更新为pid′a,x1a更新为x′1a,(x2a,id2a)更新为(x′2a,id′2a)。计算用户端b的新的假身份为pid′b=hash(idb||id′1b||id′2b),将pidb更新为pid′b,x1b更新为x′1b,(x2b,id2b))更新为(x′2b,id′2b)。因为id没有存储于服务站存储器,仅在执行身份认证流程时短暂存在于服务站内存中,因此单独对其进行断电拆解无法获取id。

令m3_0a=pida||id′2a,m3_1a=x′1a||x′2a

令m3_0b=pidb||id′2b,m3_1b=x′1b||x′2b

服务站q生成随机数密钥k3a对pida、na、pidb以及kab进行加密,再根据pka对k3a进行加密,组合成ticketa可表示为{pida||na||pidb||kab}k3a||enc(k3a,pka)}。其中,enc(m,pk)表示以m为消息、以pk为公钥的基于id密码学的加密,具体原理可见参考文献《identity-basedencryptionfromtheweilpairing》。enc(k3a,pka)=(qau-h(ida||idq||x1a),qav),此处h(ida||idq||x1a)为偏移量,效果相当于加密,用于抗量子计算。k3a用公钥pka进行加密,只能用对应的私钥ska进行解密,其他人无法读取。

服务站q生成随机数密钥k3b对pidb、nb、pida以及kab进行加密,再根据pkb=h(idb)得pkb,加密k3b组合成ticketb={pidb||nb||pida||kab}k3b||enc(k3b,pkb)}

enc(k3b,pkb)=(qbu-h(idb||idq||x1b),qbv),此处h(idb||idq||x1b)为偏移量,效果相当于加密,用于抗量子计算。k3b用公钥pkb进行加密,只能用对应的私钥skb进行解密,其他人无法读取。

使用m3_1a对m3_0a以及ticketa计算消息认证码得到mac(m3_0a||ticketa,m3_1a),mac(m,k)表示以m为消息,以k为密钥的消息认证码。连同m3_0a和ticketa一起组成m3a,可表示为m3a={m3_0a||ticketa||mac(m3_0a||ticketa,m3_1a)}。

使用m3_1b对m3_0b以及ticketb计算消息认证码得到mac(m3_0b||ticketb,m3_1b,连同m3_0b和ticketb一起组成m3b,m3b={m3_0b||ticketb||mac(m3_1b||ticketb,m3_1b)}。

将m3a和m3b作为m3发送到用户端b,可表示为m3=m3a||m3b。

步骤4:b→a。

用户端b收到m3后,根据(x1b,id1b)和(x′2b,id′2b),按照上文所述方式恢复idb和randb。根据x′1b计算得到id′1b=idb+randb*x′1b

使用x′1b||x′2b′对m3b中消息认证码进行验证。验证成功则表明idb已被服务站认可,认证成功。如验证失败,或没有收到确认消息,则认证失败。

用户端b计算新的假身份pid′b=hash(idb||id′1b||id′2b),将pidb更新为pid′b,(x1b,id1b)更新为(x′1b,id′1b)。因为id没有存储于用户端密钥卡存储器,仅在执行身份认证流程时短暂存在于用户端密钥卡内存中,因此单独对其进行断电拆解无法获取id。

用户端b使用私钥skb对ticketb中enc(k3b,pkb)进行解密,计算h(idb||idq||x1b),对qbu-h(idb||idq||x1b)加上h(idb||idq||x1b)恢复出(qbu,qbv),进一步解密得到k3b。使用k3b对ticketb进行解密得到会话密钥kab。

用户端b生成随机数nc,使用kab加密nc,并对na计算消息认证码得到mac(na,kab)。将m3a、加密的nc以及该消息认证码一起作为m4发送至用户端a。m4可表示为m3a||{nc}kab||mac(na,kab)。

步骤5:a→b。

用户端a收到m4后,根据(x1a,id1a)和(x′2a,id′2a),按照上文所述方式恢复ida和randa。根据x′1a计算得到id′1a=ida+randa*x′1a。

使用x′1a||x′2a′对m3a中消息认证码进行验证。验证成功则表明ida已被服务站认可,认证成功。如验证失败,或没有收到确认消息,则认证失败。

用户端a计算新的假身份pid′a=hash(ida||id′1a||id′2a),将pida更新为pid′a,(x1a,id1a)更新为(x′1a,id′1a)。因为id没有存储于用户端密钥卡存储器,仅在执行身份认证流程时短暂存在于用户端密钥卡内存中,因此单独对其进行断电拆解无法获取id。

用户端a使用私钥ska对ticketa中enc(k3a,pka)进行解密,计算h(ida||idq||x1a),对qau-h(ida||idq||x1a)加上h(ida||idq||x1a)恢复出(qau,qav),进一步解密得到k3a。使用k3a对ticketa进行解密得到会话密钥kab。

用户端a使用kab验证mac(na,kab),确认na、kab的一致性。至此,用户端a对用户端b认证通过,且确认协商密钥为kab。

用户端a对nc计算消息认证码得到mac(nc,kab)。将该消息认证码作为m5发送至用户端b。

用户端b收到m5后,使用kab验证mac(nc,kab),确认nc、kab的一致性。至此,用户端b对用户端a认证通过,且确认协商密钥为kab。

后续用户端a和用户端b进行安全通信,利用kab进行消息加解密和消息认证。可将kab拆分为kabe和kaba,分别作为消息加解密和消息认证密钥。

实施例2,广域网内的两个用户端的密钥协商:

如图3所示,本实施例中,用户端a、用户端b不属于同一个量子通信服务站。其中,用户端a归属于量子通信服务站qa,同理用户端b归属于量子通信服务站qb。

步骤1:a→b。

用户端a获取当前时间戳timestampa,令x0a=timestampa

用户端a由匹配的密钥卡中读取x1a,计算x′1a=hash(x1a||x0a),x′2a=hash(x0a||x1a)。

将x1a、x′1a以及x′2a进行比较,如果任意二者相等,则当前timestampa不满足更换pid的条件,此时需要重新获得timestampa并进行更换,查看是否满足更换pid的条件。

令na=timestampa。使用用户端a的私钥对na、x′1a以及x′2a进行签名得到sign(na||x′1a||x′2a,ska)。

用户端a从密钥卡中读取pida和id1a,与na以及签名一起作为m1发送至客户端b,m1可表示为pida||id1a||na||sign(na||x′1a||x′2a,ska)。

步骤2:b→qb。

用户端b收到m1后,获取当前时间戳timestampb,令x0b=timestampb。

用户端b由匹配的密钥卡中读取x1b,计算x′1b=hash(x0b||x1b),x′2b=hash(x0b||x1b)。

将x1b、x′1b以及x′2b进行比较,如果任意二者相等,则当前timestampb不满足更换pid的条件,此时需要重新获得timestampb并进行更换,查看是否满足更换pid的条件。

令nb=timestampb。使用用户端b的私钥对m1、nb、x′1b以及x′2b进行签名得到sign(m1||nb||x′1b|x′2b,skb)。

用户端b从密钥卡中读取pidb和id1b,与m1、nb以及签名一起作为m2发送至服务站qb,m2可表示为m1||pidb||id1b||nb||sign(m1||nb||x′1b|x′2b,skb)。

步骤3:qb→qa。

服务站qb收到m2后,根据pidb搜索本地客户端信息列表中的pidb项,如找不到pidb,则认证失败,流程结束。

找到pidb后,根据nb判断与当前时间是否位于可允许误差范围内。

判断通过后,根据(x1b,id1b)和(x2b,id2b),按照上文所述方式恢复idb和randb。

计算x′1b=hash(x1b||x0b),x′2b=hash(x0b||x1b),进一步计算id′1b=idb+randb*x′1b,id′2b=idb+randb*x′2b。

对m2中签名进行验证。签名验证方式与上文相同。签名验证成功则表明找到idb,认证成功。

量子通信服务站qb生成会话密钥kab,与m1、pidb一起作为m′3发送至量子通信服务站qa,m′3={m1||pidb||kab}通过qkd密钥kq对m′3进行保护,即利用kq进行消息加解密和消息认证。

步骤4:qa→qb。

服务站qa通过qkd密钥kq解密得到m′3。

服务站qa根据pida搜索本地客户端信息列表中的pida项,如找不到pida,则认证失败,流程结束。

找到pida后,根据na判断与当前时间是否位于可允许误差范围内。

判断通过后,根据(x1a,id1a)和(x2a,id2a),按照上文所述方式恢复ida和randa。

计算x′1a=hash(x1a||x0a),x′2a=hash(x0a||x1a),进一步计算id′1a=ida+randa*x′1a,id′2a=ida+randa*x′2a。

对m1中签名进行验证。签名验证方式与上文相同。签名验证成功则表明找到ida,认证成功。

接下来服务站qa计算用户端a的新的假身份pid′a=hash(ida||id′1a||id′2a),将pida更新为pid′a,x1a更新为x′1a,(x2a,id2a)更新为(x′2a,id′2a)。因为id没有存储于服务站存储器,仅在执行身份认证流程时短暂存在于服务站内存中,因此单独对其进行断电拆解无法获取id。

令m3a_0=pida||id′2a,m3a_1=x′1a||x′2a。服务站qa生成随机数密钥k3a对pida、na、pidb以及kab进行加密,再根据pka=h(ida)得到pka并对k3a进行加密,组合成ticketa可表示为{pida||na||pidb||kab}k3a||enc(k3a,pka)}。其中,enc(m,pk)表示以m为消息、以pk为公钥的基于id密码学的加密,enc(k3a,pka)=(qau-h(ida||idqa||x1a),qav),此处h(ida||idqa||x1a)为偏移量,效果相当于加密,用于抗量子计算。k3a用公钥pka进行加密,只能用对应的私钥ska进行解密,其他人无法读取。

使用m3a_0对m3a_1以及ticketa计算消息认证码得到mac(m3a_0||ticketa,m3a_1)。连同m3a_0和ticketa一起组成m3a并发送到量子通信服务站qb,可表示为m3a={m3a_0||ticketa||mac(m3a_0||ticketa,m3a_1)}。通过qkd密钥kq对m3a进行保护,即利用kq进行消息加解密和消息认证。

步骤5:qb→b。

服务站qb收到m3a后,计算新的假身份pid′b=hash(idb||id′1b||id′2b),将pidb更新为pid′b,x1b更新为x′1b,(x2b,id2b)更新为(x′2b,id′2b)。因为id没有存储于服务站存储器,仅在执行身份认证流程时短暂存在于服务站内存中,因此单独对其进行断电拆解无法获取id。

令m3b_0=pidb||id′2b,m3b_1=x′1b||x′2b。服务站qb生成随机数密钥k3b对pidb、nb、pida以及kab进行加密,再根据pkb=h(idb)得到pkb并对k3b进行加密,组合成ticketb可表示为{pidb||nb||pida||kab}k3b||enc(k3b,pkb)}。enc(k3b,pkb)=(qbu-h(idb||idqb||x1b),qbv),此处h(idb||idqb||x1b)为偏移量,效果相当于加密,用于抗量子计算。k3b用公钥pkb进行加密,只能用对应的私钥skb进行解密,其他人无法读取。

服务站qb使用m3b_1对m3a、m3b_0以及ticketb计算消息认证码得到mac(m3a|||m3b_0||ticketb,m3b_1),同m3a、m3b_0和ticketb组成m3b发送到量子通信服务站qb,m3={m3a|m3b_0||ticketb||mac(m3a|||m3b_0||ticketb,m3b_1)}。

步骤6:b→a。

用户端b收到m3后,根据(x1b,id1b)和(x′2b,id′2b),按照上文所述方式恢复idb和randb。根据x′1b计算得到id′1b=idb+randb*x′1b

使用x′1b|x′2b’对m3中消息认证码进行验证。验证成功则表明idb已被服务站认可,认证成功。如验证失败,或没有收到确认消息,则认证失败。

用户端b计算新的假身份pid′b=hash(idb||id′1b|id′2b),将pidb更新为pid′b,(x1b,id1b)更新为(x′1b,id′1b)。因为id没有存储于用户端密钥卡存储器,仅在执行身份认证流程时短暂存在于用户端密钥卡内存中,因此单独对其进行断电拆解无法获取id。

用户端b使用私钥skb对ticketb中enc(k3b,pkb)进行解密,计算h(idb||idqb||x1b),对qbu-h(idb||idqb||x1b)加上h(idb||idqb||x1b)恢复出(qbu,qbv),进一步解密得到k3b。使用k3b对ticketb进行解密得到会话密钥kab。

用户端b生成随机数nc,使用kab加密nc,并对na计算消息认证码得到mac(na,kab)。将m3a、加密的nc以及该消息认证码一起作为m4发送至用户端a。m4可表示为m3a||{nc}kab|mac(na,kab)。

步骤7:a→b。

用户端a收到m4后,根据(x1a,id1a)和(x′2a,id′2a),按照上文所述方式恢复ida和randa。根据x′1a计算得到id′1a=ida+randa*x′1a

使用x′1a|x′2a对m3a中消息认证码进行验证。验证成功则表明ida已被服务站认可,认证成功。如验证失败,或没有收到确认消息,则认证失败。

用户端a计算新的假身份pid′a=hash(ida||id′1a|id′2a),将pida更新为pid′a,(x1a,id1a)更新为(x′1a,id′1a)。因为id没有存储于用户端密钥卡存储器,仅在执行身份认证流程时短暂存在于用户端密钥卡内存中,因此单独对其进行断电拆解无法获取id。

用户端a使用私钥ska对ticketa中enc(k3a,pka)进行解密,计算h(ida||idqa||x1a),对qau-h(ida||idqa||x1a)加上h(ida||idqa||x1a)恢复出(qau,qav),进一步解密得到k3a。使用k3a对ticketa进行解密得到会话密钥kab。

用户端a使用kab验证mac(na,kab),确认na、kab的一致性。至此,用户端a对用户端b认证通过,且确认协商密钥为kab。

用户端a对nc计算消息认证码得到mac(nc,kab)。将该消息认证码作为m5发送至用户端b。

用户端b收到m5后,使用kab验证mac(nc,kab),确认nc,、kab的一致性。至此,用户端b对用户端a认证通过,且确认协商密钥为kab。

后续用户端a和用户端b进行安全通信,利用kab进行消息加解密和消息认证。可将kab拆分为kabe和kaba,分别作为消息加解密和消息认证密钥。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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