无状态接收机的广播加密和密钥撤销方法

文档序号:7723005阅读:167来源:国知局
专利名称:无状态接收机的广播加密和密钥撤销方法
技术领域
本发明一般涉及使用加密密钥的广播数据加密。
背景技术
美国专利号6,118,873公开了一种用于对广播音乐、视频及其他内容进行加密的系统。正如其中所述,只有授权的播放-记录设备才能播放和/或拷贝该内容,并且只能遵循内容提供商所建立的规则。这样,才能防止内容的盗版拷贝,而盗版拷贝通常每年都要耗费内容提供商数十亿美元的资金。
在上面提及的专利所公开的加密方法中,从设备密钥矩阵中为授权播放-记录设备发放软件实现的设备密钥。各密钥可彼此同时发放或随时发放,但在任何情况下,播放-记录设备在矩阵的每列中都不应该有一个以上的设备密钥。尽管两个设备可以共用同一列中的相同密钥,然而当密钥被随机分配时,任意两个设备恰好共用矩阵所有列中的同一集合密钥的可能性非常小。这些密钥通常用来将内容解密。
如果故意或因失误而使设备(及其密钥)泄密,则有必要撤销该设备的密钥。撤销一个密钥集合可有效地致使泄密设备(及其任何克隆)无法播放撤销以后所产生的内容。在以上所公开的专利中,每一撤销都需要约320个消息字节。尽管这种撤销是有效的,但出于效率的考虑,还是希望更进一步减小撤销消息的长度。
尽管上述引用专利中所公开的系统是有效的,但由于消息报头区(在该专利中称为“媒体密钥块”)的长度限制,在系统的使用期内只能做出相对有限个(比如DVD-音频,3M报头可有10,000个)撤销。这一数字可随报头大小的增加而增加,但增加的撤销只能应用于新建设备,而不能应用于报头长度增加前的已有设备。希望能执行“新”、“老”设备的大量撤销,即解决无状态接收机问题。同样,由于在上述引用专利发明中一个以上的设备可与泄密设备共用任意特定的密钥,因此,撤销一个设备密钥集合可能导致撤销无辜设备所拥有的某些密钥。希望进一步减小意外撤销“善良”设备的可能性,最好减小到零。
此外,本发明还可用于解决“无状态”(stateless)接收机(即,在广播之间未必更新其加密状态以接受针对泄密设备的对策的接收机)的难题。例如,一台预订付费频道的电视机可能使其机顶盒切断一段时间,而在所述时间内在系统上广播了更新的加密数据。这种设备如果在被重新接通后碰巧无法进行自身更新,则将变成为是“无状态”的,从而不具备将来进行内容解密所必需的更新。
另外,保护诸如CD和DVD的媒体的内容的需求越来越迫切,因为这种媒体内容被出售给公众后希望防止其非法拷贝。这类系统中的记录设备通常不与播放机交互,并且没有播放机能得到每一条可能的加密数据更新,这是因为,没有播放机能得到每一出售盘片。因此,正如这里所述,所出售媒体的内容保护是对无状态接收机的广播加密问题的一个例子。
再者,很多“恶意”制造商(即那些合法或非法得到密钥但总是制造许多具有这些密钥的非法设备的制造商)的存在也可能带来问题。因此,希望能解决潜在的许多“恶意”制造商的问题。
广播加密的其他方法包括“Fiat et al.,‘BroadcastEncryption’,Crypto’93,LNCS vol.839,pp.257-270(1994)”中所公开的方法。该方法设想只要某些接收机中至多有“t”个相互勾结,就将清除所有这些接收机。然而,Fiat等人的方法需要相对较长的消息长度,相对较多的密钥存储在接收机中,并且每个接收机都必须执行一个以上的解密操作。再者,Fiat等人的方法并未设想无状态接收机情况。应当避免假定有多少个接收机可能勾结的推测。另外,为了优化性能,必须最大限度地减小消息长度和所存储的密钥数,并最大限度地减少接收机所必须执行的解密操作次数。
与Fiat等人的系统一样,其他加密系统也没有提供无状态接收机的情况,因此无法有效地应用于所记录媒体的内容保护。这类系统的例子包括树形逻辑密钥分层系统,如“Wallner et al.,‘KeyManagement for MulticastIssues and Architectures’,IETF draftwallner-key,1997”、“Wong et al,‘Secure GroupCommunication Using Key Graphs’,SIGCOMM 1998”、“Canetti et al.,‘Multicast SecurityA Taxonomy and SomeEfficient Constructions’,Proc.of INFOCOM’99,vol.2,pp.708-716(1999)”、“Canetti et al.,‘Efficient Communication-StorageTradeoffs for Multicast Encryption’,Eurocrypt 1999,pp.459-474”和“McGrew et al.,‘Key Establishment in Large DynamicGroups Using One-Way Function Trees’,submitted to IEEETransactions on Software Engineering(1998)”中所公开。
为了更明确地说明Wallner等人和Wong等人的方法,通过向二叉树中的每个节点分配独立标记的方法来分配密钥。不幸的是,在这些所引用方法中,每次撤销时都有一些标记发生变化。显然,这样的话,这种方法将不适合于无状态接收机情况。即使对于与每个节点的单个标记变化相关联的一批撤销,所引用的Wallner等人和Wong等人的方法都需要在接收机中进行至少logN个解密以及rlogN个加密的传输(其中,r是所要撤销的设备数,而N是系统中的接收机总数),不幸的是,这是一个相对较大的数。

