一种基于无证书的链路保护方法与流程

文档序号:16847787发布日期:2019-02-12 22:28阅读:499来源:国知局
一种基于无证书的链路保护方法与流程

本申请涉及信息安全技术领域,尤其涉及一种基于无证书的链路保护方法。



背景技术:

1976年,diffie-hellman提出了公钥密码的新思想,开创了密码学的新时代。使用公钥密码技术可以解决单钥密码体制中最难解决的两个问题:密钥分配和数字签名。在公钥密码体制中,每个用户拥有一对密钥:私钥和公钥,其中私钥由用户秘密保存,公钥可以公开发布,由其他人使用。

要安全地使用公钥密码技术,必须让公钥与用户的身份信息关联起来,并具有可验证性和可信性,公钥密码技术的应用需要解决对用户公钥的认证问题。

经典的密钥协商方法是建立在基于证书的公钥密码体制上的,基于证书的公钥密码体制(pki/ca)的链路保护方法,具有以下缺陷:

(1)在使用其他用户公钥时,需要设法查找该用户的公钥证书;

(2)使用任何公钥前都需要先验证公钥证书的合法性和有效性;

(3)ca需要管理大量的证书,包括证书的颁发、存储和撤销等复杂的过程;

(4)证书在传输和存储的过程中需要占用大量的网络带宽和存储资源。



技术实现要素:

本申请的目的在于提供一种基于无证书的链路保护方法,降低运维成本,简化费用管理方式,方便联合经营和大面积推广应用。

为达到上述目的,本申请提供一种基于无证书的链路保护方法,包括:终端设备在生产时预置终端公钥标识;用户客户端与终端设备根据所述预置的终端公钥标识协商生成通讯主密钥,使用所述通讯主密钥进行数据通讯。

如上的,其中,终端设备预置终端公钥标识,具体包括如下子步骤:生成第一随机数,根据第一随机数计算得到第一部分公钥;接收客户端生产程序根据第一部分公钥计算生成的终端公钥标识。

如上的,其中,根据第一部分公钥计算生成的终端公钥标识,具体包括如下子步骤:生成第二随机数,根据第二随机数和第一部分公钥,计算生成第二部分公钥;根据终端标识、厂商标识、有效期和第二部分公钥拼接得到终端公钥标识。

如上的,其中,终端设备还包括预置终端私钥,具体包括如下子步骤:接收客户端生产程序根据第二部分公钥、终端标识和厂商私钥计算生成的第一部分私钥;根据第一部分私钥和第一随机数计算生成终端私钥并存储。

如上的,其中,终端设备还包括验证生成的终端私钥和终端公钥标识是否匹配,具体包括如下子步骤:根据终端私钥生成终端公钥,从终端公钥标识中解析出终端标识和第二部分公钥,对终端标识和第二部分公钥进行摘要运算,生成摘要值,判断根据该摘要值、厂商公钥和第二部分公钥计算生成的数据与终端公钥是否相等,若相等,则验证终端私钥和终端公钥标识匹配。

如上的,其中,用户客户端生成通讯主密钥,具体包括如下子步骤:终端设备生成第四随机数,根据第四随机数和终端公钥计算生成第二部分私钥并返回给用户客户端;用户客户端生成第三随机数,根据第三随机数和所述第二部分私钥计算生成客户端私钥,根据客户端私钥计算客户端公钥;并根据获取到的终端公钥标识生成终端公钥,根据终端标识、第二部分私钥、终端公钥和客户端公钥生成通讯主密钥。

如上的,其中,根据获取到的终端公钥标识生成终端公钥,具体包括如下子步骤:从终端公钥标识中解析出终端标识和第二部分公钥;对终端标识和第二部分公钥进行摘要运算,生成摘要值,根据该摘要值、厂商公钥和第二部分公钥计算生成终端公钥。

如上的,其中,用户客户端还包括验证客户端公私密钥对是否匹配,具体包括如下子步骤:用户客户端根据第三随机数计算生成第三部分公钥;终端设备根据第四随机数和第三部分公钥计算生成第四部分公钥;用户客户端对终端标识和终端公钥进行摘要运算,生成第二摘要值;判断根据第二摘要值、终端公钥和第四部分公钥计算生成的数据与生成的客户端公钥是否相等,若相等,则客户端公私密钥对匹配。

如上的,其中,终端设备生成通讯主密钥,具体包括如下子步骤:终端设备对终端标识和终端公钥进行摘要运算,生成摘要值;根据该摘要值、终端公钥和第四部分公钥计算生成客户端公钥;根据终端标识、第二部分私钥、终端公钥和客户端公钥生成通讯主密钥。

