发明内容
但是,本发明人在研究过程中发现,在现有技术中,存在两种常用的密钥分发方式。其中一种常用的方式是:服务器端为每一个客户端生成的密钥具有一定长度的生命周期。对于每一个客户端来说,在该密钥的生命周期内,该客户端可以重复使用该密钥与服务器端进行通信。而一旦该密钥的生命周期终止,服务器端就会立刻丢弃该密钥,并为该客户端重新生成另一个具有生命周期的密钥。另一种常用的方式是:服务器端为每一个客户端生成的密钥并不具有一定长度的生命周期,而是只能被使用一次。也就是说,对于每一个客户端来说,该客户端仅可以使用一次该密钥与服务器端进行通信。而一旦该密钥被该客户端和服务器端使用一次后,服务器端就会立刻丢弃该密钥,并为该客户端重新生成另一个新的密钥。
依照现有技术,当采用第一种密钥分发方式时,由于客户端和服务器会在密钥的生命周期内重复使用该密钥进行通信,因此,该密钥在其生命周期内很有可能会被窃取甚至攻破,从而会对安全造成威胁。当采用第二种密钥分发方式时,显然,由于密钥只能被使用一次,也就是说,其生命周期非常短暂,因此,该密钥被窃取和攻破的可能性非常的小,进而也就具有很高的安全性。但是,这种安全性的提高是以牺牲了每个密钥的使用率为代价而换取来的,而密钥的使用率低会导致服务器端需要频繁地为每个客户端生成新的密钥,这会大量地消耗服务器端的计算资源。特别是对于一些保密性好的密钥,服务器端一般会需要花费很长时间才能生成一个这样的密钥,例如,RSA 1024的生成时间在1s左右,RSA 2048的生成时间会更长,可见,这种密钥的生成过程会显著地增加服务器端的工作压力。
为此,非常需要一种密钥分发方法和设备,以解决现有技术中由于密钥分发不合理而导致的在满足安全性的同时,就无法节约服务器端的计算资源的问题。
在本上下文中,本发明的实施方式期望提供一种密钥分发方法和设备。
在本发明实施方式的第一方面中,提供了一种密钥分发方法,包括:
a)、接收客户端发送的对象标识;
b)、判断在当前有效的密钥中是否存在未被所述对象标识指示的密钥分发对象使用过的密钥;
c)、如果在当前有效的密钥中存在未被所述对象标识指示的密钥分发对象使用过的密钥,从未被所述对象标识指示的密钥分发对象使用过的密钥中选择一个密钥;
d)、将所选择的密钥发送给所述客户端;
其中,所述当前有效的密钥为在当前没有超过预设的生命周期的密钥。
在本发明实施方式的第二方面中,提供了一种密钥分发设备,包括:
接收单元,用于接收客户端发送的对象标识;
判断单元,用于判断在当前有效的密钥中是否存在未被所述对象标识指示的密钥分发对象使用过的密钥;
选择单元,用于如果在当前有效的密钥中存在未被所述对象标识指示的密钥分发对象使用过的密钥,从未被所述对象标识指示的密钥分发对象使用过的密钥中选择一个密钥;
第一发送单元,用于将所选择的密钥发送给所述客户端;
其中,所述当前有效的密钥为在当前没有超过预设的生命周期的密钥。
在本发明实施方式中,在一个密钥的生命周期内,将该密钥随机分配给不同的密钥分发对象而不是同一个密钥分发对象,在这种情况下,对于每一个密钥分发对象来说,由于每个密钥都仅被该密钥分发对象使用一次,因此,可以降低密钥在其使用过程中被窃取和攻破的可能性。而对于每一个密钥来说,由于其是具有一定的生命周期的,因此,服务器端并不需要频繁地为密钥分发对象生成新的密钥,减少了对服务器端的计算资源的消耗,减轻了服务器端的工作压力。因此,既可以满足安全性的要求,也节约了服务器端的计算资源,减轻了服务器端的压力。例如,上述密钥分发对象可以为客户端。
发明概述
本发明人发现,在现有的第一种密钥分发方式中,密钥是具有一定的生命周期的,并且,当密钥分发给某一个客户端后,在该密钥的生命周期内,该客户端可以重复地使用该密钥与服务器端进行通信。而密钥在一个生命周期内有可能被窃取甚至攻破,进而会对安全造成威胁。而在现有的第二种密钥分发方式中,虽然缩短了密钥的生命周期,即,密钥被分发给某一个客户端后,该客户端只使用一次该密钥与服务器端进行通信,使用一次后,该密钥就被服务器丢弃。由于密钥的生命周期非常短暂,可以降低密钥在其使用过程中被窃取和攻破的可能性。但是,密钥的使用率非常低,服务器端需要频繁地为客户端生成新的密钥,从而会极大地消耗服务器端的计算资源,增加服务器端的工作压力。
如果在保证密钥具有一定的生命周期的前提下,而在该密钥的生命周期内,将密钥随机分配给不同的客户端而不是同一个客户端,在这种情况下,对于每一个客户端来说,由于每个密钥都仅被该客户端使用一次,因此,可以降低密钥在其使用过程中被窃取和攻破的可能性。而对于每一个密钥来说,由于其是具有一定的生命周期的,在其生命周期内,可以被多个不同的客户端使用,因此,服务器端并不需要频繁地为客户端生成新的密钥,减少了对服务器端的计算资源的消耗,减轻了服务器端的工作压力。因此,既可以满足安全性的要求,也节约了服务器端的计算资源,减轻了服务器端的压力。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,图1示意性地示出了本发明的实施方式可以在其中实施的示例性应用场景。其中,服务器20生成密钥R,密钥R具有其生命周期。在密钥R的生命周期内,如果客户端10A向服务器20发送一个密钥分发请求消息11A,用于请求服务器20为客户端10A上的密钥分发对象30A分发一个密钥,作为响应,服务器20先查看是否已经为客户端10A上的密钥分发对象30A分发过密钥R,如果没有分发过密钥R,服务器20向客户端10A发送一个携带密钥R的密钥分发响应消息21A。对于密钥分发对象30A的明文信息31,客户端10A利用该密钥R对该明文信息31进行加密,然后将加密后的密文信息31R发送给服务器20,服务器20利用密钥R对密文信息31R进行解密,获得解密后的明文信息31。如果客户端10B向服务器20发送一个密钥分发请求消息11B,用于请求服务器20为客户端10B上的密钥分发对象30B分发一个密钥,作为响应,服务器20先查看是否已经为客户端10B上的密钥分发对象30B分发过密钥R,如果没有分发过密钥R,服务器20向客户端10B发送一个携带密钥R的密钥分发响应消息21B。对于密钥分发对象30B的明文信息32,客户端10B利用密钥R对明文信息32进行加密,然后将加密后的密文信息32R发送给服务器20,服务器20利用密钥R对密文信息32R进行解密,获得解密后的明文信息32。服务器20可以是Web服务器,也可以是其他类型的服务器,例如APP服务器。客户端可以是智能手机、平板电脑或个人电脑等上安装的应用软件,例如iOS客户端、安卓客户端、PC客户端。密钥分发对象可以是客户端的某个具体服务或功能。本领域技术人员可以理解,图1所示的示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的应用范围不受到该框架任何方面的限制。例如,密钥分发对象可以是客户端本身。
示例性方法
下面结合图1的应用场景,参考图2来描述根据本发明示例性实施方式的、用于密钥分发方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
请参阅图2,其示意性地示出了根据本发明的一个实施方式的密钥分发方法的流程图,方法具体例如可以包括:
步骤201:接收客户端发送的对象标识。
步骤202:判断在当前有效的密钥中是否存在未被所述对象标识指示的密钥分发对象使用过的密钥,如果是,进入步骤203。
步骤203:从未被所述对象标识指示的密钥分发对象使用过的密钥中选择一个密钥。
步骤204:将所选择的密钥发送给所述客户端。
其中,所述当前有效的密钥为在当前不超过预设的生命周期的密钥。
可以用使用时间来限定密钥的生命周期,如,生命周期为1个小时的使用时间,也可以用使用次数(次数要大于1,否则与现有的每个密钥只使用一次相同了)来限定密钥的生命周期,如,生命周期为10个使用次数。
例如,当预设的生命周期为1个小时时,每当生成一个新的密钥后,监测该密钥自生成开始到当前为止的存活时间是否超过一个小时,如果没有超过1一个小时,说明该密钥为当前有效的密钥,如果超过1个小时,说明该密钥为当前无效的密钥。
当预设的生命周期为10个使用次数时,监测该密钥自生成开始到当前为止的使用次数是否超过预设的使用次数,如果没有超过,说明该密钥为当前有效的密钥,如果超过,说明该密钥为当前无效的密钥。
当然,也可以同时用使用时间和使用次数来限定密钥的生命周期,即,为密钥预设一个使用时间上限值和一个使用次数上限值,并同时监测密钥在当前的使用时间是否超过预设的使用时间上限值和在当前的使用次数是否超过预设的使用次数上限值,如果都没有超过,说明该密钥为当前有效的密钥,否则,如果任意一个超过,说明该密钥为当前无效的密钥。
如果经过判断后,确定存在多个当前有效的密钥,可以从中任意选择一个密钥发送给客户端。但是,考虑到如果重复地选择出同一个当前有效的密钥发送给不同的客户端,就有可能会出现在一段时间内,所有的客户端都使用同一个当前有效的密钥的情况,这种情况也会给安全带来一定的影响,为了避免这种情况的出现,优选的方式是,从中选择一个当前距离上一次被选择的时间最长的一个密钥发送给客户端,避免出现重复地选择同一个当前有效的密钥的问题。
当然,对于当前无效的密钥,由于当前无效的密钥不会再被发送给客户端使用,因此,在本发明的一个优选实施方式中,上述方法还包括:删除当前无效的密钥,其中,所述当前无效的密钥为在当前已超过预设的生命周期的密钥。
在确定一个密钥为当前无效的密钥时,有可能某一个客户端仍然在使用该密钥与服务器端进行通信,如果服务器端立刻删除该密钥,就会导致服务器端无法正常对客户端发送的密文信息进行解密。因此,在本发明的另一个优选实施方式中,例如,如图3所示,可以通过如下方式删除当前无效的密钥:
步骤301:判断所述当前无效的密钥的无效时间是否超过预设的时间阈值,如果是,进入步骤302,否则,返回步骤301。
步骤302:删除所述当前无效的密钥。
可以理解的,当确定一个密钥为当前无效的密钥时,可以间隔一段时间后(例如,间隔的一段时间可以为10分钟)再删除该密钥,而不是立刻删除该密钥。以防止服务器端无法正常对客户端发送的密文信息进行解密。
此外,为了保证通信的安全性,在本发明的一个优选实施方式中,上述密钥为非对称密钥对。
其中,非对称密钥对包括一个用于加密的公钥以及一个用于解密的私钥。在上述步骤204中,是将所选择的非对称密钥对中的公钥发送给客户端,以便客户端在与服务器端进行通信时,先利用该公钥对明文信息进行加密,再将加密后的密文信息发送给服务器端。服务器端利用私钥对密文信息进行解密,得到解密后的明文信息。当然,在上述步骤204中,也可以将所选择的非对称密钥对中的私钥发送给客户端,以便客户端在与服务器端进行通信时,能够对服务器端利用公钥对明文信息进行加密后发送给客户端的密文信息,利用私钥进行解密,得到解密后的明文信息。
在本发明的另一个优选实施方式中,如果上述步骤202的判断结果为否,也就是说,如果在当前有效的密钥中不存在未被对象标识指示的密钥分发对象使用过的密钥,为所述对象标识指示的密钥分发对象生成一个新的且具有预设的生命周期的密钥;将生成的所述密钥发送给客户端。
在本发明的另一个优选实施方式中,上述方法还包括:在删除当前无效的密钥后,生成新的且具有预设的生命周期的密钥,以便随后可以发送给新的密钥分发对象。
需要说明的是,用于指示密钥分发对象的“对象标识”可以为客户端的唯一性标识、客户端用户的唯一性标识、客户端所在机器的IP(互联网协议,Internet Protocol)地址以及客户端所在机器的MAC(介质访问控制,Media Access Control)地址中的任意一个或任意多个的组合。
当对象标识为客户端的唯一性标识时,粒度为客户端。当对象标识为客户端用户的唯一性标识时,粒度为用户。当对象标识为客户端所在机器的MAC地址时,粒度为客户端所在机器。当对象标识为客户端所在机器的IP地址时,粒度为客户端所在机器的所属网段。
也就是说,作为一个例子,当对象标识为客户端的唯一性标识时,当同一个用户使用不同的客户端,例如iOS客户端、安卓客户端或PC客户端,与服务器通信时,服务器可能会分配给该同一个用户相同的密钥;当对象标识为客户端用户的唯一性标识时,当同一个用户使用不同的客户端,例如iOS客户端、安卓客户端或PC客户端,与服务器通信时,服务器肯定会分配给该同一个用户不相同的密钥。
其中,客户端的唯一性标识可以是根据客户端所在机器的IP地址、客户端所在机器的MAC地址、客户端所在机器的机器名、随机数和客户端的安装时间、以及客户端的UUID(通用唯一标识码,Universally UniqueIdentifier)中的任意一个或任意多个组合生成的标识。
根据本发明,在一个密钥的生命周期内,将该密钥随机分配给不同的密钥分发对象而不是同一个密钥分发对象,在这种情况下,对于每一个密钥分发对象来说,由于每个密钥都仅被该密钥分发对象使用一次,因此,可以降低密钥在其使用过程中被窃取和攻破的可能性。而对于每一个密钥来说,由于其是具有一定的生命周期的,因此,服务器端并不需要频繁地为密钥分发对象生成新的密钥,减少了对服务器端的计算资源的消耗,减轻了服务器端的工作压力。因此,既可以满足安全性的要求,也节约了服务器端的计算资源,减轻了服务器端的压力。例如,上述密钥分发对象可以为客户端。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图4来描述根据本发明示例性实施方式的、用于密钥分发的设备。
参考图4,其示意性地示出了根据本发明一个实施方式的密钥分发设备的结构框架图,具体地,该设备例如可以包括:
接收单元401,用于接收客户端发送的对象标识;
判断单元402,用于判断在当前有效的密钥中是否存在未被所述对象标识指示的密钥分发对象使用过的密钥;
选择单元403,用于如果在当前有效的密钥中存在未被所述对象标识指示的密钥分发对象使用过的密钥,从未被所述对象标识指示的密钥分发对象使用过的密钥中选择一个密钥;
第一发送单元404,用于将所选择的密钥发送给所述客户端;
其中,所述当前有效的密钥为在当前没有超过预设的生命周期的密钥。
在本发明的一个优选实施方式中,如图5所示,该设备还包括:
第一生成单元405,用于如果在当前有效的密钥中不存在未被所述对象标识指示的密钥分发对象使用过的密钥,为所述对象标识指示的密钥分发对象生成一个新的且具有预设的生命周期的密钥;
第二发送单元406,用于将生成的所述密钥发送给所述客户端
在本发明的另一个优选实施方式中,该设备还包括:删除单元,用于删除当前无效的密钥;其中,所述当前无效的密钥为在当前已超过预设的生命周期的密钥。
在本发明的另一个优选实施方式中,如图6所述,删除单元包括:
判断子单元601,用于判断所述当前无效的密钥的无效时间是否超过预设的时间阈值;
删除子单元602,用于如果所述当前无效的密钥的无效时间超过预设的时间阈值,删除所述当前无效的密钥;
触发子单元603,用于如果所述当前无效的密钥的无效时间不超过预设的时间阈值,触发所述判断子单元重新进行判断。
在本发明的另一个优选实施方式中,该设备还包括:第二生成单元,用于在删除当前无效的密钥后,生成新的且具有预设的生命周期的密钥,以便随后可以分发给新的密钥分发对象。
在本发明的另一个优选实施方式中,所述对象标识为客户端的唯一性标识、客户端用户的唯一性标识、客户端所在机器的MAC地址以及客户端所在机器的IP地址中的任意一个或任意多个的组合。
在本发明的另一个优选实施方式中,所述密钥为非对称密钥对。
根据本发明,在一个密钥的生命周期内,将该密钥随机分配给不同的密钥分发对象而不是同一个密钥分发对象,在这种情况下,对于每一个密钥分发对象来说,由于每个密钥都仅被该密钥分发对象使用一次,因此,可以降低密钥在其使用过程中被窃取和攻破的可能性。而对于每一个密钥来说,由于其是具有一定的生命周期的,因此,服务器端并不需要频繁地为密钥分发对象生成新的密钥,减少了对服务器端的计算资源的消耗,减轻了服务器端的工作压力。因此,既可以满足安全性的要求,也节约了服务器端的计算资源,减轻了服务器端的压力。例如,上述密钥分发对象可以为客户端。
应当注意,尽管在上文详细描述中提及了密钥分发设备的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。