具体实施方式
现在参照附图描述本发明的各种实施例,其中相同参考编号指示相同或功能相似的单元。如此处的附图中所广泛描述和图解的,可以将本发明的实施例设置和设计为具有多种不同的配置。因此,如在图中所表现的,下面对本发明若干示例性实施例的更为详细的描述不是要限定如所要求保护的本发明的范围,而仅是本发明的实施例的代表。
“示例性”一词在此处专门用来表示“用作例子、实例或例证”的意思。任何在此描述为“示例性”的实施例不一定被解释为是优选的或优于其它实施例。
此处所公开的实施例的许多特征可以作为计算机软件、电子硬件或两者的结合被实现。为了清楚地说明硬件和软件的可互换性,将从其功能的方面对各种部件进行广泛地描述。这种功能以硬件还是软件的形式实现取决于具体的应用和整体系统的设计限制。本领域技术人员可以就每个具体的应用以不同的方式实施所描述的功能,但这种实施决定不应被解释为导致了脱离本发明的范围的内容。
如果所描述的功能被作为计算机软件实现,这种软件可以包括位于存储设备内的和/或作为电子信号在系统总线或网络上传输的任何类型的计算机指令或计算机可执行代码。实现与此处所描述的部件相关的功能的软件可以包括单个指令或许多指令,并且可以被分配在若干不同的代码段、不同的程序和若干存储设备。
除非另外明确指定,如在此所使用的,“一实施例”、“实施例”、“多个实施例”、“该实施例”、、“该多个实施例”、“一个或更多个实施例”、“一些实施例”、“某些实施例”、“一个实施例”、“另一个实施例”等等表示“所公开的发明的一个或更多个(但不一定是全部)实施例”的意思。
“确定”(及其语法变型)被用于极广泛的含义。“确定”包含多种行为,因此“确定”可以包括计算(calculating)、运算(computing)、处理、推导、研究、查询(例如,查询表、数据库或其它数据结构)、查明等等。并且,“确定”可以包括接收(例如,接收信息)、存取(例如,在存储器中存取数据)等等。并且,“确定”可以包括解决、挑选、选择、建立等等。
除非另外明确指定,“基于”不表示“只基于”的意思。换句话说,“基于”描述“只基于”和“至少基于”。
在安全组播组中,组可以管理用于加密和解密在组成员之间组播的信息的组密钥。在一个实施例中,例如认证服务器的集中式服务器用于控制组的成员。可以从集中式服务器向希望加入该组的节点分配密钥交换密钥(KEK)。该KEK可以允许该节点与组中的节点通信以获得组密钥。
在某些实施例中,当已将节点从组中去除时,KEK可以改变。认证服务器可以假设所去除的节点记得旧的KEK并且可以用它非法地重新加入该组。这意味着可以将改变过的KEK安全地分配给每个现有的组成员。
在一个实施例中,集中式服务器可以不具有将KEK的改变向该组成员组播的能力。因此,每个组成员可以定期检查服务器以保证KEK没有改变,或者在已经发生改变的情况下获得新的KEK。例如,组成员可以向服务器发送更新请求。可能希望随时间分配由多个更新请求导致的服务器上的负载以便使服务器具有均匀的负载。
在以后向服务器发送更新请求时,可以使用指示在先前时间单元服务器上的过去负载的一组参数来帮助负载的均匀分布。可以在每次节点发送更新请求时将这些参数分配给该节点。服务器可以区分由正常更新请求导致的负载和由KEK改变而加快的更新请求所导致的负载。由所加快的更新请求导致的负载可能使该组参数所指示的过去负载的平均值偏斜。
表示在先前时间单元服务器上的过去负载的数据可以辅助节点选择发送更新请求的初始随机时间选择,但是参数覆盖的先前时间单元可能没有延续足够的时间以达到有益的效用。例如,属于特定组的节点的最大请求周期可以包括二十四小时。这可能意味着每个节点每二十四小时向服务器查询一次KEK改变。可能得不到足够的详细信息来预测在下一个二十四小时中特定节点发送更新请求以便使服务器上的负载均匀分布的有效时间。维护这样的详细负载数据信息可能需要服务器具有大量的存储器和计算能力。
图1为图解服务器102向组A 106中的一个或更多节点传达密钥交换密钥(KEK)104的一个实施例的框图。在一个实施例中,服务器102为认证服务器。认证服务器可以是对希望加入组A 106的节点进行认证的服务器。在一个实施例中,服务器102认证节点并且该节点接收KEK 104。节点可以通过使用KEK 104向属于组A 106的其它节点证实其加入组A106的能力来加入组A 106。在一个实施例中,服务器102保持关于组A 106中每个节点的最小状态(Minimal state)。例如,服务器102可以仅保持KEK 104的状态。服务器102可以将KEK 104的改变传达给组A 106中的节点。
如图所示,组A 106包括节点A 108、节点B 110和节点C 112。虽然将组A 106图解为只具有三个节点,应该理解组A 106可以包括更多或更少的节点。组A 106可以被称为安全组播组,因为组A 106中的节点可以安全的方式互相组播信息。例如,可以用共享的组A密钥114将在组A 106的节点间组播的信息加密。节点可以用KEK 104来接收与组A 106相关的组A密钥114。例如,节点N 116可以通过向组A 106的一个或更多节点发送组请求118来请求成为组A 106的成员。组A 106的该一个或更多节点可以确定节点N 116是否包括KEK 104。如果节点N 116包括KEK104,该一个或更多节点可以将组A密钥114分配给节点N 116。组A密钥114可以使节点能够向组A 106中的其它节点发送信息或从组A 106中的其它节点接收信息。节点可以使用组A密钥114将在组A 106的节点间传达的信息加密或解密。
如果节点N 116不具有KEK 104,节点N 116可以向服务器102发送KEK请求120,请求服务器102向节点N 116分配KEK 104。服务器102可以认证节点N 116并分配KEK 104。然而,如果没有将KEK 104分配给节点N 116,则节点N 116不能加入组A 106以及接收组A密钥114。
服务器102、组A 106和节点N 116之间可以通过网络122通信。网络122可以包括任意通信网络,例如但不限于全球通信网、因特网、计算机网络、电话网络、寻呼机网络、蜂窝网络、广域网络(WAN)、局域网络(LAN)等。在一个实施例中,服务器102可以通过网络122管理多组节点并与之通信。服务器102可以分配特定于每个节点组的KEK。
图2为图解服务器202认证节点A208的一个实施例的框图。在一个实施例中,在允许节点A 208加入组A 206之前认证节点A 208。节点A 208可以通过网络222连接向服务器202传达KEK请求230。KEK请求230可以包括请求服务器202分配与组A 206相关的KEK 204。节点A 208可以知道它是第一次加入组A 206还是仅仅向服务器202查询KEK 204的改变。
在一个实施例中,服务器202接收与节点A208相关的证书232。认证器234可以评估证书232并确定是否节点A 208具有加入组A 206的适合的证书。证书232可以包括关于节点A 208的信息,例如互联网协议(IP)地址、媒体访问控制(MAC)地址、计算能力、对共享秘密的了解等。如果认证器234认证通过节点A 208,则服务器202向节点A 208分配KEK204。如前面所说明的,KEK 204可以允许节点A 208接收组A密钥214。组A密钥214可以允许节点A 208向组A 206中的其它节点组播信息。另外,组A密钥214可以允许节点A 208从组A 206中的其它节点接收信息。例如,组A 206的成员可以使用组A密钥214加密和解密向组A 206的成员组播的信息。
节点A 208还可以包括产生向服务器202发送的更新请求的请求生成器226。更新请求可以向服务器202查询KEK 204的改变。在一个实施例中,以使得节点不再能获得与组A 206相关的KEK 204的方式修改服务器202。例如,节点可能已被盗用,修改服务器202以防止被盗用的节点盗用整个组A 206。当如所描述地修改服务器202时,有可能改变KEK204。服务器202可以不向被盗用的节点分配新的、已改变的KEK,因为认证器234现在将不能认证通过被盗用的节点。因此,被盗用的节点不能接收新的、已改变的KEK,也就避免了被盗用的节点随后接收组A密钥214。没有组A密钥214,坏节点被阻止向仍然属于组A 206的节点组播信息或从仍然属于组A 206的节点接收信息。在一个实施例中,在没有组A密钥214的情况下,被盗用的节点不能加密和解密在组A 206的成员之间组播的信息。如果在去除被盗用的节点之后KEK 204没有改变,该被盗用的节点可以重新使用KEK 204来接收组A密钥214并非法地重新加入组A 206(或保持其成员身份)。
在一个实施例中,服务器202包括最大更新参数224。最大更新参数224可以为组A 206所特有。参数224可以指示组A 206中的节点可以信任KEK 204而不向服务器202发送更新请求以检查KEK 204改变的最大时间量。例如,最大更新参数224可以指示二十四小时,建议组A206中的每个节点每二十四小时向服务器202发送一次更新请求。在一个实施例中,当节点第一次被认证通过、接收KEK 204并加入组A 206时,向该节点分配最大更新参数224。在另一个实施例中,在每次节点检查更新的KEK 204时将最大更新参数224分配给该节点。
请求生成器226可以包括随机延迟参数228,随机延迟参数228随机地选择在节点加入组之后生成器226产生并向服务器202发送第一更新请求的时间。随机延迟参数228可以随机地选择小于最大更新参数224的延迟。例如,最大更新参数224可以包括二十四小时。随机延迟参数228可以选择六十分钟。在一个实施例中,请求生成器226在节点A 208被认证通过并接收KEK 204六十分钟之后产生第一个更新请求。然后请求生成器226可以在产生并向服务器202发送第一更新请求二十四小时之后产生并发送后面的更新请求。在一个实施例中,随机延迟参数228减少可能由于同时从多个节点接收多个更新请求而置于服务器202上的负载。
在一个实施例中,所选择的发送第一更新请求的随机时间延迟可以作为一阶随机产生器,这意味着没有关于对何时发送第一更新请求的确定是否有效的反馈。一旦初始随机时间延迟已过期,可以在最大更新参数终止后发送更新请求。
图3为图解节点接收与不同时间服务器302上的负载相关的负载数据的一个实施例的框图。在一个实施例中,节点A 308被认证通过、接收KEK 304并成为组A 306的成员。节点A 308可以使用KEK 304接收组A密钥314。节点A308可以向服务器302发送更新请求336以检查KEK304是否已改变。在一个实施例中,在网络332连接上向服务器302发送更新请求336。
当服务器302接收到更新请求336时,服务器302可以向节点A308发送负载数据A338。在另一个实施例中,当服务器302接收到初始KEK请求230时,也可以从服务器302发送负载数据A 338。负载数据A 338可以指示在先前时间单元服务器302上的过去负载。例如,负载数据A 338可以包括过去负载数据A 340、过去负载数据B 342、过去负载数据C 344等。过去负载数据A 340可以表示在之前的三十秒服务器302上的负载。过去负载数据B 342可以表示在之前的五分钟服务器302上的负载。相似地,过去负载数据C 344可以表示在之前的三十分钟服务器302上的负载。这些表示过去负载的参数仅仅是例子,并且应该理解本系统和方法可以包括代表在任意先前时间单元内服务器302上的任意多个过去负载的数据。
在一个实施例中,服务器302包括负载数据分析器360。分析器360可以确定服务器302上的负载是由正常的更新请求336导致还是由所加快的更新请求336导致。在一个实施例中,周期性地发送正常更新请求336以检查KEK 304是否已改变。在进一步的实施例中,由于KEK 304已经改变,在短时间内向服务器302发送所加快的更新请求336。分析器360可以将这些不同的负载类型转达给负载数据A338。
图4为图解服务器402在不同的时间间隔向节点发送负载数据的一个实施例的框图。在一个实施例中,节点A408可以在时间A400向服务器402发送更新请求436。时间A 400可以表示随机延迟参数228的终止。节点A408可以在时间(A+B)401发送另外的更新请求436。时间(A+B)401可以表示最大更新参数224的终止加随机延迟参数228的终止。例如,最大更新参数224可以包括二十四小时的参数,该参数指示节点A 408可以在发送更新请求436之前信任KEK 404二十四小时。为了减少服务器402上的负载,组内的每个节点可以随机地选择少于最大更新参数224的时间以发送第一更新请求436。节点A 408可以随机地选择六十分钟的时间以发送第一更新请求436。在一个实施例中,节点A408在接收到KEK404六十分钟之后发送第一个更新请求436。在所描述的实施例中,时间A 400可以表示六十分钟。发送第一个更新请求436之后,节点A 408可以等到由最大更新参数224指定的时间终止时才发送另外的更新请求436。在这个例子中,节点A 408可以在发送另一个更新请求436之前等待二十四小时。在所描述的实施例中,时间(A+B)401可以表示二十五小时,其中时间A表示六十分钟而时间B表示二十四小时。
在一个实施例中,当服务器402在时间A 400接收第一个更新请求436时,服务器402向节点A 408发送负载数据A 438。如前面所说明的,负载数据A 438可以包括若干组数据,其指示在若干先前时间单元(即,三十秒、五分钟、三十分钟等)服务器402上的负载。在一个实施例中,节点A 408在时间(A+B)401发送另外的更新请求。服务器402可以向节点A 408发送负载数据B 450。负载数据B 450可以包括过去负载数据A 440、过去负载数据B 442、过去负载数据C 444等。过去负载数据A 440、过去负载数据B 442和过去负载数据C 444可以表示指示服务器402在先前时间单元所经历的负载的参数。在一个实施例中,节点A 408将负载数据A 438与负载数据B 450比较。节点A 408可以基于对负载历史的比较来调整发送未来更新请求436的时间。例如,如果对负载数据B 450和负载数据A 438的比较指示在发送另外的更新请求436之前的最近先前时间单元内服务器402上的负载较高,但相同的比较显示对于更早的时间单元负载是相似的,则节点A408可以转移至较早的时间来发送后续的更新请求436。换句话说,节点A 408可以在稍早于最大更新参数224所指示的时间终止的时间发送下一个更新请求436。在另一个实施例中,节点A 408可以评估在最近的更新请求过程中服务器402上的负载以确定是否需要调整发送后续更新请求436的时间。
图5为图解用于确定是否为发送更新请求改变时间延迟的方法500的一个实施例的流程图。方法500可以由例如节点A 108的节点实现。向认证服务器发送KEK请求。在一个实施例中,由希望接收与节点组相关的组密钥的节点发送KEK请求。在一个实施例中,发送502KEK请求的节点还可以向认证服务器发送证书。如果确定504该节点不具有适合的证书,则该节点不被认证通过,并且稍后可以再次向服务器发送502KEK请求。如果确定504该节点具有适合的证书,则节点被认证通过并且接收KEK 104。在一个实施例中,还接收506最大更新参数。如前面所说明的,最大更新参数可以指示在为KEK 104可能的改变而发送更新请求之前节点可以信任KEK 104的最大时间量。在进一步的实施例中,还接收506负载数据A 338。如前面所说明的,负载数据可以指示在先前时间段内服务器的负载。
可以选择508第一随机延迟并且可以在第一随机延迟终止时发送第一更新请求。第一随机延迟可以小于最大更新参数。在一个实施例中,接收510第一负载数据。第一负载数据可以包括指示在先前时间单元(即,三十秒、五分钟、三时分钟等)认证服务器上的负载的参数。可以在最大更新参数所指示的时间终止时发送512第二更新请求。在一个实施例中,接收514第二负载数据。第二负载数据也可以包括指示在先前时间单元认证服务器上的负载的参数。可以将第一负载数据与第二负载数据比较516。通过比较516第一和第二负载数据确定518在第二更新请求过程中认证服务器上的负载是否与第一更新请求过程中服务器上的负载不同。如果确定518第一负载数据和第二负载数据几乎没有不同或没有不同,则方法500结束。如果确定518第一负载数据和第二负载数据不同,则选择520第二随机延迟并且在第二随机延迟终止时发送第三更新响应。在一个实施例中,第二随机延迟与第一随机延迟不同。一般而言,可以在任意两组接收的负载数据间进行同样的比较518以调整520更新请求间的延迟。
图6为图解用于确定节点是否可以加入节点组的方法600的一个实施例的流程图。在一个实施例中,方法600可以由属于该组的单独节点实现。可以接收602加入节点组的请求。该请求可以包括基于KEK的参数。确定该请求所包括的参数是否基于604与组内的每个节点相关的KEK 104。例如,组A 106的成员节点A 108可以从节点N 116接收602请求以允许节点N 116成为组A 106的成员。该请求可以包括基于KEK的参数。节点A 108可以确定604该请求中所包括的参数是否基于与节点A 108相关的KEK 104。如果该请求中所包括的参数不是基于与节点A 108相关的KEK 104,方法600结束。如果确定604 KEK匹配,则向发送请求的节点分配606组密钥。在一个实施例中,组密钥允许节点接收来自属于该组的其它节点的组播。组密钥还可以允许节点向组内其它节点组播数据。
图7为图解改变延迟函数702的一个实施例的框图。改变延迟函数702可以用于为节点何时向服务器102发送更新请求确定时间改变量。例如,如果节点比较负载数据并确定负载数据足够地不同,该节点可以调整向服务器102发送后续更新请求的时间。在一个实施例中,改变延迟函数702包括作为输入的当前时间704,它可以表示节点发送更新请求所使用的当前时间参数。例如,当前时间704可以包括如前面所讨论的最大更新参数224。
改变延迟函数702还可以包括作为输入的先前负载数据706。先前负载数据706可以表示接收到先前更新请求时服务器102上的负载。例如,先前负载数据706可以包括如前面所说明的负载数据A 338。另外,改变延迟函数702可以包括作为输入的当前负载数据708,它可以表示在接收当前更新请求时服务器102上的负载。例如,当前负载数据708可以包括如前面所讨论的负载数据B 450。在一个实施例中,改变延迟函数702还可以接收作为输入的随机化参数710。随机化参数710使得改变延迟函数702能够随机地选择向服务器102发送更新请求的时间的改变。改变延迟函数702可以避免组中的所有节点以同样的方式改变发送更新请求的时间。函数702可以结合如前面所说明的输入并且输出随机延迟改变712。随机延迟改变712可以导致在最大更新参数终止前将后续的更新请求发送到服务器102。在组中的节点在时间上或多或少等间隔地发送更新请求的情况下,改变延迟函数702可以使得服务器102上的负载相对恒定。
图8为可以用在根据实施例配置的嵌入式设备(节点或服务器)802中的硬件部件的框图。如图8的框图所广泛定义的,该嵌入式设备、节点或服务器可以是计算设备。可以提供中央处理单元(CPU)804或处理器来控制嵌入式设备802的运行,包括经由总线810耦合到CPU 804的该设备其它部件。可以将CPU 804具体实施为微处理器、微控制器、数字信号处理器或其它本领域已知的器件。CPU 804基于存储在存储器中的程序代码执行逻辑和算术运算。在某些实施例中,存储器806可以是包括在CPU 804中的板上存储器(On-board memory)。例如,微控制器通常包括一定量的板上存储器。
嵌入式设备802还可以包括网络接口808。网络接口808有助于嵌入式设备802与其它连接到网络130的设备之间的通信,网络130可以是寻呼机网络、蜂窝网络、全球通信网络、因特网、计算机网络、电话网络等。网络接口808根据适用的网络130的标准协议操作。
嵌入式设备802还可以包括存储器806。存储器806可以包括用于存储临时数据的随机存取存储器(RAM)。可选地或附加地,存储器806可以包括用于存储例如固定代码和配置数据的更持久数据的只读存储器(ROM)。存储器806还可以具体实施为磁存储设备,例如硬盘驱动器。存储器806可以是能够存储电子信息的任意类型的电子设备。
嵌入式设备802还可以包括一个或更多有助于与其它设备通信的通信端口812。嵌入式系统802还可以包括输入/输出设备814,例如键盘、鼠标、操纵杆、触摸屏、显示器、扬声器、打印机等。
当然,图8只图示了嵌入式设备802的一种可能的配置。可以使用各种其它的布局和部件。
可以使用多种不同技术和方法中的任何技术和方法代表信息和信号。例如,在以上描述中可能提及的数据、指令、命令、信息、信号、字节、符号和码片(chips)可以由电压、电流、电磁波、磁场或粒子、光场或粒子,或其任意组合代表。
结合此处所公开的实施例描述的各种说明性的逻辑块、模块、电路和算法步骤可以实现为电子硬件、计算机软件或两者的结合。为了清楚地说明硬件和软件的可互换性,前面已经大致就其功能对各种说明性的部件、块、模块、电路和步骤进行了描述。这种功能以硬件还是软件的方式实现取决于具体的应用以及整个系统的设计限制。本领域技术人员可以为每种具体应用以不同的方法实现所述的功能,但这种实施决定不应被解释为导致脱离本发明的范围的内容。
结合此处所公开的实施例描述的各种说明性的逻辑块、模块和电路可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列信号(FPGA)或其它可编程逻辑设备、离散门或晶体管逻辑、离散硬件部件或为实现此处所述的功能而设计的其任意组合实现或执行。通用处理器可以是微处理器,但是可选择地,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以作为计算设备的组合实现,例如,DSP和微处理器、多个微处理器、结合DSP核心的一个或更多个微处理器的组合,或任何其它此种配置。
结合此处公开的实施例描述的方法或算法的步骤可以直接以硬件、由处理器执行的软件模块或是两者结合的形式具体实施。软件模块可以存在于RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或任何其它本领域已知的存储介质形式中。一个示例性存储介质被耦合到处理器从而处理器可以从存储介质读取信息以及将信息写入存储介质。或可选择地,可以将存储介质集成到处理器。处理器和存储介质可以存在于ASIC中。ASIC可以存在于用户终端。或可选择地,处理器和存储介质可以作为分立元件存在于用户终端。
此处公开的方法包括用于实现所描述的方法的一个或更多个步骤或行动。可以将方法步骤和/或行动彼此互换而不脱离本发明的范围。换句话说,除非实施例的适当操作需要步骤或行动的特定顺序,否则可以对特定步骤和/或行动的顺序和/或使用进行调整而不脱离本发明的范围。
虽然已经说明和描述了本发明的具体实施例和应用,应该理解本发明并不局限于此处所公开的确切的配置和部件。本领域技术人员应该明白,可以对此处公开的本发明的方法和系统的设置、操作和细节做各种修改、改变和变化而不脱离本发明的精神和范围。