数据发布的利记博彩app

文档序号:7601484阅读:367来源:国知局
专利名称:数据发布的利记博彩app
技术领域
本发明涉及一种提供对数据的受控访问的数据发布系统。例如,根据用户的预付款,该系统可用于在一定的时期内提供对多点传送的声频或视频节目内容的访问。但是本发明并不限于用于多点传送数据分组网络,也可能用于,比如包括诸如DVD(数字万用磁盘)的存储介质在内的其它的成批数据发布渠道。
背景技术
多点传送技术被开发用于因特网,它能够将数据高效地从数据源发布给大量的接收者。但是,现有的多点传送协议的高效性和可升级性部分地依赖于这一事实,即数据源不必有任何有关数据接收者的知识。这在希望在数据源和接收者之间建立保密关系,例如以便将诸如电视节目的流式视频数据仅传送给那些已为接收节目而预先付费的订购者时将存在问题。
一般地,可以通过在数据源对数据进行加密,然后控制用户对解密数据所需密钥的访问来建立这种保密关系。一个简单的方法是用一个单个话路密钥加密数据。该话路密钥一直保持不变直到一个新的用户希望访问该数据,或直到现有的用户之一被排除。此时,需要一个新的话路密钥并将其发布给所有的用户。虽然通过使用密钥的分级可以一定程度地改善该密钥发布方案的效率,在排除或加入一个特定的用户时在这种密钥的分级中只有一些需要改变,但是在新用户加入或离开时,该方案仍然有较大的传输开销。
在本发明共同待审的国际专利申请PCT/GB98/03753(BT caseA25728/WO)中描述的另外一个方法中,数据在数据源被划分为一系列的应用数据单元(ADU)并且每个ADU使用一个不同的密钥。这些密钥由一个初始种子值系统地生成为一个序列。该种子值也被传送给每个用户终端处的保密模块,该保密模块控制最终用户可否使用该密钥。

发明内容
根据本发明的第一方面,提供一个发布数据的方法,包括(a)对多个数据单元中的每一个数据单元用密钥序列中的一个密钥进行加密;(b)将加密过的数据单元传送给多个用户终端;(c)将至少一个种子值传送给一个用户终端;(d)从该种子值生成一个密钥序列,其密钥个数大于传送给用户终端的种子值的个数;以及(e)在用户终端使用所述的密钥序列解密数据单元,特征在于,在步骤(d)中,生成一个构成步骤(a)的密钥序列的一个任意双重界定部分的密钥序列,并且,所述部分的上下边界在序列中的位置由步骤(c)中传送的至少一个种子值来决定。
本发明提供一个发布数据的方法,其中如在上面提到的共同待审的申请中揭示的系统中那样,用一个不同密钥的序列加密连续的数据单元。但是,本发明的方法提供进一步的显著的优点,其中每个用户可用的密钥序列的范围不是如在前一个系统中那样可能是无限的,而是被双重界定,也就是说,用户可用的密钥序列的开始和结束位置是事先确定的。如下面进一步说明的那样,数据发送者,或代表数据发送者而动作的密钥发布方,可以通过选择发送给用户的种子值来任意地确定用户可用的密钥序列的开始和结束点及长度。对密钥序列的任何所希望的部分都存在一个种子的集合,该集合提供对该部分并且仅对该部分的访问。通过给用户提供对双重界定的密钥集合的访问,而不是对一个无限制的密钥集合的访问,本发明使不必在每个用户终端安装由数据发送者控制的用于控制用户访问密钥的保密模块。
优选地在步骤(a)中使用的密钥序列如下生成(A)对一个或多个初始种子值进行运算,生成更多个中间种子值,该中间种子值隐蔽该初始种子值;(B)进一步对前一步骤生成的值进行运算,生成更多个深一层的值,该深一层的值隐蔽前一步骤生成的值;(C)重复步骤(B)直到生成的值的个数等于或大于步骤(a)所需的密钥的个数。
优选地,该方法包括(i)用一组不同的隐蔽函数中的每一个函数对一个根种子值进行运算,生成多个深一层的值;(ii)用该组不同的隐蔽函数中的每一个函数对前一步骤生成的深一层的值进行运算;(iii)重复步骤(ii),通过该重复或每个重复,生成值树中的下一层;(iv)在步骤(a)中,使用步骤(ii)的最后一次重复中导出的值作为密钥序列。
(v)在步骤(c)中,将至少一个来自根种子值下面的树的值传送给一个用户,传送给该用户的值在树中的位置决定了用户用于解密数据单元的可用密钥序列部分的位置和范围。
隐蔽函数对输入值进行运算以生成输出值,其中即使已知该函数,也不易从输出值推导出输入值。隐蔽函数可以包括,比如,诸如MD5(消息摘要数5)的加密哈希函数。
发明人发现,一种系统地生成一系列的密钥同时可以对用户可用的序列部分的位置和范围进行简单控制的有效方法是用一组不同的隐蔽函数重复运算以生成一个值的树。在下面更详细的说明的例子中,使用了一个由一对对称的隐蔽函数形成的二叉树。一个函数是一个右转移位后跟一个哈希函数,另一个函数是左旋移位后跟一个哈希函数。本发明的本特征并不限于使用二叉树,也可以用三叉树或更高级树来实现。
优选地,在步骤(c)中,种子值被通过通信网络传送给用户终端,在本情形下,种子值优选地从多个密钥管理节点被传送给用户终端,其中节点在不同地点连接到网络上。
本发明的优选的实施例的另一个优点是提供对编码数据的访问的发布种子值的处理可以被移交给多个位于不同地点的密钥管理节点,这些节点的一些或全部远离数据源。这样建立的数据控制系统可灵活用于大量的接收者。
一般,数据单元和种子值通过相同的通信网络来发布。但是,这个并不必要。例如,可以将数据单元发布在诸如DVD的成批数据存储介质上,而随后通过因特网将种子值在线地发送给用户。很明显,这些例子仅用于说明,可以采用很多不同的实现方法。
优选地以隐含地标识每个种子的顺序传送任何接收者构建用于整个密钥序列的一个特定子范围所需的密钥的种子。在这种情况下,根据要求的最小和最大值和传送种子的预先确定的顺序的知识,推导出该种子的索引,而不用显式地列出每个种子的索引号。优选地每个加密的数据单元承载一个未加密的索引号以向各用户标识解密该数据单元应该使用序列中的哪一个密钥。
根据本发明的另一个方面,提供一种加密发布数据的方法,包括(a)用一个或多个隐蔽函数对至少一个根种子值进行运算,从而生成多个深一层的值;(b)用一个或多个隐蔽函数对前一步骤生成的深一层的值或从其导出的值进行运算;(c)重复步骤(b),通过该重复或每个重复生成值树中的下一层;(d)用由步骤(c)中生成的一个或多个推导出的密钥值序列加密多个数据单元。
根据本发明的另一个方面,提供一种发布数据的方法,包括用密钥序列中的一个密钥加密多个数据单元中的每个单元,将加密的数据单元传送给多个用户终端,其特征在于,根据一个密钥构造算法生成该密钥序列并将其分配到应用数据单元中,并且,该密钥构造算法的复本被发布给多个密钥管理器,以便在使用中,接收者可以从一个密钥管理器获得用于访问数据的一个任意部分的密钥,而不必向任何数据发送者查询。
本发明的这个方面提供一种数据发布的方法,其中密钥管理可以被移交给多个密钥管理节点,使系统可以被升级以包含大量的用户。
根据本发明的另一个方面,在根据前述方面的方法中,提供一个包括多个加密的数据单元的数据载体。该数据载体可以是,比如,诸如DVD盘、计算机存储器的一个区域、或用数据单元编码的数据传输信号之类的数据存储介质。
本发明还包含使用本发明的用户终端、数据服务器以及密钥管理器、使用这些设备的方法和包括这些设备的网络。


