亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

數(shù)據(jù)發(fā)布的制作方法

文檔序號(hào):7601484閱讀:403來(lái)源:國(guó)知局
專利名稱:數(shù)據(jù)發(fā)布的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種提供對(duì)數(shù)據(jù)的受控訪問(wèn)的數(shù)據(jù)發(fā)布系統(tǒng)。例如,根據(jù)用戶的預(yù)付款,該系統(tǒng)可用于在一定的時(shí)期內(nèi)提供對(duì)多點(diǎn)傳送的聲頻或視頻節(jié)目?jī)?nèi)容的訪問(wèn)。但是本發(fā)明并不限于用于多點(diǎn)傳送數(shù)據(jù)分組網(wǎng)絡(luò),也可能用于,比如包括諸如DVD(數(shù)字萬(wàn)用磁盤)的存儲(chǔ)介質(zhì)在內(nèi)的其它的成批數(shù)據(jù)發(fā)布渠道。
背景技術(shù)
多點(diǎn)傳送技術(shù)被開(kāi)發(fā)用于因特網(wǎng),它能夠?qū)?shù)據(jù)高效地從數(shù)據(jù)源發(fā)布給大量的接收者。但是,現(xiàn)有的多點(diǎn)傳送協(xié)議的高效性和可升級(jí)性部分地依賴于這一事實(shí),即數(shù)據(jù)源不必有任何有關(guān)數(shù)據(jù)接收者的知識(shí)。這在希望在數(shù)據(jù)源和接收者之間建立保密關(guān)系,例如以便將諸如電視節(jié)目的流式視頻數(shù)據(jù)僅傳送給那些已為接收節(jié)目而預(yù)先付費(fèi)的訂購(gòu)者時(shí)將存在問(wèn)題。
一般地,可以通過(guò)在數(shù)據(jù)源對(duì)數(shù)據(jù)進(jìn)行加密,然后控制用戶對(duì)解密數(shù)據(jù)所需密鑰的訪問(wèn)來(lái)建立這種保密關(guān)系。一個(gè)簡(jiǎn)單的方法是用一個(gè)單個(gè)話路密鑰加密數(shù)據(jù)。該話路密鑰一直保持不變直到一個(gè)新的用戶希望訪問(wèn)該數(shù)據(jù),或直到現(xiàn)有的用戶之一被排除。此時(shí),需要一個(gè)新的話路密鑰并將其發(fā)布給所有的用戶。雖然通過(guò)使用密鑰的分級(jí)可以一定程度地改善該密鑰發(fā)布方案的效率,在排除或加入一個(gè)特定的用戶時(shí)在這種密鑰的分級(jí)中只有一些需要改變,但是在新用戶加入或離開(kāi)時(shí),該方案仍然有較大的傳輸開(kāi)銷。
在本發(fā)明共同待審的國(guó)際專利申請(qǐng)PCT/GB98/03753(BT caseA25728/WO)中描述的另外一個(gè)方法中,數(shù)據(jù)在數(shù)據(jù)源被劃分為一系列的應(yīng)用數(shù)據(jù)單元(ADU)并且每個(gè)ADU使用一個(gè)不同的密鑰。這些密鑰由一個(gè)初始種子值系統(tǒng)地生成為一個(gè)序列。該種子值也被傳送給每個(gè)用戶終端處的保密模塊,該保密模塊控制最終用戶可否使用該密鑰。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供一個(gè)發(fā)布數(shù)據(jù)的方法,包括(a)對(duì)多個(gè)數(shù)據(jù)單元中的每一個(gè)數(shù)據(jù)單元用密鑰序列中的一個(gè)密鑰進(jìn)行加密;(b)將加密過(guò)的數(shù)據(jù)單元傳送給多個(gè)用戶終端;(c)將至少一個(gè)種子值傳送給一個(gè)用戶終端;(d)從該種子值生成一個(gè)密鑰序列,其密鑰個(gè)數(shù)大于傳送給用戶終端的種子值的個(gè)數(shù);以及(e)在用戶終端使用所述的密鑰序列解密數(shù)據(jù)單元,特征在于,在步驟(d)中,生成一個(gè)構(gòu)成步驟(a)的密鑰序列的一個(gè)任意雙重界定部分的密鑰序列,并且,所述部分的上下邊界在序列中的位置由步驟(c)中傳送的至少一個(gè)種子值來(lái)決定。
本發(fā)明提供一個(gè)發(fā)布數(shù)據(jù)的方法,其中如在上面提到的共同待審的申請(qǐng)中揭示的系統(tǒng)中那樣,用一個(gè)不同密鑰的序列加密連續(xù)的數(shù)據(jù)單元。但是,本發(fā)明的方法提供進(jìn)一步的顯著的優(yōu)點(diǎn),其中每個(gè)用戶可用的密鑰序列的范圍不是如在前一個(gè)系統(tǒng)中那樣可能是無(wú)限的,而是被雙重界定,也就是說(shuō),用戶可用的密鑰序列的開(kāi)始和結(jié)束位置是事先確定的。如下面進(jìn)一步說(shuō)明的那樣,數(shù)據(jù)發(fā)送者,或代表數(shù)據(jù)發(fā)送者而動(dòng)作的密鑰發(fā)布方,可以通過(guò)選擇發(fā)送給用戶的種子值來(lái)任意地確定用戶可用的密鑰序列的開(kāi)始和結(jié)束點(diǎn)及長(zhǎng)度。對(duì)密鑰序列的任何所希望的部分都存在一個(gè)種子的集合,該集合提供對(duì)該部分并且僅對(duì)該部分的訪問(wèn)。通過(guò)給用戶提供對(duì)雙重界定的密鑰集合的訪問(wèn),而不是對(duì)一個(gè)無(wú)限制的密鑰集合的訪問(wèn),本發(fā)明使不必在每個(gè)用戶終端安裝由數(shù)據(jù)發(fā)送者控制的用于控制用戶訪問(wèn)密鑰的保密模塊。
優(yōu)選地在步驟(a)中使用的密鑰序列如下生成(A)對(duì)一個(gè)或多個(gè)初始種子值進(jìn)行運(yùn)算,生成更多個(gè)中間種子值,該中間種子值隱蔽該初始種子值;(B)進(jìn)一步對(duì)前一步驟生成的值進(jìn)行運(yùn)算,生成更多個(gè)深一層的值,該深一層的值隱蔽前一步驟生成的值;(C)重復(fù)步驟(B)直到生成的值的個(gè)數(shù)等于或大于步驟(a)所需的密鑰的個(gè)數(shù)。
優(yōu)選地,該方法包括(i)用一組不同的隱蔽函數(shù)中的每一個(gè)函數(shù)對(duì)一個(gè)根種子值進(jìn)行運(yùn)算,生成多個(gè)深一層的值;(ii)用該組不同的隱蔽函數(shù)中的每一個(gè)函數(shù)對(duì)前一步驟生成的深一層的值進(jìn)行運(yùn)算;(iii)重復(fù)步驟(ii),通過(guò)該重復(fù)或每個(gè)重復(fù),生成值樹(shù)中的下一層;(iv)在步驟(a)中,使用步驟(ii)的最后一次重復(fù)中導(dǎo)出的值作為密鑰序列。
(v)在步驟(c)中,將至少一個(gè)來(lái)自根種子值下面的樹(shù)的值傳送給一個(gè)用戶,傳送給該用戶的值在樹(shù)中的位置決定了用戶用于解密數(shù)據(jù)單元的可用密鑰序列部分的位置和范圍。
隱蔽函數(shù)對(duì)輸入值進(jìn)行運(yùn)算以生成輸出值,其中即使已知該函數(shù),也不易從輸出值推導(dǎo)出輸入值。隱蔽函數(shù)可以包括,比如,諸如MD5(消息摘要數(shù)5)的加密哈希函數(shù)。
發(fā)明人發(fā)現(xiàn),一種系統(tǒng)地生成一系列的密鑰同時(shí)可以對(duì)用戶可用的序列部分的位置和范圍進(jìn)行簡(jiǎn)單控制的有效方法是用一組不同的隱蔽函數(shù)重復(fù)運(yùn)算以生成一個(gè)值的樹(shù)。在下面更詳細(xì)的說(shuō)明的例子中,使用了一個(gè)由一對(duì)對(duì)稱的隱蔽函數(shù)形成的二叉樹(shù)。一個(gè)函數(shù)是一個(gè)右轉(zhuǎn)移位后跟一個(gè)哈希函數(shù),另一個(gè)函數(shù)是左旋移位后跟一個(gè)哈希函數(shù)。本發(fā)明的本特征并不限于使用二叉樹(shù),也可以用三叉樹(shù)或更高級(jí)樹(shù)來(lái)實(shí)現(xiàn)。
優(yōu)選地,在步驟(c)中,種子值被通過(guò)通信網(wǎng)絡(luò)傳送給用戶終端,在本情形下,種子值優(yōu)選地從多個(gè)密鑰管理節(jié)點(diǎn)被傳送給用戶終端,其中節(jié)點(diǎn)在不同地點(diǎn)連接到網(wǎng)絡(luò)上。
本發(fā)明的優(yōu)選的實(shí)施例的另一個(gè)優(yōu)點(diǎn)是提供對(duì)編碼數(shù)據(jù)的訪問(wèn)的發(fā)布種子值的處理可以被移交給多個(gè)位于不同地點(diǎn)的密鑰管理節(jié)點(diǎn),這些節(jié)點(diǎn)的一些或全部遠(yuǎn)離數(shù)據(jù)源。這樣建立的數(shù)據(jù)控制系統(tǒng)可靈活用于大量的接收者。
一般,數(shù)據(jù)單元和種子值通過(guò)相同的通信網(wǎng)絡(luò)來(lái)發(fā)布。但是,這個(gè)并不必要。例如,可以將數(shù)據(jù)單元發(fā)布在諸如DVD的成批數(shù)據(jù)存儲(chǔ)介質(zhì)上,而隨后通過(guò)因特網(wǎng)將種子值在線地發(fā)送給用戶。很明顯,這些例子僅用于說(shuō)明,可以采用很多不同的實(shí)現(xiàn)方法。
優(yōu)選地以隱含地標(biāo)識(shí)每個(gè)種子的順序傳送任何接收者構(gòu)建用于整個(gè)密鑰序列的一個(gè)特定子范圍所需的密鑰的種子。在這種情況下,根據(jù)要求的最小和最大值和傳送種子的預(yù)先確定的順序的知識(shí),推導(dǎo)出該種子的索引,而不用顯式地列出每個(gè)種子的索引號(hào)。優(yōu)選地每個(gè)加密的數(shù)據(jù)單元承載一個(gè)未加密的索引號(hào)以向各用戶標(biāo)識(shí)解密該數(shù)據(jù)單元應(yīng)該使用序列中的哪一個(gè)密鑰。
根據(jù)本發(fā)明的另一個(gè)方面,提供一種加密發(fā)布數(shù)據(jù)的方法,包括(a)用一個(gè)或多個(gè)隱蔽函數(shù)對(duì)至少一個(gè)根種子值進(jìn)行運(yùn)算,從而生成多個(gè)深一層的值;(b)用一個(gè)或多個(gè)隱蔽函數(shù)對(duì)前一步驟生成的深一層的值或從其導(dǎo)出的值進(jìn)行運(yùn)算;(c)重復(fù)步驟(b),通過(guò)該重復(fù)或每個(gè)重復(fù)生成值樹(shù)中的下一層;(d)用由步驟(c)中生成的一個(gè)或多個(gè)推導(dǎo)出的密鑰值序列加密多個(gè)數(shù)據(jù)單元。
根據(jù)本發(fā)明的另一個(gè)方面,提供一種發(fā)布數(shù)據(jù)的方法,包括用密鑰序列中的一個(gè)密鑰加密多個(gè)數(shù)據(jù)單元中的每個(gè)單元,將加密的數(shù)據(jù)單元傳送給多個(gè)用戶終端,其特征在于,根據(jù)一個(gè)密鑰構(gòu)造算法生成該密鑰序列并將其分配到應(yīng)用數(shù)據(jù)單元中,并且,該密鑰構(gòu)造算法的復(fù)本被發(fā)布給多個(gè)密鑰管理器,以便在使用中,接收者可以從一個(gè)密鑰管理器獲得用于訪問(wèn)數(shù)據(jù)的一個(gè)任意部分的密鑰,而不必向任何數(shù)據(jù)發(fā)送者查詢。
本發(fā)明的這個(gè)方面提供一種數(shù)據(jù)發(fā)布的方法,其中密鑰管理可以被移交給多個(gè)密鑰管理節(jié)點(diǎn),使系統(tǒng)可以被升級(jí)以包含大量的用戶。
根據(jù)本發(fā)明的另一個(gè)方面,在根據(jù)前述方面的方法中,提供一個(gè)包括多個(gè)加密的數(shù)據(jù)單元的數(shù)據(jù)載體。該數(shù)據(jù)載體可以是,比如,諸如DVD盤、計(jì)算機(jī)存儲(chǔ)器的一個(gè)區(qū)域、或用數(shù)據(jù)單元編碼的數(shù)據(jù)傳輸信號(hào)之類的數(shù)據(jù)存儲(chǔ)介質(zhì)。
本發(fā)明還包含使用本發(fā)明的用戶終端、數(shù)據(jù)服務(wù)器以及密鑰管理器、使用這些設(shè)備的方法和包括這些設(shè)備的網(wǎng)絡(luò)。


