專利名稱:數(shù)據(jù)流標頭對象保護的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)驗證,尤其涉及數(shù)據(jù)文件的標頭對象。
(2)背景技術(shù)通常,某些數(shù)據(jù)文件和數(shù)據(jù)流格式包括標頭對象。標頭對象包括用于標識并使用包括在數(shù)據(jù)文件或數(shù)據(jù)流內(nèi)的內(nèi)容數(shù)據(jù)的“元內(nèi)容”信息。
例如,一個數(shù)據(jù)流格式是高級流格式(ASF),它是為存儲同等多媒體數(shù)據(jù)而設(shè)計的可擴展文件格式。目前該格式的規(guī)范可從www.microsoft.com得到。ASF支持大范圍網(wǎng)絡(luò)和協(xié)議上的數(shù)據(jù)傳遞,而允許本地回放。
每個ASF文件都由一個或多個媒體流組成。標頭對象執(zhí)行整個文件的屬性,以及流專有的屬性。在ASF中,每個文件必需具有一個標頭對象。標頭對象在ASF文件的開始處(標頭對象GUID(全局唯一的標識符))提供了一個公知字節(jié)序列并且包含適當解譯多媒體數(shù)據(jù)所需的全部信息。標頭對象可能被視作包含標頭對象信息以及標頭子對象組合的容器。標頭對象信息包括標頭對象(“ASF_Header_Object”)的GUID、標頭對象的大小、及標頭對象內(nèi)所包含的標頭子對象的數(shù)目。每個標頭對象都從GUID開始。
標頭子對象包括·文件屬性子對象,它定義了文件中多媒體數(shù)據(jù)的全局特性;·流屬性子對象,它定義了媒體流的特定屬性和特性;·標頭擴展子對象,它允許對ASF文件添加附加功能而保持向后兼容性,并且是包含擴展的標頭子對象的容器;·編解碼器列表子對象,它提供與對ASF文件中找到的內(nèi)容進行編碼所用的編解碼器和格式有關(guān)的用戶友好信息;·腳本命令子對象,它提供了Unicode字符串的類型/參數(shù)對的一個列表,它們與ASF文件的時間線同步;·標記子對象,它包含小的、特殊的索引,用于提供文件內(nèi)命名的跳躍點以允許內(nèi)容作者把內(nèi)容分成邏輯部分,譬如整個CD中的歌曲邊界或者長演講的話題變換,并且用于為文件的每個部分分配可由用戶使用的人類可讀名稱;·比特率互斥子對象,它標識了彼此具有互斥關(guān)系的視頻流(換言之,這種關(guān)系中只有一個流可以流出,并忽略其它);·糾錯子對象,它定義了糾錯方法并提供用于恢復(fù)的糾錯引擎所需的信息;·內(nèi)容描述子對象,它允許作者記錄描述文件及其內(nèi)容的公知數(shù)據(jù),包括題目、作者、版權(quán)、說明和價目信息;·擴展內(nèi)容描述子對象,它允許作者記錄描述文件及其內(nèi)容的數(shù)據(jù),該數(shù)據(jù)在諸如題目、作者、版權(quán)、說明或價目信息等標準書目信息之外;·內(nèi)容加密子對象,它標識該內(nèi)容是否得到數(shù)字權(quán)利管理(DRM)系統(tǒng)的保護。該子對象包括DRM許可證一獲得URL、DRM密鑰ID、及其它DRM有關(guān)的元數(shù)據(jù);·流比特率屬性子對象,它定義了多媒體數(shù)據(jù)中每個媒體流的平均比特率;以及·填充子對象,它是用于填充標頭對象大小的虛擬子對象。
首先創(chuàng)建數(shù)據(jù)流文件的實體以及對它起作用的任何隨后實體都可能添加或改變標頭文件的元素。例如,內(nèi)容創(chuàng)建實體可能創(chuàng)建一個數(shù)據(jù)流文件,并且包括與內(nèi)容有關(guān)的內(nèi)容說明對象中的信息。第二實體可能創(chuàng)建數(shù)據(jù)內(nèi)的標記,并且希望用跟蹤信息添加標記對象。而第三實體分發(fā)數(shù)據(jù)流文件,它可能添加包含腳本的行為或數(shù)據(jù)的腳本命令對象。例如,腳本命令對象可能包含把Web瀏覽器窗口打開為指定URL(統(tǒng)一資源定位符)的信息。
由于許多實體可能對ASF文件起作用,因此不可能確定哪個實體已創(chuàng)建了標頭對象的哪個部分。此外,不能識別由攻擊者作出的信息變化。
(3)發(fā)明內(nèi)容本發(fā)明針對驗證標頭對象內(nèi)子對象的系統(tǒng)、方法和數(shù)據(jù)結(jié)構(gòu)。本發(fā)明允許用一個實體驗證標頭對象內(nèi)的一個或多個子對象,而仍然允許排列要改變的子對象。新的子對象隨后還能由另一實體創(chuàng)建并驗證??梢越M合由一個可信實體對兩個或多個子對象的驗證,使得攻擊者不能移動或改變數(shù)據(jù),而使一個子對象像已由可信實體簽字那樣可被驗證,而另一子對象不可被驗證。
下面的說明中提出了本發(fā)明的其它特征和優(yōu)點。
(4)
圖1是計算機系統(tǒng)總覽圖。
圖2是說明按照本發(fā)明的文件的框圖。
圖3說明了按照本發(fā)明創(chuàng)建數(shù)字簽名子對象的過程。
圖4說明了按照本發(fā)明驗證數(shù)字簽名子對象的過程。
圖5說明了按照本發(fā)明的數(shù)字簽名子對象。
(5)具體實施方式
綜述為了允許標頭對象中的子對象的簽名信息及子對象區(qū)域,可以創(chuàng)建一個或多個數(shù)字簽名子對象并將它們放置在數(shù)據(jù)文件的標頭對象中。如果數(shù)字簽名子對象存在并有效,則可以檢測到關(guān)于已簽名子對象的任意編輯或篡改。子對象的排列不需要被保存。
數(shù)字簽名子對象包含一個區(qū)域指示符數(shù)組。每個區(qū)域指示符都標識了子對象內(nèi)的一個特定區(qū)域。區(qū)域指示符可能還標識一個完整的子對象。
數(shù)字簽名子對象還包含一個簽名。該簽名是區(qū)域指示符數(shù)組中所列的區(qū)域的數(shù)字簽名。該簽名可以用于驗證區(qū)域指示符中所列的區(qū)域尚未被篡改。
示例性計算環(huán)境圖1說明了適當?shù)挠嬎阆到y(tǒng)環(huán)境100的一例,其中可能實現(xiàn)本發(fā)明。計算系統(tǒng)環(huán)境100僅是適當?shù)挠嬎悱h(huán)境的一例并且并非意圖限制本發(fā)明的使用范圍或功能。計算環(huán)境100不應(yīng)被解釋為具有與示例性操作環(huán)境100中所述的組件的任一或組合有關(guān)的從屬性或要求。
本領(lǐng)域的技術(shù)人員可以理解,計算機或其它客戶機或服務(wù)器設(shè)備可以作為部分計算機網(wǎng)絡(luò)而采用,或者用于分布式計算環(huán)境中。在這點上,本發(fā)明屬于具有任意數(shù)量存儲器或存儲單元的任意計算機系統(tǒng),以及發(fā)生在任意數(shù)量存儲單元或容量上的任意數(shù)量的應(yīng)用程序和過程,它們可以與本發(fā)明一起使用。本發(fā)明可以應(yīng)用于在網(wǎng)絡(luò)環(huán)境或分布式計算環(huán)境中采用服務(wù)器計算機和客戶機計算機的環(huán)境。本發(fā)明還可以用于獨立計算設(shè)備,具有編程語言功能、以及與遠程或本地服務(wù)一起產(chǎn)生、接收和發(fā)射信息的解譯和執(zhí)行能力。
本發(fā)明可以用多種其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置來操作。可能適合與本發(fā)明一起使用的公知計算系統(tǒng)、環(huán)境和/或配置的示例包括、但不限于個人計算機、服務(wù)器計算機、手提或便攜式設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程用戶電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、包括任一上述系統(tǒng)的分布式計算環(huán)境、及其它。
本發(fā)明可以用計算機可執(zhí)行指令的一般上下文來描述,譬如由計算機執(zhí)行的程序模塊。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。本發(fā)明還可以實際用于分布式計算環(huán)境中,其中由通過通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸媒質(zhì)連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊及其它數(shù)據(jù)可能位于本地和遠程存儲媒質(zhì)中,包括存儲器存儲設(shè)備。分布式計算通過計算設(shè)備和系統(tǒng)間的直接交換便于共享計算機資源和服務(wù)。這些資源和服務(wù)包括信息、高速緩存、及文件磁盤存儲的交換。分布式計算利用網(wǎng)絡(luò)連接性,允許用戶機發(fā)揮它們的集體功效來有利于整個公司。在這點上,多種設(shè)備可能具有應(yīng)用程序、對象或資源,它們可能利用本發(fā)明的技術(shù)。
參考圖1,用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括形式為計算機110的通用計算設(shè)備。計算機110的組件可能包括、但不限于處理單元120、系統(tǒng)存儲器130、及把包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。系統(tǒng)總線121可能是多種類型總線結(jié)構(gòu)的任一種,包括存儲器總線或存儲器控制器、外圍設(shè)備總線、及使用任一多種總線結(jié)構(gòu)的本地總線。通過示例但非限制,這種結(jié)構(gòu)包括工業(yè)標準結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、增強型ISA(EISA)總線、視頻電子標準聯(lián)盟(VESA)本地總線、及外圍組件互連(PCI)總線(也稱為Mezzanine總線)。
計算機110一般包括各種計算機可讀媒質(zhì)。計算機可讀媒質(zhì)可以是能由計算機110訪問的任何可用媒質(zhì)并包括易失性和非易失性的媒質(zhì)、可移動和不可移動媒質(zhì)。通過示例但非限制,計算機可讀媒質(zhì)可能包括計算機存儲媒質(zhì)和通信媒質(zhì)。計算機存儲媒質(zhì)包括易失性和非易失性、可移動和不可移動媒質(zhì),它們以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)這樣的信息的任意方法或技術(shù)來實現(xiàn)。計算機存儲媒質(zhì)包括、但不限于RAM、ROM、EEPROM、閃存或其它存儲技術(shù)、CDROM、數(shù)字化通用光盤(DVD)或其它光盤存儲器、磁帶盒、磁帶、磁盤存儲器或其它磁性存儲設(shè)備、或用于存儲期望信息并能由計算機110訪問的任意其它媒質(zhì)。通信媒質(zhì)一般在諸如載波或其它傳輸機制這樣的已調(diào)數(shù)據(jù)信號中包含計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任意信息傳遞媒質(zhì)。術(shù)語“已調(diào)數(shù)據(jù)信號”意指其一個或多個特性以對信號內(nèi)信息進行編碼的方式被設(shè)置或改變的信號。通過示例但非限制,通信媒質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接這樣的有線媒質(zhì)、以及諸如聲音、RF、紅外這樣的無線媒質(zhì)及其它無線媒質(zhì)。上述的任意組合應(yīng)該包含在計算機可讀媒質(zhì)的范圍內(nèi)。
系統(tǒng)存儲器130包括計算機存儲媒質(zhì),其形式為易失性和/或非易失性存儲器,譬如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)一般存儲在ROM131內(nèi),它包含例如啟動期間幫助在計算機110內(nèi)的組件間傳輸信息的基本例程。RAM132一般包含數(shù)據(jù)和/或程序模塊,它們可以立即訪問并且/或者當前由處理單元120在其上操作。通過示例但非限制,圖1說明了操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機110可能還包括其它可移動/不可移動、易失性/非易失性計算機存儲媒質(zhì)。僅僅通過示例,圖1說明了對不可移動、非易失性磁性媒質(zhì)進行讀寫的硬盤驅(qū)動器140、對可移動、非易失性磁盤152進行讀寫的磁盤驅(qū)動器151、以及對可移動、非易失性光盤156進行讀寫的光盤驅(qū)動器155,譬如CD RAM或其它光學(xué)媒質(zhì)。示例性操作環(huán)境中可用的其它可移動/不可移動、易失性/非易失性計算存儲媒質(zhì)包括、但不限于磁帶盒、閃存卡、數(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)計算機存儲媒質(zhì)為計算機110提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。在圖1中,例如,所述硬盤驅(qū)動器141存儲操作系統(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ù)字以說明它們至少是不同的復(fù)制物。用戶可能通過諸如鍵盤162和指示設(shè)備161這樣的輸入設(shè)備把命令和信息輸入到計算機20中,輸入設(shè)備通常稱為鼠標、軌跡球或觸板。其它輸入設(shè)備(未示出)可能包括麥克風、游戲桿、游戲板、衛(wèi)星式轉(zhuǎn)盤、掃描儀及類似物。這些和其它輸入設(shè)備經(jīng)常通過與系統(tǒng)總線耦合的用戶輸入接口160與處理單元120相連,但也可能用其它接口和總線結(jié)構(gòu)連接,譬如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191或其它類型的顯示設(shè)備也通過諸如視頻接口190這樣的接口與系統(tǒng)總線121相連。除了監(jiān)視器之外,計算機可能還包括其它外部設(shè)備,如揚聲器197和打印機196,它們可能通過輸出外設(shè)接口190連接。
計算機110可能工作在網(wǎng)絡(luò)化環(huán)境中,該環(huán)境使用與諸如遠程計算機180這樣的一個或多個遠程計算機之間的邏輯連接。遠程計算機180可能是個人計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點,并且一般包括上述與計算機110有關(guān)的許多或全部元件,盡管圖1中僅說明了存儲器存儲設(shè)備181。圖1所述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但可能還包括其它網(wǎng)絡(luò)。這種網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡(luò)、企業(yè)內(nèi)部網(wǎng)和互聯(lián)網(wǎng)中是常見的。
當用于LAN網(wǎng)絡(luò)環(huán)境中時,計算機110通過網(wǎng)絡(luò)接口或適配器170與LAN171相連。當用于WAN網(wǎng)絡(luò)環(huán)境中時,計算機110一般包括用于在諸如因特網(wǎng)這樣的WAN173上建立通信的調(diào)制解調(diào)器172或其它裝置。調(diào)制解調(diào)器172可能是內(nèi)部或外部的,它可能通過用戶輸入接口160或其它適當機制與系統(tǒng)總線121相連。在網(wǎng)絡(luò)化環(huán)境中,關(guān)于計算機110所述的程序模塊或其部分可能存儲在遠程存儲器存儲設(shè)備中。通過示例但非限制,圖1說明了駐留在存儲器設(shè)備181上的遠程應(yīng)用程序185??梢岳斫猓揪W(wǎng)絡(luò)連接是示例性的,也可能使用在計算機間建立通信連接的其它裝置。
數(shù)字簽名子對象按照本發(fā)明,在標頭對象包括要被保護的子對象的子對象和區(qū)域時,為了能驗證已簽名的子對象和區(qū)域尚未受到干擾,則可能向標頭添加數(shù)字簽名子對象。該數(shù)字簽名子對象可能基于任何數(shù)字簽名算法,算法取得某些數(shù)據(jù)作為輸入并產(chǎn)生稍后能被驗證的簽名。在一個實施例中,所用算法是RSA算法。在另一實施例中,使用橢圓曲線算法。其它實施例可能使用其它簽名算法。
參考圖2,文件200包含標頭對象210。除了標頭信息215之外,標頭對象210包含文件屬性子對象220、流屬性子對象230、腳本命令子對象240、及內(nèi)容說明子對象250。內(nèi)容說明子對象250包含與內(nèi)容的標題252、作者254、版權(quán)256和說明258有關(guān)的信息。。腳本命令子對象240包含URL245。文件200還包含數(shù)據(jù)對象290。該簽名是示例性的,并且可以認識到除了所示那些子對象之外,標頭對象中可能還存在其它子對象的組合。
實體可能通過添加數(shù)字簽名子對象260而防止竄改部分標頭對象210。數(shù)字簽名子對象260包含區(qū)域指示符數(shù)組264和簽名266。在一個實施例中,數(shù)字簽名子對象260還包含簽名者信息268。在一個實施例中,簽名者信息268包含可用于安全驗證簽名266的一個或多個證書。
圖3示出用于創(chuàng)建數(shù)字簽名子對象260的過程。如步驟310所示,實體決定要簽署哪一個或多個標頭子對象,并確定這些區(qū)域的區(qū)域指示符。例如,參考圖2,要被簽署的區(qū)域可能包括腳本命令子對象230以及內(nèi)容說明子對象250的標題、作者和版權(quán)部分。再次參考圖3,在步驟320中,創(chuàng)建了區(qū)域指示符數(shù)組264(從圖2)。在步驟330中,區(qū)域指示符數(shù)組264內(nèi)指定的區(qū)域與區(qū)域指示符數(shù)組264串接(以它們在區(qū)域指示符數(shù)組264內(nèi)被指定的順序)。該區(qū)域然后被簽名340以產(chǎn)生簽名266(從圖2)。
當包含標頭對象的文件被修改時,其中標頭對象包括數(shù)字簽名子對象,子對象的順序可能被改變并且可能插入附加的子對象。如果附加區(qū)域或子對象要被驗證,則可能添加新的數(shù)字簽名子對象。
參考圖2,為了檢查標頭對象210的驗證而使用了數(shù)字簽名子對象260和區(qū)域指示符數(shù)組264中指定的區(qū)域。如圖4所示,在步驟410中標識了區(qū)域指示符數(shù)組264(來自圖2)中指定的標頭子對象區(qū)域。在步驟420中,這些區(qū)域與區(qū)域指示符數(shù)組264串接(以它們在區(qū)域指示符數(shù)組264內(nèi)被指定的順序)在一起。在步驟430中,檢查簽名266(來自圖2)以確定它是否是用于串接的有效簽名。
在本發(fā)明的一個實施例中,可能用數(shù)字簽名子對象簽署子對象的區(qū)域和完整的子對象。在另一實施例中,可能僅簽署完整的子對象。在本發(fā)明的一個實施例中,在一個數(shù)字簽名子對象中可能簽署來自單獨子對象的不止一個區(qū)域。在本發(fā)明的一個實施例中,被簽署的一個子對象的區(qū)域可能重疊。
在發(fā)明的一個實施例中,每個標頭對象必需包含至少一個數(shù)字簽名子對象。如果標頭對象在期望數(shù)字簽名子對象時并不包含它,則可以假定該標頭對象已受到竄改。如果標頭對象包含一個未正確驗證或者不是來自可信源的數(shù)字簽名子對象,則在一種實現(xiàn)中,例如,接收包含標頭子對象的文件的實體可能通過不使用該文件而作出相應(yīng)行動。按照該實施例,進行檢查來看是否存在任意數(shù)字簽名子對象。如果不存在,則驗證失敗。如果存在子對象,則每一個都被檢查以產(chǎn)生驗證結(jié)果。
在一個實施例中,可能按照本發(fā)明簽署作為對象O1,O2,...On的集合的任意文件F。創(chuàng)建新的對象ODS,它包括一區(qū)域指示符數(shù)組,指示已簽名對象的對象或區(qū)域以及那些對象和數(shù)組的簽名。
示例性ASF實現(xiàn)在一個實施例中,文件是ASF文件。圖5示出一個實施例中ASF文件的數(shù)字簽名子對象的組成。數(shù)字簽名子對象包括GUID 510。ASF文件內(nèi)的每個對象和子對象都以GUID開始。GUID用于唯一標識ASF文件內(nèi)的所有對象類型。每種ASF對象類型具有其自身唯一的GUID。然而,一般而言,GUID不能用于唯一標識ASF標頭對象內(nèi)的子對象,這是由于ASF標頭對象內(nèi)的多個子對象可能具有相同的對象類型,并從而具有相同的GUID。
示例性ASF數(shù)字簽名子對象500中的下一元素是子對象大小520。同樣,所有ASF對象和子對象一般包括對象和子對象的大小。如上所述,區(qū)域指示符數(shù)組540之前是區(qū)域指示符數(shù)組530中包含的已簽名區(qū)域數(shù)目。校驗和算法標識符550和簽名算法標識符560標識了數(shù)字簽名子對象中所用的校驗和及簽名算法。區(qū)域和區(qū)域指示符數(shù)組的簽名580之前是簽名長度570。簽名者信息590包含驗證或獲得關(guān)于簽名者的信息所需的信息。簽名者信息590可能包括簽名者的身份。在一個實施例中,簽名者信息590包含證書鏈,它可用來驗證該簽名者的公鑰是來自可信源的。
在示例性ASF實現(xiàn)中,每個區(qū)域指示符都包含子對象區(qū)域偏移、子對象區(qū)域大小、校驗和長度、及子對象校驗和。區(qū)域偏移標識該區(qū)域在子對象中何處開始,而區(qū)域大小標識了區(qū)域的大小。對象校驗和對應(yīng)于所指定區(qū)域的校驗和。在優(yōu)選實施例中,該校驗和算法是安全哈希算法(SHA-1)算法。該算法在聯(lián)邦信息處理標準出版物180-1中可見,該出版物在互聯(lián)網(wǎng)上http//www.itl.ni st.gov/fipspubs/fip180-1.htm可見。在另一實施例中,可以使用具有低沖突概率的任意哈希算法。在還有一個實施例中,對象校驗和對應(yīng)于包含所指定區(qū)域的子對象的校驗和。
當簽名被校驗時,為了確定該區(qū)域位于哪個子對象中(如在圖4的步驟410中),標頭子對象被檢查。對于每個被檢查的子對象而言,按照校驗和算法標識符550中指定的算法計算校驗和。在其中在區(qū)域上計算校驗和的實施例中,為包含在該子對象內(nèi)的數(shù)據(jù)計算校驗和,該子對象在給定的子對象區(qū)域偏移處開始并且擴展為給定的子對象區(qū)域大小。在其中在整個子對象上計算校驗和的實施例中,為該子對象計算校驗和。當所計算的校驗和與區(qū)域指示符內(nèi)的校驗和相匹配時,則已標識了該區(qū)域指示符的正確子對象。當已經(jīng)標識了相應(yīng)于每個區(qū)域指示符的子對象時,簽名可以被檢查。
在這種實現(xiàn)中,為了指定要被簽署的整個子對象,區(qū)域指示符內(nèi)的偏移將為零,且區(qū)域大小會等于子對象的長度。在另一實施例中,為整個子對象計算校驗和而非為所指定區(qū)域而計算。
在這種實施例中,為了允許在具有不同區(qū)域的子對象一起被驗證、以及具有不同實體來驗證子對象方面的靈活性,對象內(nèi)可能包括不止一個數(shù)字簽名子對象。
在其它實施例中,可以用其它方法來標識區(qū)域。在一個實施例中,能唯一標識子對象的數(shù)據(jù)連同區(qū)域偏移和大小數(shù)據(jù)一起包含在區(qū)域指示符內(nèi)。
在其它實施例中,可能僅簽署整個子對象。在一個實施例中,區(qū)域指示符包括整個子對象上的校驗和。在另一實施例中,還包括了校驗和的長度。在還有一個實施例中,區(qū)域指示符中使用可以標識子對象的其它數(shù)據(jù)。
結(jié)論這是一種用于數(shù)據(jù)流標頭對象保護的系統(tǒng)和方法。如上所述,雖然已經(jīng)結(jié)合各種計算設(shè)備和網(wǎng)絡(luò)結(jié)構(gòu)描述了本發(fā)明的示例性實施例,然而所基于的概念可以應(yīng)用于任何計算設(shè)備或系統(tǒng)中,其中提供數(shù)據(jù)流標頭對象保護是理想的。這樣,按照本發(fā)明用于提供數(shù)據(jù)流標頭對象保護的技術(shù)可以應(yīng)用于多種應(yīng)用和設(shè)備中。例如,本發(fā)明的技術(shù)可以應(yīng)用于計算設(shè)備的操作系統(tǒng)中,它作為設(shè)備上的獨立對象、作為另一對象的一部分、作為可從服務(wù)器下載的對象、作為設(shè)備或?qū)ο蠛途W(wǎng)絡(luò)間的“中間人”、作為分布式對象、等等。雖然這里把示例性名稱和示例選作為各種選擇的代表,然而這些名稱和示例并非限制性的。
這里所述的各種技術(shù)可以結(jié)合硬件或軟件或它們的組合而實現(xiàn)。這樣,本發(fā)明的方法和裝置、或它們的某些方面或部分可能采取有形媒質(zhì)中含有的程序代碼(即,指令)形式,有形媒質(zhì)有軟盤、CD-ROM、硬盤驅(qū)動器、或任意其它機器可讀的存儲媒質(zhì),其中,當程序代碼被載入并由如計算機這樣的機器執(zhí)行時,機器,例如計算機,則變成實現(xiàn)本發(fā)明的裝置。在可編程計算機上執(zhí)行程序代碼的情況下,計算設(shè)備一般會包括處理器、可由處理器讀取的存儲媒質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。一個或多個程序可能通過使用數(shù)據(jù)處理API及其它來使用本發(fā)明的技術(shù),為了與計算機系統(tǒng)進行通信,這些程序最好用高級程序或面向?qū)ο蟮木幊陶Z言來實現(xiàn)。然而,程序可以根據(jù)需要以匯編或機器語言來實現(xiàn)。在任何情況下,語言可能是編譯的或解釋的語言,并且與硬件實現(xiàn)結(jié)合。
本發(fā)明的方法和裝置也可以通過以程序代碼形式包含的通信來實現(xiàn),其中程序代碼在某些傳輸媒質(zhì)上被發(fā)出,譬如在電線或電纜上、通過光纖、或通過任意形式的傳輸,其中,當程序代碼被接收并被載入并由諸如EPROM、門陣列、可編程邏輯器件(PLD)、客戶端計算機、錄像機及其它、或具有如上面示例性實施例所述的有信號處理能力的接收機并由機器執(zhí)行時會成為實現(xiàn)本發(fā)明的裝置。當在通用處理器上實現(xiàn)時,程序代碼與處理器結(jié)合,以提供唯一裝置,它工作以調(diào)用本發(fā)明的功能。此外,結(jié)合本發(fā)明使用的任意存儲技術(shù)可能總是硬件和軟件的組合。
雖然已經(jīng)結(jié)合各圖的優(yōu)選實施例描述了本發(fā)明,然而可以理解,可以使用其它類似實施例,或者可以對所述實施例作出修改和添加來執(zhí)行與本發(fā)明相同的功能并且不背離本發(fā)明。例如,雖然以諸如對等網(wǎng)絡(luò)環(huán)境這樣的網(wǎng)絡(luò)化環(huán)境的上下文描述了本發(fā)明的示例性網(wǎng)絡(luò)環(huán)境,然而本領(lǐng)域的技術(shù)人員可以認識到本發(fā)明并不限于此,且本申請中所述的方法可以應(yīng)用于任何計算設(shè)備或環(huán)境中,譬如游戲控制臺、手持計算機、便攜式計算機等等,無論有線或無線,或者可以應(yīng)用于通過通信網(wǎng)絡(luò)連接的任意數(shù)量的這種計算設(shè)備中,并且在網(wǎng)絡(luò)上交互動作。此外,應(yīng)該強調(diào),尤其隨著無線網(wǎng)絡(luò)化設(shè)備的數(shù)目繼續(xù)增加,構(gòu)想了包括手持設(shè)備操作系統(tǒng)和其它應(yīng)用專用的操作系統(tǒng)的多種計算機平臺。更進一步的是,本發(fā)明可以在多個處理芯片或器件中間或上面實現(xiàn),且存儲器可能相似地在多個器件上實施。因此,本發(fā)明不應(yīng)限于任意單獨實施例,而應(yīng)該在按照所附實權(quán)利要求的寬度和范圍內(nèi)作解釋。
權(quán)利要求
1.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的方法,所述方法為至少一個區(qū)域提供數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分組成,且其中所述子對象可以在對象內(nèi)被重排而不使數(shù)字簽名失效,該方法的特征在于包括為所述至少一個區(qū)域的每一個創(chuàng)建一個數(shù)組,包含標識該區(qū)域的區(qū)域指示符;根據(jù)包含每個區(qū)域的數(shù)據(jù)和所述數(shù)組的數(shù)據(jù)產(chǎn)生數(shù)字簽名;以及把包含所述數(shù)組和所述數(shù)字簽名的簽名子對象加入數(shù)字對象。
2.如權(quán)利要求1所述的方法,其特征在于,所述至少一個區(qū)域的每一個包括來自所述至少一個子對象中的一個子對象。
3.如權(quán)利要求1所述的方法,其特征在于,所述區(qū)域指示符的每一個都包括按照校驗和算法計算的校驗和。
4.如權(quán)利要求3所述的方法,其特征在于,所述校驗和為該區(qū)域而計算。
5.如權(quán)利要求3所述的方法,其特征在于,所述校驗和為包含該區(qū)域的子對象而計算。
6.如權(quán)利要求3所述的方法,其特征在于,所述簽名子對象包含標識所使用校驗和算法的校驗和算法標識符。
7.如權(quán)利要求3所述的方法,其特征在于,所述區(qū)域標識符的每一個都包括校驗和長度。
8.如權(quán)利要求1所述的方法,其特征在于,所述簽名子對象包括一個簽名算法標識符,它標識為所述數(shù)字簽名的產(chǎn)生而使用的簽名算法。
9.如權(quán)利要求1所述的方法,其特征在于,所述簽名子對象包括簽名者標識符,標識用于驗證所述數(shù)字簽名的簽名者。
10.如權(quán)利要求9所述的方法,其特征在于,所述簽名者標識符包括數(shù)字證書,用于安全地標識并驗證所述簽名者的公鑰。
11.如權(quán)利要求1所述的方法,其特征在于,所述區(qū)域指示符的每一個都包括一個區(qū)域偏移,標識子對象中相應(yīng)區(qū)域的起始位置。
12.如權(quán)利要求1所述的方法,其特征在于,所述區(qū)域指示符的每一個都包括一個區(qū)域大小,標識子對象中相應(yīng)區(qū)域的大小。
13.如權(quán)利要求1所述的方法,其特征在于,所述對象是ASF文件的標頭對象。
14.如權(quán)利要求13所述的方法,其特征在于,所述新對象還包括GUID。
15.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的方法,所述方法為至少一個區(qū)域確認數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,其中數(shù)組包括所述至少一個區(qū)域的每一個的區(qū)域指示符,該方法的特征在于包括標識相應(yīng)于每一個所述區(qū)域指示符的區(qū)域;創(chuàng)建一個數(shù)據(jù)對象,包含所述數(shù)組,以及用于每一個所述區(qū)域指示符的與所述區(qū)域指示符對應(yīng)的所述區(qū)域;以及確認在所述數(shù)據(jù)對象上使用的所述數(shù)字簽名。
16.如權(quán)利要求15所述的方法,其特征在于,所述對象是ASF文件的標頭文件。
17.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的方法,所述方法為至少一個區(qū)域確認數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,其中數(shù)組包括所述至少一個區(qū)域的每一個的區(qū)域指示符,該方法的特征在于包括確定所述數(shù)字對象中存在的數(shù)字簽名數(shù)目;確認每一個所述數(shù)字簽名。
18.如權(quán)利要求17所述的方法,其特征在于還包括如果所述數(shù)字對象內(nèi)存在的數(shù)字簽名數(shù)目為零則返回錯誤值。
19.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的系統(tǒng),所述系統(tǒng)為至少一個區(qū)域提供數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,且其中所述子對象可能在對象內(nèi)被重排而不會使數(shù)字簽名失效,該系統(tǒng)的特征在于包括數(shù)組創(chuàng)建裝置,用于為所述至少一個區(qū)域的每一個創(chuàng)建一個數(shù)組,包含標識該區(qū)域的區(qū)域指示符;簽字裝置,用于根據(jù)包含每個區(qū)域的數(shù)據(jù)和所述數(shù)組產(chǎn)生數(shù)字簽名;以及簽名子對象添加裝置,用于把包含所述數(shù)組和所述數(shù)字簽名的簽名子對象添加至數(shù)字對象。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述至少一個區(qū)域的每一個包括來自所述至少一個子對象的一個子對象。
21.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述至少一個區(qū)域的每一個包括按照校驗和算法計算的校驗和。
22.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述校驗和為該區(qū)域而計算。
23.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述校驗和為包含該區(qū)域的子對象而計算。
24.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述簽名子對象包含標識所使用校驗和算法的校驗和算法標識符。
25.如權(quán)利要求21所述的系統(tǒng),其特征在于,所述區(qū)域標識符的每一個都包括校驗和長度。
26.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述簽名子對象包括一個簽名算法標識符,它標識為所述數(shù)字簽名的產(chǎn)生而使用的簽名算法。
27.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述簽名子對象包括簽名者標識符,標識用于驗證所述數(shù)字簽名的簽名者。
28.如權(quán)利要求27所述的系統(tǒng),其特征在于,所述簽名者標識符包括數(shù)字證書,用于安全地標識并驗證所述簽名者的公鑰。
29.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述區(qū)域指示符的每一個都包括一個區(qū)域偏移,標識子對象中相應(yīng)區(qū)域的起始位置。
30.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述區(qū)域指示符的每一個都包括一個區(qū)域大小,標識子對象中相應(yīng)區(qū)域的大小。
31.如權(quán)利要求19所述的系統(tǒng),其特征在于,所述對象是ASF文件的標頭對象。
32.如權(quán)利要求31所述的系統(tǒng),其特征在于,所述新對象還包括GUID。
33.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的系統(tǒng),所述系統(tǒng)為至少一個區(qū)域確認數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,其中數(shù)組包括所述至少一個區(qū)域的每一個的區(qū)域指示符,該系統(tǒng)的特征在于包括區(qū)域標識裝置,標識相應(yīng)于每一個所述區(qū)域指示符的區(qū)域;數(shù)據(jù)對象創(chuàng)建裝置,用于創(chuàng)建一個數(shù)據(jù)對象,包含所述數(shù)組,以及用于每一個所述區(qū)域指示符的與所述區(qū)域指示符對應(yīng)所述區(qū)域;以及確認裝置,確認所述數(shù)據(jù)對象上使用的所述數(shù)字簽名。
34.如權(quán)利要求33所述的系統(tǒng),其特征在于,所述對象是ASF文件的標頭文件。
35.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的系統(tǒng),所述系統(tǒng)為至少一個區(qū)域確認數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,其中數(shù)組包括所述至少一個區(qū)域的每一個的區(qū)域指示符,該系統(tǒng)的特征在于包括計數(shù)裝置,用于確定所述數(shù)字對象中存在的數(shù)字簽名數(shù)目;確認裝置,用于確認每一個所述數(shù)字簽名。
36.如權(quán)利要求35所述的方法,其特征在于還包括錯誤返回裝置,如果所述數(shù)字對象內(nèi)存在的數(shù)字簽名數(shù)目為零則返回錯誤值。
37.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的計算機可讀媒質(zhì),所述計算機可讀媒質(zhì)為至少一個區(qū)域提供數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,且其中所述子對象可能在對象內(nèi)被重排而不會使數(shù)字簽名失效,具有指令來執(zhí)行操作的計算機可讀媒質(zhì)的特征在于包括為所述至少一個區(qū)域的每一個創(chuàng)建一個數(shù)組,該數(shù)組包含標識該區(qū)域的區(qū)域指示符;根據(jù)包含每個區(qū)域的數(shù)據(jù)和所述數(shù)組產(chǎn)生數(shù)字簽名;以及把包含所述數(shù)組和所述數(shù)字簽名的簽名子對象添加至數(shù)字對象。
38.如權(quán)利要求37所述的計算機可讀媒質(zhì),其特征在于,所述至少一個區(qū)域的每一個包括來自所述至少一個子對象的一個子對象。
39.如權(quán)利要求37所述的計算機可讀媒質(zhì),其特征在于,所述區(qū)域指示符包括按照校驗和算法計算的校驗和。
40.如權(quán)利要求39所述的計算機可讀媒質(zhì),其特征在于,所述校驗和為該區(qū)域而計算。
41.如權(quán)利要求39所述的計算機可讀媒質(zhì),其特征在于,所述校驗和為包含該區(qū)域的子對象而計算。
42.如權(quán)利要求39所述的計算機可讀媒質(zhì),其特征在于,所述簽名子對象包含標識所使用的校驗和算法的校驗和算法標識符。
43.如權(quán)利要求39所述的計算機可讀媒質(zhì),其特征在于,所述區(qū)域標識符的每一個都包括校驗和長度。
44.如權(quán)利要求37所述的計算機可讀媒質(zhì),其特征在于,所述簽名子對象包括一個簽名算法標識符,它標識為所述數(shù)字簽名的產(chǎn)生而使用的簽名算法。
45.如權(quán)利要求37所述的計算機可讀媒質(zhì),其特征在于,所述簽名子對象包括簽名者標識符,標識用于驗證所述數(shù)字簽名的簽名者。
46.如權(quán)利要求45所述的計算機可讀媒質(zhì),其特征在于,所述簽名者標識符包括數(shù)字證書,用于安全地標識并驗證所述簽名者的公鑰。
47.如權(quán)利要求37所述的計算機可讀媒質(zhì),其特征在于,所述區(qū)域指示符的每一個都包括一個區(qū)域偏移,標識子對象中相應(yīng)區(qū)域的起始位置。
48.如權(quán)利要求37所述的計算機可讀媒質(zhì),其特征在于,所述區(qū)域指示符的每一個都包括一個區(qū)域大小,標識子對象中相應(yīng)區(qū)域的大小。
49.如權(quán)利要求37所述的計算機可讀媒質(zhì),其特征在于,所述對象是ASF文件的標頭對象。
50.如權(quán)利要求49所述的計算機可讀媒質(zhì),其特征在于,所述新對象還包括GUID。
51.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的計算機可讀媒質(zhì),所述計算機可讀媒質(zhì)為至少一個區(qū)域確認數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,其中數(shù)組包括所述至少一個區(qū)域的每一個的區(qū)域指示符,該計算機可讀媒質(zhì)的特征在于包括標識相應(yīng)于每一個所述區(qū)域指示符的區(qū)域;創(chuàng)建一個數(shù)據(jù)對象,包含所述數(shù)組,以及用于每一個所述區(qū)域指示符創(chuàng)的與所述區(qū)域指示符對應(yīng)的所述區(qū)域;以及確認所述數(shù)據(jù)對象上使用的所述數(shù)字簽名。
52.如權(quán)利要求51所述的計算機可讀媒質(zhì),其特征在于,所述對象是ASF文件的標頭文件。
53.一種與包括至少一個子對象的數(shù)字對象結(jié)合使用的計算機可讀媒質(zhì),所述計算機可讀媒質(zhì)為至少一個區(qū)域確認數(shù)字簽名,其中所述至少一個區(qū)域的每一個都由所述至少一個子對象之一的全部或部分所組成,其中數(shù)組包括所述至少一個區(qū)域的每一個的區(qū)域指示符,該計算機可讀媒質(zhì)的特征在于包括確定所述數(shù)字對象中存在的數(shù)字簽名數(shù)目;確認每一個所述數(shù)字簽名。
54.如權(quán)利要求53所述的計算機可讀媒質(zhì),其特征在于還包括如果所述數(shù)字對象內(nèi)存在的數(shù)字簽名數(shù)目為零則返回錯誤值。
55.一種用于存儲數(shù)據(jù)的存儲器,由包含存儲在所述存儲器內(nèi)的數(shù)據(jù)結(jié)構(gòu)的應(yīng)用程序來訪問,所述數(shù)據(jù)結(jié)構(gòu)適用于存儲由至少一個子對象組成的對象的確認信息,而允許所述子對象順序的變化,該存儲器的特征在于包括包含至少一個區(qū)域指示符的區(qū)域指示符數(shù)組,每個這種區(qū)域指示符都指定一個區(qū)域,它包含所述子對象之一的全部或部分;以及包含所述區(qū)域和所述區(qū)域指示符數(shù)組的每一個的數(shù)據(jù)的數(shù)字簽名。
56.如權(quán)利要求55所述的存儲器,其特征在于,所述數(shù)據(jù)結(jié)構(gòu)還包括下列的一個或多個所述數(shù)據(jù)結(jié)構(gòu)的全局唯一的標識符(GUID);數(shù)據(jù)結(jié)構(gòu)的大小;所述區(qū)域指示符數(shù)組內(nèi)的區(qū)域數(shù)目;校驗和算法標識符;簽名算法標識符,標識用于產(chǎn)生所述數(shù)字簽名的算法;所述數(shù)字簽名的簽名長度;以及用于驗證所述數(shù)字簽名的簽名者信息。
全文摘要
數(shù)據(jù)文件的標頭對象由子對象組成,子對象指定了數(shù)據(jù)流的屬性并且包含適當驗證并解譯數(shù)據(jù)對象內(nèi)的信息所需的信息。為了允許保護任意子對象組而不要求子對象遵從任意特定的排列,引入新的子對象,它包括標識子對象內(nèi)的區(qū)域以及那些區(qū)域的驗證信息。這個標頭對象內(nèi)新的子對象允許修改非保護區(qū)域并重新組織標頭內(nèi)的子對象而不使驗證信息失效。
文檔編號G11C27/02GK1490736SQ0315931
公開日2004年4月21日 申請日期2003年9月3日 優(yōu)先權(quán)日2002年9月4日
發(fā)明者D·阿登特, C·韋斯特, P·杜布里什, C·P·斯特羅姆, B·D·克賴茨, D 阿登特, 克賴茨, 固, 斯特羅姆, 祭鍤 申請人:微軟公司