一种安全通信系统及方法
技术领域
本发明涉及软件反破解和授权管理领域,具体涉及一种安全通信系统及方法。
背景技术
在软件破解和授权管理领域中,存在如下需求:当不同用户使用同一客户端但使用不同用户认证信息与服务器通信时,用户不能窃听或篡改其它用户通信数据;用户不能在不同物理终端一号多开;用户之间不能进行身份仿冒;会话协商和加解密必须高效。然而,现有技术中并没有能够很好的满足上述需求的成型方案。
发明内容
本发明的目的在于提供一种安全通信系统及方法,其能够实现客户端业务模块与服务器的安全通信。
为了实现上述目的,本发明一方面提供了一种安全通信系统中的客户端,其中所述安全通信系统包括所述客户端和服务器,所述客户端包括:第一通道密钥获取模块,其获取用于与所述服务器进行通信的第一通道密钥;以及
一个以上的业务模块,所述一个以上的业务模块中的每一个均包括:
第一业务密钥生成模块,其与所述服务器进行业务级密钥协商,以生成用于所述业务模块和所述服务器的相应业务处理服务模块之间的会话的专用业务密钥;以及
第一加解密模块,其使用所述专用业务密钥和所述第一通道密钥对所述会话过程中的通信数据进行加解密。
优选地,所述第一通道密钥获取模块可以具体配置为:
基于所述客户端预先持有的用于与所述服务器通信的第一初始密钥,利用密钥协商算法与所述服务器进行密钥协商,以生成所述第一通道密钥。
作为选择,所述第一通道密钥获取模块也可以具体配置为:获取所述客户端预先持有的用于与所述服务器通信的第一初始密钥,作为所述第一通道密钥,其中所述第一通道密钥包括客户端公钥、客户端私钥、服务器公钥。
在一优选实施例中,所述第一业务密钥生成模块包括:
会话协商信息生成模块,其用于生成会话协商信息,对所述会话协商信息利用所述第一通道密钥加密后发送给所述服务器,其中所述会话协商信息包括所述业务模块的身份标识信息、客户端身份描述信息、第一时间戳T1、随机数R1;
应答信息接收模块,其用于接收并利用所述第一通道密钥解密经所述服务器对所述会话协商信息进行处理后所生成的包含所述专用业务密钥、会话ID和第二时间戳T2的应答信息;以及
第一判断模块,其判断所述第二时间戳是否为旧数据,如果为否,则判定所述应答信息是可信的;并且
所述第一加解密模块相应配置为使用所述专用业务密钥和所述第一通道密钥对所述会话过程中的通信数据进行加解密。
优选地,所述业务模块的身份标识信息包括用户名和密码;所述客户端身份描述信息包括所述客户端的计算机MAC、网卡MAC和/或CPUID。
本发明另一方面还提供了一种安全通信系统,其特征在于,包括上述的第一实施例中的客户端和服务器,所述服务器包括:
第二通道密钥获取模块,其获取用于与所述客户端进行通信的第二通道密钥;
第二业务密钥生成模块,其与所述客户端进行业务级密钥协商,以生成用于所述业务模块与所述服务器的相应业务处理服务模块之间的会话的所述专用业务密钥;以及
第二加解密模块,其使用所述专用业务密钥和所述第二通道密钥对所述会话过程中的通信数据进行加解密。
优选地,所述第二通道密钥获取模块可以具体配置为:
基于所述服务器预先持有的用于与所述客户端通信的第二初始密钥,利用密钥协商算法与所述客户端进行密钥协商,以生成所述第二通道密钥,其中所述第二通道密钥与所述第一通道密钥互为对称密钥。
作为选择,所述第二通道密钥获取模块也可以具体配置为:获取所述服务器预先持有的用于与所述客户端通信的第二初始密钥,作为所述第二通道密钥,其中所述第二通道密钥包括服务器公钥、服务器私钥、客户端公钥。
本发明的再一个方案中,提供了一种安全通信系统,该系统包括上述一优选实施例中的客户端和上述的服务器,所述第二业务密钥生成模块相应地包括:
会话协商信息接收模块,其接收并利用所述第二通道密钥解密所述会话协商信息;
认证模块,其对所述业务模块的身份标识信息进行认证,如果通过认证,则触发绑定模块;
所述绑定模块,其在未查找到所述业务模块的绑定记录的情况下,利用所述客户端身份描述信息添加一个将所述业务模块与所述客户端绑定的绑定记录,并触发第二判断模块;
所述第二判断模块,其判断第一时间戳T1是否为旧数据,如果为否,则触发应答信息生成模块;以及
所述应答信息生成模块,其对随机数R1进行简单运算,将运算结果KT1作为所述专用业务密钥,并任选一个未曾作为会话ID的数S1作为会话ID,生成第二时间戳T2,并将包含KT1、S1和T2的所述应答信息利用所述第二通道密钥加密后发送给所述业务模块。
本发明还提供了一种安全通信方法,包括:
客户端、服务器分别获取用于两者之间通信的第一、第二通道密钥;
所述客户端的一个业务模块与所述服务器进行业务级密钥协商,以生成用于所述业务模块与所述服务器的相应业务处理服务模块之间的会话的专用业务密钥;
所述业务模块使用所述专用业务密钥和所述第一通道密钥对所述会话过程中的通信数据进行加解密;以及
所述服务器使用所述专用业务密钥和所述第二通道密钥对所述会话过程中的通信数据进行加解密。
优选地,所述客户端、服务器分别获取用于两者之间通信的第一、第二通道密钥可以具体包括:
所述客户端和所述服务器基于各自预先持有的用于两者之间通信的第一、第二初始密钥,利用密钥协商算法进行密钥协商,以生成所述第一、第二通道密钥;优选地,所述第一、第二通道密钥互为对称密钥。
作为选择,所述客户端、服务器分别获取用于两者之间通信的第一、第二通道密钥也可以具体包括:
所述客户端和所述服务器将各自预先持有的用于两者之间通信的第一、第二初始密钥分别作为所述第一、第二通道密钥;优选地,所述第一通道密钥包括客户端公钥、客户端私钥、服务器公钥,所述第二通道密钥包括服务器公钥、服务器私钥、客户端公钥。
在一优选实施例中,所述进行业务级密钥协商可以具体包括:
所述业务模块生成会话协商信息,对所述会话协商信息利用所述第一通道密钥加密后发送给所述服务器,其中所述会话协商信息包括所述业务模块的身份标识信息、客户端身份描述信息、第一时间戳T1、随机数R1;
所述服务器接收并利用所述第二通道密钥解密所述会话协商信息;所述服务器对所述会话协商信息包含的所述业务模块的身份标识信息进行认证,如果通过认证,则查找是否存在所述业务模块的绑定记录;在未查找到所述业务模块的绑定记录的情况下,所述服务器利用所述客户端身份描述信息添加一个将所述业务模块与所述客户端绑定的绑定记录;
所述服务器判断第一时间戳T1是否为旧数据,如果为否,则对随机数R1进行简单运算,将运算结果KT1作为所述专用业务密钥,任选一个未曾作为会话ID的数S1作为会话ID,生成第二时间戳T2,并将包含KT1、S1和T2的应答信息利用所述第二通道密钥加密后发送给所述业务模块;
所述业务模块接收并利用所述第一通道密钥解密所述应答信息,获得KT1、S1和T2。
优选地,该方法还包括:判断T2是否为旧数据,如果为否,则判定KT1是可信的,并将KT1作为所述专用业务密钥。
优选地,所述会话过程中的所述通信数据包括S1和T2。
根据本发明提供的安全通信系统、客户端以及安全通信方法,客户端的每一个业务模块均可与服务器协商得到用于其与服务器的相应业务处理服务模块之间的会话的专用业务密钥,并使用专用专务密钥、通道密钥进行双重加密,很好地保障了业务模块之间彼此不能窃听到对方的通信数据,实现了客户端业务模块与服务器的安全通信。
附图说明
图1示出了本发明的客户端与服务器的安全通信体系的结构示意图。
图2示出了本发明实施例的安全通信系统的结构示意图。
图3示出了本发明一优选实施例的安全通信方法的流程示意图。
具体实施方式
为使本领域技术人员更好地理解本发明,下面参照附图对本发明的实施例进行详细说明。
体系描述
在本发明中,首先构建客户端与服务器的安全通信体系,客户端与服务器之间具有通道层和业务层的两层通信模型,其中通道层被理解为客户端与服务器之间的通信信道;业务层被理解为客户端的业务模块与服务器的相应业务处理服务模块之间的通信所建立的信道(虚拟信道),在本发明中,通过通道层(外层)和业务层(内层)的双层加密,能够很好地保证客户端的业务模块与服务器之间的安全通信,并确保其他终端或客户端的其他业务模块不能仿冒连接。
详细地,如图1所示,A端相当于客户端,其具有软件平台SS,SS里有多个应用APP,每一个应用APP相当于一个业务模块。B端相当于服务器,具有业务处理服务TBS。SS与B端利用通道密钥加密(外层加密,外层-通道层C),通道密钥可利用密钥协商算法得到。SS里的业务模块APP与B端协商加密通道(内层-业务层T),得到专用业务密钥。
在描述了本发明所基于的安全通信体系结构的基础上,下面具体描述本发明实施例的一种安全通信系统,如图2所示,图2为本发明实施例的安全通信系统的结构示意图。该系统包括客户端和服务器。
其中,客户端包括:
第一通道密钥获取模块,其获取用于与服务器进行通信的第一通道密钥;以及
一个以上的业务模块,一个以上的业务模块中的每一个均包括:
第一业务密钥生成模块,其与服务器进行业务级密钥协商,以生成用于业务模块和服务器的相应业务处理服务模块之间的会话的专用业务密钥;以及
第一加解密模块,其使用专用业务密钥和第一通道密钥对会话过程中的通信数据进行加解密。
其中,服务器包括:
第二通道密钥获取模块,其获取用于与客户端进行通信的第二通道密钥;
第二业务密钥生成模块,其与客户端进行业务级密钥协商,以生成用于业务模块与服务器的相应业务处理服务模块之间的会话的专用业务密钥;以及
第二加解密模块,其使用专用业务密钥和第二通道密钥对会话过程中的通信数据进行加解密。
通过本发明实施例的安全通信系统,客户端的每一个业务模块均可与服务器协商得到用于其与服务器的相应业务处理服务模块之间的会话的专用业务密钥,并使用专用专务密钥、通道密钥进行双重加密,很好地保障了业务模块之间彼此不能窃听到对方的通信数据,实现了客户端业务模块与服务器的安全通信。
其中,客户端的第一通道密钥获取模块可具体配置为:基于客户端预先持有的用于与服务器通信的第一初始密钥,利用密钥协商算法与服务器进行密钥协商,以生成第一通道密钥。并且,服务器的第二通道密钥获取模块可相应地具体配置为:基于服务器预先持有的用于与客户端通信的第二初始密钥,利用密钥协商算法与服务器进行密钥协商,以生成第二通道密钥,其中第二通道密钥与第一通道密钥互为对称密钥。
可以使用诸如DH算法的现有密钥协商算法来进行密钥协商。当使用DH算法时,能够获得成对的通道密钥,即互为对称密钥的第一通道密钥和第二通道密钥。第一初始密钥、第二初始密钥可以是对称密钥也可以是非对称密钥,在为非对称密钥的情况下,客户端持有的第一初始密钥包括客户端公钥、客户端私钥、服务器公钥,服务器持有的第二初始密钥包括服务器公钥、服务器私钥、客户端公钥,可基于上述初始密钥进行会话协商,会话协商发送的数据可以使用诸如ECC或RSA等加密算法。
作为选择,客户端的第一通道密钥获取模块也可以具体配置为:获取客户端预先持有的用于与服务器通信的第一初始密钥,作为第一通道密钥,其中第一通道密钥包括客户端公钥、客户端私钥、服务器公钥。服务器的第二通道密钥获取模块可以相应地具体配置为:获取服务器预先持有的用于与客户端通信的第二初始密钥,作为第二通道密钥,其中第二通道密钥包括服务器公钥、服务器私钥、客户端公钥。
实施例中,客户端的业务模块与服务器进行业务级密钥协商可使用现有密钥协商算法。在本发明的优选实施例中,客户端的业务模块与服务器进行业务级密钥协商使用了自定义的密钥协商算法,将使得业务层会话协商具有高安全性和高速度,这将在下文阐述的优选实施例中得以很好地体现。
在该优选实施例的安全通信系统中,客户端的第一业务密钥生成模块包括:
会话协商信息生成模块,其用于生成会话协商信息,对会话协商信息利用第一通道密钥加密后发送给服务器,其中会话协商信息包括业务模块的身份标识信息、客户端身份描述信息、第一时间戳T1、随机数R1;
应答信息接收模块,其用于接收并利用第一通道密钥解密经服务器对会话协商信息进行处理后所生成的包含专用业务密钥、会话ID和第二时间戳T2的应答信息;以及
第一判断模块,其判断第二时间戳是否为旧数据,如果为否,则判定应答信息是可信的;并且
加解密模块相应使用专用业务密钥和第一通道密钥对会话过程中的通信数据进行加解密。
服务器相应地包括:
会话协商信息接收模块,其接收并利用第二通道密钥解密会话协商信息;
认证模块,其对业务模块的身份标识信息进行认证,如果通过认证,则触发绑定模块;
绑定模块,其在未查找到业务模块的绑定记录的情况下,利用客户端身份描述信息添加一个将业务模块与客户端绑定的绑定记录,并触发第二判断模块;
第二判断模块,其判断第一时间戳T1是否为旧数据,如果为否,则触发应答信息生成模块;以及
应答信息生成模块,其对随机数R1进行简单运算,将运算结果KT1作为专用业务密钥,任选一个未曾作为会话ID的数S1作为会话ID,生成第二时间戳T2,并将包含KT1、S1和T2的应答信息利用第二通道密钥加密后发送给业务模块。
在本发明上述优选实施例中协商生成的专用业务密钥,其具有高安全性,并且经测试,密钥协商的速度高于现有密钥协商算法,契合软件反破解和授权管理领域的实际应用的需要。
在下文中,将参照图3,详细阐述本发明一优选实施例的安全通信方法。本实施例中,假定应用场景为:业务层记做T层,通道层记做C层;A端作为客户端,具有身份认证信息AA(身份描述信息,如计算机MAC,网卡MAC CPUID等),以用于B端识别A端的身份;B端作为服务器。
在C层,A端持有ECC私钥PRKCA、ECC公钥PUKCA;在C层持有ECC私钥PRKCB,ECC公钥PUKCB,并且在C层,A端还具有PUKCB,B端还具有PUKCA(即,它们彼此具有对方公钥)。
在T层,A端有多个业务模块,如业务模块1(记做TA1)、业务模块2(记做TA2)等,B端有与A端各业务模块相应的业务处理服务TBS。具体来说,就是每个客户端业务有自己对应的服务器端过程(即请求-响应过程),比如业务模块1是查火车票,服务器端(业务处理服务1)就是返回火车票信息。
A端与B端的安全通信方法,步骤如下:
1)A端与B端利用DH算法进行C层会话协商,生成成对通道密钥KC作为通道密钥,会话协商时发送的数据以PUKCA/PRKCA和PUKCB/PRKCB为密钥对利用ECC算法进行加解密;
2)TA1生成T层会话协商信息TInfo,TInfo包括:TA1的身份标识(比如用户名和密码),AA(A端身份描述信息),时间戳T1,TA1生成的随机数R1,共四部分;
3)TA1以KC为密钥对TInfo进行加密,发送给TBS;其中优选使用AES算法进行加密,AES算法是常见的密码学加解密算法,其优点是执行速度快;
4)TBS以KC为密钥使用AES算法对收到的数据进行解密,得到TInfo;
5)TBS对TA1的身份标识进行认证,如果认证通过,则通过AA把TA1和A端进行绑定,绑定的具体做法是:判断是否已有TA1的绑定记录,如果有该记录,则不运行TA1和A端进行绑定;当没有TA1的绑定记录时利用AA将TA1和A端进行绑定,即添加一个绑定记录,该记录中包含TA1与AA的信息;一旦存在这样的绑定记录,B端将不会运行将TA1与其他物理终端进行绑定,从而可以防止用户在不同物理终端一号多开的情况;
6)TBS通过时间戳T1判断TInfo是否是旧数据,如果是旧数据停止协商密钥,否则,执行步骤7);
7)TBS把TInfo中R1进行+1等简单运算,运算结果作为TA1与TBS间的专用业务密钥KT1,同时任选一个未曾作为会话ID的数作为TA1与TBS间的会话ID,记做S1;
8)TBS以KC为密钥,把KT1、S1、当前生成的时间戳T2组成的信息,记做应答信息TReply,进行AES加密,发送给TA1;
9)TA1使用KC对TReply进行解密,得到KT1、S1和时间戳T2,通过得到时间戳T2进行旧数据判断;如果是旧数据,则认为本次密钥协商数据可能泄露,执行诸如停止协商密钥的处理;如果判断出不是旧数据,执行步骤10);
10)此后TA1与TBS之间的通信的数据需包含S1和时间戳T2,并用KT1进行AES加密,再用KC进行AES加密,解密时先使用KC进行AES解密,再用KT1进行AES解密(这两次加密,S1和时间戳T2都在加密范围内)。
11)TA1退出时,直接关闭网络通道,TBS清理TA1和A端的绑定记录,并把S1从使用记录中删除,使KT1失效。
上述时间戳,除非是网络上收到的,否则皆是每次取当前时间重新生成的。
TA2与TBS通信,也参照上述流程进行。在一个实施例中,TA2与TBS直接进行业务级密钥协商,也就是通道密钥使用现有的就可以。根据上述流程,TA2显然无法仿冒TA1。
本发明的上述优选实施例给出了一种安全通信方法能够很好地契合软件反破解和授权管理领域的需要,既能够防止不同用户使用同一客户端(业务模块)时窃听或篡改其它用户通信数据,也能够防止一业务模块的数据信息被另一业务模块所窃听或篡改,还能够防止用户在不同物理终端一号多开;以及并且本优选实施例的会话协商和加解密都是高效的。
本发明不局限于上述特定实施例,在不背离本发明精神及其实质情况下,熟悉本领域的技术人员可根据本发明作出各种相应改变和变形,但这些相应改变和变形都应属于本发明所附权利要求的保护范围之内。