如上的,其中,终端设备生成通讯主密钥之前,还包括如下子步骤:用户客户端使用客户端私钥对第二摘要值进行签名,得到签名结果,将签名结果发送到终端设备;终端设备接收到签名结果后,用生成的客户端公钥对签名结果进行验签,若验签成功,则表示客户端公私密钥对合法,计算生成通讯主密钥。

本申请实现的有益效果如下:

(1)本发明使用公钥标识来认证用户的公钥,公钥标识由用户id、有效期和用户部分公钥组成,计算用户公钥的过程隐含了对用户公钥的认证。

(2)公钥标识相比较证书,数据量小,在使用蓝牙、nfc等无线传输方式的系统中,本发明密钥协商效率更高。

(3)本发明采用基于cla(无证书认证体制)机制的认证方式,不需要管理大量的证书,节省了证书管理的大量消耗。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1为用户客户端与终端设备进行密钥协商的方法流程图;

图2为终端设备预置终端公钥标识的具体流程图;

图3为用户客户端与终端设备进行密钥协商的具体流程图。

具体实施方式

下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了减少证书管理的大量消耗,本申请一种基于无证书的链路保护方法,应用于终端设备与用户客户端组成的系统中;终端设备出厂前,预置终端公钥标识;

如图1所示,为保证数据传输的安全性,用户客户端与终端设备在数据通讯前先进行密钥协商,具体为:

步骤11:用户客户端与终端设备根据终端公钥标识协商生成通讯主密钥;

步骤12:使用所述通讯主密钥进行数据通讯。

以下实施例对上述流程作详细描述,其中,实施例一为终端设备预置终端公钥标识的具体流程,实施例二为终端设备与用户客户端进行密钥协商的具体流程。

实施例一

本申请实施例一详述终端设备在终端厂商生产时预置终端私钥和公钥标识的方法,具体操作如下:

在终端厂商中预置一对厂商公私密钥对,厂商公钥与厂商私钥的对应关系为:

p=[s]·g……式(1)

其中,p为厂商公钥,s为厂商私钥,g为sm2算法椭圆曲线的一个基点。

参见图2,终端厂商启动客户端生产程序,客户端生产程序中的多个终端设备依次执行如下操作:

步骤21:终端设备生成第一随机数,根据第一随机数计算第一部分公钥,将该终端设备的设备标识和第一部分公钥返回客户端生产程序;

终端设备根据第一随机数计算第一部分公钥,具体为:

p1=[r1]·g……式(2)

其中,r1为生成的第一随机数,将第一随机数存储在终端设备中,优选的,实施例中生成的随机数为32字节,g为sm2算法椭圆曲线的一个基点。

步骤22:客户端生产程序生成第二随机数,根据第二随机数和接收到的第一部分公钥,计算生成第二部分公钥;

客户端生产程序根据第二随机数和第一部分公钥计算生成第二部分公钥,具体为:

p2=p1+[r2]·g=(xp2,yp2)……式(3)

其中,p1为接收到的第一部分公钥,r2为生成的第二随机数,g为sm2算法椭圆曲线的一个基点,p2=(xp2,yp2)为计算生成的第二部分公钥。

优选的,客户端生产程序在接收到终端设备的数据后,先根据终端设备的设备标识验证终端设备的合法性,例如,判断终端设备的设备标识是否与录入在客户端生产程序中的设备标识一致,若一致,则验证终端设备合法,生成第二随机数,否则返回终端设备不合法响应。

步骤23:客户端生产程序对终端标识和生成的第二部分公钥进行摘要运算,得到第一摘要值;

具体的,客户端生产程序将终端标识与第二部分公钥进行拼接,然后对拼接结果优选使用sm3算法进行摘要运算,得到第一摘要值,具体计算方式为:

h1=h256(id||xp2||yp2)……式(4)

其中,id为终端标识,xp2,yp2为第二部分公钥p2的坐标值,将xp2,yp2的数据类型转换成字符串,id||xp2||yp2表示终端标识与第二部分公钥的坐标值xp2,yp2进行拼接,h256(id||xp2||yp2)表示对拼接结果进行sm3摘要运算,h1为计算得到的第一摘要值。

步骤24:客户端生产程序根据第一摘要值和厂商私钥计算生成第一部分私钥;

具体的,客户端生产程序生成第一部分私钥的具体计算方式为:

s1=r2+h1·s(modn)……式(5)

其中,r2为第二随机数,s为厂商私钥,n为基点g的阶,h1为第一摘要值,将h1的数据类型转换成整数,计算得到的s1为第一部分私钥。

步骤25:客户端生产程序根据终端标识、厂商标识和第二部分公钥得到终端公钥标识;

