專利名稱:結(jié)合頒發(fā)內(nèi)容的數(shù)字版權(quán)管理(drm)許可證審查高速緩存的用戶組信息的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字版權(quán)管理(DRM)系統(tǒng)。尤其是,本發(fā)明涉及在應(yīng)用DRM系統(tǒng)來發(fā)行一個組織(例如,一個辦公室或公司或類似單位等等)中的數(shù)字內(nèi)容,從而可以根據(jù)相關(guān)的使用和許可證項目來限制該內(nèi)容在組織中的復(fù)制和使用。更具體的說,本發(fā)明涉及適用于至少是部分根據(jù)高速緩存組的信息來頒發(fā)相關(guān)數(shù)字內(nèi)容的數(shù)字許可證。
背景技術(shù):
數(shù)字版權(quán)的管理和執(zhí)行與數(shù)字內(nèi)容相結(jié)合是非常理想的,數(shù)字內(nèi)容可以包括數(shù)字音頻、數(shù)字視頻、數(shù)字文本、數(shù)字數(shù)據(jù)、數(shù)字多媒體等等,其中這類數(shù)字內(nèi)容將會發(fā)行給一個或多個用戶。數(shù)字內(nèi)容可以是靜態(tài)的,例如,文字文件,它也可能是碼流形式的,例如,直播的碼流音頻/視頻。典型的發(fā)行模式包括有形設(shè)備,例如,磁(軟)盤、磁帶、光盤(小型)(CD),等等,以及無形媒介,例如,電子廣告板、電子網(wǎng)絡(luò)、互聯(lián)網(wǎng),等等。一旦用戶接受之后,這些用戶就可以利用諸如個人電腦等等的媒體播放器這類適用的復(fù)制設(shè)備來復(fù)制或“播放”該數(shù)字內(nèi)容。
在這樣的背景下,內(nèi)容擁有者或版權(quán)擁有者,例如,作者、出版商、發(fā)行者等等,就希望向支付許可費用或其它一些報酬的許多用戶或接受者中的每一位來發(fā)行這類數(shù)字內(nèi)容。然而,在這樣的背景下,內(nèi)容可能是一首歌、一本歌曲集、一部電影,等等,發(fā)行的目的是產(chǎn)生許可的費用。這類內(nèi)容的擁有者,給出的選擇是,希望能夠約束用戶對這類發(fā)行的數(shù)字內(nèi)容的使用。例如,內(nèi)容的擁有者可能希望能限制用戶向第二個用戶拷貝和再發(fā)行該內(nèi)容,至少是以拒絕向內(nèi)容的擁有者繳納第二個用戶的許可費用的方式來拷貝和發(fā)行。
另外,內(nèi)容的擁有者也希望能提供用戶采用靈活的方式以不同的許可費用來購買不同類型的使用許可證,與此同時,約束用戶在實際購買的許可證的項目上。例如,內(nèi)容擁有者可能希望允許已發(fā)行的數(shù)字內(nèi)容只能播放有限的次數(shù),只能播放限定的總的時間,只能在限定型號的機器上進行播放,只能在限定型號的媒體播放器上進行播放,只能由限定類型的用戶來播放,等等。
在另一背景下,內(nèi)容的開發(fā)者,例如,在一個組織中的雇員或成員,就希望能將這類數(shù)字內(nèi)容分發(fā)給在該組織內(nèi)的一個或多個雇員或成員或者在該組織外的其它個人,但是又希望能使得其它人不能拷貝該內(nèi)容。這時,內(nèi)容的發(fā)行就更多地類似于基于同一組織且以一種保密或限制的方式來共享的內(nèi)容,它不同于基于廣眾以許可費用或一些其它報酬為交換的發(fā)行。
那么,在這類背景下,內(nèi)容可以是文件介紹、電子數(shù)據(jù)表、數(shù)據(jù)庫、電子郵件、或其它等等,以便于能在辦公室架構(gòu)內(nèi)進行交換,以及該內(nèi)容的開發(fā)者可能希望確保該內(nèi)容保留在組織或辦公室架構(gòu)之內(nèi)并且非授權(quán)的個體(例如,競爭者或?qū)κ?不能復(fù)制該內(nèi)容。另外,這類內(nèi)容的開發(fā)者還希望限制接受者對這類發(fā)行的數(shù)字內(nèi)容所能作的操作。例如,內(nèi)容擁有者希望限制用戶向第二個用戶拷貝和再發(fā)行該內(nèi)容,至少是以在允許復(fù)制該內(nèi)容的個體以外暴露該內(nèi)容的方式來拷貝和再發(fā)行。
此外,內(nèi)容開發(fā)者可能希望以不同等級的復(fù)制權(quán)限提供給各種接受者。例如,內(nèi)容開發(fā)者可能希望使得所保護的數(shù)字內(nèi)容,對一類個體是可觀看而不可打印,而對另一類個體是可觀看且可打印。
然而,在任何一類背景下,在發(fā)行之后,這類內(nèi)容擁有者/開發(fā)者對數(shù)字內(nèi)容幾乎不能進行任何控制。這是特別成問題的,根據(jù)目前的事實,每一臺個人電腦都包括了所需的軟件和硬件,能夠進行這類數(shù)字內(nèi)容的原模原樣的數(shù)字拷貝,以及將這類原模原樣的數(shù)字拷貝下載到可寫的磁盤和光盤中,或者通過網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))向任何目的文件發(fā)送這類原模原樣的數(shù)字拷貝。
當然,作為發(fā)行內(nèi)容的業(yè)務(wù)的一部分,內(nèi)容擁有者/開發(fā)者可以要求該數(shù)字內(nèi)容的用戶/接受者許諾不能以一種不受歡迎的方式再發(fā)行該數(shù)字內(nèi)容。然而,這種許諾是容易獲得的并且也是容易失信的。內(nèi)容擁有者/開發(fā)者可能試圖通過幾種眾所周知的安全設(shè)備中的任何一種,通常涉及加密和解密的方法,來防止這類再發(fā)行。然而,很少能防止態(tài)度溫和的用戶來解密已加密的數(shù)字內(nèi)容,以不加密的方式來保存這類數(shù)字內(nèi)容,以及隨后再發(fā)行該數(shù)字內(nèi)容。
因此,就存在著需要提供一種數(shù)字版權(quán)管理(DRM)和執(zhí)行的架構(gòu)和方法,它可允許控制任意格式的數(shù)字內(nèi)容的復(fù)制或播放,其中,這種控制是靈活的并且可以由該數(shù)字內(nèi)容的內(nèi)容擁有者/開發(fā)者來限定。更具體的說,就存在著對這類架構(gòu)的需要,這類架構(gòu),特別是在辦公室或組織環(huán)境中或類似環(huán)境中,允許和便于在該環(huán)境中由一組所限定的個人或一些所限定的個人團體之間所共享的文檔的可控制的復(fù)制。再具體的說,就存在著對這類架構(gòu)的需要,這類架構(gòu)允許根據(jù)該用戶是該組的成員將內(nèi)容許可用戶使用,其中,至少是部分根據(jù)高速緩存組的信息來確定這類組的成員。
發(fā)明內(nèi)容
本發(fā)明至少能部分滿足以上的需要,在本發(fā)明中,它確定在一個組織中的一員是否是該組織所預(yù)先限定的一個或多個目標組的一個成員。該組織維持著一個包括構(gòu)成x等級的多個存儲設(shè)備的計算機網(wǎng)絡(luò)并且存儲了成員—組的信息。存儲設(shè)備包括一個目錄,它在較高也較昂貴的等級X且至少具有一個高速緩存存儲器。各個高速緩存都在較低等級,低于X的較不昂貴的等級,且至少包括在目錄中的部分成員—組信息。等級1至X對應(yīng)于最低成本至最高成本。
在該方法中,通過搜索各等級的存儲設(shè)備來發(fā)現(xiàn)適用于目標組的項目從而確認各個目標組,并且,如果發(fā)現(xiàn)了目標組,就將該目標組放置于一個確認的目標箱(V)中。另外,通過搜索各等級的存儲設(shè)備來發(fā)現(xiàn)適用于該元素的項目從而確認該元素,并且,如果發(fā)現(xiàn)了適用于該元素的項目,就從該項目中將列出元素的所有組確定為搜索箱中的一個成員并將該組的成員放置于一個搜索箱(S)中。
之后,首先確定在(S)中的任何組是否與在(V)中的任何組相匹配。如果能匹配,則可獲得結(jié)論,該元素就是一個目標組的成員。如果沒有匹配的,則該方法就繼續(xù)移動在(S)中的所有組,將其排列成對應(yīng)于在等級1的存儲設(shè)備的隊列,并且執(zhí)行一個迭代處理過程,以從元素的成員關(guān)系路徑來搜索任何目標組。
迭代的處理過程包括對從1至X的各個等級x,進行第二確定對應(yīng)于該等級的隊列(Qx)是否是空。如果是空的,則該等級就增1,并且如果x<X,則處理過程就返回到第二確定的步驟,否則如果x=X就可以得出結(jié)論,該元素不是任何目標組的成員。如果不是空的,則從(Qx)隊列中去除一個組,并且確定所去除的這個組是否已經(jīng)是在一個放棄箱(D)中。
如果在(D)中,則處理過程就返回到第二確定的步驟。如果不在(D)中,則處理過程就在對應(yīng)于該等級的存儲設(shè)備中搜索對應(yīng)于該去除組的項目。如果從搜索中沒有發(fā)現(xiàn)該項目,則如果x<X就將該去除的組移至(Q(x+1)),以及如果x=X就將該去除的組移至(D),并且處理過程就返回到第二確定步驟。如果從搜索中發(fā)現(xiàn)了該項目,則將從發(fā)現(xiàn)項目所確定的、且該去除組是某一個成員的各個新發(fā)現(xiàn)的組,放置至(S)中,該去除的組移至(D)中,并且處理過程就返回到第一確定步驟。
迭代處理過程開發(fā)了從該元素到任何所確認的目標組的所有可能的路徑。在這樣做的過程中,在完成所有較低等級存儲設(shè)備的所有可能較廉價操作之前,不會發(fā)生較高等級存儲設(shè)備的較昂貴的操作。
附圖的簡要說明當結(jié)合附圖閱讀時,就能較好地理解上述內(nèi)容以及以下本發(fā)明實施例的詳細描述。為了便于說明本發(fā)明,附圖顯示了一些較佳的實施例。然而,應(yīng)該理解的是,本發(fā)明并不限制于這里所顯示的精確結(jié)構(gòu)和手段。附圖包括
圖1是顯示一個能夠?qū)崿F(xiàn)本發(fā)明的典型非限制的計算環(huán)境的方框圖;圖2是顯示一個能夠?qū)崿F(xiàn)本發(fā)明的具有多種計算設(shè)備的典型網(wǎng)絡(luò)環(huán)境的方框圖;圖3是一種根據(jù)本發(fā)明適用于發(fā)行數(shù)字內(nèi)容的系統(tǒng)和方法的較佳實施例的功能方框圖;圖4是一種根據(jù)本發(fā)明適用于發(fā)行具有權(quán)限管理的數(shù)字內(nèi)容的方法的較佳實施例的流程圖;圖4A顯示了一個由圖4所示方法產(chǎn)生的簽署權(quán)限標簽的結(jié)構(gòu)的方框圖;圖5是一種根據(jù)本發(fā)明適用于許可權(quán)限管理的數(shù)字內(nèi)容的系統(tǒng)和方法的較佳實施例的方框圖;圖6A和6B是一種根據(jù)本發(fā)明適用于許可權(quán)限管理的數(shù)字內(nèi)容的方法的較佳實施例的流程圖;圖7顯示了根據(jù)本發(fā)明一個實施例由申請者將授權(quán)證書和權(quán)限標簽發(fā)送給許可證頒發(fā)者和許可證頒發(fā)者提交一個組織目錄的方框圖;圖8顯示了根據(jù)本發(fā)明一個實施例由多個分支或樹構(gòu)成的組織且其中各個樹具有至少一個DRM服務(wù)器和一個目錄的方框圖;圖9顯示了與所限定組的成員關(guān)系相關(guān)的各種實體的方框圖;圖10顯示了在圖8的目錄中適用于圖9所示的實體的目錄條目的方框圖;圖11顯示了一種典型的誠信系統(tǒng)的執(zhí)行架構(gòu)的方框圖;圖12顯示了在確定用戶是否屬于DRM服務(wù)器樹形組中的成員時由圖8所示DRM服務(wù)器所執(zhí)行的關(guān)鍵步驟的流程圖;圖13顯示了根據(jù)本發(fā)明一個實施例在確定用戶是否不屬于DRM服務(wù)器樹形組中的成員時由圖8所示DRM服務(wù)器所執(zhí)行的關(guān)鍵步驟的流程圖;
圖14顯示了根據(jù)本發(fā)明一個實施例在一個高速緩存存儲器中的條目的方框圖;圖15和16顯示了根據(jù)本發(fā)明一個實施例采用圖14所示高速緩存存儲器的高速緩存存儲器架構(gòu)的一種變型的方框圖;以及,圖17A和17B顯示了根據(jù)本發(fā)明一個實施例結(jié)合確定用戶是否組成員的圖15和16所示高速緩存架構(gòu)由圖8所示許可證DRM服務(wù)器所采用的一種算法所執(zhí)行的關(guān)鍵步驟的流程圖。
發(fā)明的具體描述計算機環(huán)境圖1和以下的討論試圖對適用于實現(xiàn)本發(fā)明的計算機環(huán)境提供一個簡潔的描述。然而,應(yīng)該理解的是,所有類型的手持、便攜和其它計算設(shè)備都可試圖結(jié)合本發(fā)明來使用。而以下是就通用計算機來討論的,但這只是一個例子,并且本發(fā)明只要求一臺具有網(wǎng)絡(luò)服務(wù)器的互用性和交互功能的瘦型客戶機。于是,本發(fā)明可以在網(wǎng)絡(luò)主機服務(wù)器的環(huán)境中實現(xiàn),這意味著在該服務(wù)器中只有很少和最少的客戶機資源,例如,一個僅僅只是將客戶機作為環(huán)球網(wǎng)的一個瀏覽器或界面的網(wǎng)絡(luò)環(huán)境。
盡管沒有要求,但是本發(fā)明也可以通過一個應(yīng)用程序接口(API)來實現(xiàn),該應(yīng)用程序接口(API)適用于開發(fā)者使用,并且/或者包含于網(wǎng)絡(luò)瀏覽軟件中,該軟件可以普通的計算機可執(zhí)行指令的內(nèi)容來描述,例如,計算機可執(zhí)行指令可以是一個程序模塊并可以由一臺或多臺計算機來執(zhí)行,例如,客戶工作站、服務(wù)器或其它設(shè)備。一般來說,程序模塊可以包括例程、程序、目標、元件、數(shù)據(jù)結(jié)構(gòu)、以及其它能夠執(zhí)行特殊的任務(wù)或?qū)崿F(xiàn)特殊的抽象數(shù)據(jù)類型等等。典型的是,程序模塊的功能可以根據(jù)各種實施例的要求進行組合或分散。而且,本領(lǐng)域的熟練技術(shù)人員都能意識到本發(fā)明可以采用其它計算機系統(tǒng)結(jié)構(gòu)來實現(xiàn)。其它可以適用于本發(fā)明所使用的眾所周知的計算機系統(tǒng),環(huán)境,和/或結(jié)構(gòu)包括,但并不限制于,個人電腦(PC)、銀行自動取款、服務(wù)器計算機、手持或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費電子產(chǎn)品、網(wǎng)絡(luò)PC、小型計算機、大型計算機、以及其它等等。本發(fā)明也可以分布式計算環(huán)境來實現(xiàn),在該環(huán)境中,任務(wù)是由通過通訊網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸媒介連接的遠程處理設(shè)備來完成的。在分布式計算環(huán)境中,程序模塊可以設(shè)置在包括存儲器存儲設(shè)備的本地和遠程計算機存儲媒介中。
圖1說明了一例典型適用于實現(xiàn)本發(fā)明的計算系統(tǒng)環(huán)境100,雖然,為了是討論更簡潔,該計算系統(tǒng)環(huán)境100只是一例適用的計算環(huán)境,并且并不試圖建議對本發(fā)明的使用和功能的范圍作出任何限制。不應(yīng)該將計算環(huán)境100視為具有與典型操作環(huán)境100所說明的任何一個元件和元件組合有關(guān)的相關(guān)性或必要條件。
參考圖1,一個適用于實現(xiàn)本發(fā)明的典型系統(tǒng)包括一個以計算機形式構(gòu)成的通用計算設(shè)備110。該計算機110的元件可以包括,但并不限制于,一個處理單元120,一個系統(tǒng)存儲器130,以及一個系統(tǒng)總線121,該系統(tǒng)總線將包括系統(tǒng)存儲器的各個系統(tǒng)元件與處理單元120相耦合。系統(tǒng)總線121可以是幾種總線結(jié)構(gòu)中的任何一種,可包括一個存儲器總線或存儲器控制器,一個外圍總線,以及一個使用多種總線架構(gòu)中的任何一種結(jié)構(gòu)的局部總線。作為一個例子,但并不限制于,這類架構(gòu)可以包括工業(yè)標準結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)、增強性ISA(EISA)總線、視頻電子標準附件(VESA)局部總線,以及外圍元件互聯(lián)(PCI)總線(也稱之為中間件總線)。
計算機110一般包括多種計算機可讀媒介。計算機可讀媒介可以是任何能夠被計算機110訪問的有效媒介,并且可以包括易失性和非易失性媒介、可移動和非移動的媒介。作為一個例子,但并不限制于,計算機可讀媒介可以包括計算機存儲媒介和通訊媒介。計算機存儲媒介可以包括易失性和非易失性、可移動和非移動的媒介,這類媒介可以采用任何適用于存儲信息(例如,計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或者其它等等)的方法和技術(shù)來實現(xiàn)。計算機存儲媒介包括,但并不限制于,RAM、ROM、EEPROM、閃存存儲器,或者其它存儲器技術(shù)、CDROM、數(shù)字視盤(DVD),或者其它光盤存儲,磁帶盒、磁帶、磁盤存儲器或者其它磁性存儲設(shè)備,或者任何其它可以用于存儲所需要信息并能被計算機110訪問的媒介。通訊媒介一般配備有計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或者在調(diào)制數(shù)據(jù)信號(例如,載波和其它傳遞機制)中的其它數(shù)據(jù),并且包括任何信息傳遞媒介。術(shù)語“調(diào)制數(shù)據(jù)信號”是指具有以在信號中編碼信息的方式來設(shè)置和變化它的一個或多個特性的信號。作為一個例子,但并不限制于,通訊媒介包括有線媒介,例如,有線網(wǎng)絡(luò)或直接有線連接,以及無線媒介,例如,聲波、RF、紅外、以及其它無線媒介。在計算機可讀媒介的范圍內(nèi)也可包括上述任意組合。
系統(tǒng)存儲器130包括諸如只讀存儲器(ROM)131和隨機存儲器(RAM)132這類易失性和/或非易失性存儲器類型的計算機存儲媒介?;据斎?輸出系統(tǒng)133(BIOS)可包含基本的例程,它有助于例如在啟動時計算機110內(nèi)各元件之間傳輸信息,它一般存儲于ROM 131。RAM 132一般可包含由處理單元120立即訪問和/或現(xiàn)場操作的數(shù)據(jù)和/或程序模塊。作為一個例子,但并不限制于,,圖1說明了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136,以及程序數(shù)據(jù)137。
計算機110也可以包括其它可移動/非移動,易失性/非易失性計算機存儲媒介。只是作為一個例子,圖1說明了可以對非移動非易失性磁性媒介進行讀寫的硬盤驅(qū)動器141,可以對可移動非易失性磁盤152進行讀寫的磁盤驅(qū)動器151,以及可以對可移動非易失性光盤156(例如,CD ROM)或其它光媒介進行讀寫的光盤驅(qū)動器155??梢栽诘湫偷牟僮鳝h(huán)境中使用的其它可移動/非移動、易失性/非易失性計算機存儲媒介包括,但并不限制于,磁帶盒、閃存存儲卡、數(shù)字視盤、數(shù)字視帶、固態(tài)RAM、固態(tài)ROM,以及其它等等。硬盤驅(qū)動器141一般可通過一個非移動存儲器接口(例如,接口140)與系統(tǒng)總線121相連接,以及磁盤驅(qū)動器151和光盤驅(qū)動器155一般可通過一個移動存儲器接口(例如,接口150)與系統(tǒng)總線121相連接。
上述討論和圖1所示的驅(qū)動器及其相關(guān)的計算機存儲媒介提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及用于計算110的其它數(shù)據(jù)的存儲。例如,在圖1中,所示的硬盤驅(qū)動器141可應(yīng)用于存儲操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146,以及程序數(shù)據(jù)147。值得注意的是,這些元件可以是相同于也可以是不同于操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136、以及程序數(shù)據(jù)137。這里對操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146,以及程序數(shù)據(jù)147以不同的數(shù)字給出,是說明在最低的程度上它們是不同的拷貝。用戶可以通過輸入設(shè)備,例如,鍵盤162和定位器162,通常稱之為鼠標、軌跡球或觸摸板,將命令和信息輸入計算機110。其它輸入設(shè)備(未顯示)可以是麥克風、操縱桿、游戲墊、衛(wèi)星天線、掃描儀,以及其它等等。上述和其它輸入設(shè)備通常都通過一個與系統(tǒng)總線121相耦合的用戶輸入接口160與處理單元120相連接,但是也可以采用其它接口和總線結(jié)構(gòu),例如,并行口,游戲口和通用串行總線(USB)。
監(jiān)視器191和其它類型的顯示設(shè)備也可以通過諸如視頻接口190的接口與系統(tǒng)總線121相連接。圖形接口182,例如,北橋,也可以與系統(tǒng)總線121相連接。北橋是一個與CPU或者與主機處理單元120通訊的芯片組,并負責加速圖形接口(AGP)的通訊。一個或多個圖形處理單元(GPU)184可以與圖形接口182通訊。在這點上,GPU 184一般可包括片上存儲器存儲,例如,寄存器存儲,并且GPU 184可以與視頻存儲器186相通訊。然而,GPU 184只是協(xié)處理器的一個例子,并因此在計算機110中可以包括多種協(xié)處理器件。監(jiān)視器191和其它類型的顯示設(shè)備也可以通過諸如視頻接口190與系統(tǒng)總線121相連接,其中視頻接口可以依次與視頻存儲器186相通訊。除了監(jiān)視器191之外,計算機也可以包括其它外圍輸出設(shè)備,例如,揚聲器197和打印機196,這些設(shè)備都可以通過輸出外圍接口195相連接。
計算機110可以在網(wǎng)絡(luò)環(huán)境中使用與一個或多個遠程計算機(例如,遠程計算機180)相連接的邏輯連接來進行操作。遠程計算機180可以是個人電腦、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等(點)設(shè)備或其它通用網(wǎng)絡(luò)節(jié)點,并且一般可包括許多或所有以上所討論的與計算機110有關(guān)的元件,盡管在圖1中只是已經(jīng)討論了存儲器存儲設(shè)備181。圖1所標識的邏輯連接可包括局部區(qū)域網(wǎng)絡(luò)(LAN)171和廣域網(wǎng)(WAN)173,并且還可以包括其它網(wǎng)絡(luò)。這類網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)內(nèi)的計算機網(wǎng)絡(luò),企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當用于LAN網(wǎng)絡(luò)環(huán)境中時,計算機110可通過網(wǎng)絡(luò)接口和適配器170與LAN相連接。當用于WAN網(wǎng)絡(luò)環(huán)境中時,計算機110一般可包括一個調(diào)制解調(diào)器172和其它用于建立與WAN 173通訊的設(shè)備(例如,互聯(lián)網(wǎng))。調(diào)制解調(diào)器172可以是內(nèi)置的或者是外置的,可以通過用戶輸入接口160和其它適當?shù)臋C構(gòu)與系統(tǒng)總線121相連接。在網(wǎng)絡(luò)環(huán)境中,所描述與計算機110有關(guān)的程序模塊或者是它的一部分可以存儲在遠程存儲器存儲設(shè)備中。作為一個例子,但并不限制于,圖1所說明的遠程應(yīng)用程序185可以駐留于存儲器設(shè)備181。應(yīng)該理解的是,所顯示的網(wǎng)絡(luò)連接都是用于舉例,并且也可以使用其它在計算機之間建立通訊連接的方法。
本領(lǐng)域中的普通技術(shù)人員都會意識到,計算機110或其它客戶設(shè)備都可以配置成一個計算機網(wǎng)絡(luò)的一部分。在這點上,本發(fā)明可以屬于具有任意數(shù)量的存儲器或存儲單元并具有任意數(shù)量可訪問任意數(shù)量的存儲單元或數(shù)據(jù)塊的應(yīng)用程序和處理能力的任何一類計算機系統(tǒng)。本發(fā)明可以應(yīng)用于在網(wǎng)路環(huán)境中配置服務(wù)器計算機和客戶機計算機并具有遠程和本地存儲的環(huán)境。本發(fā)明也可以應(yīng)用于獨立的具有可編程語言功能、編譯和執(zhí)行能力的計算設(shè)備。
分布式計算方便于共享計算機的資源以及通過在計算設(shè)備和系統(tǒng)之間直接交換的服務(wù)。這些資源和服務(wù)可以包括信息的交換、高速數(shù)據(jù)緩存存儲、以及文件的盤存儲。分布計算具有網(wǎng)絡(luò)連通性的優(yōu)點,允許客戶機充分利用它們集中的能力,以利于整個計劃的實現(xiàn)。在這點上,多種設(shè)備都可以具有能夠于本發(fā)明的授權(quán)技術(shù)交互的應(yīng)用程序、目標或資源,以便于能監(jiān)管圖形的流水線。
圖2提供了一個典型的網(wǎng)絡(luò)化或分布式計算環(huán)境的示意圖。該分布式計算環(huán)境包括計算目標10a,10b,等等,以及計算目標或設(shè)備110a,110b,110c等等。這些目標可以包括程序、方法、數(shù)據(jù)庫、可編程邏輯,等等。目標可以包括部分相同的或不同的設(shè)備,例如,PDA、電視機、MP3播放器、個人電腦、等等。各種設(shè)備都可以利用網(wǎng)絡(luò)與另一個設(shè)備相通訊。這個網(wǎng)絡(luò)本身就可以包括其它計算目標和計算設(shè)備,它們可以向圖2所示的系統(tǒng)提供服務(wù)。根據(jù)本發(fā)明的一個方面,各個目標10和110都可以包含一個應(yīng)用程序,該程序可以申請本發(fā)明的授權(quán)技術(shù),以監(jiān)管圖形的流水線。
還應(yīng)該意識的是,一個目標,例如,110c,也可以是另一個計算設(shè)備10和110的主機。于是,盡管所說明的物理環(huán)境顯示了所連接的設(shè)備可以作為計算機,但是這些說明都只是作為舉例,并且另外所說明和討論的物理環(huán)境可以包括各種數(shù)字設(shè)備,例如,PDA、電視機、MP3播放器、等等,諸如接口的軟件目標、COM目標以及其它等等。
可以有多種支持分布式計算環(huán)境的系統(tǒng)、元件和網(wǎng)絡(luò)配置。例如,計算系統(tǒng)可以通過有線或無線系統(tǒng)、通過局域網(wǎng)絡(luò)或廣域分布網(wǎng)連接在一起。當前,許多網(wǎng)絡(luò)都是與互聯(lián)網(wǎng)相耦合的,由互聯(lián)網(wǎng)提供廣域分布的計算的基礎(chǔ)架構(gòu)并且包含許多不同的網(wǎng)絡(luò)。
在家用網(wǎng)絡(luò)環(huán)境中,至少可有四種不同的網(wǎng)絡(luò)傳輸媒介且各自可以支持一種唯一的協(xié)議,例如,電力線、數(shù)據(jù)(無線和有線)、語音(例如,電話)和娛樂媒介。大多數(shù)家用控制設(shè)備,例如,電燈開關(guān)和家用電器,都可以用電力線連接。諸如寬帶(例如,DSL和有線調(diào)制解調(diào)器)這樣的數(shù)據(jù)服務(wù)可以進入家庭,并且可以在家庭中使用無線(例如,家用RF或者802.11b)或者有線(例如,家用PNA、Cat5甚至電力線)的連通性來訪問。語音通信可以采用有線(例如,Cat3)或者無線(例如,蜂窩式便攜無線電話)進入家庭,并且可以使用Cat3布線方式分布在家庭中。娛樂媒介可以通過衛(wèi)星和有線方式進入家庭,并且一般都采用同軸電纜分布在家庭中。IEEE 1394和DVI也具有數(shù)字互連功能,作為一組媒介設(shè)備。所有的這類網(wǎng)絡(luò)環(huán)境和其它可以使用協(xié)議標準的環(huán)境都可以相互連接,以形成一個內(nèi)部互聯(lián)網(wǎng)并可以通過因特網(wǎng)與外部世界相連接。簡而言之,所存在的多種分散的資源都可以用于數(shù)據(jù)的存儲和傳輸,并繼而形成了,計算設(shè)備都將需要在數(shù)據(jù)處理流水線的所有部分來保護內(nèi)容。
“因特網(wǎng)”通常是指采用TCP/IP協(xié)議的網(wǎng)絡(luò)和網(wǎng)關(guān)的匯集,這些都是在計算機網(wǎng)絡(luò)領(lǐng)域中眾所周知的。TCP/IP是“傳輸控制協(xié)議/接口程序(TransportControl Protocol/Interface Program)的各單詞的詞首字母的縮寫。所討論的互聯(lián)網(wǎng)可以看成是一個通過計算機來執(zhí)行允許用戶在網(wǎng)絡(luò)上相互作用和共享信息實現(xiàn)相互連接的地理位置相互分開的遠程計算機網(wǎng)絡(luò)。因為共享了這類廣泛分散的信息,所以諸如因特網(wǎng)的遠程網(wǎng)絡(luò)一般都可以進一步發(fā)展成一個開放的系統(tǒng),使得開發(fā)者能夠,特別是沒有限制的條件下,來設(shè)計適用于執(zhí)行特殊操作和服務(wù)的軟件應(yīng)用程序。
于是,網(wǎng)絡(luò)的基礎(chǔ)架構(gòu)使得網(wǎng)絡(luò)的主機可以拓撲成客戶機/服務(wù)器、點對點(對等)、或者混合架構(gòu)?!翱蛻魴C”是一類或一組中的一個成員,它可使用與它無關(guān)的另一類或另一組的服務(wù)。于是,在計算中,一個客戶機是一個處理,例如,粗略地視為一組指令或任務(wù),它可申請另一程序來提供服務(wù)??蛻魴C的處理可以應(yīng)用所申請的服務(wù)而不一定需要了解其它程序或服務(wù)的本身所工作的細節(jié)。在客戶機/服務(wù)器的架構(gòu)中,尤其是在一種網(wǎng)絡(luò)系統(tǒng)中,客戶機一般都是一臺計算機,它能夠訪問由另一臺計算機,例如,一臺服務(wù)器,所提供的共享的網(wǎng)絡(luò)資源。在圖2所示的例子中,計算機110a、110b等等都可以視為客戶機,而計算機10a、10b等等都可視為服務(wù)器,這里服務(wù)器10a、10b等等都保持著隨后在客戶機計算機110a、110b等中復(fù)制的數(shù)據(jù)。
服務(wù)器一般是一個可以通過諸如因特網(wǎng)的遠程網(wǎng)絡(luò)訪問的遠程計算機系統(tǒng)??蛻魴C的處理可以在第一計算機系統(tǒng)中工作,而服務(wù)器的處理可以在第二計算機系統(tǒng)中工作,并且可以通過通訊媒介相互通訊,從而提供分布的功能并允許多個客戶機可以具有服務(wù)器的信息收集的功能。
客戶機和服務(wù)器相互間的通訊可采用由協(xié)議層所提供的功能。例如,超文本傳輸協(xié)議(Hypertext-Transfer Protocol(HTTP))是一個與環(huán)球網(wǎng)(WWW)連接所經(jīng)常使用的普通協(xié)議。典型的是,諸如通用資源定位器(URL)或因特網(wǎng)協(xié)議(IP)地址的計算機網(wǎng)絡(luò)地址都可以用于對服務(wù)器或客戶機計算機進行相互識別。網(wǎng)絡(luò)地址可以是通用資源定位器的地址。例如,可以通過通訊媒介來提供通訊。尤其是,客戶機和服務(wù)器可以通過TCP/IP的連接來實現(xiàn)相互耦合,以滿足大容量的通訊。
于是,圖2說明了一個典型的網(wǎng)絡(luò)化和分布式環(huán)境,其中服務(wù)器通過一個網(wǎng)絡(luò)/總線與客戶機計算機相通訊,在該環(huán)境中使用了本發(fā)明。更具體的說,根據(jù)本發(fā)明,多個服務(wù)器10a、10b等等通過一個網(wǎng)絡(luò)/總線14(可以是LAN、WAN、內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)等等)與多個客戶機和遠程計算設(shè)備110a、110b、110c、110d、110e等等(例如,便攜式計算機、手持式計算機、瘦型客戶機、網(wǎng)絡(luò)化家用電器,或者其它設(shè)備,例如,VCR、TV、微波爐、照明、加熱器、以及其它等等)相互連接。因此,可以期待本發(fā)明應(yīng)用于任何與它所希望處理、存儲和復(fù)制來自監(jiān)管源的安全內(nèi)容有關(guān)的計算設(shè)備。
在一個網(wǎng)絡(luò)環(huán)境中,通訊網(wǎng)絡(luò)/總線14可以是因特網(wǎng),例如,服務(wù)器10可以是環(huán)球網(wǎng)服務(wù)器,客戶機110a、110b、110c、110d、110e等都可以通過諸如HTTP等多種已知協(xié)議與服務(wù)器相通訊。服務(wù)器10也可以像客戶機110一樣服務(wù),也可以具有分布式計算環(huán)境的特性。如果合適的話,通訊可以是有線的或者是無線的??蛻魴C設(shè)備110的通訊可以通過也可以不通過通訊網(wǎng)絡(luò)/總線14,并且可以具有與此相關(guān)的獨立通訊。例如,在TV和VCR的情況,就可以具有或不具有與它們控制有關(guān)的網(wǎng)絡(luò)。各個客戶機計算機110和服務(wù)器計算機10都可以裝備各種應(yīng)用程序模塊或目標,并且可以連接或訪問各類存儲元件或目標,可以將文件存儲于這些存儲元件或目標,或者也可以將文件下載或移植到這些部分。于是,本發(fā)明可以應(yīng)用于具有能夠訪問計算機網(wǎng)絡(luò)/總線14并能與其交互作用的客戶機計算機110a、110b等以及能夠與客戶機計算機110a、110b等和其它設(shè)備111和數(shù)據(jù)庫20交互作用的服務(wù)器計算器10a、10b等的計算機環(huán)境。
數(shù)字版權(quán)管理(DRM)概述正如所知,現(xiàn)在參考圖11,有關(guān)數(shù)字內(nèi)容12,例如,數(shù)字語音、數(shù)字視頻、數(shù)字文本、數(shù)字數(shù)據(jù)、數(shù)字多媒體、等等,在這類數(shù)字內(nèi)容12發(fā)行到用戶的情況下,數(shù)字版權(quán)管理(DRM)和執(zhí)行都是非常需要的。一旦用戶接受到,這樣的用戶就可以借助于合適的復(fù)制設(shè)備,例如,在個人電腦14上的多媒體播放器等等,來復(fù)制和“播放”數(shù)字內(nèi)容。
典型的是,發(fā)行這類數(shù)字內(nèi)容12的內(nèi)容擁有者或者開發(fā)者(下文稱之為“擁有者”)都希望限制用戶再對這類發(fā)行的數(shù)字內(nèi)容做些什么。例如,內(nèi)容擁有者可以希望限制用戶為第二個用戶拷貝和再復(fù)制這類內(nèi)容12,或者可以希望允許所發(fā)行的數(shù)字內(nèi)容12只能播放有限的次數(shù),只能播放限定的總的次數(shù),只能在限定的機器上進行播放,只能在限定的媒體播放器上進行播放,只能由限定類型的用戶來播放,等等。
然而,在已經(jīng)發(fā)行之后,這類內(nèi)容擁有者幾乎不能對這類數(shù)字內(nèi)容12進行控制。而DRM系統(tǒng)10允許對任意形式的數(shù)字內(nèi)容12的復(fù)制或播放進行控制,其中這種控制是靈活的并且可以由這類數(shù)字內(nèi)容的內(nèi)容擁有者來限定。典型的是,內(nèi)容12可以通過任何合適的發(fā)行通道以包13的形式發(fā)行給用戶。作為發(fā)行的數(shù)字內(nèi)容包13可以包括采用對稱加密/解密密鑰(KD)(即,(KD(CONTENT)))進行加密的數(shù)字內(nèi)容12,以及標識該內(nèi)容、如何獲取該內(nèi)容的許可證、等等的其它信息。
基于監(jiān)管的DRM系統(tǒng)10允許數(shù)字內(nèi)容等等12的擁有者指定可以允許在用戶的計算設(shè)備14上復(fù)制這類數(shù)字內(nèi)容12之前必須滿足的特許規(guī)則。這類特許規(guī)則可以包括上述的時間要求,并且將其包含在一個數(shù)字許可證或者使用文件(下文稱之為“許可證”)16中,用戶/用戶計算設(shè)備14(下文中,該術(shù)語是可以相互交換的,除非環(huán)境另有需要)必須從內(nèi)容擁有者或其代理人那里才能獲得該許可證。這類許可證16也可以包括解密密鑰(KD),可用于解密也許是根據(jù)由用戶計算設(shè)備可解密的密鑰所加密的數(shù)字內(nèi)容。
一件數(shù)字內(nèi)容12的內(nèi)容擁有者必須確認用戶的計算設(shè)備14能夠遵守在許可證16中由該內(nèi)容擁有者所指定的規(guī)則和需求,即,數(shù)字內(nèi)容12如果不能滿足許可證16中的規(guī)則和需求就不能復(fù)制。于是,較佳的是,向用戶計算設(shè)備14提供一個監(jiān)管的元件和機制18,除非根據(jù)在與數(shù)字內(nèi)容12有關(guān)的許可證16中所嵌入的并且用戶可以獲得的特許規(guī)則,否則就不能復(fù)制數(shù)字內(nèi)容12。
監(jiān)管元件18一般具有一個許可證鑒別器20,它可以確定該許可證16是否有效,檢查在該有效許可證16中的規(guī)則和需求,并且在其它事情中以搜索的方式根據(jù)所檢查的特許規(guī)則和需求來確定申請的用戶是否具有復(fù)制所需要數(shù)字內(nèi)容12的權(quán)限。應(yīng)該理解的是,在DRM系統(tǒng)中委托許可證20鑒別器20根據(jù)在許可證16中的規(guī)則和需求來滿足數(shù)字內(nèi)容12擁有者的希望,以及用戶應(yīng)該不能為任何目的、惡意的或者其它輕易的變更這類監(jiān)管元件。
應(yīng)該理解的是,在許可證16中的規(guī)則和需求可以指定用戶是否可以根據(jù)幾種因素中的任一因素具有復(fù)制數(shù)字內(nèi)容12的權(quán)力,這幾種因素可以包括用戶是誰、用戶在哪兒、用戶所使用的是哪一種計算設(shè)備、什么復(fù)制應(yīng)用程序來調(diào)用DRM系統(tǒng),數(shù)據(jù)、時間等等。另外,許可證16的規(guī)則和需求可以將許可證16限制于,例如,預(yù)定數(shù)量的播放,或者預(yù)定的播放時間。
可以根據(jù)任何合適的語言和語法來指定在許可證16中的規(guī)則和需求。例如,可以簡單地限制語言所以必須滿足的特性和數(shù)值(例如,DATE必須大于X),或要求語言具有根據(jù)所限制的字符(例如,如果DATE大于X,則做…)的功能性能。
一旦許可證鑒別器20確定了該許可證16是有效的并且用戶滿足了其中的規(guī)則和需求,隨之就能夠復(fù)制該數(shù)字內(nèi)容12。尤其是,要復(fù)制內(nèi)容12,就必須從許可證16獲得解密密鑰(KD)并且應(yīng)用于來自內(nèi)容包13的(KD(CONTENT)),從而產(chǎn)生實質(zhì)的內(nèi)容12,因此,事實上復(fù)制了實質(zhì)的內(nèi)容12。
發(fā)行數(shù)字內(nèi)容圖3是一種用于發(fā)行數(shù)字內(nèi)容的系統(tǒng)和方法的功能方框圖?!鞍l(fā)行”,這里所使用的術(shù)語,是指申請和服務(wù)遵循的過程,以為所監(jiān)管的實體建立一組權(quán)限和條件,以便于該實體能夠發(fā)布該內(nèi)容,以及能夠發(fā)布給他們的權(quán)限和條件。根據(jù)本發(fā)明,發(fā)行過程可包括加密數(shù)字內(nèi)容并且將一系列內(nèi)容作者試圖實現(xiàn)的穩(wěn)定可執(zhí)行的權(quán)限與所有可能的內(nèi)容用戶相關(guān)聯(lián)。這一過程可以一種安全的方法來進行,以便于能夠禁止對任何權(quán)限或?qū)?nèi)容的訪問,除非內(nèi)容的作者自己試圖訪問。
特別是可以采用三種組織機構(gòu)來發(fā)行安全數(shù)字內(nèi)容一是在客戶機300上執(zhí)行的內(nèi)容準備程序302和準備用于發(fā)行的內(nèi)容,另一是也駐留在客戶機設(shè)備300上的數(shù)字版權(quán)管理(DRM)應(yīng)用程序接口(API)306,以及還有一個是通過通訊網(wǎng)絡(luò)330,例如,諸如因特網(wǎng)、局域或廣域網(wǎng)絡(luò)或者它們的組合的,與客戶機300進行通訊耦合的DRM服務(wù)器320。
內(nèi)容準備應(yīng)用程序302可以是產(chǎn)生數(shù)字內(nèi)容的任何應(yīng)用程序。例如,應(yīng)用302可以是字符處理器或者其它產(chǎn)生數(shù)字文本文件、數(shù)字音樂、視頻、或其它這類內(nèi)容的發(fā)行商。內(nèi)容也可以包括碼流式內(nèi)容,例如,在線的或盒帶式的碼流式音頻/視頻等。應(yīng)用程序302可以提供一個用密碼寫的密鑰,用于加密數(shù)字內(nèi)容,從而形成加密的數(shù)字內(nèi)容文件304,并且用戶可以具有與在數(shù)字內(nèi)容文件304中的加密內(nèi)容密切相關(guān)的權(quán)限數(shù)據(jù)。該權(quán)限數(shù)據(jù)包括了在數(shù)字內(nèi)容中具有權(quán)限的各個實體,以及一組適用于各自標識實體的權(quán)限和條件。
這類實體可以是,例如,一個個人,一類個人或者一個設(shè)備。這類權(quán)限可以包括可用于數(shù)字內(nèi)容的讀取、編輯、拷貝、打印等等權(quán)限。條件可以包括最小系統(tǒng)需求、數(shù)據(jù)和時間的限制、播放的次數(shù),以及其它等等。
客戶機API 306通過加密的數(shù)字內(nèi)容并且將具有權(quán)限的數(shù)據(jù)輸入到DRM服務(wù)器320。使用以下所詳細描述的處理過程,DRM服務(wù)器320就能確定它是否能夠執(zhí)行具有權(quán)限的數(shù)據(jù),并且如果是的話,DRM服務(wù)器320簽署權(quán)限數(shù)據(jù),從而形成了一個簽名的權(quán)限標簽(SRL)308。然而,一般來說,任何所監(jiān)管的實體都能夠簽署權(quán)限數(shù)據(jù),較佳的是采用由DRM服務(wù)器320所確認的密鑰來簽署。例如,客戶機可以使用一個由DRM服務(wù)器320提供給它的密鑰來簽署權(quán)限數(shù)據(jù)。
權(quán)限標簽308可以包括表示權(quán)限描述、加密內(nèi)容的密鑰、以及在權(quán)限描述和加密內(nèi)容密鑰上的數(shù)字簽名的數(shù)據(jù)。如果DRM服務(wù)器320正在簽署權(quán)限標簽,則它使所簽署的權(quán)限標簽308通過客戶機API306返回到客戶機了,將該標簽存儲于在客戶機設(shè)備300中。內(nèi)容準備程序302使所簽署的權(quán)限標簽308與加密的數(shù)字內(nèi)容文件304相關(guān)聯(lián),例如,使之串起來,以形成一個權(quán)限管理的內(nèi)容文件310。然而,值得注意的是,SRL 308能夠存儲于與內(nèi)容文件304隔開的已知位置上,將參考SRL 308使內(nèi)容文件304串起來,從而產(chǎn)生內(nèi)容文件310。
現(xiàn)在,參考圖4,圖4顯示了一種用于發(fā)行具有權(quán)限管理的數(shù)字內(nèi)容的方法。在步驟402,一個應(yīng)用程序302產(chǎn)生一個可以用于加密數(shù)字內(nèi)容的內(nèi)容密鑰(CK)。盡管任何密鑰都可以用于加密數(shù)字內(nèi)容,但是,該內(nèi)容密鑰(CK)典型的是一個對稱密鑰。正如眾所周知的,采用一個對稱的密鑰,可以通過一個對稱密鑰算法來進行加密和解密。因此,在發(fā)送方和接受方之間共享時,(CK)應(yīng)該能較好地隱藏起來。
在步驟404,應(yīng)用程序302采用(CK)來加密數(shù)字內(nèi)容,以形成加密的數(shù)字內(nèi)容304(例如,(CK(content))。因此,就由內(nèi)容的發(fā)行商或者由其它實體產(chǎn)生了對應(yīng)于CK(content))的權(quán)限數(shù)據(jù)。值得注意的是,這類權(quán)限數(shù)據(jù)可以是用戶的權(quán)限數(shù)據(jù)和從預(yù)先定義的模板中所獲得權(quán)限數(shù)據(jù)。正如以上所討論的,該權(quán)限數(shù)據(jù)可以包括一系列構(gòu)成授權(quán)消費該內(nèi)容的實體、指定各個實體進行與內(nèi)容有關(guān)的處理的權(quán)限,以及可能會影響這些權(quán)限的任何條件的列表。
在步驟406,API 306產(chǎn)生了一個第二加密密鑰(DES1),它是用于加密內(nèi)容的密鑰(CK)。較佳的是,(DES1)也是一個對稱的密鑰。在步驟408,API 306用(DES1)加密(CK)而產(chǎn)生(DES1(CK))。在步驟410,API 306放棄了(CK),因為現(xiàn)在只能通過解密(DES1(CK))來獲得(CK)。為了能確保(CK(content))能保護中央DRM服務(wù)器320并且根據(jù)權(quán)限數(shù)據(jù)集中對內(nèi)容進行“許可證申請”,所以,在步驟412,API 306只與提供服務(wù)的DRM服務(wù)器320相接觸并且重新找到公共密鑰(PU-DRM)。在步驟414,API 306采用(PU-DRM)來加密(DES1)。以形成(PU-DRM(DES1))。于是,就將(CK)保護在(PU-DRM(DES1))中,從而確保DRM服務(wù)器320是一個能夠訪問(CK)并能根據(jù)要求來解密(CK(content))的唯一實體。在步驟416,API 306采用(DES1)加密權(quán)限數(shù)據(jù)(例如,被授權(quán)實體的列表以及與在列表中的各個授權(quán)機構(gòu)有關(guān)的各個權(quán)限和條件),以產(chǎn)生(DES1(權(quán)限數(shù)據(jù)))。
在另一實施例中,(CK)可以用于直接加密權(quán)限數(shù)據(jù),以產(chǎn)生(CK(權(quán)限數(shù)據(jù))),并且(PU-DRM)可以用于直接加密(CK),以產(chǎn)生(PU-DRM(CK)),從而完成(DES1)的上述使用。然而,使用(DES1)來加密權(quán)限數(shù)據(jù)和(CK)允許這類(DES1)能夠兼容任何也許能適合于DRM服務(wù)器的特殊算法,但是,(CK)可以由一個獨立于DRM服務(wù)器的實體來指定并且可能不適合于它。
在步驟418,內(nèi)容保護應(yīng)用程序302將(PU-DRM(DES1))和(DES1(權(quán)限數(shù)據(jù)))提交給DRM服務(wù)器320,作為用于簽名的權(quán)限標簽。另一種可替換的方法是,客戶機自身可以采用以下所闡述的方法來簽署權(quán)限數(shù)據(jù)。如果正在提交給服務(wù)器用于簽名的權(quán)限數(shù)據(jù),那么在步驟420,DRM服務(wù)器320就訪問權(quán)限數(shù)據(jù)并且驗證它是否能夠執(zhí)行在所提交的權(quán)限數(shù)據(jù)中的權(quán)限和條件。為了驗證了它能夠執(zhí)行該權(quán)限數(shù)據(jù),則DRM服務(wù)器320就將對應(yīng)于(PU-DRM)的私鑰(PR-DRM)應(yīng)用于(PU-DRM(DES1)),以產(chǎn)生(DES1),并隨后將(DES1)應(yīng)用于(DES1(權(quán)限數(shù)據(jù)),以用明文來產(chǎn)生權(quán)限數(shù)據(jù)。隨后,服務(wù)器320能夠進行任何策略性校驗,以驗證在權(quán)限數(shù)據(jù)中所指定的用戶、權(quán)限、以及條件是在由服務(wù)器320所執(zhí)行的任何策略內(nèi)。服務(wù)器320簽署原始提交的包括(PU-DRM(DES1))和(DES1(權(quán)限數(shù)據(jù)))的權(quán)限標簽,以產(chǎn)生一個簽名的權(quán)限標簽(SRL)308,其中,該簽名是基于DRM服務(wù)器320的私鑰(PR-DRM),并且將SRL 308返回到API 306,由API 306將所返回的SRL 308傳輸至客戶機的應(yīng)用程序302。
SRL 308是一個數(shù)字簽名的文檔,這使得文檔能夠防篡改。因此,SRL 308是與加密內(nèi)容所實際使用的密鑰類型和算法無關(guān)的,但是它對所要保護的內(nèi)容保持著穩(wěn)定的1-1的成員關(guān)系?,F(xiàn)在參考圖4A,在本發(fā)明的一個實施例中,SRL 308可以包括作為SRL 308的基礎(chǔ)的內(nèi)容的信息,也許可包括該內(nèi)容的ID;關(guān)于簽署SRL 308的DMR服務(wù)器的信息,可包括(PU-DRM(DES1))信息以及其它參考信息,例如,用于確定DRM服務(wù)器在網(wǎng)絡(luò)中的位置的URL信息和如果URL失敗的返回信息;描述SRL 308自身的信息;(DES1(權(quán)限數(shù)據(jù)))(DES1(CK));以及一個數(shù)字簽名(S(PR-DRM))等等。
通過確保所監(jiān)管的實體簽署的權(quán)限數(shù)據(jù)能夠產(chǎn)生一個簽名的權(quán)限標簽308,DRM服務(wù)器320就能夠斷定它能夠根據(jù)由發(fā)行商所規(guī)定的項目發(fā)布用于該內(nèi)容的許可證,正如在權(quán)限標簽308的權(quán)限數(shù)據(jù)中所述的。應(yīng)該理解的是,要求用戶獲得復(fù)制內(nèi)容的許可證,特別是,因為許可證包含了內(nèi)容的密鑰(CK)。當用戶希望獲得適用于加密內(nèi)容的許可證時,用戶就可以提交許可證申請,該申請可以包括適用于內(nèi)容的SRL 308和授權(quán)DRM服務(wù)器320和其它許可證頒發(fā)機構(gòu)驗證用戶的信用證。許可證頒發(fā)機構(gòu)隨后可以加密(PU-DRM(DES1))和(DES1(權(quán)限數(shù)據(jù))),以產(chǎn)生權(quán)限數(shù)據(jù),列出所有由作者(如果有的話)對許可證申請實體所授于的權(quán)限,以及構(gòu)成只具有所指定權(quán)限的許可證。
正如以上所闡述的,一旦應(yīng)用程序302接受到SRL 308之后,這類應(yīng)用程序302就將簽名的權(quán)限標簽308與所對應(yīng)的(Ck(content))304相串起來,以形成權(quán)限管理的數(shù)字內(nèi)容??商鎿Q的是,權(quán)限數(shù)據(jù)可參考加密數(shù)字數(shù)據(jù)所提供的位置存儲于一個已知的位置上。于是,由DRM允許的復(fù)制應(yīng)用程序就可以通過復(fù)制應(yīng)用程序所試圖復(fù)制的一段內(nèi)容來發(fā)現(xiàn)該簽名的權(quán)限標簽308。這一發(fā)現(xiàn)可以觸發(fā)復(fù)制應(yīng)用程序?qū)RM許可證服務(wù)器320進行許可證申請的初始化。發(fā)行應(yīng)用程序302能夠?qū)RL存儲于諸如DRM許可證服務(wù)器320,或者DRM服務(wù)器320可以在將它自己的URL作為一段元數(shù)據(jù)在對權(quán)限標簽數(shù)字簽名之前嵌入到權(quán)限標簽中,使得復(fù)制應(yīng)用程序所調(diào)用的DRM客戶機API 306能夠識別正確的DRM許可證服務(wù)器320。
獲得適用于發(fā)行內(nèi)容的許可證現(xiàn)在參考圖5,圖5顯示了一個適用于特許權(quán)限管理的數(shù)字內(nèi)容的系統(tǒng)和方法?!疤卦S”,本文所使用的術(shù)語,是指應(yīng)用程序和服務(wù)器從事申請和接受許可證且該許可證能夠使在許可證中登記注冊的實體可以根據(jù)在許可證中所指定的條目來消費內(nèi)容的處理過程。輸入該特許處理的過程可以包括與適用于申請許可證的內(nèi)容相關(guān)聯(lián)的簽了名的權(quán)限標簽(SRL)308,以及適用于申請許可證的實體的公共密鑰的授權(quán)證書。值得注意的是,并不一定需要該申請許可證的實體是正在申請許可證的實體。典型的是,一個許可證可以包括由SRL 308所描述的權(quán)限,一個能夠解密所加密內(nèi)容的加密密鑰,以及一個在權(quán)限描述上的數(shù)字簽名和申明其合法性和防止篡改的加密密鑰。
預(yù)備步驟是,客戶機API 306先將權(quán)限管理內(nèi)容310中所簽署的權(quán)限標簽308通過通訊網(wǎng)絡(luò)330轉(zhuǎn)發(fā)至DRM服務(wù)器320。正如以上所討論的,權(quán)限標簽308可包含根據(jù)DRM服務(wù)器320的公共密鑰(PU-DRM)來加密的內(nèi)容密鑰(CK)(即,(PU-DRM(CK))。然后,在發(fā)布許可證的處理過程中,DRM服務(wù)器320將(PR-DRM)應(yīng)用于(PU-DRM(CK)),以獲得(CK)。于是,就可使用在公共密鑰授權(quán)證書中的公共密鑰(PU-ENTITY),該密鑰在申請重新-加密(CK)(即,(PU-ENTITY(CK))的許可證中是不被理會的。該新加密的(PU-ENTITY(CK))隨后放置于許可證中。于是,該許可證就能在沒有過多暴露(CK)的情況下返回至調(diào)用器,因為只有保持著對應(yīng)于(PU-ENTITY)的私鑰(PR-ENTITY)的擁有者才能夠從(PU-ENTITY(CK))中恢復(fù)(CK)。隨后,客戶機API 306使用(CK)來解密所加密的內(nèi)容,以形成解密的數(shù)字內(nèi)容312??蛻魴C應(yīng)用程序302可隨后根據(jù)在許可證中所提供的權(quán)限來使用解密后的數(shù)字內(nèi)容312。
另外,正如以下所詳細闡述的,諸如進行發(fā)行的客戶機可以,例如,向它自己發(fā)布消費該內(nèi)容的使用許可證。
現(xiàn)在參考圖6A和圖6B,顯示了特許權(quán)限管理的數(shù)字內(nèi)容的方法。在步驟602,一個許可證發(fā)布機構(gòu),例如,一個DRM服務(wù)器320,可以接受一個許可證申請,該許可證的申請可以包括用于一個和多個所申請許可證的一個公共密鑰的授權(quán)和一個標識。粗略的說,如果指定了一個標識的話,則DRM服務(wù)器320就可以從目錄、數(shù)據(jù)庫、或者其它等等中產(chǎn)生一個對應(yīng)的公共密鑰授權(quán)。如果一個所申請的許可證僅僅只適用于一個許可證,則就只命名一個授權(quán)證或標識。如果所申請的許可證是可適用于多個許可證,就可以對各個潛在的許可證命名一個授權(quán)證或一個標識。在步驟604,如果需要的話,可以授權(quán)于申請的實體(例如,提出許可證申請的實體)。在步驟606,如果也是需要的話,就確定該實體是否允許申請許可證。
在步驟608,如果發(fā)布機構(gòu)確定在許可證申請中沒有包括公共密鑰的授權(quán)證,則發(fā)布機構(gòu)就可以使用所指定的標識在目錄服務(wù)或數(shù)據(jù)庫中進行查找合適公共密鑰的授權(quán)證。在步驟610,發(fā)布機構(gòu)確定在目錄中有授權(quán)證,則在步驟612,就重新恢復(fù)該授權(quán)證。如果在申請或在目錄中都沒有發(fā)現(xiàn)適用于一個給定的潛在領(lǐng)許可證者的授權(quán)證,則許可證服務(wù)器就不能產(chǎn)生適用于該潛在領(lǐng)許可證者的許可證,因此,在步驟614,就向申請機構(gòu)發(fā)出一個出錯的信息。
假定DRM服務(wù)器320具有適用于至少一個潛在領(lǐng)許可證者的公共密鑰的授權(quán)證的話,則在步驟616,該DRM服務(wù)器320就使得各個領(lǐng)許可證者的授權(quán)證的信用有效。如果是無效的話,DRM服務(wù)器320就確定領(lǐng)許可證者的授權(quán)證的發(fā)布者沒有在委托發(fā)布者的列表中,那么該領(lǐng)許可證者的申請也就失敗,并且在步驟614產(chǎn)生出錯。于是,由委托發(fā)布者未發(fā)布授權(quán)證的任何潛在的領(lǐng)許可證者都不能接受到許可證。
另外,DRM服務(wù)器320對來自委托發(fā)布者的授權(quán)鏈中的所有實體較佳地執(zhí)行數(shù)字簽名確認,以授權(quán)各個許可證獲得者各個密鑰授權(quán)證。確認在鏈中的數(shù)字簽名的處理過程是采用眾所周知的算法。如果適用于一個給定潛在的許可證獲得者的公共密鑰授權(quán)證是無效的,或者在鏈中的授權(quán)證不能有效,則該潛在的許可證獲得者不能被信任,因此,就不能向該潛在的許可證獲得者發(fā)布許可證。否則,在步驟618,就可發(fā)布一個許可證。在步驟620重復(fù)該處理過程,直至都已經(jīng)處理完了所有已經(jīng)申請許可證的實體。
正如圖6所示,DRM服務(wù)器320開始確認在許可證申請中所接受到的簽名權(quán)限標簽308。在一個實施例中,DRM服務(wù)器320有一個對每一個權(quán)限標簽簽名的主拷貝。在特許的時間(在步驟622),DRM服務(wù)器320可以恢復(fù)該主權(quán)限標簽的拷貝。主權(quán)限標簽可以具有比在許可證申請中所發(fā)送的權(quán)限標簽拷貝更多的數(shù)據(jù),因此,可以作為產(chǎn)生所申請許可證使用的權(quán)限標簽。如果在DRM服務(wù)器中沒有發(fā)現(xiàn)主權(quán)限標簽,則在步驟624,根據(jù)預(yù)先所規(guī)定的策略來確定是否基于在申請中的權(quán)限標簽發(fā)布許可證。如果該策略是不允許的,則在步驟626,中止該許可證申請,并且在步驟628向API發(fā)送一個出錯信息。
在步驟630,DRM服務(wù)器320確認SRL并且指定它的數(shù)字簽名。如果SRL 308沒有被確認,則在步驟626,中止該許可證申請,并且在步驟628向API 306發(fā)送一個出錯信息。
在所有的確認都完成之后,DRM服務(wù)器就根據(jù)SRL 308來構(gòu)成一個許可證,它可適用于各個所批準的許可證。在步驟632,DRM服務(wù)器320對各個許可證產(chǎn)生適用于需要發(fā)布許可證的各個權(quán)限描述。對各個許可證來說,DRM服務(wù)器320針對在權(quán)限標簽中的權(quán)限描述所命名的標識來驗證在許可證的公共密鑰授權(quán)證中所命名的標識。在步驟636,DRM服務(wù)器320從SRL 308中獲得(PU-DRM(DES1))和(DES1(CK)),并且將(PR-ENTITY)應(yīng)用于所獲得的(CK)。隨后,發(fā)布機構(gòu)使用許可證獲得者的公共密鑰授權(quán)證中得到的(PU-ENTITY)重新加密(CK),以形成(PU-ENTITY(CK))。在步驟638,DRM服務(wù)器320將(PU-ENTITY(CK))所產(chǎn)生的權(quán)限描述與數(shù)字簽名串起來,從而形成了使用(PR-DRM)的數(shù)據(jù)結(jié)構(gòu)(即,S(PR-DRM))。該簽名數(shù)據(jù)結(jié)構(gòu)隨后作為適用于該特殊許可證獲得者的許可證。
在步驟640,DRM服務(wù)器320確定不需要為特殊申請產(chǎn)生更多的許可證。隨后,在步驟642,將所產(chǎn)生的許可證與一個被批準的授權(quán)證鏈一起返回給申請的實體,該授權(quán)證鏈約束了返回給受委托部分的許可證。
利用目錄的特許在發(fā)行用于保護內(nèi)容的許可證時,許可證發(fā)行機構(gòu)(下文稱之為“許可證頒發(fā)者”)考慮由內(nèi)容所發(fā)送的SRL 308,以確定適用于哪一個用戶/組/群/部門/平臺/等等(下文稱之為“機構(gòu)”)是需要提供權(quán)限的,并且發(fā)送授權(quán)證以標識許可證的申請者。據(jù)此,許可證頒發(fā)者確定在SRL 308中所列舉的那些權(quán)限是可以頒發(fā)給申請者的。接著,許可證頒發(fā)者檢查在SRL 308中所列的實體,并且將這些實體與申請者相比較。如果SRL 308指定了有一個特殊的組來接受一個許可證并且該申請者是該組中的一個成員,則申請者就能夠獲得一個具有如同SRL 308中對該組所闡述權(quán)限的許可證。同樣,如果SRL 308指定了一個特殊的用戶來接受一個許可證并且該申請者就是這個用戶,則申請者就能夠獲得一個具有如同SRL 308中對該用戶所闡述權(quán)限的許可證。應(yīng)該理解的是,一個特殊的SRL 308可以列出幾個實體以及其權(quán)限,并且一個特殊的申請者可以獲得一個基于作為一個和多個實體成員的許可證。
在本發(fā)明的一個實施例中,正如圖7所示,利用一個標識符1204可以在所發(fā)送的授權(quán)證1202中標識申請者,其中,標識符1204例如可以只是一個別名,通過該別名就可以在一個組織的目錄1206中標識該申請者。進而,SRL 308就可根據(jù)這樣一個標識符1204列出各個權(quán)限授于實體。于是,作為對許可證1208申請的一部分,許可證頒發(fā)者1210,典型的是一個DRM服務(wù)器320,就可以從授權(quán)證1202中獲得該申請者的標識符1204,并且將該標識符1204與在所發(fā)送的SRL 308中所列的所有標識符1204相比較。如果發(fā)現(xiàn)相匹配,則許可證頒發(fā)者1210就向該申請者頒發(fā)一個適用于該申請者的標識符1204并具有在SRL 308中所指定權(quán)限的許可證1208。
此外,利用目錄1206的有效性,許可證頒發(fā)者1210也可以確定申請者是否是在SRL 308中所列出的任何其它實體的成員,假定目錄1206包含了能夠適當反映在各種這類其它實體中的申請者成員狀態(tài)的交叉參考信息。典型的是,目錄1206不僅列出了各個申請者的標識符1204,還列出了申請者是其成員的各個組/群/部分/平臺/其它機構(gòu)/等等的標識符1208。值得注意的是,目錄1206可以包括多個標識符1208,例如,一個郵件地址,另一個郵件地址,一個ID,另一個ID,一個組的成員關(guān)系,一個歷史上所用的標識符,以及/或者其它等等。
利用從具有標識符1204的申請者接受到的授權(quán)證1202和從申請者接受到的SRL 308中所得到的權(quán)限,一般來說,許可證頒發(fā)者1210就能夠向申請者頒發(fā)許可證1208,如果除其它事情外,能從目錄中來確定該申請者是一個在SRL 308中所列出的任何實體的成員的話。如果是,并假定滿足適用于許可證的所有其它條件,則許可證頒發(fā)者1210就向申請者頒發(fā)一個許可證,該許可證可具有適用于指定為從SRL 308所獲得的列出實體的權(quán)限和條件。
在本發(fā)明的一個實施例中,在SRL 308中列出的一個實體可以表示為某些個體的一組或一群或其它集合(下文中稱之為“組”),其中各個組都可以在目錄1206中進行適當?shù)臉俗R。這類組可以包括一個開放郵件組,例如,一個分布的列表或一個郵件的入口,或者一個諸如在網(wǎng)絡(luò)操作系統(tǒng)的連接中可定義的安全組,以及其它等等。
值得注意的是,在SRL 308中根據(jù)組所指定的權(quán)限和根據(jù)組的向申請者所頒發(fā)的許可證1208都能夠?qū)崿F(xiàn)在一個企業(yè)和組織結(jié)構(gòu)內(nèi)部的數(shù)字版權(quán)的管理。例如,一個文檔和電子郵件可以采用DRM保護,使得一個給定部門內(nèi)的所有成員都可以具有讀取該文檔和電子郵件的權(quán)限。假定,在一個組織的目錄1206中存在著適用于該部門的一個組(例如,電子郵件的別名),這是一種最普遍的情況,文檔或電子郵件的作者可以根據(jù)組而不是個體來授于權(quán)限。應(yīng)該理解的是,這類面向組授于權(quán)限的優(yōu)點包括便于作者在指定具有權(quán)限個體的分類中使用。另外,通過根據(jù)組來指定權(quán)限,當新的成員加入該組或老的成員離開該組時,所指定的權(quán)限就不會變成“過時的”。因此,只有該組的成員關(guān)系繼續(xù)保持在組織目錄1206中,該組所有目前的成員都能行使這些權(quán)限。
確定申請者是否是組的成員典型的是,目錄1206是一個有用信息的資料庫,它包含了對該組織或其部分感興趣的信息。特別是,目錄1206保持著一些有關(guān)各個用戶在該組織中以及包括用戶所保持成員關(guān)系的每一個組的重要信息。事實上,在目錄1206根據(jù)用戶所列出的部分至少是可以定義這類用戶的成員關(guān)系。
值得注意的是,在組織特別大以及需要的情況下,對該組織的計算可以一些邏輯方式分成多個部門或“分支”。例如,各個分支都可以是一個基于地理位置的基層組織,例如,該組織在Pennsylvania的Wikes-Barre有一個辦公室,還在Florida的Boynton有另外一個辦公室,在這種情況下,各個這樣的辦公室都可以作為一個獨立的分支。另外,例如,各個分支都可以是一個基于功能的基層組織,例如,該組織具有一個會計部門或一個產(chǎn)品部門,在這種情況下,各個這類部門都可以作為一個獨立的分支。當然,分支可以根據(jù)任何其它條件來定義,這些都不脫離本發(fā)明的精神和范圍。
意味深長的是,假定各個分支都具有它自己的目錄1206和目錄組1206(下文中稱之為“目錄1206”),并且各個分支都具有至少一個DRM服務(wù)器320?,F(xiàn)在,參考圖8,顯示了一個組織有兩個分支,分支A和分支B,其中,分支A具有一個目錄A和一個DRM服務(wù)器A,而分支B具有一個目錄B和一個DRM服務(wù)器B。值得注意的是,各個分支都作為一個保護的領(lǐng)地來工作,在該領(lǐng)地中配置了相對應(yīng)的目錄和DRM服務(wù)器。于是,至少從安全的觀點出發(fā),在分支A中的DRM服務(wù)器A應(yīng)該能夠比較方便地訪問在目錄A中的信息,而還是從安全的觀點出發(fā),在分支B中DRM服務(wù)器B近乎也能夠比較方便地訪問在分支A中的目錄A中的信息。然而,值得注意的是,多個具有相互操作需要的分支一般都可以復(fù)制在它們之間的信息并且可以有選擇性地在它們之間建立相互信任的成員關(guān)系。
分支中組成員關(guān)系的確定假定在某一瞬間,并不存在著由圖8的分支A和圖8的分支B所表示的組織總數(shù),應(yīng)該理解的是,分支A的目錄A包含了有關(guān)該組織的所有目錄信息,它包括了所有用戶和用戶所歸屬的所有組。值得注意的是,這里,這類組實際上可以包括多種層次的組。于是,正如圖9所示,在這種情況下,組1具有一個作為直接成員的組2和組3,并且組3可以具有作為直接成員的用戶1。在這種情況下,用戶1是組3的一個直接成員、是組1的一個間接成員,但不是組2的一個成員。正如可以理解的那樣,如果一個SRL 308列出了適用于組1或3成員的權(quán)限,假定滿足可所有的其它條件,用戶1就可以根據(jù)該權(quán)限獲得一個許可證1208,而如果SRL 308只列出了適用于組2成員的權(quán)限,則用戶1就不可能獲得這類許可證1208。更具體的說,是SRL 308中所命名組的一個直接或間接成員的用戶能夠獲得一個具有準予該組使用的權(quán)限和條件的許可證。
正如圖10所示,顯示了在目錄A中對各個組1至3和用戶1所記錄的目標/記錄。值得注意的是,各個記錄都以列表的形式記錄各個實體并包括該實體的所有直接成員(假定,該實體是組)和該實體所具有的所有直接成員關(guān)系,無論該機構(gòu)是用戶還是另一個組中的一個子組。于是,組1具有作為其直接成員的組2和組3并且不是任何其它組的一個直接成員,組2沒有成員并且是組1的一個直接成員,組3具有直接成員的用戶1并且還是組1的一個直接成員,用戶1作為一個用戶沒有任何成員但是組3的一個直接成員。當然,圖9和圖10所示的目錄A過于粗略和簡單,但在實質(zhì)上,這非常類似于具有許多用戶和組的目錄。不論怎么說,所示的這類目錄A可適用于本發(fā)明的討論目的。
在用戶1向DRM服務(wù)器A提交了一個SRL 308的過程中,所提交的SRL 308列出了一個和多個組以及它們的權(quán)限,因此。DRM服務(wù)器A至少是能夠部分根據(jù)目錄A來確定用戶1是否是在SRL 308所列出的任何組的一個直接或間接成員,從而決定是否向用戶1發(fā)行許可證1208。正如所能理解的那樣,這種確定可以采用兩種常用方法中的任一方法來執(zhí)行,一是從所列的組來確定用戶,另一是從用戶來確定所列的組。
執(zhí)行從組到用戶的確定是一種典型的更為直截了當?shù)奶幚矸椒?,但是由于組可以具有許多成員,因此它就必須花相當多的時間來檢查所發(fā)現(xiàn)的所有用戶以確定是否存在著一個相匹配的。執(zhí)行從用戶到組的確定是一種典型的非直截了當?shù)姆椒?,但是由于一個用戶通常不會是一個太多組的成員,這就可以花相對較少的時間來檢查所發(fā)現(xiàn)的所有組以確定是否存在著一個相匹配的。在許多情況下,至少是從經(jīng)驗上已經(jīng)發(fā)現(xiàn)了執(zhí)行從用戶到組的確定在整體上顯示更加經(jīng)濟和合意。
繼續(xù)參考圖9和圖10,現(xiàn)在也可以參考圖12,來產(chǎn)生一個確定與用戶是組1的一個成員有關(guān)的組成員確定,隨后,DRM服務(wù)器A可進行下列處理。在預(yù)先準備的步驟,DRM服務(wù)器A訊問目錄A是否存在著組1(步驟1201)。正如可以理解的那樣,如果對這類訊問響應(yīng)顯示組1并不存在,則處理過程就結(jié)束,因為用戶1不能夠成為一個不存在組的成員(步驟1203)。于是,不論從用戶到組所執(zhí)行的確定的事實如何,都需要執(zhí)行訊問是否存在這組的預(yù)先準備步驟,如果不需要的話,可避免執(zhí)行任何其它步驟。
當然,正如所顯示的,組1確實存在,則事實上就需要對它響應(yīng)。于是,DRM服務(wù)器A就訊問適用于所有組的目錄A用戶1是否是其一個成員并且目錄A返回用戶1是組3的一個成員的信息(步驟1205,1207)。當然,組3并不是組1,所以DRM服務(wù)器A還不能確定用戶1是否是組1的一個成員(步驟1209)。不過,DRM服務(wù)器A必須繼續(xù),只要所處的情況是,通過用戶1是組3的直接成員并且組3是組1的直接和間接成員,之后又可能發(fā)現(xiàn)用戶1還是組1的一個間接成員。
DRM服務(wù)器A繼續(xù)訊問適用于所有組的目錄A組3是其成員嗎,并且目錄A返回組3是組1的一個成員的信息(步驟1211,1213)。因此,DRM服務(wù)器A已經(jīng)通過用戶1是組3的一個成員來確定用戶1事實上是組1的一個間接成員(步驟1215)。
正如現(xiàn)在所應(yīng)該理解的那樣,DRM服務(wù)器A可能不得不通過這么多的組和這么多的循環(huán)的重復(fù)訊問,來最后確定用戶1事實上是組1的一個成員。另外,如果所處的情況是用戶1事實上不是組1的成員,則DRM服務(wù)器A不得不在最后確定用戶1不是組1的一個成員之前,通過對用戶1的所有可能組成員的整體來訊問是否是直接和間接的成員。正如以下更詳細的討論那樣,因為這類訊問可以是非常昂貴的并且可以在連續(xù)的基礎(chǔ)上執(zhí)行,這類探索的結(jié)果可以存儲于一個或多個高速緩存存儲器中。
組成員關(guān)系確定跨分支當一個組織具有多個配置的分支,并且需要用戶和組的成員關(guān)系信息可越過分支邊界供使用時,沒有直截了當?shù)姆椒▉泶_定一個用戶與一個特殊組相關(guān)的組成員關(guān)系,特別是當所訊問的DRM服務(wù)器320處于不能自然保持在目錄中所需要的信息的時候。但是,DRM服務(wù)器320卻必須考慮確實保持了這類信息的另一個分支。
特別是,一種感興趣的情況是,要求諸如圖8所示的DRM服務(wù)器A的DRM服務(wù)器320,能夠根據(jù)列出一個組的SRL 308向用戶發(fā)行一個許可證,而該組并不屬于駐留在DRM服務(wù)器A中的分支A。相反,這類組是屬于分支B并因此在分支B的目錄B中有該組的記錄。其結(jié)果是,就必須對有關(guān)分支B的目錄B進行與正在討論用戶是否是正在討論組的成員有關(guān)的組成員關(guān)系確定,因為這類目標具有針對正在討論組以及針對該組的組信息的記錄。
然而,明顯的是,分支A的DRM服務(wù)器A一般不能直接訊問分支B的目錄B以獲得大量直接信息,因為這類跨分支的訊問通常受到限制或阻止脫離所關(guān)注的安全問題。相反,在本發(fā)明的一個實施例中,DRM服務(wù)器A要求分支B的DRM服務(wù)器B來訊問分支B的目錄B并且向DRM服務(wù)器A報告其訊問的結(jié)果。值得注意的是,DRM服務(wù)器B對目錄B的訊問并不是一種跨分支的訊問,因此就不受對它的限制。
必須理解的是,DRM服務(wù)器A在要求DRM服務(wù)器B進行訊問之前,必須真實的了解DRM服務(wù)器B是事實上最適合于進行訊問的DRM服務(wù)器320,因為正在討論組是屬于分支B的。為了更加簡化,DRM服務(wù)器A必須在要求DRM服務(wù)器B直接訊問目錄B之前知道正在討論組是屬于分支B的。然而,DRM服務(wù)器A僅僅只能訊問目錄A,因此就不能了解到正在討論組所屬于的分支,除非該目錄A具有這樣的信息。
因此,并且在本發(fā)明的一個實施例中,目錄A確實不具有這類信息,正如圖8所示。特別是,目錄A具有一個適用于正在討論組的指針目標,它將與正在討論組有關(guān)的任何訊問實體都指向分支B。這類指針目標可以包括例如分支B的地址,在DRM服務(wù)器A需要有關(guān)正在討論組的信息時,上述地址可以返回到發(fā)出訊問的DRM服務(wù)器A。預(yù)先假定,分支B的目錄B具有用于正在討論組的記錄目標。于是,DRM服務(wù)器A可以采用該地址來發(fā)現(xiàn)分支B并且從那里繼續(xù)下去。
在本發(fā)明的一個實施例中,尤其是,分支B的地址是在分支B中的目錄B的地址。具有這類地址的這類DRM服務(wù)器A都可以據(jù)此與目錄B相接觸。然而,由于DRM服務(wù)器A是在分支A中,而目錄B是在分支B中,正如以上所間接提到的,目錄B通常是不能向DRM服務(wù)器A提供任何大量跨分支的信息。不過,目錄B可以向DRM服務(wù)器A提供DRM服務(wù)器B的地址。
因此,在本發(fā)明的一個實施例中,DRM服務(wù)器A從目錄B接受到DRM服務(wù)器B的地址,并且根據(jù)該地址要求DRM服務(wù)器B能代表DRM服務(wù)器A來訊問目錄B。特別是,DRM服務(wù)器A要求DRM服務(wù)器B來訊問正在討論的用戶是否是正在討論組的一個成員,并且向DRM服務(wù)器A返回該答案。預(yù)先假定,這類要求可以包括一些類型的DRM服務(wù)器A的標識作為DRM領(lǐng)域中的DRM服務(wù)器320,例如,將授權(quán)鏈中所標識的授權(quán)證引導(dǎo)到授權(quán)的監(jiān)管層中作為又DRM服務(wù)器B所識別的。因此,只要所標識的授權(quán)證得到了確認,DRM服務(wù)器B就可代表DRM服務(wù)器A來執(zhí)行目錄B的訊問。
假定DRM服務(wù)器B確實代表了DRM服務(wù)器A來執(zhí)行對目錄B的訊問,例如,可以上述有關(guān)圖12所闡述的方式,DRM服務(wù)器B最后確定正在討論的用戶是否是正在討論組的一個成員,并且將該信息返回DRM服務(wù)器A,作為對其要求的響應(yīng)。
值得注意的是,當DRM服務(wù)器B詢問目錄B是否正在討論的用戶是正在討論組的一個成員時,則在目錄B中必須能夠表示該正在討論的用戶,如果沒有采用一個記錄目標的話,至少可采用一個指針目標來表示。此外,這類指針目標必須能包括與正在討論的用戶正是各組成員的有關(guān)信息,特別是因為,當組成員關(guān)系信息是從用戶到組來確定時,可以參考這類有關(guān)成員的信息,正如以上所討論的那樣。
現(xiàn)在參考圖13,概括的說,DRM服務(wù)器A和代表DRM服務(wù)器A的DRM服務(wù)器B可執(zhí)行以下步驟來確定跨分支組成員關(guān)系。
預(yù)先,DRM服務(wù)器A接受到用戶對使用對應(yīng)于一段內(nèi)容的許可證1208的申請(步驟1301)。該申請可包括標識用戶的授權(quán)證以及與內(nèi)容相關(guān)聯(lián)的SRL 308。作為響應(yīng),假定SRL 308標識了其中的組,并且也假定不存在適當?shù)母咚倬彺娴男畔?,DRM服務(wù)器A訊問目錄A以返回適用于該標識組的任何目標(步驟1303)。該背景假定了該組屬于分支B,使得該組事實上以目錄A來表示指向分支B的指針目標,并且DRM服務(wù)器A從目錄A接受對分支B的指針目標,于是很明顯該組屬于分支B(步驟1304),并且從接受到的指針目標中恢復(fù)分支B的地址(步驟1305)。
之后,DRM服務(wù)器A采用所恢復(fù)的地址來訊問在分支B中的目錄B來尋找DRM服務(wù)器B的地址,并且在響應(yīng)之后目錄B就將該地址返回DRM服務(wù)器A(步驟1307,1309)。這種獲得DRM服務(wù)器B地址的特殊機制都是眾所周知的或者應(yīng)該在相關(guān)出版物上很明了的,因此本文就不再需要進行詳細的討論。于是,可以在不脫離本發(fā)明的精神和范圍的下采用任何所合適的機制。
采用DRM服務(wù)器B的地址,DRM服務(wù)器A隨后就要求DRM服務(wù)器B來訊問目錄B該用戶是否是該組的一個成員(步驟1311)。接著,由DRM服務(wù)器A將要求傳遞給DRM服務(wù)器B采用特殊的機制是眾所周知的,并且應(yīng)該在相關(guān)出版物上是很明了的,因此本文就不再需要進行詳細的討論,于是,可以在不脫離本發(fā)明的精神和范圍的下采用任何所合適的機制。
對采用DRM服務(wù)器A來說,再次假定并不存在合適的高速緩存存儲器,DRM服務(wù)器B要求目錄B能返回適用于標識組的任何目標(步驟1313)。本背景假定該組屬于分支B,使得該組事實上在目錄B中作為一個記錄的目標。,并且DRM服務(wù)器B從目錄B接受所記錄的目標,從而意味著該組屬于分支B(步驟1315)。值得注意的是,DRM服務(wù)器B在這點上可以審查該組的成員,正如在接受確定該用戶是否是該組的直接成員的目標中闡述的那樣(步驟1317)如果是的,則確定是肯定的,并且DRM服務(wù)器B就向DRM服務(wù)器A報告該結(jié)果(步驟1319)。如果不是,則DRM服務(wù)器B就要求目錄B返回適用于用戶的任何目標,并且隨之采用結(jié)合圖2所示方法通過在目錄B中對從用戶到組的全面考察來繼續(xù)確定該用戶是否是該組的成員(步驟1323)。一旦結(jié)束了該全面考察之后,DRM服務(wù)器B將確定在用戶和組之間是否存在著成員關(guān)系,并且向DRM服務(wù)器A報告該結(jié)果(步驟1325)。
當然,基于這樣的確定,DRM服務(wù)器A就能決定是否將來自用戶的要求兌現(xiàn)為在步驟1301中被接受的(步驟1327)。應(yīng)該理解的是,如果用戶并不是該組的成員,則要求就被否認,除非發(fā)生了已經(jīng)發(fā)現(xiàn)用戶是在所接受到的SRL 308中所標識的另一組的成員。同樣,如果用戶是該組的成員,則該要求就可兌現(xiàn),且假設(shè)滿足了適用于該兌現(xiàn)的所有其它條件。
通過高速緩存信息來確定用戶組成員關(guān)系正如以上所討論的,在根據(jù)SRL 308向用戶發(fā)行許可證1208的過程中,DRM服務(wù)器320可以通過參考在DRM服務(wù)器320分支中的目錄1206和在其它分支中的目錄來確定用戶是否是由SRL 308所標識組的成員。應(yīng)該理解的是,每次參考目錄1206產(chǎn)生確定都變得相當昂貴和麻煩,特別是在目錄1206執(zhí)行所需要的附加網(wǎng)絡(luò)通話量和工作方面,以及特別是如果所確定的數(shù)量變得相當高時。
因此,在本發(fā)明的一個實施例中,從一個和多個目錄1206所產(chǎn)生的用戶—組信息可高速緩存在一個和多個可訪問DRM服務(wù)器320的位置上。另外,在本發(fā)明的一個實施例中,DRM服務(wù)器320在產(chǎn)生用戶—組確定時可采用最低成本的第一算法,以便于在參考目錄1206之前按從最低成本至最高成本的順序來審查多個高速緩存的位置。于是,只要有可能,較高成本的操作可以推遲,確定的速度也可以提高,并且網(wǎng)絡(luò)的通話量也可降低。
高速緩存用戶—組信息在從目錄1206中來確定用戶是否是一個組的一個成員的過程中,正如結(jié)合圖2所討論的那樣,DRM服務(wù)器320可潛在地放置于至少一些用戶是其直接或間接成員的其它組中。值得注意的是,因為一旦事實上發(fā)現(xiàn)了這一成員關(guān)系路徑便停止往返的移動時,就可能不能發(fā)現(xiàn)所有的用戶組。例如,如果在檢查正在討論組的記錄目標過程中,發(fā)現(xiàn)了用戶是該組的一個直接成員,則就不會發(fā)現(xiàn)用戶是其它組的直接成員或間接成員。同樣,如果試圖發(fā)現(xiàn)它們之間的成員關(guān)系從用戶到組的往返移動是必須的,則至少可發(fā)現(xiàn)用戶是直接成員的組,但是不能發(fā)現(xiàn)一些間接的組,因為事先發(fā)現(xiàn)了成員關(guān)系路徑。不過,在本發(fā)明的一個實施例中,DMR服務(wù)器320已經(jīng)在一個或多個高速緩存中存儲了有關(guān)用戶和所有直接或間接組的成員關(guān)系,用于以后的參考,如果這是需要的話。
現(xiàn)在參考圖14,可以看到高速緩存1404的多個條目1402。特別是,從高速緩存1404的一個條目1402可以看到,對于用戶3來說,已經(jīng)發(fā)現(xiàn)該用戶3是組4、6和7的直接或間接的一個成員,并且組4是組6和7的一個成員。同樣,從高速緩存1404的另一個條目1402可以看到,對于用戶4來說,已經(jīng)發(fā)現(xiàn)該用戶4僅僅只是組8的一個成員。該用戶3和用戶4和組4是否是該組的直接或間接成員可認為是不重要的并因此而不需要進行描述,盡管如果發(fā)現(xiàn)有必要和有用的話也可以描述這類信息。適用于用戶/組的所有組成員關(guān)系的內(nèi)容材料都緩存,并且作為任何特殊的用戶—組的相互關(guān)系對以后建立相同或不同用戶/組的用戶—組之間的相互關(guān)系是非常有用的。
正如所理解的那樣,在高速緩存1404中的信息從目錄1206獲得之后的一段時間之后就變成了“過時的”。也就是說,在一段時間之后,用戶就可以從目錄中刪除,就可以定義其它組和組的成員關(guān)系,以及其它等等,高速緩存1404并不能自動更新來反映所變化的信息。因此,正如圖14所示,高速緩存1404的各個條目1402都包括了一個建立的時間。基于這一建立的時間,任何訊問高速緩存1404的訊問條目都能夠確定該條目1404是否太舊而不可信。另外和在另一些實施例中,高速緩存1404也可以由它自己根據(jù)其所建立的時間來刪除其中被認為太舊的各個條目1404。
現(xiàn)在,在參考圖15和圖16,可以發(fā)現(xiàn)圖14所示的高速緩存可以采用多種結(jié)構(gòu)來實施。在一種結(jié)構(gòu)中,在分支中的各個許可證發(fā)行的DRM服務(wù)器320都具有一個高速緩存1404,這是相對較輕的存儲器方式的高速緩存,并且該分支也具有一個包含高速緩存1404的專用的高速緩存服務(wù)器1502(圖15),這是一個相對擴展重量較重的存儲器方式的高速緩存。此外,專用緩存服務(wù)器1502可以采用數(shù)據(jù)庫1404,和/或可以代表許可證發(fā)行DRM服務(wù)器320執(zhí)行對目錄1206的訊問。
在另一種結(jié)構(gòu)中,在分支中的各個許可證發(fā)行DRM服務(wù)器320是相對擴展的重量較重的存儲器方式的高速緩存(圖16),并且可執(zhí)行對目錄1206的訊問。盡管數(shù)據(jù)庫高速緩存1404可以在分支中的所有許可證發(fā)行DRM服務(wù)器320中共享數(shù)據(jù)庫高速緩存1404,但是并沒有提供專用的高速緩存服務(wù)器1502。在任何結(jié)構(gòu)中,各個基本的高速緩存1404都僅僅只具有用戶信息,而各個擴展的高速緩存才具有用戶和組信息。
最低成本第一算法與高速緩存1404的結(jié)構(gòu)無關(guān),DRM服務(wù)器320尋求確定用戶是否是組的一個成員,采用了本發(fā)明的最低成本第一算法,以從最低成本到最高成本的順序來搜索高速緩存1404和目錄1206。可推測,與DRM服務(wù)器320有關(guān)聯(lián)的高速緩存1404具有與此相關(guān)的最低成本,該高速緩存1404與專用高速緩存1502有關(guān)并且數(shù)據(jù)庫高速緩存1404具有與此相關(guān)的較高成本,以及目錄1206具有與此相關(guān)的最高成本。當然,成本可以是主觀的,并且在任何比率上,一個特殊的條目都可以具有任何特殊的成本,這些都沒有脫離本發(fā)明的精神和范圍。
現(xiàn)在參考圖17A和17B,可以看到該算法的主要特性是在相信完成了所有具有最低成本的操作之前并不試圖進行任何具有較高成本的操作。一般來說,以增加成本的次序的操作可以在發(fā)許可證的DRM服務(wù)器320的存儲器方式的高速緩存中找到,可以在數(shù)據(jù)庫高速緩存1404中或者在專用高速緩存服務(wù)器1502中找到,或者在AD中找到。在執(zhí)行算法的過程中,提交一個用戶和一個或多個目標組,并且確定該用戶是否是任何目標組的一個直接或間接的成員?;旧希撍惴ɡ脧母咚倬彺?404和目錄1206中得到的所有有效成員關(guān)系信息從用戶往返移動到任何目標組,在執(zhí)行較高成本的操作之前始終執(zhí)行著較低成本的操作。如果用戶是一個目標組的一個成員,則該算法就返回“是”作為結(jié)果,否則如果用戶不是任何目標組的成員,則就返回“否”作為結(jié)果,如果用戶不在目錄1206中則就返回“用戶沒有發(fā)現(xiàn)”,如果在目錄1206中沒有發(fā)行任何目標組則就返回“沒有發(fā)現(xiàn)任何目標組”。
正如圖17A所示,通過定義正在討論的用戶和目標組和多個目標組來開始處理過程(步驟1701)。假定在某一瞬間,DRM服務(wù)器320具有一個本地的高速緩存1404以及能夠訪問遠程高速緩存1404(這可以是專用高速緩存1502或者是數(shù)據(jù)庫緩存1404)和目錄1206,則由許可證發(fā)行DRM服務(wù)器320所采用的算法使用了多個箱和隊列,包括一個目標箱(T),在該箱中可駐留目標組或者多個目標組;一個確認的目標箱(V),在該箱中將駐留已經(jīng)得到確認的目標組或者多個目標組;一個搜索箱(S),在該箱中將駐留多個等待著搜索的組;一個本地隊列(Q1),在該隊列中將駐留在本地高速緩存中等待搜索的組;一個遠程隊列(Q2),在該隊列中將駐留在遠程高速緩存中等待搜索的組;一個目錄隊列(Q3),在該隊列中將駐留在目錄1206中等待搜索的組;以及,一個丟棄箱(D),在該箱中將駐留已經(jīng)處理過的組。
于是,通過對在目標箱中的各個目標組,搜索發(fā)現(xiàn)適用于目標組的記錄或條目1402,確認目標組或多個目標組來繼續(xù)該算法。因為,從基本上來說,對個有關(guān)的存儲所設(shè)備(S1,相對應(yīng)于本地高速緩存1404;S2,相對應(yīng)于遠程高速緩存1404;S3,相對應(yīng)于目錄1602)都執(zhí)行相同的處理過程,所以僅僅只需要參考一個通用存儲器Sx來進行這類處理的討論。
尤其,該算法首先在S1,本級高速緩存1404中搜索在目標箱(T)中各個目標組,如果發(fā)現(xiàn)這類目標組是本級高速緩存1404中的一個條目1402,則從(T)中去除該目標組,并且將該目標組放置于確認目標箱(V)中,它的條目1402也放置于任何較低等級的高速緩存1404中,這在這種情況下是不存在的(步驟1703)。之后,該算法對S2,遠程高速緩存1404以及對在(T)中所保留的各個目標組重復(fù)步驟1703,如果發(fā)現(xiàn)了這類目標組作為在遠程高速緩存1404中的一個條目1402,則從(T)中去除該目標組,并且將該目標組放置于(V)中以及將條目1402放置于任何較低等級的高速緩存1404中,這時,該緩存是本地高速緩存1404。最后,該算法再對S3,目錄1602以及對仍保留在(T)中的各個目標組重復(fù)步驟1703,如果發(fā)現(xiàn)了這類目標組作為目錄1602中的一個記錄,則從(T)中去除該目標組,并且將該目標組放置于(V)以及將該記錄1602放置于任何較低等級的高速緩存1404,這時,該緩存是遠程高速緩存1404。
一旦對各個存儲設(shè)備執(zhí)行了步驟1703,則確認目標箱(V)就應(yīng)該包含已經(jīng)發(fā)現(xiàn)在高速緩存1404或在目錄1602中存在的所有目標組。隨后,所有保留在目標箱中的目標組可以假定為將是壞的或者不再存在的,并因此而被忽略。如果在這種情況下,(V)是空的,則結(jié)束該算法,認為不存在確認的目標組,并且該算法可返回“沒有發(fā)現(xiàn)目標組”(步驟1705)。應(yīng)該注意的是,通過從目錄1602或遠程高速緩存1404將一個記錄或條目拷貝到所有較低等級的高速緩存1404中,這類較低等級的高速緩存1404就變成充滿了緩存的信息,這些信息可以用于以后確定用戶是否是組的一個成員。
之后,假定在(V)中存在著至少一個被確認的目標組。特別是,該算法搜索適用于正在討論用戶的記錄或條目1402(步驟1709),首先在S1中尋找,S1是本地高速緩存1404,隨后在S2,它是遠程高速緩存1404,接著在S3,它是目錄。一旦以步驟1709的任何迭代方式發(fā)現(xiàn)了適用于正在討論用戶的記錄或條目1402(這里稱之為“項目”),該算法就將用戶是一個成員的各個組放置于搜索箱(S)(步驟1711),并且采用適用于用戶的一個條目1402來裝入所有較低等級的高速緩存1404(步驟1713)。值得注意的是,如果從步驟1709的任何迭代中并沒有發(fā)現(xiàn)適用于用戶的項目,就結(jié)束該算法,表示不存在確認的用戶,并且算法返回“沒有發(fā)現(xiàn)用戶”(步驟1715)。
正如所能理解的那樣,步驟1709是以相對應(yīng)于從最低成本操作到最高成本的順序的操作進行迭代的,這在這種情況下迭代的次序是S1。隨后S2,隨后S3。因此,一旦確認了用戶,就可避免最高成本的操作。值得注意的是,可以在目標組或多個目標組之前來確認用戶,但是這并不脫離本發(fā)明的精神和范圍。
假定發(fā)現(xiàn)了所確認的用戶,是同在(S)中這類組所表示的至少一個組的成員,以及發(fā)現(xiàn)至少一個所確認的目標組如同在(V)中相對應(yīng)的項目所表示的,現(xiàn)在參考圖17B,可以由(S)和(V)來確定在(S)中任何組是否與在(V)中的任何組相匹配來繼續(xù)該算法(即,所確認的目標組和各個目標組)(步驟1723)。如果確實發(fā)現(xiàn)了在(S)中的一個組與在(V)中一個項目相匹配,則該算法就結(jié)束,表示一個匹配的結(jié)果,并該算法返回“是”(步驟1725)。否則該算法就通過將所有在(S)中的組都移至本地隊列(Q1)中來繼續(xù)(步驟1727)。
之后,該算法進行迭代處理過程,以搜索從用戶到任何目標組的成員關(guān)系路徑。該迭代處理要求在本地和遠程高速緩存1404和目錄1206中進行多種搜索,以確定組的成員關(guān)系。因為基本上是對各個隊列(Q1,相對應(yīng)于本地高速緩存1404;Q2,相對應(yīng)于遠程高速緩存1404;以及Q3,相對應(yīng)于目錄1206)進行相同的處理過程,所以這類處理僅僅只需要參考通用的(Qx)和通用存儲器Sx,正如圖17B所示,其中,S1是本地高速緩存1404;S2是遠程高速緩存1404;以及S3是目錄1206。
特別是,假定在某一瞬間,圖17B中的(Qx)和Sx是(Q1)和S1,本地高速緩存1404,首先是確定(Q1)是否是空的(步驟1729)。當然,(Q1)不應(yīng)該初始化成為空的,但是因為該處理過程是迭代的,所以就由可能出現(xiàn)所指向的那一(Q1)確實是空的。假定(Q1)初始不是空的,并且其中具有一個組。這樣一個組可以從(Q1)中選擇出和去除,并且可以確定該組是否已經(jīng)在丟棄箱(D)中(步驟1731)。最初,當然,從(Q1)中選擇出和去除的組并不是在丟棄箱(D)中,因為該組還沒有處理過,但是隨著過程進行迭代處理,其它組可以放置于(Q1),也許可以包括原先已經(jīng)處理過的組,以及在處理各個組的過程,各組要確實移至(D)。
如果從(Q1)中選擇出和去除的組已經(jīng)被處理過并因而在(D)中,則算法就返回步驟(1729),在該步驟中,再次進行確定(Q1)是否是空的。然而,如果從(Q1)中選擇出和去除的組還沒有處理過并因此還沒有在(D)中,則算法繼續(xù)搜索對應(yīng)于(Q1)的高速緩存1404或目錄1206中所選擇的組的條目1402,這時,該緩存是本地高速緩存1404(步驟1733)。
如果在本地高速緩存1404中沒有發(fā)現(xiàn)用于所選擇組的這類條目1402,則處理就繼續(xù)將該組從(Q1)移至遠程高速緩存(Q2)(步驟1735),并且隨后再返回至步驟(1729),在該步驟中再次確定(Q1)是否是空的。然而,如果在本地高速緩存1404中發(fā)現(xiàn)了用于所選擇組的這樣一個條目1402,則算法就將該各個新發(fā)現(xiàn)的且所選擇組是其成員的組放置于搜索箱(S)中,并且將所選擇的組移動至丟棄箱(D)(步驟1739),另外,用對應(yīng)于所選擇組的一個條目1402來裝入所有較低等級的高速緩存1404(步驟1737)。當然,值得注意的是,對于(Q1)和本地高速緩存1404,并不存在這類較低等級的高速緩存1404。之后,算法通過返回步驟1723繼續(xù),在該步驟,確定在(S)中的任何組(即,新發(fā)現(xiàn)的組(多個組))是否與在(V)中的任何組(即,所確認的目標組或多個組)相匹配。當然,如果確認發(fā)現(xiàn)在(S)中有一個組與在(V)中的一個項目相匹配,則算法就以匹配而結(jié)束,并且算法返回“是”,正如步驟1725所示。否則,算法就繼續(xù),在步驟1727將在S中的所有組都移至本地隊列(Q1),并且繼續(xù)算法。
在這樣做的過程中,算法利用(Q1)使得所有從用戶到任何所確認的目標組的可能路徑都擴展到本地高速緩存1404的可能范圍。正如現(xiàn)在所應(yīng)理解的那樣,假定沒有發(fā)現(xiàn)匹配,則(Q1)隨著處理過程的迭代采用最新發(fā)現(xiàn)的組來填補,并且在(Q1)中的所有組都利用本地高速緩存1404進行處理之后清空至丟棄箱(D)或者利用遠程高速緩存1404移至待處理的(Q2)。于是,被認為是最昂貴的遠程高速緩存1404的操作不會發(fā)生,直至在本地高速緩存1404中的所有可能的操作都已完成為止,如同在步驟1729發(fā)現(xiàn)(Q1)是空的時候所發(fā)生的那樣。
當在步驟1729發(fā)現(xiàn)(Q1)事實上是空的時候,處理過程就返回到遠程隊列(Q2),其方式類似于對(Q1)所進行操作的方式。特別是,現(xiàn)在假定圖17B所示的(Qx)和Sx是(Q2)和S2,遠程高速緩存1404,首先確定(Q2)是否是空的(步驟1729)。這里,(Q2)可能最初不是空的,雖然在本地隊列1404能夠自己處理來自(Q1)的所有組的情況下有可能發(fā)生這類事件。假定(Q2)最初不是空的,那么就具有一個組,這樣一個組從(Q2)中選擇和去除,并且確定該組是否因為已經(jīng)處理過了而處在丟棄箱(D)中(步驟1731)。
如果從(Q2)中選擇和去除的組已經(jīng)處理了并且已經(jīng)在(D)中,則算法就返回至步驟(1729),在該步驟中,再次確定(Q2)是否是空的。然而,如果從(Q2)中所選擇和去除的組還沒有處理并且還不在(D)中,則算法就繼續(xù)搜索適用于對應(yīng)(Q2)的高速緩存1404和目錄1206中所選擇組的一個條目1402,這時,該緩存是遠程高速緩存1404(步驟1733)。
如果在遠程高速緩存1404中并沒有發(fā)現(xiàn)適用于所選擇組的這類條目1402,則算法就繼續(xù)將(Q2)中的組移至目錄隊列(Q3)(步驟1735),并且再返回至步驟(1729),在該步驟中,再次確定(Q2)是否是空的。然而,如果在遠程高速緩存1404中發(fā)現(xiàn)了適用于所選擇組的這類條目1402,則算法就將各個新發(fā)現(xiàn)的且所選擇的組是其成員的組放置于搜索箱(S)中,并且將所選擇的組移動至丟棄箱(D)(步驟1739),另外,采用對應(yīng)于所選擇組的一個條目1402來裝入所有較低等級的高速緩存1404(步驟1737)。當然,值得注意的是,對于(Q2)和遠程高速緩存1404來說,僅僅只需要裝入本地高速緩存1404。之后,算法就返回至步驟1723繼續(xù),在該步驟,確定在(S)中的任何組(即,新發(fā)現(xiàn)的組和多個組)是否與在(V)中的任何組(即,所確認的目標組和多個目標組)相匹配。當然,如果確實發(fā)現(xiàn)在(S)中的一個組與在(V)中的一個項目相匹配,則算法就以一個匹配來結(jié)束,并且算法在步驟1725返回“是”。否則,算法就繼續(xù)在步驟1727將(S)中的所有組移至本地隊列(Q1),并且算法繼續(xù)回過來處理(Q1)。
在這樣做的過程中,算法利用(Q2)使得所有從用戶到任何所確認的目標組的可能路徑都擴展到本地高速緩存1404的可能范圍。正如現(xiàn)在所應(yīng)理解的那樣,假定沒有發(fā)現(xiàn)匹配,則(Q2)隨著處理過程的迭代采用最新發(fā)現(xiàn)的組來填補,并且在(Q2)中的所有組都利用本地高速緩存1404進行處理之后清空至丟棄箱(D)或者利用遠程高速緩存1404移動至待處理的(Q3)。于是,被認為是較昂貴的在目錄1206中的操作,在遠程高速緩存1404中的所有可能的操作都已完成之前并沒有發(fā)生,如同發(fā)現(xiàn)(Q2)是空的時候所發(fā)生的那樣。
很顯然,利用(Q2)和遠程高速緩存1404新發(fā)現(xiàn)的任何組都可以先利用(Q1)和本地高速緩存1404進行處理。于是,被認為是較昂貴的在遠程高速緩存1404中的相對新發(fā)現(xiàn)組的操作,在完成了對本地高速緩存1404的所有可能操作之前,不會發(fā)生,同當(Q1)是空時所發(fā)生的那樣。
當在步驟1729發(fā)現(xiàn)(Q2)事實上是空的時候,處理過程就返回到目錄隊列(Q3),其方式類似于對(Q1)和(Q2)所進行操作的方式。特別是,現(xiàn)在假定圖17B所示的(Qx)和Sx是(Q3)和S3,目錄1206,首先確定(Q3)是否是空的(步驟1729)。這里,同樣,(Q3)可能最初不是空的,雖然在本地和遠程隊列1404能夠自己處理來自(Q1)和(Q2)的所有組的情況下有可能發(fā)生這類事件。假定(Q3)最初不是空的,那么就具有一個組,這就從(Q3)中選擇和去除一個組,并且確定該組是否因為已經(jīng)處理過了而處在丟棄箱(D)中(步驟1731)。
如果從(Q3)中選擇和去除的組已經(jīng)處理了并且已經(jīng)在(D)中,則算法就返回至步驟(1729),在該步驟中,再次確定(Q3)是否是空的。然而,如果從(Q3)中所選擇和去除的組還沒有處理并且還不在(D)中,則算法就繼續(xù)搜索適用于對應(yīng)(Q3)的高速緩存1404和目錄1206中所選擇組的一個條目1402,這時,該緩存是目錄1206(步驟1733)。
如果在目錄1206中并沒有發(fā)現(xiàn)適用于所選擇組的這類條目1402,則算法就繼續(xù)將所選擇的組從(Q3)移至(D)(步驟1735),并且再返回至步驟(1729),在該步驟中,再次確定(Q3)是否是空的。值得注意的是,由于在(Q3)之后沒有下一個隊列,所以被選擇的組就不能再作進一步的處理。然而,如果在遠程高速緩存1404中發(fā)現(xiàn)了適用于所選擇組的這類條目1402,則算法就將各個新發(fā)現(xiàn)的且所選擇的組是其成員的組放置于搜索箱(S)中,并且將所選擇的組移動至丟棄箱(D)(步驟1739),另外,采用對應(yīng)于所選擇組的一個條目1402來裝入所有較低等級的高速緩存1404(步驟1737)。當然,值得注意的是,對于(Q3)和目錄1206來說,僅僅只需要裝入本地和遠程高速緩存1404。之后,算法就返回至步驟1723繼續(xù),在該步驟,確定在(S)中的任何組(即,新發(fā)現(xiàn)的組和多個組)是否與在(V)中的任何組(即,所確認的目標組和多個目標組)相匹配。當然,如果確實發(fā)現(xiàn)在(S)中的一個組與在(V)中的一個項目相匹配,則算法就以一個匹配來結(jié)束,并且算法在步驟1725返回“是”。否則,算法就繼續(xù)在步驟1727將(S)中的所有組移至本地隊列(Q1),并且算法繼續(xù)回過來處理(Q1)。
在這樣做的過程中,算法利用(Q3)使得所有從用戶到任何所確認的目標組的可能路徑都擴展到目錄1206的可能范圍。正如現(xiàn)在所應(yīng)理解的那樣,假定沒有發(fā)現(xiàn)匹配,則(Q3)隨著處理過程的迭代采用最新發(fā)現(xiàn)的組來填補,并且在(Q3)中的所有組都利用目錄1206進行處理之后清空至丟棄箱(D)。
很顯然,利用(Q3)和目錄1206所發(fā)現(xiàn)的任何組都可以先利用(Q1)和本地高速緩存1404進行處理。于是,被認為是較昂貴的在目錄1206中的相對新發(fā)現(xiàn)組的操作在完成了對本地和遠程高速緩存1404的所有可能操作之前,不會發(fā)生,如同當(Q1)和(Q2)是空的時所發(fā)生的那樣。
當在步驟1729發(fā)現(xiàn)(Q3)事實上是空的時候,處理過程就不再進一步繼續(xù),因為在這種背景下沒有(Q4),并因此完成了處理。特別是,該算法就在沒有匹配的情況下結(jié)束,并且算法返回“否”(步驟1741)。
現(xiàn)在應(yīng)該理解的是,可以將本發(fā)明的算法設(shè)計成在執(zhí)行任何較高成本操作之前先執(zhí)行較低成本的操作。正如所應(yīng)該理解的那樣,雖然是根據(jù)三個等級的存儲(即,本地和遠程高速緩存1404和目錄1206)公開的,該算法可以通過定義類似數(shù)量的隊列來替代應(yīng)用于任何其它數(shù)量等級的存儲,包括2、4、5、6、7等等。因此,本發(fā)明的算法也可以應(yīng)用于高速緩存用戶—組信息的任何多個等級的存儲布置,這些都沒有脫離本發(fā)明的精神和范圍。
結(jié)論能夠?qū)崿F(xiàn)結(jié)合本發(fā)明所執(zhí)行的處理過程所需的編程是相對直截了當?shù)模⑶以谙嚓P(guān)的程序設(shè)計出版物上應(yīng)該是很顯而易見。因此,這里就不再涉及這類編程。然而,任何特殊的編程都可以應(yīng)用于實現(xiàn)本發(fā)明且并沒有脫離本發(fā)明的精神和范圍。
在本發(fā)明中,數(shù)字版權(quán)管理(DRM)和實現(xiàn)的結(jié)構(gòu)以及方法都允許對任意形式的數(shù)字內(nèi)容的復(fù)制或播放進行控制,其中這種控制是靈活的并且可以由該數(shù)字內(nèi)容的內(nèi)容擁有者/開發(fā)商來限定。該結(jié)構(gòu)允許且方便于這種可控的復(fù)制,特別是在辦公室或組織環(huán)境中或類似于文檔需要在一個限定的個體組或一類個體之間共享的場合。這類結(jié)構(gòu)允許根據(jù)用戶是一個組的成員來向用戶提供具有許可證的內(nèi)容,其中,這類用戶的成員關(guān)系至少是部分根據(jù)高速緩存的組信息來確定的。
應(yīng)該理解的是,對上述所討論的實施例進行的變化都沒有脫離本發(fā)明的概念。例如,雖然本披露已經(jīng)討論了確定從用戶到組的組成員關(guān)系,但是也可以在不脫離本發(fā)明精神和范圍的條件下替換成從組到用戶的確定。因此,應(yīng)該理解的是,本發(fā)明并不限制于所披露的特殊實施例,但是可試圖覆蓋在由后附的權(quán)利要求所定義的本發(fā)明精神和范圍內(nèi)的變更。
權(quán)利要求
1.一種適用于確定在一個組織中的一個元素是否是在該組織所預(yù)先定義的一個和多個目標組中的一個成員的方法,該組織包含了一個計算機網(wǎng)絡(luò)且該網(wǎng)絡(luò)包括多個構(gòu)成X個等級的存儲設(shè)備并存儲著元素-組的信息,存儲設(shè)備包括在較高和較昂貴成本等級X上的目錄和至少一個高速緩存存儲器,各個高速緩存存儲器是在較低和X之下較便宜成本等級上并包括至少一部分在目錄中的元素-組信息,等級1至X對應(yīng)于最低成本至最高成本,該方法包括通過搜索存儲設(shè)備的等級以發(fā)現(xiàn)適用于目標組的一個項目來確認各個目標組,并且,如果發(fā)現(xiàn)目標組,就將該目標組放置于一個確認的目標箱(V)中;通過搜索各等級的存儲設(shè)備以發(fā)現(xiàn)適用于元素的一個項目來確認元素,并且,如果發(fā)現(xiàn)適用于該元素的項目,就從該項目中確定列出該元素是其成員的所有組并且將這類組的成員放置于搜索箱(S)中;第一確定在(S)中的任一組是否與在(V)中的任何組相匹配;如果相匹配,則肯定該元素就是一個目標組的一個成員;以及,如果不相匹配的,則通過將在(S)中的所有的組都移動至一個對應(yīng)于在等級1的存儲設(shè)備的隊列(Q1)中,并且執(zhí)行迭代處理以搜索從該元素到任何目標組的成員關(guān)系的路徑;該迭代處理過程包括對從1至X的各個等級x第二確定對應(yīng)于該等級的一個隊列(Qx)是否是空的;如果是空的,則使等級加1并且如果x<X則返回到第二確定步驟,以及如果x=X則可以肯定該元素不是任何目標組的一個成員;如果不是空的,則從(Qx)去除該組并且確定該去除的組是否已經(jīng)在丟棄箱(D)中;如果已在(D)中,則返回第二確定步驟;如果不在(D)中,則在對應(yīng)于該等級的存儲設(shè)備中搜索一個對應(yīng)于去除組的項目;如果在搜索中沒有發(fā)現(xiàn)該項目,則如果x<X,就將被去除的組移動至(Q(x+1)),以及如果x=X則將被去除的組移動至(D),并返回至第二確定步驟;如果在搜索中發(fā)現(xiàn)了該項目,則將由所發(fā)現(xiàn)項目確定的、且所去除的組是其一個成員的每一新發(fā)現(xiàn)的組放置于(S)中,所去除的組移動至(D),并返回至第一確定步驟,借此,該迭代處理過程形成了所有從元素到任何所確認目標組的可能路徑,在完成了在所有較低等級存儲設(shè)備中的所有可能的較低成本的操作之前,不會在一個較高等級的存儲設(shè)備上發(fā)生較昂貴成本的操作。
2.如權(quán)利要求1所述方法,其特征在于,確認各個目標組包括將各個目標組放置于一個目標箱(T)中;以及,對從1至X的各個等級,在該等級的存儲設(shè)備中搜索對應(yīng)于(T)中各個目標組的一個項目,并且如果該項目位于從(T)去除的目標組,則將該目標組放置于確認目標箱(V)中。
3.如權(quán)利要求2所述方法,其特征在于,還包括如果發(fā)現(xiàn)了該項目,就采用一個相對應(yīng)的項目來裝入任何較低等級的存儲設(shè)備。
4.如權(quán)利要求1所述方法,其特征在于,還包括在搜索了適用于各個目標組的各等級的存儲設(shè)備之后,確定(V)是否是空的,并且如果是,則可以肯定沒有發(fā)現(xiàn)有效的目標組。
5.如權(quán)利要求1所述方法,其特征在于,確認該元素包括對從1至X的各等級,在該等級的存儲設(shè)備中搜索對應(yīng)于該元素的一個項目,直至發(fā)現(xiàn)這一項目。
6.如權(quán)利要求5所述方法,其特征在于,還包括如果發(fā)現(xiàn)了一個對應(yīng)于該元素的項目,則采用一個相對應(yīng)的項目來裝入任何較低等級的存儲設(shè)備。
7.如權(quán)利要求1所述方法,其特征在于,還包括在搜索了適用于該元素的各等級的存儲設(shè)備之后,確定是否發(fā)現(xiàn)一個適用于該元素的項目,并且如果沒有,則可肯定沒有發(fā)現(xiàn)有效的元素。
8.如權(quán)利要求1所述方法,其特征在于,X=3,其中,一個本地高速緩存存儲器在等級1,一個遠程高速緩存存儲器在等級2,以及目錄在等級3。
9.如權(quán)利要求1所述方法,其特征在于,還包括如果發(fā)現(xiàn)了這類項目,就采用一個相對應(yīng)的項目來裝入任何較低等級的存儲設(shè)備。
10.如權(quán)利要求1所述方法,其特征在于,該方法適用于確定一個組織的一個用戶是在該組織內(nèi)預(yù)先所限定的一個或多個目標組的一個成員,該組織包含了一個計算機網(wǎng)絡(luò)且該網(wǎng)絡(luò)包括多個構(gòu)成X個等級的存儲設(shè)備并存儲著元素-組的信息。
11.一種計算機可讀媒介,它具有存儲于其中的計算機可執(zhí)行指令,該指令適用于執(zhí)行一種適用于確定一個組織的一個元素是否是在該組織內(nèi)預(yù)先所限定的一個或多個目標組的一個成員,該組織包含了一個計算機網(wǎng)絡(luò)且該網(wǎng)絡(luò)包括多個構(gòu)成X個等級的存儲設(shè)備并存儲著元素-組的信息,所述存儲設(shè)備包括在較高和較昂貴成本等級X上的目錄和至少一個高速緩存存儲器,各個高速緩存存儲器是在較低和X之下較便宜成本等級上并包括至少一部分在目錄中的元素-組信息,等級1至X對應(yīng)于最低成本至最高成本,該方法包括通過搜索存儲設(shè)備的等級以發(fā)現(xiàn)適用于目標組的一個項目來確認各個目標組,并且,如果發(fā)現(xiàn)目標組,就將該目標組放置于一個確認的目標箱(V)中;通過搜索各等級的存儲設(shè)備以發(fā)現(xiàn)適用于元素的一個項目來確認元素,并且,如果發(fā)現(xiàn)適用于該元素的項目,就從該項目中確定列出該元素是其成員的所有組并且將這類組的成員放置于搜索箱(S)中;第一確定在(S)中的任何一組是否與在(V)中的任何組相匹配;如果相匹配,則肯定該元素就是一個目標組的一個成員;以及,如果不相匹配的,則通過將在(S)中的所有的組都移動至一個對應(yīng)于在等級1的存儲設(shè)備的隊列(Q1)中,并且執(zhí)行迭代處理以搜索從該元素到任何目標組的成員關(guān)系的路徑;該迭代處理過程包括對從1至X的各個等級x;第二確定對應(yīng)于該等級的一個隊列(Qx)是否空的;如果是空的,則使等級加1并且如果x<X則返回到第二確定步驟,以及如果x=X則可以肯定該元素不是任何目標組的一個成員;如果不是空的,則從(Qx)去除該組并且確定該去除的組是否已經(jīng)在丟棄箱(D)中;如果已在(D)中,則返回第二確定步驟;如果不在(D)中,則在對應(yīng)于改等級的存儲設(shè)備中搜索一個對應(yīng)于去除組的項目;如果在搜索中沒有發(fā)現(xiàn)該項目,則如果x<X,就將被去除的組移動至(Q(x+1)),以及如果x=X則將被去除的組移動至(D),并返回至第二確定步驟;如果在搜索中發(fā)現(xiàn)了該項目,則將從所發(fā)現(xiàn)項目確定的、且所去除的組是某一個成員的每一新發(fā)現(xiàn)的組放置于(S)中,所去除的組移動至(D),并返回至第一確定步驟,借此,該迭代處理過程形成了所有從元素到任何所確認目標組的可能路徑,在完成了在所有較低等級存儲設(shè)備中的所有可能的較低成本的操作之前,不會在一個較高等級的存儲設(shè)備上發(fā)生較昂貴成本的操作。
12.如權(quán)利要求11所述媒介,其特征在于,確認各個目標組包括將各個目標組放置于一個目標箱(T)中;以及,對從1至X的各個等級,在該等級的存儲設(shè)備中搜索對應(yīng)于(T)中各個目標組的一個項目,并且如果該項目位于從(T)去除的目標組,則將該目標組放置于確認目標箱(V)中。
13.如權(quán)利要求12所述媒介,其特征在于,該方法還包括如果發(fā)現(xiàn)了該項目,就采用一個相對應(yīng)的項目來裝入任何較低等級的存儲設(shè)備。
14.如權(quán)利要求11所述媒介,其特征在于,該方法還包括在搜索了適用于各個目標組的各等級的存儲設(shè)備之后,確定(V)是否是空的,并且如果是,則可以肯定沒有發(fā)現(xiàn)有效的目標組。
15.如權(quán)利要求11所述媒介,其特征在于,確認該元素包括對從1至X的各等級,在該等級的存儲設(shè)備中搜索對應(yīng)于該元素的一個項目,直至發(fā)現(xiàn)這一項目。
16.如權(quán)利要求15所述媒介,其特征在于,該方法還包括如果發(fā)現(xiàn)了一個對應(yīng)于該元素的項目,則采用一個相對應(yīng)的項目來裝入任何較低等級的存儲設(shè)備。
17.如權(quán)利要求11所述媒介,其特征在于,該方法還包括在搜索了適用于該元素的各等級的存儲設(shè)備之后,確定是否發(fā)現(xiàn)一個適用于該元素的項目,并且如果沒有,則可肯定沒有發(fā)現(xiàn)有效的元素。
18.如權(quán)利要求11所述媒介,其特征在于,X=3,其中,一個本地高速緩存存儲器在等級1,一個遠程高速緩存存儲器在等級2,以及目錄在等級3。
19.如權(quán)利要求11所述媒介,其特征在于,該方法還包括如果發(fā)現(xiàn)了這類項目,就采用一個相對應(yīng)的項目來裝入任何較低等級的存儲設(shè)備。
20.如權(quán)利要求11所述媒介,其特征在于,該方法適用于確定一個組織的一個用戶是在該組織內(nèi)預(yù)先所限定的一個或多個目標組的一個成員,該組織包含了一個計算機網(wǎng)絡(luò)且該網(wǎng)絡(luò)包括多個構(gòu)成X個等級的存儲設(shè)備并存儲著元素-組的信息。
全文摘要
一種計算機網(wǎng)絡(luò)具有構(gòu)成X等級的存儲設(shè)備并且存儲元素-組的信息。為了確定一個元素是否是任何目標組的一個成員,通過搜索存儲設(shè)備以發(fā)現(xiàn)一個目標組的項目來確認各個目標組,并且,如果能發(fā)現(xiàn),則將該目標組放置于一個確認目標箱(V)中。同樣,通過搜索存儲設(shè)備來發(fā)現(xiàn)一個元素的項目來確認元素,并且,如果能發(fā)現(xiàn),則從該項目中確定列出元素的所有組都是其成員并且將該成員-組放置于一個搜索箱(S)中。如果(S)與(V)相交叉,則該元素是一個目標組的一個成員。如果不交叉,則將在(S)中的所有組都移動至對應(yīng)于在等級1的存儲設(shè)備的一個隊列(Q1),并且由一個迭代處理過程來搜索從該元素到任何目標組的一個成員關(guān)系路徑。
文檔編號G06F21/00GK1525373SQ20041000760
公開日2004年9月1日 申請日期2004年2月26日 優(yōu)先權(quán)日2003年2月26日
發(fā)明者D·拉森, D 拉森, P·D·瓦克斯曼, 瓦克斯曼, C·文卡特施, ㄌ厥, Y·(奧真)羅森菲爾德, 真)羅森菲爾德, A·納林 申請人:微軟公司