專利名稱:針對復(fù)合資源文檔創(chuàng)建數(shù)字簽名的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及數(shù)據(jù)處理系統(tǒng)中的資源安全性,更具體地說,涉及數(shù)據(jù)處理系統(tǒng)中的協(xié)作業(yè)務(wù)過程內(nèi)的復(fù)合資源文檔的數(shù)字簽名。
背景技術(shù):
“文檔”可以是用于表示基于Web的商業(yè)交易或協(xié)作業(yè)務(wù)過程的實例的方便比喻。 文檔允許最終用戶對最終用戶與信息系統(tǒng)的交互以及這些交互的完整上下文的完整數(shù)字表示進(jìn)行保存、通過電子郵件發(fā)送以及進(jìn)行數(shù)字簽名。文檔也是Web應(yīng)用開發(fā)人員的方便比喻,因為它為開發(fā)人員提供單一數(shù)字資產(chǎn),這種資產(chǎn)可以在業(yè)務(wù)過程中轉(zhuǎn)移、封裝豐富交互式應(yīng)用的完整用戶體驗定義,以及包含與業(yè)務(wù)過程事務(wù)相關(guān)的所有用戶輸入、附件以及數(shù)字簽名。因此,通過文檔比喻,可以輕松地為最終用戶提供離線或脫機(jī)表格填寫體驗。參考圖3,其中示出了流經(jīng)業(yè)務(wù)過程300的交互式文檔的心理模型,所述心理模型在業(yè)務(wù)過程中被提供給諸如協(xié)作者312和協(xié)作者314之類的各個協(xié)作者,使得協(xié)作者能夠使用內(nèi)容儲存庫302和合同模板306將他們的輸入提供到文檔內(nèi)以創(chuàng)建提出的合同308。 提出的合同可以由審批者316審閱和批準(zhǔn),所述審批者通過諸如因特網(wǎng)318之類的網(wǎng)絡(luò)使用支票信貸服務(wù)320和電子資金轉(zhuǎn)移服務(wù)322通信以生成執(zhí)行的合同310。執(zhí)行的合同310 可以存儲在儲存庫304中。參考圖4,提供了交互式文檔的邏輯布置。本質(zhì)上,“交互式文檔”表示W(wǎng)eb應(yīng)用以及特定用戶或用戶組對Web應(yīng)用的體驗。諸如執(zhí)行的合同310之類的文檔一般傾向于組織成若干邏輯層400,邏輯層400通常包括數(shù)據(jù)層、業(yè)務(wù)規(guī)則層、邏輯用戶接口層以及呈現(xiàn)層。 交互式文檔400示出了表示協(xié)作業(yè)務(wù)過程內(nèi)的交互式文檔的各組件的邏輯分層方法。人工接口 402是邏輯用戶接口層和呈現(xiàn)層的一個實例,而業(yè)務(wù)邏輯和動態(tài)驗證404表示業(yè)務(wù)規(guī)則層。由數(shù)據(jù)訪問和驗證406表示的數(shù)據(jù)層表示基礎(chǔ)數(shù)據(jù),所述基礎(chǔ)數(shù)據(jù)通常以可擴(kuò)展標(biāo)記語言(XML)格式編寫,通過XML路徑語言(XPath)尋址,并旨在遵循信息系統(tǒng)最終旨在推動的后端事務(wù)的XML模式418。應(yīng)用的目標(biāo)是數(shù)據(jù)層的“填寫體驗”。所述數(shù)據(jù)層可以包括由用戶輸入的諸如數(shù)據(jù)實例408之類的簡單數(shù)據(jù)項,例如名稱、日期、編號、數(shù)量以及文件附件和數(shù)字簽名。在業(yè)務(wù)過程的關(guān)鍵點,數(shù)據(jù)可以與文檔的其余部分分離并存儲在數(shù)據(jù)庫中和/或用于推動工作流程步驟或完成的交易。業(yè)務(wù)規(guī)則、邏輯用戶接口和呈現(xiàn)層與數(shù)據(jù)層相連以提供交互服務(wù)。例如,對于使用 XML表單定義語言的業(yè)務(wù)規(guī)則,XForms模型416可以僅當(dāng)用戶為特定年齡時才使數(shù)據(jù)的特定部分相關(guān),XForms邏輯用戶接口 414可以提供將數(shù)據(jù)和業(yè)務(wù)規(guī)則元數(shù)據(jù)連接到呈現(xiàn)層的綁定機(jī)制,并且呈現(xiàn)層可以使用XFDL 412將圖形用戶體驗分為多個頁面??蓴U(kuò)展表單描述語言(XFDL)是一類可擴(kuò)展標(biāo)記語言(XML),最初在萬維網(wǎng)聯(lián)盟(W3C)N0TE-XFDL-19980902 中指定。到2010年8月為止,XFDL的當(dāng)前規(guī)范可以從以下地址獲取http//publib. boulder, ibm. com/infocenter/forms/v3r5ml/topic/com. ibm. form, designer, xfdl. doc/XFDL% 20Specification% 207. 7. pdf此類文檔上的數(shù)字簽名保護(hù)用戶提供的數(shù)據(jù),同時還保護(hù)其他層,從而創(chuàng)建數(shù)據(jù)和用于收集數(shù)據(jù)的應(yīng)用上下文之間的受保護(hù)綁定。典型地使用XML和XML簽名420通過安全性、可審核性以及互操作性410支持?jǐn)?shù)字簽名。例如,當(dāng)用戶輸入數(shù)據(jù)值“500”時,數(shù)字簽名不僅保護(hù)數(shù)據(jù)值“500”,而且還保護(hù)數(shù)據(jù)值的含義,無論數(shù)據(jù)值表示“購買500根鋼梁” 還是“出售500份股份”。此應(yīng)用要求遵循8. 1節(jié)中的W3C XML簽名標(biāo)準(zhǔn)(http://www.w3c. org/TR/2008/REC-xmldsig-core-20080610/),此標(biāo)準(zhǔn)有效地聲明符合條件的應(yīng)用應(yīng)對用戶“看到的”內(nèi)容進(jìn)行簽名和驗證,而不僅僅是所收集的基礎(chǔ)數(shù)據(jù)。在協(xié)作業(yè)務(wù)過程中,對于數(shù)字簽名而言存在復(fù)雜的因素。簡單的數(shù)字簽名應(yīng)用傾向于對作為完整、難懂的文件(通俗地說,“位桶(bucket of bits)”)的文檔進(jìn)行簽名。簽名保護(hù)整個文件,并且如果在附加簽名之后對文件做出任何修改,則數(shù)字簽名將變?yōu)闊o效。 但是,在協(xié)作業(yè)務(wù)過程中,經(jīng)常存在在附加第一數(shù)字簽名之后執(zhí)行的工作流程步驟。這些工作流程步驟創(chuàng)建與完整事務(wù)相關(guān)的額外信息。由于文檔是完全和完整的業(yè)務(wù)過程事務(wù)的表示,因此這些工作流程步驟必須修改文檔,這必須在不使數(shù)字簽名無效的情況下完成。W3C XML簽名標(biāo)準(zhǔn)以數(shù)字簽名變換的形式提供了解決方案。在不使用變換的情況下,單個XML簽名能夠?qū)θ魏螖?shù)量的URI可尋址的資源進(jìn)行簽名。這些資源中的任何數(shù)量的資源都可以采取二進(jìn)制,因此,XML簽名可以對XML內(nèi)容以及非XML內(nèi)容進(jìn)行簽名。將每個資源的加密散列置于XML簽名內(nèi),然后對一組資源散列進(jìn)行散列計算并使用簽名者的私鑰對其進(jìn)行加密。但是,W3C XML簽名標(biāo)準(zhǔn)還允許首先變換每個資源,然后對其進(jìn)行散列。 具體地說,可以使用 XPath Filter2(可從http://www.w3. org/TR/xmldsig-filter2/處獲取)變換XML資源,Xpath Filter2允許在計算散列之前減去XML資源的多個部分。過濾變換也可以只列出要簽名的內(nèi)容,但是這具有較低的安全性值,因為任何未列出的內(nèi)容都可以在不使簽名無效的情況下被添加到資源。在協(xié)作業(yè)務(wù)過程中,已知的最佳實踐是使用減法過濾器,因為有關(guān)減去內(nèi)容的表達(dá)式也是在附加簽名之后允許修改業(yè)務(wù)過程的哪些其余部分的特征描述。未由減法過濾表征的任何其他增加、更改或刪除都具有使數(shù)字簽名無效的預(yù)期效果。隨著應(yīng)用作者創(chuàng)建具有越來越多的頁面的應(yīng)用,同時還要求每個服務(wù)器具有更高的表單吞吐量,單個XML文檔可能在一段時間后變得不是無懈可擊。已知的解決方案在對交互式文檔進(jìn)行數(shù)字簽名方面具有缺陷,其中包括將文檔表示為單個XML文件(這允許減法過濾,但是性能較差)、以及將文檔表示為復(fù)合資源(這提供更佳的性能并允許在每個資源內(nèi)進(jìn)行減法過濾,但是不允許從復(fù)合資源來對整個資源進(jìn)行減法過濾)。
發(fā)明內(nèi)容
根據(jù)一個實施例,一種用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的計算機(jī)實現(xiàn)的過程包括接收包含至少一個資源的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表;使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌;以及使用密鑰加密所述簽名散列令牌。
8
根據(jù)一個實施例,一種驗證復(fù)合資源文檔的數(shù)字簽名的計算機(jī)實現(xiàn)的過程包括 接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌;使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌;以及至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較,生成簽名有效性結(jié)果。根據(jù)另一實施例,一種用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的計算機(jī)程序產(chǎn)品包括存儲有計算機(jī)可執(zhí)行程序代碼的計算機(jī)可記錄型介質(zhì)。所述計算機(jī)可執(zhí)行程序代碼包括 用于接收包含至少一個資源的復(fù)合資源文檔的計算機(jī)可執(zhí)行程序代碼;用于獲取更新后的清單資源的計算機(jī)可執(zhí)行程序代碼,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;用于指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表的計算機(jī)可執(zhí)行程序代碼;用于使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌的計算機(jī)可執(zhí)行程序代碼;以及用于使用密鑰加密所述簽名散列令牌的計算機(jī)可執(zhí)行程序代碼。在另一實施例中,一種用于驗證復(fù)合資源文檔的數(shù)字簽名的計算機(jī)程序產(chǎn)品包括存儲有計算機(jī)可執(zhí)行程序代碼的計算機(jī)可記錄型介質(zhì)。所述計算機(jī)可執(zhí)行程序代碼包括 用于接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔的計算機(jī)可執(zhí)行程序代碼; 用于獲取更新后的清單資源的計算機(jī)可執(zhí)行程序代碼,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;用于使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌的計算機(jī)可執(zhí)行程序代碼;用于使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌的計算機(jī)可執(zhí)行程序代碼;以及用于至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較,生成簽名有效性結(jié)果的計算機(jī)可執(zhí)行程序代碼。根據(jù)另一實施例,一種用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的裝置包括通信結(jié)構(gòu); 與所述通信結(jié)構(gòu)相連的存儲器,其中所述存儲器包含計算機(jī)可執(zhí)行程序代碼;與所述通信結(jié)構(gòu)相連的通信單元;與所述通信結(jié)構(gòu)相連的輸入/輸出單元;與所述通信結(jié)構(gòu)相連的顯示器;以及與所述通信結(jié)構(gòu)相連的處理器單元。所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以引導(dǎo)所述裝置執(zhí)行以下操作接收包含至少一個資源的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表;使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌;以及使用密鑰加密所述簽名散列令牌。根據(jù)另一實施例,一種用于驗證復(fù)合資源文檔的數(shù)字簽名的裝置包括通信結(jié)構(gòu); 與所述通信結(jié)構(gòu)相連的存儲器,其中所述存儲器包含計算機(jī)可執(zhí)行程序代碼;與所述通信結(jié)構(gòu)相連的通信單元;與所述通信結(jié)構(gòu)相連的輸入/輸出單元;與所述通信結(jié)構(gòu)相連的顯示器;以及與所述通信結(jié)構(gòu)相連的處理器單元。所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以弓I導(dǎo)所述裝置執(zhí)行以下操作接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌;使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌;以及至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較, 生成簽名有效性結(jié)果。
為了更全面地了解本發(fā)明,現(xiàn)在參考下面結(jié)合附圖的簡要說明和詳細(xì)說明,其中相似的標(biāo)號表示相似的部件圖1是可針對本發(fā)明的各種實施例操作的數(shù)據(jù)處理系統(tǒng)的示例性網(wǎng)絡(luò)的方塊圖;圖2是可針對本發(fā)明的各種實施例操作的示例性數(shù)據(jù)處理系統(tǒng)的方塊圖;圖3是交互式文檔流的心理模型的方塊圖;圖4是圖3的交互式文檔的分層布置的方塊圖;圖5是根據(jù)本發(fā)明的一個實施例的復(fù)合文檔系統(tǒng)的方塊圖;圖6是根據(jù)本發(fā)明的一個實施例的從單一交互式文檔到復(fù)合文檔格式的邏輯轉(zhuǎn)變的方塊圖;圖7是根據(jù)本發(fā)明的各實施例的復(fù)合文檔、使復(fù)合文檔在Web上可用的REST服務(wù)、Web應(yīng)用層和最終用戶交互層之間的關(guān)系的方塊圖;圖8是根據(jù)本發(fā)明的各實施例的與復(fù)合資源文檔的組件相關(guān)的XML簽名的邏輯位置的方塊圖;圖9是根據(jù)本發(fā)明的各實施例的清單的代碼片段實例;圖10是根據(jù)本發(fā)明的各實施例的復(fù)合資源文檔模板中的XML數(shù)據(jù)的代碼片段實例;圖11是根據(jù)本發(fā)明的各實施例的圖10的已填寫復(fù)合資源文檔中的XML數(shù)據(jù)的代碼片段實例;圖12是根據(jù)本發(fā)明的各實施例的包含復(fù)合資源文檔簽名的代碼片段實例;圖13是根據(jù)本發(fā)明的各實施例的示出引用列表生成的復(fù)合資源文檔簽名定義的另一代碼片段實例;圖14是根據(jù)本發(fā)明的各實施例的具有多個簽名者并示出指定已變換資源的手段的復(fù)合資源文檔定義的代碼片段實例;圖15是根據(jù)本發(fā)明的各實施例的指定控制引用生成的模式的代碼片段實例;圖16是根據(jù)本發(fā)明的各實施例的從生成的簽名引用列表過濾特定資源的代碼片段實例;圖17是根據(jù)本發(fā)明的生成復(fù)合資源的數(shù)字簽名的過程的流程圖;圖18是根據(jù)本發(fā)明的各實施例的驗證圖17的復(fù)合資源的數(shù)字簽名的過程的流程圖;以及圖19是根據(jù)本發(fā)明的生成圖18的簽名有效性結(jié)果的過程的流程圖。
具體實施例方式盡管下面提供了一個或多個實施例的示例性實施方式,但是所披露的系統(tǒng)和/或方法可以使用任意數(shù)量的技術(shù)實現(xiàn)。本發(fā)明決不限于下面所示的示例性實施方式、附圖和技術(shù)(包括此處所示和描述的示意性設(shè)計和實施方式),而是可在所附權(quán)利要求的范圍及其等同物的完整范圍內(nèi)進(jìn)行修改。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的各方面可以體現(xiàn)為系統(tǒng)、方法或計算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面可以采取完全硬件實施例、完全軟件實施例(包括固件、駐留軟件、微代碼等)或組合了在此通常被稱為“電路”、“模塊”或“系統(tǒng)”的軟件和硬件方面的實施例的形式。此外,本發(fā)明的各方面可以采取體現(xiàn)在一個或多個計算機(jī)可讀介質(zhì)(其中具有計算機(jī)可讀程序代碼)中的計算機(jī)程序產(chǎn)品的形式。可以使用一個或多個計算機(jī)可讀介質(zhì)的任意組合。所述計算機(jī)可讀介質(zhì)可以是計算機(jī)可讀信號介質(zhì)或計算機(jī)可讀存儲介質(zhì)。計算機(jī)可讀存儲介質(zhì)例如可以是(但不限于) 電、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置或設(shè)備或它們的任何適當(dāng)組合。計算機(jī)可讀存儲介質(zhì)的更具體的實例(非窮舉列表)可以包括以下項具有一條或多條線的電連接、便攜式計算機(jī)軟盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、可擦寫可編程只讀存儲器 (EPR0M或閃存)、光纖、便攜式光盤只讀存儲器(CDROM)、光存儲設(shè)備、磁存儲設(shè)備或它們的任何適當(dāng)組合。在本文檔的上下文中,計算機(jī)可讀存儲介質(zhì)可以是任何能夠包含或存儲由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與所述指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的有形介質(zhì)。計算機(jī)可讀信號介質(zhì)可以包括其中包含計算機(jī)可讀程序代碼(例如,在基帶中或作為載波的一部分)的傳播數(shù)據(jù)信號。此類傳播信號可以采取多種形式,包括但不限于電磁、光或它們的任何適當(dāng)組合。計算機(jī)可讀信號介質(zhì)可以是任何并非計算機(jī)可讀存儲介質(zhì)以及可以傳送、傳播或傳輸由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用或與所述指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合的程序的計算機(jī)可讀介質(zhì)??梢允褂萌魏芜m當(dāng)?shù)慕橘|(zhì)(包括但不限于無線、有線、光纜、RF等或它們的任何適當(dāng)組合)來傳輸計算機(jī)可讀介質(zhì)中包含的程序代碼。用于執(zhí)行本發(fā)明的各方面的操作的計算機(jī)程序代碼可以使用一種或多種編程語言的任意組合來編寫,所述編程語言包括諸如Java 、Smalltalk, C++或類似語言之類的面向?qū)ο蟮木幊陶Z言或者諸如“C”編程語言或類似的編程語言之類的常規(guī)過程編程語言。 Java和所有基于Java的商標(biāo)和徽標(biāo)是Sun Microsystems, Inc.在美國和/或其他國家/ 地區(qū)的商標(biāo)。所述程序代碼可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、 作為獨立的軟件包、部分地在用戶計算機(jī)上并部分地在遠(yuǎn)程計算機(jī)上執(zhí)行,或者完全地在遠(yuǎn)程計算機(jī)或服務(wù)器上執(zhí)行。在后者的情況中,所述遠(yuǎn)程計算機(jī)可以通過包括局域網(wǎng)(LAN) 或廣域網(wǎng)(WAN)的任何類型網(wǎng)絡(luò)與用戶的計算機(jī)相連,也可以與外部計算機(jī)進(jìn)行連接(例如,使用因特網(wǎng)服務(wù)提供商通過因特網(wǎng)連接)。下面參考根據(jù)本發(fā)明的實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/或方塊圖描述了本發(fā)明的各方面。將理解,所述流程圖和/或方塊圖的每個方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計算機(jī)程序指令來實現(xiàn)。這些計算機(jī)程序指令可以被提供給通用計算機(jī)、專用計算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機(jī)器,以便通過所述計算機(jī)或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的裝置。
這些計算機(jī)程序指令也可以被存儲在可引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理裝置以特定方式執(zhí)行功能的計算機(jī)可讀介質(zhì)中,以便存儲在所述計算機(jī)可讀介質(zhì)中的指令產(chǎn)生一件包括實現(xiàn)在所述一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的指令的制
P
ΡΠ O所述計算機(jī)程序指令還可被加載到計算機(jī)或其他可編程數(shù)據(jù)處理裝置,以導(dǎo)致在所述計算機(jī)或其他可編程裝置上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的過程,從而在所述計算機(jī)或其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程?,F(xiàn)在參考附圖,具體地說,參考圖1-2,提供了其中可以實現(xiàn)示例性實施例的數(shù)據(jù)處理環(huán)境的示意圖。應(yīng)該理解,圖1-2只是示意性的,并非旨在斷言或暗示對其中可實現(xiàn)不同實施例的環(huán)境的任何限制??梢詫λ镜沫h(huán)境做出許多修改。圖1示出了其中可以實現(xiàn)示例性實施例的數(shù)據(jù)處理系統(tǒng)網(wǎng)絡(luò)的圖形表示。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100是其中可以實現(xiàn)示例性實施例的計算機(jī)網(wǎng)絡(luò)。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100包含網(wǎng)絡(luò)102,網(wǎng)絡(luò)102是提供網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100內(nèi)連接在一起的各種設(shè)備和計算機(jī)之間的通信鏈路的介質(zhì)。網(wǎng)絡(luò)102可以包括諸如有線、無線通信鏈路或光纜之類的連接。在所示實例中,服務(wù)器104和服務(wù)器106連同存儲單元108—起與網(wǎng)絡(luò)102相連。 此外,客戶機(jī)110、112和114也與網(wǎng)絡(luò)102相連。客戶機(jī)110、112和114可以例如是個人計算機(jī)或網(wǎng)絡(luò)計算機(jī)。在所示實例中,服務(wù)器104將諸如引導(dǎo)文件、操作系統(tǒng)映像以及應(yīng)用之類的數(shù)據(jù)提供給客戶機(jī)110、112和114。客戶機(jī)110、112和114在該實例中是服務(wù)器104 的客戶機(jī)。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100可以包括其他服務(wù)器、客戶機(jī)以及其他未示出的設(shè)備。在所示實例中,網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100是因特網(wǎng),且網(wǎng)絡(luò)102代表全球范圍內(nèi)使用傳輸控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP)協(xié)議集來相互通信的網(wǎng)絡(luò)和網(wǎng)關(guān)的集合。在因特網(wǎng)的核心是主節(jié)點或主機(jī)之間的高速數(shù)據(jù)通信線路的主干,它包括數(shù)以萬計的商業(yè)、政府、教育以及其他路由數(shù)據(jù)和消息的計算機(jī)系統(tǒng)。當(dāng)然,網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)100也可以被實現(xiàn)為許多不同類型的網(wǎng)絡(luò),例如企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)。圖1旨在作為一個實例,并非旨在作為對不同示例性實施例的體系結(jié)構(gòu)限制?,F(xiàn)在轉(zhuǎn)到圖2,圖2示出了可針對本發(fā)明的各實施例操作的示意性數(shù)據(jù)處理系統(tǒng)的方塊圖。在該示例性實例中,數(shù)據(jù)處理系統(tǒng)200包括通信結(jié)構(gòu)202,該通信結(jié)構(gòu)提供處理器單元204、存儲器206、永久性存儲裝置208、通信單元210、輸入/輸出(I/O)單元212以及顯示器214之間的通信。處理器單元204用于執(zhí)行可以加載到存儲器206中的軟件的指令。處理器單元 204可以是包含一個或多個處理器的一組處理器或者可以是多處理器核心,具體取決于特定的實施方式。此外,處理器單元204可以使用一個或多個異構(gòu)處理器系統(tǒng)實現(xiàn),在所述異構(gòu)處理器系統(tǒng)中,單個芯片上的主處理器配備輔助處理器。作為另一示例性實例,處理器單元204可以是包含多個同一類型處理器的對稱多處理器系統(tǒng)。存儲器206和永久性存儲裝置208是存儲設(shè)備216的實例。存儲設(shè)備是任何能夠存儲信息(例如但不限于數(shù)據(jù)、采取函數(shù)形式的程序代碼和/或其他臨時和/或永久的適當(dāng)信息)的硬件。在這些實例中,存儲器206可以例如是隨機(jī)存取存儲器或任何其他適當(dāng)?shù)囊资曰蚍且资源鎯υO(shè)備。永久性存儲裝置208可以采取各種形式,具體取決于特定的實施方式。例如,永久性存儲裝置208可以包含一個或多個組件或設(shè)備。例如,永久性存儲裝置208可以是硬盤、閃存、可重寫光盤、可重寫磁帶或上述設(shè)備的某種組合。永久性存儲裝置208所使用的介質(zhì)也可以移動。例如,可移動硬盤驅(qū)動器可用于永久性存儲裝置208。在這些實例中,通信單元210提供與其他數(shù)據(jù)處理系統(tǒng)或設(shè)備的通信。在這些實例中,通信單元210為網(wǎng)絡(luò)接口卡。通信單元210可以使用物理通信鏈路和/或無線通信鏈路提供通信。輸入/輸出單元212允許通過可以連接到數(shù)據(jù)處理系統(tǒng)200的其他設(shè)備輸入和輸出數(shù)據(jù)。例如,輸入/輸出單元212可以提供連接以便用戶通過鍵盤、鼠標(biāo)和/或某種其他適合的輸入設(shè)備進(jìn)行輸入。此外,輸入/輸出單元212可以將輸出發(fā)送到打印機(jī)。顯示器 214提供向用戶顯示信息的機(jī)制。操作系統(tǒng)、應(yīng)用和/或程序的指令可以位于通過通信結(jié)構(gòu)202與處理器單元204 通信的存儲設(shè)備216中。在這些示例性實例中,指令以功能形式位于永久性存儲裝置208 上。這些指令可以被加載到存儲器206以便由處理器單元204執(zhí)行??梢杂商幚砥鲉卧?204使用計算機(jī)實現(xiàn)的指令(可以位于諸如存儲器206之類的存儲器中)來執(zhí)行不同實施例的過程。這些指令被稱為可以由處理器單元204中的處理器讀取和執(zhí)行的程序代碼、計算機(jī)可用程序代碼、計算機(jī)可執(zhí)行指令或計算機(jī)可讀程序代碼。不同實施例中的程序代碼可以包含在諸如存儲器206或永久性存儲裝置208之類的不同物理或有形計算機(jī)可讀介質(zhì)中。程序代碼218以功能形式位于計算機(jī)可讀介質(zhì)220(可以選擇性地移除)中并可以被加載到或傳輸?shù)綌?shù)據(jù)處理系統(tǒng)200以便由處理器單元204執(zhí)行。程序代碼218和計算機(jī)可讀介質(zhì)220在這些實例中形成計算機(jī)程序產(chǎn)品222。在一個實例中,計算機(jī)可讀介質(zhì) 220可以采取有形形式,例如,插入或置入驅(qū)動器或是永久性存儲裝置208的一部分的其他設(shè)備中的光盤或磁盤,以便傳輸?shù)酱鎯υO(shè)備(例如是永久性存儲裝置208的一部分的硬盤驅(qū)動器)。在有形形式中,計算機(jī)可讀介質(zhì)200還可以采取包含永久性存儲(例如連接到數(shù)據(jù)處理系統(tǒng)200的硬盤、閃盤或閃存)的存儲介質(zhì)的形式。計算機(jī)可讀介質(zhì)220的有形形式也稱為計算機(jī)可記錄存儲介質(zhì)。在某些情況下,計算機(jī)可讀介質(zhì)200是不可移動的。備選地,程序代碼218可以通過到通信單元210的通信鏈路和/或通過到輸入/ 輸出單元212的連接從計算機(jī)可讀介質(zhì)220傳輸?shù)綌?shù)據(jù)處理系統(tǒng)200。所述通信鏈路和/ 或連接在示例性實例中可以為物理或無線鏈路和/或連接。所述計算機(jī)可讀介質(zhì)還可以采取非有形介質(zhì)的形式,例如包含程序代碼的通信鏈路或無線傳輸。在某些示例性實施例中,程序代碼218可以通過網(wǎng)絡(luò)從另一設(shè)備或數(shù)據(jù)處理系統(tǒng)下載到永久性存儲裝置208以便在數(shù)據(jù)處理系統(tǒng)200內(nèi)使用。例如,服務(wù)器數(shù)據(jù)處理系統(tǒng)中的計算機(jī)可讀存儲介質(zhì)內(nèi)存儲的程序代碼可以通過網(wǎng)絡(luò)從服務(wù)器下載到數(shù)據(jù)處理系統(tǒng) 200。提供程序代碼218的數(shù)據(jù)處理系統(tǒng)可以是服務(wù)器計算機(jī)、客戶端計算機(jī)或其他某種能夠存儲和傳輸程序代碼218的設(shè)備。根據(jù)使用圖2的數(shù)據(jù)處理系統(tǒng)200作為實例的一個示例性實施例,處理器單元204 執(zhí)行用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的計算機(jī)實現(xiàn)的過程,所述過程從包括通信單元 210、存儲設(shè)備216或輸入/輸出單元212的源接收包含至少一個資源的復(fù)合資源文檔。處理器單元204獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源,并指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表。處理器單元204使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌,并使用密鑰加密所述簽名散列令牌。處理器單元204還處理所述計算機(jī)實現(xiàn)的過程以驗證復(fù)合資源文檔的數(shù)字簽名。 處理器單元204從包括通信單元210、存儲設(shè)備216或輸入/輸出單元212的源接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔。處理器單元204獲取更新后的清單資源, 其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源。處理器單元204使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌,并且使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌。處理器單元204至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較, 生成簽名有效性結(jié)果。在一個備選實施例中,圖2的包含計算機(jī)實現(xiàn)的過程的程序代碼218可以存儲在計算機(jī)可讀介質(zhì)220中作為計算機(jī)程序產(chǎn)品222。在另一示例性實施例中,用于對復(fù)合資源文檔進(jìn)行數(shù)字簽名的過程可以在一種裝置中實現(xiàn),所述裝置包括通信結(jié)構(gòu)、與所述通信結(jié)構(gòu)相連的存儲器(其中所述存儲器包含計算機(jī)可執(zhí)行程序代碼)、與所述通信結(jié)構(gòu)相連的通信單元、與所述通信結(jié)構(gòu)相連的輸入/輸出單元、與所述通信結(jié)構(gòu)相連的顯示器以及與所述通信結(jié)構(gòu)相連的處理器單元。所述裝置的處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以弓I導(dǎo)所述裝置執(zhí)行所述過程。參考圖5,圖5提供了根據(jù)本發(fā)明的一個實施例的復(fù)合文檔系統(tǒng)的方塊圖。復(fù)合文檔系統(tǒng)500是一組組件的實例,所述組件包括對諸如圖2的數(shù)據(jù)處理系統(tǒng)200之類的系統(tǒng)的典型基礎(chǔ)操作系統(tǒng)服務(wù)的支持。復(fù)合文檔系統(tǒng)500包含多個相互關(guān)聯(lián)的組件,所述組件包括增強(qiáng)簽名生成器502、 增強(qiáng)簽名元數(shù)據(jù)504、清單資源506、URI解析器508、對象元素510以及復(fù)合文檔結(jié)構(gòu)512。增強(qiáng)簽名生成器502提供處理XML語句以生成遵循所使用的適合XML標(biāo)準(zhǔn)的數(shù)字簽名的功能。簽名生成器被增強(qiáng)以包含URI解析器508,解析器508定位在創(chuàng)建數(shù)字簽名期間所需的資源。URI解析器508使用統(tǒng)一資源標(biāo)識符獲取復(fù)合文檔中包括的指定資源。 URI內(nèi)在地定位所引用的資源。將解析器與簽名生成器包括在一起允許典型商用XML簽名處理器找到所需的資源項,無論資源是本地地位于復(fù)合資源文檔內(nèi)還是遠(yuǎn)程地位于Web服務(wù)器上。數(shù)字信號庫函數(shù)的調(diào)用者將URI解析器提供給數(shù)字信號庫。URI解析器通常是諸如Java之類的編程語言的一部分(或由編程語言提供)。增強(qiáng)簽名元數(shù)據(jù)504包含可包括為簽名特性元素的額外項。所述額外項包括最終用戶位置描述符、簽名的本地日期和時間以及簽名的UTC日期和時間。清單資源506包括復(fù)合資源文檔內(nèi)包含的所有資源的列表。通常,復(fù)合資源文檔的處理器在資源被添加到復(fù)合資源文檔或從復(fù)合資源文檔刪除資源時隨時更新清單資源 506。但是,出于本發(fā)明的目的,清單資源506只需在生成數(shù)字簽名和驗證數(shù)字簽名時反映復(fù)合資源文檔中的資源。對象元素510是一組元素,其中包括一個或多個元素,所述元素包含作者在復(fù)合文檔的簽名元素內(nèi)指定的特殊內(nèi)容。在所述實例實施例中,對象元素510包含專門識別的聲明一系列資源描述符的XML屬性,所述資源描述符指示要從簽名信息構(gòu)造內(nèi)生成的引用元素列表減去的資源。復(fù)合文檔結(jié)構(gòu)512定義了包括表示交互式Web文檔格式的復(fù)合資源文檔的元素的相對位置的邏輯結(jié)構(gòu)。典型的元素包括諸如MIME類型標(biāo)識符之類的標(biāo)頭、包含向?qū)ы摰馁Y源、圖像、表單頁、數(shù)據(jù)實例、附件格式模型、交互控件和清單。圖6示出了復(fù)合文檔結(jié)構(gòu)的一個實例。參考圖6,圖6提供了根據(jù)本發(fā)明的一個實施例的從單一交互式文檔到復(fù)合文檔格式的邏輯轉(zhuǎn)變的方塊圖。結(jié)構(gòu)600表示隨時間發(fā)展的邏輯轉(zhuǎn)變。所述轉(zhuǎn)變未示出處理期間發(fā)生的變換,而是描繪了不同模型的相似點和不同點。在附圖中,W表示向?qū)ы摚現(xiàn)表示表單頁,D表示數(shù)據(jù)實例,M表示表單模型以及IC表示交互控制器。結(jié)構(gòu)602使用單一模型將文檔表示為單個XML文件格式。結(jié)構(gòu)604表示結(jié)構(gòu)602 的資源分解視圖,其中添加了可選的交互控制器以幫助管理包括結(jié)構(gòu)602內(nèi)的交互式用戶接口定義的向?qū)ы摵捅韱雾撡Y源之間的轉(zhuǎn)變。結(jié)構(gòu)606表示復(fù)合資源文檔格式的壓縮檔案格式,其中使用開放文檔格式(ODF) 打包格式作為包含交互式文檔所需的所有資源的壓縮檔案。結(jié)構(gòu)606的文檔格式內(nèi)部地包含結(jié)構(gòu)604以及因此結(jié)構(gòu)602的各種組件作為單獨資源。結(jié)構(gòu)606還包含MIME類型608 信息元素和清單610資源。可經(jīng)由允許添力Π、刪除以及更改資源和目錄,且能夠獲取資源和目錄列表的內(nèi)容的應(yīng)用編程接口訪問所述壓縮檔案格式。通常,在清單610資源的內(nèi)容中反映此類對資源和目錄的添加、刪除以及更改。參考圖7,圖7提供了根據(jù)本發(fā)明的各實施例的復(fù)合文檔、使復(fù)合文檔在Web上可用的REST服務(wù)、Web應(yīng)用層和最終用戶交互層之間的關(guān)系的方塊圖。在一個示例性實施例中,啟用基于Web的最終用戶與復(fù)合文檔的交互使用文檔的代表性狀態(tài)轉(zhuǎn)移(REST)架構(gòu)式服務(wù)前端。此服務(wù)允許復(fù)制文檔模板,并使文檔模板成為協(xié)作業(yè)務(wù)過程實例的中央制品。通過業(yè)務(wù)過程傳遞實例化文檔的REST接口的訪問控制令牌,而不是通過業(yè)務(wù)過程傳輸整個文檔。關(guān)系700在業(yè)務(wù)過程702期間用于提供應(yīng)用客戶端層704與應(yīng)用服務(wù)器層706、文檔交互層708以及復(fù)合Web資源層710的關(guān)聯(lián)。文檔交互層708提供復(fù)合資源文檔處理器、 REST接口 714以便與邏輯拆包的復(fù)合資源文檔712交互。REST接口 714中的兩個端點提供生成復(fù)合資源文檔中的指定XML數(shù)字簽名,以及驗證復(fù)合資源文檔中的指定XML數(shù)字簽名的能力。復(fù)合資源文檔處理器、REST接口 714為服務(wù)器716和客戶端718邏輯層兩者提供訪問,以便與邏輯拆包的復(fù)合資源文檔712交互以及修改邏輯拆包的復(fù)合資源文檔712。參考圖8,圖8提供了根據(jù)本發(fā)明的與復(fù)合資源文檔的組件相關(guān)的XML簽名的邏輯位置的方塊圖。一種實例實施方式使用Apache XML簽名庫(Apache是Apcahe Software Foundation的商標(biāo)),盡管實施方式也可以使用Java中內(nèi)置的XML簽名工具。所述實例實施例中的復(fù)合資源文檔802的邏輯關(guān)系800向XML簽名生成器提供URI解析器以允許簽名生成器查找復(fù)合資源文檔的資源。復(fù)合資源文檔802包括徽標(biāo)804、具有數(shù)據(jù)實例810和數(shù)據(jù)實例812的表單頁806和表單頁808。數(shù)據(jù)實例812還包含XML簽名814。在生成XML簽名814之前,在XForms實例的XML數(shù)據(jù)中顯示簽名的組成,形式如
15下
〈Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”> <SignedInfo>
<CanonicalizationMethodAlgorithm="http://www.w3.org/TR/2001/REC-xml-cl4n-20010315"/>
<SignatureMethodAlgorithm="http://www.w3.org/2001/04/xmldsig-more
#rsa-sha256"/>
〈Reference URI >.. .</Reference>+ </SignedInfo>
<SignatureValue>3H3K9TigFCzVDT4//wbZpAHr0wEAAA==</SignatureValue> (<KeyInfo>) (〈Object Id >)ft </Signature>在SigecHnfo元素內(nèi),XML簽名可以使用Reference元素列出一個或多個要簽名或驗證的資源。所述資源由URI指示,URI在所述實例實施方式中由本發(fā)明的URI解析器解析。邏輯關(guān)系800示出數(shù)據(jù)層內(nèi)XML簽名814的邏輯位置以及XML簽名814相對引用復(fù)合資源文檔802內(nèi)的資源的能力(不考慮復(fù)合資源文檔的存儲位置)。一種實施方式可以使用REST服務(wù)中的get resource端點,但是使用URI解析器的實例實施方式直接訪問復(fù)合資源文檔,因為XML簽名功能位于作為復(fù)合資源文檔處理器714的一部分的REST接口 714 (REST接口的實施方式)之后。XML簽名生成器本身則提供使用Reference元素內(nèi)的Transform元素進(jìn)一步過濾每個資源的能力。最終,計算資源的散列(摘要)。在簽名生成期間,所述散列存儲在DigestValue元素內(nèi)。在驗證期間,將所計算的散列與DigestValue進(jìn)行比較以判定資源是否已被修改(如果修改將會使簽名無效)。當(dāng)生成簽名時,一旦已計算每個資源的DigestValue并將其存儲在Reference元素內(nèi),便會計算整個包含SignecHnfo元素(見上文)的散列、使用簽名者的私鑰加密所述散列、采用base 64進(jìn)行編碼并存儲在 SignatureValue元素內(nèi)。在簽名驗證期間,將在驗證時檢查DigestValue值與所計算的資源散列是否相等,針對Reference元素指示的每個資源實現(xiàn)所提供的相等,然后在簽名生成時獲取并比較SignecHnfo的散列是否與SignatureValue元素內(nèi)存儲的base 64編碼解密后的散列值相等。如果在驗證期間出現(xiàn)任何DigestValue或SignatureValue與所計算的散列不等,則產(chǎn)生無效結(jié)果。否則,核心驗證報告成功的結(jié)果,并且應(yīng)用可以執(zhí)行諸如密鑰過期、密鑰撤銷、頒發(fā)方有效性以及受信密鑰列表成員之類的輔助檢查。除了自定義URI解析器之外,所披露的過程還通過將DigestValue計算與最終加密SignatureValue (這需要最終用戶的私鑰)分離而使得XML簽名生成器的標(biāo)準(zhǔn)行為過載。所披露的過程中的XML簽名生成器作為REST服務(wù)實施方式714的一部分位于服務(wù)器上。所披露的過程提供了一種dummy私鑰以使XML簽名生成器能夠生成SignatureValue。 所生成的SignecHnfo被返回客戶機(jī)。對SignecHnfo進(jìn)行散列計算,并使用用戶的私鑰加密散列。所披露的過程在REST接口 714內(nèi)提供了獨立的REST端點,從而在數(shù)字簽名內(nèi)設(shè)置最終正確的SignatureValue。簽名驗證不需要類似的過載,因為驗證只需要簽名者的公鑰。標(biāo)準(zhǔn)的XML簽名系統(tǒng)提供對多個資源進(jìn)行簽名,并且用于針對復(fù)合文檔創(chuàng)建基本數(shù)字簽名。但是,復(fù)合文檔上的數(shù)字簽名要求減法過濾機(jī)制是安全的。使用默認(rèn)配置,所披露的過程的一種實例實施方式執(zhí)行構(gòu)建指定數(shù)字簽名的 SignedInfo的引用元素列表的預(yù)處理步驟,從而使復(fù)合文檔的數(shù)字簽名生成步驟過載。在
一個實例中,可按照如下方式創(chuàng)建引用列表 {
對于復(fù)合資源文檔內(nèi)的每個資源H
如果R是content.xml或所述資源包含數(shù)字簽名標(biāo)記,則不執(zhí)行任何操作
否則
如果不存在R的Reference元素,貝丨J
將指示R的Reference元素添加到URI屬性中如果Reference列表包含相同文檔(URI=” ” ) Referenced,則將減去數(shù)字簽名標(biāo)記的變換添加到
否則
添加減去數(shù)字簽名標(biāo)記的相同文檔Reference (URI=” “)對R的引用的預(yù)存在性條件測試(上面的第五行)可使數(shù)字簽名標(biāo)記表達(dá)對復(fù)合資源文檔內(nèi)的特定資源的變換。將所有未具體地由數(shù)字簽名標(biāo)記引用的資源添加到數(shù)字簽名標(biāo)記,從而整體進(jìn)行簽名。因此,在默認(rèn)配置中,增加SigecHnf0以對整個復(fù)合資源文檔進(jìn)行簽名,除預(yù)存在的引用和相應(yīng)的可能變換(可能是為了個別資源的安全性進(jìn)行的減法變換)所指示的以外。在一個實例實施例中,content, xml僅包含與管理頁面導(dǎo)航和其他交互相關(guān)的控制結(jié)構(gòu),因此實例原型并不自動對content, xml資源進(jìn)行簽名,盡管數(shù)字簽名標(biāo)記的作者可以通過添加帶有URI ="content, xml”的引用元素來對context, xml資源或其任意部分進(jìn)行簽名。還從所述實例實施例為之生成引用元素的資源刪除包含數(shù)字簽名標(biāo)記的資源。 必須作為生成數(shù)字簽名的一部分而更改此資源,因此必須作為“封裝”簽名而專門處理所述資源。復(fù)合資源文檔中的一個資源為清單610。因此,如果任何資源在簽名之后被添加到復(fù)合資源文檔或從中刪除,則清單610會改變,使得保護(hù)清單610的Reference的 DigestValue不匹配,這會產(chǎn)生為無效的簽名有效性結(jié)果。實際生成的簽名確保不對簽名時存在的資源做任何更改,除(簽名后的)Reference元素中表達(dá)的任何轉(zhuǎn)換允許以外。 由于Reference元素已被簽名,因此,允許對資源進(jìn)行的僅有更改是生成簽名時存在的 ReferenceTransforms中的數(shù)字簽名標(biāo)記的作者表達(dá)的更改。XML簽名標(biāo)準(zhǔn)允許作者使用Object元素在簽名元素中包括特定內(nèi)容。實例設(shè)計使用該能力來提供對實例實施方式的默認(rèn)行為的替代。在所述實例中,承載特別識別的XML 屬性的Object元素聲明一系列資源描述符,所述描述符指示了從SignedInfo中的生成的 Reference元素列表減去的資源。所述資源描述符允許通配符匹配模式,如下面實例所示〈Object compdoc :resourceFilter =,,true,,xmlns compdoc =,,&compDocNS ; ”><compdocresourceDescripitorf ilter =,,subtract,,>attachments/ * </ compdocresourceDescriptor>〈/Object〉通過允許減去與給定資源描述符匹配的資源,所披露的機(jī)制可使數(shù)字簽名標(biāo)記的作者允許最終用戶在附加簽名之后將指定資源添加到復(fù)合資源文檔或從復(fù)合資源文檔刪除指定資源。在所述實例設(shè)計中,對象被自動添加到SignecHnfo的Reference元素列表并受數(shù)字簽名的保護(hù)。包含特定Object使過程自動將減法變換添加到Reference,以便清單610 資源在不使在生成數(shù)字簽名時針對清單610資源產(chǎn)生的散列值失效的情況下,能夠添加和刪除與資源描述符匹配的資源。此外,所述實例設(shè)計在生成簽名之前自動將額外信息寫入和簽入數(shù)字簽名標(biāo)記中。將添加另一對象元素以記錄選定SignatureProperties元素中的基本簽名元數(shù)據(jù)。所記錄的特定元數(shù)據(jù)項通常包括最終用戶(簽名者)位置描述符、簽名的本地日期和時間以及簽名的UTC日期和時間。對該元數(shù)據(jù)對象的引用被自動添加到SignecHnfo以通過數(shù)字簽名保護(hù)元數(shù)據(jù)。示例性實施例還使用X509Data (包括X509SubjectName和X509Certificate 元素)來使得Keyhfo元素完整,并且還將對Keyhfo元素的引用添加到SignecHnfo。簽名元數(shù)據(jù)和KeyInfo內(nèi)容幫助滿足XML高級電子簽名(XAdES)指定的基本安全性要求。此外,由于示例性實施例的設(shè)計基于XML簽名,因此內(nèi)在地支持諸如將已認(rèn)證時間戳添加到簽名的(XAdES)要求。參考圖9,圖9提供了根據(jù)本發(fā)明的清單的代碼片段實例。就簽名驗證而言,實例實施例的設(shè)計的一個重要方面是使復(fù)合資源文檔格式基于ODF打包,這意味著復(fù)合資源文檔中的一個資源是列出所有資源的清單。清單900提供復(fù)合資源文檔中的所有資源的列表。清單900中諸如loanl. xhtml、loan2. xhtml和loan3. xhtml之類的資源提供逐步用戶接口來收集置于數(shù)據(jù)資源loar^nstance. xml中的信息。諸如gendefault. ess和format, js之類的其他文件幫助產(chǎn)生復(fù)合資源文檔的用戶接口外觀和運行時行為。參考圖10,圖10提供了根據(jù)本發(fā)明的各實施例的復(fù)合資源文檔模板中的XML數(shù)據(jù)的代碼片段實例。在所述實例中,當(dāng)初次實例化文檔模板以代表尋求貸款的用戶推動特定業(yè)務(wù)過程時,圖10的代碼片段中示出了 loanlnstance. xml的初始內(nèi)容。在代碼片段1000中,<ds: Signature〉元素(元素1002)的初始配置不包括任何 〈Reference〉元素。缺少Reference元素是因為所披露的設(shè)計將subtraction語義賦予XML 簽名Reference列表,這意味著將在生成簽名時自動包括以及在驗證時自動檢查清單中列出的資源。參考圖11,圖11提供了根據(jù)本發(fā)明的各實施例的圖10的已填寫復(fù)合資源文檔中的XML數(shù)據(jù)的代碼片段實例。一旦用戶使用loan女.xhtml完成數(shù)據(jù)填寫體驗,數(shù)據(jù)便會看上去像代碼片段1100。數(shù)據(jù)值現(xiàn)在填入之前為空的模板字段1102。參考圖12,圖12提供了根據(jù)本發(fā)明的各實施例的包含復(fù)合資源文檔簽名的代碼片段實例。代碼片段1200表示具有使用圖9、圖10和圖11的信息的一組引用、清單和數(shù)字簽名的完整文檔。當(dāng)用戶調(diào)用圖10的元素1002中提供的Sign操作時,所披露的過程添加 loanhstance. xml (例如元素1202)的相同文檔引用,其中URI =””允許從自身刪除正在生成的簽名,并添加清單中列出的所有其他資源(例如引用1204、引用1206和引用1208) 的引用元素。還添加manifest, xml文件(清單1210)的引用。還示出了元素1212的數(shù)字SignatureValue。元素1212示出核心數(shù)字簽名生成操作(在所披露的過程生成Reference元素之后產(chǎn)生SignatureValue元素的內(nèi)容)之前的復(fù)合資源文檔定義的singed info部分的內(nèi)容。簽名驗證操作通過驗證對manifest, xml的引用來確保不會發(fā)生不希望的添加或刪除。假設(shè)ODF打包文檔處理器在清單與實際檔案內(nèi)容之間存在沖突時不加載文檔。備選實施方式可以僅在驗證簽名時檢查引用和清單奇偶性。在另一實例中,提供了授權(quán)應(yīng)用,其中期望兩個或更多授權(quán)申請者填寫各自的個人信息、附加個人簡歷副本、對文檔進(jìn)行數(shù)字簽名并使工作流程系統(tǒng)將文檔發(fā)送到下一申請者以便填寫。首位用戶創(chuàng)建的數(shù)字簽名必須減去與其他申請者對應(yīng)的數(shù)據(jù)文件子樹和其他申請者創(chuàng)建的附件。除了之前的兩個例外以外,復(fù)合資源文檔中的所有其他文件都描述用戶接口、用戶體驗或簽名用戶的數(shù)據(jù)或附件,因此應(yīng)被全部簽名。任意附加文件的能力允許將更多的XHTML頁面、CSS文件、JS文件等置于復(fù)合文檔資源內(nèi)。此外,由于刪除了 content, xml文件(因為content, xml文件包含諸如“which xhtml page should be shown first (應(yīng)首先顯示哪個xhtml頁面)”之類的控制結(jié)構(gòu)), 任何新添加的文件都可能添加針對首位簽名者簽名的內(nèi)容做出虛假聲明的新的替代用戶體驗。通過使減法過濾達(dá)到XML簽名的Reference列表級別,可以防止做出虛假聲明的可能性。參考圖13,圖13提供了根據(jù)本發(fā)明的各實施例的示出引用列表生成的復(fù)合資源文檔簽名定義的代碼片段實例。本發(fā)明的各種實施例提供的減法過濾的零情況是相對于現(xiàn)有技術(shù)的重要行為更改。默認(rèn)情況下,XML簽名要求應(yīng)用設(shè)計者使用Reference元素列出要簽名的資源。在復(fù)合資源文檔中,應(yīng)用設(shè)計者創(chuàng)建模板并通常決定包括數(shù)字簽名特性。但是,在運行時,最終用戶可能需要修改所創(chuàng)建的模板實例以推動業(yè)務(wù)過程。期望的最終用戶操作將新文件附加到復(fù)合資源文檔。因此,不可能在應(yīng)用設(shè)計時將必須在簽名生成的運行時刻簽名的所有資源列出為Reference元素。相反,復(fù)合資源文檔處理器的增強(qiáng)簽名生成器有必要在生成數(shù)字簽名時創(chuàng)建Reference元素列表。因此,使用生成復(fù)合資源文檔中的每個資源(包括清單)的Reference元素生成器的步驟擴(kuò)展簽名操作非常重要。這是從簽名減去復(fù)合資源文檔中的零個資源的情況。圖 10、圖11和圖12的代碼片段示出了這種情況(其中減去零個文件)的實例。但是,文本僅示出了正好在簽名生成過程之前和完整簽名生成過程之后的標(biāo)記。先前的實例未示出在生成Reference列表的數(shù)字簽名擴(kuò)展之后并在核心數(shù)字簽名生成之前的時刻的中間標(biāo)記。圖 13提供了額外的標(biāo)記樣例作為代碼片段1300。元素1302定義Signature元素,元素1304 定義由所披露的過程的各種實施例自動生成的Reference元素之一。在SignecHnfo中生成包括元素1304的一組引用元素,每個元素都具有空 DigestValue元素。SignatureValue也為空。在上述簽名擴(kuò)展之后,可以在核心簽名生成之前執(zhí)行其他步驟,包括例如添加ds:0bjeCt以包含諸如簽名時間和位置之類的基本簽名屬性以及另一要簽名的引用的步驟。在另一實例中,將添加d^keyhfo以存儲簽名者的數(shù)字簽名證書和主題名稱。也可以自動添加其他引用以對keylnfo進(jìn)行簽名。最后,調(diào)用核心數(shù)字簽名生成器以產(chǎn)生DigestValue內(nèi)容和SignatureValue內(nèi)容。圖12的代碼片段1200 的標(biāo)記實例中示出了增強(qiáng)簽名生成的最后結(jié)果的實例。參考圖14,圖14提供了根據(jù)本發(fā)明的各實施例的具有多個簽名者并示出指定已變換資源的手段的復(fù)合資源文檔定義的代碼片段實例。如上面針對圖13所述,默認(rèn)情況下,在將XML簽名引用列表視為減去零個元素的減法過濾時存在一個值。例如,通過編程方式而不是事先由應(yīng)用設(shè)計者(復(fù)合資源文檔模板的創(chuàng)建者)生成Reference列表作為對簽名操作的擴(kuò)展。因此,在文檔為復(fù)合資源文檔,尤其是在最終用戶能夠?qū)⒈仍嘉臋n模板中可提供的資源更多的資源添加到文檔時,所披露的能力允許實現(xiàn)對整個文檔進(jìn)行簽名的過程。此外,所披露的過程將自動生成的引用添加到任何已經(jīng)提供的引用元素,使得應(yīng)用設(shè)計者(復(fù)合資源文檔模板的創(chuàng)建者)能夠選擇以對所披露的過程生成的內(nèi)容以外的信息進(jìn)行簽名。例如,應(yīng)用邏輯可以在簽名中的ds:0bject內(nèi)生成信息,然后使用引用配置簽名以對ds Object進(jìn)行簽名。最重要的是,所披露的過程將自動生成的Reference元素列表與SignecHnfo中的 Reference元素列表進(jìn)行合并,從而僅在SingecHnfo中沒有預(yù)先存在的Reference時才針對每個資源有效地添加Reference。當(dāng)所披露的過程的實施方式添加Reference時,所述 Reference將導(dǎo)致對整個資源進(jìn)行簽名,這樣所披露的過程將對應(yīng)用設(shè)計者應(yīng)用于特定資源的任何變換或復(fù)合資源文檔處理器的替代方面做出響應(yīng)。在一個實例中,上述“ loan”應(yīng)用旨在滿足簽名者-共同簽名者場景。在代碼片段 1400中表示loar^nstance. xml文件中的數(shù)據(jù)。提供了第一簽名1402以及第二簽名1404。 第二簽名者1404的簽名在形式上與先前實例中的簽名相同,但是第一簽名者1402已經(jīng)包含對URI =””的引用,它不僅減去本身(封裝后的簽名),而且還減去第二簽名者的簽名, 所述第二簽名者的簽名必須在附加第一簽名之后生成。因此,當(dāng)所披露的過程針對第一簽名者1402生成Reference元素時,不會生成URI = ””Reference,因為它已存在。參考圖15,圖15提供了根據(jù)本發(fā)明的各實施例的指定控制引用生成的模式的代碼片段實例。上述實例代碼片段中的材料描述了減法過濾的第一步,其中使用對任何可用內(nèi)容進(jìn)行簽名的默認(rèn)上下文,而不是僅對顯式列出的內(nèi)容進(jìn)行簽名。在復(fù)合資源文檔級別處完全啟用減法過濾允許應(yīng)用設(shè)計者通過模式指定當(dāng)使用所披露的過程時,不應(yīng)生成哪些附力口的 Reference。在先前的實例中,使用通配符正則表達(dá)式語法,但是也使用XPath表達(dá)式。在此實例中,附加一個簽名以允許將文件后續(xù)添加到復(fù)合資源文檔中,但是僅添加到諸如 attachments目錄之類的特定目錄中。代碼片段1500的標(biāo)記提供了一個實例,其中元素 1502指定資源減法的顯式模式,所述模式在此實例中匹配“attachments”子目錄(因此允許用戶將資源附件添加到該目錄或從該目錄刪除資源附件)中的所有資源。參考圖16,圖16提供了根據(jù)本發(fā)明的各實施例的使用圖15的對象從生成的簽名引用列表過濾特定資源,從而抑制特定資源的引用生成的代碼片段實例。響應(yīng)于圖15的代碼片段1502內(nèi)定義的對象,所披露的過程添加對特殊ds:0bjeCt的引用,以便簽名對過濾器進(jìn)行簽名、修改manifest, xml Reference以減去與描述符匹配的文件項元素,并抑制與所提供的描述符匹配的資源的Reference元素的生成。使用代碼片段1600的另一實例由于元素1602的資源描述符而從style子目錄過濾文件。所生成的URI =”” Reference元素接收元素1604、簽名的減法變換以及資源描述符對象的并集。具有以style/開頭的URI屬性的Reference元素不出現(xiàn)在列表中。對 manifest, xml的引用(元素1606)接收刪除與描述匹配的文件項元素的減法過濾器。參考圖17,圖17提供了根據(jù)本發(fā)明的生成復(fù)合資源的數(shù)字簽名的過程的流程圖。 過程1700是使用圖5的復(fù)合文檔系統(tǒng)500的過程的實例。過程1700開始(步驟1702)并接收包含至少一個資源的復(fù)合資源文檔(步驟 1704)。過程1700獲取更新后的清單資源,其中所述清單資源列出了所述復(fù)合資源文檔中的所有資源(步驟1706)。過程1700指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表(步驟1708)。標(biāo)識現(xiàn)在指被簽名的資源,而不包括被刪除的資源。在一個示意性實施例中,生成生成的簽名引用列表進(jìn)一步包括包含指示對象的引用,其中所述對象聲明了指示從所述資源列表減去一系列資源以創(chuàng)建引用列表的一系列資源描述。過程1700使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌(步驟1710)。在一個示意性實施例中,生成散列令牌包括選擇所述引用列表中的一個或多個資源以形成選定的已變換資源,其中來自所述引用列表的其余資源形成未變換資源,以及將數(shù)字簽名變換應(yīng)用于所述選定的已變換資源,以與所述選定的已變換資源結(jié)合地使用所述未變換資源來生成所述散列令牌。具體地說,遵循當(dāng)前W3C XML簽名標(biāo)準(zhǔn)的一個示意性實施例分析Signature SignedInfo元素是否具有URI屬性指示所述引用列表中的資源的預(yù)先存在的Reference元素,所述示意性實施例僅針對不與任何預(yù)先存在的 Reference元素對應(yīng)的引用列表資源生成Reference元素。因此,可能包含^Transforms元素的每個預(yù)先存在的Reference元素替代否則將在步驟1708中針對資源生成的Reference 元素,并且從此過程產(chǎn)生的Reference元素列表在步驟1710中用于生成所述簽名散列令牌。在一個示意性實施例中,生成簽名散列令牌可以進(jìn)一步包括以下操作中的至少一個使用URI解析器獲取所述引用列表中的一個或多個資源的內(nèi)容;以及使用所述引用列表中的至少一個資源的摘要值生成所述散列令牌。具體地說,遵循當(dāng)前W3C XML簽名標(biāo)準(zhǔn)的一個示意性實施例根據(jù)摘要值(而非引用列表中所有資源的實際內(nèi)容)來計算 SignatureValue 散列令牌。過程1700使用密鑰加密簽名散列令牌以創(chuàng)建數(shù)字簽名(步驟1712),并且隨后過程結(jié)束(步驟1714)。參考圖18,圖18提供了根據(jù)本發(fā)明的驗證圖17的復(fù)合資源的數(shù)字簽名的過程的流程圖。過程1800是使用圖5的復(fù)合文檔系統(tǒng)500的過程的實例。過程1800開始(步驟180 并接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔(步驟1804)。過程1800獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源(步驟1806)。過程1800使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌(步驟180 。過程1800使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌(步驟1810)。至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較,過程1800生成簽名有效性結(jié)果(步驟181 ,隨后過程結(jié)束(步驟1814)。參考圖19,圖19提供了根據(jù)本發(fā)明的生成圖18的簽名有效性結(jié)果的過程的流程圖。過程1900是圖18的步驟1808內(nèi)將所生成的資源散列令牌和已解密的數(shù)字簽名散列令牌進(jìn)行比較以及在步驟1812內(nèi)生成簽名有效性結(jié)果的過程的實例。過程1900開始(步驟1902)并判定所生成的散列令牌是否等于簽名散列令牌(步驟1904)。當(dāng)判定所生成的散列令牌等于所述簽名散列令牌時,將得到“是”結(jié)果。當(dāng)判定所生成的散列令牌不等于已解密的數(shù)字簽名散列令牌時,將得到“否”結(jié)果。當(dāng)?shù)玫健胺瘛苯Y(jié)果時,過程1900生成為無效的簽名有效性結(jié)果(步驟1906),隨后過程結(jié)束(步驟1908)。 所述判定進(jìn)一步包括判定所述更新后的清單資源中的一系列資源是否不等于所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的一系列資源。在一個示意性實施例中,所述更新后的清單資源中的資源列表包括來自所述更新后的清單資源的一系列資源,其數(shù)量少于聲明一系列資源描述(指示當(dāng)形成生成的簽名引用列表時減去的一系列資源)的對象所指示的資源。當(dāng)在步驟1904得到“是”結(jié)果時,過程1900判定解密密鑰是否有效(步驟1910)。 當(dāng)判定解密密鑰有效時,將得到“是”結(jié)果。當(dāng)判定解密密鑰無效時,將得到“否”結(jié)果。判定解密密鑰是否有效包括使用包含密鑰過期測試、密鑰撤銷測試、密鑰頒發(fā)方證書測試和受信密鑰列表測試中的零個、一個或多個測試來測試解密密鑰的有效性。響應(yīng)于解密密鑰有效性測試失敗,將生成為無效的簽名有效性結(jié)果。當(dāng)在步驟1910中得到“是”時,過程1900響應(yīng)于所生成的散列令牌等于所述簽名散列令牌的總體判定并且解密密鑰有效性測試未失敗,生成為有效的簽名有效性結(jié)果(步驟191 ,隨后過程結(jié)束(步驟1908)。所述判定進(jìn)一步包括判定所述更新后的清單資源中的一系列資源是否等于所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的一系列資源。在一個示意性實施例中,所述更新后的清單資源中的資源列表包括來自所述更新后的清單資源的一系列資源,其數(shù)量少于聲明一系列資源描述(指示當(dāng)形成所述生成的簽名引用列表時減去的一系列資源)的對象所指示的資源。當(dāng)在步驟1910得到“否”結(jié)果時,過程1900生成為無效的簽名有效性結(jié)果(步驟1906),隨后過程如先前那樣結(jié)束(步驟1908)。因此,一個實施例中提供了用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的計算機(jī)實現(xiàn)的過程,所述過程通過提供之前的數(shù)字簽名多資源解決方案所缺乏的資源減法過濾功能,在復(fù)合資源文檔的數(shù)字簽名中提供了高安全性。所披露的計算機(jī)實現(xiàn)的過程包括接收包含至少一個資源的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;指示從所述更新后的清單資源中的資源列表減去零個、 一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表;使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌以及使用密鑰加密所述簽名散列令牌。生成所述散列令牌還可包括使用先前針對零個、一個或多個資源指定的引用元素形成引用列表,從而實現(xiàn)將數(shù)字簽名變換附加到先前指定的引用元素所指示的資源處理的能力。所述計算機(jī)實現(xiàn)的過程的示例性實施例進(jìn)一步提供驗證復(fù)合資源文檔的數(shù)字簽名的能力。所述計算機(jī)實現(xiàn)的過程進(jìn)一步包括接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌;使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌;以及至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較,生成簽名有效性結(jié)果。因此,示例性實施例披露了使用壓縮檔案的復(fù)合資源文檔,其中一個文檔中的單獨資源表示數(shù)據(jù)記錄、附件、頁面和附加元素。所述復(fù)合資源文檔保留了單個文檔架構(gòu)的優(yōu)點,同時無需對整個檔案執(zhí)行XML解析以獲取提供逐頁用戶體驗所需的片段。支持對萬維網(wǎng)聯(lián)盟(W3C)XML簽名所提供的資源的多個引用允許將W3C XML簽名與復(fù)合資源文檔結(jié)合使用來實現(xiàn)數(shù)字簽名功能。但是,所述減法過濾能力不限于處理單個XML資源。為了在更高級別上定義要同時簽名的多個資源,W3C XML簽名標(biāo)準(zhǔn)目前僅提供列表能力,具體地說, 列出從Signature SingedInfo元素中的Reference列表獲取的資源。已知的現(xiàn)有解決方案在對交互式文檔進(jìn)行數(shù)字簽名方面通常具有缺陷,其中包括將文檔表示為單個XML文件(允許減法過濾,但是性能較差),將文檔表示為復(fù)合資源(提供較佳的性能,但是不允許資源級減法過濾)。所披露的過程將復(fù)合資源文檔的概念與減法過濾相結(jié)合以在協(xié)作業(yè)務(wù)過程中的復(fù)合資源文檔上實現(xiàn)相同級別的數(shù)字簽名安全性,同時還在復(fù)合資源文檔提供的性能方面實現(xiàn)了顯著進(jìn)步。附圖中的流程圖和方塊圖示出了根據(jù)本發(fā)明的各實施例的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的可能實施方式的架構(gòu)、功能和操作。在此方面,所述流程圖或方塊圖中的每個方塊都可以表示代碼的模塊、段或部分,所述代碼包括用于實現(xiàn)指定的邏輯功能的一個或多個可執(zhí)行指令。還應(yīng)指出,在某些備選實施方式中,在方塊中說明的功能可以不按圖中說明的順序發(fā)生。例如,示為連續(xù)的兩個方塊可以實際上被基本同時地執(zhí)行,或者某些時候,取決于所涉及的功能,可以以相反的順序執(zhí)行所述方塊。還應(yīng)指出,所述方塊圖和/或流程圖的每個方塊以及所述方塊圖和/或流程圖中的方塊的組合可以由執(zhí)行指定功能或操作的基于專用硬件的系統(tǒng)或?qū)S糜布陀嬎銠C(jī)指令的組合來實現(xiàn)。以下的權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對本發(fā)明的描述其目的在于示意和描述,并非是窮盡性的,也并非是要把本發(fā)明限定到所表述的形式。對于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不偏離本發(fā)明范圍和精神的情況下,顯然可以作出許多修改和變型。對實施例的選擇和說明,是為了最好地解釋本發(fā)明的原理和實際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實施方式。本發(fā)明可以采取完全硬件實施例、完全軟件實施例或同時包含硬件和軟件元素的實施例的形式。在一個優(yōu)選實施例中,本發(fā)明在軟件中實現(xiàn),所述軟件包括但不限于固件、 駐留軟件、微代碼以及本領(lǐng)域的技術(shù)人員將認(rèn)識到的其他軟件介質(zhì)。重要的是指出,雖然在完整功能的數(shù)據(jù)處理系統(tǒng)的上下文中說明了本發(fā)明,本領(lǐng)域的技術(shù)人員將理解,可以以指令的計算機(jī)可讀介質(zhì)的形式和各種形式來發(fā)布本發(fā)明的諸過程,并且本發(fā)明均可等同地適用而與實際用于執(zhí)行發(fā)布的信號承載介質(zhì)的特定類型無關(guān)。計算機(jī)可讀介質(zhì)的實例包括可記錄型介質(zhì),諸如軟盤、硬盤驅(qū)動器、RAM、CD-ROM、 DVD-ROM以及傳輸型介質(zhì),諸如數(shù)字和模擬通信鏈路、使用諸如射頻和光波傳輸之類的傳輸形式的有線或無線通信鏈路。所述計算機(jī)可讀介質(zhì)可以采取編碼格式的形式,可以對其解碼以便在特定的數(shù)據(jù)處理系統(tǒng)中實際使用。適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少一個直接或通過系統(tǒng)總線間接連接到存儲器元件的處理器。所述存儲器元件可以包括在程序代碼的實際執(zhí)行期間采用的本地存儲器、大容量存儲裝置以及提供至少某些程序代碼的臨時存儲以減少必須在執(zhí)行期間從大容量存儲裝置檢索代碼的次數(shù)的高速緩沖存儲器。輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點設(shè)備等)可以直接或通過中間I/O控制器與系統(tǒng)相連。網(wǎng)絡(luò)適配器也可以被連接到系統(tǒng)以使所述數(shù)據(jù)處理系統(tǒng)能夠通過中間專用或公共網(wǎng)絡(luò)變得與其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲設(shè)備相連。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡只是幾種當(dāng)前可用的網(wǎng)絡(luò)適配器類型。出于說明和描述目的給出了對本發(fā)明的描述,并且所述描述并非旨在是窮舉的或是將本發(fā)明限于所公開的形式。許多修改和變化對于本領(lǐng)域的技術(shù)人員來說都將是顯而易見的。實施例的選擇和描述是為了最佳地解釋本發(fā)明的原理、實際應(yīng)用,并且當(dāng)適合于所構(gòu)想的特定使用時,使得本領(lǐng)域的其他技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實施例。
權(quán)利要求
1.一種用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的計算機(jī)實現(xiàn)的過程,所述計算機(jī)實現(xiàn)的過程包括接收包含至少一個資源的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表;使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌;以及使用密鑰加密所述簽名散列令牌。
2.如權(quán)利要求1中所述的計算機(jī)實現(xiàn)的過程,其中使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌進(jìn)一步包括選擇所述生成的簽名引用列表中的一個或多個資源以形成選定的已變換資源,其中來自所述生成的簽名引用列表的其余資源形成未變換資源; 將數(shù)字簽名變換應(yīng)用于所述選定的已變換資源;以及與所述選定的已變換資源結(jié)合地使用所述未變換資源來生成所述散列令牌。
3.如權(quán)利要求1中所述的計算機(jī)實現(xiàn)的過程,其中使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌進(jìn)一步包括以下操作中的至少一個使用URI解析器獲取所述生成的簽名引用列表中標(biāo)識的一個或多個資源的內(nèi)容;以及使用所述生成的簽名引用列表中標(biāo)識的至少一個資源的摘要值生成所述散列令牌。
4.如權(quán)利要求1中所述的計算機(jī)實現(xiàn)的過程,其中創(chuàng)建生成的簽名引用列表進(jìn)一步包括包括對對象的引用,其中所述對象聲明了指示從所述生成的簽名引用列表減去的一系列資源的一系列資源描述。
5.一種驗證復(fù)合資源文檔的數(shù)字簽名的計算機(jī)實現(xiàn)的過程,所述計算機(jī)實現(xiàn)的過程包括接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌;使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌;以及至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較,生成簽名有效性結(jié)果。
6.如權(quán)利要求5中所述的計算機(jī)實現(xiàn)的過程,其中生成簽名有效性結(jié)果進(jìn)一步包括 響應(yīng)于判定所生成的散列令牌不等于所述簽名散列令牌,生成為無效的簽名有效性結(jié)果,其中所述判定進(jìn)一步包括判定來自所述更新后的清單資源的一系列資源是否不等于所述數(shù)字簽名中的所述生成的簽名引用列表中標(biāo)識的一系列資源;使用包括密鑰過期測試、密鑰撤銷測試、密鑰頒發(fā)方證書測試以及受信密鑰列表測試中的零個、一個或多個測試來測試所獲取的解密密鑰的有效性;響應(yīng)于解密密鑰有效性測試失敗,生成為無效的簽名有效性結(jié)果;以及響應(yīng)于判定所生成的散列令牌等于所述簽名散列令牌并且解密密鑰有效性測試未失敗,生成為有效的簽名有效性結(jié)果,其中所述判定進(jìn)一步包括判定來自所述更新后的清單資源的一系列資源是否等于所述數(shù)字簽名中的所述生成的簽名引用列表中標(biāo)識的一系列資源。
7.如權(quán)利要求6中所述的計算機(jī)實現(xiàn)的過程,其中使用生成的簽名引用列表中標(biāo)識的資源生成散列令牌進(jìn)一步包括以下操作中的至少一個使用URI解析器獲取所述生成的簽名引用列表中標(biāo)識的一個或多個資源的內(nèi)容; 針對所述生成的簽名引用列表中標(biāo)識的至少一個資源執(zhí)行至少一次數(shù)字簽名變換;以及使用所述生成的簽名引用列表中標(biāo)識的至少一個資源的摘要值生成所述散列令牌。
8.一種用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的系統(tǒng),所述系統(tǒng)包括 用于接收包含至少一個資源的復(fù)合資源文檔的部件;用于獲取更新后的清單資源的部件,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;用于指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表的部件;用于使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌的部件;以及用于使用密鑰加密所述簽名散列令牌的部件。
9.如權(quán)利要求8中所述的系統(tǒng),其中用于使用所述生成的簽名引用列表中標(biāo)識的資源形成簽名散列令牌的部件進(jìn)一步包括用于選擇所述生成的簽名引用列表中的一個或多個資源以形成選定的已變換資源的部件,其中來自所述生成的簽名引用列表的其余資源形成未變換資源; 用于將數(shù)字簽名變換應(yīng)用于所述選定的已變換資源的部件;以及用于與所述選定的已變換資源結(jié)合地使用所述未變換資源來生成所述散列令牌的部件。
10.如權(quán)利要求8中所述的系統(tǒng),其中用于使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌的部件進(jìn)一步包括以下部件中的至少一個用于使用URI解析器獲取所述生成的簽名引用列表中標(biāo)識的一個或多個資源的內(nèi)容的部件;以及用于使用所述生成的簽名引用列表中標(biāo)識的至少一個資源的摘要值生成所述散列令牌的部件。
11.如權(quán)利要求8中所述的系統(tǒng),其中用于創(chuàng)建生成的簽名引用列表的部件進(jìn)一步包括用于包括對對象的引用的部件,其中所述對象聲明了指示從所述生成的簽名引用列表減去的一系列資源的一系列資源描述。
12.一種用于驗證復(fù)合資源文檔的數(shù)字簽名的系統(tǒng),所述系統(tǒng)包括用于接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔的部件;用于獲取更新后的清單資源的部件,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;用于使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌的部件;用于使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌的部件;以及用于至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較,生成簽名有效性結(jié)果的部件。
13.如權(quán)利要求12中所述的系統(tǒng),其中用于生成簽名有效性結(jié)果的部件進(jìn)一步包括 用于響應(yīng)于判定所生成的散列令牌不等于所述簽名散列令牌,生成為無效的簽名有效性結(jié)果的部件,其中所述判定進(jìn)一步包括判定來自所述更新后的清單資源的一系列資源是否不等于所述數(shù)字簽名中的所述生成的簽名引用列表中標(biāo)識的一系列資源;用于使用包括密鑰過期測試、密鑰撤銷測試、密鑰頒發(fā)方證書測試以及受信密鑰列表測試中的零個、一個或多個測試來測試所獲取的解密密鑰的有效性的部件;用于響應(yīng)于解密密鑰有效性測試失敗,生成為無效的簽名有效性結(jié)果的部件;以及用于響應(yīng)于判定所生成的散列令牌等于所述簽名散列令牌并且解密密鑰有效性測試未失敗,生成為有效的簽名有效性結(jié)果的部件,其中所述判定進(jìn)一步包括判定來自所述更新后的清單資源的一系列資源是否等于所述數(shù)字簽名中的所述生成的簽名引用列表中標(biāo)識的一系列資源。
14.如權(quán)利要求13中所述的系統(tǒng),其中用于使用生成的簽名引用列表中標(biāo)識的資源生成散列令牌的部件進(jìn)一步包括以下部件中的至少一個用于使用URI解析器獲取所述生成的簽名引用列表中標(biāo)識的一個或多個資源的內(nèi)容的部件;用于針對所述生成的簽名引用列表中標(biāo)識的至少一個資源執(zhí)行至少一次數(shù)字簽名變換的部件;以及用于使用所述生成的簽名引用列表中標(biāo)識的至少一個資源的摘要值生成所述散列令牌的部件。
15.一種用于創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的裝置,所述裝置包括 通信結(jié)構(gòu);與所述通信結(jié)構(gòu)相連的存儲器,其中所述存儲器包含計算機(jī)可執(zhí)行程序代碼; 與所述通信結(jié)構(gòu)相連的通信單元; 與所述通信結(jié)構(gòu)相連的輸入/輸出單元; 與所述通信結(jié)構(gòu)相連的顯示器;以及與所述通信結(jié)構(gòu)相連的處理器單元,其中所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以引導(dǎo)所述裝置執(zhí)行以下操作接收包含至少一個資源的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;指示從所述更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表;使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌;以及使用密鑰加密所述簽名散列令牌。
16.如權(quán)利要求15中所述的裝置,其中所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌進(jìn)一步引導(dǎo)所述裝置執(zhí)行以下操作選擇所述生成的簽名引用列表中的一個或多個資源以形成選定的已變換資源,其中來自所述生成的簽名引用列表的其余資源形成未變換資源; 將數(shù)字簽名變換應(yīng)用于所述選定的已變換資源;以及與所述選定的已變換資源結(jié)合地使用所述未變換資源來生成所述散列令牌。
17.如權(quán)利要求15中所述的裝置,其中所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以使用所述生成的簽名引用列表中標(biāo)識的資源生成散列令牌進(jìn)一步引導(dǎo)所述裝置執(zhí)行以下操作中的至少一個使用URI解析器獲取所述生成的簽名引用列表中標(biāo)識的一個或多個資源的內(nèi)容;以及使用所述生成的簽名引用列表中標(biāo)識的至少一個資源的摘要值生成所述散列令牌。
18.如權(quán)利要求15中所述的裝置,其中所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以創(chuàng)建生成的簽名引用列表進(jìn)一步引導(dǎo)所述裝置執(zhí)行以下操作包括對對象的引用,其中所述對象聲明了指示從所述生成的簽名引用列表減去的一系列資源的一系列資源描述。
19.一種用于驗證復(fù)合資源文檔的數(shù)字簽名的裝置,所述裝置包括 通信結(jié)構(gòu);與所述通信結(jié)構(gòu)相連的存儲器,其中所述存儲器包含計算機(jī)可執(zhí)行程序代碼; 與所述通信結(jié)構(gòu)相連的通信單元; 與所述通信結(jié)構(gòu)相連的輸入/輸出單元; 與所述通信結(jié)構(gòu)相連的顯示器;以及與所述通信結(jié)構(gòu)相連的處理器單元,其中所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以引導(dǎo)所述裝置執(zhí)行以下操作接收包含一個或多個資源且具有數(shù)字簽名的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了所述復(fù)合資源文檔中的所有資源;使用所述數(shù)字簽名中的生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成所生成的散列令牌;使用所獲取的解密密鑰來解密所述數(shù)字簽名內(nèi)包含的已加密散列令牌以形成簽名散列令牌;以及至少響應(yīng)于所生成的散列令牌和所述簽名散列令牌的比較,生成簽名有效性結(jié)果。
20.如權(quán)利要求19中所述的裝置,其中所述處理器單元執(zhí)行所述計算機(jī)可執(zhí)行程序代碼以進(jìn)一步引導(dǎo)所述裝置執(zhí)行以下操作中的至少一個使用URI解析器獲取所述生成的簽名引用列表中標(biāo)識的一個或多個資源的內(nèi)容; 針對所述生成的簽名引用列表中標(biāo)識的至少一個資源執(zhí)行至少一次數(shù)字簽名變換;使用所述生成的簽名引用列表中標(biāo)識的至少一個資源的摘要值生成所述散列令牌;以及生成簽名有效性結(jié)果,其中生成簽名有效性結(jié)果進(jìn)一步包括 響應(yīng)于判定所生成的散列令牌不等于所述簽名散列令牌,生成為無效的簽名有效性結(jié)果,其中所述判定進(jìn)一步包括判定來自所述更新后的清單資源的一系列資源是否不等于所述數(shù)字簽名中的所述生成的簽名引用列表中標(biāo)識的一系列資源;使用包括密鑰過期測試、密鑰撤銷測試、密鑰頒發(fā)方證書測試以及受信密鑰列表測試中的零個、一個或多個測試來測試所獲取的解密密鑰的有效性;響應(yīng)于解密密鑰有效性測試失敗,生成為無效的簽名有效性結(jié)果;以及響應(yīng)于判定所生成的散列令牌等于所述簽名散列令牌并且解密密鑰有效性測試未失敗,生成為有效的簽名有效性結(jié)果,其中所述判定進(jìn)一步包括判定來自所述更新后的清單資源的一系列資源是否等于所述數(shù)字簽名中的所述生成的簽名引用列表中標(biāo)識的一系列資源。
全文摘要
本發(fā)明涉及一種針對復(fù)合資源文檔創(chuàng)建數(shù)字簽名的方法和系統(tǒng)。一種創(chuàng)建復(fù)合資源文檔的數(shù)字簽名的計算機(jī)實現(xiàn)的過程包括接收包含至少一個資源的復(fù)合資源文檔;獲取更新后的清單資源,其中所述更新后的清單資源列出了復(fù)合資源文檔中的所有資源;指示從更新后的清單資源中的資源列表減去零個、一個或多個資源以創(chuàng)建要簽名的已標(biāo)識資源的生成的簽名引用列表;使用生成的簽名引用列表中標(biāo)識的資源生成散列令牌以形成簽名散列令牌;以及使用密鑰加密所述簽名散列令牌。驗證復(fù)合資源文檔的數(shù)字簽名進(jìn)一步包括接收復(fù)合資源文檔;獲取清單資源;使用生成的簽名引用列表中標(biāo)識的資源生成散列令牌;解密散列令牌以形成簽名散列令牌;生成簽名有效性結(jié)果。
文檔編號H04L9/32GK102447559SQ20111021658
公開日2012年5月9日 申請日期2011年7月29日 優(yōu)先權(quán)日2010年10月6日
發(fā)明者J·M·博耶爾, N·S·溫尼沙, R·馬里亞潘 申請人:國際商業(yè)機(jī)器公司