下面參照附圖來(lái)詳細(xì)說(shuō)明實(shí)施本發(fā)明的系統(tǒng),其中圖1是一個(gè)實(shí)施本發(fā)明的網(wǎng)絡(luò)的示意圖;圖2表示圖1所示網(wǎng)絡(luò)中的一個(gè)用戶終端的結(jié)構(gòu);圖3表示圖1所示網(wǎng)絡(luò)中的一個(gè)密鑰管理節(jié)點(diǎn)的結(jié)構(gòu);圖4表示圖1所示網(wǎng)絡(luò)中的一個(gè)數(shù)據(jù)發(fā)送者的結(jié)構(gòu);圖5表示圖1所示網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)分組的格式;圖6表示通過(guò)密鑰管理節(jié)點(diǎn)進(jìn)行的密鑰發(fā)布;圖7表示一個(gè)雙向哈希鏈;圖8表示兩個(gè)隱蔽函數(shù)的生成;圖9表示一個(gè)二叉哈希樹(shù);圖10表示一個(gè)連續(xù)二叉哈希樹(shù);圖11表示一個(gè)混合二叉哈希鏈樹(shù)的元素;
圖12表示一個(gè)混合二叉哈希鏈樹(shù);圖13說(shuō)明混合二叉哈希鏈樹(shù)的構(gòu)造;圖14表示一個(gè)二叉哈希鏈樹(shù)的生長(zhǎng)序列;圖15表示一個(gè)連續(xù)二叉哈希鏈樹(shù)混合;圖16表示一個(gè)第二二叉哈希樹(shù)的元素;圖17說(shuō)明揭示和隱蔽BHC-T中的種子對(duì);圖18說(shuō)明揭示和隱蔽第二二叉哈希樹(shù)中的種子;圖19表示一個(gè)多維密鑰序列;圖20a到20e表示一個(gè)通用模型。
具體實(shí)施例方式
一個(gè)數(shù)據(jù)通信系統(tǒng)包括一個(gè)通過(guò)數(shù)據(jù)通信網(wǎng)絡(luò)2連接到多個(gè)用戶終端3的數(shù)據(jù)服務(wù)器1。雖然為了便于說(shuō)明只示出幾個(gè)用戶終端,但在實(shí)際中數(shù)據(jù)服務(wù)器1可能與很多終端同時(shí)通信。在本例中,數(shù)據(jù)通信網(wǎng)絡(luò)2是公共因特網(wǎng)并由通過(guò)節(jié)點(diǎn)4相互連接的多個(gè)子網(wǎng)絡(luò)2a-2c組成。該子網(wǎng)絡(luò)和相關(guān)聯(lián)的路由器支持IP(因特網(wǎng)協(xié)議)多點(diǎn)傳送。
在本例中,數(shù)據(jù)服務(wù)器1是視頻服務(wù)器。該數(shù)據(jù)服務(wù)器從一個(gè)海量存儲(chǔ)設(shè)備1a讀取一個(gè)視頻數(shù)據(jù)流并用諸如MPEG2的合適的壓縮算法壓縮數(shù)據(jù)。然后數(shù)據(jù)服務(wù)器1中的保密模塊將壓縮的視頻數(shù)據(jù)流分成應(yīng)用數(shù)據(jù)單元(ADU)。例如,每個(gè)ADU可以包含對(duì)應(yīng)于一分鐘的視頻信號(hào)的數(shù)據(jù)。然后利用一個(gè)加密算法用系統(tǒng)地生成的密鑰序列對(duì)ADU加密,其中每個(gè)ADU用不同的密鑰。合適的加密算法包括DES(數(shù)據(jù)加密標(biāo)準(zhǔn))(US聯(lián)合標(biāo)準(zhǔn)FIPSPUB46)。這是一個(gè)傳統(tǒng)的私有密鑰算法。用于生成密鑰序列的種子值也從數(shù)據(jù)服務(wù)器1傳送給多個(gè)密鑰管理節(jié)點(diǎn)。該密鑰管理節(jié)點(diǎn)散布在數(shù)據(jù)通信網(wǎng)絡(luò)中的不同位置。為了響應(yīng)來(lái)自一個(gè)用戶終端的請(qǐng)求,密鑰管理節(jié)點(diǎn)將多個(gè)種子值傳送給該終端。在傳送種子值前相應(yīng)的密鑰管理節(jié)點(diǎn)可能實(shí)施檢查,例如,確認(rèn)相關(guān)的用戶終端是否有權(quán)訪問(wèn)所請(qǐng)求的數(shù)據(jù)。例如,該用戶可能有所請(qǐng)求的訪問(wèn)從視頻數(shù)據(jù)服務(wù)器1多點(diǎn)傳送的某一電影的權(quán)利。如果該電影是每次付費(fèi)觀看,該密鑰管理節(jié)點(diǎn)負(fù)責(zé)檢查該用戶是否有該視頻數(shù)據(jù)服務(wù)器的運(yùn)營(yíng)者的帳戶和是否已為該電影適當(dāng)?shù)仡A(yù)付費(fèi)。如果這些條件都滿足,則該密鑰管理節(jié)點(diǎn)將選擇的種子發(fā)布給用戶,允許用戶生成密鑰。該密鑰對(duì)應(yīng)于在數(shù)據(jù)服務(wù)器中用來(lái)加密組成該電影的ADU的密鑰序列部分。如下的詳細(xì)說(shuō)明,用于生成密鑰序列的算法使適當(dāng)選擇的種子值可用來(lái)提供對(duì)原始密鑰序列的一個(gè)任意界定部分的訪問(wèn)。
圖2表示一個(gè)用戶終端3的主要的功能組成部分。網(wǎng)絡(luò)接口22從或向數(shù)據(jù)通信網(wǎng)絡(luò)2接收或發(fā)送ADU。該ADU從接口22傳遞給訪問(wèn)模塊23。與訪問(wèn)模塊23可能位于一個(gè)獨(dú)立的保密模塊(例如智能卡)中的以前的系統(tǒng)不同,在實(shí)施本發(fā)明的系統(tǒng)中,訪問(wèn)模塊可以是一個(gè)在用戶終端的主處理器中運(yùn)行的軟件模塊。訪問(wèn)模塊23包括一個(gè)解密模塊D,一個(gè)密鑰生成模塊K和一個(gè)種子存儲(chǔ)器SS。種子存儲(chǔ)器存儲(chǔ)從密鑰管理節(jié)點(diǎn)接收的種子值并用一個(gè)密鑰構(gòu)造算法,如下面詳細(xì)說(shuō)明的那些算法,來(lái)處理那些種子值以生成一系列的密鑰。該一系列密鑰有由種子存儲(chǔ)器SS保存的種子值決定的開(kāi)始點(diǎn)和結(jié)束點(diǎn)。把本序列中的密鑰順序地傳遞給解密模塊D。解密模塊D解密從接口22接收的一系列的ADU,并將其傳遞給應(yīng)用層模塊24。這將進(jìn)行進(jìn)一步的處理,例如用MPEG2解密算法,并將結(jié)果數(shù)據(jù)傳遞給一個(gè)輸出設(shè)備,在本例中是一個(gè)視頻顯示單元VDU 25。在優(yōu)選的實(shí)現(xiàn)中,接口22可以通過(guò)ISDN調(diào)制解調(diào)器用硬件實(shí)施或通過(guò)TCP-IP(傳輸控制協(xié)議-因特網(wǎng)協(xié)議)棧用軟件實(shí)施。
用戶終端可以用多種形式實(shí)施。例如,終端可以包括帶有適當(dāng)網(wǎng)絡(luò)接口的個(gè)人計(jì)算機(jī)、智能移動(dòng)電話、以及與電視機(jī)協(xié)力提供因特網(wǎng)訪問(wèn)的機(jī)頂盒。
圖3表示圖1的網(wǎng)絡(luò)中的一個(gè)密鑰管理節(jié)點(diǎn)的一個(gè)例子的結(jié)構(gòu)。該節(jié)點(diǎn)通過(guò)TCP-IP棧將數(shù)據(jù)分組傳送給數(shù)據(jù)發(fā)送者和用戶終端或“接收者”。以傳統(tǒng)的方式使用一個(gè)公共密鑰加密算法通過(guò)加密套接字協(xié)議層(SSL)32傳送數(shù)據(jù)分組,密鑰管理應(yīng)用程序33以在后面進(jìn)一步詳細(xì)說(shuō)明的方式從數(shù)據(jù)發(fā)送者接收種子值并將發(fā)布的種子值發(fā)送給用戶終端。與密鑰管理應(yīng)用程序33關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)器330保存從該數(shù)據(jù)發(fā)送者或每個(gè)數(shù)據(jù)發(fā)送者接收的種子值。用戶通過(guò)一個(gè)用戶接口34與密鑰管理應(yīng)用程序相互作用,例如,用戶接口34可以用HTML(超文本鏈接標(biāo)示語(yǔ)言)和CGI為用戶終端提供網(wǎng)頁(yè)。
圖4表示圖1的網(wǎng)絡(luò)中的一個(gè)數(shù)據(jù)發(fā)送者的一個(gè)例子的結(jié)構(gòu)。數(shù)據(jù)應(yīng)用程序41輸出數(shù)據(jù),在本例中,數(shù)據(jù)包括一個(gè)被分為多個(gè)應(yīng)用數(shù)據(jù)單元的MPEG2視頻流。該視頻節(jié)目?jī)?nèi)容從存儲(chǔ)器410中導(dǎo)出。ADU被傳遞給訪問(wèn)模塊42。它包括一個(gè)加密子模塊、一個(gè)密鑰生成子模塊K和一個(gè)種子存儲(chǔ)器SS。子模塊K協(xié)同諸如后面見(jiàn)一步詳細(xì)說(shuō)明的密鑰構(gòu)造算法使用隨機(jī)生成的種子值來(lái)生成一個(gè)密鑰序列。種子值也可以通過(guò)加密套接字層43和TCP-IP棧44從訪問(wèn)模塊42輸出。加密的ADU也通過(guò)TCP-IP棧44輸出。
數(shù)據(jù)服務(wù)器和密鑰管理節(jié)點(diǎn)都可以用商用的平臺(tái),如COMPAQ ProliantTM服務(wù)器或Sun Microsystems Enterprise 5000TM服務(wù)器來(lái)實(shí)現(xiàn)。
圖5表示數(shù)據(jù)發(fā)送者輸出的一個(gè)數(shù)據(jù)幀的格式。它包括一個(gè)承載加密ADU的數(shù)據(jù)有效負(fù)載、一個(gè)密鑰索引ki和一個(gè)話路標(biāo)識(shí)符SE。密鑰索引和話路標(biāo)識(shí)符按原樣發(fā)送。
一般,密鑰值可以通過(guò)與用于發(fā)布ADU相同的通信網(wǎng)絡(luò)發(fā)布給用戶終端。
在本說(shuō)明書(shū)中用術(shù)語(yǔ)“應(yīng)用數(shù)據(jù)單元”(ADU)來(lái)描述從保密或商業(yè)的觀點(diǎn)來(lái)看有用的最小數(shù)據(jù)單元。ADU的大小可能隨著所需的應(yīng)用和保密性變化。它可能是一個(gè)初始化幀和一個(gè)視頻序列中的相關(guān)的“P-幀”集合,或者可能是對(duì)一個(gè)網(wǎng)絡(luò)游戲的10分鐘的訪問(wèn)。用來(lái)加密的ADU可能與一個(gè)應(yīng)用的不同層使用的ADU不同。例如,在本例中ADU與MPEG壓縮算法處理的視頻幀的持續(xù)期間不同,也與用戶購(gòu)買的個(gè)人節(jié)目項(xiàng)的持續(xù)期間不同。為了提高系統(tǒng)的性能,可能只部分地加密ADU,其余的按原樣發(fā)送。ADU的大小可能在隨內(nèi)容而定的流的持續(xù)期間變化。如果在15分鐘內(nèi)有一百萬(wàn)個(gè)接收者加入一個(gè)多點(diǎn)傳送數(shù)據(jù)流,應(yīng)用數(shù)據(jù)單元的大小是系統(tǒng)可升級(jí)性的一個(gè)主要的決定因素,但ADU的大小也是15分鐘,那么這將只需要一個(gè)重新分配密鑰(re-key)事件。下面詳細(xì)說(shuō)明不同的密鑰序列構(gòu)造算法。
發(fā)送者去耦結(jié)構(gòu)本發(fā)明不限于使用圖1的方法中的簡(jiǎn)單的時(shí)序。例如,本發(fā)明可應(yīng)用于大規(guī)模的網(wǎng)絡(luò)游戲。
在這種游戲中,ADU的經(jīng)濟(jì)價(jià)值與時(shí)間或數(shù)據(jù)量無(wú)關(guān),僅與一個(gè)完全的應(yīng)用特定因素有關(guān)。在本例中,參加者按每“游戲分鐘”付費(fèi),持續(xù)期間不是嚴(yán)格地與實(shí)際時(shí)間的分鐘有關(guān),而是由游戲時(shí)間保持器定義和發(fā)信號(hào)表示。該游戲包括很多虛擬地域,每個(gè)由不同的地域控制器調(diào)節(jié)。該地域控制器提供帶給地域生命的后臺(tái)事件和數(shù)據(jù)。它們將這個(gè)加密的數(shù)據(jù)傳送給每個(gè)地域的一個(gè)多點(diǎn)傳送地址,但是在所有的地域的任何時(shí)間使用相同的ADU索引和密鑰。因此盡管被散布到多個(gè)多點(diǎn)傳送地址,但是整個(gè)游戲是一個(gè)單一保密多點(diǎn)傳送話路。游戲者只要有當(dāng)前密鑰就可以調(diào)入任何地域的后臺(tái)數(shù)據(jù)。地域中的游戲者創(chuàng)建的前臺(tái)事件不加密,但如果不參看后臺(tái)數(shù)據(jù)它們將毫無(wú)意義。
圖6表示這種游戲的數(shù)據(jù)流。只示出了與游戲安全性相關(guān)的數(shù)據(jù)流以及在游戲進(jìn)程中,而不是在設(shè)立時(shí),發(fā)送的數(shù)據(jù)流。所有的游戲者都在發(fā)送數(shù)據(jù),但圖中只示出加密的發(fā)送者,S-地域控制器。同樣,只示出解密的接受者,R-游戲者。游戲控制器設(shè)立游戲保密性,其在圖中未示出,在下面說(shuō)明。密鑰管理操作委派給多個(gè)復(fù)制的密鑰管理器,KM,其使用保密Web服務(wù)器技術(shù)。
保密多點(diǎn)傳送話路的密鑰在一個(gè)序列中每游戲分鐘(每ADU)變化一次。所有的加密數(shù)據(jù)都以一個(gè)未加密的ADU索引開(kāi)頭,該索引指向用于解密的密鑰。在設(shè)立階段后,游戲控制器、地域控制器和密鑰管理器保存有可以計(jì)算整個(gè)游戲持續(xù)期間使用的密鑰序列的初始種子。也可以使用分階段的設(shè)立。
游戲設(shè)立1.游戲控制器(未示出)在驗(yàn)證身份的有效性后,單點(diǎn)傳送一個(gè)共享的“控制話路密鑰”給所有的KM和S。所有S和所有KM運(yùn)行保密Web服務(wù)器以便通過(guò)客戶驗(yàn)證的加密套接字層(SSL)通信傳送給每個(gè)KM和S用各公共密鑰加密。游戲控制器還把它將要用于控制消息的多點(diǎn)傳送地址通知給所有的KM和S,這些KM和S要立即加入該地址。
2.游戲控制器然后生成用于構(gòu)造整個(gè)密鑰序列的初始種子值并將其多點(diǎn)傳送給所有的KM和所有S,用控制話路密鑰加密該消息并使用一個(gè)適于所涉及的大概是少量目標(biāo)的可靠的多點(diǎn)傳送協(xié)議。
3.游戲以一個(gè)驗(yàn)證的話路目錄聲明來(lái)宣告,如在Mark Handley(UCL)的“可升級(jí)的因特網(wǎng)多媒體會(huì)議系統(tǒng)”,博士論文(1997年11月14日)中描述的那樣定期地重復(fù)多點(diǎn)傳送(未示出)。經(jīng)驗(yàn)證的聲明可以避免攻擊者建立虛假付費(fèi)服務(wù)器來(lái)收取游戲的收益。該聲明協(xié)議被增強(qiáng)以包括密鑰管理器地址和每游戲分鐘的價(jià)格的詳細(xì)信息。為了獲得每游戲分鐘的價(jià)格,密鑰管理器監(jiān)聽(tīng)該聲明以及接收者。該聲明還必須指明正在使用的密鑰序列構(gòu)造。
接收者話路設(shè)立,持續(xù)期間和終止1.從話路目錄聽(tīng)到該游戲廣告后,一個(gè)希望付費(fèi)加入游戲的接收者用合適的形式聯(lián)系一個(gè)KM網(wǎng)絡(luò)服務(wù)器,請(qǐng)求一定數(shù)量的游戲分鐘。這在圖6中表示為“單點(diǎn)傳送設(shè)立”。R為所請(qǐng)求的游戲分鐘付費(fèi)給KM,可能是給出她的信用卡的信息或以一些電子現(xiàn)金的形式或在先前游戲中贏得的代用幣支付。作為回報(bào),KM將一組中間種子發(fā)送給R使其可以計(jì)算她購(gòu)買的密鑰序列的子范圍。在下一節(jié)描述的該密鑰序列的構(gòu)造使該過(guò)程成為可能。所有這些都發(fā)生在加密套接字協(xié)議層(SSL)通信中,只有KM需要驗(yàn)證,而不是R。
2.R用她購(gòu)買的中間種子生成相關(guān)的密鑰。
3.R加入由游戲應(yīng)用程序確定的相關(guān)多點(diǎn)傳送,其中的一個(gè)多點(diǎn)傳送總是來(lái)自一個(gè)S的加密的后臺(tái)地域數(shù)據(jù)。R用前一步計(jì)算的密鑰序列解密這些消息,這樣使其余的游戲數(shù)據(jù)有意義。
4.每當(dāng)時(shí)間保持器發(fā)出表示一個(gè)新的游戲分鐘的信號(hào)時(shí)(通過(guò)控制多點(diǎn)傳送),所有的地域控制器遞增其ADU索引并使用序列中的下一個(gè)密鑰。它們都使用相同的ADU索引。每個(gè)R注意到來(lái)自S的消息中的ADU索引被遞增并使用序列中的下一個(gè)適當(dāng)?shù)拿荑€。
5.當(dāng)游戲分鐘索引到達(dá)R所購(gòu)買的序列的末尾時(shí),應(yīng)用程序在游戲者失去訪問(wèn)權(quán)之前給她發(fā)出一個(gè)“插入硬幣”的警告。游戲分鐘繼續(xù)遞增直到到達(dá)所需密鑰超出R可計(jì)算的范圍的位置。如果R沒(méi)有購(gòu)買更多的游戲分鐘,她必須退出該游戲。
這種情形說(shuō)明了只要密鑰管理器通過(guò)一些預(yù)先安排知道每個(gè)ADU索引的經(jīng)濟(jì)價(jià)值或每個(gè)ADU的訪問(wèn)策略,發(fā)送者如何與所有接收者的加入和退出活動(dòng)完全去耦。不必在密鑰管理器和發(fā)送者之間進(jìn)行任何通信。發(fā)送者不必監(jiān)聽(tīng)任何接收者的活動(dòng)。如果密鑰管理器需要避免出售已經(jīng)傳輸?shù)腁DU,它們只需與來(lái)自發(fā)送者的變化的ADU序列號(hào)流保持同步。在本例中,密鑰管理器通過(guò)監(jiān)聽(tīng)多點(diǎn)傳送數(shù)據(jù)本身來(lái)同步。在其他情形下,同步可能只簡(jiǎn)單地基于時(shí)間,可以是通過(guò)顯式的同步信號(hào)也可以通過(guò)一天中時(shí)間的同步來(lái)隱含地進(jìn)行。在另外的情形下(例如,商用軟件的多點(diǎn)傳送發(fā)布),傳輸?shù)臅r(shí)間可能無(wú)關(guān)。例如,可能是定期地重復(fù)傳輸,購(gòu)買序列的一部分的密鑰的接收者可以在以后的任何時(shí)間收聽(tīng)。
在本例中用預(yù)付來(lái)購(gòu)買種子。這可以保證密鑰管理器不保持關(guān)于他們的用戶的狀態(tài)。這意味著由于不需要中央狀態(tài)庫(kù)所以他們可以被無(wú)限地復(fù)制,否則將會(huì)是下列情形如果種子是用帳戶購(gòu)買則需要檢查用戶的帳戶狀態(tài)。
下面說(shuō)明密鑰構(gòu)造的不同方法。
密鑰序列構(gòu)造在下面的所有密鑰序列構(gòu)造中,使用下列的符號(hào)●b(v)是表示用于隱蔽v值的函數(shù)的符號(hào)。即,對(duì)手不能通過(guò)有限的計(jì)算從b(v)得到v。一個(gè)隱蔽或單向函數(shù)的例子是諸如MD5哈希(IETF RFC1321)或標(biāo)準(zhǔn)加密哈希1(NIST Sha-1)的哈希函數(shù)。好的哈希函數(shù)一般只需要較少的計(jì)算資源。哈希函數(shù)被設(shè)計(jì)為將任何大小的輸入減小為固定大小的輸出。在所有情況下,我們都將使用已經(jīng)具有與輸出相同大小的輸入,只使用哈希的隱蔽屬性,而不使用大小減小屬性。
●bh(v)表示重復(fù)應(yīng)用于前一個(gè)結(jié)果的函數(shù)b(),總共h次。
●r(v)是任何可快速計(jì)算的1對(duì)1函數(shù),該函數(shù)將一組輸入值映射到它自己。循環(huán)的(旋轉(zhuǎn)的)位移位是這種函數(shù)的一個(gè)例子。
●c(v1,v2,...)是一個(gè)函數(shù),其組合數(shù)值v1,v2等,使得在給出結(jié)果和除一個(gè)運(yùn)算數(shù)以外的所有運(yùn)算數(shù)的情況下,剩余的運(yùn)算數(shù)可以被簡(jiǎn)單地推導(dǎo)出來(lái)。也可以選擇c()以便使如果運(yùn)算數(shù)的位是獨(dú)立的和無(wú)偏差的,則結(jié)果的位也將是獨(dú)立的和無(wú)偏差的。XOR函數(shù)是這種組合函數(shù)的一個(gè)簡(jiǎn)單例子。c()理想上也應(yīng)該是用來(lái)簡(jiǎn)單地推導(dǎo)出剩余運(yùn)算數(shù)的函數(shù),如XOR的情況下,為v1=c(c(v1,v2,...),v2,...)。
在節(jié)4.5中說(shuō)明所有的構(gòu)造的一個(gè)通用模型,但先用它自己的術(shù)語(yǔ)介紹每個(gè)方案更為清楚。
雙向哈希鏈(BHC)雙向哈希鏈結(jié)構(gòu)只被證明在一種有限的形式下是安全的,但是我們堅(jiān)持對(duì)其進(jìn)行描述。因?yàn)樵撚邢薨姹拘纬闪艘粋€(gè)后面方案的基礎(chǔ)。也可能有使用無(wú)限形式的情形1.發(fā)送者隨機(jī)地生成2個(gè)初始種子值,v(0,0)&v(0,1)。作為一個(gè)具體的例子,我們將假設(shè)這些值為128位寬。
2.發(fā)送者決定所需的最大密鑰序列的長(zhǎng)度,H3.發(fā)送者對(duì)每個(gè)種子重復(fù)地應(yīng)用相同的隱蔽函數(shù)以生成2個(gè)長(zhǎng)度(H)相等的種子鏈。因而值為v(0,0)到v(H-1,0)和v(0,1)到v(H-1,1)。由于項(xiàng)H-1經(jīng)常出現(xiàn),簡(jiǎn)明起見(jiàn),我們引入另一個(gè)常數(shù)G=H-1。
因此在形式上,v(h,0)=bh(v(0,0));v(h,1)=bh(v(0,1)) (4.1.1)4.為了生成密鑰k0,發(fā)送者組合鏈0的第一個(gè)種子v(0,0)和鏈1的最后一個(gè)種子v(G,1)。
為了生成密鑰k1,發(fā)送者組合鏈0的第二個(gè)種子v(1,0)和鏈1的倒數(shù)第二個(gè)種子v(G-1,1),以此類推。
形式上,kh=c(v(h,0),v(G-h,1))(4.1.2)嚴(yán)格地說(shuō),使用的流密碼不需要128b密鑰,因此可以通過(guò)截?cái)嘣摻M合結(jié)果的最高(或最低)有效位導(dǎo)出一個(gè)較短的密鑰,一般截至64b。流密碼的選擇是不相關(guān)的只要它是快速和安全的。
5.發(fā)送者開(kāi)始多點(diǎn)傳送該流,用k0加密ADU0(應(yīng)用數(shù)據(jù)單元0),用k1加密ADU1,以此類推。但至少保持ADU序列號(hào)為不加密。
6.如果發(fā)送者委托密鑰管理,它必須秘密地將2個(gè)初始種子值傳送給密鑰管理器。生成新的初始種子對(duì)并將其與用先前計(jì)算的密鑰加密過(guò)的流式數(shù)據(jù)并行傳送給密鑰管理器。
接收者如下重新構(gòu)造該序列的一部分1.當(dāng)接收者被授權(quán)訪問(wèn)ADUm到ADUn時(shí),發(fā)送者(或密鑰管理器)單點(diǎn)傳送種子v(m,0)和v(G-n,1)給該接收者。
2.該接收者通過(guò)對(duì)用(4.1.1)發(fā)送的種子重復(fù)地應(yīng)用隱蔽函數(shù)來(lái)生成種子鏈v(m,0)到v(n,0)和v(G-n,1)到v(G-m,1)。
3.接收者用與發(fā)送者相同的方式用(4.1.2)生成密鑰km到kn。
但是,該接收者無(wú)法知道種子v(h,0)(其中,h<m)或v(h,1)(其中,h>n),除非對(duì)那些發(fā)送者已揭示的隱蔽種子之前的隱蔽種子進(jìn)行窮盡搜索。因此,接收者無(wú)法計(jì)算超出km到kn范圍的密鑰。
4.通過(guò)發(fā)送該范圍的界限處的相關(guān)種子,任何其它的接收者可以訪問(wèn)一個(gè)完全不同的ADU范圍;“開(kāi)始”種子來(lái)自第一鏈,“結(jié)束”種子來(lái)自第二鏈。
圖7中深灰色背景的種子的范圍表示對(duì)第一個(gè)提到的接收者隱蔽的種子。連向深灰色背景的密鑰的引線也是對(duì)該接收者隱蔽的。
因此,通過(guò)對(duì)于每個(gè)話路每個(gè)接收者僅發(fā)送2個(gè)種子,每個(gè)接收者可以被授權(quán)訪問(wèn)任何鄰接密鑰范圍。不幸的是,這種構(gòu)造只能有限的使用,除非每個(gè)接收者可以被限制為在一個(gè)發(fā)送者序列中曾經(jīng)只有一個(gè)密鑰范圍被揭示過(guò)。如果一個(gè)接收者被授權(quán)訪問(wèn)一個(gè)早先范圍,然后另一個(gè)后來(lái)范圍(比如k0到k1然后為kG-1到kG),她可以計(jì)算在(k0到kG)之間的所有的值。這是因?yàn)榉N子v(0,0),v(G-1,1),v(G-1,0)和v(G,1)將必須被揭示,但僅v(0,0)和v(G,1)可以揭示整個(gè)序列。
一個(gè)可以繞過(guò)這個(gè)限制的方法是定期地用一個(gè)新的種子值重新開(kāi)始第二個(gè)鏈(即保持H為低)并禁止一個(gè)接收者在H個(gè)ADU內(nèi)進(jìn)行兩次訪問(wèn)。但是,這需要在密鑰管理器上保存每個(gè)用戶的狀態(tài)??赡苡幸恍┻m合本方案的合適的應(yīng)用,例如用戶只能擴(kuò)充訂購(gòu)而不能退出然后恢復(fù)的商業(yè)模型。這種情況下,這將是一個(gè)非常有效的方案。
第二個(gè)可以繞過(guò)這個(gè)限制的方法是注意只有在兩個(gè)最低限度的短鏈之間有間隙空間的情況下才可能有兩個(gè)不相交的鏈。換言之,H<4的鏈永遠(yuǎn)是安全的。這種短鏈似乎不大使用,但后面我們將用該特征從短BHC片段建立一個(gè)混合構(gòu)造。
二叉哈希樹(shù)(BHT)二叉哈希樹(shù)需要兩個(gè)公知的隱蔽函數(shù)b0()和b1()。我們將它們稱為“左”和“右”隱蔽函數(shù)。一般它們可以通過(guò)在單個(gè)隱蔽函數(shù)b()前應(yīng)用兩個(gè)簡(jiǎn)單的1對(duì)1函數(shù)r0()和r1()中的一個(gè),由單個(gè)隱蔽函數(shù)b()來(lái)構(gòu)造。如圖8所示。
這樣b0(s)=b(r0(s));b1(s)=b(r1(s))例如,第一個(gè)公知的隱蔽函數(shù)可以是一個(gè)一位左旋循環(huán)移位后跟一個(gè)MD5哈希函數(shù),而第二個(gè)隱蔽函數(shù)可以是一個(gè)一位右旋循環(huán)移位后跟一個(gè)MD5哈希函數(shù)。其它的可選方法可以是在一個(gè)隱蔽函數(shù)之前先與1進(jìn)行XOR或連接一個(gè)公知的字??磥?lái)選擇消耗處理器資源最小但消耗量一樣的兩個(gè)函數(shù)是有利的,因?yàn)檫@將在所有情形下平衡負(fù)載并限制對(duì)隱藏信道的易感性,如果處理器負(fù)載水平將揭示出所選擇的被執(zhí)行函數(shù)就可能出現(xiàn)這種隱藏信道。另外,為了提高有效性,可以使用哈希函數(shù)的兩個(gè)類型,例如具有兩個(gè)不同的初始化向量的MD5。但是,竄改試驗(yàn)算法似乎是不明智的。
密鑰序列如下構(gòu)造1.發(fā)送者隨機(jī)地生成一個(gè)初始種子值s(0,0),作為一個(gè)具體的例子,我們假定其值為128位寬。
2.在需要一個(gè)新的初始值前,發(fā)送者決定需要的最大的樹(shù)深度D,該深度將導(dǎo)出一個(gè)最大密鑰序列長(zhǎng)度,N0=2D。
3.發(fā)送者分別對(duì)該初始種子應(yīng)用“左”和“右”隱蔽函數(shù),生成兩個(gè)“左”和“右”第一層中間種子值s(1,0)=b0(s(0,0));s(1,1)=b1(s(0,0))。
發(fā)送者生成四個(gè)第二層中間種子值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)),以此類推,創(chuàng)建一個(gè)深度為D層的中間種子值的二叉樹(shù)。
形式上,如果sd,i是一個(gè)比初始種子s0,0低d層的中間種子sd,i=bp(s(d-1),i/2) (4.2.1)其中i為偶數(shù)時(shí)p=0,i為奇數(shù)時(shí)p=1。
4.如前所述,通過(guò)從橫穿樹(shù)的葉子的種子值或通過(guò)它們的截?cái)嗟耐茖?dǎo)值來(lái)構(gòu)造該密鑰序列。
即,如果D=5,k0=s(5,0);k1=s(5,1);...k31=s(5,31)。
形式上,ki=sD,i(4.2.2)5.發(fā)送者開(kāi)始多點(diǎn)傳送該流,用k0加密ADU0,用k1加密ADU1,以此類推。但至少保持ADU序列號(hào)為不加密。
6.如果發(fā)送者委托密鑰管理,它必須秘密地將初始種子值傳送給密鑰管理器。生成新的初始種子并將其與用先前計(jì)算的密鑰加密過(guò)的流式數(shù)據(jù)并行地傳送給密鑰管理器。
接收者如下重新構(gòu)造該序列的一部分1.當(dāng)一個(gè)接收者被授權(quán)訪問(wèn)從ADUm到ADUn時(shí),發(fā)送者(或一個(gè)密鑰管理器)將一個(gè)種子集合單點(diǎn)傳送給該接收者(例如使用SSL)。該集合由離樹(shù)根最近的中間種子組成,這些中間種子使得能夠計(jì)算需要的密鑰范圍而不能計(jì)算該范圍之外的任何密鑰。
這些通過(guò)檢驗(yàn)最大和最小種子的索引i來(lái)識(shí)別,該檢驗(yàn)基于下面的事實(shí)一個(gè)偶數(shù)索引總是一個(gè)“左”孩子,而一個(gè)奇數(shù)索引總是一個(gè)“右”孩子。從葉子開(kāi)始往上,在樹(shù)的每一層上進(jìn)行檢驗(yàn)。在移到上一層之前總是需要揭示一個(gè)“右”最小值或一個(gè)“左”最大值。如果一個(gè)種子被揭示,索引就向內(nèi)移動(dòng)一個(gè)種子,以便在移到上一層前,最小值和最大值總分別為偶數(shù)和奇數(shù)。為了向上移一層,如果需要,最小和最大索引被二等分并下舍入。這保證它們之間的差可預(yù)測(cè)地減2。如前所述,對(duì)新索引重復(fù)該奇數(shù)/偶數(shù)檢驗(yàn),揭示“右”最小值或“左”最大值。繼續(xù)該處理直到最小值和最大值交錯(cuò)或相遇。它們可能在其中一個(gè)或兩個(gè)都向內(nèi)移動(dòng)后交錯(cuò)。它們可能在兩個(gè)都向上移動(dòng)后相遇,在該情形下,需要在結(jié)束該過(guò)程前揭示它們相遇處的種子。在附錄A中以類似C的編碼更形式上說(shuō)明該過(guò)程。
2.顯然,每個(gè)接收者需要知道給予他的每個(gè)種子在樹(shù)中的位置。這些種子和它們的索引在被揭示時(shí)可以被顯式地成對(duì)。另外,為了減少所需的帶寬,協(xié)議可以指明發(fā)送種子的順序以便可以從最小和最大索引及種子的順序隱含地計(jì)算出每個(gè)索引。這是可能的,因?yàn)橹挥幸粋€(gè)允許重新創(chuàng)建任何一個(gè)密鑰范圍的最小種子集合。
每個(gè)接收者可以與發(fā)送者一樣對(duì)這些中間種子重復(fù)相同的隱蔽函數(shù)對(duì)以重新創(chuàng)建密鑰序列,km到kn(等式4.2.1&4.2.2)。
3.通過(guò)向其它的任何接收者發(fā)送一個(gè)不同的中間種子集合,可以授權(quán)他訪問(wèn)一個(gè)完全不同的ADU范圍。
圖9中示出了一個(gè)D=4的密鑰序列的創(chuàng)建過(guò)程。
作為一個(gè)例子,我們循環(huán)相關(guān)的中間種子,這些中間種子允許一個(gè)接收者重新創(chuàng)建從k3到k9的密鑰序列。對(duì)接收者隱蔽的種子和密鑰以灰色背景表示。當(dāng)然,在實(shí)踐中一般D的值大于4。
注意到每一層可被分配一個(gè)任意的d值,只要它唯一地標(biāo)識(shí)該層即可。什么也不依賴于d或D的實(shí)際值。因此發(fā)送者不必揭示樹(shù)向上延伸多遠(yuǎn),從而改善了保密性。
往往一個(gè)話路在開(kāi)始時(shí)會(huì)有一個(gè)未知的持續(xù)期間。顯然,D的選擇限制了從任何一個(gè)開(kāi)始點(diǎn)開(kāi)始的密鑰序列的最大長(zhǎng)度。最簡(jiǎn)單的作法(work-round)是如果需要,生成一個(gè)新的初始種子并在舊樹(shù)旁邊開(kāi)始一個(gè)新的二叉哈希樹(shù)。如果所有的發(fā)送者和接收者都知道D,各方都能立即發(fā)現(xiàn)超出最大密鑰索引2D的密鑰范圍。在這種情形下給每個(gè)新樹(shù)分配一個(gè)“樹(shù)-id”并與每個(gè)樹(shù)的種子一起指明它是明智的。
另一個(gè)避免該上限的方法是使D是可變的,例如,D=D0+f(i),而不是常數(shù)。圖10中示出了這樣一個(gè)連續(xù)的BHT,其中D0=4并且每M個(gè)密鑰D加1。在本例中,M取固定值7。但是增加該復(fù)雜性并沒(méi)有太大意義,因?yàn)椴煌臉?shù)分支的公共種子只是沿著樹(shù)的最右手邊分支的種子sd,2d。如果這些種子中的任何種子曾被揭示過(guò)則整個(gè)未來(lái)的樹(shù)都將被揭示。因此,這個(gè)“改進(jìn)”將永遠(yuǎn)不會(huì)在向用戶揭示任意密鑰范圍時(shí)被用來(lái)提高效率,所有其能節(jié)省的只是發(fā)送者非常偶然地將普通的消息中的一個(gè)新初始種子傳遞給密鑰管理器。相反,它引入一個(gè)安全缺陷,因?yàn)樗鼊?chuàng)建一個(gè)“無(wú)限”值種子的集合,對(duì)此,任何數(shù)量的窮盡搜索都是值得做的。另一方面,如第一種作法那樣必需定期生成一個(gè)新初始種子,對(duì)BHT的攻擊脆弱性設(shè)置了一個(gè)上限。
二叉哈希鏈-樹(shù)混合(BHC-T)這種構(gòu)造方法被稱為混合是因?yàn)槎婀?shù)(BHT)用只有兩個(gè)種子長(zhǎng)的雙向哈希鏈(BHC)的片段構(gòu)建。為了便于理解,我們將以從根到葉子的方向構(gòu)建樹(shù)以構(gòu)造一個(gè)BHC片段來(lái)開(kāi)始說(shuō)明,如圖11所示。這僅僅是為了便于理解,后面我們將推薦構(gòu)建樹(shù)的最佳方式是從邊而不是從根開(kāi)始。
1.我們假設(shè)有兩個(gè)隨機(jī)生成的初始種子值s(0,0)和s(0,1)。作為一個(gè)具體例子,同樣,我們假定它們的值為128位寬。
2.現(xiàn)在我們對(duì)每個(gè)種子應(yīng)用相同的隱蔽函數(shù)以生成兩個(gè)隱蔽的種子v(1,0)和v(1,1)。
3.為了生成子種子s(1,1),我們將第一個(gè)種子s(0,0)與隱蔽的第二個(gè)種子v(1,1)組合。
為了生成子種子s(1,2),我們將第二個(gè)種子s(0,1)與隱蔽的第一個(gè)種子v(1,0)組合。
4.如果我們現(xiàn)在隨機(jī)地生成一個(gè)第三初始種子s(0,2)并隱蔽其以生成v(1,2),我們可以用相同的方式組合第二和第三初始種子和它們的相反隱蔽值以生成另外兩個(gè)子種子s(1,3)和s(1,4)。這意味著每對(duì)父母種子生成4個(gè)孩子,當(dāng)與其一邊的兄弟(同父母)組合時(shí)生成兩個(gè),當(dāng)與另一邊的異父(母)兄弟組合時(shí)生成另外兩個(gè)。結(jié)果,如果新的子種子象他們的父母那樣被隱蔽和組合,這種構(gòu)造生成一個(gè)二叉樹(shù),因?yàn)榉N子的個(gè)數(shù)在每一次生成時(shí)翻倍。但是,該樹(shù)只在種子的頂行(假定在該行創(chuàng)建了2個(gè)以上的初始種子)的中間之下分支。如果從頂部構(gòu)建(參見(jiàn)后敘),樹(shù)的邊向內(nèi)“萎縮”。
形式上,s(d,i)=c(s(d-1,i/2),v(2d-1,i/2+1)) i為奇數(shù)=c(s(d-1,i/2),v(2d-1,i/2-1)) i為偶數(shù)(4.3.1)其中,v(h,j)=b(s((h-1)/2,j))。
圖11a)圖示BHC-T混合的兩對(duì)父母種子<s(0,0),s(0,1)和<s(0,1),s(0,2)。其中的環(huán)表示每對(duì)公共的父母種子,外邊的環(huán)中的外側(cè)值落在圖的邊沿之外,因?yàn)槲覀冎魂P(guān)注中央的父母種子s(0,1)的后代。圖11b)示出相同的3個(gè)父母生成相同的4個(gè)孩子,但是為了更好地說(shuō)明二叉樹(shù)是如何形成的,從圖中隱藏了被隱蔽的種子,就好象它們從來(lái)就沒(méi)有通信過(guò)。在下面的圖中帶環(huán)的父母種子表示與上面的圖中所示的相同的3個(gè)帶環(huán)的種子。將序列延續(xù)到右邊的兩個(gè)點(diǎn)劃箭頭表示如果在右邊還有另外一個(gè)父母,父母種子s(0,2)是如何生成另外兩個(gè)孩子的。與每對(duì)箭頭相交的點(diǎn)劃線表示該線之上的父母組合以生成線之下的孩子。我們將在后面的圖中用簡(jiǎn)化的形式表示這種構(gòu)造。
圖12表示一個(gè)示例混合樹(shù)的一部分。正如二叉哈希樹(shù),用于加密連續(xù)的ADU的密鑰是樹(shù)的葉子上的種子的序列或它們的截?cái)嗟耐茖?dǎo)值。圖中示出如何通過(guò)把帶環(huán)的種子揭示給一個(gè)特定接收者來(lái)揭示一個(gè)示例密鑰范圍,k3到k9。
為了說(shuō)明如何從邊而不是從根開(kāi)始構(gòu)建樹(shù),我們現(xiàn)在來(lái)說(shuō)明本構(gòu)造的進(jìn)一步的扭曲(twist)。先前注意到選擇XOR函數(shù)是因?yàn)槿绻麅蓚€(gè)運(yùn)算數(shù)的XOR產(chǎn)生一個(gè)第三值,這3個(gè)值中的任何2個(gè)可以被XOR以產(chǎn)生該第三個(gè)值。這在圖13中說(shuō)明,其中所有種子的值都與圖11中的相同。如果s(0,1)初始未知,而s(0,0)和s(1,2)已知,則由于下列“扭曲”屬性可以推導(dǎo)出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表示發(fā)送者如何從“邊”開(kāi)始構(gòu)建BHC-T混合構(gòu)造。種子創(chuàng)建的順序用編號(hào)的圓圈表示??梢园慈魏雾樞騽?chuàng)建的種子都被分配有相同的編號(hào)后跟一個(gè)區(qū)分字母。與帶環(huán)的節(jié)點(diǎn)相鄰的較暗的圓圈表示必須隨機(jī)地生成的種子。我們把這些種子稱為初級(jí)種子。這些種子決定下一個(gè)帶環(huán)的節(jié)點(diǎn)之前的所有的后續(xù)中間種子的值。
1.發(fā)送者隨機(jī)地生成種子0的128位的值。
2.然后生成種子1&2。它們形成4個(gè)種子構(gòu)成的框的對(duì)角,因此通過(guò)“扭曲”算法設(shè)定相反的對(duì)角值3和4形式上,s(d-1,i/2)=c(s(d,i),v(2d-1,i/2+1))如果i為奇數(shù)
=c(s(d,i),v(2d-1,i/2-1))如果i為偶數(shù) (4.3.2)其中,v(h,j)=b(s((h-1)/2,j))注意如果根種子的d=0,則d沿從葉子到根的方向成為遞增的負(fù)數(shù)。
3.然后必須生成種子5,與2形成另一對(duì)對(duì)角。
4.這通過(guò)等式(4.3.2)揭示相反的對(duì)角種子6和7。
5.種子7和2形成另外一個(gè)4種子框的上面的角,通過(guò)等式(4.3.1)設(shè)定種子8a&8b。
6.在種子9被隨機(jī)地生成之后該圖形以類似地方式繼續(xù)。這種構(gòu)造方法的一個(gè)優(yōu)點(diǎn)是樹(shù)可以無(wú)限制地生長(zhǎng)—不必事先決定任何限制。
7.發(fā)送者開(kāi)始多點(diǎn)傳送該流,用k0加密ADU0,用k1加密ADU1,以此類推。但至少保持ADU序列號(hào)為不加密。
即,ki=s(D,i)其中D=0 (4.3.3)8.如果發(fā)送者委托密鑰管理,它必須秘密地將初級(jí)種子傳送給密鑰管理器。生成新的初級(jí)種子對(duì)并將其與用先前計(jì)算的密鑰加密過(guò)的流式數(shù)據(jù)并行傳送給密鑰管理器。
接收者如下重新構(gòu)造序列的一部分1.當(dāng)一個(gè)接收者被授權(quán)訪問(wèn)從ADUm到ADUn,發(fā)送者(或一個(gè)密鑰管理器)將一個(gè)種子集合單點(diǎn)傳送給該接收者。該集合由樹(shù)中能計(jì)算所需密鑰范圍的中間種子的最小集合組成。
這些通過(guò)以與BHT類似但鏡相的方式檢驗(yàn)最大和最小種子的索引i來(lái)識(shí)別。在移到上一層之前總是需要揭示一個(gè)“左”最小值或一個(gè)“右”最大值。如果一個(gè)種子被揭示,索引就向內(nèi)移一個(gè)種子,以便在移到上一層前,最小值和最大值總分別為奇數(shù)和偶數(shù)。為了向上移一層,如果需要,最小和最大索引被二等分并下舍入。這保證它們之間的差可預(yù)測(cè)地減小1。對(duì)新索引重復(fù)該奇數(shù)/偶數(shù)檢驗(yàn)。繼續(xù)該處理直到最小值和最大值相隔二或三。如果它們相隔二,則它們與它們之間的種子一起被揭示。如果它們被相隔三,如果最小值為偶數(shù),則它們僅與它們之間的兩個(gè)種子一起被揭示。如果最小值為奇數(shù),則需要再向上移一層以便什么也不揭示并允許開(kāi)始下一輪。在檢驗(yàn)開(kāi)始之前,對(duì)于被請(qǐng)求的范圍的寬度已經(jīng)小于2的情況檢驗(yàn)異常初始條件。
在附錄B中以類似C的編碼更形式上說(shuō)明該過(guò)程。
2.顯然,每個(gè)接收者需要知道其所給定的每個(gè)種子在樹(shù)中的位置。這些種子和它們的索引在被揭示時(shí)可以被顯式地成對(duì)。另外,為了減少所需的帶寬,協(xié)議可以指明發(fā)送種子的順序以便從最小和最大索引及種子的順序隱含地計(jì)算出每個(gè)索引。例如,附錄B中的算法對(duì)相同的密鑰范圍總是以相同的順序揭示相同的種子。
3.每個(gè)接收者可以與發(fā)送者一樣對(duì)這些中間種子重復(fù)相同的隱蔽和組合函數(shù)對(duì),以重新創(chuàng)建密鑰序列,km到kn(等式4.3.1,4.3.2&4.3.3)。
4.通過(guò)向其它的任何接收者發(fā)送一個(gè)不同的中間種子集合,可以授權(quán)他訪問(wèn)一個(gè)完全不同的ADU范圍。
由于BHC-T可以從邊開(kāi)始構(gòu)建,它適合用于持續(xù)期間未知的話路。連續(xù)地隨機(jī)生成新中間根種子限制了它對(duì)攻擊的脆弱性,但允許序列的連續(xù)計(jì)算。為了進(jìn)一步限制脆弱性,發(fā)送者可以延遲未來(lái)種子的生成以拒絕任何接收者計(jì)算超出序列中的一個(gè)特定未來(lái)點(diǎn)的密鑰。這將限制種子空間的強(qiáng)力搜索可用的時(shí)間。但是,從邊開(kāi)始構(gòu)建樹(shù)導(dǎo)致取決于每個(gè)新根種子(從而對(duì)該種子的攻擊值)的密鑰的個(gè)數(shù)成指數(shù)地增長(zhǎng)。
通過(guò)定期地遞增被定義為葉子層的層,在每M個(gè)密鑰(除了第一個(gè)外)的序列之后將其向離該根更近的方向移動(dòng)一層,可以界定根種子的值。
形式上,這需要將等式(4.3.3)替換為ki=s(-i/M,i)i<M時(shí)ki=s(1-i/M,i) i=M時(shí)(4.3.4)這在圖15中用M=8來(lái)說(shuō)明。當(dāng)然,在實(shí)踐中M應(yīng)該要大得多,以便保證不用觸及樹(shù)的左手邊最上面的分支就能有效地描述所有合理長(zhǎng)度的接收者話路。
前面我們注意到只有當(dāng)H<4時(shí),BHC是固有保密的。在本鏈樹(shù)混合中使用的BHC片段的H=2,這保證了該混合方案的保密性。我們還建議一個(gè)二叉鏈樹(shù)混合可以從長(zhǎng)度為3(H=3)的鏈片段構(gòu)造而不犧牲保密性。在這種情形下,每個(gè)父母種子在與其兄弟或異父(母)兄弟配對(duì)時(shí)將產(chǎn)生6個(gè)孩子,使在每一層的樹(shù)寬度3倍增長(zhǎng)(一個(gè)三叉樹(shù)-BHC3-T)。這種構(gòu)造方法如圖20e所示,但更詳細(xì)的分析留給將來(lái)的工作。它可能比BHC-T更為有效,但稍微復(fù)雜一點(diǎn)。
二叉哈希樹(shù)II(BHT2)我們現(xiàn)在提出另一種基于二叉樹(shù)的構(gòu)造,其是以加強(qiáng)對(duì)強(qiáng)力攻擊的安全性的方式組合BHT和BHC-T方法。我們使用相同的種子符號(hào)sd,i,但是在d的起源位于BHT的根的情況下,其值隨著接近葉子而增大。圖16中示出樹(shù)的一個(gè)元素。與BHT的情形相同,我們?cè)谶@種構(gòu)造方法中使用兩個(gè)隱蔽函數(shù)b0()和b1(),我們分別稱之為“左”和“右”。
1.我們假設(shè)有兩個(gè)隨機(jī)生成的初始種子值s(0,0)和s(0,1)。作為一個(gè)具體例子,同樣,我們假定它們的值為128位寬。
2.發(fā)送者決定需要的最大樹(shù)深度D。
我們從每個(gè)初始種子產(chǎn)生2個(gè)隱蔽值,每個(gè)種子分別使用每一個(gè)隱蔽函數(shù)。
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),我們將兩個(gè)左隱蔽種子v(1,0)和v(1,2)組合。
為了生成子種子s(1,2),我們將兩個(gè)右隱蔽種子v(1,1)和v(1,3)組合。
4.如果我們現(xiàn)在隨機(jī)地生成一個(gè)第三初始種子s(0,2),我們可以用相同的方式組合第二和第三初始種子以產(chǎn)生另外兩個(gè)子種子s(1,3)和s(1,4)。與BHC-T混合同樣,這意味著每個(gè)父母種子生成2個(gè)孩子以構(gòu)建一個(gè)二叉樹(shù),但邊沿向內(nèi)“萎縮”。事實(shí)上,如果層d包含nd個(gè)種子,則n(d+1)=2nd-2.只要使用2個(gè)以上的初始種子,則該樹(shù)將趨向一個(gè)二叉樹(shù)。
形式上s(d,i)=c(v(2d-1,i/2),v(2d-1,i/2+1)) i為奇數(shù)=c(v(2d-1,i/2),v(2d-1,i/2-1)) i為偶數(shù)(4.4.1)其中,v(h,j)=b(s((h-1)/2,j))。
5.然后就用橫穿樹(shù)的葉子的種子值構(gòu)造密鑰序列。
形式上,ki=sD,i(4.4.2)6.發(fā)送者開(kāi)始多點(diǎn)傳送該流,用k0加密ADU0(應(yīng)用數(shù)據(jù)單元0),用k1加密ADU1,以此類推。但至少保持ADU序列號(hào)為不加密。
圖16a)圖示BHT2的兩個(gè)父母種子對(duì)<s(0,0),s(0,1)和<s(0,1),s(0,2)。與用于說(shuō)明BHC-T混合的方式完全相同,在圖的a)部分和b)部分中,環(huán)表示每對(duì)公共的父母種子。與前述相同,圖16b)示出如何描述用BHT2構(gòu)建的種子樹(shù)。為簡(jiǎn)明起見(jiàn),從外觀上隱藏了被隱蔽的中間種子值。一旦這些內(nèi)部值被隱藏,則所得的BHT2看上去與圖4.3.2中的BHC-T混合相同。
用于計(jì)算要揭示一個(gè)密鑰范圍需揭示哪些種子的算法也與附錄B中的BHC-T混合的算法相同,因此圖12中帶環(huán)的種子也是將k3到k9揭示給一個(gè)特定的接收者。
橫穿一個(gè)從3個(gè)初始種子(在層0)構(gòu)建的深度為D的BHT2的葉子的密鑰的最大個(gè)數(shù)為2D+2。如果需要一個(gè)連續(xù)的樹(shù),密鑰可以被定義為從中間種子層下行而不是停留在橫穿它們的層,與圖10中所示的連續(xù)BHT類似。
我們已經(jīng)在(4.4.1)中示出如何只用4個(gè)隱蔽值的兩個(gè)組合值來(lái)構(gòu)建一個(gè)二叉樹(shù)。
每次取4個(gè)值中的2個(gè),得到6個(gè)可能的組合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每個(gè)只依賴于一個(gè)父母種子。因此,僅揭示父母就會(huì)揭示一個(gè)孩子,防止二者都被使用。另外,c6=c(c3,c4,c5)和c5=c(c3,c4,c6),以此類推。因此揭示這些組合中的任意3個(gè)就隱含地揭示第四個(gè)。但是,可以使用任意3個(gè)組合而不是象BHT2中那樣僅使用2個(gè)。對(duì)所得到的三叉樹(shù)(BHT3)的分析留給將來(lái)的工作。
通用模型我們已經(jīng)提出4種密鑰序列構(gòu)造,現(xiàn)在提出一個(gè)通用模型,其允許所有這些方案和其它類似的方案可以用相同的術(shù)語(yǔ)來(lái)描述。
我們定義兩個(gè)坐標(biāo)平面●一個(gè)具有位于坐標(biāo)(h,j)的離散值v的“隱蔽”平面,這樣,通常在一個(gè)h坐標(biāo)的值被隱蔽以產(chǎn)生h+1處的值,具體的映射關(guān)系依賴于該方案。
●一個(gè)具有位于坐標(biāo)(d,i)的離散值s的“組合”平面,這些值是以同樣依賴于該方案的方式組合來(lái)自隱蔽平面的值而得到的結(jié)果。
每種構(gòu)造都由在隱蔽平面上的基本數(shù)學(xué)“分子”構(gòu)建。圖20a到20e將這些分子表示為一組粗黑箭頭,表示從h=0的軸開(kāi)始,從一個(gè)值v映射到下一個(gè)值的隱蔽函數(shù),為了示出該構(gòu)造如何在j軸方向生長(zhǎng),粗的淺灰色的箭頭表示對(duì)完成下一個(gè)分子的相鄰值的隱蔽。一個(gè)分子由三個(gè)常數(shù)定義●H,一個(gè)分子沿隱蔽平面的h軸的高度●P,在一個(gè)分子中使用的隱蔽函數(shù)的個(gè)數(shù)●Q,為了產(chǎn)生組合平面中的每個(gè)值,組合來(lái)自隱蔽平面上的每個(gè)分子所得到的值的個(gè)數(shù)。
隱蔽平面中的一個(gè)分子的初始值v直接從組合平面上的先前值s映射(在圖20a到20e中以點(diǎn)劃線表示)如果h mod H=0;v(h,j)=s(MH,j) (4.5.1).
隱蔽平面分子中的后續(xù)值從先前值隱蔽(用粗箭頭表示)如果h mod H 0;v(h,j)=bp(v((h-1),j/P)) (4.5.2).
其中,p=j(luò) mod P然后,隱蔽平面分子中的最終結(jié)果值被組合以產(chǎn)生組合平面中的下一些值(用細(xì)線表示)s(d,i)=c(v(h0,j0),...v(hq,jq),...v(h(Q-1),j(Q-1)) (4.5.3).
其中hq和jq被定義為每個(gè)構(gòu)造的參數(shù)q的函數(shù)。
因此,沿隱蔽平面的h軸的每H大小,組合平面中的d遞增1。
表1給出H,P和Q的值和定義每個(gè)構(gòu)造的hq和jq的公式。它還參照說(shuō)明使用本通用模型的各構(gòu)造的附圖。

表4.5.1-定義每個(gè)密鑰序列構(gòu)造的通用模型的系數(shù)在所有情形下,除非需要一個(gè)連續(xù)的構(gòu)造,密鑰由下式定義的序列構(gòu)建ki=s(D,i) (4.5.4)其中D=log(N0)其中N0是需要的密鑰的最大個(gè)數(shù)順便提一下,單向函數(shù)樹(shù)(OFT)(one-way function tree)[McGrew98]由設(shè)定{...?}產(chǎn)生。
存儲(chǔ)和處理之間的折衷在所有的MARKS構(gòu)造中,在發(fā)送者加密前和在接收者解密前,都用少量的種子生成較多的密鑰。在任一情形下,可能用于存儲(chǔ)密鑰序列的存儲(chǔ)容量有限,密鑰序列所需的存儲(chǔ)量相對(duì)于種子而言成指數(shù)增長(zhǎng)。在這種情形下,可以計(jì)算前面幾個(gè)密鑰而存儲(chǔ)允許計(jì)算其余密鑰的種子。通常,不是節(jié)省存儲(chǔ)容量就是避免相同計(jì)算的重復(fù),這取決于存儲(chǔ)或處理時(shí)間中哪個(gè)最緊缺。
利用BHC,在計(jì)算第一密鑰前,必須遍歷整個(gè)反向鏈。但不必存儲(chǔ)每個(gè)值。可能存儲(chǔ)中間點(diǎn),4分之3點(diǎn)等處的值而其余的被丟棄。由于該序列回退進(jìn)(eatback into)該反向鏈,所以下一個(gè)值總可以通過(guò)從先前存儲(chǔ)的值再次運(yùn)行哈希鏈,根據(jù)需求在途中存儲(chǔ)更多的值來(lái)重新計(jì)算。
利用所有的樹(shù)構(gòu)造,需要在話路開(kāi)始前計(jì)算任何在通向第一密鑰的樹(shù)的分支下的中間種子,但同樣它們不必被全部存儲(chǔ)。離葉子最近的中間種子應(yīng)被存儲(chǔ)(高速緩存),因?yàn)樗鼈儗⒆钕扔脕?lái)計(jì)算下幾個(gè)密鑰。當(dāng)需要離根較近的中間種子時(shí),只要從未丟棄密鑰管理器原始發(fā)送的種子就可以重新計(jì)算它們。
效率正如上面提到的,H3的BHC絕對(duì)有效但是不安全。因此我們將把討論局限于已經(jīng)詳細(xì)地分析過(guò)的基于二叉樹(shù)的構(gòu)造。表5.2.1表示BHT,BHC-T和BHT2的每個(gè)保密多點(diǎn)傳送話路的各種參數(shù),其中R,S和KM分別是接收者,發(fā)送者和密鑰管理器,如節(jié)3中的定義,N(=n-m+1)是接收者需要的隨機(jī)位于密鑰空間中的密鑰范圍的長(zhǎng)度,Ws是種子的大小(一般為128b),Wh是協(xié)議頭開(kāi)銷的大小;ts是隱蔽一個(gè)種子(加上一個(gè)相對(duì)可以忽略的循環(huán)移位和/或組合運(yùn)算)所用的處理器時(shí)間。