发明内容
为此,本发明提供了一种用于广播加密的方法,包括为一组用户中的每个用户分配相应的个人信息Iu;选择至少一个会话加密密钥K;将不在撤销集合R中的用户划分成具有相关联的子集密钥Li1,…Lim的分离子集Si1,…Sim;和用子集密钥Li1,…Lim将会话密钥K加密以提供会话密钥K的m种加密形式。
该方法最好还包括将用户划分成一些组S1,…Sw,其中“ w”是整数,而这些组在某一树中建立一些子树。
这种树最好是全二叉树(complete binary tree)。
该方法最好还包括利用个人信息Iu将会话密钥解密。
解密动作最好包括利用信息ij以使用户属于子集Sij,和利用用户的个人信息来检索子集密钥Lij。
每个子集Si1,…Sim最好都包括在以某个节点vi为根的子树中的所有叶,子树中的至少每个节点都与相应的子集密钥相关联。
最好在至少一个定义了报头的消息中为用户提供内容,并且该报头包括至多r*log(N/r)个子集密钥和加密,其中,r是撤销集合R中的用户数,而N是用户总数。
每个用户最好都必须存储logN个密钥,其中,N是用户总数。
最好在至少一个消息中为用户提供内容,并且其中每个用户都利用至多loglogN个运算加上单个解密运算来处理该消息,其中,N是用户总数。
撤销集合R最好定义一个生成树(spanning tree),并且具有与生成树的节点连接的根的子树定义这些子集。
该树最好包括一个根和多个节点,每个节点都具有至少一个相关联的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
最好在至少一个定义了报头的消息中为用户提供内容,并且该报头包括至多2r-1个子集密钥和加密,其中,r是撤销集合R中的用户数。
每个用户最好都必须存储.5log2N+.5logN+1个密钥,其中,N是用户总数。
最好在至少一个消息中为用户提供内容,并且其中每个用户都利用至多logN个运算加上单个解密运算来处理该消息,其中,N是用户总数。
撤销集合R最好定义一个生成树,并且该方法包括将覆盖树T初始化为生成树;反复地从覆盖树T中去除节点和在覆盖中增加节点直到覆盖树T中具有至多一个节点。
每个节点最好都具有至少一个可能由其祖先节点的至少之一所引出的标记,并且其中每个用户都被分配以一些标记,这些标记来自于该用户与根之间的直达通路之外的所有节点而不是来自于该直达通路上的节点。
最好利用伪随机序列发生器将标记分配给子集,并且解密动作包括估算伪随机序列发生器。
最好在至少一个具有含密码函数EL的报头的消息中为用户提供内容,并且该方法包括对密码函数EL进行截头(prefix-truncating)。
该树最好包括一个根和多个节点,每个节点都具有相关联的密钥,并且其中每个用户都被分配以一些密钥,这些密钥来自于代表该用户的叶与根之间的直达通路上的所有节点。
最好在至少一个定义了多个部分的消息中为用户提供内容,并且每个部分都用相应的会话密钥加密。
本发明很好地提供了一种计算机程序设备,包括含有计算机可用的指令的程序的计算机程序存储设备,包括用于访问树以识别多个子集密钥的逻辑装置;用会话密钥将消息加密的逻辑装置;至少一次用子集密钥中的每一个密钥将会话密钥加密以提供会话密钥的加密形式的逻辑装置;和在消息的报头中将会话密钥的加密形式发送到多个无状态接收机的逻辑装置。
计算机程序设备最好还包括将不在撤销集合R中的接收机划分成具有相应子集密钥Li1,…Lim的分离子集Si1,…Sim的逻辑装置。
计算机程序设备最好还包括将用户划分成一些组S1,…Sw的逻辑装置,其中“w”是整数,而这些组在某一树中建立一些子树。
计算机程序设备最好还包括利用个人信息Iu将会话密钥解密的逻辑装置。
解密装置最好包括利用信息ij以使接收机属于子集Sij并从接收机的个人信息中检索密钥Lij的逻辑装置。
每个子集Si1,…Sim最好都包括在以某个节点vi为根的子树中的所有叶,子树中的至少每个节点都与相应的子集密钥相关联。
逻辑装置最好在至少一个定义了报头的消息中为接收机提供内容,并且该报头包括至多r*log(N/r)个子集密钥和加密,其中,r是撤销集合R中的接收机数,而N是接收机总数。
每个接收机最好都必须存储logN个密钥,其中,N是接收机总数。
逻辑装置最好在至少一个消息中为接收机提供内容,并且其中每个接收机都利用至多loglogN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
撤销集合R最好定义一种生成树,并且具有与生成树的节点连接的根的子树定义这些子集。
该树最好包括一个根和多个节点,每个节点都具有至少一个相应的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
装置最好在至少一个定义了报头的消息中为接收机提供内容,并且该报头包括至多2r-1个子集密钥和加密,其中,r是撤销集合R中的接收机数。
每个接收机最好都必须存储.5log2N+.5logN+1个密钥,其中,N是接收机总数。
逻辑装置最好在至少一个消息中为接收机提供内容,并且其中每个接收机都利用至多logN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
撤销集合R最好定义一个生成树,并且该计算机程序设备包括将覆盖树T初始化为生成树的逻辑装置;和反复地从覆盖树T中去除节点和在覆盖中增加节点直到覆盖树T中具有至多一个节点的逻辑装置。
逻辑装置最好利用伪随机序列发生器将标记分配给接收机,并且标记含有子集密钥。
解密装置最好包括估算伪随机序列发生器。
逻辑装置最好在至少一个具有含密码函数EL的报头的消息中为接收机提供内容,并且该计算机程序设备包括对密码函数EL进行截头的逻辑装置。
该树最好包括一个根和多个节点,每个节点都具有相应的密钥,并且其中逻辑装置为每个接收机都分配一些密钥,这些密钥来自于代表该接收机的叶与根之间的直达通路上的所有节点。
逻辑装置最好在至少一个定义了多个部分的消息中为接收机提供内容,并且每个部分都用各自的会话密钥加密。
本发明很好地提供了一种用指令编程的计算机,使得计算机可以执行方法的动作,这些动作包括加密广播内容;和将广播内容发送到多个无状态的善良接收机和发送到至少一个撤销接收机,这样,每个无状态的善良接收机都能将内容解密而撤消接收机无法将内容解密。
方法动作最好还包括为一组接收机中的每个接收机分配相应的个人信息Iu;选择至少一个会话加密密钥K;将不在撤销集合R中的接收机划分成具有相关联的子集密钥Li1,…Lim的分离子集Si1,…Sim;和用子集密钥Li1,…Lim将会话密钥K加密以提供会话密钥K的m种加密形式。
该计算机所采取的方法动作最好还包括将用户划分成一些组S1,…Sw,其中“w”是整数,而这些组在某一树中建立一些子树。
这种树最好是全二叉树。
方法动作最好包括利用个人信息Iu将会话密钥解密。
该计算机所采取的解密动作最好包括利用信息ij以使接收机属于子集Sij,和利用接收机的个人信息来检索密钥Lij。
每个子集Si1,…Sim最好都包括在以某个节点vi为根的子树中的所有叶,子树中的至少每个节点都与相应的子集密钥相关联。
最好在至少一个定义了报头的消息中为接收机提供内容,并且该报头包括至多r*log(N/r)个子集密钥和加密,其中,r是撤销集合R中的接收机数,而N是接收机总数。
每个接收机最好都必须存储logN个密钥,其中,N是接收机总数。
最好在至少一个消息中为接收机提供内容,并且其中每个接收机都利用至多loglogN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
撤销集合R最好定义一种生成树,并且具有与生成树的节点连接的根的子树定义这些子集。
该树最好包括一个根和多个节点,每个节点都具有至少一个相应的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
最好在至少一个定义了报头的消息中为接收机提供内容,并且该报头包括至多2r-1个子集密钥和加密,其中,r是撤销集合R中的接收机数。
每个接收机最好都必须存储.5log2N+.5logN+1个密钥,其中,N是接收机总数。
最好在至少一个消息中为接收机提供内容,并且其中每个接收机都利用至多logN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
撤销集合R最好定义一种生成树,并且其中计算机采取的方法动作还包括将覆盖树T初始化为生成树;迭代地从覆盖树T中去除节点和在覆盖中增加节点直到覆盖树T中具有至多一个节点。
该计算机最好利用伪随机序列发生器将节点标记分配给树中的接收机。
计算机采取的解密动作最好包括估算伪随机序列发生器。
最好在至少一个具有含密码函数EL的报头的消息中为接收机提供内容,并且计算机采取的方法动作包括对密码函数EL进行截头。
最好在至少一个定义了多个部分的消息中为接收机提供内容,并且每个部分都由该计算机用各自的会话密钥加密。
每个节点最好都具有多个标记,其节点的各自祖先引出各自标记,并且其中每个用户都被分配以一些标记,这些标记来自于该用户与根之间的直达通路之外的所有节点而不是来自于该直达通路上的节点。
本发明很好地提供了一种用于广播加密的方法,包括为一组用户中的每个用户分配相应的个人信息Iu;选择至少一个会话加密密钥K;将所有用户划分成一些组S1,…Sw,其中“w”是整数,而这些组在某一树中建立一些子树;将不在撤销集合R中的用户划分成具有相应子集密钥Li1,…Lim的分离子集Si1,…Sim;和用子集密钥Li1,…Lim将会话密钥K加密以提供会话密钥K的m种加密形式,其中该树包括一个根和多个节点,每个节点都具有至少一个相应的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
本发明最好包括多点广播系统中的一种潜在无状态接收机,包括至少一个数据存储设备,用于存储不在该接收机与具有代表该接收机的叶的树的根之间的直达通路上而在该直达通路之外的并由某个节点vi(代表接收机的叶的祖先)所引出的节点的多个标记,其中,这些标记建立该接收机可用的接收机的个人信息Iu,以便对从这些标记得出的子集密钥进行解密。
该接收机最好通过估算伪随机函数来计算除了以节点vi为根的直达通路集合之外的所有集合的子集密钥,但不能计算其他子集密钥。
该接收机最好利用至少一个子集密钥将会话密钥解密,该会话密钥可用于将内容解密。
本发明最好包括一种内容接收机,包括存储相应的个人信息Iu的装置;接收至少一个用多个子集密钥加密的会话加密密钥K的装置,该会话密钥将内容加密;和利用个人信息得到至少一个子集密钥,使得可将会话密钥K解密以便播放内容的装置。
该接收机最好被划分为组S1,…Sw的集合之一,其中“w”是整数,而这些组在某一定义了节点和叶的树中建立一些子树。
从组S1,…Sw的集合中得到的子集Si1,…Sim最好定义一个覆盖。
该接收机最好在至少一个定义了报头的消息中接收内容,并且该报头包括至多r*log(N/r)个子集密钥和加密,其中,r是撤销集合R中的接收机数,而N是接收机总数。
该接收机最好必须存储logN个密钥,其中,N是接收机总数。
该接收机最好在至少一个定义了报头的消息中接收内容,并且其中接收机利用至多loglogN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
撤销集合R最好定义一个生成树,并且具有与生成树的节点连接的根的子树定义这些子集。
该树最好包括一个根和多个节点,每个节点都具有至少一个相应的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
该接收机最好在一个具有报头的消息中接收内容,该报头包括至多2r-1个子集密钥和加密,其中,r是撤销集合R中的接收机数。
该接收机最好必须存储.5log2N+.5logN+1个密钥,其中,N是接收机总数。
最好在至少一个消息中为该接收机提供内容,并且其中接收机利用至多logN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
该接收机最好通过估算伪随机序列发生器将子集密钥解密。
本发明最好包括一种内容接收机,包括存储相应的个人密钥Iu的数据存储器;接收至少一个用多个子集密钥加密的会话加密密钥K的处理设备,该会话密钥将内容加密,该处理设备利用个人信息得到至少一个子集密钥,使得可将会话密钥K解密以便播放内容。
该接收机最好被划分为组S1,…Sw的集合之一,其中“w”是整数,而这些组在某一树中建立一些子树。
从组S1,…Sw的集合中得到的子集Si1,…Sim最好定义一个覆盖。
该接收机最好在至少一个定义了报头的消息中接收内容,并且该报头包括至多r*log(N/r)个子集密钥和加密,其中,r是撤销集合R中的接收机数,而N是接收机总数。
该接收机最好必须存储logN个密钥,其中,N是接收机总数。
该接收机最好在至少一个定义了报头的消息中接收内容,并且其中接收机利用至多loglogN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
一个撤销集合R最好定义一种生成树,并且具有与生成树的节点连接的根的子树定义这些子集。
该树最好包括一个根和多个节点,每个节点都具有至少一个相应的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
该接收机最好在一个具有报头的消息中接收内容,该报头包括至多2r-1个子集密钥和加密,其中,r是撤销集合R中的接收机数。
该接收机最好必须存储.5log2N+.5logN+1个密钥,其中,N是接收机总数。
最好在至少一个消息中为该接收机提供内容,并且其中接收机利用至多logN个运算加上单个解密运算来处理该消息,其中,N是接收机总数。
该接收机最好通过估算伪随机序列发生器将子集密钥解密。
本发明最好包括一种可以保持内容消息的媒体,消息的一般格式为<[i1,i2,…,im,ELi1(K),ELi2(K),…,ELim(K)],FK(M)>,其中,K是会话密钥,FK是加密原函数(encryption primitive),EK是加密原函数,Li是与加密广播系统中接收机的子集相关联的子集密钥,M是消息主体,而i1,i2,…,im是定义了一种覆盖的树节点子集。
加密原函数FK最好通过将消息主体M与由会话密钥K所产生的流密码进行“异”运算来实现。
EL最好是块密码的截头特性,1表示其长度等于EL的块长度的随机串,而K是用于FK的短密钥,于是消息的格式为<[i1,i2,…,im,U,[Prefix-K-ELi1(U)]/K,…,[Prefix-K-ELim(U)]/K],FK(M)>。
最好加密1/ij,于是消息的格式为<[i1,i2,…,im,U,[Prefix-L-ELi1(U/i1)]/K,…,[Prefix-L-ELim(U/im)]/K],FK(M)>。
最好从含有一个根和多个节点的树中得到子集密钥,每个节点都具有至少一个相关联的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
最好从含有一个根和多个节点的树中得到子集密钥,每个节点都具有至少一个相关联的标记,并且其中每个子集都包括在以某个节点vi为根的子树中的所有叶,该子树中的至少每个节点都与相应的子集密钥相关联。
划分动作最好由接收机的系统中的系统计算机来承担,接收机与系统计算机是分离的。
划分动作最好由接收机计算机来承担。
接收机最好取自覆盖中的子集。
本发明最好包括一种计算机系统,用于承担这里所述的本发明的逻辑。本发明还可以在一种计算机程序产品中实施,这种计算机程序产品可存储本逻辑,并可以被处理器所存取以执行该逻辑。此外,本发明最好还可以包括一种计算机实现的方法,该方法遵循以下所公开的逻辑。
本发明最好包括一种将用户分类成用户子集(可能有重叠)的方法,每个子集都具有一个独特的最好是长期使用的子集密钥,并为每个用户分配各自的个人信息Iu。这种方法最好还包括选择至少一个最好是短期使用的会话加密密钥K,并将不在撤销集合R中的用户划分成具有相应子集密钥Li1,…Lim的分离子集Si1,…Sim。会话密钥K最好用子集密钥Li1,…Lim来加密以提供会话密钥K的m种加密形式。一方面,用户可以在诸如全二叉树的树中建立一些叶,并且该树包含这些子集Si1,…Sim。
在一种优选实施方式中,用户首先被划分为一些组S1,…Sw,其中“w”是整数。某一给定的传输最好选择m个这种组作为非撤销用户的“覆盖”,这种覆盖由撤销用户的集合来定义。“覆盖”组最好在某一树中建立一些子树(可以是完整的子树或者是两个子树之间的差)。用户的个人信息Iu最好被认为是所传送消息中的信息ij,该信息ij表示某个用户属于组S1,…Sw之一中的某个子集Sij。然后,利用该用户的个人信息可以得到或得出子集密钥Lij。
在第一实施方式中,这里称为“完整子树”方法,各个组与完整树中的所有可能的子树相应。每个用户都被分配以一些密钥,这些密钥来自于代表该用户的叶与该树的根之间的直达通路上的所有节点。换言之,每个子集Si都包括在以某个节点vi为根的子树中的所有叶,子树中的至少每个节点都与各自的子集密钥相关联。在这一实施方式中,在一个定义了报头的消息中为用户提供内容,并且该报头包括至多r*log(N/r)个子集密钥和加密,其中,r是撤销集合R中的用户数,而N是用户总数。此外,每个用户都必须存储logN个密钥,并且每个用户都利用至多loglogN个运算加上单个解密运算来处理该消息。
在第二实施方式中,这里称为“子集差”方法,各个用户组与集合S1,…Sw的域(universe)相应,这可被描述为“第一子树A减去完全包含在A中的第二子树B”。这一树中的每个节点都有一个标记集合,对该节点唯一的一个节点以及祖先节点所引出的其他节点。每个用户都被分配以一些标记,这些标记来自于接收机与根之间的直达通路上的节点之外的所有节点(每个这种节点至多得到logN个标记),而不是来自于直达通路本身的节点。换言之,每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。一个特定用户的子集差节点的标记之一可以在传输中提供给该用户,作为该用户的个人信息。利用这些标记,用户可以产生解密所需的子集密钥。
在这一实施方式中,消息报头包括至多2r-1(平均1.25r)个子集密钥和加密,每个用户都必须存储.5log2N+.5logN+1个密钥,并且每个用户都利用至多logN个运算(最好是伪随机发生器的应用)加上单个解密运算来处理该消息。
如下关于子集差方法的进一步所公开,撤销集合R定义一个生成树。将覆盖树T初始化为生成树,然后,该方法迭代地从覆盖树T中去除节点和在覆盖树T中增加子树直到覆盖树T中具有至多一个节点。覆盖树T用来识别在特定传输中所要使用的子集密钥,用户估算伪随机序列发生器以便从这些标记中得到子集密钥。为了有效处理撤销,最好从左至右进行处理,这样,每次在存储器中只须保持两个撤消。
在某些具体的实施方式中,消息报头包含密码函数EL,并且该方法包括对密码前缀函数EL进行截头。需要的话,消息的一些部分可以用各自的会话密钥进行加密。
另一方面,计算机程序设备最好包括本身含有计算机可用的指令的程序的计算机程序存储设备。该程序包括用于访问树以得到多个子集密钥的逻辑装置,和用会话密钥将消息加密的逻辑装置。还可以提供一些至少一次用子集密钥中的每一个密钥将会话密钥加密的逻辑装置,以提供会话密钥的加密形式。然后,逻辑装置在消息的报头中将会话密钥的加密形式发送到多个无状态接收机。
另一方面,计算机最好用指令来编程,使得计算机可以加密广播内容,并将广播内容发送到多个无状态的善良接收机和发送到至少一个撤销接收机,这样,每个无状态的善良接收机都能将内容解密而撤消接收机无法将内容解密。
另一方面,广播加密系统中的潜在无状态接收机u最好包括一个存储各自个人信息Iu的数据存储器,和一个接收用多个子集密钥加密的会话加密密钥K的处理设备。会话密钥将内容加密,处理设备利用个人信息得到至少一个子集密钥,这样,可以将会话密钥K解密以便播放内容。在一种优选实施方式中,接收机被划分为组S1,…Sw的集合之一,其中“w”是整数,而这些组在某一树中建立一些子树。从组S1,…Sw的集合得到的子集Si1,…Sim定义一种覆盖,这种覆盖可由接收机或者由系统计算机计算出。该树最好包括一个根和多个节点,每个节点都具有至少一个相应的标记。每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
另一方面,媒体最好保持一种内容消息,消息的一般格式为<[i1,i2,…,im,ELi1(K),ELi2(K),…,ELim(K)],FK(M)>,其中,K是会话密钥,FK是加密原函数,EK是加密原函数,Li是与加密广播系统中接收机的子集相关联的子集密钥,M是消息主体,而i1,i2,…,im是定义了一种覆盖的树节点子集。


