数据传输方法和装置的制造方法_2

文档序号:9791046阅读:来源:国知局
042]步骤S203:第一终端使用第二终端的公钥对第一加密数据进行解密得到第一交换密钥,并根据第一交换密钥获取第一终端与第二终端的共享密钥。
[0043]其中,该共享密钥可以采用DH算法中的共享密钥的算法获取。
[0044]步骤S205:第一终端使用共享密钥对待传输的数据进行加密,得到加密传输数据,并将加密传输数据发送给第二终端。
[0045]采用上述实施例,在使用DH算法交换第二终端和第一终端的交换密钥(该交换密钥可以为两个终端的DH算法的公开值)时,第二终端用RSA算法加密交换密钥,即自己的私钥加密自己的交换密钥,第一终端用第二终端的公钥解密该交换密钥,以得到第二终端的交换密钥,并获取第二终端与第一终端的共享密钥。在上述过程中,攻击者需首先破解加密后的交换密钥,然后才能进行中间人攻击,增加了破解难度,通过上述方案提供了数据传输过程的安全性,解决了现有技术中现有的加密算法在数据传输时安全性差的技术问题。
[0046]上述DH算法中第二终端A发送给第一终端B的KjPn即为本申请实施例中第二终端的第一交换密钥。第二终端加密第二终端的第一交换密钥使用的是公开密钥密码RSA算法。
[0047]在上述实施例中,第二终端用自己的私钥对DH算法产生的第一交换密钥(即交换文,或公开值)进行加密,生成不可读取的密文Dsk(即上述实施例中的第一加密数据),然后将第一加密数据Dsk传送给第一终端,第一终端在接收到第一加密数据之后,使用第二终端的公钥进行解码Decrypt运算,得到第一交换密钥。可选地,第一终端在接收到该第一加密数据之后,可以使用公钥对该第一加密数据进行签名校验,在校验有效的情况下,解密该第一加密数据。
[0048]通过上述实施例,第二终端使用RSA算法加密传输DH算法产生的公开值(即上述实施例中的第一交换密钥),攻击者在拦截该数据传输请求之后,需要先破解RSA算法,才能进行中间人攻击,增加了破解难度。
[0049]根据本发明的上述实施例,在将加密传输数据发送给第二终端之前,方法还包括:第一终端向第二终端发送使用第二终端的公钥对第一终端的第二密钥公开值进行加密得到的第二加密数据,其中,第二密钥公开值用于第二终端获取共享密钥。
[0050]在将加密传输数据发送给第二终端之后,方法还包括:第二终端使用共享密钥对加密传输数据进行解密,得到待传输的数据,其中,共享密钥是第二终端使用第二终端的私钥对第二加密数据进行解密得到第二密钥公开值,并根据第二密钥公开值获取到的。
[0051]具体地,在第一终端使用第二终端的公钥对第一加密数据进行解密得到第一交换密钥之后,第一终端向第二终端发送使用第一终端的私钥对第一终端的第二交换密钥进行加密得到的第二加密数据;第二终端使用第一终端的公钥对第二加密数据进行解密,得到第二交换密钥,并根据第二交换密钥获取共享密钥。
[0052]在第一终端将加密后的数据发送给第二终端之后,第二终端使用共享密钥对加密数据进行解密,得到待传输的数据。
[0053]需要说明的是,上述DH算法的第一终端B发送给第二终端A的Kb和η即为本申请实施例中第一终端的第二交换密钥。
[0054]在上述实施例中,第一终端向第二终端发送第一终端的第二交换密钥时,同样使用第二终端的公钥对第二交换密钥进行加密得到第二加密数据,将该第二加密数据发送给第二终端。第二终端在接收到该第二加密数据之后,使用第二终端的私钥对第二加密数据进行解密,得到第二交换密钥,并根据第二交换密钥获取共享密钥(该共享密钥的获取采用DH算法中的共享密钥的算法)。
[0055]通过本发明的上述实施例,第二终端和第一终端在交换各自的交换密钥时,均可以使用RSA算法加密上述两个终端的交换密钥,攻击者在拦截该数据传输请求之后,需要先破解RSA算法,才能进行中间人攻击,增加了破解难度。
[0056]进一步地,在第二终端和第一终端均获取共享密钥之后,可以使用该共享密钥加密传输数据。
[0057]下面以第二终端为客户端、第一终端为服务器为例,结合图3详述本发明上述实施例。如图3所示,该实施例可以包括如下步骤:
[0058]步骤S301:服务器接收客户端发送的数据传输请求,其中,数据传输请求中至少携带有使用RSA算法对客户端的DH算法的公开值进行加密得到的第一加密数据。
[0059]步骤S303:服务器对第一加密数据进行解密得到第一交换密钥,并根据第一交换密钥获取服务器与客户端的共享密钥。
[0060]其中,该共享密钥可以采用DH算法中的共享密钥的算法获取。
[0061]步骤S305:服务器使用RSA算法对服务器的DH算法的公开值进行加密,得到第二加密数据,并将该第二加密数据发送至客户端。
[0062]步骤S307:客户端对第二加密数据进行解密得到第二交换密钥,并根据第二交换密钥获取服务器与客户端的共享密钥。
[0063]步骤S309:客户端使用该共享密钥对待加密的数据加密,将加密后的数据发送至服务器。
[0064]步骤S311:服务器使用该共享密钥对加密后的数据解密,获取解密后的数据。
[0065]步骤S313:服务器使用该共享密钥对解密后的数据的响应数据加密,将加密后的响应数据发送客户端。
[0066]客户端在接收到该加密后的响应数据之后,可以使用共享密钥解密该加密后的响应数据。
[0067]需要说明的是,在该实施例中,服务器和客户端之间何时开始通信以及第一条通信数据何方发起,两个终端可以约定。
[0068]根据本发明的上述实施例,数据传输请求还携带有第二终端的验证信息,其中,第一终端使用第二终端的公钥对第一加密数据进行解密得到第一交换密钥可以包括:第一终端通过第二终端的验证信息校验数据传输请求的合法性;若校验出数据传输请求为合法请求,则第一终端使用第二终端的公钥对第一加密数据进行解密得到第一交换密钥。
[0069]具体地,在服务器解密第一交换密钥之前,需对该数据传输请求的来源合法性进行验证。可选地,该数据传输请求中除了携带有第一加密数据,还携带有第二终端的验证信息,第一终端通过该验证信息验证该数据传输请求的合法性,若该数据传输请求为合法请求,则第一终端对第一加密数据进行解密。
[0070]通过上述实施例,可以有效验证第二终端的合法性,防止被破解的第二终端访问第一终端。
[0071]具体地,第一终端通过第二终端的验证信息校验数据传输请求的合法性可以包括:从验证信息中,获取使用第二终端的私钥对安装在第二终端上应用程序的签名进行加密得到的加密签名,其中,应用程序用于生成数据传输请求,应用程序的签名用于记录应用程序的作者信息;使用第二终端的公钥对加密签名进行解密,得到应用程序的签名;基于解密得到的应用程序的签名判断数据传输请求是否合法。
[0072]进一步地,基于解密得到的应用程序的签名判断数据传输请求是否合法可以包括:比较解密得到的应用程序的签名与第一终端上预存的应用程序的签名是否一致;若比较出解密得到的应用程序的签名与第一终端上预存的应用程序的签名一致,则确定数据传输请求合法;若比较出解密得到的应用程序的签名与第一终端上预存的应用程序的签名不一致,则确定数据传输请求不合法。
[0073]在上述实施例中,第二终端可以使用RSA算法加密传输应用程序的签名,并将该加密后的加密签名携带在数据传输请求中发送至第一终端。在服务器接收到数据出传输请求之后,从数据传输请求中提取加密签名,对其进行解密,得到解密后的应用程序的签名。若该解密后的应用程序的签名与第一终端存储的该应用程序的签名一致,则判断出该输出传输请求的来源合法。
[0074]上述实施例中的应用程序可以为android应用程序,则该应用程序的签名可以为android签名文件,由于android签名的唯一"性,若攻击者成功破解第二终端,缺乏android签名文件,仍然会被第一终端识别出来是非法请求。在该实施例中,通过应用程序的签名可以进一步保证非法终端无法访问第一终端。
[0075]需要进一步说明的是,获取使用第二终端的私钥对安装在第二终端上应用程序的签名进行加密得到的加密签名包括:获取使用第二终端的私钥对应用程序的签名的信息摘要进行加密得到的加密签名。
[0076]可选地,在上述实施例中,在使用RSA算法对应用程序的签名加密之前,可以使用MD5算法计算应用程序的签名的MD5值,也即,使用RSA算法对应用程序的签名的MD5值进行加密,得到加密签名,以使该应用程序的签名严格保密。
[0077]上述实施例中的应用程序可以为即时通讯程序(如QQ、微信)、智能打车程序、支付程序等,本发明对此不做限制。
[0078]需要说明的是,可以使用RSA算法对应用程序的签名和DH算法的公开值作为一个整体进行加密;也可以使用RSA算法分别对应用程序的签名和DH算法的公开值进行加密,本申请对此不做限制。
[0079]下面以第二终端为客户端、应用程序为安桌的微信程序、第一终端为微信程序的服务器为例,详述上述实施例。
[0080]客户端的微信程序在需要访问服务器的时候,微信程序获取开发者(即程序的作者)在研发微信程序时为微信程序设置的微信安卓签名,使用MD5算法计算该微信安卓签名的MD5值,使用RSA算法对微信安卓签名的MD5值进行加密得到加密签名;在上述加密该微信安卓签名的同时,还可以计算DH算法的公开值,并使用RSA算法对DH算法的公开值进行加密,得到第一加密数据。
[0081]在获取加密签名和第一加密数据之后,将该两个数据携带在数据传输请求中,将数据传输请求发送至微信服务器。
[0082]微信服务器在接收到数据传输请求之后,并且在对该数据传输请求的签名验证通过之后,对加密签名进行解密,得到解密后的微信安卓签名,若该解密得到的微信安卓签名与微信服务器上记载的微信应程序的签名一致,则确认该数据传输请求为合法请求,则可以对该第一加密数据进行解码,以获取服务器与客户端的共享密钥。
[0083]在上述实施例中,由于android签名的唯一性,若攻击者成功破解客户端,但是由于攻击者缺乏android签名文件,仍然会被服务器
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1