数据传输方法和装置与流程

文档序号:15061988发布日期:2018-07-31 22:01阅读:201来源:国知局

本发明涉及数据传输领域,具体而言,涉及一种数据传输方法和装置。



背景技术:

目前大多数网站和app的接口都是采用http协议来通讯的,但是http协议很容易就通过抓包工具监听到内容,甚至可以篡改内容,即使防止了内容的篡改,网络请求包里的用户敏感信息也很容易泄漏,在这种情况下,就需要一种安全系数较高的身份验证、内容加密的方法来保证http请求过程的安全性,保证服务端收到的请求为用户真实发起的,并且在传输过程中没有被篡改。

现有技术中,客户端与服务器之间进行数据传输的数据传输方法主要有以下两种:

第一种数据传输方法:

http协议不加数字签名、不加密明文传输。

以在线银行账号转账8000元为例,网页构造这样的报文发送给网站后端:

第一种数据传输方法存在的问题如下:

1、请求参数没有加密

比如此用户在公共场所操作转账,在路由器侧有一段恶意程序来截取所有请求,那么可以通过抓包得到上述报文,从而得到用户的账号密码。

2、请求参数没有加数字签名验证身份,保证参数不被修改

延续上面第1点,黑客可以修改报文中的amount字段为9000,并将dst_account目标账号修改为犯罪分子的银行账号,继续发起请求,那么毫无疑问,用户的钱被盗了。

第二种数据传输方法:

http协议加数字签名、加密明文但采用固定密钥的方式。

采用https加密传输,报文同第一种数据传输方法。

第二种数据传输方法存在的问题如下:

一旦密钥泄漏,报文被截取完全可以破解,敏感信息泄漏,报文可以被篡改。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种数据传输方法和装置,以至少解决现有技术中数据传输安全性低的技术问题。

根据本发明实施例的一个方面,提供了一种数据传输方法,包括:服务器向客户端发送第一公钥;所述服务器利用第一私钥对第一报文进行解密,得到目标密钥,其中,所述第一公钥与所述第一私钥为一对密钥,所述第一报文由所述客户端利用所述第一公钥对所述目标密钥进行加密得到,所述目标密钥根据所述服务器发送的随机字符串生成;所述服务器接收所述客户端发送的第二报文,其中,所述第二报文包括所述客户端利用所述目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括所述第一数据和所述第二数据,所述第一数据为数据传输过程中需要加密的数据,所述第二数据为所述数据传输过程中不需要加密的数据;所述服务器利用所述目标密钥对所述第二报文进行解密,得到所述待传输数据。

根据本发明实施例的又一方面,还提供了一种数据传输方法,包括:客户端接收服务器发送的第一公钥;所述客户端向所述服务器发送第一报文,以使所述服务器利用第一私钥对所述第一报文进行解密,得到目标密钥,其中,所述第一公钥与所述第一私钥为一对密钥,所述第一报文由所述客户端利用所述第一公钥对所述目标密钥进行加密得到,所述目标密钥根据所述服务器发送的随机字符串生成;所述客户端向所述服务器发送第二报文,以使所述服务器利用所述目标密钥对所述第二报文进行解密,得到待传输数据,其中,所述第二报文包括所述客户端利用所述目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,所述待传输数据包括所述第一数据和所述第二数据,所述第一数据为数据传输过程中需要加密的数据,所述第二数据为所述数据传输过程中不需要加密的数据。

根据本发明实施例的又一方面,还提供了一种数据传输装置,包括:服务器第一发送单元,用于向客户端发送第一公钥;服务器第一解密单元,用于利用第一私钥对第一报文进行解密,得到目标密钥,其中,所述第一公钥与所述第一私钥为一对密钥,所述第一报文由所述客户端利用所述第一公钥对所述目标密钥进行加密得到,所述目标密钥根据所述服务器发送的随机字符串生成;服务器第一接收单元,用于接收所述客户端发送的第二报文,其中,所述第二报文包括所述客户端利用所述目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括所述第一数据和所述第二数据,所述第一数据为数据传输过程中需要加密的数据,所述第二数据为所述数据传输过程中不需要加密的数据;服务器第二解密单元,用于利用所述目标密钥对所述第二报文进行解密,得到所述待传输数据。

