一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

SSL连接建立方法、装置、电子设备及计算机可读存储介质与流程

2022-02-20 00:54:32 来源:中国专利 TAG:

ssl连接建立方法、装置、电子设备及计算机可读存储介质
技术领域
1.本技术涉及计算机技术领域,具体而言,本技术涉及一种ssl连接建立方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.在互联网的web(world wide web,全球广域网)应用中,为了保护应用数据的安全传输,通常采用ssl(secure sockets layer安全套接字)协议建立客户端到服务端的安全连接。ssl协议因为实施起来比较简单,对现有网络系统影响小,加密速度快,成本低等优点在目前得到广泛的应用。
3.建立ssl连接的过程一般可以分为四个阶段,第一阶段为客户端首先发送clienthello(客户端问候)消息到服务端,服务端收到clienthello消息后,再发送serverhello(服务端问候)消息回应客户端。第二阶段为服务器向客户端发送消息,以供客户端对服务端的身份进行验证。第三阶段为客户端收到服务端发送的一系列消息并解析后,将本端相应的消息发送给服务器,以供服务端对客户端的身份进行验证。第四阶段为双方各自生成会话密钥,完成握手协议,建立ssl连接。随着移动互联网的发展,多数web应用也提供基于app的业务应用,移动终端越来越多的作为客户端与服务端建立ssl连接。
4.目前,为了加强web应用的安全性,信息系统可采用sm2算法完成客户端的身份认证和数字签名。移动终端可采用tf(trans flash)卡方式或者使用软算法方式完成基于sm2算法的身份认证和数字签名。但是采用tf卡的方式需要增加了移动终端的硬件成本开销,而采用软算法方式安全性差。


技术实现要素:

5.本技术的目的旨在至少能解决上述的技术缺陷之一,本技术实施例所提供的技术方案如下:
6.第一方面,本技术实施例提供了一种ssl连接建立方法,其特征在于,请求建立ssl连接的移动终端和服务端共享sm2算法的椭圆曲线参数,服务端保存有协同签名的第一子私钥,移动终端保存有协同签名的第二子私钥和协同签名证书,方法包括:
7.移动终端向服务端发送移动终端问候clienthello;
8.在服务端响应于clienthello向移动终端发送服务端问候serverhello后,服务端生成第一随机数,并基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,将服务端签名证书、服务端签名和第一椭圆曲线点发送至移动终端;
9.在移动终端在基于服务端签名证书和服务端签名对服务端身份验证通过后,移动终端生成第二随机数,并获取预主密钥的摘要,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,将协同签名中间量、第一签名值、预主密钥和协同签名证书发送至服务端;
10.服务端基于协同签名中间量、第一签名值以及第一子私钥,获取第二签名值,在服
务端利用协同签名证书、第一签名值、第二签名值对移动终端身份验证通过后,移动终端和服务端分别基于所述预主密钥生成会话密钥,移动终端向服务端发送握手结束消息,服务端向移动终端发送握手结束消息,即建立了移动终端和服务端之间的ssl连接。
11.在本技术的一种可选实施例中,在移动终端向服务端发送移动终端问候clienthello之前,该方法还包括:
12.服务端生成第一子私钥,移动终端生成第二子私钥;
13.服务端基于第一子私钥和椭圆曲线基点,获取第一椭圆曲线点,并将第一椭圆曲线点发送至移动终端;
14.移动终端基于第二子私钥和第一椭圆曲线点,获取协同签名公钥,并基于协同签名公钥向数字证书系统申请得到协同签名证书。
15.在本技术的一种可选实施例中,服务端基于第一子私钥和椭圆曲线基点,通过以下公式,获取第一椭圆曲线点:
16.p1=[d1 1]g
[0017]
其中,p1为第一椭圆曲线点,d1为第一子私钥,g为椭圆曲线基点;
[0018]
移动终端基于第二子私钥和第一椭圆曲线点,通过以下公式,获取协同签名公钥:
[0019]
p=[d2 1]p1
–g[0020]
其中,p为协同签名公钥,d2为第二子私钥。
[0021]
在本技术的一种可选实施例中,基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,通过以下公式得到:
[0022]v1
=[k1]g
[0023]
其中,v1为第一椭圆曲线点,g椭圆曲线参数的基点,k1为第一随机数。
[0024]
在本技术的一种可选实施例中,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,包括:
[0025]
基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,获取第二椭圆曲线点;
[0026]
基于第二椭圆曲线点和预主密钥的摘要,获取第一签名值;
[0027]
基于第一签名值、第二随机数以及第二子私钥,获取协同签名中间量。
[0028]
在本技术的一种可选实施例中,基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,通过以下公式,获取第二椭圆曲线点:
[0029]v2
=(1 d2)*(v1 [k2]g)
[0030]
其中,v2为第二椭圆曲线点,d2为第二子私钥,k2为第二随机数;
[0031]
基于第二椭圆曲线点和预主密钥的摘要,通过以下公式,获取第一签名值:
[0032]
r=(x1 e)mod n
[0033]
其中,r为第一签名值,x1为第二椭圆曲线点的横坐标,e为预主密钥的摘要,mod n为除以n后取余数的运算,n为椭圆曲线的基点的阶数;
[0034]
基于第一签名值、第二随机数以及第二子私钥,通过以下公式,获取协同签名中间量:
[0035]
w2=[k2 r*(1 d2)-1
]mod n
[0036]
其中,w2为协同签名中间量。
[0037]
在本技术的一种可选实施例中,服务端基于协同签名中间量、第一签名值以及第一子私钥,通过以下公式,获取第二签名值:
[0038]
s=[(1 d1)-1
*(k1 w2)-r]mod n
[0039]
其中,s为第二签名值,d1为第一子私钥。
[0040]
第二方面,本技术实施例提供了一种ssl连接建立装置,请求建立ssl连接的移动终端和服务端共享sm2算法的椭圆曲线参数,服务端保存有协同签名的第一子私钥,移动终端保存有协同签名的第二子私钥和协同签名证书,装置包括:
[0041]
移动终端问候发送模块,用于移动终端向服务端发送移动终端问候clienthello;
[0042]
第一椭圆曲线点发送模块,用于在服务端响应于clienthello向移动终端发送服务端问候serverhello后,服务端生成第一随机数,并基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,将服务端签名证书、服务端签名和第一椭圆曲线点发送至移动终端;
[0043]
第一协同签名模块,用于在移动终端在基于服务端签名证书和服务端签名对服务端身份验证通过后,移动终端生成第二随机数,并获取预主密钥的摘要,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,将协同签名中间量、第一签名值、预主密钥和协同签名证书发送至服务端;
[0044]
第二协同签名模块,用于服务端基于协同签名中间量、第一签名值以及第一子私钥,获取第二签名值,在服务端利用协同签名证书、第一签名值、第二签名值对移动终端身份验证通过后,移动终端和服务端分别基于所述预主密钥生成会话密钥,移动终端向服务端发送握手结束消息,服务端向移动终端发送握手结束消息,即建立了移动终端和服务端之间的ssl连接。
[0045]
在本技术的一种可选实施例中,该装置还包括协同签名证书获取模块,用于:
[0046]
在移动终端向服务端发送移动终端问候clienthello之前,服务端生成第一子私钥,移动终端生成第二子私钥;
[0047]
服务端基于第一子私钥和椭圆曲线基点,获取第一椭圆曲线点,并将第一椭圆曲线点发送至移动终端;
[0048]
移动终端基于第二子私钥和第一椭圆曲线点,获取协同签名公钥,并基于协同签名公钥向数字证书系统申请得到协同签名证书。
[0049]
在本技术的一种可选实施例中,协同签名证书获取模块具体用于:
[0050]
服务端基于第一子私钥和椭圆曲线基点,通过以下公式,获取第一椭圆曲线点:
[0051]
p1=[d1 1]g
[0052]
其中,p1为第一椭圆曲线点,d1为第一子私钥,g为椭圆曲线基点;
[0053]
移动终端基于第二子私钥和第一椭圆曲线点,通过以下公式,获取协同签名公钥:
[0054]
p=[d2 1]p1–g[0055]
其中,p为协同签名公钥,d2为第二子私钥。
[0056]
在本技术的一种可选实施例中,第一椭圆曲线点发送模块具体用于:
[0057]
基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,通过以下公式得到:
[0058]v1
=[k1]g
[0059]
其中,v1为第一椭圆曲线点,g椭圆曲线参数的基点,k1为第一随机数。
[0060]
在本技术的一种可选实施例中,第一协同签名模块具体用于:
[0061]
基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,包括:
[0062]
基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,获取第二椭圆曲线点;
[0063]
基于第二椭圆曲线点和预主密钥的摘要,获取第一签名值;
[0064]
基于第一签名值、第二随机数以及第二子私钥,获取协同签名中间量。
[0065]
在本技术的一种可选实施例中,第一协同签名模块进一步用于:
[0066]
基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,通过以下公式,获取第二椭圆曲线点:
[0067]v2
=(1 d2)*(v1 [k2]g)
[0068]
其中,v2为第二椭圆曲线点,d2为第二子私钥,k2为第二随机数;
[0069]
基于第二椭圆曲线点和预主密钥的摘要,通过以下公式,获取第一签名值:
[0070]
r=(x1 e)mod n
[0071]
其中,r为第一签名值,x1为第二椭圆曲线点的横坐标,e为预主密钥的摘要,mod n为除以n后取余数的运算,n为椭圆曲线的基点的阶数;
[0072]
基于第一签名值、第二随机数以及第二子私钥,通过以下公式,获取协同签名中间量:
[0073]
w2=[k2 r*(1 d2)-1
]mod n
[0074]
其中,w2为协同签名中间量。
[0075]
在本技术的一种可选实施例中,第一协同签名模块进一步用于:
[0076]
服务端基于协同签名中间量、第一签名值以及第一子私钥,通过以下公式,获取第二签名值:
[0077]
s=[(1 d1)-1
*(k1 w2)-r]mod n
[0078]
其中,s为第二签名值,d1为第一子私钥。
[0079]
第三方面,本技术实施例提供了一种电子设备,包括存储器和处理器;
[0080]
存储器中存储有计算机程序;
[0081]
处理器,用于执行计算机程序以实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
[0082]
第四方面,本技术实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
[0083]
第五方面,本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行时实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
[0084]
本技术提供的技术方案带来的有益效果是:
[0085]
在建立移动终端和服务端的ssl连接的过程中,对移动终端进行身份认证采用了
基于sm2算法的协同签名技术,将sm2算法中的私钥拆分为两个部分分别存储在移动终端和服务端,即使移动终端的部分私钥泄露也不会泄露整个私钥信息,该方案无需增加硬件开销,安全性也更高,更适用于移动终端与服务端建立ssl连接。
附图说明
[0086]
为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
[0087]
图1为本技术实施例提供的一种ssl连接建立方法的流程示意图;
[0088]
图2为本技术实施例的一个示例中协同签名公钥计算过程的流程示意图;
[0089]
图3本技术实施例的一个示例中协同签名的签名值计算过程的流程示意图;
[0090]
图4本技术实施例的一个示例中ssl连接建立过程的交互示意图;
[0091]
图5为本技术实施例提供的一种ssl连接建立装置的结构框图;
[0092]
图6为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
[0093]
下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本技术的限制。
[0094]
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0095]
为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
[0096]
目前,移动终端实现基于sm2的身份认证和数字签名的方式中,采用tf卡的方式一般有两种情概况:
[0097]
第一种方式可以定制安全手机,对手机的操作系统进行固化,内置tf卡和中间件接口,业务app加入安全手机的应用列表;第二种定制移动终端管理套件,用户购买tf卡并安装相应的软件,移动终端安全管理套件完成与应用的适配对接。该方式对手机硬件要求较高,手机必须具备两个硬件卡槽,其中一个卡槽用于放置tf卡,另一个移动通信卡需与tf卡进行绑定关联,业务人员必须配备专用安全手机或者购买tf卡,需要额外的硬件成本开销。
[0098]
另一种方式在移动终端将sm2软算法打包成库供移动app调用相应的密码运算,无需额外的密码设备,密钥存储在本地移动终端中,用户可基于软算法实现sm2算法的身份认证和数字签名。但该方式密钥保存在移动终端本地,无专用硬件保护密钥安全,系统安全性差,是应用系统的安全风险点。
[0099]
针对上述问题,本技术将基于sm2算法的协同签名技术用于ssl连接建立过程中,具体来说,本技术实施例提供了一种可应用于移动终端的ssl连接建立方案,下面将对该方案进行详细描述。
[0100]
图1为本技术实施例提供的一种ssl连接建立方法的流程示意图,该方案中移动终端可以为移动终端(例如手机),请求建立ssl连接的移动终端和服务端共享sm2算法的椭圆曲线参数,服务端保存有协同签名的第一子私钥,移动终端保存有协同签名的第二子私钥和协同签名证书,该方法可以包括:
[0101]
步骤s101,移动终端向服务端发送移动终端问候clienthello。
[0102]
其中,clienthello可以包含ssl版本信息、会话id、移动终端随机数和移动终端支持的加密套件。
[0103]
具体地,在移动终端发起建立ssl连接请求之前,即在发出clienthello,移动终端存储了用于后续协同签名的第二私钥和协同签名证书,服务端存储了用于后续协同签名的第一私钥。其中,相对于现有的sm2算法的数字签名来说,本技术实施例中将私钥拆分成了两部分,即拆分成了第一私钥和第二私钥,分别存放于服务端和移动终端。
[0104]
步骤s102,在服务端响应于clienthello向移动终端发送服务端问候serverhello后,服务端生成第一随机数,并基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,将服务端签名证书、服务端签名和第一椭圆曲线点发送至移动终端。
[0105]
具体地,服务端在接收到移动终端发送的clienthello后,服务端会检查指定诸如ssl版本和加密套件的移动端问候的条件,如果服务端接受并支持所有条件,它将向移动终端发送serverhello,serverhello中包含服务端的服务端签名证书以及其他详细信息,否则,服务端将发送握手失败消息。
[0106]
具体来说,与现有建立ssl连接的不同之处在于,本技术实施例中,在完成了clienthello和serverhello后,服务器除了发送服务端签名证书、服务端签名,供移动终端验证服务端的身份外,还需要发送第一椭圆曲线点,该第一椭圆线点将用于后续协同签名的生成过程。
[0107]
步骤s103,在移动终端在基于服务端签名证书和服务端签名对服务端身份验证通过后,移动终端生成第二随机数,并获取预主密钥的摘要,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,将协同签名中间量、第一签名值、预主密钥和协同签名证书发送至服务端。
[0108]
具体地,移动终端对于服务端的身份验证与现有的ssl连接建立过程中类似,具体来说,移动终端利用服务端签名证书中的公钥验证服务端签名,若验证成功则说明身份验证成功,否则身份验证失败。另一方面,移动终端还需要进一步进行协同签名,具体来说,移动终端对预主密钥进行签名预处理,得到预祝密钥的摘要,然后基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,该第一签名值只是最终签名值的一部分,另一部分的签名值需要在服务端获取。
[0109]
步骤s104,服务端基于协同签名中间量、第一签名值以及第一子私钥,获取第二签名值,在服务端利用协同签名证书、第一签名值、第二签名值对移动终端身份验证通过后,移动终端和服务端分别基于所述预主密钥生成会话密钥,移动终端向服务端发送握手结束消息,服务端向移动终端发送握手结束消息,即建立了移动终端和服务端之间的ssl连接。
[0110]
具体地,服务端接收移动终端发送的协同签名中间量、第一签名值和协同签名证书,首先基于协同签名中间量、第一签名值以及第一子私钥,获取第二签名值,至此即得到了包含第一签名值和第二签名值的完整签名值。服务端再利用协同签名证书对完整签名值进行验证,即利用协同签名中的公钥对签名进行签名验证,若验证成功,则说明对移动终端的身份认证通过。
[0111]
在前述步骤中分别完成了移动终端对服务端的身份认证,以及服务端对移动终端的身份认证,则移动终端和服务端分别向对方发送握手结束消息,至此即建立了移动终端和服务端之间的ssl连接。
[0112]
需要说明的是,服务端在发送了serverhello之后,会向移动终端发送一个加密证书,该加密证书包含了用于密钥交换的公钥,服务端在后续步骤中会利用该加密证书的公钥对预主密钥进行加密。在服务端对移动终端的身份验证通过后,将采用对应的私钥对该加密的预主密钥进行解密,并基于预主密钥获取对应的会话密钥。在建立ssl连接后,移动终端和服务端将基于该会话密钥进行数据传输。
[0113]
本技术实施例提供的方案,在建立移动终端和服务端的ssl连接的过程中,对移动终端进行身份认证采用了基于sm2算法的协同签名技术,将sm2算法中的私钥拆分为两个部分分别存储在移动终端和服务端,即使移动终端的部分私钥泄露也不会泄露整个私钥信息,该方案无需增加硬件开销,安全性也更高,更适用于移动终端与服务端建立ssl连接。
[0114]
在本技术的一种可选实施例中,在移动终端向服务端发送移动终端问候clienthello之前,该方法还可以包括:
[0115]
服务端生成第一子私钥,移动终端生成第二子私钥;
[0116]
服务端基于第一子私钥和椭圆曲线基点,获取第一椭圆曲线点,并将第一椭圆曲线点发送至移动终端;
[0117]
移动终端基于第二子私钥和第一椭圆曲线点,获取协同签名公钥,并基于协同签名公钥向数字证书系统申请得到协同签名证书。
[0118]
其中,参与协同签名的移动终端和服务端共享sm2算法的椭圆曲线参数e(fq)、g和n,椭圆曲线e为定义在有限域fq上的椭圆曲线,g为椭圆曲线e上的n阶的基点。
[0119]
具体地,如图2所示,服务端基于第一子私钥和椭圆曲线基点,通过以下公式,获取第一椭圆曲线点:
[0120]
p1=[d1 1]g
[0121]
其中,p1为第一椭圆曲线点,d1为第一子私钥,且为[1,n-2]之间的大整数,g为椭圆曲线基点;
[0122]
移动终端基于第二子私钥和第一椭圆曲线点,通过以下公式,获取协同签名公钥:
[0123]
p=[d2 1]p1–g[0124]
其中,p为协同签名公钥,d2为第二子私钥,且为[1,n-2]之间的大整数。
[0125]
需要说明的是,将私钥拆分为d1和d2,无论是服务端还是移动终端都不能直接获取完整的密钥,通过这种方式可以保证私钥的安全性。
[0126]
在本技术的一种可选实施例中,基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,通过以下公式得到:
[0127]v1
=[k1]g
[0128]
其中,v1为第一椭圆曲线点,g椭圆曲线参数的基点,k1为第一随机数,且k1∈[1,n-1]。
[0129]
具体地,在进行协同签名过程中,服务端在发送clienthello后,则根据第一随机数生成对应的第一椭圆曲线点v1,其将用于后续的签名值计算。
[0130]
在本技术的一种可选实施例中,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,包括:
[0131]
基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,获取第二椭圆曲线点;
[0132]
基于第二椭圆曲线点和预主密钥的摘要,获取第一签名值;
[0133]
基于第一签名值、第二随机数以及第二子私钥,获取协同签名中间量。
[0134]
具体地,如图3所示,基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,通过以下公式,获取第二椭圆曲线点:
[0135]v2
=(1 d2)*(v1 [k2]g)
[0136]
其中,v2为第二椭圆曲线点,d2为第二子私钥,k2为第二随机数,且k2∈[1,n-1]。
[0137]
基于第二椭圆曲线点和预主密钥的摘要,通过以下公式,获取第一签名值:
[0138]
r=(x1 e)mod n
[0139]
其中,r为第一签名值,x1为第二椭圆曲线点的横坐标,e为预主密钥的摘要,mod n为除以n后取余数的运算,n为椭圆曲线的基点的阶数。
[0140]
需要说明的是,如果计算得到r等于0,则服务端重新产生第一随机数后再进行上述计算,直至得到的r不等于0后,进行后续计算。
[0141]
基于第一签名值、第二随机数以及第二子私钥,通过以下公式,获取协同签名中间量:
[0142]
w2=[k2 r*(1 d2)-1
]mod n
[0143]
其中,w2为协同签名中间量。
[0144]
服务端基于协同签名中间量、第一签名值以及第一子私钥,通过以下公式,获取第二签名值:
[0145]
s=[(1 d1)-1
*(k1 w2)-r]mod n
[0146]
其中,s为第二签名值,d1为第一子私钥。
[0147]
需要说明的是,如果计算得到s等于0,则服务端重新产生第一随机数后再进行上述计算,直至得到的s不等于0即得到完整签名值。
[0148]
如图4所示为本技术提供的ssl连接建立过程的交互图,该过程可以包括以下步骤:
[0149]
1)clienthello:移动终端向服务端发送clienthello,该消息里包含了ssl版本信息、会话id、移动终端随机数和移动终端支持的加密套件;
[0150]
2)serverhello:服务器发送serverhello,服务器会检查指定诸如版本和加密套件的移动端问候的条件,如果服务器接受并支持所有条件,它将发送其证书以及其他详细信息,否则,服务器将发送握手失败消息;
[0151]
3)server certificate\key change\request:服务器端发送服务器签名证书、加密证书、密钥交换参数,服务器签名,v1,请求移动终端证书类型列表发送到移动终端;
[0152]
4)client certificate\key change\certificate verify:移动终端发送移动终端签名证书、加密证书、密钥交换参数以及预主密钥(由服务端发送的教秘证书中的公钥进行加密),r,w2,给服务器端;
[0153]
5)服务端完成签名运算,得到签名结果s和r,并使从移动终端证书中获取公钥对签名值进行验签,移动终端和服务端分别基于所述预主密钥生成会话密钥;
[0154]
6)移动终端发送握手结束消息;
[0155]
7)服务端发送握手结束消息;
[0156]
8)双方使用会话密钥加密待传输消息。
[0157]
由上述示例可以看出,该方案有以下有益效果:节约成本,节省手机端额外配备密码硬件的成本。安全性高,结合协同签名和ssl技术,保证移动终端与服务器端的身份认证安全和传输安全。可实施性强,充分利用了现有的ssl技术和协同签名技术,对系统改造较小,实施周期短。简单,比现有的从移动终端发起协同签名的技术方案更加节省,交互过程中无需配置单独的协同签名服务器。
[0158]
图5本技术实施例提供了一种ssl连接建立装置的结构框图,如图5所示,请求建立ssl连接的移动终端和服务端共享sm2算法的椭圆曲线参数,服务端保存有协同签名的第一子私钥,移动终端保存有协同签名的第二子私钥和协同签名证书,该装置500可以包括:移动终端问候发送模块501、第一椭圆曲线点发送模块502、第一协同签名模块503和第二协同签名模块504,其中:
[0159]
移动终端问候发送模块501用于移动终端向服务端发送移动终端问候clienthello;
[0160]
第一椭圆曲线点发送模块502用于在服务端响应于clienthello向移动终端发送服务端问候serverhello后,服务端生成第一随机数,并基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,将服务端签名证书、服务端签名和第一椭圆曲线点发送至移动终端;
[0161]
第一协同签名模块503用于在移动终端在基于服务端签名证书和服务端签名对服务端身份验证通过后,移动终端生成第二随机数,并获取预主密钥的摘要,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,将协同签名中间量、第一签名值、预主密钥和协同签名证书发送至服务端;
[0162]
第二协同签名模块504用于服务端基于协同签名中间量、第一签名值以及第一子私钥,获取第二签名值,在服务端利用协同签名证书、第一签名值、第二签名值对移动终端身份验证通过后,移动终端和服务端分别基于所述预主密钥生成会话密钥,移动终端向服务端发送握手结束消息,服务端向移动终端发送握手结束消息,即建立了移动终端和服务端之间的ssl连接。
[0163]
本技术提供的方案,在建立移动终端和服务端的ssl连接的过程中,对移动终端进行身份认证采用了基于sm2算法的协同签名技术,将sm2算法中的私钥拆分为两个部分分别存储在移动终端和服务端,即使移动终端的部分私钥泄露也不会泄露整个私钥信息,该方案无需增加硬件开销,安全性也更高,更适用于移动终端与服务端建立ssl连接。
[0164]
在本技术的一种可选实施例中,该装置还包括协同签名证书获取模块,用于:
[0165]
在移动终端向服务端发送移动终端问候clienthello之前,服务端生成第一子私
钥,移动终端生成第二子私钥;
[0166]
服务端基于第一子私钥和椭圆曲线基点,获取第一椭圆曲线点,并将第一椭圆曲线点发送至移动终端;
[0167]
移动终端基于第二子私钥和第一椭圆曲线点,获取协同签名公钥,并基于协同签名公钥向数字证书系统申请得到协同签名证书。
[0168]
在本技术的一种可选实施例中,协同签名证书获取模块具体用于:
[0169]
服务端基于第一子私钥和椭圆曲线基点,通过以下公式,获取第一椭圆曲线点:
[0170]
p1=[d1 1]g
[0171]
其中,p1为第一椭圆曲线点,d1为第一子私钥,g为椭圆曲线基点;
[0172]
移动终端基于第二子私钥和第一椭圆曲线点,通过以下公式,获取协同签名公钥:
[0173]
p=[d2 1]p1–g[0174]
其中,p为协同签名公钥,d2为第二子私钥。
[0175]
在本技术的一种可选实施例中,第一椭圆曲线点发送模块具体用于:
[0176]
基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,通过以下公式得到:
[0177]v1
=[k1]g
[0178]
其中,v1为第一椭圆曲线点,g椭圆曲线参数的基点,k1为第一随机数。
[0179]
在本技术的一种可选实施例中,第一协同签名模块具体用于:
[0180]
基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,包括:
[0181]
基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,获取第二椭圆曲线点;
[0182]
基于第二椭圆曲线点和预主密钥的摘要,获取第一签名值;
[0183]
基于第一签名值、第二随机数以及第二子私钥,获取协同签名中间量。
[0184]
在本技术的一种可选实施例中,第一协同签名模块进一步用于:
[0185]
基于第一椭圆曲线点、第二随机数、第二子私钥以及椭圆曲线的基点,通过以下公式,获取第二椭圆曲线点:
[0186]v2
=(1 d2)*(v1 [k2]g)
[0187]
其中,v2为第二椭圆曲线点,d2为第二子私钥,k2为第二随机数;
[0188]
基于第二椭圆曲线点和预主密钥的摘要,通过以下公式,获取第一签名值:
[0189]
r=(x1 e)mod n
[0190]
其中,r为第一签名值,x1为第二椭圆曲线点的横坐标,e为预主密钥的摘要,mod n为除以n后取余数的运算,n为椭圆曲线的基点的阶数;
[0191]
基于第一签名值、第二随机数以及第二子私钥,通过以下公式,获取协同签名中间量:
[0192]
w2=[k2 r*(1 d2)-1
]mod n
[0193]
其中,w2为协同签名中间量。
[0194]
在本技术的一种可选实施例中,第一协同签名模块进一步用于:
[0195]
服务端基于协同签名中间量、第一签名值以及第一子私钥,通过以下公式,获取第
二签名值:
[0196]
s=[(1 d1)-1
*(k1 w2)-r]mod n
[0197]
其中,s为第二签名值,d1为第一子私钥。
[0198]
下面参考图6,其示出了适于用来实现本技术实施例的电子设备(例如执行图1所示方法的终端设备或服务器)600的结构示意图。本技术实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)、可穿戴设备等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0199]
电子设备包括:存储器以及处理器,存储器用于存储执行上述各个方法实施例所述方法的程序;处理器被配置为执行存储器中存储的程序。其中,这里的处理器可以称为下文所述的处理装置601,存储器可以包括下文中的只读存储器(rom)602、随机访问存储器(ram)603以及存储装置608中的至少一项,具体如下所示:
[0200]
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储装置608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、rom 602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
[0201]
通常,以下装置可以连接至i/o接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
[0202]
特别地,根据本技术的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从rom 602被安装。在该计算机程序被处理装置601执行时,执行本技术实施例的方法中限定的上述功能。
[0203]
需要说明的是,本技术上述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,
其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
[0204]
在一些实施方式中,移动终端、服务器可以利用诸如http(hypertext transfer protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”),广域网(“wan”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
[0205]
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
[0206]
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:
[0207]
移动终端向服务端发送移动终端问候clienthello;在服务端响应于clienthello向移动终端发送服务端问候serverhello后,服务端生成第一随机数,并基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,将服务端签名证书、服务端签名和第一椭圆曲线点发送至移动终端;在移动终端在基于服务端签名证书和服务端签名对服务端身份验证通过后,移动终端生成第二随机数,并获取预主密钥的摘要,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,将协同签名中间量、第一签名值、预主密钥和协同签名证书发送至服务端;服务端基于协同签名中间量、第一签名值以及第一子私钥,获取第二签名值,在服务端利用协同签名证书、第一签名值、第二签名值对移动终端身份验证通过后,移动终端和服务端分别基于所述预主密钥生成会话密钥,移动终端向服务端发送握手结束消息,服务端向移动终端发送握手结束消息,即建立了移动终端和服务端之间的ssl连接。
[0208]
可以以一种或多种程序设计语言或其组合来编写用于执行本技术的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0209]
附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上
可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0210]
描述于本技术实施例中所涉及到的模块或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块或单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一程序切换模块还可以被描述为“切换第一程序的模块”。
[0211]
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
[0212]
在本技术的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0213]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的计算机可读介质被电子设备执行时实现的具体方法,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0214]
本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行时实现如下情况:
[0215]
移动终端向服务端发送移动终端问候clienthello;在服务端响应于clienthello向移动终端发送服务端问候serverhello后,服务端生成第一随机数,并基于椭圆曲线参数的基点和第一随机数获取第一椭圆曲线点,将服务端签名证书、服务端签名和第一椭圆曲线点发送至移动终端;在移动终端在基于服务端签名证书和服务端签名对服务端身份验证通过后,移动终端生成第二随机数,并获取预主密钥的摘要,基于第一椭圆曲线点、第二随机数、预主密钥的摘要、以及第二子私钥,获取协同签名中间量和第一签名值,将协同签名中间量、第一签名值、预主密钥和协同签名证书发送至服务端;服务端基于协同签名中间量、第一签名值以及第一子私钥,获取第二签名值,在服务端利用协同签名证书、第一签名值、第二签名值对移动终端身份验证通过后,移动终端和服务端分别基于所述预主密钥生成会话密钥,移动终端向服务端发送握手结束消息,服务端向移动终端发送握手结束消息,即建立了移动终端和服务端之间的ssl连接。
[0216]
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤
的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0217]
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献