下面,将参照附图只通过举例来描述本发明的一些优选实施方式,其中图1是本系统的框图;图2是总加密逻辑的流程图;图3是总解密逻辑的流程图;图4是完整子树方法的密钥分配部分的流程图;图5是完整子树方法的加密部分的流程图;图6是完整子树方法的解密部分的流程图;图7是完整子树的子集的示图;
图8是子集差方法中的子集的示图;和图9是子集差方法中的子集的示图的另一种形式。
图10是子集差方法中用于定义覆盖的逻辑的流程图;图11是子集差方法中的树的子集的示图,图中示出了密钥分配;图12是子集差方法的解密部分的流程图;图13是子集差方法中用于分配密钥的逻辑的流程图;和图14是子集差方法中的树的子集的示图。
具体实施例方式
首先参照图1,图中示出了一种系统(通常用10表示),用于产生广播内容防护系统中的一些密钥集合,这种系统比如是上述引用专利中所公开的系统(但并不局限于此)。“广播”的意思是,将内容提供者的程序同时通过电缆(从卫星源)、或有线、或射频(包括从卫星源)或从大量上市的内容盘片广泛传播给许多用户。
如图中所示,系统10包括一个可以访问密钥集合定义模块14的密钥集合定义计算机12,该模块的作用如以下所述。计算机12所定义的密钥集合被潜在的无状态播放-记录设备16(这里也称为“接收机”和“用户”)所使用,这些播放-记录设备内含有将内容解密的处理器。内容以及以下所述的某些密钥经由比如设备制造商16通过媒体17提供给各自的设备。播放-记录设备可以访问其密钥集合以便将媒体上的内容解密或者通过无线通信对其进行广播。这里所使用的“媒体”可包括DVD、CD、硬盘驱动器和闪存设备(但并不局限于此)。在另一实施方式中,每个接收机16可以执行模块14,以承担以下步骤通过给出撤销接收机的集合计算出下述“覆盖”,并承担下述逻辑。
应当理解,与模块14相应的处理器可以访问这些模块,以承担以下所说明和讨论的逻辑,该逻辑可以由处理器将其作为一系列计算机可执行指令来执行。这里公开了两种方法(完整子树方法和子集差方法),它们可以利用系统10有选择地使有危害的接收机16丧失解密广播内容的能力,而不会使任何没有危害的接收机16丧失解密广播内容的能力。
指令可以包含在数据存储设备以及计算机可读媒体中,比如存储有计算机可用媒介及计算机可读代码单元的计算机磁盘。或者,指令可以存储在DASD列阵、磁带、通用硬盘驱动器、电子只读存储器、光存储器件或其他适当的数据存储器件中。在本发明的一种说明性的实施方式中,计算机可执行指令可以是多行编译的C++兼容代码。
实际上,这里的流程图说明了正如计算机程序软件中所实施的本发明的一种优选实施方式的逻辑的结构。熟练技术人员可以明白,这些流程图说明了包括集成电路上的逻辑电路的计算机程序代码单元的结构,其作用如本发明所述。显然,本发明可以通过一种机器部件以其基本的实施方式来实现,这种机器部件可以提供程序代码单元,其提供方式是指令数字处理设备(即计算机)执行与所述功能动作相应的功能动作序列。
子集差方法和完整子树方法所实施的本发明的一种优选实施方式的总逻辑可以参见图2。为了便于本公开的说明,假定,在系统10中存在N个接收机16,并且希望即使被撤销的接收机子集R中的r个接收机(通过共用加密方法)联合行动,也能使这些撤销接收机丧失解密内容的能力,从而任何接收机都还能解密内容。从块19开始,通过向子集S1,…Sw(按以下公开方式将接收机分类成子集)域中的相应子集分配长期使用的子集密钥L1,…Lw来启动系统,因此每个子集Sj都具有与其相关联的长期使用的子集密钥Lj。在第一种(“完整子树”)方法中,覆盖了不在撤销集合中的接收机的子集只是按以下公开方式所产生的子树。在第二种(“子集差”)方法中,覆盖了不在撤销集合中的接收机的子集由第一子树与完全包含在第一子树中的较小子树的差来定义,进一步情况如下所述。
在块20中,还可以通过向每个接收机u提供用于解密内容的个人信息Iu来启动系统。个人信息Iu的详细情况如以下进一步所述。如果Iu是提供给接收机u的秘密信息,那么Sj中的每个接收机u都可以从其Iu中得出Lj。如下所详述,给定撤销集合R,将非撤销接收机划分成m个分离子集Si1,…Sim,并用与各自子集Si1,…Sim相关联的长期使用的子集密钥Li1,…Lim将短期使用的会话密钥K加密m次。子集密钥在完整子树方法中是明确的子集密钥,而在子集差方法中则由子集标记引出。
具体地说,在块22中,选择至少一个会话密钥K,用于将消息M中所广播(通过无线或有线通信通道或者通过诸如CD和DVD等存储媒体)的内容加密。会话密钥K是一种针对每个消息都要重新选择的随机比特串。需要的话,可以使用多个会话密钥来加密消息M的各个部分。
在下述两种方法中,在块24中,利用一种树将非撤销接收机划分成分离子集Si1,…Sim。这些子集在这里有时称为“子树”,第一种方法明确地考虑了子树,而第二种方法则认为子树具有“第一子树减去完全包含在第一子树中的第二子树”的形式。每个子集Si1,…Sim都与各自的子集密钥Li1,…Lim相关联。尽管这里考虑到了任何数据树形结构,然而,为了便于说明,假定该树是全二叉树。
进至块26,每次用每个子集密钥Li1,…Lim,将会话密钥K加密m次。所得到的广播密文可按如下方式表示(其中括号之间的部分表示消息M的报头,而i1,i2,…,im则表示分离子集的指数)<[i1,i2,…,im,ELi1(K),ELi2(K),…,ELim(K)],FK(M)>
在一种实施方式中,加密原函数FK通过将消息M与会话密钥K所产生的流密码进行“异”运算来实现。加密原函数EL是一种利用长期使用的子集密钥将会话密钥K传送给接收机16的方法。应当理解,FK、EL的所有加密算法都在本发明的优选实施方式的范围内。EL的一种优选实施方式可以是块密码的截头特性。假定1表示其长度等于EL的块长度的随机串,并假定K是用于密码FK的其长度例如为56比特的短密钥。那么,[Prefix-K-EL(l)/K]提供一种强加密。相应地,截头报头便成为<[i1,i2,…,im,U,[Prefix-K-ELi1(U)]/K,…,[Prefix-K-ELim(U)]/K],FK(M)>
这很好地将报头长度减小到约m-k-比特,而不是m-L-比特。在EL的密钥长度最小的情况下,可以用如下方式去除对手在强力攻击时(由于用m个不同的密钥加密同一个串1所造成)所具有的系数m优势。对串1/ij进行加密。即<[i1,i2,…,im,U,[Prefix-L-ELi1(U/i1)]/K,…,[Prefix-L-ELim(U/im)]/K],FK(M)>
虽然描述了优选实施方式,然而也可以非限定方式来实现加密原函数E和F,下面参照图3,图中说明了接收机16所承担的解密逻辑。从块28开始,每个非撤消接收机u找出密文中的子集标识符ij,这样该接收机属于子集Sij。如下所详述,如果该接收机在撤销集合R中,那么,块28的结果将为空。接着,在块30中,接收机利用个人信息Iu提取出与子集Sij相应的子集密钥Lij。利用该子集密钥,在块32中确定会话密钥K,然后在块34中利用会话密钥K将消息解密。
承担上述总逻辑的两种优选方法如下所述。在每种方法中,指定子集的集合,如将密钥分配给这些子集以及利用该集合中的分离子集来覆盖非撤销接收机那样。在每种方法中,系统中接收机的集合建立诸如全二叉树(但并不局限于此)的树的叶。
所要讨论的第一种方法是图4-7中所示的完整子树方法。从图4中的块36开始,将独立且随机的子集密钥Li分配给该树中的每个节点vi。这一子集密钥Li与一个含有以节点vi为根的所有叶的子集相应。然后,在块38中,为每个接收机u提供从接收机到根的直达通路中的所有子集密钥。如参照图7所简述,为子集节点Si中的接收机u提供与节点vi相关联的子集密钥Li以及与位于Si中的接收机与树的根之间的节点P相关联的密钥。
当需要发送消息并使某些接收机丧失解密消息的能力时,调用图5的逻辑将非撤销接收机划分成分离子集。从块40开始,找出撤销接收机的集合R中的叶所定义的生成树。生成树是连接“撤销”叶的全二叉树的最小子树,它可以是一种Steiner树。进至块42,识别出具有与树中的第一级的节点(即与最小树直接相邻的节点)邻近的根的子树。这些子树定义了“覆盖”并建立子集Si1,…Sim。该覆盖包围了所有非撤销接收机。相应地,在块44中,利用该覆盖所定义的子集密钥将会话密钥K加密。
为了将消息解密,每个接收机都调用图6中的逻辑。从块46开始,通过确定任意祖先节点是否在消息报头中的集合i1,i2,…,im中来判断接收机的任意祖先节点是否与覆盖的子集密钥相关联。可用接收机的个人信息Iu(在完整子树方法中,该信息包括接收机在树中的位置以及与祖先节点相关联的子集密钥)来进行这种确定。如果在消息报头中找到了一个祖先节点(表示该接收机是非撤销接收机),那么,在块48中利用子集密钥将会话密钥K解密,然后,在块50中利用会话密钥K将该消息解密。
在完整子树方法中,报头包括至多r*log(N/r)个子集密钥和加密。这也是密钥和加密的平均个数。此外,每个接收机都必须存储logN个密钥,并且,每个接收机都利用至多loglogN个运算加上单个解密运算来处理该消息。
下面参照图8-13,可以看到用于撤销接收机的子集差方法。在子集差方法中,与完整子树方法不同,每个接收机都必须存储相对更多的密钥(.5log2N+.5logN+1个密钥),但消息报头只包括至多2r-1个子集密钥和加密(平均1.25r),实际上这要比完整子树方法中的短。此外,在子集差方法中,利用伪随机数发生器的至多logN个应用加上单个解密运算来处理该消息。
参照图8和9,子集差方法认为子集是较大子集A与完全包含在A中的较小子集B的差。相应地,如图中所示,较大子树以节点vi为根,而较小子树以vi之下的节点vj为根。结果子集Si,j包括了vi之下的所有叶“yes”,但vj之下标记为“no”(颜色比标记为“yes”的叶更深)的那些叶除外。图9说明了这种情况,其中子集vj,j用较大三角形中除较小三角形之外的面积来表示。
当在子集差方法中需要发送消息并使某些接收机丧失解密消息的能力时,使用上述结构,如图10中所示。从块52开始,找出R(撤销接收机的集合)中的叶所定义的生成树。生成树是连接“撤销”叶的全二叉树的最小子树,它可以是一种Steiner树。进至块54,将覆盖树T初始化为生成树。然后开始迭代循环,其中,从覆盖树中去除节点和在覆盖中增加子树直到覆盖树T中具有至多一个节点。其输出界定了非撤销接收机的覆盖。
具体地说,从块54进至块56,从覆盖树T中找到叶vi和vj,这样,它们最小的共同祖先节点v不包括T中的其他叶。在判决菱形57中,判断覆盖树T中是否只有一个叶。如果有多于单个叶存在,那么,逻辑进至块58,找出v中的节点vl和vk,这样,vi在vl之下而vj在vk之下,并且,vl、vk是v的子节点(即是v的直接后代,在v与vl、vk之间没有任何插入节点)。反之,当T中只有单个叶时,逻辑从判决菱形57进至块60,设vi=vj=唯一余下的叶,设置v为T的根,并设vl=vk=根。
逻辑可以从块58或60进至判决菱形62。在判决菱形62中,判断vl是否等于vi。同样可以判断vk是否等于vj。如果vl不等于vi,那么逻辑进至块64,在T中增加子集Sl,i,从T中去除v的所有后代,并使v成为叶。同样,如果vk不等于vj,那么逻辑进至块64,在T中增加子集Sk,j,从T中去除v的所有后代,并使v成为叶。逻辑循环从块64或者当没有判定不相等时从判决菱形62返回到块56。
鉴于子集差密钥分配方法的以上总体情况,下面将陈述一种特别优选的实现方式。当接收机所属的子集的总数等于N时,这些子集可以被分类为由第一子集i(从其可减掉另一个子集)所定义的logN个群集。对于与全树中的内部节点相应的每个1<i<N,可以选择独立且随机的标记LABELi,该标记可以引出形式为Si,j的所有合理子集的标记。根据这些标记得到子集密钥。图11示出了以下所讨论的优选的标记方法。标记为Li的节点是子树Ti的根,而其后代根据本原则进行标记。
如果G是输入长度三倍的密码伪随机序列发生器,那么,G_L(S)表示种子S上G的输出的左边第三个,G_R(S)表示右边第三个,而G_M(S)表示中间第三个。下面考虑以标记为LABELi的节点vi为根的覆盖树T的子树Ti。如果这一节点被标记为S,那么,它的两个子节点分别被标记为G_L(S)和G_R(S)。分配给集合Si,j的子集密钥Li,j是在子树Ti中得到的节点vj的标记LABELi,j的G_M。注意,每个标记S都引出三个部分,即左子节点和右子节点的标记以及节点的密钥。因此,给定节点的标记,就可以计算出其所有后代的标记和密钥。在一种优选实施方式中,函数G是一种密码散列,比如安全散列算法-1,当然也可以采用其他函数。
图12示出了在子集差方法中接收机如何将消息解密。从块66开始,接收机找到它所属的子集Si,j以及相应的标记(它是接收机的个人信息的一部分,这种信息使得接收机可以得到LABELi,j和子集密钥Li,j)。利用这种标记,在块68中,接收机通过至多N次估算函数G就可以计算出子集密钥Li,j。然后,在块70中,接收机利用该子集密钥来解密会话密钥K,用于后续消息解密。
图13示出了在子集差方法中如何将标记以及此后的子集密钥分配给接收机。利用这里所公开的标记方法可以使每个接收机所必须存储的密钥个数最少。
从块72开始,为每个接收机提供不在该接收机与根之间的直达通路上而在该直达通路之外的并由某个节点vi(即u的祖先)所引出的节点的标记。在块74中,这些标记建立该接收机的个人信息Iu,在块76中,利用从这些标记得出的子集密钥对后续消息会话密钥进行加密。
下面简要参照图14来说明上述原理。对于具有接收机u的标记S的每个vi祖先,接收机u接收在从节点vi到接收机u的直达通路之外的所有节点71上的标记。如下所详述,这些标记最好都是从S得出的。与完整子树方法形成鲜明对照,在图8-14中所述的子集差方法中,接收机u没有接收来自从接收机u到节点vi的直达通路上的任何节点73的标记。利用这些标记,接收机u通过估算上述函数G可以计算以节点vi为根的所有集合(直达通路集合除外)的子集密钥,但不能计算其他子集密钥。
常规多点广播系统缺乏反向保密性,即已被撤销的经常收听的接收机仍然可以记录所有加密内容,然后在未来某一时候获得有效新密钥(例如通过重新注册),使得可以将过去的内容解密。针对这种情形,可以利用本发明的一种优选实施方式,通过在撤销接收机的集合中包含所有尚未被分配的接收机身份来消除这种缺乏反向保密性的缺陷。如果所有接收机都按连续的次序被分配给叶,这就可以被实现。在这种情况下,撤销所有未分配的身份将适度增加消息报头的大小,但不会与这些身份的个数成比例。
本发明的一种优选实施方式还认识到,希望在消息报头中具有子集ij的简明编码,并为接收机提供一种判断它是否属于子集ij的快速方法。假定,一个节点用它到根的通路来表示,其中,0表示左分支而1表示右分支。通路的终点用1后面跟零或多个0比特来表示。因此,根为1000…000b,根的最右边子节点为01000…000b,最左边子节点为11000…000b,而叶为xxxx…xxxx1b。
如这里所述,较大子树的根的通路为较小子树的根的通路的子集,这样,子集差可以用较小子树的根加上到较大子树的根的通路的长度来表示。鉴于此,接收机通过执行以下Intel Pentium处理器环,可以快速地判断它是否在给定子集中。
在该环外面,可以安装下列寄存器ECX包括接收机的叶节点,ESI指向消息缓冲器(第一个字节是到较大子树根的通路的长度,而其后的四个字节是较小树的根),并且,静态表输出32比特(当用通路的长度索引时),其中第一个长度比特为1,而其他比特为0。
loopMOV BYTE EBX,[ESI++]MOV DWORD EAX,[ESI++]XOR EAX,ECXAND EAX,TABLE[EBX]JNZ loop如果接收机离开该环路,那么,未必意味着它属于该特定子集。它可能在较小的除外子树中,如果是这样,那么必须返回到环路中。然而,由于在绝大多数情况下,接收机甚至不在较大子树中,因此,在环中几乎没有浪费处理时间。
在子集差方法的进一步的优化中,系统服务器不必记住每个标记(可能多达上百万个)。第i个节点的标记可以作为该节点的保密函数。保密函数可以是三重DES加密,以便当应用于编号i时利用秘密密钥提供第i个节点的标记。
权利要求
1.一种用于广播加密的方法,包括为一组用户中的每个用户分配相应的个人信息Iu;选择至少一个会话加密密钥K;将不在撤销集合R中的用户划分成具有相关联的子集密钥Li1,…Lim的分离子集Si1,…Sim;和用子集密钥Li1,…Lim将会话密钥K加密以提供会话密钥K的m种加密形式。
2.权利要求1的方法,还包括将用户划分成一些组S1,…Sw,其中“w”是整数,并且这些组在某一树中建立一些子树。
3.权利要求2的方法,其中,每个子集Si1,…Sim都包括在以某个节点vi为根的子树中的所有叶,子树中的至少每个节点都与一个相应的子集密钥相关联。
4.权利要求3的方法,其中,在至少一个定义了报头的消息中为用户提供内容,并且该报头包括至多r*log(N/r)个子集密钥和加密,其中,r是撤销集合R中的用户数,而N是用户总数。
5.权利要求3的方法,其中,撤销集合R定义一种生成树,并且具有与生成树的节点连接的根的子树定义所述子集。
6.权利要求2至5任一的方法,其中,该树包括一个根和多个节点,每个节点都具有至少一个相关联的标记,并且其中每个子集都包括在以某个节点vi为根的子树中但不在以vi之下的其他某个节点vj为根的子树中的所有叶。
7.权利要求6的方法,其中,在至少一个定义了报头的消息中为用户提供内容,并且该报头包括至多2r-1个子集密钥和加密,其中,r是撤销集合R中的用户数。
8.权利要求6或7的方法,其中,每个用户都必须存储.5log2N+.5logN+1个密钥,其中,N是用户总数。
9.权利要求6至8任一的方法,其中,在至少一个消息中为用户提供内容,并且其中每个用户都利用至多logN个运算加上单个解密运算来处理该消息,其中,N是用户总数。
10.权利要求6至9任一的方法,其中,撤销集合R定义一个生成树,并且其中该方法包括将覆盖树T初始化为生成树;迭代地从覆盖树T中去除节点和在覆盖中增加节点直到覆盖树T中具有至多一个节点。
11.权利要求6至10任一的方法,其中,每个节点都具有至少一个可能由其祖先节点的至少之一所引出的标记,并且其中每个用户都被分配以标记,所述标记来自于该用户与根之间的直达通路之外的所有节点而不是来自于该直达通路上的节点。
12.一种包括计算机程序代码的计算机程序,当它被装载到计算机系统中并被执行时,可以使所述计算机系统完成权利要求1-11任一中所述的方法的步骤。
13.用于广播加密的设备,包括用于为一组用户中的每个用户分配相应的个人信息Iu的装置;用于选择至少一个会话加密密钥K的装置;用于将不在撤销集合R中的用户划分成具有相关联的子集密钥Li1,…Lim的分离子集Si1,…Sim的装置;和用于用子集密钥Li1,…Lim将会话密钥K加密以提供会话密钥K的m种加密形式的装置。
全文摘要
一种树用于将广播内容加密系统中的无状态接收机划分成一些子集。这里公开了两种不同的划分方法。当识别出一个撤销接收机集合时,这些撤销接收机用分离子集来定义一个相对较小的非撤销接收机的覆盖。然后,利用一些与这些子集相关联的子集密钥来加密会话密钥,会话密钥又用来加密广播内容。只有非撤销接收机可以解密这种会话密钥,并因此来解密内容。
文档编号H04L12/18GK1489847SQ0280413
公开日2004年4月14日 申请日期2002年1月23日 优先权日2001年1月26日
发明者杰弗里·B·鲁特斯皮奇, 达里特·纳欧, 西门·纳欧, 纳欧, 杰弗里 B 鲁特斯皮奇, 纳欧 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1