根据本发明实施例的又一方面,还提供了一种数据传输装置,包括:客户端第一接收单元,用于接收服务器发送的第一公钥;客户端第一发送单元,用于向所述服务器发送第一报文,以使所述服务器利用第一私钥对所述第一报文进行解密,得到目标密钥,其中,所述第一公钥与所述第一私钥为一对密钥,所述第一报文由所述客户端利用所述第一公钥对所述目标密钥进行加密得到,所述目标密钥根据所述服务器发送的随机字符串生成;客户端第二发送单元,用于向所述服务器发送第二报文,以使所述服务器利用所述目标密钥对所述第二报文进行解密,得到待传输数据,其中,所述第二报文包括所述客户端利用所述目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,所述待传输数据包括所述第一数据和所述第二数据,所述第一数据为数据传输过程中需要加密的数据,所述第二数据为所述数据传输过程中不需要加密的数据。

在本发明实施例中,第一私钥是解密密钥,只有服务器才知道。第一公钥是加密密钥,是公开的。客户端利用第一公钥对目标密钥进行加密得到第一报文,之后客户端向服务器发送第一报文,即使第一报文半路被拦截,由于拦截者不知道解密密钥(第一私钥),因此,无法破解第一报文。只有服务器知道解密密钥,因此,只有服务器才能对第一报文进行解密,得到目标密钥,因此,这就保证了后续对称加密密钥(目标密钥)的安全性。目标密钥是客户端根据服务器发送的随机字符串生成的,每一次数据传输服务器都会生成不同的随机字符串,每次的目标密钥也是不同的,即使某一次的目标密钥在传输过程中被拦截,下一次的目标密钥也是不同的,这就保证了下次数据传输的安全性,达到了提高数据传输的安全性的技术效果,进而解决了现有技术中数据传输安全性低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的硬件环境的示意图;

图2是根据本发明实施例的服务器执行数据传输方法的流程图;

图3是根据本发明实施例的客户端执行数据传输方法的流程图;

图4是根据本发明实施例的客户端和服务器执行数据传输方法的交互图;

图5是根据本发明实施例的一种数据传输装置的示意图;

图6是根据本发明实施例的另一种数据传输装置的示意图;

图7是根据本发明实施例的服务器的示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

技术术语解释:

数字签名:是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。

rsa加密:一种非对称密钥加密中最流行的算法之一。

aes加密:一种对称密钥加密中最流行的算法之一。

对称密钥加密:专用密钥加密,即,发送和接收数据的双方必使用相同的密钥对明文进行加密和解密运算。

根据本发明实施例,提供了一种数据传输方法的实施例。

可选地,在本实施例中,上述数据传输方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于pc、手机、平板电脑等。本发明实施例的方法可以由终端104和服务器102共同执行。终端104执行本发明实施例的方法可以是由安装在其上的客户端来执行。

服务器102生成预设位数的第一私钥,根据第一私钥生成与第一私钥对应的第一公钥,第一公钥与第一私钥为一对密钥。服务器102向终端104发送第一公钥。终端104向服务器102发起随机值请求,服务器102生成第一字符串,向终端104发送第一字符串。终端104接收到第一字符串之后,随机生成第二字符串,将第一字符串与第二字符串进行拼接,得到目标密钥,目标密钥为后续对称加密的密钥。终端104使用第一公钥对目标密钥进行加密,之后,终端104向服务器102发送第一报文,服务器利用第一私钥对第一报文进行解密,得到目标密钥。终端104向服务器102发送第二报文,其中,第二报文包括客户端利用目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括第一数据和第二数据,第一数据为数据传输过程中需要加密的数据,第二数据为数据传输过程中不需要加密的数据。服务器102利用目标密钥对第二报文进行解密,得到待传输数据。

根据本发明实施例,提供一种数据传输方法,该数据传输方法由客户端(终端)与服务器共同执行。

图2是根据本发明实施例的服务器执行数据传输方法的流程图,如图2所示,包括以下步骤:

步骤s202,服务器向客户端发送第一公钥。

步骤s204,服务器利用第一私钥对第一报文进行解密,得到目标密钥,其中,第一公钥与第一私钥为一对密钥,第一报文由客户端利用第一公钥对目标密钥进行加密得到,目标密钥根据服务器发送的随机字符串生成。

步骤s206,服务器接收客户端发送的第二报文,其中,第二报文包括客户端利用目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括第一数据和第二数据,第一数据为数据传输过程中需要加密的数据,第二数据为数据传输过程中不需要加密的数据。

步骤s208,服务器利用目标密钥对第二报文进行解密,得到待传输数据。