具体的,客户端生产程序将终端标识、厂商标识、有效期和第二部分公钥拼接,得到终端设备的公钥标识,即:

f=id||厂商标识||有效期||xp2||yp2……式(6)

其中,id为终端标识,xp2,yp2为第二部分公钥p2的坐标值,将xp2,yp2的数据类型转换成字符串,拼接得到的f为终端设备的公钥标识。

步骤26:客户端生产程序将终端设备第一部分私钥和终端公钥标识返回终端设备;

优选的,第一部分私钥使用第一部分公钥加密后返回终端设备。

步骤27:终端设备从接收到的终端公钥标识中解析出终端标识和第二部分公钥,根据接收到的第一部分私钥和存储的第一随机数计算生成终端私钥;

具体的,终端设备生成终端私钥的具体计算方式为:

d1=s1+r1(modn)……式(7)

其中,s1为接收到的第一部分私钥,r1为终端设备中存储的第一随机数,n为基点g的阶,计算得到的d1为终端私钥。

优选的,当第一部分私钥是密文时,终端设备使用第一随机数r1解密出明文s1。

步骤28:终端设备验证生成的终端私钥和终端公钥标识是否匹配,如果匹配,则将终端私钥和终端公钥标识预置在终端设备中,否则返回错误响应;

具体的,终端设备根据生成的终端私钥计算生成终端公钥,计算方式为:

q1=[d1]·g=(xq1,yq1)……式(8)

其中,d1为终端私钥,g为sm2算法椭圆曲线的一个基点,计算得到的q1=(xq1,yq1)为终端公钥;

将第二部分公钥的坐标值的xp2,yp2数据类型转换成字符串,对终端标识和xp2,yp2拼接后的结果做摘要运算生成摘要值,将摘要值的数据类型转换成整数,然后根据该摘要值、厂商公钥和第二部分公钥验证得到的终端公钥是否成立,具体为:

h1=h256(id||xp2||yp2)

q1=[h1]·p+p2……式(9)

终端设备判断根据摘要值h1、厂商公钥p和第二部分公钥p2计算生成的数据与终端公钥q1是否相等,如果是,则说明校验值成立,则生成的终端公钥为合法数据,否则向客户端生产程序返回错误响应。

实施例二

本申请实施例二提供的是用户客户端与终端设备之间的密钥协商方法,在用户客户端中预置厂商公钥,具体密钥协商方法如图3所示,包括:

步骤31:用户客户端连接终端设备,查询用户客户端和终端设备之间是否存在通讯主密钥,如果是,则结束会话密钥协商,进入数据通讯阶段,否则执行步骤32;

若查询到用户客户端和终端设备之间存在通讯主密钥,则说明终端设备与用户客户端之前连接成功过,因此直接使用该通讯主密钥进行数据通讯即可,若查询不到,则需要建立终端设备与用户客户端的会话通道。

进一步的,查询用户客户端和终端设备之间是否存在通讯主密钥还包括验证用户客户端和终端之间的通讯主密钥是否匹配,如果不匹配,则执行步骤32;

步骤32:用户客户端向终端设备发送获取终端公钥标识的指令,获取终端公钥标识,根据终端公钥标识计算终端公钥;

根据终端公钥标识计算终端公钥具体包括如下子步骤:

从终端公钥标识中解析出终端标识和第二部分公钥;

对终端标识和第二部分公钥进行摘要运算,生成摘要值,根据该摘要值、厂商公钥和第二部分公钥计算生成终端公钥;具体计算公式为:

q1=[h1]·p+p2=(xq1,yq1)……式(10)

其中,h1=h256(id||xp2||yp2),p为预置的厂商公钥,p2为第二部分公钥,xp2,yp2是p2的坐标值转换成字符串的结果,计算得到的q1=(xq1,yq1)为终端公钥,将终端公钥存储在缓存中。

步骤33:用户客户端生成第三随机数,根据第三随机数计算生成第三部分公钥,将第三部分公钥发送至终端设备;

用户客户端计算生成第三部分公钥的具体计算方式为:

p3=[r3]·g……式(11)

其中,r3为第三随机数,g为sm2算法椭圆曲线的一个基点,p3为生成的第三部分公钥,将第三部分公钥存储在缓存中。

步骤34:终端设备接收到第三部分公钥后,生成第四随机数,根据第四随机数和第三部分公钥计算生成第四部分公钥;

终端设备计算生成第四部分公钥的具体计算方法为:

p4=p3+[r4]·g……式(12)

其中,p3为接收到的第三部分公钥,r4为生成的第四随机数,g为sm2算法椭圆曲线的一个基点,计算得到的p4为第四部分公钥。