下面参照附图来详细说明实施本发明的系统,其中图1是一个实施本发明的网络的示意图;图2表示图1所示网络中的一个用户终端的结构;图3表示图1所示网络中的一个密钥管理节点的结构;图4表示图1所示网络中的一个数据发送者的结构;图5表示图1所示网络中传输的数据分组的格式;图6表示通过密钥管理节点进行的密钥发布;图7表示一个双向哈希链;图8表示两个隐蔽函数的生成;图9表示一个二叉哈希树;图10表示一个连续二叉哈希树;图11表示一个混合二叉哈希链树的元素;
图12表示一个混合二叉哈希链树;图13说明混合二叉哈希链树的构造;图14表示一个二叉哈希链树的生长序列;图15表示一个连续二叉哈希链树混合;图16表示一个第二二叉哈希树的元素;图17说明揭示和隐蔽BHC-T中的种子对;图18说明揭示和隐蔽第二二叉哈希树中的种子;图19表示一个多维密钥序列;图20a到20e表示一个通用模型。
具体实施例方式
一个数据通信系统包括一个通过数据通信网络2连接到多个用户终端3的数据服务器1。虽然为了便于说明只示出几个用户终端,但在实际中数据服务器1可能与很多终端同时通信。在本例中,数据通信网络2是公共因特网并由通过节点4相互连接的多个子网络2a-2c组成。该子网络和相关联的路由器支持IP(因特网协议)多点传送。
在本例中,数据服务器1是视频服务器。该数据服务器从一个海量存储设备1a读取一个视频数据流并用诸如MPEG2的合适的压缩算法压缩数据。然后数据服务器1中的保密模块将压缩的视频数据流分成应用数据单元(ADU)。例如,每个ADU可以包含对应于一分钟的视频信号的数据。然后利用一个加密算法用系统地生成的密钥序列对ADU加密,其中每个ADU用不同的密钥。合适的加密算法包括DES(数据加密标准)(US联合标准FIPSPUB46)。这是一个传统的私有密钥算法。用于生成密钥序列的种子值也从数据服务器1传送给多个密钥管理节点。该密钥管理节点散布在数据通信网络中的不同位置。为了响应来自一个用户终端的请求,密钥管理节点将多个种子值传送给该终端。在传送种子值前相应的密钥管理节点可能实施检查,例如,确认相关的用户终端是否有权访问所请求的数据。例如,该用户可能有所请求的访问从视频数据服务器1多点传送的某一电影的权利。如果该电影是每次付费观看,该密钥管理节点负责检查该用户是否有该视频数据服务器的运营者的帐户和是否已为该电影适当地预付费。如果这些条件都满足,则该密钥管理节点将选择的种子发布给用户,允许用户生成密钥。该密钥对应于在数据服务器中用来加密组成该电影的ADU的密钥序列部分。如下的详细说明,用于生成密钥序列的算法使适当选择的种子值可用来提供对原始密钥序列的一个任意界定部分的访问。
图2表示一个用户终端3的主要的功能组成部分。网络接口22从或向数据通信网络2接收或发送ADU。该ADU从接口22传递给访问模块23。与访问模块23可能位于一个独立的保密模块(例如智能卡)中的以前的系统不同,在实施本发明的系统中,访问模块可以是一个在用户终端的主处理器中运行的软件模块。访问模块23包括一个解密模块D,一个密钥生成模块K和一个种子存储器SS。种子存储器存储从密钥管理节点接收的种子值并用一个密钥构造算法,如下面详细说明的那些算法,来处理那些种子值以生成一系列的密钥。该一系列密钥有由种子存储器SS保存的种子值决定的开始点和结束点。把本序列中的密钥顺序地传递给解密模块D。解密模块D解密从接口22接收的一系列的ADU,并将其传递给应用层模块24。这将进行进一步的处理,例如用MPEG2解密算法,并将结果数据传递给一个输出设备,在本例中是一个视频显示单元VDU 25。在优选的实现中,接口22可以通过ISDN调制解调器用硬件实施或通过TCP-IP(传输控制协议-因特网协议)栈用软件实施。
用户终端可以用多种形式实施。例如,终端可以包括带有适当网络接口的个人计算机、智能移动电话、以及与电视机协力提供因特网访问的机顶盒。
图3表示图1的网络中的一个密钥管理节点的一个例子的结构。该节点通过TCP-IP栈将数据分组传送给数据发送者和用户终端或“接收者”。以传统的方式使用一个公共密钥加密算法通过加密套接字协议层(SSL)32传送数据分组,密钥管理应用程序33以在后面进一步详细说明的方式从数据发送者接收种子值并将发布的种子值发送给用户终端。与密钥管理应用程序33关联的数据存储器330保存从该数据发送者或每个数据发送者接收的种子值。用户通过一个用户接口34与密钥管理应用程序相互作用,例如,用户接口34可以用HTML(超文本链接标示语言)和CGI为用户终端提供网页。
图4表示图1的网络中的一个数据发送者的一个例子的结构。数据应用程序41输出数据,在本例中,数据包括一个被分为多个应用数据单元的MPEG2视频流。该视频节目内容从存储器410中导出。ADU被传递给访问模块42。它包括一个加密子模块、一个密钥生成子模块K和一个种子存储器SS。子模块K协同诸如后面见一步详细说明的密钥构造算法使用随机生成的种子值来生成一个密钥序列。种子值也可以通过加密套接字层43和TCP-IP栈44从访问模块42输出。加密的ADU也通过TCP-IP栈44输出。
数据服务器和密钥管理节点都可以用商用的平台,如COMPAQ ProliantTM服务器或Sun Microsystems Enterprise 5000TM服务器来实现。
图5表示数据发送者输出的一个数据帧的格式。它包括一个承载加密ADU的数据有效负载、一个密钥索引ki和一个话路标识符SE。密钥索引和话路标识符按原样发送。
一般,密钥值可以通过与用于发布ADU相同的通信网络发布给用户终端。
在本说明书中用术语“应用数据单元”(ADU)来描述从保密或商业的观点来看有用的最小数据单元。ADU的大小可能随着所需的应用和保密性变化。它可能是一个初始化帧和一个视频序列中的相关的“P-帧”集合,或者可能是对一个网络游戏的10分钟的访问。用来加密的ADU可能与一个应用的不同层使用的ADU不同。例如,在本例中ADU与MPEG压缩算法处理的视频帧的持续期间不同,也与用户购买的个人节目项的持续期间不同。为了提高系统的性能,可能只部分地加密ADU,其余的按原样发送。ADU的大小可能在随内容而定的流的持续期间变化。如果在15分钟内有一百万个接收者加入一个多点传送数据流,应用数据单元的大小是系统可升级性的一个主要的决定因素,但ADU的大小也是15分钟,那么这将只需要一个重新分配密钥(re-key)事件。下面详细说明不同的密钥序列构造算法。
发送者去耦结构本发明不限于使用图1的方法中的简单的时序。例如,本发明可应用于大规模的网络游戏。
在这种游戏中,ADU的经济价值与时间或数据量无关,仅与一个完全的应用特定因素有关。在本例中,参加者按每“游戏分钟”付费,持续期间不是严格地与实际时间的分钟有关,而是由游戏时间保持器定义和发信号表示。该游戏包括很多虚拟地域,每个由不同的地域控制器调节。该地域控制器提供带给地域生命的后台事件和数据。它们将这个加密的数据传送给每个地域的一个多点传送地址,但是在所有的地域的任何时间使用相同的ADU索引和密钥。因此尽管被散布到多个多点传送地址,但是整个游戏是一个单一保密多点传送话路。游戏者只要有当前密钥就可以调入任何地域的后台数据。地域中的游戏者创建的前台事件不加密,但如果不参看后台数据它们将毫无意义。
图6表示这种游戏的数据流。只示出了与游戏安全性相关的数据流以及在游戏进程中,而不是在设立时,发送的数据流。所有的游戏者都在发送数据,但图中只示出加密的发送者,S-地域控制器。同样,只示出解密的接受者,R-游戏者。游戏控制器设立游戏保密性,其在图中未示出,在下面说明。密钥管理操作委派给多个复制的密钥管理器,KM,其使用保密Web服务器技术。
保密多点传送话路的密钥在一个序列中每游戏分钟(每ADU)变化一次。所有的加密数据都以一个未加密的ADU索引开头,该索引指向用于解密的密钥。在设立阶段后,游戏控制器、地域控制器和密钥管理器保存有可以计算整个游戏持续期间使用的密钥序列的初始种子。也可以使用分阶段的设立。
游戏设立1.游戏控制器(未示出)在验证身份的有效性后,单点传送一个共享的“控制话路密钥”给所有的KM和S。所有S和所有KM运行保密Web服务器以便通过客户验证的加密套接字层(SSL)通信传送给每个KM和S用各公共密钥加密。游戏控制器还把它将要用于控制消息的多点传送地址通知给所有的KM和S,这些KM和S要立即加入该地址。
2.游戏控制器然后生成用于构造整个密钥序列的初始种子值并将其多点传送给所有的KM和所有S,用控制话路密钥加密该消息并使用一个适于所涉及的大概是少量目标的可靠的多点传送协议。
3.游戏以一个验证的话路目录声明来宣告,如在Mark Handley(UCL)的“可升级的因特网多媒体会议系统”,博士论文(1997年11月14日)中描述的那样定期地重复多点传送(未示出)。经验证的声明可以避免攻击者建立虚假付费服务器来收取游戏的收益。该声明协议被增强以包括密钥管理器地址和每游戏分钟的价格的详细信息。为了获得每游戏分钟的价格,密钥管理器监听该声明以及接收者。该声明还必须指明正在使用的密钥序列构造。
接收者话路设立,持续期间和终止1.从话路目录听到该游戏广告后,一个希望付费加入游戏的接收者用合适的形式联系一个KM网络服务器,请求一定数量的游戏分钟。这在图6中表示为“单点传送设立”。R为所请求的游戏分钟付费给KM,可能是给出她的信用卡的信息或以一些电子现金的形式或在先前游戏中赢得的代用币支付。作为回报,KM将一组中间种子发送给R使其可以计算她购买的密钥序列的子范围。在下一节描述的该密钥序列的构造使该过程成为可能。所有这些都发生在加密套接字协议层(SSL)通信中,只有KM需要验证,而不是R。
2.R用她购买的中间种子生成相关的密钥。
3.R加入由游戏应用程序确定的相关多点传送,其中的一个多点传送总是来自一个S的加密的后台地域数据。R用前一步计算的密钥序列解密这些消息,这样使其余的游戏数据有意义。
4.每当时间保持器发出表示一个新的游戏分钟的信号时(通过控制多点传送),所有的地域控制器递增其ADU索引并使用序列中的下一个密钥。它们都使用相同的ADU索引。每个R注意到来自S的消息中的ADU索引被递增并使用序列中的下一个适当的密钥。
5.当游戏分钟索引到达R所购买的序列的末尾时,应用程序在游戏者失去访问权之前给她发出一个“插入硬币”的警告。游戏分钟继续递增直到到达所需密钥超出R可计算的范围的位置。如果R没有购买更多的游戏分钟,她必须退出该游戏。
这种情形说明了只要密钥管理器通过一些预先安排知道每个ADU索引的经济价值或每个ADU的访问策略,发送者如何与所有接收者的加入和退出活动完全去耦。不必在密钥管理器和发送者之间进行任何通信。发送者不必监听任何接收者的活动。如果密钥管理器需要避免出售已经传输的ADU,它们只需与来自发送者的变化的ADU序列号流保持同步。在本例中,密钥管理器通过监听多点传送数据本身来同步。在其他情形下,同步可能只简单地基于时间,可以是通过显式的同步信号也可以通过一天中时间的同步来隐含地进行。在另外的情形下(例如,商用软件的多点传送发布),传输的时间可能无关。例如,可能是定期地重复传输,购买序列的一部分的密钥的接收者可以在以后的任何时间收听。
在本例中用预付来购买种子。这可以保证密钥管理器不保持关于他们的用户的状态。这意味着由于不需要中央状态库所以他们可以被无限地复制,否则将会是下列情形如果种子是用帐户购买则需要检查用户的帐户状态。
下面说明密钥构造的不同方法。
密钥序列构造在下面的所有密钥序列构造中,使用下列的符号●b(v)是表示用于隐蔽v值的函数的符号。即,对手不能通过有限的计算从b(v)得到v。一个隐蔽或单向函数的例子是诸如MD5哈希(IETF RFC1321)或标准加密哈希1(NIST Sha-1)的哈希函数。好的哈希函数一般只需要较少的计算资源。哈希函数被设计为将任何大小的输入减小为固定大小的输出。在所有情况下,我们都将使用已经具有与输出相同大小的输入,只使用哈希的隐蔽属性,而不使用大小减小属性。
●bh(v)表示重复应用于前一个结果的函数b(),总共h次。
●r(v)是任何可快速计算的1对1函数,该函数将一组输入值映射到它自己。循环的(旋转的)位移位是这种函数的一个例子。
●c(v1,v2,...)是一个函数,其组合数值v1,v2等,使得在给出结果和除一个运算数以外的所有运算数的情况下,剩余的运算数可以被简单地推导出来。也可以选择c()以便使如果运算数的位是独立的和无偏差的,则结果的位也将是独立的和无偏差的。XOR函数是这种组合函数的一个简单例子。c()理想上也应该是用来简单地推导出剩余运算数的函数,如XOR的情况下,为v1=c(c(v1,v2,...),v2,...)。
在节4.5中说明所有的构造的一个通用模型,但先用它自己的术语介绍每个方案更为清楚。
双向哈希链(BHC)双向哈希链结构只被证明在一种有限的形式下是安全的,但是我们坚持对其进行描述。因为该有限版本形成了一个后面方案的基础。也可能有使用无限形式的情形1.发送者随机地生成2个初始种子值,v(0,0)&v(0,1)。作为一个具体的例子,我们将假设这些值为128位宽。
2.发送者决定所需的最大密钥序列的长度,H3.发送者对每个种子重复地应用相同的隐蔽函数以生成2个长度(H)相等的种子链。因而值为v(0,0)到v(H-1,0)和v(0,1)到v(H-1,1)。由于项H-1经常出现,简明起见,我们引入另一个常数G=H-1。
因此在形式上,v(h,0)=bh(v(0,0));v(h,1)=bh(v(0,1)) (4.1.1)4.为了生成密钥k0,发送者组合链0的第一个种子v(0,0)和链1的最后一个种子v(G,1)。
为了生成密钥k1,发送者组合链0的第二个种子v(1,0)和链1的倒数第二个种子v(G-1,1),以此类推。
形式上,kh=c(v(h,0),v(G-h,1))(4.1.2)严格地说,使用的流密码不需要128b密钥,因此可以通过截断该组合结果的最高(或最低)有效位导出一个较短的密钥,一般截至64b。流密码的选择是不相关的只要它是快速和安全的。
5.发送者开始多点传送该流,用k0加密ADU0(应用数据单元0),用k1加密ADU1,以此类推。但至少保持ADU序列号为不加密。
6.如果发送者委托密钥管理,它必须秘密地将2个初始种子值传送给密钥管理器。生成新的初始种子对并将其与用先前计算的密钥加密过的流式数据并行传送给密钥管理器。
接收者如下重新构造该序列的一部分1.当接收者被授权访问ADUm到ADUn时,发送者(或密钥管理器)单点传送种子v(m,0)和v(G-n,1)给该接收者。
2.该接收者通过对用(4.1.1)发送的种子重复地应用隐蔽函数来生成种子链v(m,0)到v(n,0)和v(G-n,1)到v(G-m,1)。
3.接收者用与发送者相同的方式用(4.1.2)生成密钥km到kn。
但是,该接收者无法知道种子v(h,0)(其中,h<m)或v(h,1)(其中,h>n),除非对那些发送者已揭示的隐蔽种子之前的隐蔽种子进行穷尽搜索。因此,接收者无法计算超出km到kn范围的密钥。
4.通过发送该范围的界限处的相关种子,任何其它的接收者可以访问一个完全不同的ADU范围;“开始”种子来自第一链,“结束”种子来自第二链。
图7中深灰色背景的种子的范围表示对第一个提到的接收者隐蔽的种子。连向深灰色背景的密钥的引线也是对该接收者隐蔽的。
因此,通过对于每个话路每个接收者仅发送2个种子,每个接收者可以被授权访问任何邻接密钥范围。不幸的是,这种构造只能有限的使用,除非每个接收者可以被限制为在一个发送者序列中曾经只有一个密钥范围被揭示过。如果一个接收者被授权访问一个早先范围,然后另一个后来范围(比如k0到k1然后为kG-1到kG),她可以计算在(k0到kG)之间的所有的值。这是因为种子v(0,0),v(G-1,1),v(G-1,0)和v(G,1)将必须被揭示,但仅v(0,0)和v(G,1)可以揭示整个序列。
一个可以绕过这个限制的方法是定期地用一个新的种子值重新开始第二个链(即保持H为低)并禁止一个接收者在H个ADU内进行两次访问。但是,这需要在密钥管理器上保存每个用户的状态。可能有一些适合本方案的合适的应用,例如用户只能扩充订购而不能退出然后恢复的商业模型。这种情况下,这将是一个非常有效的方案。
第二个可以绕过这个限制的方法是注意只有在两个最低限度的短链之间有间隙空间的情况下才可能有两个不相交的链。换言之,H<4的链永远是安全的。这种短链似乎不大使用,但后面我们将用该特征从短BHC片段建立一个混合构造。
二叉哈希树(BHT)二叉哈希树需要两个公知的隐蔽函数b0()和b1()。我们将它们称为“左”和“右”隐蔽函数。一般它们可以通过在单个隐蔽函数b()前应用两个简单的1对1函数r0()和r1()中的一个,由单个隐蔽函数b()来构造。如图8所示。
这样b0(s)=b(r0(s));b1(s)=b(r1(s))例如,第一个公知的隐蔽函数可以是一个一位左旋循环移位后跟一个MD5哈希函数,而第二个隐蔽函数可以是一个一位右旋循环移位后跟一个MD5哈希函数。其它的可选方法可以是在一个隐蔽函数之前先与1进行XOR或连接一个公知的字。看来选择消耗处理器资源最小但消耗量一样的两个函数是有利的,因为这将在所有情形下平衡负载并限制对隐藏信道的易感性,如果处理器负载水平将揭示出所选择的被执行函数就可能出现这种隐藏信道。另外,为了提高有效性,可以使用哈希函数的两个类型,例如具有两个不同的初始化向量的MD5。但是,窜改试验算法似乎是不明智的。
密钥序列如下构造1.发送者随机地生成一个初始种子值s(0,0),作为一个具体的例子,我们假定其值为128位宽。
2.在需要一个新的初始值前,发送者决定需要的最大的树深度D,该深度将导出一个最大密钥序列长度,N0=2D。
3.发送者分别对该初始种子应用“左”和“右”隐蔽函数,生成两个“左”和“右”第一层中间种子值s(1,0)=b0(s(0,0));s(1,1)=b1(s(0,0))。
发送者生成四个第二层中间种子值s(2,0)=b0(s(1,0));s(2,1)=b1(s(1,0));s(2,2)=b0(s(1,1));s(2,3)=b1(s(1,1)),以此类推,创建一个深度为D层的中间种子值的二叉树。
形式上,如果sd,i是一个比初始种子s0,0低d层的中间种子sd,i=bp(s(d-1),i/2) (4.2.1)其中i为偶数时p=0,i为奇数时p=1。
4.如前所述,通过从横穿树的叶子的种子值或通过它们的截断的推导值来构造该密钥序列。
即,如果D=5,k0=s(5,0);k1=s(5,1);...k31=s(5,31)。
形式上,ki=sD,i(4.2.2)5.发送者开始多点传送该流,用k0加密ADU0,用k1加密ADU1,以此类推。但至少保持ADU序列号为不加密。
6.如果发送者委托密钥管理,它必须秘密地将初始种子值传送给密钥管理器。生成新的初始种子并将其与用先前计算的密钥加密过的流式数据并行地传送给密钥管理器。
接收者如下重新构造该序列的一部分1.当一个接收者被授权访问从ADUm到ADUn时,发送者(或一个密钥管理器)将一个种子集合单点传送给该接收者(例如使用SSL)。该集合由离树根最近的中间种子组成,这些中间种子使得能够计算需要的密钥范围而不能计算该范围之外的任何密钥。
这些通过检验最大和最小种子的索引i来识别,该检验基于下面的事实一个偶数索引总是一个“左”孩子,而一个奇数索引总是一个“右”孩子。从叶子开始往上,在树的每一层上进行检验。在移到上一层之前总是需要揭示一个“右”最小值或一个“左”最大值。如果一个种子被揭示,索引就向内移动一个种子,以便在移到上一层前,最小值和最大值总分别为偶数和奇数。为了向上移一层,如果需要,最小和最大索引被二等分并下舍入。这保证它们之间的差可预测地减2。如前所述,对新索引重复该奇数/偶数检验,揭示“右”最小值或“左”最大值。继续该处理直到最小值和最大值交错或相遇。它们可能在其中一个或两个都向内移动后交错。它们可能在两个都向上移动后相遇,在该情形下,需要在结束该过程前揭示它们相遇处的种子。在附录A中以类似C的编码更形式上说明该过程。
2.显然,每个接收者需要知道给予他的每个种子在树中的位置。这些种子和它们的索引在被揭示时可以被显式地成对。另外,为了减少所需的带宽,协议可以指明发送种子的顺序以便可以从最小和最大索引及种子的顺序隐含地计算出每个索引。这是可能的,因为只有一个允许重新创建任何一个密钥范围的最小种子集合。
每个接收者可以与发送者一样对这些中间种子重复相同的隐蔽函数对以重新创建密钥序列,km到kn(等式4.2.1&4.2.2)。
3.通过向其它的任何接收者发送一个不同的中间种子集合,可以授权他访问一个完全不同的ADU范围。
图9中示出了一个D=4的密钥序列的创建过程。
作为一个例子,我们循环相关的中间种子,这些中间种子允许一个接收者重新创建从k3到k9的密钥序列。对接收者隐蔽的种子和密钥以灰色背景表示。当然,在实践中一般D的值大于4。
注意到每一层可被分配一个任意的d值,只要它唯一地标识该层即可。什么也不依赖于d或D的实际值。因此发送者不必揭示树向上延伸多远,从而改善了保密性。
往往一个话路在开始时会有一个未知的持续期间。显然,D的选择限制了从任何一个开始点开始的密钥序列的最大长度。最简单的作法(work-round)是如果需要,生成一个新的初始种子并在旧树旁边开始一个新的二叉哈希树。如果所有的发送者和接收者都知道D,各方都能立即发现超出最大密钥索引2D的密钥范围。在这种情形下给每个新树分配一个“树-id”并与每个树的种子一起指明它是明智的。
另一个避免该上限的方法是使D是可变的,例如,D=D0+f(i),而不是常数。图10中示出了这样一个连续的BHT,其中D0=4并且每M个密钥D加1。在本例中,M取固定值7。但是增加该复杂性并没有太大意义,因为不同的树分支的公共种子只是沿着树的最右手边分支的种子sd,2d。如果这些种子中的任何种子曾被揭示过则整个未来的树都将被揭示。因此,这个“改进”将永远不会在向用户揭示任意密钥范围时被用来提高效率,所有其能节省的只是发送者非常偶然地将普通的消息中的一个新初始种子传递给密钥管理器。相反,它引入一个安全缺陷,因为它创建一个“无限”值种子的集合,对此,任何数量的穷尽搜索都是值得做的。另一方面,如第一种作法那样必需定期生成一个新初始种子,对BHT的攻击脆弱性设置了一个上限。
二叉哈希链-树混合(BHC-T)这种构造方法被称为混合是因为二叉哈希树(BHT)用只有两个种子长的双向哈希链(BHC)的片段构建。为了便于理解,我们将以从根到叶子的方向构建树以构造一个BHC片段来开始说明,如图11所示。这仅仅是为了便于理解,后面我们将推荐构建树的最佳方式是从边而不是从根开始。
1.我们假设有两个随机生成的初始种子值s(0,0)和s(0,1)。作为一个具体例子,同样,我们假定它们的值为128位宽。
2.现在我们对每个种子应用相同的隐蔽函数以生成两个隐蔽的种子v(1,0)和v(1,1)。
3.为了生成子种子s(1,1),我们将第一个种子s(0,0)与隐蔽的第二个种子v(1,1)组合。
为了生成子种子s(1,2),我们将第二个种子s(0,1)与隐蔽的第一个种子v(1,0)组合。
4.如果我们现在随机地生成一个第三初始种子s(0,2)并隐蔽其以生成v(1,2),我们可以用相同的方式组合第二和第三初始种子和它们的相反隐蔽值以生成另外两个子种子s(1,3)和s(1,4)。这意味着每对父母种子生成4个孩子,当与其一边的兄弟(同父母)组合时生成两个,当与另一边的异父(母)兄弟组合时生成另外两个。结果,如果新的子种子象他们的父母那样被隐蔽和组合,这种构造生成一个二叉树,因为种子的个数在每一次生成时翻倍。但是,该树只在种子的顶行(假定在该行创建了2个以上的初始种子)的中间之下分支。如果从顶部构建(参见后叙),树的边向内“萎缩”。
形式上,s(d,i)=c(s(d-1,i/2),v(2d-1,i/2+1)) i为奇数=c(s(d-1,i/2),v(2d-1,i/2-1)) i为偶数(4.3.1)其中,v(h,j)=b(s((h-1)/2,j))。
图11a)图示BHC-T混合的两对父母种子<s(0,0),s(0,1)和<s(0,1),s(0,2)。其中的环表示每对公共的父母种子,外边的环中的外侧值落在图的边沿之外,因为我们只关注中央的父母种子s(0,1)的后代。图11b)示出相同的3个父母生成相同的4个孩子,但是为了更好地说明二叉树是如何形成的,从图中隐藏了被隐蔽的种子,就好象它们从来就没有通信过。在下面的图中带环的父母种子表示与上面的图中所示的相同的3个带环的种子。将序列延续到右边的两个点划箭头表示如果在右边还有另外一个父母,父母种子s(0,2)是如何生成另外两个孩子的。与每对箭头相交的点划线表示该线之上的父母组合以生成线之下的孩子。我们将在后面的图中用简化的形式表示这种构造。
图12表示一个示例混合树的一部分。正如二叉哈希树,用于加密连续的ADU的密钥是树的叶子上的种子的序列或它们的截断的推导值。图中示出如何通过把带环的种子揭示给一个特定接收者来揭示一个示例密钥范围,k3到k9。
为了说明如何从边而不是从根开始构建树,我们现在来说明本构造的进一步的扭曲(twist)。先前注意到选择XOR函数是因为如果两个运算数的XOR产生一个第三值,这3个值中的任何2个可以被XOR以产生该第三个值。这在图13中说明,其中所有种子的值都与图11中的相同。如果s(0,1)初始未知,而s(0,0)和s(1,2)已知,则由于下列“扭曲”属性可以推导出s(0,1)和s(1,1)s(0,1)=c(s(1,2),b(s(0,0)))s(1,1)=c(s(0,0),b(s(0,1)))图14表示发送者如何从“边”开始构建BHC-T混合构造。种子创建的顺序用编号的圆圈表示。可以按任何顺序创建的种子都被分配有相同的编号后跟一个区分字母。与带环的节点相邻的较暗的圆圈表示必须随机地生成的种子。我们把这些种子称为初级种子。这些种子决定下一个带环的节点之前的所有的后续中间种子的值。
1.发送者随机地生成种子0的128位的值。
2.然后生成种子1&2。它们形成4个种子构成的框的对角,因此通过“扭曲”算法设定相反的对角值3和4形式上,s(d-1,i/2)=c(s(d,i),v(2d-1,i/2+1))如果i为奇数
=c(s(d,i),v(2d-1,i/2-1))如果i为偶数 (4.3.2)其中,v(h,j)=b(s((h-1)/2,j))注意如果根种子的d=0,则d沿从叶子到根的方向成为递增的负数。
3.然后必须生成种子5,与2形成另一对对角。
4.这通过等式(4.3.2)揭示相反的对角种子6和7。
5.种子7和2形成另外一个4种子框的上面的角,通过等式(4.3.1)设定种子8a&8b。
6.在种子9被随机地生成之后该图形以类似地方式继续。这种构造方法的一个优点是树可以无限制地生长—不必事先决定任何限制。
7.发送者开始多点传送该流,用k0加密ADU0,用k1加密ADU1,以此类推。但至少保持ADU序列号为不加密。
即,ki=s(D,i)其中D=0 (4.3.3)8.如果发送者委托密钥管理,它必须秘密地将初级种子传送给密钥管理器。生成新的初级种子对并将其与用先前计算的密钥加密过的流式数据并行传送给密钥管理器。
接收者如下重新构造序列的一部分1.当一个接收者被授权访问从ADUm到ADUn,发送者(或一个密钥管理器)将一个种子集合单点传送给该接收者。该集合由树中能计算所需密钥范围的中间种子的最小集合组成。
这些通过以与BHT类似但镜相的方式检验最大和最小种子的索引i来识别。在移到上一层之前总是需要揭示一个“左”最小值或一个“右”最大值。如果一个种子被揭示,索引就向内移一个种子,以便在移到上一层前,最小值和最大值总分别为奇数和偶数。为了向上移一层,如果需要,最小和最大索引被二等分并下舍入。这保证它们之间的差可预测地减小1。对新索引重复该奇数/偶数检验。继续该处理直到最小值和最大值相隔二或三。如果它们相隔二,则它们与它们之间的种子一起被揭示。如果它们被相隔三,如果最小值为偶数,则它们仅与它们之间的两个种子一起被揭示。如果最小值为奇数,则需要再向上移一层以便什么也不揭示并允许开始下一轮。在检验开始之前,对于被请求的范围的宽度已经小于2的情况检验异常初始条件。
在附录B中以类似C的编码更形式上说明该过程。
2.显然,每个接收者需要知道其所给定的每个种子在树中的位置。这些种子和它们的索引在被揭示时可以被显式地成对。另外,为了减少所需的带宽,协议可以指明发送种子的顺序以便从最小和最大索引及种子的顺序隐含地计算出每个索引。例如,附录B中的算法对相同的密钥范围总是以相同的顺序揭示相同的种子。
3.每个接收者可以与发送者一样对这些中间种子重复相同的隐蔽和组合函数对,以重新创建密钥序列,km到kn(等式4.3.1,4.3.2&4.3.3)。
4.通过向其它的任何接收者发送一个不同的中间种子集合,可以授权他访问一个完全不同的ADU范围。
由于BHC-T可以从边开始构建,它适合用于持续期间未知的话路。连续地随机生成新中间根种子限制了它对攻击的脆弱性,但允许序列的连续计算。为了进一步限制脆弱性,发送者可以延迟未来种子的生成以拒绝任何接收者计算超出序列中的一个特定未来点的密钥。这将限制种子空间的强力搜索可用的时间。但是,从边开始构建树导致取决于每个新根种子(从而对该种子的攻击值)的密钥的个数成指数地增长。
通过定期地递增被定义为叶子层的层,在每M个密钥(除了第一个外)的序列之后将其向离该根更近的方向移动一层,可以界定根种子的值。
形式上,这需要将等式(4.3.3)替换为ki=s(-i/M,i)i<M时ki=s(1-i/M,i) i=M时(4.3.4)这在图15中用M=8来说明。当然,在实践中M应该要大得多,以便保证不用触及树的左手边最上面的分支就能有效地描述所有合理长度的接收者话路。
前面我们注意到只有当H<4时,BHC是固有保密的。在本链树混合中使用的BHC片段的H=2,这保证了该混合方案的保密性。我们还建议一个二叉链树混合可以从长度为3(H=3)的链片段构造而不牺牲保密性。在这种情形下,每个父母种子在与其兄弟或异父(母)兄弟配对时将产生6个孩子,使在每一层的树宽度3倍增长(一个三叉树-BHC3-T)。这种构造方法如图20e所示,但更详细的分析留给将来的工作。它可能比BHC-T更为有效,但稍微复杂一点。
二叉哈希树II(BHT2)我们现在提出另一种基于二叉树的构造,其是以加强对强力攻击的安全性的方式组合BHT和BHC-T方法。我们使用相同的种子符号sd,i,但是在d的起源位于BHT的根的情况下,其值随着接近叶子而增大。图16中示出树的一个元素。与BHT的情形相同,我们在这种构造方法中使用两个隐蔽函数b0()和b1(),我们分别称之为“左”和“右”。
1.我们假设有两个随机生成的初始种子值s(0,0)和s(0,1)。作为一个具体例子,同样,我们假定它们的值为128位宽。
2.发送者决定需要的最大树深度D。
我们从每个初始种子产生2个隐蔽值,每个种子分别使用每一个隐蔽函数。
v(1,0)=b0(s(0,0));v(1,1)=b1(s(0,0));v(1,2)=b0(s(0,1));v(1,3)=b1(s(0,1))。
3.为了生成子种子s(1,1),我们将两个左隐蔽种子v(1,0)和v(1,2)组合。
为了生成子种子s(1,2),我们将两个右隐蔽种子v(1,1)和v(1,3)组合。
4.如果我们现在随机地生成一个第三初始种子s(0,2),我们可以用相同的方式组合第二和第三初始种子以产生另外两个子种子s(1,3)和s(1,4)。与BHC-T混合同样,这意味着每个父母种子生成2个孩子以构建一个二叉树,但边沿向内“萎缩”。事实上,如果层d包含nd个种子,则n(d+1)=2nd-2.只要使用2个以上的初始种子,则该树将趋向一个二叉树。
形式上s(d,i)=c(v(2d-1,i/2),v(2d-1,i/2+1)) i为奇数=c(v(2d-1,i/2),v(2d-1,i/2-1)) i为偶数(4.4.1)其中,v(h,j)=b(s((h-1)/2,j))。
5.然后就用横穿树的叶子的种子值构造密钥序列。
形式上,ki=sD,i(4.4.2)6.发送者开始多点传送该流,用k0加密ADU0(应用数据单元0),用k1加密ADU1,以此类推。但至少保持ADU序列号为不加密。
图16a)图示BHT2的两个父母种子对<s(0,0),s(0,1)和<s(0,1),s(0,2)。与用于说明BHC-T混合的方式完全相同,在图的a)部分和b)部分中,环表示每对公共的父母种子。与前述相同,图16b)示出如何描述用BHT2构建的种子树。为简明起见,从外观上隐藏了被隐蔽的中间种子值。一旦这些内部值被隐藏,则所得的BHT2看上去与图4.3.2中的BHC-T混合相同。
用于计算要揭示一个密钥范围需揭示哪些种子的算法也与附录B中的BHC-T混合的算法相同,因此图12中带环的种子也是将k3到k9揭示给一个特定的接收者。
横穿一个从3个初始种子(在层0)构建的深度为D的BHT2的叶子的密钥的最大个数为2D+2。如果需要一个连续的树,密钥可以被定义为从中间种子层下行而不是停留在横穿它们的层,与图10中所示的连续BHT类似。
我们已经在(4.4.1)中示出如何只用4个隐蔽值的两个组合值来构建一个二叉树。
每次取4个值中的2个,得到6个可能的组合c1=c(v(1,0),v(1,1))
c2=c(v(1,2),v(1,3))c3=c(v(1,0),v(1,2))c4=c(v(1,1),v(1,3))c5=c(v(1,0),v(1,3))c6=c(v(1,1),v(1,2))c1和c2每个只依赖于一个父母种子。因此,仅揭示父母就会揭示一个孩子,防止二者都被使用。另外,c6=c(c3,c4,c5)和c5=c(c3,c4,c6),以此类推。因此揭示这些组合中的任意3个就隐含地揭示第四个。但是,可以使用任意3个组合而不是象BHT2中那样仅使用2个。对所得到的三叉树(BHT3)的分析留给将来的工作。
通用模型我们已经提出4种密钥序列构造,现在提出一个通用模型,其允许所有这些方案和其它类似的方案可以用相同的术语来描述。
我们定义两个坐标平面●一个具有位于坐标(h,j)的离散值v的“隐蔽”平面,这样,通常在一个h坐标的值被隐蔽以产生h+1处的值,具体的映射关系依赖于该方案。
●一个具有位于坐标(d,i)的离散值s的“组合”平面,这些值是以同样依赖于该方案的方式组合来自隐蔽平面的值而得到的结果。
每种构造都由在隐蔽平面上的基本数学“分子”构建。图20a到20e将这些分子表示为一组粗黑箭头,表示从h=0的轴开始,从一个值v映射到下一个值的隐蔽函数,为了示出该构造如何在j轴方向生长,粗的浅灰色的箭头表示对完成下一个分子的相邻值的隐蔽。一个分子由三个常数定义●H,一个分子沿隐蔽平面的h轴的高度●P,在一个分子中使用的隐蔽函数的个数●Q,为了产生组合平面中的每个值,组合来自隐蔽平面上的每个分子所得到的值的个数。
隐蔽平面中的一个分子的初始值v直接从组合平面上的先前值s映射(在图20a到20e中以点划线表示)如果h mod H=0;v(h,j)=s(MH,j) (4.5.1).
隐蔽平面分子中的后续值从先前值隐蔽(用粗箭头表示)如果h mod H 0;v(h,j)=bp(v((h-1),j/P)) (4.5.2).
其中,p=j mod P然后,隐蔽平面分子中的最终结果值被组合以产生组合平面中的下一些值(用细线表示)s(d,i)=c(v(h0,j0),...v(hq,jq),...v(h(Q-1),j(Q-1)) (4.5.3).
其中hq和jq被定义为每个构造的参数q的函数。
因此,沿隐蔽平面的h轴的每H大小,组合平面中的d递增1。
表1给出H,P和Q的值和定义每个构造的hq和jq的公式。它还参照说明使用本通用模型的各构造的附图。

表4.5.1-定义每个密钥序列构造的通用模型的系数在所有情形下,除非需要一个连续的构造,密钥由下式定义的序列构建ki=s(D,i) (4.5.4)其中D=log(N0)其中N0是需要的密钥的最大个数顺便提一下,单向函数树(OFT)(one-way function tree)[McGrew98]由设定{...?}产生。
存储和处理之间的折衷在所有的MARKS构造中,在发送者加密前和在接收者解密前,都用少量的种子生成较多的密钥。在任一情形下,可能用于存储密钥序列的存储容量有限,密钥序列所需的存储量相对于种子而言成指数增长。在这种情形下,可以计算前面几个密钥而存储允许计算其余密钥的种子。通常,不是节省存储容量就是避免相同计算的重复,这取决于存储或处理时间中哪个最紧缺。
利用BHC,在计算第一密钥前,必须遍历整个反向链。但不必存储每个值。可能存储中间点,4分之3点等处的值而其余的被丢弃。由于该序列回退进(eatback into)该反向链,所以下一个值总可以通过从先前存储的值再次运行哈希链,根据需求在途中存储更多的值来重新计算。
利用所有的树构造,需要在话路开始前计算任何在通向第一密钥的树的分支下的中间种子,但同样它们不必被全部存储。离叶子最近的中间种子应被存储(高速缓存),因为它们将最先用来计算下几个密钥。当需要离根较近的中间种子时,只要从未丢弃密钥管理器原始发送的种子就可以重新计算它们。
效率正如上面提到的,H3的BHC绝对有效但是不安全。因此我们将把讨论局限于已经详细地分析过的基于二叉树的构造。表5.2.1表示BHT,BHC-T和BHT2的每个保密多点传送话路的各种参数,其中R,S和KM分别是接收者,发送者和密钥管理器,如节3中的定义,N(=n-m+1)是接收者需要的随机位于密钥空间中的密钥范围的长度,Ws是种子的大小(一般为128b),Wh是协议头开销的大小;ts是隐蔽一个种子(加上一个相对可以忽略的循环移位和/或组合运算)所用的处理器时间。

表1-BHT,BHC-T和BHT2的每个保密多点传送话路的各种参数[i]如表中所示,用于每个接收者的话路设立的单点传送消息的大小与每个接收者需要的最小存储量相等。只有当接收者如上所述为了处理而选择折衷存储时才是这样。已经为最小发送者存储行使用相同的折衷。处理等待时间是指接收者在接收到其话路的单点传送设立消息后准备对输入数据的解密所需的时间。应注意在别的成员加入或退出时没有等待时间开销,就如同在适用于非计划逐出的方案中一样。应注意每个密钥的处理数字假定密钥的连续访问。在这种情形下,在任何话路中要存储的最有效值(除了构造树所需揭示的最小集合外)是从根到当前使用密钥的分支上的那些值。每个密钥的平均处理就是整个树中的哈希运算的次数除以叶子上的密钥的个数。只有发送者(或者有多个发送者时为一个组控制器)被要求为初始种子生成随机位。需要的位数显然等于这些初始种子的最小发送者存储量。
可以看到只有依赖于组成员的大小的参数是关于每个接收者的参数。两个这样的参数(存储量和处理等待时间)的开销被发布给组成员,因此对每个接收者是常数。只有单点传送消息的大小会在密钥管理器处造成随组成员的大小线性增长的开销,但是该开销在每个接收者话路中只负担一次。当然,没有一个每接受者开销自身是依赖于组大小的,就如同在所有允许非计划逐出的方案中一样。因此,提出的所有的构造都是高度可升级性的。
相互比较这些方案,可能令人惊讶,混合BHC-T和BHT2在发送消息方面的效率与BHT非常相近。它们都是只要求每个接收者话路设立消息中多一个种子的这样一个平均水平。如果N较大,与每个接收者话路需要的密钥的个数相比较这是微不足道的。平均来讲,BHC-T需要的处理时间是BHT的两倍,BHT2需要的处理时间是BHT的四倍。我们将看到保密性的提高使这些开销是值当的。
BHT使用BHT,树中的每个种子在价值上是其孩子的两倍。因此,倾向于穷尽搜索种子空间以找到对树中当前已知的最高种子值隐蔽的正确值。对MD5哈希来说,这平均包括2127次MD5运算。可能会找到一个值,其不正确但是对一个与已知值冲突的值隐蔽(一般用MD5每264次运算找到一个)。这只有通过使用种子以产生一个密钥范围并对据推测用其加密的一些数据进行检验时比较明显。在成功破解一层之后,下一层又将在价值上为两倍,但将需要相同的强力来分裂。应注意在Sun SPARCserver-1000上一个128b输入的MD5哈希(可移植源)大约用4us。因此,2128次MD5运算将需要4e25年。
BHC-T使用BHC-T混合,抗攻击的强度取决于攻击发生在哪个方向。如果我们取BHC-T的单个元素,它有4个种子值-有2个父母和2个孩子,如表5.3.1中所示并在图17中说明。给出4个值中的任何1个,都不能计算出其它的值,因为没有足够的信息来检验正确性。给出4个值中的3个,只用一个隐蔽运算就可以计算出第四个。只给出4个值中的2个,表中列出了计算其它2个值的难度,这取决于给出的是哪2个值。字母“i”表示一个输入值,单元格中的值表示在给定输入的情况下确保找到输出值对所必需的隐蔽函数运算的次数。w是数空间中的位数(MD5为128)。图17中图示出相同的信息,输入值上带圈,隐蔽值的背景为灰色。

图17-揭示和隐蔽BHC-T中的种子对如果给出在“方块”的一个边上的一个父母和一个孩子,则可以穷尽地搜索对面的父母,通过把每个位隐蔽并与2个给定值的XOR比较来检验每个值。因此对“边路”(sideways)攻击可以保证在2w次隐蔽运算之后能够成功。
如果只给出2个孩子值,对父母中的一个进行穷尽搜索稍稍有点麻烦。即,推测一个父母值s(0,1),仅当下式成立时该值是正确的c(s(0,1),b(c(s(1,1),b(s(0,1)))))=s(1,2)因此,对“向上”攻击可以保证在2(w+1)次隐蔽运算之后能够成功。
在这种构造中,找到与2个给定值相适合但也不是正确的值对(一个双重冲突)的2个未知值的可能性较小。如果这种对确实出现,只能通过用它们产生密钥并用加密数据检验该密钥来检验它们。因此,双重冲突的较小概率可以稍微地减少攻击任务的复杂性。
边路攻击只能在与已知的最高种子相同的层最多取得一个种子。由于在右边的下一个“框”中只知道一个值,对右侧的攻击会在一个偶数索引的孩子处结束。同样地,对左边的攻击被一个奇数索引的孩子阻断。向上的攻击是所剩的唯一的选择。一个成功的向上攻击不给出任何多余的密钥,但是当后跟一个边路攻击时会揭示上一个边路攻击的密钥的两倍之多。
BHT2BHT2抗攻击的强度采用与BHC-T混合相似的形式,只是设计的抗向上攻击的强度要大得多。与BHC-T同样,组成方块的4个值中只知道一个时不能揭示任何其它的值。但是,与BHC-T不同,3个值不一定能立即给出第四个。如果只有一个父母未知,需要2w次隐蔽运算来保证找到它。只给出其中的2个值时,表5.3.2列出了计算另外2个值的难度,这取决于给出的是哪2个值。如前所述,表格中的值表示在给定的输入时保证找到输出值对所必需的隐蔽函数运算的次数。图18中图示出相同的信息,输入值上带圈,隐蔽值的背景为灰色。

表2-揭示和隐蔽BHT2中的种子对图18-揭示和隐蔽BHT2中的种子子集合如果给出一个父母和在“方块”的任一个边上的一个孩子,则可以穷尽地搜索对面的父母,通过把每个值隐蔽并与2个已知值的XOR比较来检验每个值。因此对“边路”攻击可以保证在2w次隐蔽运算之后能够成功。给出一个父母和对面的一个孩子的情况下也一样。
如果只给出2个孩子的值,在BHT2中对父母值的穷尽搜索要麻烦得多。对每个右边父母值s(0,1)的推测值,它必须是左隐蔽的,然后左父母值必须被穷尽地搜索以找到一个左隐蔽的值,将其与第一左隐蔽的推测值组合以给出该左孩子的给定值。但是,当这2个父母推测值是右隐蔽时,他们不可能被组合而给出正确的右孩子。因此,右父母的下一个推测值必须与一个左父母的隐蔽值的穷尽搜索组合,如此类推。这相当于只给出s(1,1)和s(1,2),要解下列联立方程c(b0(s(0,0)),b0(s(0,1)))=s(1,1)c(b1(s(0,0)),b1(s(0,1)))=s(1,2)为了保证成功为此需要穷尽搜索2个父母的组合的方阵,即22w次隐蔽运算。在从孩子到父母的方向上的较大的抗强力攻击的强度在图中以较深的灰色背景显示。另外一种方法是存储一个父母的所有的左隐蔽值和右隐蔽值以避免重新计算它们。但是只有一个父母的每个可能值的未被索引的左隐蔽值会消耗多于5e27TB的存储量,其开销使其他的攻击方法在经济上要合算得多。
有关双重冲突的评述与BHC-T一样适用于BHT2,只是错误的值对只可能在4个哈希冲突同时地偶然发现时出现,该情况出现的概率非常小。
同BHC-T中同样,BHT2中的边路攻击被限制在最多一个“框”中。因此,为了获得任何有效个数的密钥,马上就必须面临向上攻击。一个边路攻击的2w次隐蔽运算可能比合法地获得被攻击的密钥更昂贵。一旦必须面临向上攻击,2w的隐蔽运算次数确实会导致寻找别的方法。
一般安全性通常,构建一个树需要的随机值越多,它能包含的在由每个新随机种子生成的子树的界限内的持续攻击就更多。但是,正如上面关于连续树的讨论中所述的那样,对于较长的话路,在安全性和连续的密钥空间的方便性之间有一个折衷。随机生成的种子的随机性是另一个须被正确设计的潜在缺陷领域。
所有MARKS构造在合法组成员勾结时都是脆弱的。如果一个成员的子组在他们内部同意每个人购买一个不同范围的密钥空间,他们可以共享接收到的种子从而他们都能够访问他们的本来是单独的密钥空间的并集。套利是已讨论过的成员勾结的一个变种。这种情况是一个组成员购买整个密钥序列并将各部分以比出售价低的价格出卖,如果大部分密钥由超过一个的用户购买仍能从中牟利。用无组成员防止勾结的保护方法在关于“水印”的节6.3中讨论。
最后,对任何特定的应用,整个系统的安全性显然依赖于设立话路时使用的安全的强度。上面的例子情形描述需解决的问题并推荐标准的加密技术以满足它们。使用任何MARKS构造的应用的总体的安全性总是与最弱的部分的强度一样。
当前工作中讨论的密钥管理方案适用于与其它的机构进行模块组合以满足下述的其他的商业需求。
多发送者的多点传送只要所有的发送者使用相同的密钥序列,多发送者的多点传送话路可以通过使用MARKS构造来保密。它们不必同时使用相同的密钥,只要它们使用的密钥都是同一个序列的一部分即可。只要将ADU索引作为加密的ADU的头来不加密地传输,即使每个发送者与其他发送者失序,接收者也知道使用哪一个密钥。如果对应用的商业模型很重要的话,节3的例子情形描述了多个发送者如何同步它们使用的ADU索引。
如果多发送者的多点传送中的每个发送者使用不同的密钥或密钥序列,每个发送者创建一个不同的保密多点传送话路即使他们都使用相同的多点传送地址。这由多点传送话路和2.1节中定义的保密多点传送话路之间的区别可以推出。在这种情形下,每个保密多点传送话路必须被独立于其它的话路创建和维护。但是,还有一些被称为分期偿还初始化的范围[Balen99]。即,不同的保密多点传送话路都可以使用相同的设立数据以节省消息发送。例如,商业模型可能是客户总是必须从一组有关的发送者中的每一个购买相同的ADU,如果他们从每个发送者购买的话。在这种情形下,每个发送者可以将所有发送者共同的密钥的MARKS序列和一个该发送者特有的长期密钥组合起来。客户可以购买公共范围密钥的相关的种子,然后购买她希望解密的每个发送者的一个附加的长期密钥。
非连续和多连续密钥的访问MARKS构造被设计为在授权每个接收者访问一个较宽的序列的一个任意子范围的密钥序列时有效,但不适用于数据不连续或需要一个序列的几个任意不连接的部分的情况。因此MARKS的目标是在一维上自然连续的数据流,例如实时的多媒体流等。
但是,一旦接收者访问过一个范围的密钥,显然不能强迫以连续的顺序访问它们。例如,接收者可能存储音乐流的一个子范围,该音乐流用MARKS密钥序列中的一个加密并通过因特网多点传送。使用下载的音轨的索引,接收者以后可以使用从MARKS序列中无顺序地取出的相关密钥,以随机的顺序挑选想听的音轨。
MARKS还可以用来限制对连续但是多维的数据的访问。在M.Fuchs,C.Diot,T.Turletti,M.Hoffman的“一种ALF设计的命名方法”(“a NamingApproach for ALF Design”)中描述了这种应用的一些例子。该文章发表在伦敦的HIPPARCH学术讨论会的会议录上(1998年6月)。图19中示出一个2维密钥序列空间。
例如,对多点传送的股票报价的访问可以按订购的期间和按订购的期货市场的范围出售。每个报价需要用2个中间密钥的XOR结果值来加密。因此实际上用于加密的“最终密钥”是ki,j=c(k’0,i,k’1,j).
一个中间密钥将来自一个序列k’0,i,其中i每分钟递增一次。另一个中间密钥可能来自一个序列k’1,j,其中j表示期货报价的月数。一个研究1到2年期货的商人将不仅根据其想订购的期间购买相关的k’0,i的子范围,而且会购买中间密钥k’1,12到k’1,24的范围。
诸如海法加密(1997年1月)中的Ross Anderson& Charalampos Manifavas(剑桥大学)的“变色龙-一种新的流密码”(“Chameleon-A New Kind of streamCipher”)中的方法(上面已经描述过)可以用来给用于解密数据流的密钥加水印。因此,由任何MARKS构造生成的密钥都被视为中间密钥。发送者通过组合每个中间密钥和节2.2中描述的一个长期密钥块(具体例子中是512kB)创建一个最终密钥的序列。每个接收者被给定一个相同块的长期的加水印的版本以从其中间密钥序列产生一个加水印的最终密钥的序列,从而强制水印解密。
但是,这种方法具有变色龙方法的一个共同缺陷。它为由不忠的授权接收者传递到完全无授权的接收者(该接收者没有长期密钥块)的任何密钥或数据创建一个审计跟踪。在这种情形下,如果跟踪密钥或数据,可以跟踪到揭示密钥或数据的叛徒。但是,可以把中间密钥,而不是最终密钥传送给任何有时具有仍然有效的长期密钥块的接收者。因此一个未被授权访问特定中间密钥(其未加水印)的接收者可以用其自己的密钥块创建加水印的最终密钥,从而解密加密流。虽然产生的密钥和数据都加盖有她自己的水印,这只是将审计跟踪交给泄露的目标,而不是源。因此,对这种类型的“内部”叛徒只有很小的威慑力。
返回到MARKS构造的特定情形,变色龙的这个一般缺陷意味着可以内部传递中间种子或中间密钥而不必害怕审计跟踪。例如,在上面的网络游戏的例子中,一组玩游戏者可以勾结起来,每人买一个不同的游戏小时并在他们之间共享他们每人购买的中间种子。为了产生真正的密钥,每个玩游戏者可以使用她自己的有水印的长期密钥块,她需要该密钥块来玩游戏。没有创建用于跟踪谁传递了无水印的中间种子的审计跟踪。但是,如果任何玩游戏者试图将带水印的密钥或数据传送给最近没有玩游戏因此没有其自己的有效的长期密钥块的人,有审计跟踪。类似地,因为长期密钥块也包括一个可跟踪叛徒接收者的水印,如果一个玩游戏者传送他们的长期密钥块时,也有审计跟踪。
非计划驱逐正如已经指出的那样,MARKS构造允许随时从组中驱逐成员,但是只能在每个接收者话路设立时已计划过。如果预先计划的驱逐是一般的情形,但偶而也需要非计划的驱逐,任何MARKS方案可以与其它的方案,如LKH++[Chang99],组合以允许偶然的非计划驱逐。为了实现这个目标,与上述水印一样,由任何MARKS构造生成的密钥序列都被视为中间密钥。这些与一个例如用LKH++发布的组密钥组合(如进行XOR)以生成一个用于解密数据流的最终密钥。因此要在任何时间生成该最终密钥需要MARKS中间密钥和LKH++中间密钥二者。
当然,可以组合(如进行XOR)任何个数的中间密钥以同时满足多种需求。例如,MARKS,LKH++和变色龙中间密钥可以被组合以便同时实现低成本的计划驱逐,偶然的非计划驱逐和防止泄露到长期组外的带水印的审计跟踪。
形式上,最终密钥,ki,j...=c(k’0,i,k’1,j)其中中间密钥k’可以用MARKS构造或在关于加水印和多维密钥序列的前两节中描述的其它的方法来生成。
通常,以这种方式组合产生一个综合方案,其存储成本是各单独成员方案的总和。但是,组合LKH++和MARKS,其中大部分驱逐是计划的,去掉了LKH++的所有重新分配密钥的消息,除非确实需要非计划的驱逐。
本发明不限于用于多点传送数据网络。下面通过举例来说明另外两个使用领域。
虚拟个人网络(VPN)通过建立一个VPN,一个大公司允许其员工或定约人从因特网上的任何地方与公司的其他部分通信。实现其的一个方法是给每个工人该整个公司使用的一个组密钥。结果,每当一个工人加入或离开公司时,都必须改变该组密钥。作为替换方法,无论工人加入或离开与否,该密钥应该在一个MARKS构造决定的序列中定期地变化。当建立每个新雇佣合同时,分配给每个员工允许其计算序列中的下一个值的种子直到其合同需要续约。提前离开的工人被视为一个非计划驱逐。
数字万用盘(DVD)DVD原来表示数字化视频光盘,因为其容量适合于该介质。但是,它可用来存储诸如软件或声频等要求较少存储量的内容。代替在每次选择声频音轨或软件主题时,压制一个不同的稀疏地填充的DVD,通过使用本发明,用数百个相关的音轨或主题填充其容量来生产每个DVD。每个音轨或主题构成一个ADU。每个ADU可以用使用一种MARKS构造生成的序列中的一个不同的密钥来加密。这些DVD可以被大量生产并免费分发(如作为杂志上的封面光盘)。任何拥有这些DVD中的一个的人然后可以通过因特网购买种子,这将给出一个范围的访问密钥以解密DVD上的一些ADU。MARKS适用于这种情形,因为一旦DVD被压制加密密钥就不能再改变,所以使用物理介质的商业模型不倾向依赖于非计划驱逐。本方案可用于与变色龙组合以对密钥和数据加水印。
上面我们描述了管理很大的组的密钥的方案,通过将发送者与所有接收者的加入和离开活动完全去耦,保持接收者启动的因特网多点传送的可升级性。发送者也完全与承担该接收者的活动费用的密钥管理器去耦。我们已经示出许多商业应用具有只需要无中央控制的密钥管理器的模型,在这种情形下,可能有无限的密钥管理器的复本。当复制的无中央控制的密钥管理器中的一个失败时,不会影响其姐妹服务器中的进程的处理,从而使整个系统与问题隔离,提高恢复性。为了说明这些点我们提出了一个按每分钟收费的大规模网络游戏的工作例子。
通过使用系统地改变组密钥而不是由用户的加入或离开活动驱动重新分配密钥来实现上述的优点。去耦的实现是通过发送者和密钥管理器事先安排多点传送数据流中的经济值的单元(关于付费的“应用数据单元”)。通过递增数据中声明的ADU索引通知系统的密钥改变。使用这种模型,当一个接收者加入或离开时对其他发送者和接收者都没有副作用。我们还确保多点传送不用于密钥管理,只用于数据传送。因此,重新分配密钥不易受随机传输失败的影响,当使用多点传送时随机传输失败的修复比较复杂。
传统的密钥管理方案成功地提高了允许非计划驱逐组成员的技术的可升级性,但是最好的技术仍然在发送消息方面开销很大。相反我们关注于计划驱逐的问题。即,在一些任意将来的ADU之后,但在接收者请求一个话路时计划的驱逐。我们断言很多基于预先支付或订购的商业情形不需要非计划的驱逐但确实需要任意的计划驱逐。这样的例子包括付费电视,按次计费电视或网络游戏。
为了实现计划的但任意的驱逐,我们设计了由发送者用来系统地改变组密钥的密钥序列构造的选择,以便任何序列的子范围都可以通过揭示少量的种子(每个16B)来重新构造。这样接收者可以被授权访问数据序列的任意子范围。所有可行的方案使用O(log(N))个种子可以为每个接收者揭示N个密钥。各方案的不同之处在于计算每个密钥的处理负载,其为了安全性而作的折衷。处理负载最重的方案在开始时平均只需要O(2(log(N)-1))次快速哈希运算,然后平均只需要另外16次哈希运算以计算序列中的每个新密钥,该操作可事先进行。处理负载最轻的方案比它的处理量少四倍。
为了将本工作放入环境中,对于按秒收费的付费电视,在15分钟内有一千万观看者的10%接入或离开,最好的替换方案(Chang et al)可能会每秒钟生成几十RB千个字节数量级的重新分配消息以多点传送给每个组成员。本工作只需要在或许四小时的观看开始时,给每个接收者单点传送一个几百字节的消息。
附录A-识别BHT的中间种子的最小集合的算法在下列的类C语言码段中●函数odd(x)检验x是否为奇数●函数reveal(d,i)将种子sd,i揭示给接收者<pre listing-type="program-listing"><![CDATA[min=m;max=n;if(min max)error(); //拒绝min maxfor(d=D;d=0;d--) { //从树的底部开始操作 //每个循环沿树往上移一层if(min==max) { //min和max会聚 reveal(d,min); //...揭示子树的根... break; //...并退出}if odd(min) {//奇数最小值永远不会是左孩子... reveal(d,min); //...揭示奇数最小种子 min++;//将min向右移动一个种子}if!odd(min) { //偶数最大值永远不会是右孩子... reveal(d,max); //...揭示偶数最大种子 max--;//将max向右移动一个种子  }  if(min max)break;//如果min&amp;max是表兄弟,则退出  min/=2; //...二等分min...  max/=2; //...二等分max...} //...向上一层,循环]]></pre>
附录B-识别BHC-T的中间种子的最小集合的算法在下列的类C语言码段中●函数odd(x)检验x是否为奇数●函数reveal(d,i)将种子sd,i揭示给接收者<pre listing-type="program-listing"><![CDATA[min=m;max=n;if(min max)error(); //拒绝min maxd=0; //从树的底部开始操作  if(max<=min+1) { //请求的min&amp;max是相邻的或相同的...   reveal(d,min); //...所以揭示左边...   if(max<min) //...请求的min&amp;max是不相同的...  reveal(d,max); //...所以也揭示右边...   break;//...并退出...  }for(d=0;;d++) { //每个循环沿树往上移一层 if(max<=min+3){ //min&amp;max相隔2或3个...  if(max<min+3){ //min&amp;max相隔2个...   reveal(d,min); //...所以揭示左边...   reveal(d,max); //...和右边...   reveal(d,min+1); //...和中间...   break; //...并退出  }else{ //min&amp;max相隔3个,所以...   if(!odd(min)){ //...仅当min为偶数时...   reveal(d,min+1);//...揭示左中间...   reveal(d,max-1);//...和右中间...   break; //...并退出   }  }}  if!odd(min) { //偶数最小值永远不会是右孩子...   reveal(d,min); //...揭示偶数最小种子   min++; //将min向右移动一个种子  }  if odd(max) { //奇数最大值永远不会是左孩子...   reveal(d,max); //...揭示奇数最大种子   max--;//将max向左移动一个种子  }min/=2;//...二等分min... max/=2;//...二等分max...} //...向上一层,循环]]></pre>
权利要求
1.一种发布数据的方法,包括(a)对多个数据单元中的每一个数据单元用密钥序列中的一个密钥进行加密;(b)将加密过的数据单元传送给多个用户终端;(c)将至少一个种子值传送给一个用户终端;(d)从该种子值生成一个密钥序列,其密钥个数大于传送给用户终端的种子值的个数;以及(e)在用户终端使用所述的密钥序列解密数据单元,特征在于,在步骤(d)中,生成一个构成步骤(a)的密钥序列的一个任意双重界定部分的密钥序列,并且,所述部分的上下边界在序列中的位置由步骤(c)中传送的至少一个种子值来决定。
2.根据权利要求1所述的方法,其中步骤(a)中使用的密钥序列如下生成(a)对一个或多个初始种子值进行运算,生成更多个中间种子值,该中间种子值隐蔽该初始种子值;(b)进一步对前一步骤生成的值进行运算,生成更多个深一层的值,该深一层的值隐蔽前一步骤生成的值;(c)重复步骤(b)直到生成的值的个数等于或大于步骤(a)所需的密钥的个数。
3.根据权利要求1或2所述的方法,其中步骤(d)包括组合从多个不同的种子值中导出的值。
4.根据权利要求1、2或3所述的方法,其中步骤(d)包括利用多个不同的隐蔽函数中的每一个对多个种子值进行运算。
5.根据权利要求4所述的方法,包括(I)用一组不同的隐蔽函数中的每一个函数对至少一个根种子值进行运算,生成多个深一层的值;(II)用该组不同的隐蔽函数中的每一个函数对前一步骤生成的深一层的值或从其导出的值进行运算;(III)重复步骤(II),通过该重复或每个重复,生成值树中的下一层;(IV)在步骤(a)中,使用从步骤(III)中生成的一层或多层中的种子序列中导出的值作为密钥序列;(V)在步骤(c)中,将来自树体内的至少一个值传送给一个用户终端,传送给该用户终端的该值或每个值在树中的位置决定了用户用于解密数据单元的可用密钥序列部分的位置和范围。
6.根据权利要求5所述的方法,包括,在步骤(I)中(i)用所述组不同的隐蔽函数对多个不同的种子值进行运算(ii)对所述不同的隐蔽函数中的每一个,组合用一个隐蔽函数对种子值中的一个进行运算的结果和用同一个或另一个隐蔽函数对另一个种子值进行运算的结果,从而生成多个深一层的值。
7.根据权利要求3所述的方法,其中步骤(d)包括(I)组合分别从第一和第二隐蔽函数链中导出的第一和第二值,从而生成一个第一下一个种子或密钥,该第一和第二隐蔽函数链有各自不同的种子(II)组合从第一链中第一值的位置后面的一个位置导出的一个值和从第二链中的第二值的位置前面的一个位置导出的一个值,从而生成一个深一层的下一个种子或密钥值。
8.根据权利要求7所述的方法,包括重复步骤(II)从而生成深一层的密钥值,在每一个重复中,来自第一链中的前一个位置后面的位置的值和第二链中的前一个位置前面的位置的值被组合。
9.根据前述权利要求中所述的任何一种方法,其中所述种子值通过一个通信网络传送给所述用户终端。
10.根据权利要求9所述的方法,其中所述种子值被从多个密钥管理节点传送给用户终端。
11.一种加密发布数据的方法,包括(a)用一个或多个隐蔽函数对至少一个根种子值进行运算,从而生成多个深一层的值;(b)用一个或多个隐蔽函数对前一步骤生成的深一层的值或从其导出的值进行运算;(c)重复步骤(b),通过该重复或每个重复生成值树中的下一层;(d)用步骤(c)中生成的层或多层中导出的一个密钥值序列加密多个数据单元。
12.一种将数据传送给一组用户的方法,包括(a)加密发布的数据;(b)系统地并独立于组成员变化地改变用于加密发布数据的密钥;(c)将所述数据传送给所述用户;(d)在所述用户的终端解密数据,特征在于,从许多初始种子值生成更多个中间种子值并从该中间种子值导出多个用于加密发布数据的密钥。
13.根据权利要求12所述的方法,其中密钥序列的每个可能的子集都可以从相应的种子值组合中导出。
14.根据前述权利要求中的任何一项的方法,其中每个加密的数据单元承载一个未加密的索引号以便向各用户标识应该使用序列中的哪一个密钥来解密该单元数据。
15.根据权利要求1到14中的任何一项的方法,其中任何接收者用来构造整个密钥序列的一个特定子范围密钥所需的种子以隐含地标识每个种子的顺序传送。
16.根据前述权利要求中的任何一项的方法,其中多个数据发送者使用彼此相同的密钥序列来加密相同的或不同的数据单元。
17.根据前述权利要求中的任何一项的方法,其中从种子生成的序列中的每个密钥被作为一个中间密钥以与另一个中间密钥或密钥序列组合以生成一个用以加密或解密数据单元的密钥序列。
18.一种发布数据的方法,包括用密钥序列中的一个密钥加密多个数据单元中的每个单元;将加密过的数据单元传送给多个用户终端,其特征在于,根据一个密钥构造算法生成该密钥序列并将其分配到应用数据单元,并且,该密钥构造算法的复本被发布给多个密钥管理器,以便在使用中,接收者可以从一个密钥管理器获得用于访问数据的一个任意部分的密钥,而不必向任何数据发送者查询。
19.一种操作用户终端的方法,包括a)接收多个用一个密钥序列加密过的数据单元;b)接收一个或多个种子值;c)从一个或多个种子值生成一个任意双重界定的密钥序列,其密钥个数大于在步骤(b)中接收的种子的个数;以及d)使用在步骤(c)中生成的值或由其导出的值解密所述应用数据单元。
20.一种被设计为根据权利要求18的方法操作的密钥管理器。
21.一种被设计为根据权利要求19的方法操作的用户终端。
22.一种被设计为根据权利要求1到19所述的任何一种方法操作的通信网络。
23.根据权利要求22所述的网络,其中使用一种多点传送或广播传输模式来发布数据。
24.根据权利要求22或23所述的网络,其中所述网络包括一个虚拟个人网络(VPN),并且其中用于构造用于解密数据的不同密钥子范围的不同种子组合给予虚拟个人网络的成员对该VPN的不同访问期间。
25.一种数据载体,包括在根据权利要求1到19中的任何一个方法中使用的多个加密过的数据单元。
全文摘要
在数据发布系统中,数据被划分为许多应用数据单元。系统地生成一个密钥序列,在数据源用不同的密钥对每个数据单元进行加密。在接收方,生成对应的密钥用于解密数据单元以使用该数据。用于生成密钥的结构是通过传送选择的一个或多个种子值的组合,用户可以使用整个密钥序列的一个固有限定的子集。
文档编号H04L12/22GK1408153SQ0081076
公开日2003年4月2日 申请日期2000年7月20日 优先权日1999年7月23日
发明者罗伯特·约翰·布里斯科 申请人:英国电讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1