表1-BHT,BHC-T和BHT2的每個(gè)保密多點(diǎn)傳送話路的各種參數(shù)[i]如表中所示,用于每個(gè)接收者的話路設(shè)立的單點(diǎn)傳送消息的大小與每個(gè)接收者需要的最小存儲(chǔ)量相等。只有當(dāng)接收者如上所述為了處理而選擇折衷存儲(chǔ)時(shí)才是這樣。已經(jīng)為最小發(fā)送者存儲(chǔ)行使用相同的折衷。處理等待時(shí)間是指接收者在接收到其話路的單點(diǎn)傳送設(shè)立消息后準(zhǔn)備對(duì)輸入數(shù)據(jù)的解密所需的時(shí)間。應(yīng)注意在別的成員加入或退出時(shí)沒(méi)有等待時(shí)間開(kāi)銷,就如同在適用于非計(jì)劃逐出的方案中一樣。應(yīng)注意每個(gè)密鑰的處理數(shù)字假定密鑰的連續(xù)訪問(wèn)。在這種情形下,在任何話路中要存儲(chǔ)的最有效值(除了構(gòu)造樹(shù)所需揭示的最小集合外)是從根到當(dāng)前使用密鑰的分支上的那些值。每個(gè)密鑰的平均處理就是整個(gè)樹(shù)中的哈希運(yùn)算的次數(shù)除以葉子上的密鑰的個(gè)數(shù)。只有發(fā)送者(或者有多個(gè)發(fā)送者時(shí)為一個(gè)組控制器)被要求為初始種子生成隨機(jī)位。需要的位數(shù)顯然等于這些初始種子的最小發(fā)送者存儲(chǔ)量。
可以看到只有依賴于組成員的大小的參數(shù)是關(guān)于每個(gè)接收者的參數(shù)。兩個(gè)這樣的參數(shù)(存儲(chǔ)量和處理等待時(shí)間)的開(kāi)銷被發(fā)布給組成員,因此對(duì)每個(gè)接收者是常數(shù)。只有單點(diǎn)傳送消息的大小會(huì)在密鑰管理器處造成隨組成員的大小線性增長(zhǎng)的開(kāi)銷,但是該開(kāi)銷在每個(gè)接收者話路中只負(fù)擔(dān)一次。當(dāng)然,沒(méi)有一個(gè)每接受者開(kāi)銷自身是依賴于組大小的,就如同在所有允許非計(jì)劃逐出的方案中一樣。因此,提出的所有的構(gòu)造都是高度可升級(jí)性的。
相互比較這些方案,可能令人驚訝,混合BHC-T和BHT2在發(fā)送消息方面的效率與BHT非常相近。它們都是只要求每個(gè)接收者話路設(shè)立消息中多一個(gè)種子的這樣一個(gè)平均水平。如果N較大,與每個(gè)接收者話路需要的密鑰的個(gè)數(shù)相比較這是微不足道的。平均來(lái)講,BHC-T需要的處理時(shí)間是BHT的兩倍,BHT2需要的處理時(shí)間是BHT的四倍。我們將看到保密性的提高使這些開(kāi)銷是值當(dāng)?shù)摹?br> BHT使用BHT,樹(shù)中的每個(gè)種子在價(jià)值上是其孩子的兩倍。因此,傾向于窮盡搜索種子空間以找到對(duì)樹(shù)中當(dāng)前已知的最高種子值隱蔽的正確值。對(duì)MD5哈希來(lái)說(shuō),這平均包括2127次MD5運(yùn)算??赡軙?huì)找到一個(gè)值,其不正確但是對(duì)一個(gè)與已知值沖突的值隱蔽(一般用MD5每264次運(yùn)算找到一個(gè))。這只有通過(guò)使用種子以產(chǎn)生一個(gè)密鑰范圍并對(duì)據(jù)推測(cè)用其加密的一些數(shù)據(jù)進(jìn)行檢驗(yàn)時(shí)比較明顯。在成功破解一層之后,下一層又將在價(jià)值上為兩倍,但將需要相同的強(qiáng)力來(lái)分裂。應(yīng)注意在Sun SPARCserver-1000上一個(gè)128b輸入的MD5哈希(可移植源)大約用4us。因此,2128次MD5運(yùn)算將需要4e25年。
BHC-T使用BHC-T混合,抗攻擊的強(qiáng)度取決于攻擊發(fā)生在哪個(gè)方向。如果我們?nèi)HC-T的單個(gè)元素,它有4個(gè)種子值-有2個(gè)父母和2個(gè)孩子,如表5.3.1中所示并在圖17中說(shuō)明。給出4個(gè)值中的任何1個(gè),都不能計(jì)算出其它的值,因?yàn)闆](méi)有足夠的信息來(lái)檢驗(yàn)正確性。給出4個(gè)值中的3個(gè),只用一個(gè)隱蔽運(yùn)算就可以計(jì)算出第四個(gè)。只給出4個(gè)值中的2個(gè),表中列出了計(jì)算其它2個(gè)值的難度,這取決于給出的是哪2個(gè)值。字母“i”表示一個(gè)輸入值,單元格中的值表示在給定輸入的情況下確保找到輸出值對(duì)所必需的隱蔽函數(shù)運(yùn)算的次數(shù)。w是數(shù)空間中的位數(shù)(MD5為128)。圖17中圖示出相同的信息,輸入值上帶圈,隱蔽值的背景為灰色。