步骤35:终端设备对终端标识和终端公钥进行摘要运算,根据计算得到的第二摘要值、第四随机数和终端私钥计算生成第二部分私钥,使用第三部分公钥对第二部分私钥进行加密,将加密结果和第四部分公钥返回用户客户端;

终端设备计算生成第二部分私钥的具体计算方法为:

h2=h256(id||xq1||yq1)

s2=r4+h2·d1(modn)……式(13)

其中,id为终端标识,q1=(xq1,yq1)为终端公钥,xq1,yq1是q1的坐标值转换成字符串的结果,id||xq1||yq1表示终端标识与所述xq1,yq1进行拼接,h256(id||xq1||yq1)表示对拼接结果进行sm3摘要运算,h2为计算得到的第二摘要值;

r4为第四随机数,d1为终端私钥,n为基点g的阶,计算得到的s2为第二部分私钥;

使用第三部分公钥p3对第二部分私钥s2进行加密,得到加密结果s2’。

步骤36:用户客户端使用第三部分公钥对加密结果进行解密,得到第二部分私钥,根据第二部分私钥和第三随机数生成客户端私钥,并根据客户端私钥计算生成客户端公钥;

具体的,使用缓存中存储的第三部分公钥p3对加密结果s2’解密,得到第二部分私钥s2;

用户客户端根据第二部分私钥s2和第三随机数r3,通过计算d2=s2+r3(modn),得到客户端私钥d2,然后对客户端私钥d2和基点g通过计算q2=[d2]·g=(xq2,yq2)计算得到客户端公钥q2;

本步骤还包括对生成的客户端公钥q2进行验证,具体为验证q2=[h2]·q1+p4是否成立,其中,h2=h256(id||xq1||yq1),id为终端标识,xq1,yq1是q1的坐标值转换成字符串的结果,h2为对终端标识和xq1,yq1拼接结果进行摘要运算得到的摘要值,p4为接收到的第四部分公钥;若验证成立,则用户客户端获取sm2公、私钥对成功,即公钥q2、私钥d2,然后执行步骤37,否则向终端设备返回错误响应。

步骤37:用户客户端根据终端标识、第二部分私钥、终端公钥和客户端公钥生成通讯主密钥,并使用客户端私钥对第二摘要值进行签名,将签名结果发送至终端设备;

具体的,用户客户端使用密钥派生函数m=kdf(id||s2||xq1||yq1||xq2||yq2,klen)计算生成通讯主密钥m,将通讯主密钥存储在存储设备中,其中,xq1,yq1是q1的坐标值转换成字符串的结果,xq2,yq2是q2的坐标值转换成字符串的结果,klen为密钥派生函数派生出的通讯主密钥的密钥长度。

步骤38:终端设备接收到签名结果后,计算客户端公钥,并根据生成的客户端公钥对签名结果进行验签,若验签通过,则根据终端标识、第二部分私钥、终端公钥和客户端公钥生成通讯主密钥,否则返回错误响应;

终端设备计算客户端公钥q2=[h2]·q1+p4,其中,q1为终端公钥,h2为第二摘要值,p4为第四部分公钥,终端设备用生成的客户端公钥对签名结果进行验签,若验签成功,则表示用户客户端得到的公私密钥对合法;

终端设备使用密钥派生函数m=kdf(id||s2||xq1||yq1||xq2||yq2,klen)计算生成通讯主密钥m,将通讯主密钥存储在存储设备中。

具体的,kdf(z,klen)是sm2密钥交换协议中规定使用的密钥派生函数,使用sm3算法作为数据摘要算法。

输入:比特串z,整数klen是要生成的密钥数据的比特长度,要求该值小于256×(232-1)。

输出:长度为klen的密钥数据比特串;

密钥派生函数具体计算方法:

步骤a1:初始化一个32比特构成的计数器ct=0x00000001;

步骤a2:ct从1递增至并循环计算hai=h256(z||ct);

步骤a3:如klen/256是整数,令否则令最左边的

步骤a4:令k便是获取到的密钥数据。

密钥协商完成后,进入数据通讯阶段,在通讯过程中双方使用各自生成的通讯主密钥进行数据通讯。

本申请实现的有益效果如下:

(1)本发明使用公钥标识来认证用户的公钥,公钥标识由用户id、有效期和用户部分公钥组成,计算用户公钥的过程隐含了对用户公钥的认证。

(2)公钥标识相比较证书,数据量小,在使用蓝牙、nfc等无线传输方式的系统中,本发明密钥协商效率更高。

(3)本发明采用基于cla(无证书认证体制)机制的认证方式,不需要管理大量的证书,节省了证书管理的大量消耗。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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