具体实施方式
下面参照附图描述本发明的各种实施例,在附图中,同样的附图标记表示相同或功能上类似的元件。如这里概括地描述和图示在附图中的本发明的各实施例可按许多种不同的配置来布置和设计。因此,如附图中所示的对本发明的多个示例实施例的以下更详细描述并非想要限制所要求保护的本发明的范围,而仅仅是本发明的各实施例的代表。
这里排他地使用词语“示例”来表示“担当例子、实例或说明”。这里被描述为“示例”的任何实施例不必定要解释为比其它实施例更优选或有利。
这里公开的实施例的很多特征可以以计算机软件、电子硬件或两者的组合来实现。为了清楚地说明硬件和软件的这种可互换性,将概括地描述各种部件的功能。以硬件还是软件来实现这样的功能取决于具体应用和施加于整个系统的设计约束。本领域的技术人员可针对每个具体应用按不同的方式实现所描述的功能,但这样的实现方式决定不应解释为造成脱离本发明的范围。
在以计算机软件来实现所描述的功能的情况下,该软件可包括位于存储器件内和/或作为电子信号通过系统总线或网络传输的任何类型的计算机指令或计算机可执行代码。实现与这里描述的部件关联的功能的软件可包括单个指令或很多指令,并且可分布在多个不同的代码段上、不同的程序中以及多个存储器件中。
除非另外明确指出,这里使用的术语“一实施例”、“实施例”、“多个实施例”、“该实施例”、“该多个实施例”、“一个或多个实施例”、“一些实施例”、“某些实施例”、“一个实施例”、“另一个实施例”等都意指“所公开的发明的一个或多个(但未必是全部)实施例”。
非常广义地使用术语“确定”(及其语法上的变体)。术语“确定”包含许多种操作,因此“确定”可包括计算、处理、推导、调查、查找(例如在表格、数据库或其它数据结构中查找)、查实等。“确定”还可包括接收(例如接收信息)、存取(例如存取存储器中的数据)等。“确定”还可包括解决、选择、建立等。
除非另外明确指出,短语“基于”并非意指“仅基于”。也就是说,短语“基于”描述“仅基于”和“至少基于”这两者。
计算机网络可包括多个节点。节点可称作计算设备。多个节点可组织成一个或多个组。单个节点可与其所在的组中的其它节点通信。在一个实施例中,单个节点将信息多播至其所在的组中的其它节点。多播可包括将信息同时发送至组中的每个成员。单个节点可将状态多播至组内的其它节点。状态可包括关于计算设备的程序或其它方面的信息的唯一配置。
对状态进行多播可能是可缩放的安全多播组所希望的。当网络分裂时会出现问题。例如,原始节点组可分裂成多个分裂出的节点组。曾经在原始组中的成员之间共享的状态会发生分歧。例如,各节点组通常控制自己的密钥。节点组会随时间定期地重设密钥。新密钥可以是随机选择的,因此,不同的分裂出的节点组将重设密钥为相同密钥的可能性较低。
在网络问题得以解决之前,组的分割可以是正确的行为。也就是说,假设一些节点集合仍可通信,则组不应基于硬件失效而失效。然而,当网络问题得以解决且每个分裂出的节点组可彼此再次通信时,状态应尽可能快地趋同。
本系统和方法涉及确定组管理器的节点组。该组中的任何节点都可担当管理器;在任何给定时间,可以有一个以上的节点担当管理器。管理器定期地将管理器状态告知管理器所在的组中的节点。另外,管理器以其它分裂出的节点组可提取管理器状态的方式告知管理器状态。为各个分裂出的节点组所共有的状态的主要部分是密钥交换密钥(KEK)。使用相同的KEK的任何分裂出的节点组可彼此通信。其它状态如定时参数和组密钥可随时间发生分歧。这些参数可由KEK告知和保护。也就是说,不拥有KEK的节点不会被允许从状态中提取这些参数。
当分割发生时,每个分裂出的节点组可确定不同的管理器。当分裂出的组中的节点不再从它们先前的管理器听到状态的定期报告时,它们可自动地确定管理器。在任一时间,如果单个组恰巧存在多个管理器,则该多个管理器将听到彼此的报告。如果该多个报告中的状态是完全相同的,则节点之一将不再是管理器。在同等情况下,具有最陈旧的状态或较低节点标识符的管理器可继续作为分裂出的组的管理器。当然,还存在其它用于确定可使用的组管理器的方法。如果分割发生但在状态的分歧之前就被解决,则上述逻辑可解决当分裂出的节点组开始再次通信时有多个管理器的问题。
如果分割发生足够长的时间,则与各个分裂出的组对应的状态会发生分歧。当解决了分割问题并恢复通信时,分裂出的组中将有多个管理器向属于原始组的节点告知不同的状态。属于各个分裂出的组的节点可共享相同的KEK。即使管理器可能知道特定报告是有效的,它也因为重放攻击的可能性而不会相信该包是当前的。例如,恶意节点可存储先前的报告,接着在以后重放该报告。这种重放不应造成节点起反应。
如果分裂出的节点组的管理器听到表明与其状态部分匹配的报告时,它可“加入”由另一管理器标识的组。此加入可与节点初次加入该组的过程几乎相同,并且可被保护以免受重放攻击。如果该加入成功,则分裂出的组的管理器拥有两套状态。接着,管理器可对它自己所在的分裂出的节点组重设密钥,以与其它节点组的状态匹配-从而非常迅速地有效治愈该组。由于情况是对称的(即,两个管理器可听到彼此的报告),所以上述逻辑(即,哪个状态更陈旧)同样可用来确定哪个管理器重设密钥。
图1是示出了将密钥交换密钥(KEK)104传达给组A 106内的一个或多个节点的服务器102的一个实施例的框图。在一个实施例中,服务器102是认证服务器。认证服务器可以是对希望加入组A 106的节点进行认证的服务器。在一个实施例中,服务器102认证节点,且该节点接收KEK104。节点通过使用KEK 104向属于组A 106的其它节点证实其加入组A106的能力,可加入组A 106。在一个实施例中,服务器102维持关于组A106中每个节点的最小限度的状态。例如,服务器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 106中的节点之间多播的信息可利用共享组A密钥114进行加密。节点可使用KEK 104接收与组A 106关联的组A密钥114。例如,节点N 116可通过向组A 106中的一个或多个节点发送组请求118来请求成为组A 106的成员。组A 106中的一个或多个节点可确定节点N 116是否包括KEK 104。如果节点N 116包括KEK 104,则该一个或多个节点可将组A密钥114分发给节点N 116。组A密钥114可使得节点能够将信息发送至组A 106内的其它节点或从组A 106内的其它节点接收信息。节点可使用组A密钥114对在组A 106中的节点之间多播的信息进行加密和解密。
如果节点N 116不拥有KEK 104,则节点N 116可向服务器102发送KEK请求,请求服务器102将KEK 104分发给节点N 116。服务器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是示出了从第一节点组206中分割出的第二节点组246的一个实施例的框图。第一组206可包括多播节点组,如组A 106。在一个实施例中,节点E 226、节点F 228和节点G 230原本属于第一组206。尽管所描绘的实施例包括7个节点,但应理解,在第一组206和第二组246中可包括更多或更少的节点。
节点A~G 208、210、212、224、226、228、230可包括KEK 204和组A密钥214。在一个实施例中,组A密钥214包括组A密钥参数240。参数240可表明组A密钥214已被第一组206的成员使用的时间量。例如,第一组206的成员可控制组A密钥214。组A密钥214可定期地改变,这导致节点将组A密钥214重设密钥为改变了的新的组密钥。组A密钥参数240可表明当前的组A密钥已被第一组206的成员使用了多长时间。
在一个实施例中,节点A 208包括标识符A 238。标识符A 238可表明节点A 208加入第一组206的次序。例如,如果节点A 208是加入第一组206的第三个节点而节点B 210是加入第一组206的第四个节点,则标识符A 238可表明“3”而标识符B(未示出)可表明“4”。尽管仅示出了节点A 238包括标识符,但应理解,组206中的每个节点都可包括相应的标识符。
在一个实施例中,节点A 208被确定为第一组206的组管理器。组管理器可负责定期地将关于组密钥和其它参数的信息多播至该组中的其余节点。在一个实施例中,因为标识符A 238包括最低值,所以节点A 208被确定为组管理器。在其它实施例中,组管理器可以是最先开始进行告知的节点,由管理员人工设定为管理器的节点,等等。在其它实施例中,可遵循任何商业上可用的方法将节点确定为组管理器。
节点A 208可包括状态234。状态234可表明某些参数的当前值。例如,状态234可包括KEK 204、组A密钥214和定时参数A 236。定时参数A 236可表明节点A 208向组206中的节点多播状态234的频度。在一个实施例中,利用KEK 204保护组A密钥214和定时参数A 236。也就是说,没有KEK 204的节点不会被允许从状态234中提取这些参数。
节点A 208可使用路由器A 242将状态234多播至节点B 210、节点C 212和节点D 224。类似地,节点A 208可通过路由器B 244将状态234多播至节点E 226、节点F 228和节点G 230。尽管图示的实施例描绘了节点A 208通过两个路由器来多播状态234,但应理解,节点可使用任何数量的路由器、交换机、其它联网装备、线路等来多播信息。节点210、212、224、226、228、230可使用KEK 204从状态234中提取组A密钥214和定时参数A236。如果节点210、212、224、226、228、230上包含的组A密钥214与状态234中包含的组A密钥214不匹配,则节点可对组A密钥214重设密钥,以与状态234中包含的组密钥匹配。如上所述,多播组可定期地改变组密钥。包括组A密钥214的状态234的频繁多播使得节点能够重设密钥为与组206关联的当前组密钥。
在一个实施例中,节点A 208与路由器B 244之间的通信丧失或受限制290。例如,路由器B 244可能失效,这样,从节点A 208发送的状态234不会被传递给连接至路由器B 244的节点226~230。在一个实施例中,节点E 226、节点F 228和节点G 230从第一组206被分入第二组246。节点A 208仍可将状态234通过路由器A 242多播至节点B 210、节点C212和节点D 224。由此,原始第一组206被分割成两个组206、246。尽管仅示出了两个组206、246,但应理解,第一组206可被分割成更多的节点组。
图3是示出了第二节点组346的又一个实施例的框图。在一个实施例中,第二组346包括节点E 326、节点F 328和节点G 330。当节点326、328、330不再从第一组206的管理器收到状态的定期多播时,它们可确定第二组管理器。例如,当节点E~G 326~330不再从节点A 208收到状态234时,它们可确定第二组管理器。在一个实施例中,第二组346内的任何节点可担当第二组管理器。在所描绘的实施例中,因为节点F 328开始向属于第二组346的节点多播状态334,所以节点F 328被确定为第二组管理器。节点F 328可包括表明节点F 328加入原始第一组206的次序的标识符F 352。
最初,第二组346中的节点326~330仍可使用它们先前作为第一组206的成员所使用的组密钥。例如,节点326~330仍可使用组A密钥314。在又一个实施例中,当第二组管理器节点F 328成为组管理器时,它可立即改变组B密钥350。之后,第二组346的成员可将组A密钥314重设密钥354为随机的新的组密钥,如组B密钥350。在又一个实施例中,成员仍属于第一组206(未示出),亦可将组A密钥314重设密钥为随机的新的组密钥。因为各组206、346对组A密钥314随机地重设密钥,所以第一组206和第二组346将组A密钥314重设密钥为相同的新的组密钥的可能性较低。
在一个实施例中,第二组346的成员目前使用组B密钥350来向彼此多播信息。组B密钥350可包括表明组B密钥340已被第二组346使用的时间量的组B密钥参数341。
作为第二组346的管理器,节点F 328可将状态334多播至第二组346的其它成员。在一个实施例中,状态334包括KEK 304和组B密钥350。KEK 304可保护组B密钥350,以使得不拥有KEK 304的节点不能从状态334中提取组B密钥350。节点E 326和节点G 330可从状态334中提取组B密钥350,以证实它们拥有第二组346的当前组密钥。
图4是示出了加入第一分割出的节点组的第二分割出的节点组中的管理节点的一个实施例的框图。在一个实施例中,节点A 408是第一组206(未示出)中的管理节点而节点F 428是第二组246(未示出)中的管理节点。如上所述,当第一组的管理器与第二组246中的节点之间的通信因某种原因丧失或受限制时,第二组246内的节点从第一组206中分出。在一个实施例中,节点A 408与路由器B 444之间的通信丧失;这样,节点A 408不能将状态434多播至节点E 426、节点F 428和节点G 430。之后,可通过路由器B 444重建节点A 408与第二组246之间的通信。
如上所述,当从第一组206中分割出第二组246时,各组206、246仍可使用相同的组密钥,如组A密钥114。之后,各组206、246可对组A密钥114随机地重设密钥。例如,第一组可将组A密钥114随机地重设密钥为组C密钥415,而第二组246可将组A密钥114随机地重设密钥为组B密钥450。
当重建了节点A 408与第二组246中的节点之间的通信时,节点A 408可多播状态434,状态434包括KEK 404、组C密钥415和定时参数C 437。组C密钥415和定时参数C 437可由KEK 404保护。在一个实施例中,节点E~G 426~430各自从节点A 408接收状态434。节点E~G 426~430各自可包括允许它们从状态434中提取受保护的组C密钥415和定时参数C 437的KEK 404。然而,节点E~G 426~430包括可与组C密钥415不同的组B密钥450。节点E 426和节点G 430可忽略从节点A 408发送的状态434,因为状态434不是从第二组246的管理器(即,节点F 428)发送的。
在一个实施例中,第二组246的管理器即节点F 428可从节点A 408接受状态434。节点F 428可使用KEK 404从状态434中提取参数。组C密钥415可包括组C密钥参数440,而组B密钥450包括组B密钥参数441。如上所述,组密钥参数可表明组密钥已被使用了多长时间。在一个实施例中,节点F 428将组C密钥参数440与组B密钥参数441作比较。如果组C密钥参数440表明组C密钥415已被使用的时间量多于组B密钥450已被使用的时间量,则节点F 428可存储组C密钥415。接着,节点F 428可加入由状态434标识的组,以便证实它是当前的而不是重放的。在一个实施例中,节点F 428目前属于第一组206和第二组246这两者。在又一个实施例中,节点F 428将组B密钥450重设密钥为组C密钥415。通过重设密钥为组C密钥415,节点F 428确定节点A408应继续作为管理节点。这样,节点A 408负责状态434的后续多播。
在一个实施例中,组C密钥参数440和组B密钥参数441是相同的,这表明组C密钥415和组B密钥450已被使用了相同的时间量。节点A 408和节点F 428通过评价标识符A 438和标识符F 452,可确定哪个节点继续作为管理器节点。在一个实施例中,具有最低标识符的节点继续作为管理器。例如,标识符A 438可包括比标识符F 452低的值。这样,标识符F 452可将组B密钥450重设密钥为组C密钥415。在又一个实施例中,节点A 408和节点F 438使用其它方法来确定哪一个将继续作为管理器。不继续作为管理器的节点将其所在的组重设密钥为另一组的组密钥114。
图5是示出了重新加入第一组206的第二组546的一个实施例的框图。在一个实施例中,与第二组546关联的组密钥被重设密钥为与第一组206关联的组密钥。第二组546的管理器可将重设密钥命令560多播至第二组546中的节点。例如,节点F 528可以是第二组546的管理器。如上所述,节点F 528可接收关于与第一组206对应的组密钥(即,组C密钥515)的状态434,并可证实该状态434是当前有效的而不是重放的。节点F 528可多播包括KEK 504和重设密钥命令560在内的包532。在一个实施例中,不包括KEK 504的节点不能接收包532。此外,重设密钥命令560可使用第二组546的共享组密钥(即,组B密钥550)来进行加密。
节点E 526和节点G 530可接收包532并使用组B密钥550对重设密钥命令560进行解密。重设密钥命令560可包括将共享组密钥重设密钥为不同的共享组密钥的命令。例如,节点E 526和节点G 530可接收将组B密钥550重设密钥554为组C密钥515的命令。节点F 528亦可在重设密钥命令已被多播至第二组546中的节点之后将组B密钥550重设密钥554为组C密钥515。重设密钥为组C密钥515可允许节点E~G 526~530从第一组206内的节点接收额外的数据和信息。也就是说,节点E~G526~530重新加入它们在被分入第二组546之前曾为其成员的组。此外,允许第二组546的管理器多播该重设密钥命令560可以使第一组206的管理器上的请求减至最少。例如,如果第二组546内的每个节点向节点A 408发送重设密钥请求,则节点A408会因对组C密钥515的众多请求而经受重的负荷。本系统和方法使得第二组546的管理器(或管理节点的小集合)能够将重设密钥信息多播至属于第二组的节点,从而消除节点A 408上的负荷的增大。
图6是示出了将重设密钥命令多播至第二节点组246的方法600的一个实施例的流程图。在一个实施例中,方法600由被指定为第二组246的管理器的节点来实施。可接收602第一状态。在一个实施例中,第一状态包括与第一节点组206如组A 106关联的第一组密钥。可定期地接收602该状态。确定604从接收602最近的状态时起,预定时间是否已到期。如果该时间尚未到期,则该节点继续定期地接收602第一状态。如果该预定时间已到期,则将第一状态多播606至第二节点组246。在一个实施例中,当不能从第一组206中的管理节点定期地接收602第一状态时,从第一节点组206中分割出第二节点组246。
确定608是否接收到额外的状态。例如,属于第二组246的节点可多播606第一状态,且该节点还可从属于第二组246的一个或多个单独的节点接收一个或多个状态。如果方法600确定608接收到的一个或多个状态与第一状态相同,则确定610接收到的一个或多个状态已存在的时间量是否多于第一状态已存在的时间量。也就是说,确定610第一状态是否比接收到的一个或多个状态更陈旧。如果接收到的一个或多个状态比第一状态更陈旧,则方法600结束。然而,如果该节点未接收到一个或多个状态,或者如果接收到的一个或多个状态并非比第一状态更陈旧,则可将多播第一状态的节点指定为第二节点组246中的管理节点。
可将第一组密钥重设密钥612为第二组密钥。在一个实施例中,将第一组密钥随机地重设密钥612为第二组密钥。可将包括第二组密钥的第二状态定期地多播614至第二节点组246。在一个实施例中,第二组246内的节点将第一组密钥重设密钥612为第二组密钥。
可确定616是否接收到与第二状态不同的第三状态。第三状态可包括与第一节点组206关联的第三组密钥。如果未接收到第三状态,则继续向第二节点组定期地多播614第二状态。如果接收到第三状态,则确定618第三状态已存在的时间量是否多于第二状态已存在的时间量。也就是说,确定618第三状态是否比第二状态更陈旧。如果确定了第二状态比第三状态更陈旧,则继续向第二节点组定期地多播614第二状态。
然而,如果确定618第三状态比第二状态更陈旧,则可将包括重设密钥命令的包多播620至第二节点组246。重设密钥命令可指示第二节点组246将第二组密钥重设密钥为第三组密钥。在一个实施例中,利用第二组密钥对重设密钥命令进行加密。包括第二组密钥的节点可对重设密钥命令进行解密。在一个实施例中,先前属于第二节点组246的节点目前可包括可与第一节点组206关联的第三组密钥。在一个实施例中,每个状态中包含的每个组密钥可由KEK 104保护。在一个实施例中,包括KEK 104的节点可接收每个组密钥和每个状态。
图7是可在根据一实施例配置的节点或服务器702中使用的硬件部件的框图。节点或服务器702在一些实施方式中可以是嵌入式设备。节点或服务器702通常是计算设备。该计算设备可包括但不限于膝上计算机、桌面个人计算机(PC)、个人数字助理(PDA)、平板PC、蜂窝电话等。可提供处理器704来控制节点/服务器702(包括经由总线710耦合至处理器704的节点/服务器702的其它部件)的工作。处理器704可以以微处理器、微控制器、数字信号处理器或本领域中已知的其它设备来实施。处理器704基于存储在存储器内的程序代码来执行逻辑和算术运算。在某些实施例中,存储器706可以是与处理器704集成的板上存储器。例如,微控制器常常包括一定量的板上存储器。
节点/服务器702还可包括网络接口708。网络接口708促成节点/服务器702与连接至网络122的其它设备之间的通信,网络122可以是寻呼机网络、蜂窝网络、全球通信网、因特网、计算机网络、电话网络等。网络接口708根据适用网络122的标准协议来工作。
节点/服务器702还可包括存储器706。存储器706可包括用于存储临时数据的随机存取存储器(RAM)。可替选地或除此以外,存储器706可包括用于存储更永久的数据(如固定代码和配置数据)的只读存储器(ROM)。存储器706还可以以磁存储设备如硬盘驱动器来实施。存储器706可以是任何类型的能够存储电子信息的电子设备。
节点/服务器702还可包括促成与其它设备的通信的一个或多个通信端口712。节点/服务器702还可包括输入/输出设备714,如键盘、鼠标、操纵杆、触摸屏、监视器、扬声器、打印机等。
当然,图7仅示出了节点/服务器702的一种可能的配置。还可使用各种其它架构和部件。
可使用任何各种不同的技术来表示信息和信号。例如,在整篇以上描述中可提及的数据、指令、命令、信息、信号、位、符号和芯片可由电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子、或它们的任何组合来表示。
结合这里公开的实施例描述的各种说明性的逻辑块、模块、电路和算法步骤可以以电子硬件、计算机软件或两者的组合来实现。为了清楚地说明硬件和软件的这种可互换性,已在上面概括地描述了各种说明性的部件、块、模块、电路和步骤的功能。以硬件还是软件来实现这样的功能取决于具体应用和施加于整个系统的设计约束。本领域的技术人员可针对每个具体应用按不同的方式实现所描述的功能,但这样的实现方式决定不应解释为造成脱离本发明的范围。
结合这里公开的实施例描述的各种说明性的逻辑块、模块和电路可利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列信号(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件部件或它们的被设计成执行这里所描述的功能的任何组合来实现或执行。通用处理器可以是微处理器,但可替选地,该处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以以计算设备的组合(例如DSP和微处理器的组合)、多个微处理器、结合了DSP内核的一个或多个微处理器或任何其它这样的配置来实现。
结合这里公开的实施例描述的方法或算法的步骤可直接用硬件、由处理器执行的软件模块或者两者的组合来实施。软件模块可处在RAM存储器、闪速存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可拆卸盘、CD-ROM或本领域中已知的任何其它形式的存储介质中。示例存储介质耦合至处理器,使得处理器可从存储介质中读取信息或者向存储介质中写入信息。可替选地,存储介质可与处理器集成。处理器和存储介质可处在ASIC中。该ASIC可处在用户终端中。可替选地,处理器和存储介质可作为分立部件而处在用户终端中。
这里公开的方法包括用于实现所述方法的一个或多个步骤或操作。这些方法步骤和/或操作可不脱离本发明的范围而彼此互换。也就是说,如果不需要特定顺序的步骤或操作来使实施例正确工作,则可以不脱离本发明的范围而修改特定步骤和/或操作的顺序和/或使用。
尽管已图示和描述了本发明的特定实施例和应用,但应理解,本发明不限于这里公开的精确配置和部件。在不脱离本发明的精神和范围的情况下,在这里公开的本发明的方法和系统的布置、操作和细节中,可以作出本领域的技术人员应明白的各种修改、改变和变化。