圖17-揭示和隱蔽BHC-T中的種子對(duì)如果給出在“方塊”的一個(gè)邊上的一個(gè)父母和一個(gè)孩子,則可以窮盡地搜索對(duì)面的父母,通過(guò)把每個(gè)位隱蔽并與2個(gè)給定值的XOR比較來(lái)檢驗(yàn)每個(gè)值。因此對(duì)“邊路”(sideways)攻擊可以保證在2w次隱蔽運(yùn)算之后能夠成功。
如果只給出2個(gè)孩子值,對(duì)父母中的一個(gè)進(jìn)行窮盡搜索稍稍有點(diǎn)麻煩。即,推測(cè)一個(gè)父母值s(0,1),僅當(dāng)下式成立時(shí)該值是正確的c(s(0,1),b(c(s(1,1),b(s(0,1)))))=s(1,2)因此,對(duì)“向上”攻擊可以保證在2(w+1)次隱蔽運(yùn)算之后能夠成功。
在這種構(gòu)造中,找到與2個(gè)給定值相適合但也不是正確的值對(duì)(一個(gè)雙重沖突)的2個(gè)未知值的可能性較小。如果這種對(duì)確實(shí)出現(xiàn),只能通過(guò)用它們產(chǎn)生密鑰并用加密數(shù)據(jù)檢驗(yàn)該密鑰來(lái)檢驗(yàn)它們。因此,雙重沖突的較小概率可以稍微地減少攻擊任務(wù)的復(fù)雜性。
邊路攻擊只能在與已知的最高種子相同的層最多取得一個(gè)種子。由于在右邊的下一個(gè)“框”中只知道一個(gè)值,對(duì)右側(cè)的攻擊會(huì)在一個(gè)偶數(shù)索引的孩子處結(jié)束。同樣地,對(duì)左邊的攻擊被一個(gè)奇數(shù)索引的孩子阻斷。向上的攻擊是所剩的唯一的選擇。一個(gè)成功的向上攻擊不給出任何多余的密鑰,但是當(dāng)后跟一個(gè)邊路攻擊時(shí)會(huì)揭示上一個(gè)邊路攻擊的密鑰的兩倍之多。
BHT2BHT2抗攻擊的強(qiáng)度采用與BHC-T混合相似的形式,只是設(shè)計(jì)的抗向上攻擊的強(qiáng)度要大得多。與BHC-T同樣,組成方塊的4個(gè)值中只知道一個(gè)時(shí)不能揭示任何其它的值。但是,與BHC-T不同,3個(gè)值不一定能立即給出第四個(gè)。如果只有一個(gè)父母未知,需要2w次隱蔽運(yùn)算來(lái)保證找到它。只給出其中的2個(gè)值時(shí),表5.3.2列出了計(jì)算另外2個(gè)值的難度,這取決于給出的是哪2個(gè)值。如前所述,表格中的值表示在給定的輸入時(shí)保證找到輸出值對(duì)所必需的隱蔽函數(shù)運(yùn)算的次數(shù)。圖18中圖示出相同的信息,輸入值上帶圈,隱蔽值的背景為灰色。