在本发明实施例中,第一私钥是解密密钥,只有服务器才知道。第一公钥是加密密钥,是公开的。客户端利用第一公钥对目标密钥进行加密得到第一报文,之后客户端向服务器发送第一报文,即使第一报文半路被拦截,由于拦截者不知道解密密钥(第一私钥),因此,无法破解第一报文。只有服务器知道解密密钥,因此,只有服务器才能对第一报文进行解密,得到目标密钥,因此,这就保证了后续对称加密密钥(目标密钥)的安全性。目标密钥是客户端根据服务器发送的随机字符串生成的,每一次数据传输服务器都会生成不同的随机字符串,每次的目标密钥也是不同的,即使某一次的目标密钥在传输过程中被拦截,下一次的目标密钥也是不同的,这就保证了下次数据传输的安全性,解决了现有技术中数据传输安全性低的技术问题,达到了提高数据传输的安全性的技术效果。

在服务器向客户端发送第一公钥之前,服务器生成预设位数的第一私钥;服务器根据第一私钥生成第一公钥。

服务器可以根据openssl工具生成rsa密钥(第一私钥),根据rsa密钥生成对应的公钥(第一公钥)。

rsa加密算法是一种公开密钥密码体制,即,使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。

加密密钥,即公开密钥,是公开信息。解密密钥,即,秘密密钥,是需要保密的。

一般来说,rsa密钥至少500位长。

在服务器利用第一私钥对第一报文进行解密之前,服务器接收客户端发送的随机值请求,随机值请求用于请求生成随机字符串;服务器根据随机值请求生成第一字符串;服务器向客户端发送第一字符串,以使客户端根据第一字符串生成目标密钥。

每一次数据传输服务器都会生成不同的随机字符串,每次的目标密钥也是不同的,即使某一次的目标密钥在传输过程中被拦截,下一次的目标密钥也是不同的,这就保证了下次数据传输的安全性,

第一字符串可以是预定位数的,例如为8位。

客户端根据第一字符串生成目标密钥的方法可以有多种,以下举出几种:

客户端根据第一字符串生成目标密钥的第一种方法:

客户端生成第二字符串,将第一字符串与第二字符串进行拼接,得到一个新的字符串,这个新的字符串即为目标密钥。

第一字符串与第二字符串包含的字符的数量可以相同,也可以不相同。

例如,服务器发送给客户端的第一字符串为“kgha”,客户端生成的第二字符串为“d7u567wk”,按照第一字符串、第二字符串的先后顺序进行拼接,得到一个新的字符串“kghad7u567wk”;也可以按照第二字符串、第一字符串的先后顺序进行拼接,得到一个新的字符串“d7u567wkkgha”,将字符串“kghad7u567wk”或者字符串“d7u567wkkgha”作为目标密钥。

客户端根据第一字符串生成目标密钥的第二种方法:

客户端根据对预设规则对第一字符串进行变换,得到新的字符串,将新的字符串作为目标密钥。

例如,服务器发送给客户端的第一字符串为“kgha”,客户端在第一字符的每两个相邻的字符中随机插入一个数字,假设得到的新的字符串是“k5g3h2a”,将字符串“k5g3h2a”作为目标密钥。

再例如,服务器发送给客户端的第一字符串为“kgha”,客户端将第一字符串的所有字符倒序排列,得到“ahgk”,将字符串“ahgk”作为目标密钥。

第二报文在传输过程中,可能会被拦截并更改。如果客户端向服务器发送的第二报文在传输过程中被拦截并更改,那么服务器接收的第二报文与客户端发出的第二报文的内容不同。此时,如果服务器解密接收的第二报文,得到的数据就是被中途更改过的数据,而不是客户端发出的数据,这就对数据传输的安全性造成了影响。为了解决这个问题,本发明实施例提供的数据传输方法中,客户端对密文数据和第二数据使用安全哈希算法加密,得到第一数字签名,将第一数字签名作为第二报文的一部分,发送给服务器。

服务器接收到第二报文中,根据以下方法来判断自身接收到的第二报文与客户端发出的第二报文是否完全相同:

服务器对接收到的第二报文中除数字签名以外的数据使用安全哈希算法加密,得到第二数字签名;服务器比较接收到的第二报文中的第一数字签名与自身计算出的第二数字签名是否相同;如果比较出第一数字签名与第二数字签名相同,则确定自身接收到的第二报文与客户端发出的第二报文完全相同,此种情况下,服务器利用目标密钥对接收到的第二报文进行解密,得到待传输数据;如果比较出第一数字签名与第二数字签名不相同,则确定自身接收到的第二报文与客户端发出的第二报文不相同,即,该报文在传输过程中被更改了,此时,发出错误提示。

图3是根据本发明实施例的客户端执行数据传输方法的流程图,如图3所示,包括以下步骤:

步骤s302,客户端接收服务器发送的第一公钥。

步骤s304,客户端向服务器发送第一报文,以使服务器利用第一私钥对第一报文进行解密,得到目标密钥,其中,第一公钥与第一私钥为一对密钥,第一报文由客户端利用第一公钥对目标密钥进行加密得到,目标密钥根据服务器发送的随机字符串生成。

步骤s306,客户端向服务器发送第二报文,以使服务器利用目标密钥对第二报文进行解密,得到待传输数据,其中,第二报文包括客户端利用目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括第一数据和第二数据,第一数据为数据传输过程中需要加密的数据,第二数据为数据传输过程中不需要加密的数据。

在本发明实施例中,第一私钥是解密密钥,只有服务器才知道。第一公钥是加密密钥,是公开的。客户端利用第一公钥对目标密钥进行加密得到第一报文,之后客户端向服务器发送第一报文,即使第一报文半路被拦截,由于拦截者不知道解密密钥(第一私钥),因此,无法破解第一报文。只有服务器知道解密密钥,因此,只有服务器才能对第一报文进行解密,得到目标密钥。因此,这就保证了后续对称加密密钥(目标密钥)的安全性。目标密钥是客户端根据服务器发送的随机字符串生成的,每一次数据传输服务器都会生成不同的随机字符串,每次的目标密钥也是不同的,即使某一次的目标密钥在传输过程中被拦截,下一次的目标密钥也是不同的,这就保证了下次数据传输的安全性,解决了现有技术中数据传输安全性低的技术问题,达到了提高数据传输的安全性的技术效果。

在客户端向服务器发送第一报文之前,客户端向服务器发送随机值请求,随机值请求用于请求生成随机字符串,以使服务器根据随机值请求生成第一字符串;客户端接收服务器发送的第一字符串;客户端根据第一字符串生成目标密钥。

每一次数据传输服务器都会生成不同的随机字符串,每次的目标密钥也是不同的,即使某一次的目标密钥在传输过程中被拦截,下一次的目标密钥也是不同的,这就保证了下次数据传输的安全性,

第一字符串可以是预定位数的,例如为8位。

客户端根据第一字符串生成目标密钥的方法可以有多种,以下举出几种:

客户端根据第一字符串生成目标密钥的第一种方法:

客户端生成第二字符串,将第一字符串与第二字符串进行拼接,得到一个新的字符串,这个新的字符串即为目标密钥。

第一字符串与第二字符串包含的字符的数量可以相同,也可以不相同。

例如,服务器发送给客户端的第一字符串为“kgha”,客户端生成的第二字符串为“d7u567wk”,按照第一字符串、第二字符串的先后顺序进行拼接,得到一个新的字符串“kghad7u567wk”;也可以按照第二字符串、第一字符串的先后顺序进行拼接,得到一个新的字符串“d7u567wkkgha”,将字符串“kghad7u567wk”或者字符串“d7u567wkkgha”作为目标密钥。

客户端根据第一字符串生成目标密钥的第二种方法:

客户端根据对预设规则对第一字符串进行变换,得到新的字符串,将新的字符串作为目标密钥。

例如,服务器发送给客户端的第一字符串为“kgha”,客户端在第一字符的每两个相邻的字符中随机插入一个数字,假设得到的新的字符串是“k5g3h2a”,将字符串“k5g3h2a”作为目标密钥。

再例如,服务器发送给客户端的第一字符串为“kgha”,客户端将第一字符串的所有字符倒序排列,得到“ahgk”,将字符串“ahgk”作为目标密钥。

第二报文在传输过程中,可能会被拦截并更改。如果客户端向服务器发送的第二报文在传输过程中被拦截并更改,那么服务器接收的第二报文与客户端发出的第二报文的内容不同。此时,如果服务器解密接收的第二报文,得到的数据就是被中途更改过的数据,而不是客户端发出的数据,这就对数据传输的安全性造成了影响。为了解决这个问题,本发明实施例提供的数据传输方法中,客户端对密文数据和第二数据使用安全哈希算法加密,得到第一数字签名,将第一数字签名作为第二报文的一部分,发送给服务器。

