发明内容
本发明提供了一种基于TLV的数据传输的方法及系统,能够提高TLV数据传输过程中的安全性。
本发明提供了如下方案:
一种基于TLV的数据传输方法,包括:采用TLV编码方式对待传输的原始数据进行编码,生成TLV数据;对所述TLV数据进行加密处理,生成加密后的TLV数据;将所述加密后的TLV数据进行传输。
优选的,还包括:获知与传输所述TLV数据相关的密钥。
优选的,所述获知与传输所述TLV数据相关的密钥包括:第一传输方获知预先生成的第一密钥对中的第一公钥;第二传输方获知预先生成的第一密钥对中的第一私钥;所述第一传输方和所述第二传输方之间采用所述第一密钥对进行信息交互,交互后续用于传输TLV数据的数据传输密钥。
优选的,所述获知与传输所述TLV数据相关的密钥包括:所述第一传输方和第二传输方分别获知第一密钥对中的第一公钥,第三方获知第一密钥对中的第一私钥;所述第一传输方和所述第三方采用所述第一密钥对进行信息交互,使得所述第一传输方获知后续用于所述第一传输方与第二传输方之间传输TLV数据的数据传输密钥;所述第二传输方和所述第三传输方采用所述第一密钥对进行信息交互,使得所述第二传输方获知后续用于所述第二传输方与所述第一传输方之间传输TLV数据的所述数据传输密钥。
优选的,所述采用TLV编码方式对待传输的原始数据进行编码包括:所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;所述采用数据传输密钥对所述TLV数据进行加密处理包括:所述第一传输方采用所述数据传输密钥对所述TLV数据进行加密处理;所述将加密后的TLV数据进行传输包括:将所述加密后的TLV数据向所述第二传输方进行传输;
所述方法还包括:所述第二传输方采用所述数据传输密钥对来自所述第一传输方的TLV数据进行解密;以及对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
优选的,所述第一传输方和所述第二传输方之间采用所述第一密钥对进行信息交互,交互后续用于传输TLV数据的数据传输密钥包括:所述第一传输方和所述第二传输方之间采用所述第一密钥对进行信息交互,触发生成包括第二公钥和第二私钥的第二密钥对;所述第一传输方获知所述第二密钥对中的一密钥信息,所述第二传输方获知所述第二密钥对中的另一密钥信息。
优选的,所述采用TLV编码方式对待传输的原始数据进行编码包括:所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;所述对TLV数据进行加密处理包括:所述第一传输方采用所述第二密钥对中的所述一密钥对所述TLV数据进行加密处理;所述将加密后的TLV数据进行传输包括:将所述加密后的TLV数据向所述第二传输方进行传输;
所述方法还包括:所述第二传输方采用所述第二密钥对中的所述另一密钥对来自所述第一传输方的TLV数据进行解密;以及对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
优选的,还包括:所述第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据;所述第二传输方采用所述第二密钥对中的所述另一密钥对所述TLV数据进行加密处理,生成加密后的TLV数据;将所述加密后的TLV数据向所述第一传输方进行传输;所述第一传输方采用所述第二密钥对中的所述一密钥对来自所述第二传输方的TLV数据进行解密;以及对所述解密后的TLV数据进行解码,获得传输的第二原始数据。
优选的,所述获知与传输所述TLV数据相关的密钥包括:第一传输方获知预先生成的第一密钥对中的一密钥信息,以及第二密钥对中的一密钥信息;第二传输方获知预先生成的第一密钥对中的另一密钥信息,以及第二密钥对中的另一密钥信息。
优选的,所述采用TLV编码方式对待传输的原始数据进行编码包括:所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;所述对TLV数据进行加密处理包括:所述第一传输方采用所述第一密钥对中的所述一密钥对所述TLV数据进行加密处理;所述将加密后的TLV数据进行传输包括:将所述加密后的TLV数据向所述第二传输方进行传输;
所述方法还包括:所述第二传输方采用所述第一密钥对中的所述另一密钥信息对来自所述第一传输方的TLV数据进行解密;以及对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
优选的,还包括:所述第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据;所述第二方采用所述第二密钥对中的所述另一密钥对所述TLV数据进行加密处理,生成加密后的TLV数据;将所述加密后的TLV数据向所述第一传输方进行传输;所述第一传输方采用所述第二密钥对中的所述一密钥对来自所述第二传输方的TLV数据进行解密;以及对所述解密后的TLV数据进行解码,获得传输的第二原始数据。
优选的,在对所述TLV数据进行加密处理之前或之后还包括:对所述TLV数据进行压缩。
优选的,所述采用TLV编码方式对待传输的原始数据进行编码,生成TLV数据包括:采用TLV编码方式对待传输的原始数据进行编码,在所述编码过程中不对Length长度字段进行编码,生成TLV数据,所述TLV数据中不包括Length长度字段。
本发明还提供了一种基于TLV的数据传输系统,包括:编码单元,用于采用TLV编码方式对待传输的原始数据进行编码,生成TLV数据;加密单元,用于对所述TLV数据进行加密处理,生成加密后的TLV数据;传输单元,用于将所述加密后的TLV数据进行传输。
优选的,还包括:密钥通信单元,用于获知与传输所述TLV数据相关的密钥。
优选的,所述密钥通信单元具体包括:第一密钥通信单元,用于使所述第一传输方获知预先生成的第一密钥对中的第一公钥,所述第二传输方获知预先生成的第一密钥对中的第一私钥;第二密钥通信单元,用于所述第一传输方和所述第二传输方之间采用所述第一密钥对进行信息交互,交互后续用于传输TLV数据的数据传输密钥。
优选的,所述密钥通信单元具体包括:第三密钥通信单元,用于使所述第一传输方和第二传输方分别获知第一密钥对中的第一公钥,第三方获知所述第一密钥对中的第一私钥;第四密钥通信单元,用于所述第一传输方和所述第三方采用所述第一密钥对进行信息交互,使所述第一传输方获知后续用于所述第一传输方与第二传输方之间传输TLV数据的数据传输密钥;第五密钥通信单元,用于所述第二传输方和所述第三方采用所述第一密钥对进行信息交互,使所述第二传输方获知后续用于所述第二传输方与所述第一传输方之间传输TLV数据的所述数据传输密钥。
优选的,所述编码单元具体为第一编码单元,用于所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;所述加密单元具体为第一加密单元,用于所述第一传输方采用所述数据传输密钥对所述TLV数据进行加密处理;所述传输单元具体为第一传输单元,用于将所述加密后的TLV数据向所述第二传输方进行传输;
所述系统还包括:第一解密单元,用于所述第二传输方采用所述数据传输密钥对来自所述第一传输方的TLV数据进行解密;以及,第一解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
优选的,所述第二密钥通信单元包括:新密钥触发子单元,用于所述第一传输方和所述第二传输方之间采用所述第一密钥对进行信息交互,触发生成包括第二公钥和第二私钥的第二密钥对;新密钥通信子单元,用于使所述第一传输方获知所述第二密钥对中的一密钥信息,所述第二传输方获知所述第二密钥对中的另一密钥信息。
优选的,所述编码单元具体为第二编码单元,用于所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;所述加密单元具体为第二加密单元,用于所述第一传输方采用所述第二密钥对中的所述一密钥信息对所述TLV数据进行加密处理;所述传输单元具体为第二传输单元,用于将所述加密后的TLV数据向所述第二传输方进行传输;
所述系统还包括:第二解密单元,用于所述第二传输方采用所述第二密钥对中的所述另一密钥对来自所述第一传输方的TLV数据进行解密;以及,第二解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
优选的,还包括:第三编码单元,用于所述第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据;第三加密单元,用于所述第二传输方采用所述第二密钥中的所述另一密钥对所述TLV数据进行加密处理,生成加密后的TLV数据;第三传输单元,用于将所述加密后的TLV数据向所述第一传输方进行传输;第三解密单元,用于所述第一传输方采用所述第二密钥对中的所述一密钥对来自所述第二传输方的TLV数据进行解密;第三解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第二原始数据。
优选的,所述密钥通信单元包括:第六密钥通信单元,用于使所述第一传输方获知预先生成的第一密钥对中的一密钥信息以及第二密钥对中的一密钥信息;第七密钥通信单元,用于使所述第二传输方获知预先生成的第一密钥对中的另一密钥信息以及第二密钥对中的另一密钥信息。
优选的,所述编码单元具体为第四编码单元,用于所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;所述加密单元具体为第四加密单元,用于所述第一传输方采用所述第一密钥对中的所述一密钥对所述TLV数据进行加密处理;所述传输单元具体为第四传输单元,用于将所述加密后的TLV数据向所述第二传输方进行传输;
所述系统还包括:第四解密单元,用于所述第二传输方采用所述第一密钥对中的所述另一密钥对来自所述第一传输方的TLV数据进行解密;以及,第四解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
优选的,还包括:第五编码单元,用于所述第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据;第五加密单元,用于所述第二方采用所述第二密钥对中的所述另一密钥对所述TLV数据进行加密处理,生成加密后的TLV数据;第五传输单元,用于将所述加密后的TLV数据向所述第一传输方进行传输;第五解密单元,用于所述第一传输方采用所述第二密钥对中的所述一密钥对来自所述第二传输方的TLV数据进行解密;第五解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第二原始数据。
优选的,还包括:压缩单元,用于在对所述TLV数据进行加密处理之前或之后对所述TLV数据进行压缩。
优选的,所述编码单元,具体用于采用TLV编码方式对待传输的原始数据进行编码,在所述编码过程中不对Length长度字段进行编码,生成TLV数据,所述TLV数据中不包括Length长度字段。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明通过采用TLV编码方式对待传输的原始数据进行编码,生成TLV数据;然后对所述TLV数据进行加密处理后再进行传输,使得数据在传输过程中即使被其他人截获,也不会轻易泄露数据内容,提高了TLV数据传输过程中的安全性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其为本发明提供的一种基于TLV的数据传输方法第一实施例流程图。为更清楚的说明本发明实施例,在传输过程中,将传输双方分别称为第一传输方和第二传输方。
步骤110:第一传输方获知预先生成的第一密钥对中的第一公钥,第二传输方获知预先生成的第一密钥对中的第一私钥;
步骤120:第一传输方和第二传输方之间采用第一密钥对进行信息交互,交互后续用于传输TLV数据的数据传输密钥。
从上述步骤可以看出,步骤110和120的方案主要是为了使传输方获知与传输所述TLV数据相关的密钥,为了更好的理解这两个步骤,下面结合一个具体实施方式进一步详细介绍。请参阅图2,其为本发明获知与传输TLV数据相关的密钥的第一实施方式示意图。
在该示意图中,第一传输方以客户端为例进行说明,第二传输方以服务器为例进行说明,除此以外还有一个密钥管理单元,该单元可以理解为逻辑上独立于服务器和客户端,在物理上并不限于此,可以集成到服务器上予以实现,即可以由图中所示服务器或另一服务器完成密钥管理的功能。
步骤2001:生成一包括公钥(即步骤110中的第一公钥)和私钥(即步骤110中的第一私钥)的密钥对,该步骤可以由密钥管理单元完成。这对密钥对通常不会经常更新。当然,如果出于更严格的安全需求,也可以根据实际需要定期或不定期的经常更新。
步骤2002:密钥管理单元将公钥传输给客户端,客户端保存该公钥,即客户端获知该公钥。
步骤2003:密钥管理单元将私钥传输给服务器,服务器保存该私钥,即服务器获知该私钥。
步骤2004:客户端生成验证信息(明文)。如果对安全性要求较高,就可以在请求消息中加入验证信息,验证信息的主要目的是为了使得服务器能够验证该客户端的身份是合法的。
步骤2005:客户端构建请求消息(请求后续传输TLV数据的密钥key,也即请求加/解密TLV数据的数据传输密钥key),并使用公钥加密该请求消息。例如,请求key的请求消息原文是:“request key,password=123456”,用用公钥加密后变成:Y。
步骤2006:将经公钥加密后的请求消息发送给服务器。例如,将上述“Y”发送给服务器。
步骤2007:服务器收到请求消息后,用私钥解密,并验证明文信息。例如,服务器收到Y后,使用私钥解密Y→“request key,password=123456”,并且验证password是否正确。
步骤2008:如果私钥解密成功,并且验证信息正确,则生成随机key,传输给客户端。为了安全起见,key最好是随机产生的,但本发明并不限于此。另外,优选的,传输key时可以采用私钥加密,以更好的提高安全性。
步骤2009:客户端成功获取用于传输TLV数据的数据传输密钥key。如果服务器传输key时采用私钥进行了加密,则客户端还需要在接收后采用公钥进行解密,才能正确解出key。
至此,第一传输方和第二传输方之间采用第一密钥对进行信息交互,成功交互了后续用于传输TLV数据的数据传输密钥key,可以看出,用于后续传输TLV数据的密钥key不同于之前的公钥和私钥,开始产生的公钥和私钥仅仅是为了交换数据传输密钥key使用的,在后续真正传输TLV数据时并使用公钥和私钥,而是采用新交换的数据传输密钥key。进而,后续第一传输方和第二传输方如果需要传输TLV数据的话,则就可以采用上述数据传输密钥key进行加密和解密了。由此可知,步骤110和步骤120的主要方案是:生成包括第一公钥和第一私钥的第一密钥对,第一传输方获知第一公钥,第二传输方获知第一私钥;第一传输方向第二传输方发送一采用该公钥加密的请求信息,该请求信息包括请求获知数据传输密钥key的信息;第二传输方采用私钥对接收到的请求信息进行解密,解密成功后生成数据传输密钥,并向第一传输方发送用于对TLV数据进行加密处理的数据传输密钥。
步骤130:第一传输方采用TLV编码方式对待传输的第一原始数据进行编码。
在该步骤中,可以采用现有的TLV编码方式对原始数据进行编码。也可以采用本发明提供的一种改进的TLV编码方式进行编码,比如,在所述编码过程中不对Length长度字段进行编码,生成TLV数据,所述TLV数据中不包括Length长度字段。或者,缩减tag的位数。
具体而言,传统的TLV,Tag(简称对应的数据体为对象),Length的长度是固定的(主要是为了编程方便),实际上如果tag的类型有限,并且有一些tag对应的数据长度如果是固定的话,那么tag和length可以进一步缩减,以节约流量。例如传统的TLV的tag和length一般是使用16位的比较多:Tag:short短(16bits)Length:short短(16bits)Value:variable(变量)
如果能够确定需要传输的对象不超过256种(满足绝大部分需求),那么Tag只需要使用8bits(可以节约1个字节),任何一种对象如果长度是固定的,就不传递长度,直接传value,于是总共能够节约2个字节。采取上述这种编码方式,对接收方进行解码也是没有问题的,因为每种类型的数据长度基本是固定的,因此接收方从tag中读出数据类型,便能够知道该类型的数据长度是多少进而解码时就知道要解码到多长。可见,采取上述编码方式,更能够节约传输的流量,提高了传输效率。
需要说明的是,步骤130,与步骤110、120获知用于传输TLV数据相关密钥的步骤之间没有先后顺序关系,两者先后顺序可以互换,而且,也不限于每发一次TLV数据之前都要获知密钥,通常是开启一次新的会话才需要重新获知一次传输TLV数据的密钥。换而言之,可能获知一次密钥,可以应用于多次TLV数据的加密传输。当然,如果实际需要安全级别非常高,也不排除每传输一次TLV数据之前,都重新获知一次新的密钥。本发明对上述内容并没有限制。
步骤140:第一传输方采用所述数据传输密钥对所述TLV数据进行加密处理,生成加密后的TLV数据。例如,采用步骤120中获知的用于传输TLV数据的数据加密密钥key进行加密处理。
步骤150:将所述加密后的TLV数据向所述第二传输方进行传输。
至此,通过步骤110-步骤150完成了第一传输方向第二传输方传输TLV数据的完整传输过程。
为了更详尽叙述本发明实施例,后续再进一步介绍接收方(第二传输方)对接收到的数据的处理。
第二传输方采用所述数据传输密钥对来自所述第一传输方的TLV数据进行解密,第二传输方解密的密钥,与第一传输方加密的密钥相同,例如,都是图2中所示的数据传输密钥key。然后,对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
通过上述本发明第一实施例可以看出,在真正传输TLV数据时采用加密和解密密钥相同,因此加密和解密的效率比较高。并且由于该数据传输密钥是通过前述复杂的通信过程(借助不同于数据传输密钥的另一密钥对)交互获知的,因此该数据传输密钥的安全性非常高。数据传输密钥本身的安全性高,自然导致在后续用该密钥传输TLV数据时的安全性大大提高。
请继续参阅图3,其为本发明提供的一种基于TLV的数据传输方法第二实施例流程图。为更清楚的说明本发明实施例,在传输过程中,将传输双方分别称为第一传输方和第二传输方。本实施例与第一实施例的主要区别在于步骤310-330与第一实施例中的步骤110-步骤120不同,即获知用于传输TLV数据的数据传输密钥的具体方式不同。后续步骤的处理雷同。
步骤310:第一传输方和第二传输方分别获知第一密钥对中的第一公钥,第三方获知第一密钥对中的第一私钥;
步骤320:第一传输方和第三方采用第一密钥对进行信息交互,使得所述第一传输方获知后续用于所述第一传输方与第二传输方之间传输TLV数据的数据传输密钥。
步骤330:第二传输方和所述第三方采用所述第一密钥对进行信息交互,使得所述第二传输方获知后续用于所述第二传输方与所述第一传输方之间传输TLV数据的所述数据传输密钥。
为了更清楚的介绍步骤310至步骤320,下面仍然以一具体示意图来进一步介绍。请参看图4,其为本发明中获知与传输TLV数据相关的密钥的第二实施方式示意图。
在该示意图中,第一传输方以客户端C1为例进行说明,第二传输方以客户端C2为例进行说明,除此以外还有第三方服务器,以及密钥管理单元。密钥管理单元可以理解为逻辑上独立于服务器和客户端,在物理上并不限于此,可以集成到服务器上予以实现,即可以由图中所示服务器或另一服务器完成密钥管理的功能。
步骤4001:生成密钥对,该密钥对包括一公钥(即步骤310中的第一公钥)和一私钥(即步骤310中的第一私钥),可以由密钥管理单元生成。
步骤4002:传输给客户端C2保存该公钥。
步骤4003:传输给客户端C1保存该公钥。
步骤4004:传输给服务器保存该私钥。
步骤4005:客户端C1向服务器询问客户端列表。
步骤4006:服务器向客户端C1返回客户端列表,其中包括客户端C2在线的信息。
步骤4007:客户端C1向服务器请求连接客户端C2。
步骤4008:服务器询问客户端C2是否同意客户端C1的连接请求。
步骤4009:客户端C2返回同意的确认信息。
步骤4010:服务器生成用于后续客户端C1和客户端C2之间传输TLV数据的数据传输密钥key,优选的,是生成随机key。
步骤4011:服务器生成会话信息,包括前述的随机key。
步骤4012:将包括随机key的会话信息发送给客户端C2。
步骤4013:将包括随机key的会话信息也发送给客户端C1。
步骤4014:借助服务器在客户端C1和客户端C2之间进行TCP(Transmission Control Protocol传输控制协议)打洞,建立连接。本步骤可以采用现有技术中的相关技术实现,因此不再赘述。
需要说明的是,从步骤4005开始一直到结束,客户端C1、C2和服务器之间进行的信息交互都采用最初的公钥、私钥密钥对进行加密信息传输,即客户端C1或C2给服务器发消息时采用公钥加密,服务器采用私钥解密;反之,服务器给客户端C1或C2发消息时采用私钥加密,客户端C1或C2采用公钥解密。
步骤4015:客户端C2和客户端C1之间使用服务器派发的数据传输密钥key对传输的TLV数据进行加密/解密。
通过图4的具体实施方式可以看出,该具体实施方式主要应用于两个客户端之间需要直接传输TLV数据的应用场景,比如P2P的应用场景。只不过出于安全考虑,客户端之间不直接传输用于传输TLV数据的数据传输密钥,而是借助服务器来派发。可见,通过这种方式,在P2P等客户端之间直接需要传输TLV的应用场景下,进一步提高了TLV数据的传输安全性。尤其是用户如果在Wi-Fi网络等公共网络下传输数据,采用本发明实施例的技术方案,安全性有了很大提高。
步骤340:第一传输方采用TLV编码方式对待传输的第一原始数据进行编码,生成TLV数据。同前述实施例类似,步骤310至步骤330,与步骤340之间没有必要的顺序关系,也不是每执行步骤340一次,都要执行步骤310-330一次,本发明对它们之间的执行顺序和次数没有限制,可以根据实际需求而定。
步骤350:第一传输方采用所述数据传输密钥对所述TLV数据进行加密处理,生成加密后的TLV数据。例如,客户端C1采用图4中服务器派发的key对待传输的TLV数据进行加密处理。
步骤360:将所述加密后的TLV数据向所述第二传输方进行传输。例如,客户端C1将经key加密后的TLV数据向客户端C2进行传输。
至此,通过步骤310-步骤350完成了第一传输方向第二传输方传输TLV数据的完整传输过程。
为了更详尽叙述本发明实施例,后续再进一步介绍接收方第二传输方对接收到的数据的处理。
步骤370:第二传输方采用所述数据传输密钥对来自所述第一传输方的TLV数据进行解密。对应于图4的应用场景,例如,客户端C2用key对来自C1的TLV数据进行解密。
步骤380:对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
前述步骤340至步骤380,与第一实施例中的步骤130至170雷同,因此不再赘述,相关细节请参看前述第一实施例中对应步骤的描述。
综合前述本发明第一实施例和第二实施例可以看出,第一传输方和第二传输方之间不是直接传输用于给TLV数据加密的密钥key,而是通过更复杂、安全的传输过程来交互key,因此使key本身更为安全,进而进一步确保传输的TLV数据的安全性。在实际应用中,有些传输是单向的,但也有很多传输是双向的,下面以一具体实施方式为例,介绍双向传输的具体过程。
请参阅图5,其为本发明提供的一种基于TLV的数据传输方法第三实施例示意图。在该示意图中第一传输方可以是客户端,第二传输方可以是服务器或另一客户端。
步骤501:对待传输的TLV数据进行压缩,即压缩TLV数据。本领域技术人员可以理解,在此步骤之前已经对待传输的原始数据进行了TLV编码,已经形成了TLV数据,只是为了更突出通信过程中的各步骤,所以没将最初的TLV编码步骤在图示出。由于TLV编码方式为每种类型添加额外的Tag和Length字段,因此产生的数据要比原始数据大,因此,如果在传输TLV数据之前对其进行压缩,比如使用Huffman(哈夫曼编码)或者Gzip(GNUzip的缩写,一种文件压缩程序)方式进行压缩,进而可以节约带宽,提升传输速度。
步骤502:对压缩后的TLV数据采用数据传输密钥key进行加密。例如,采用前述第一实施例中获知的用于传输TLV数据的key,或者前述第二实施例中获知的用于传输TLV数据的key。需要说明的是,步骤501和步骤502没有严格的先后顺序,可以互换,即可以先压缩后加密,也可以先加密后压缩。
步骤503:发送经数据传输密钥key加密后的TLV数据给第二传输方。
步骤504:第二传输方对接收到的TLV数据使用key进行解密。在本实施例中解密的密钥与加密的密钥相同。
步骤505:对解密后的数据进行解压缩。
步骤506:对解压缩后的数据进行正常的业务逻辑处理,获得业务处理结果。当然,多数情况下在解压缩后还还需要解码还原出原始数据,然后再进行业务逻辑处理。
步骤507:对业务处理结果的TLV数据进行压缩。当然,在压缩之前还要进行TLV编码(只是在图中未示出),以便生成TLV数据。
步骤508:对压缩后的TLV数据采用数据传输密钥key进行加密。
步骤509:第二传输方向第一传输方发送经数据传输密钥key加密后的数据。
步骤510:第一传输方采用数据传输密钥key对接收到的数据进行解密。
步骤511:对解密后的数据进行解压缩,进而完成通信。当然,如果要获得原始数据,还需要进一步对TLV数据进行解码,此处不再赘述。
通过上述图5的本发明实施例可以看出,在实施例中,第一传输方和第二传输方使用相同的密钥对TLV数据进行加密和解密。并且,第一传输方向第二传输方发送TLV数据时使用的加密密钥,与第二传输方向第一传输方发送TLV数据时使用的密钥也相同。
为了更进一步的提高数据传输安全,发送方(如第一传输方)对TLV数据进行加密的密钥,与接收方(如第二传输方)对TLV数据进行解密的密钥不同。甚至,第一传输方向第二传输方发送TLV数据时使用的加密密钥,与第二传输方向第一传输方发送TLV数据时使用的密钥也不相同,甚至不是同一密钥对。具体请看下面实例
请参看图6,其为本发明提供的一种基于TLV的数据传输方法第四实施例流程图。
步骤610:第一传输方获知预先生成的第一密钥对中的第一公钥;第二传输方获知预先生成的第一密钥对中的第一私钥。
步骤620:第一传输方和第二传输方之间采用第一密钥对进行信息交互,触发生成包含第二公钥和第二私钥的第二密钥对。
步骤630:第二传输方和第一传输方分别获知所述第二密钥对中的密钥信息,第二密钥对中的密钥信息作为后续用于传输TLV数据的相关密钥信息。例如,第二传输方获知所述第二密钥对中的第二公钥,利用第一密钥对向第一传输方传输所述第二私钥。
上述步骤610至630的目的也是为了使数据传输方获知与传输所述TLV数据相关的密钥。换而言之,也可以理解为第一传输方和第二传输方之间采用第一密钥对进行信息交互,交互后续用于传输TLV数据的数据传输密钥。只不过本实施例中的数据传输密钥,与前述第一实施例和第二实施例中的数据传输密钥有所不同。在第一实施例和第二实施例中,用于传输TLV数据的传输密钥对加密和解密而言都是相同的,而且双向互传时采用的加密密钥也相同。而本实施例中的后续用于传输TLV数据的传输密钥,对于加密和解密而言不同,并且如果存在双向互传的情况,那么双向采用的加密密钥也不同,相应的解密密钥也不同。
为了更好的理解610至630,下面结合一个具体实施方式进一步详细介绍。请参阅图7,其为本发明获知与传输TLV数据相关的密钥的第三实施方式示意图。
在该示意图中,第一传输方以客户端为例进行说明,第二传输方以服务器为例进行说明,除此以外还有一个密钥管理单元,该单元可以理解为逻辑上独立于服务器和客户端,在物理上并不限于此,可以集成到服务器上予以实现,即可以由图中所示服务器或另一服务器完成密钥管理的功能。
步骤7001:生成一包括公钥A1-P(即步骤610中的第一公钥)和私钥A1-S(即步骤610中的第一私钥)的密钥对A1,该步骤可以由密钥管理单元完成。这对密钥对通常不会经常更新。当然,如果处于更严格的安全需求,也可以根据实际需要定期或不定期的经常更新。
步骤7002:密钥管理单元将公钥A1-P传输给客户端,客户端保存该公钥A1-P,即客户端获知公钥A1-P。
步骤7003:密钥管理单元将私钥A1-S传输给服务器,服务器保存该私钥A1-S,即服务器获知私钥A1-S。
步骤7004:客户端生成验证信息(明文)。如果对安全性要求较高,就可以在请求消息中加入验证信息,验证信息的目的是为了使得服务器能够验证该客户端的身份是合法的。
步骤7005:客户端构建请求消息(请求后续传输TLV数据的密钥,即请求加/密TLV数据的密钥),并使用公钥A1-P加密该请求消息。
步骤7006:将经公钥A1-P加密后的请求消息发送给服务器。
步骤7007:服务器收到请求消息后,用私钥A1-S解密,并验证明文信息。
步骤7008:服务器解密及验证成功后,向密钥管理单元发送请求,请求生成新密钥对AN。
步骤7009:密钥管理单元下发密钥对AN(公钥AN-P和私钥AN-S)给服务器。
步骤7010:服务器下发私钥AN-S给客户端。
步骤7011:客户端成功接收到用于向服务器传输TLV数据的密钥AN-S。同时,该私钥AN-S也作为解密后续从服务器传输过来的TLV数据的解密密钥。
通过上述图7的具体实施方式可以看出,服务器和客户端之间采用第一密钥对(A1-P和A1-S)进行信息交互,交互后续用于传输TLV数据的数据传输密钥(AN-P和AN-S)。
具体的传输加密等过程请继续参看下述流程。
步骤640:第一传输方采用TLV编码方式对待传输的第一原始数据进行编码。
步骤650:第一传输方采用第二私钥对所述TLV数据进行加密处理,生成加密后的TLV数据。对应于图7的具体应用环境,本步骤就是客户端采用AN-S对TLV数据进行加密处理。
步骤660:将加密后的TLV数据向第二传输方进行传输。对应于图7的具体应用环境,本步骤就是客户端将经AN-S加密后的数据向服务器传输。
至此,通过步骤610-步骤660完成了第一传输方向第二传输方传输TLV数据的完整传输过程。
为了更详尽叙述本发明实施例,后续再进一步介绍接收方第二传输方对接收到的数据的处理。
具体而言,第二传输方采用所述第二公钥对来自所述第一传输方的TLV数据进行解密。对应于图7所示的应用环境,本步骤就是服务器采用AN-P对来自客户端的TLV数据进行解密。解密成功后,对解密后的TLV数据进行解码,进而获得传输的第一原始数据。
在实际应用中,有些传输是单向的,但也有很多传输是双向的,加入后续第二传输方还要向第一传输方传输TLV数据,则采用下述流程处理。
(1)第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据。
(2)第二传输方采用第二公钥对TLV数据进行加密处理,生成加密后的TLV数据。对应于图7的应用环境,本步骤即为服务器采用公钥AN-P对TLV数据进行加密处理,生成加密后的TLV数据。
(3)将所述加密后的TLV数据向所述第一传输方进行传输。对应于图7的应用环境,本步骤即为服务器将加密后的TLV数据向客户端传输。
(4)第一传输方采用所述第二私钥对来自第二传输方的TLV数据进行解密。对应于图7的应用场景,本步骤即为客户端采用AN-S对来自服务器的TLV数据进行解密。
(5)对解密后的TLV数据进行解码,获得传输的第二原始数据。
需要说明的是,在前述步骤7010中,服务器也可以下发公钥AN-P给客户端,自己保存私钥AN-S。进而,后续客户端给服务器发TLV数据时,采用公钥AN-P进行加密,相应的,服务器采用私钥AN-S解密。反之,服务器给客户端发TLV数据时,采用私钥AN-S进行加密,相应的,客户端采用公钥AN-P进行解密。总之,第一传输方获知第二密钥对中的一密钥信息,第二传输方获知第二密钥对中的另一密钥信息,具体哪个获得公钥,哪个获得私钥,本发明实施例对此并没有限制,在传输TLV数据时,都是用第二密钥对中的一密钥加密,用第二密钥对中的另一密钥解密。
此外,在前述实施例中,生成第二密钥对之后,第一传输方和第二传输方之间传输TLV数据的加密和解密,都采用第二密钥对。还有另外一种替代方案,即,生成第二密钥对之后,第一传输方向第二传输方传输TLV数据,采用第一密钥对进行加密/解密,第二传输方向第一传输方传输TLV数据,采用第二密钥对进行加密/解密。
具体而言,通过步骤610至步骤630,使得第一传输方获知预先生成的第一密钥对中的第一公钥以及第二密钥对中的第二私钥;以及第二传输方获知预先生成的第一密钥对中的第一私钥以及第二密钥对中第二公钥。进而,第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;第一传输方采用第一公钥(例如图7中的A1-P)对所述TLV数据进行加密处理;将加密后的TLV数据向第二传输方进行传输。进而,第二传输方采用第一私钥(例如A1-S)对来自第一传输方的TLV数据进行解密;以及对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
如果是双向传输,则进一步包括:
第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据;第二传输方采用第二公钥(例如图7中的AN-P)对所述TLV数据进行加密处理,生成加密后的TLV数据;将加密后的TLV数据向第一传输方进行传输。然后,第一传输方采用第二私钥(例如AN-S)对来自第二传输方的TLV数据进行解密;以及对所述解密后的TLV数据进行解码,获得传输的第二原始数据。
与前述第四实施例类似,第一传输方和第二传输方哪个获得第一密钥对中的公钥,哪个获得私钥,本发明对此并没有限制,只是前述的例子对安全性来说相对更好一些。对于第二密钥对的分发也没有类似限制。换而言之,第一传输方获知预先生成的第一密钥对中的一密钥信息,以及第二密钥对中的一密钥信息;第二传输方获知预先生成的第一密钥对中的另一密钥信息,以及第二密钥对中的另一密钥信息。并不限制第一密钥对中的一密钥信息是第一公钥还是第一私钥,同理,也不限制第二密钥对中的一密钥信息时第二公钥还是第二私钥。只是说,当一密钥信息是公钥时,另一密钥信息就是私钥,反之亦然,他们都是成对使用。
通过上述本发明一种基于TLV的数据传输方法第四实施例及其替代方案的描述可知,在该实施例中,传输双方使用的加密和解密密码不同,更进一步提高了TLV数据的安全性。而且,第一传输方向第二传输方发送TLV数据时采用加密密钥,与第二传输方向第一传输方发送TLV数据时采用的加密密钥也不同,因此更提高了TLV数据传输的安全性。
与前述本发明方法实施例相对应,本发明还公开了一种基于TLV的数据传输系统,请参阅图8,其为本发明提供的一种基于TLV的数据传输系统实施例框图。本实施例中的各单元是基于逻辑划分,而非物理划分,因此,在实际应用中,一单元可以分设于不同的物理实体中相互配合完成相应功能,不同单元也可以合并设于一物理实体中,本发明系统实施例对此并无限制。此外,由于本发明的系统实施例与方法实施例是完全对应的,因此各单元的技术细节不再赘述,请参看前述方法实施例中的相应内容,下面仅从逻辑结构上予以说明。
在本实施例中,该数据传输系统包括:
编码单元810,用于采用TLV编码方式对待传输的原始数据进行编码,生成TLV数据;加密单元820,用于对所述TLV数据进行加密处理,生成加密后的TLV数据;以及传输单元830,用于将所述加密后的TLV数据进行传输。
可选的,还包括:密钥通信单元,用于获知与传输所述TLV数据相关的密钥。
在一具体实施方式中,所述密钥传输单元具体包括第一密钥通信单元和第二密钥通信单元,其中,第一密钥通信单元,用于使所述第一传输方获知预先生成的第一密钥对中的第一公钥,所述第二传输方获知预先生成的第一密钥对中的第一私钥。第二密钥通信单元,用于所述第一传输方和所述第二传输方之间采用所述第一密钥对进行信息交互,交互后续用于传输TLV数据的数据传输密钥。
在另一具体实施方式中,所述密钥通信单元具体包括第三密钥通信单元、第四密钥通信单元和第五密钥通信单元,其中,第三密钥通信单元,用于使所述第一传输方和第二传输方分别获知第一密钥对中的第一公钥,第三方获知第一密钥对中的第一私钥;第四密钥通信单元,用于所述第一传输方和所述第三方采用所述第一密钥对进行信息交互,使得所述第一传输方获知后续用于所述第一传输方与第二传输方之间传输TLV数据的数据传输密钥;第五密钥通信单元,用于所述第二传输方和所述第三方采用所述第一密钥对进行信息交互,使得所述第二传输方获知后续用于所述第二传输方与所述第一传输方之间传输TLV数据的所述数据传输密钥。
在上述两个具体实施方式中,编码单元810具体为第一编码单元,用于所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;加密单元820具体为第一加密单元,用于所述第一传输方采用所述数据传输密钥对所述TLV数据进行加密处理;传输单元830具体为第一传输单元,用于将所述加密后的TLV数据向所述第二传输方进行传输;
可选的,所述系统还包括:第一解密单元,用于所述第二传输方采用所述数据传输密钥对来自所述第一传输方的TLV数据进行解密;以及,第一解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
在又一具体实施方式中,前述第二密钥通信单元包括:新密钥触发子单元,用于所述第一传输方和所述第二传输方之间采用所述第一密钥对进行信息交互,触发生成包括第二公钥和第二私钥的第二密钥对;新密钥通信子单元,用于使所述第一传输方获知所述第二密钥对中的一密钥信息,所述第二传输方获知所述第二密钥对中的另一密钥信息。编码单元810具体为第二编码单元,用于所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;加密单元820具体为第二加密单元,用于所述第一传输方采用所述第二密钥对中的所述一密钥信息对所述TLV数据进行加密处理;传输单元830具体为第二传输单元,用于将所述加密后的TLV数据向所述第二传输方进行传输;
所述系统还包括:第二解密单元,用于所述第二传输方采用所述第二密钥对中的所述另一密钥对来自所述第一传输方的TLV数据进行解密;以及,第二解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
如果所述传输系统是双向传输,则还包括:第三编码单元,用于所述第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据;第三加密单元,用于所述第二方采用所述第二密钥中的所述另一密钥对所述TLV数据进行加密处理,生成加密后的TLV数据;第三传输单元,用于将所述加密后的TLV数据向所述第一传输方进行传输;第三解密单元,用于所述第一传输方采用所述第二密钥对中的所述一密钥对来自所述第二传输方的TLV数据进行解密;第三解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第二原始数据。
在另一具体实施方式中,所述密钥通信单元包括:第六密钥通信单元,用于使所述第一传输方获知预先生成的第一密钥对中的一密钥信息以及第二密钥对中的一密钥信息;第七密钥通信单元,用于使所述第二传输方获知预先生成的第一密钥对中的另一密钥信息以及第二密钥对中的另一密钥信息。
相应的,编码单元810具体为第四编码单元,用于所述第一传输方采用TLV编码方式对待传输的第一原始数据进行编码;加密单元820具体为第四加密单元,用于所述第一传输方采用所述第一密钥对中的一密钥对所述TLV数据进行加密处理;传输单元830具体为第四传输单元,用于将所述加密后的TLV数据向所述第二传输方进行传输;
可选的,所述系统还包括:第四解密单元,用于所述第二传输方采用所述第一密钥对中的所述另一密钥对来自所述第一传输方的TLV数据进行解密;以及,第四解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第一原始数据。
如果在本具体实施方式中,如果该系统是双向传输,则还包括:第五编码单元,用于所述第二传输方采用TLV编码方式对待传输的第二原始数据进行编码,生成TLV数据;第五加密单元,用于所述第二方采用所述第二密钥对中的所述另一密钥对所述TLV数据进行加密处理,生成加密后的TLV数据;第五传输单元,用于将所述加密后的TLV数据向所述第一传输方进行传输;第五解密单元,用于所述第一传输方采用所述第二密钥对中的所述一密钥对来自所述第二传输方的TLV数据进行解密;第五解码单元,用于对所述解密后的TLV数据进行解码,获得传输的第二原始数据。
为了节约流量,提高消息,所述系统还包括:压缩单元,用于在对所述TLV数据进行加密处理之前或之后对所述TLV数据进行压缩。由于TLV编码方式为每种类型添加额外的Tag和Length字段,由此产生的数据要比原始数据大,所以,如果在传输TLV数据之前对其进行压缩,比如使用Huffman(哈夫曼编码)或者Gzip(GNUzip的缩写,一种文件压缩程序)方式进行压缩,进而可以节约带宽,提升传输速度。
更了更进一步的减少传输数据量,编码单元810,可以具体用于采用TLV编码方式对待传输的原始数据进行编码,在所述编码过程中不对Length长度字段进行编码,生成TLV数据,所述TLV数据中不包括Length长度字段。此外,还可以缩减tag的长度,例如,缩减为8bits(比特)。
具体而言,传统的TLV,Tag(用于标识数据的类型)、Length的长度是固定的(主要是为了编程方便),实际上如果tag的类型有限,并且有一些tag对应的数据长度如果是固定的话,那么tag和length可以进一步缩减,以节约流量。采取上述这种缩减tag长度或者不对length编码的新型TLV编码方式,对接收方进行解码也是没有问题的。因为每种类型的数据长度基本是固定的,因此接收方从tag中读出数据类型,便能够知道该类型的数据长度是多少进而解码时就知道要解码到多长。可见,采取上述这种新型的TLV编码方式,更能够节约传输的流量,提高了传输效率。
通过以上的实施例以及具体实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明所提供的一种基于TLV的数据传输方法及系统实施例,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。