表2-揭示和隱蔽BHT2中的種子對(duì)圖18-揭示和隱蔽BHT2中的種子子集合如果給出一個(gè)父母和在“方塊”的任一個(gè)邊上的一個(gè)孩子,則可以窮盡地搜索對(duì)面的父母,通過(guò)把每個(gè)值隱蔽并與2個(gè)已知值的XOR比較來(lái)檢驗(yàn)每個(gè)值。因此對(duì)“邊路”攻擊可以保證在2w次隱蔽運(yùn)算之后能夠成功。給出一個(gè)父母和對(duì)面的一個(gè)孩子的情況下也一樣。
如果只給出2個(gè)孩子的值,在BHT2中對(duì)父母值的窮盡搜索要麻煩得多。對(duì)每個(gè)右邊父母值s(0,1)的推測(cè)值,它必須是左隱蔽的,然后左父母值必須被窮盡地搜索以找到一個(gè)左隱蔽的值,將其與第一左隱蔽的推測(cè)值組合以給出該左孩子的給定值。但是,當(dāng)這2個(gè)父母推測(cè)值是右隱蔽時(shí),他們不可能被組合而給出正確的右孩子。因此,右父母的下一個(gè)推測(cè)值必須與一個(gè)左父母的隱蔽值的窮盡搜索組合,如此類推。這相當(dāng)于只給出s(1,1)和s(1,2),要解下列聯(lián)立方程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個(gè)父母的組合的方陣,即22w次隱蔽運(yùn)算。在從孩子到父母的方向上的較大的抗強(qiáng)力攻擊的強(qiáng)度在圖中以較深的灰色背景顯示。另外一種方法是存儲(chǔ)一個(gè)父母的所有的左隱蔽值和右隱蔽值以避免重新計(jì)算它們。但是只有一個(gè)父母的每個(gè)可能值的未被索引的左隱蔽值會(huì)消耗多于5e27TB的存儲(chǔ)量,其開(kāi)銷使其他的攻擊方法在經(jīng)濟(jì)上要合算得多。
有關(guān)雙重沖突的評(píng)述與BHC-T一樣適用于BHT2,只是錯(cuò)誤的值對(duì)只可能在4個(gè)哈希沖突同時(shí)地偶然發(fā)現(xiàn)時(shí)出現(xiàn),該情況出現(xiàn)的概率非常小。
同BHC-T中同樣,BHT2中的邊路攻擊被限制在最多一個(gè)“框”中。因此,為了獲得任何有效個(gè)數(shù)的密鑰,馬上就必須面臨向上攻擊。一個(gè)邊路攻擊的2w次隱蔽運(yùn)算可能比合法地獲得被攻擊的密鑰更昂貴。一旦必須面臨向上攻擊,2w的隱蔽運(yùn)算次數(shù)確實(shí)會(huì)導(dǎo)致尋找別的方法。
一般安全性通常,構(gòu)建一個(gè)樹(shù)需要的隨機(jī)值越多,它能包含的在由每個(gè)新隨機(jī)種子生成的子樹(shù)的界限內(nèi)的持續(xù)攻擊就更多。但是,正如上面關(guān)于連續(xù)樹(shù)的討論中所述的那樣,對(duì)于較長(zhǎng)的話路,在安全性和連續(xù)的密鑰空間的方便性之間有一個(gè)折衷。隨機(jī)生成的種子的隨機(jī)性是另一個(gè)須被正確設(shè)計(jì)的潛在缺陷領(lǐng)域。
所有MARKS構(gòu)造在合法組成員勾結(jié)時(shí)都是脆弱的。如果一個(gè)成員的子組在他們內(nèi)部同意每個(gè)人購(gòu)買一個(gè)不同范圍的密鑰空間,他們可以共享接收到的種子從而他們都能夠訪問(wèn)他們的本來(lái)是單獨(dú)的密鑰空間的并集。套利是已討論過(guò)的成員勾結(jié)的一個(gè)變種。這種情況是一個(gè)組成員購(gòu)買整個(gè)密鑰序列并將各部分以比出售價(jià)低的價(jià)格出賣,如果大部分密鑰由超過(guò)一個(gè)的用戶購(gòu)買仍能從中牟利。用無(wú)組成員防止勾結(jié)的保護(hù)方法在關(guān)于“水印”的節(jié)6.3中討論。
最后,對(duì)任何特定的應(yīng)用,整個(gè)系統(tǒng)的安全性顯然依賴于設(shè)立話路時(shí)使用的安全的強(qiáng)度。上面的例子情形描述需解決的問(wèn)題并推薦標(biāo)準(zhǔn)的加密技術(shù)以滿足它們。使用任何MARKS構(gòu)造的應(yīng)用的總體的安全性總是與最弱的部分的強(qiáng)度一樣。
當(dāng)前工作中討論的密鑰管理方案適用于與其它的機(jī)構(gòu)進(jìn)行模塊組合以滿足下述的其他的商業(yè)需求。
多發(fā)送者的多點(diǎn)傳送只要所有的發(fā)送者使用相同的密鑰序列,多發(fā)送者的多點(diǎn)傳送話路可以通過(guò)使用MARKS構(gòu)造來(lái)保密。它們不必同時(shí)使用相同的密鑰,只要它們使用的密鑰都是同一個(gè)序列的一部分即可。只要將ADU索引作為加密的ADU的頭來(lái)不加密地傳輸,即使每個(gè)發(fā)送者與其他發(fā)送者失序,接收者也知道使用哪一個(gè)密鑰。如果對(duì)應(yīng)用的商業(yè)模型很重要的話,節(jié)3的例子情形描述了多個(gè)發(fā)送者如何同步它們使用的ADU索引。
如果多發(fā)送者的多點(diǎn)傳送中的每個(gè)發(fā)送者使用不同的密鑰或密鑰序列,每個(gè)發(fā)送者創(chuàng)建一個(gè)不同的保密多點(diǎn)傳送話路即使他們都使用相同的多點(diǎn)傳送地址。這由多點(diǎn)傳送話路和2.1節(jié)中定義的保密多點(diǎn)傳送話路之間的區(qū)別可以推出。在這種情形下,每個(gè)保密多點(diǎn)傳送話路必須被獨(dú)立于其它的話路創(chuàng)建和維護(hù)。但是,還有一些被稱為分期償還初始化的范圍[Balen99]。即,不同的保密多點(diǎn)傳送話路都可以使用相同的設(shè)立數(shù)據(jù)以節(jié)省消息發(fā)送。例如,商業(yè)模型可能是客戶總是必須從一組有關(guān)的發(fā)送者中的每一個(gè)購(gòu)買相同的ADU,如果他們從每個(gè)發(fā)送者購(gòu)買的話。在這種情形下,每個(gè)發(fā)送者可以將所有發(fā)送者共同的密鑰的MARKS序列和一個(gè)該發(fā)送者特有的長(zhǎng)期密鑰組合起來(lái)??蛻艨梢再?gòu)買公共范圍密鑰的相關(guān)的種子,然后購(gòu)買她希望解密的每個(gè)發(fā)送者的一個(gè)附加的長(zhǎng)期密鑰。
非連續(xù)和多連續(xù)密鑰的訪問(wèn)MARKS構(gòu)造被設(shè)計(jì)為在授權(quán)每個(gè)接收者訪問(wèn)一個(gè)較寬的序列的一個(gè)任意子范圍的密鑰序列時(shí)有效,但不適用于數(shù)據(jù)不連續(xù)或需要一個(gè)序列的幾個(gè)任意不連接的部分的情況。因此MARKS的目標(biāo)是在一維上自然連續(xù)的數(shù)據(jù)流,例如實(shí)時(shí)的多媒體流等。
但是,一旦接收者訪問(wèn)過(guò)一個(gè)范圍的密鑰,顯然不能強(qiáng)迫以連續(xù)的順序訪問(wèn)它們。例如,接收者可能存儲(chǔ)音樂(lè)流的一個(gè)子范圍,該音樂(lè)流用MARKS密鑰序列中的一個(gè)加密并通過(guò)因特網(wǎng)多點(diǎn)傳送。使用下載的音軌的索引,接收者以后可以使用從MARKS序列中無(wú)順序地取出的相關(guān)密鑰,以隨機(jī)的順序挑選想聽(tīng)的音軌。
MARKS還可以用來(lái)限制對(duì)連續(xù)但是多維的數(shù)據(jù)的訪問(wèn)。在M.Fuchs,C.Diot,T.Turletti,M.Hoffman的“一種ALF設(shè)計(jì)的命名方法”(“a NamingApproach for ALF Design”)中描述了這種應(yīng)用的一些例子。該文章發(fā)表在倫敦的HIPPARCH學(xué)術(shù)討論會(huì)的會(huì)議錄上(1998年6月)。圖19中示出一個(gè)2維密鑰序列空間。
例如,對(duì)多點(diǎn)傳送的股票報(bào)價(jià)的訪問(wèn)可以按訂購(gòu)的期間和按訂購(gòu)的期貨市場(chǎng)的范圍出售。每個(gè)報(bào)價(jià)需要用2個(gè)中間密鑰的XOR結(jié)果值來(lái)加密。因此實(shí)際上用于加密的“最終密鑰”是ki,j=c(k’0,i,k’1,j).
一個(gè)中間密鑰將來(lái)自一個(gè)序列k’0,i,其中i每分鐘遞增一次。另一個(gè)中間密鑰可能來(lái)自一個(gè)序列k’1,j,其中j表示期貨報(bào)價(jià)的月數(shù)。一個(gè)研究1到2年期貨的商人將不僅根據(jù)其想訂購(gòu)的期間購(gòu)買相關(guān)的k’0,i的子范圍,而且會(huì)購(gòu)買中間密鑰k’1,12到k’1,24的范圍。
諸如海法加密(1997年1月)中的Ross Anderson& Charalampos Manifavas(劍橋大學(xué))的“變色龍-一種新的流密碼”(“Chameleon-A New Kind of streamCipher”)中的方法(上面已經(jīng)描述過(guò))可以用來(lái)給用于解密數(shù)據(jù)流的密鑰加水印。因此,由任何MARKS構(gòu)造生成的密鑰都被視為中間密鑰。發(fā)送者通過(guò)組合每個(gè)中間密鑰和節(jié)2.2中描述的一個(gè)長(zhǎng)期密鑰塊(具體例子中是512kB)創(chuàng)建一個(gè)最終密鑰的序列。每個(gè)接收者被給定一個(gè)相同塊的長(zhǎng)期的加水印的版本以從其中間密鑰序列產(chǎn)生一個(gè)加水印的最終密鑰的序列,從而強(qiáng)制水印解密。
但是,這種方法具有變色龍方法的一個(gè)共同缺陷。它為由不忠的授權(quán)接收者傳遞到完全無(wú)授權(quán)的接收者(該接收者沒(méi)有長(zhǎng)期密鑰塊)的任何密鑰或數(shù)據(jù)創(chuàng)建一個(gè)審計(jì)跟蹤。在這種情形下,如果跟蹤密鑰或數(shù)據(jù),可以跟蹤到揭示密鑰或數(shù)據(jù)的叛徒。但是,可以把中間密鑰,而不是最終密鑰傳送給任何有時(shí)具有仍然有效的長(zhǎng)期密鑰塊的接收者。因此一個(gè)未被授權(quán)訪問(wèn)特定中間密鑰(其未加水印)的接收者可以用其自己的密鑰塊創(chuàng)建加水印的最終密鑰,從而解密加密流。雖然產(chǎn)生的密鑰和數(shù)據(jù)都加蓋有她自己的水印,這只是將審計(jì)跟蹤交給泄露的目標(biāo),而不是源。因此,對(duì)這種類型的“內(nèi)部”叛徒只有很小的威懾力。
返回到MARKS構(gòu)造的特定情形,變色龍的這個(gè)一般缺陷意味著可以內(nèi)部傳遞中間種子或中間密鑰而不必害怕審計(jì)跟蹤。例如,在上面的網(wǎng)絡(luò)游戲的例子中,一組玩游戲者可以勾結(jié)起來(lái),每人買一個(gè)不同的游戲小時(shí)并在他們之間共享他們每人購(gòu)買的中間種子。為了產(chǎn)生真正的密鑰,每個(gè)玩游戲者可以使用她自己的有水印的長(zhǎng)期密鑰塊,她需要該密鑰塊來(lái)玩游戲。沒(méi)有創(chuàng)建用于跟蹤誰(shuí)傳遞了無(wú)水印的中間種子的審計(jì)跟蹤。但是,如果任何玩游戲者試圖將帶水印的密鑰或數(shù)據(jù)傳送給最近沒(méi)有玩游戲因此沒(méi)有其自己的有效的長(zhǎng)期密鑰塊的人,有審計(jì)跟蹤。類似地,因?yàn)殚L(zhǎng)期密鑰塊也包括一個(gè)可跟蹤叛徒接收者的水印,如果一個(gè)玩游戲者傳送他們的長(zhǎng)期密鑰塊時(shí),也有審計(jì)跟蹤。
非計(jì)劃驅(qū)逐正如已經(jīng)指出的那樣,MARKS構(gòu)造允許隨時(shí)從組中驅(qū)逐成員,但是只能在每個(gè)接收者話路設(shè)立時(shí)已計(jì)劃過(guò)。如果預(yù)先計(jì)劃的驅(qū)逐是一般的情形,但偶而也需要非計(jì)劃的驅(qū)逐,任何MARKS方案可以與其它的方案,如LKH++[Chang99],組合以允許偶然的非計(jì)劃驅(qū)逐。為了實(shí)現(xiàn)這個(gè)目標(biāo),與上述水印一樣,由任何MARKS構(gòu)造生成的密鑰序列都被視為中間密鑰。這些與一個(gè)例如用LKH++發(fā)布的組密鑰組合(如進(jìn)行XOR)以生成一個(gè)用于解密數(shù)據(jù)流的最終密鑰。因此要在任何時(shí)間生成該最終密鑰需要MARKS中間密鑰和LKH++中間密鑰二者。
當(dāng)然,可以組合(如進(jìn)行XOR)任何個(gè)數(shù)的中間密鑰以同時(shí)滿足多種需求。例如,MARKS,LKH++和變色龍中間密鑰可以被組合以便同時(shí)實(shí)現(xiàn)低成本的計(jì)劃驅(qū)逐,偶然的非計(jì)劃驅(qū)逐和防止泄露到長(zhǎng)期組外的帶水印的審計(jì)跟蹤。
形式上,最終密鑰,ki,j...=c(k’0,i,k’1,j)其中中間密鑰k’可以用MARKS構(gòu)造或在關(guān)于加水印和多維密鑰序列的前兩節(jié)中描述的其它的方法來(lái)生成。
通常,以這種方式組合產(chǎn)生一個(gè)綜合方案,其存儲(chǔ)成本是各單獨(dú)成員方案的總和。但是,組合LKH++和MARKS,其中大部分驅(qū)逐是計(jì)劃的,去掉了LKH++的所有重新分配密鑰的消息,除非確實(shí)需要非計(jì)劃的驅(qū)逐。
本發(fā)明不限于用于多點(diǎn)傳送數(shù)據(jù)網(wǎng)絡(luò)。下面通過(guò)舉例來(lái)說(shuō)明另外兩個(gè)使用領(lǐng)域。
虛擬個(gè)人網(wǎng)絡(luò)(VPN)通過(guò)建立一個(gè)VPN,一個(gè)大公司允許其員工或定約人從因特網(wǎng)上的任何地方與公司的其他部分通信。實(shí)現(xiàn)其的一個(gè)方法是給每個(gè)工人該整個(gè)公司使用的一個(gè)組密鑰。結(jié)果,每當(dāng)一個(gè)工人加入或離開(kāi)公司時(shí),都必須改變?cè)摻M密鑰。作為替換方法,無(wú)論工人加入或離開(kāi)與否,該密鑰應(yīng)該在一個(gè)MARKS構(gòu)造決定的序列中定期地變化。當(dāng)建立每個(gè)新雇傭合同時(shí),分配給每個(gè)員工允許其計(jì)算序列中的下一個(gè)值的種子直到其合同需要續(xù)約。提前離開(kāi)的工人被視為一個(gè)非計(jì)劃驅(qū)逐。
數(shù)字萬(wàn)用盤(DVD)DVD原來(lái)表示數(shù)字化視頻光盤,因?yàn)槠淙萘窟m合于該介質(zhì)。但是,它可用來(lái)存儲(chǔ)諸如軟件或聲頻等要求較少存儲(chǔ)量的內(nèi)容。代替在每次選擇聲頻音軌或軟件主題時(shí),壓制一個(gè)不同的稀疏地填充的DVD,通過(guò)使用本發(fā)明,用數(shù)百個(gè)相關(guān)的音軌或主題填充其容量來(lái)生產(chǎn)每個(gè)DVD。每個(gè)音軌或主題構(gòu)成一個(gè)ADU。每個(gè)ADU可以用使用一種MARKS構(gòu)造生成的序列中的一個(gè)不同的密鑰來(lái)加密。這些DVD可以被大量生產(chǎn)并免費(fèi)分發(fā)(如作為雜志上的封面光盤)。任何擁有這些DVD中的一個(gè)的人然后可以通過(guò)因特網(wǎng)購(gòu)買種子,這將給出一個(gè)范圍的訪問(wèn)密鑰以解密DVD上的一些ADU。MARKS適用于這種情形,因?yàn)橐坏〥VD被壓制加密密鑰就不能再改變,所以使用物理介質(zhì)的商業(yè)模型不傾向依賴于非計(jì)劃驅(qū)逐。本方案可用于與變色龍組合以對(duì)密鑰和數(shù)據(jù)加水印。
上面我們描述了管理很大的組的密鑰的方案,通過(guò)將發(fā)送者與所有接收者的加入和離開(kāi)活動(dòng)完全去耦,保持接收者啟動(dòng)的因特網(wǎng)多點(diǎn)傳送的可升級(jí)性。發(fā)送者也完全與承擔(dān)該接收者的活動(dòng)費(fèi)用的密鑰管理器去耦。我們已經(jīng)示出許多商業(yè)應(yīng)用具有只需要無(wú)中央控制的密鑰管理器的模型,在這種情形下,可能有無(wú)限的密鑰管理器的復(fù)本。當(dāng)復(fù)制的無(wú)中央控制的密鑰管理器中的一個(gè)失敗時(shí),不會(huì)影響其姐妹服務(wù)器中的進(jìn)程的處理,從而使整個(gè)系統(tǒng)與問(wèn)題隔離,提高恢復(fù)性。為了說(shuō)明這些點(diǎn)我們提出了一個(gè)按每分鐘收費(fèi)的大規(guī)模網(wǎng)絡(luò)游戲的工作例子。
通過(guò)使用系統(tǒng)地改變組密鑰而不是由用戶的加入或離開(kāi)活動(dòng)驅(qū)動(dòng)重新分配密鑰來(lái)實(shí)現(xiàn)上述的優(yōu)點(diǎn)。去耦的實(shí)現(xiàn)是通過(guò)發(fā)送者和密鑰管理器事先安排多點(diǎn)傳送數(shù)據(jù)流中的經(jīng)濟(jì)值的單元(關(guān)于付費(fèi)的“應(yīng)用數(shù)據(jù)單元”)。通過(guò)遞增數(shù)據(jù)中聲明的ADU索引通知系統(tǒng)的密鑰改變。使用這種模型,當(dāng)一個(gè)接收者加入或離開(kāi)時(shí)對(duì)其他發(fā)送者和接收者都沒(méi)有副作用。我們還確保多點(diǎn)傳送不用于密鑰管理,只用于數(shù)據(jù)傳送。因此,重新分配密鑰不易受隨機(jī)傳輸失敗的影響,當(dāng)使用多點(diǎn)傳送時(shí)隨機(jī)傳輸失敗的修復(fù)比較復(fù)雜。
傳統(tǒng)的密鑰管理方案成功地提高了允許非計(jì)劃驅(qū)逐組成員的技術(shù)的可升級(jí)性,但是最好的技術(shù)仍然在發(fā)送消息方面開(kāi)銷很大。相反我們關(guān)注于計(jì)劃驅(qū)逐的問(wèn)題。即,在一些任意將來(lái)的ADU之后,但在接收者請(qǐng)求一個(gè)話路時(shí)計(jì)劃的驅(qū)逐。我們斷言很多基于預(yù)先支付或訂購(gòu)的商業(yè)情形不需要非計(jì)劃的驅(qū)逐但確實(shí)需要任意的計(jì)劃驅(qū)逐。這樣的例子包括付費(fèi)電視,按次計(jì)費(fèi)電視或網(wǎng)絡(luò)游戲。
為了實(shí)現(xiàn)計(jì)劃的但任意的驅(qū)逐,我們?cè)O(shè)計(jì)了由發(fā)送者用來(lái)系統(tǒng)地改變組密鑰的密鑰序列構(gòu)造的選擇,以便任何序列的子范圍都可以通過(guò)揭示少量的種子(每個(gè)16B)來(lái)重新構(gòu)造。這樣接收者可以被授權(quán)訪問(wèn)數(shù)據(jù)序列的任意子范圍。所有可行的方案使用O(log(N))個(gè)種子可以為每個(gè)接收者揭示N個(gè)密鑰。各方案的不同之處在于計(jì)算每個(gè)密鑰的處理負(fù)載,其為了安全性而作的折衷。處理負(fù)載最重的方案在開(kāi)始時(shí)平均只需要O(2(log(N)-1))次快速哈希運(yùn)算,然后平均只需要另外16次哈希運(yùn)算以計(jì)算序列中的每個(gè)新密鑰,該操作可事先進(jìn)行。處理負(fù)載最輕的方案比它的處理量少四倍。
為了將本工作放入環(huán)境中,對(duì)于按秒收費(fèi)的付費(fèi)電視,在15分鐘內(nèi)有一千萬(wàn)觀看者的10%接入或離開(kāi),最好的替換方案(Chang et al)可能會(huì)每秒鐘生成幾十RB千個(gè)字節(jié)數(shù)量級(jí)的重新分配消息以多點(diǎn)傳送給每個(gè)組成員。本工作只需要在或許四小時(shí)的觀看開(kāi)始時(shí),給每個(gè)接收者單點(diǎn)傳送一個(gè)幾百字節(jié)的消息。
附錄A-識(shí)別BHT的中間種子的最小集合的算法在下列的類C語(yǔ)言碼段中●函數(shù)odd(x)檢驗(yàn)x是否為奇數(shù)●函數(shù)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--) { //從樹(shù)的底部開(kāi)始操作 //每個(gè)循環(huán)沿樹(shù)往上移一層if(min==max) { //min和max會(huì)聚 reveal(d,min); //...揭示子樹(shù)的根... break; //...并退出}if odd(min) {//奇數(shù)最小值永遠(yuǎn)不會(huì)是左孩子... reveal(d,min); //...揭示奇數(shù)最小種子 min++;//將min向右移動(dòng)一個(gè)種子}if!odd(min) { //偶數(shù)最大值永遠(yuǎn)不會(huì)是右孩子... reveal(d,max); //...揭示偶數(shù)最大種子 max--;//將max向右移動(dòng)一個(gè)種子  }  if(min max)break;//如果min&amp;max是表兄弟,則退出  min/=2; //...二等分min...  max/=2; //...二等分max...} //...向上一層,循環(huán)]]></pre>
附錄B-識(shí)別BHC-T的中間種子的最小集合的算法在下列的類C語(yǔ)言碼段中●函數(shù)odd(x)檢驗(yàn)x是否為奇數(shù)●函數(shù)reveal(d,i)將種子sd,i揭示給接收者<pre listing-type="program-listing"><![CDATA[min=m;max=n;if(min max)error(); //拒絕min maxd=0; //從樹(shù)的底部開(kāi)始操作  if(max<=min+1) { //請(qǐng)求的min&amp;max是相鄰的或相同的...   reveal(d,min); //...所以揭示左邊...   if(max<min) //...請(qǐng)求的min&amp;max是不相同的...  reveal(d,max); //...所以也揭示右邊...   break;//...并退出...  }for(d=0;;d++) { //每個(gè)循環(huán)沿樹(shù)往上移一層 if(max<=min+3){ //min&amp;max相隔2或3個(gè)...  if(max<min+3){ //min&amp;max相隔2個(gè)...   reveal(d,min); //...所以揭示左邊...   reveal(d,max); //...和右邊...   reveal(d,min+1); //...和中間...   break; //...并退出  }else{ //min&amp;max相隔3個(gè),所以...   if(!odd(min)){ //...僅當(dāng)min為偶數(shù)時(shí)...   reveal(d,min+1);//...揭示左中間...   reveal(d,max-1);//...和右中間...   break; //...并退出   }  }}  if!odd(min) { //偶數(shù)最小值永遠(yuǎn)不會(huì)是右孩子...   reveal(d,min); //...揭示偶數(shù)最小種子   min++; //將min向右移動(dòng)一個(gè)種子  }  if odd(max) { //奇數(shù)最大值永遠(yuǎn)不會(huì)是左孩子...   reveal(d,max); //...揭示奇數(shù)最大種子   max--;//將max向左移動(dòng)一個(gè)種子  }min/=2;//...二等分min... max/=2;//...二等分max...} //...向上一層,循環(huán)]]></pre>
權(quán)利要求
1.一種發(fā)布數(shù)據(jù)的方法,包括(a)對(duì)多個(gè)數(shù)據(jù)單元中的每一個(gè)數(shù)據(jù)單元用密鑰序列中的一個(gè)密鑰進(jìn)行加密;(b)將加密過(guò)的數(shù)據(jù)單元傳送給多個(gè)用戶終端;(c)將至少一個(gè)種子值傳送給一個(gè)用戶終端;(d)從該種子值生成一個(gè)密鑰序列,其密鑰個(gè)數(shù)大于傳送給用戶終端的種子值的個(gè)數(shù);以及(e)在用戶終端使用所述的密鑰序列解密數(shù)據(jù)單元,特征在于,在步驟(d)中,生成一個(gè)構(gòu)成步驟(a)的密鑰序列的一個(gè)任意雙重界定部分的密鑰序列,并且,所述部分的上下邊界在序列中的位置由步驟(c)中傳送的至少一個(gè)種子值來(lái)決定。
2.根據(jù)權(quán)利要求1所述的方法,其中步驟(a)中使用的密鑰序列如下生成(a)對(duì)一個(gè)或多個(gè)初始種子值進(jìn)行運(yùn)算,生成更多個(gè)中間種子值,該中間種子值隱蔽該初始種子值;(b)進(jìn)一步對(duì)前一步驟生成的值進(jìn)行運(yùn)算,生成更多個(gè)深一層的值,該深一層的值隱蔽前一步驟生成的值;(c)重復(fù)步驟(b)直到生成的值的個(gè)數(shù)等于或大于步驟(a)所需的密鑰的個(gè)數(shù)。
3.根據(jù)權(quán)利要求1或2所述的方法,其中步驟(d)包括組合從多個(gè)不同的種子值中導(dǎo)出的值。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其中步驟(d)包括利用多個(gè)不同的隱蔽函數(shù)中的每一個(gè)對(duì)多個(gè)種子值進(jìn)行運(yùn)算。
5.根據(jù)權(quán)利要求4所述的方法,包括(I)用一組不同的隱蔽函數(shù)中的每一個(gè)函數(shù)對(duì)至少一個(gè)根種子值進(jìn)行運(yùn)算,生成多個(gè)深一層的值;(II)用該組不同的隱蔽函數(shù)中的每一個(gè)函數(shù)對(duì)前一步驟生成的深一層的值或從其導(dǎo)出的值進(jìn)行運(yùn)算;(III)重復(fù)步驟(II),通過(guò)該重復(fù)或每個(gè)重復(fù),生成值樹(shù)中的下一層;(IV)在步驟(a)中,使用從步驟(III)中生成的一層或多層中的種子序列中導(dǎo)出的值作為密鑰序列;(V)在步驟(c)中,將來(lái)自樹(shù)體內(nèi)的至少一個(gè)值傳送給一個(gè)用戶終端,傳送給該用戶終端的該值或每個(gè)值在樹(shù)中的位置決定了用戶用于解密數(shù)據(jù)單元的可用密鑰序列部分的位置和范圍。
6.根據(jù)權(quán)利要求5所述的方法,包括,在步驟(I)中(i)用所述組不同的隱蔽函數(shù)對(duì)多個(gè)不同的種子值進(jìn)行運(yùn)算(ii)對(duì)所述不同的隱蔽函數(shù)中的每一個(gè),組合用一個(gè)隱蔽函數(shù)對(duì)種子值中的一個(gè)進(jìn)行運(yùn)算的結(jié)果和用同一個(gè)或另一個(gè)隱蔽函數(shù)對(duì)另一個(gè)種子值進(jìn)行運(yùn)算的結(jié)果,從而生成多個(gè)深一層的值。
7.根據(jù)權(quán)利要求3所述的方法,其中步驟(d)包括(I)組合分別從第一和第二隱蔽函數(shù)鏈中導(dǎo)出的第一和第二值,從而生成一個(gè)第一下一個(gè)種子或密鑰,該第一和第二隱蔽函數(shù)鏈有各自不同的種子(II)組合從第一鏈中第一值的位置后面的一個(gè)位置導(dǎo)出的一個(gè)值和從第二鏈中的第二值的位置前面的一個(gè)位置導(dǎo)出的一個(gè)值,從而生成一個(gè)深一層的下一個(gè)種子或密鑰值。
8.根據(jù)權(quán)利要求7所述的方法,包括重復(fù)步驟(II)從而生成深一層的密鑰值,在每一個(gè)重復(fù)中,來(lái)自第一鏈中的前一個(gè)位置后面的位置的值和第二鏈中的前一個(gè)位置前面的位置的值被組合。
9.根據(jù)前述權(quán)利要求中所述的任何一種方法,其中所述種子值通過(guò)一個(gè)通信網(wǎng)絡(luò)傳送給所述用戶終端。
10.根據(jù)權(quán)利要求9所述的方法,其中所述種子值被從多個(gè)密鑰管理節(jié)點(diǎn)傳送給用戶終端。
11.一種加密發(fā)布數(shù)據(jù)的方法,包括(a)用一個(gè)或多個(gè)隱蔽函數(shù)對(duì)至少一個(gè)根種子值進(jìn)行運(yùn)算,從而生成多個(gè)深一層的值;(b)用一個(gè)或多個(gè)隱蔽函數(shù)對(duì)前一步驟生成的深一層的值或從其導(dǎo)出的值進(jìn)行運(yùn)算;(c)重復(fù)步驟(b),通過(guò)該重復(fù)或每個(gè)重復(fù)生成值樹(shù)中的下一層;(d)用步驟(c)中生成的層或多層中導(dǎo)出的一個(gè)密鑰值序列加密多個(gè)數(shù)據(jù)單元。
12.一種將數(shù)據(jù)傳送給一組用戶的方法,包括(a)加密發(fā)布的數(shù)據(jù);(b)系統(tǒng)地并獨(dú)立于組成員變化地改變用于加密發(fā)布數(shù)據(jù)的密鑰;(c)將所述數(shù)據(jù)傳送給所述用戶;(d)在所述用戶的終端解密數(shù)據(jù),特征在于,從許多初始種子值生成更多個(gè)中間種子值并從該中間種子值導(dǎo)出多個(gè)用于加密發(fā)布數(shù)據(jù)的密鑰。
13.根據(jù)權(quán)利要求12所述的方法,其中密鑰序列的每個(gè)可能的子集都可以從相應(yīng)的種子值組合中導(dǎo)出。
14.根據(jù)前述權(quán)利要求中的任何一項(xiàng)的方法,其中每個(gè)加密的數(shù)據(jù)單元承載一個(gè)未加密的索引號(hào)以便向各用戶標(biāo)識(shí)應(yīng)該使用序列中的哪一個(gè)密鑰來(lái)解密該單元數(shù)據(jù)。
15.根據(jù)權(quán)利要求1到14中的任何一項(xiàng)的方法,其中任何接收者用來(lái)構(gòu)造整個(gè)密鑰序列的一個(gè)特定子范圍密鑰所需的種子以隱含地標(biāo)識(shí)每個(gè)種子的順序傳送。
16.根據(jù)前述權(quán)利要求中的任何一項(xiàng)的方法,其中多個(gè)數(shù)據(jù)發(fā)送者使用彼此相同的密鑰序列來(lái)加密相同的或不同的數(shù)據(jù)單元。
17.根據(jù)前述權(quán)利要求中的任何一項(xiàng)的方法,其中從種子生成的序列中的每個(gè)密鑰被作為一個(gè)中間密鑰以與另一個(gè)中間密鑰或密鑰序列組合以生成一個(gè)用以加密或解密數(shù)據(jù)單元的密鑰序列。
18.一種發(fā)布數(shù)據(jù)的方法,包括用密鑰序列中的一個(gè)密鑰加密多個(gè)數(shù)據(jù)單元中的每個(gè)單元;將加密過(guò)的數(shù)據(jù)單元傳送給多個(gè)用戶終端,其特征在于,根據(jù)一個(gè)密鑰構(gòu)造算法生成該密鑰序列并將其分配到應(yīng)用數(shù)據(jù)單元,并且,該密鑰構(gòu)造算法的復(fù)本被發(fā)布給多個(gè)密鑰管理器,以便在使用中,接收者可以從一個(gè)密鑰管理器獲得用于訪問(wèn)數(shù)據(jù)的一個(gè)任意部分的密鑰,而不必向任何數(shù)據(jù)發(fā)送者查詢。
19.一種操作用戶終端的方法,包括a)接收多個(gè)用一個(gè)密鑰序列加密過(guò)的數(shù)據(jù)單元;b)接收一個(gè)或多個(gè)種子值;c)從一個(gè)或多個(gè)種子值生成一個(gè)任意雙重界定的密鑰序列,其密鑰個(gè)數(shù)大于在步驟(b)中接收的種子的個(gè)數(shù);以及d)使用在步驟(c)中生成的值或由其導(dǎo)出的值解密所述應(yīng)用數(shù)據(jù)單元。
20.一種被設(shè)計(jì)為根據(jù)權(quán)利要求18的方法操作的密鑰管理器。
21.一種被設(shè)計(jì)為根據(jù)權(quán)利要求19的方法操作的用戶終端。
22.一種被設(shè)計(jì)為根據(jù)權(quán)利要求1到19所述的任何一種方法操作的通信網(wǎng)絡(luò)。
23.根據(jù)權(quán)利要求22所述的網(wǎng)絡(luò),其中使用一種多點(diǎn)傳送或廣播傳輸模式來(lái)發(fā)布數(shù)據(jù)。
24.根據(jù)權(quán)利要求22或23所述的網(wǎng)絡(luò),其中所述網(wǎng)絡(luò)包括一個(gè)虛擬個(gè)人網(wǎng)絡(luò)(VPN),并且其中用于構(gòu)造用于解密數(shù)據(jù)的不同密鑰子范圍的不同種子組合給予虛擬個(gè)人網(wǎng)絡(luò)的成員對(duì)該VPN的不同訪問(wèn)期間。
25.一種數(shù)據(jù)載體,包括在根據(jù)權(quán)利要求1到19中的任何一個(gè)方法中使用的多個(gè)加密過(guò)的數(shù)據(jù)單元。
全文摘要
在數(shù)據(jù)發(fā)布系統(tǒng)中,數(shù)據(jù)被劃分為許多應(yīng)用數(shù)據(jù)單元。系統(tǒng)地生成一個(gè)密鑰序列,在數(shù)據(jù)源用不同的密鑰對(duì)每個(gè)數(shù)據(jù)單元進(jìn)行加密。在接收方,生成對(duì)應(yīng)的密鑰用于解密數(shù)據(jù)單元以使用該數(shù)據(jù)。用于生成密鑰的結(jié)構(gòu)是通過(guò)傳送選擇的一個(gè)或多個(gè)種子值的組合,用戶可以使用整個(gè)密鑰序列的一個(gè)固有限定的子集。
文檔編號(hào)H04L12/22GK1408153SQ0081076
公開(kāi)日2003年4月2日 申請(qǐng)日期2000年7月20日 優(yōu)先權(quán)日1999年7月23日
發(fā)明者羅伯特·約翰·布里斯科 申請(qǐng)人:英國(guó)電訊有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1