服务器接收到第二报文中,根据以下方法来判断自身接收到的第二报文与客户端发出的第二报文是否完全相同:

服务器对接收到的第二报文中除数字签名以外的数据使用安全哈希算法加密,得到第二数字签名;服务器比较接收到的第二报文中的第一数字签名与自身计算出的第二数字签名是否相同;如果比较出第一数字签名与第二数字签名相同,则确定自身接收到的第二报文与客户端发出的第二报文完全相同,此种情况下,服务器利用目标密钥对接收到的第二报文进行解密,得到待传输数据;如果比较出第一数字签名与第二数字签名不相同,则确定自身接收到的第二报文与客户端发出的第二报文不相同,即,该报文在传输过程中被更改了,此时,发出错误提示。

图4是根据本发明实施例的客户端和服务器执行数据传输方法的交互图。下面对图4进行具体说明。

第一步非对称加密公钥协商

1、服务端(服务器)使用openssl工具生成2048位rsa密钥(第一私钥);

2、服务端根据rsa密钥生成对应的公钥(第一公钥);

3、服务端将公钥交给客户端。

第二步对称加密密钥协商

1、客户端向服务端发起随机值请求,服务端返回8位随机字符str1(第一字符串);

2、客户端生成8位随机字符str2(第二字符串),与str1拼接成str3,str3作为后续对称加密的密钥(目标密钥);

3、客户端用服务端的公钥(第一公钥)加密str3(目标密钥),得到第一报文,将第一报文发送到服务端;

4、服务端使用第一公钥对第一报文进行解密,得到对称加密密钥(目标密钥)。

第三步应用数据加密传输

以背景技术中提到的报文为例:

1、请求体通过aes算法对称加密,密钥为第二步中协商的密钥(目标密钥),

aes({“account”:“62261975xxxxxx8”,“password”:”djfjdhf@x&”,“dst_account”:“6226000000000000”,“amount”:“8000”})

=u2fsdgvkx1+1mrgv6pqgay7kx0sfhv/6ylgb02ctxssqz0y06dcdnhkzonnl0ihi

fqecxl3utwukraiar/jsjekhup5dprfzehcrowvg7pzywq34cqrwqszkicltouoj

yih2c5+kdpw7pryamu5bscwo47e2re09c8xv3dvgrj0ds2o/zyyf1xkzt91k2xdj

mq8m89hfqy9ywqur9f5akxsce5eodii+e/wvdgiy9yk=

2、增加数字签名:

假设第二步中得到的密钥为abcdefg;

将参数按a-z排序,以&拼接参数并sha1(安全哈希算法)加密,sha1(bizid=3333&cmdid=transfer&req=u2fsdgvkx1+1mrgv6pqgay7kx0sfhv/6ylgb02ctxssqz0y06dcdnhkzonnl0ihi

fqecxl3utwukraiar/jsjekhup5dprfzehcrowvg7pzywq34cqrwqszkicltouoj

yih2c5+kdpw7pryamu5bscwo47e2re09c8xv3dvgrj0ds2o/zyyf1xkzt91k2xdj

mq8m89hfqy9ywqur9f5akxsce5eodii+e/wvdgiy9yk=&key=abcdefg),加密的结果为c8cd8139bf61e42a84013ecbaa3c20e1687fa91b,再将此结果作为请求的数字签名字段sign(第一数字签名)。

最后组成的请求json报文(第二报文)为:

将上述报文发送给服务端即可。

服务器接收到第二报文中,根据以下方法来判断自身接收到的第二报文与客户端发出的第二报文是否完全相同:

服务器对接收到的第二报文中除数字签名以外的数据使用安全哈希算法加密,得到第二数字签名;服务器比较接收到的第二报文中的第一数字签名与自身计算出的第二数字签名是否相同;如果比较出第一数字签名与第二数字签名相同,则确定自身接收到的第二报文与客户端发出的第二报文完全相同,此种情况下,服务器利用目标密钥对接收到的第二报文进行解密,得到待传输数据;如果比较出第一数字签名与第二数字签名不相同,则确定自身接收到的第二报文与客户端发出的第二报文不相同,即,该报文在传输过程中被更改了,此时,发出错误提示。

本发明实施例提供的数据传输方法的安全性极高,原因如下:

1、请求报文即使被截获,由于用户信息是密文,没有对应的密钥,解密难度相当大。

2、每次请求之前都会协商密钥,即使某一次的对称加密密钥(目标密钥)泄漏,下一次请求密钥也会变化。

3、密钥协商过程中,密钥都是采用rsa加密,只有服务端才可以解密(只有服务器才知道与第一公钥对应的第一私钥),保证了密钥传输过程的安全性。

4、即使参数被恶意修改,由于得不到数字签名的密钥,则sign与请求参数不匹配,服务端收到请求后,根据参数计算出第二数字签名再比对第一数字签名和第二数字签名,发现不一致则返回错误。

本发明实施例提供的数据传输方法也可以认为是一种基于json协议的密钥动态协商的加密http的安全请求方法,利用了数字签名校验的身份安全、aes密文解密难度大等特性,最终要的一点是aes加密的密钥为动态协商得到,不会因为密钥泄漏被窃取信息,并且密钥协商的结果也采用rsa非对称加密,只有服务端才有密钥,安全系数非常高!

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

本发明实施例还提供了图5所示的数据传输装置,图5所示的数据传输装置用于实施图2所示的数据传输方法,该装置位于服务器中。如图5所示,该装置包括:服务器第一发送单元10、服务器第一解密单元20、服务器第一接收单元30、服务器第二解密单元40。

服务器第一发送单元10,用于向客户端发送第一公钥。

服务器第一解密单元20,用于利用第一私钥对第一报文进行解密,得到目标密钥,其中,第一公钥与第一私钥为一对密钥,第一报文由客户端利用第一公钥对目标密钥进行加密得到,目标密钥根据服务器发送的随机字符串生成。

服务器第一接收单元30,用于接收客户端发送的第二报文,其中,第二报文包括客户端利用目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括第一数据和第二数据,第一数据为数据传输过程中需要加密的数据,第二数据为数据传输过程中不需要加密的数据。

服务器第二解密单元40,用于利用目标密钥对第二报文进行解密,得到待传输数据。

可选地,装置还包括:服务器第二接收单元、服务器第一生成单元、服务器第二发送单元。服务器第二接收单元,用于在服务器第一解密单元20利用第一私钥对第一报文进行解密之前,接收客户端发送的随机值请求,随机值请求用于请求生成随机字符串。服务器第一生成单元,用于根据随机值请求生成第一字符串。服务器第二发送单元,用于向客户端发送第一字符串,以使客户端根据第一字符串生成目标密钥。

可选地,第二报文还包括第一数字签名,第一数字签名是客户端对密文数据和第二数据使用安全哈希算法加密得到的,服务器第二解密单元包括:服务器加密子单元、服务器比较子单元、服务器解密子单元。服务器加密子单元,用于服务器对接收到的第二报文中除数字签名以外的数据使用安全哈希算法加密,得到第二数字签名。服务器比较子单元,用于服务器比较第一数字签名与第二数字签名是否相同。服务器解密子单元,用于如果比较出第一数字签名与第二数字签名相同,则服务器利用目标密钥对接收到的第二报文进行解密,得到待传输数据。

可选地,装置还包括:服务器第二生成单元、服务器第三生成单元。服务器第二生成单元,用于在服务器第一发送单元10向客户端发送第一公钥之前,生成预设位数的第一私钥。服务器第三生成单元,用于根据第一私钥生成第一公钥。

本发明实施例还提供了图6所示的数据传输装置,图6所示的数据传输装置用于实施图3所示的数据传输方法,该装置位于客户端中。如图6所示,该装置包括:客户端第一接收单元50、客户端第一发送单元60、客户端第二发送单元70。

客户端第一接收单元50,用于接收服务器发送的第一公钥。

客户端第一发送单元60,用于向服务器发送第一报文,以使服务器利用第一私钥对第一报文进行解密,得到目标密钥,其中,第一公钥与第一私钥为一对密钥,第一报文由客户端利用第一公钥对目标密钥进行加密得到,目标密钥根据服务器发送的随机字符串生成。

客户端第二发送单元70,用于向服务器发送第二报文,以使服务器利用目标密钥对第二报文进行解密,得到待传输数据,其中,第二报文包括客户端利用目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括第一数据和第二数据,第一数据为数据传输过程中需要加密的数据,第二数据为数据传输过程中不需要加密的数据。

可选地,装置还包括:客户端第三发送单元、客户端第二接收单元、客户端生成单元。客户端第三发送单元,用于在客户端第一发送单元60向服务器发送第一报文之前,向服务器发送随机值请求,随机值请求用于请求生成随机字符串,以使服务器根据随机值请求生成第一字符串。客户端第二接收单元,用于接收服务器发送的第一字符串。客户端生成单元,用于根据第一字符串生成目标密钥。

可选地,客户端生成单元包括:客户端生成子单元、客户端拼接子单元。客户端生成子单元,用于随机生成第二字符串。客户端拼接子单元,用于将第一字符串与第二字符串进行拼接,得到目标密钥。

可选地,第二报文还包括第一数字签名,装置还包括:客户端加密单元。客户端加密单元,用于在客户端第二发送单元70向服务器发送第二报文之前,对密文数据和第二数据使用安全哈希算法加密,得到第一数字签名,以使服务器根据第一数字签名和第二数字签名是否相同来判断服务器接收到的第二报文是否与客户端发送的第二报文完全相同,其中,第二数字签名是服务器对接收到的第二报文中除数字签名以外的数据使用安全哈希算法加密得到的。

根据本发明实施例,还提供了一种用于实施上述数据传输方法的服务器,如图7所示,该服务器主要包括处理器701、显示器703、数据接口704、存储器705和网络接口706,其中:

数据接口704则主要通过数据传输的方式将第一报文、第二报文等传输给处理器701。

存储器705主要用于存储第一字符串、目标密钥、第一报文、第二报文等。

网络接口706主要用于与终端和其他服务器进行网络通信。

显示器703主要用于显示存储第一字符串、目标密钥、第一报文、第二报文等。

处理器701主要用于执行如下操作:

服务器向客户端发送第一公钥;

服务器利用第一私钥对第一报文进行解密,得到目标密钥,其中,第一公钥与第一私钥为一对密钥,第一报文由客户端利用第一公钥对目标密钥进行加密得到,目标密钥根据服务器发送的随机字符串生成;

服务器接收客户端发送的第二报文,其中,第二报文包括客户端利用目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括第一数据和第二数据,第一数据为数据传输过程中需要加密的数据,第二数据为数据传输过程中不需要加密的数据;

服务器利用目标密钥对第二报文进行解密,得到待传输数据。

处理器701还用于执行:接收客户端发送的随机值请求,随机值请求用于请求生成随机字符串;服务器根据随机值请求生成第一字符串;服务器向客户端发送第一字符串,以使客户端根据第一字符串生成目标密钥。

处理器701还用于执行:对接收到的第二报文中除数字签名以外的数据使用安全哈希算法加密,得到第二数字签名;服务器比较第一数字签名与第二数字签名是否相同;如果比较出第一数字签名与第二数字签名相同,则服务器利用目标密钥对接收到的第二报文进行解密,得到待传输数据。

处理器701还用于执行:生成预设位数的第一私钥;服务器根据第一私钥生成第一公钥。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于存储本发明实施例的数据传输方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于移动通信网络、广域网、城域网或局域网的网络中的多个网络设备中的至少一个网络设备。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,服务器向客户端发送第一公钥。

s2,服务器利用第一私钥对第一报文进行解密,得到目标密钥,其中,第一公钥与第一私钥为一对密钥,第一报文由客户端利用第一公钥对目标密钥进行加密得到,目标密钥根据服务器发送的随机字符串生成。

s3,服务器接收客户端发送的第二报文,其中,第二报文包括客户端利用目标密钥对第一数据进行加密得到的密文数据以及第二数据,其中,待传输数据包括第一数据和第二数据,第一数据为数据传输过程中需要加密的数据,第二数据为数据传输过程中不需要加密的数据。

s4,服务器利用目标密钥对第二报文进行解密,得到待传输数据。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:接收客户端发送的随机值请求,随机值请求用于请求生成随机字符串;服务器根据随机值请求生成第一字符串;服务器向客户端发送第一字符串,以使客户端根据第一字符串生成目标密钥。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:对接收到的第二报文中除数字签名以外的数据使用安全哈希算法加密,得到第二数字签名;服务器比较第一数字签名与第二数字签名是否相同;如果比较出第一数字签名与第二数字签名相同,则服务器利用目标密钥对接收到的第二报文进行解密,得到待传输数据。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行:生成预设位数的第一私钥;服务器根据第一私钥生成第一公钥。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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