專利名稱:數(shù)據(jù)安全性的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及增加數(shù)據(jù)安全性。
背景技術(shù):
因特網(wǎng)作為有版權(quán)保護(hù)內(nèi)容的分發(fā)介質(zhì)的使用已經(jīng)帶來了對(duì)確保內(nèi)容提供者的權(quán)益的挑戰(zhàn)。具體地,需要保證內(nèi)容提供者的版權(quán)和商業(yè)模式。越來越多地,消費(fèi)者電子平臺(tái)使用加載有軟件的處理器進(jìn)行操作。這樣的軟件可提供用于呈現(xiàn)(回放)數(shù)字內(nèi)容(如音頻和/或視頻)的功能性的大部分。 一種包括可使用內(nèi)容的條款和條件的強(qiáng)制內(nèi)容所有者權(quán)益的方式是通過具有對(duì)回放軟件的控制。傳統(tǒng)上在例如電
視機(jī)或DVD播放器中實(shí)現(xiàn)的許多消費(fèi)者電子平臺(tái)是封閉使用的,但現(xiàn)在越來越多的平臺(tái)是至少部分開放的。這尤其在PC平臺(tái)上更是如此,因?yàn)橐恍┯脩艨赡芫哂袑?duì)提供內(nèi)容訪問的PC硬件和軟件的完全控制。而且,用戶可能具有大量的時(shí)間和資源來攻擊和繞過任何內(nèi)容保護(hù)機(jī)制。因此,內(nèi)容提供者必須通過不安全的網(wǎng)絡(luò)向合法用戶傳輸內(nèi)容,以及向不是所有用戶或裝置都能信任的團(tuán)體傳輸內(nèi)容。
數(shù)字權(quán)利管理系統(tǒng)常常使用加密方法來防止對(duì)內(nèi)容的未授權(quán)使用,和/或數(shù)字簽名方法以使得能夠追蹤非法分發(fā)內(nèi)容的來源。數(shù)字權(quán)利管理中產(chǎn)生的一個(gè)問題是,強(qiáng)制執(zhí)行據(jù)此使用內(nèi)容的條款和條件的
軟件代碼必須不能被篡改。
依賴于加密的數(shù)字權(quán)利管理的弱點(diǎn)的兩個(gè)區(qū)域是強(qiáng)制執(zhí)行據(jù)此使用內(nèi)容的條款和條件的軟件組件、以及密鑰分發(fā)和處理(hand 1 ing)。想要消除條款和條件的強(qiáng)制執(zhí)行的攻擊者可能嘗試通過篡改軟件組件中包括的程序代碼來實(shí)現(xiàn)這一點(diǎn)。對(duì)于密鑰處理,為了進(jìn)行回放,媒體播放器必須從許可數(shù)據(jù)庫取得解密密鑰。然后必須在存儲(chǔ)器中某些地方存儲(chǔ)該解密密鑰,以對(duì)加密內(nèi)容進(jìn)行解密。這給攻擊者提供了對(duì)密鑰進(jìn)行攻擊的兩種選擇。第一,對(duì)許可數(shù)據(jù)庫訪問功能的逆向工程可能導(dǎo)致黑盒軟件(即,攻擊者不必理解軟件功能的內(nèi)部工作),這允許攻擊者從所有許可數(shù)據(jù)庫取得資產(chǎn)密鑰(asset key)。第二,通過在內(nèi)容解密期間觀察對(duì)存儲(chǔ)器的訪問,有可能取得資產(chǎn)密鑰。在兩種情況下,都認(rèn)為密鑰是受威脅的。
防篡改軟件是指具有用來使得直接目標(biāo)篡改復(fù)雜化的特殊特征的軟件。存在各種增加軟件應(yīng)用的防篡改能力的技術(shù)。這些技術(shù)中的絕大部分基于通過增加軟件應(yīng)用的控制和數(shù)據(jù)路徑這兩者中的隨機(jī)性遮蔽和復(fù)雜度來隱藏應(yīng)用的嵌入知識(shí)。隱藏在這之后的想法是,變得更加難以僅僅通過代碼探查來提取信息。因而,更加難以找到例如處理對(duì)應(yīng)用的訪問和許可控制的代碼,從而更加難以改變它。然而,這些增加軟件應(yīng)用的防篡改能力的技術(shù)并不總是令人滿意。
發(fā)明內(nèi)容
具有用于增加數(shù)據(jù)安全性的改進(jìn)系統(tǒng)是有利的。為更好的解決此
問題,在本發(fā)明的第一方面中,提出了一種系統(tǒng),其包括輸入,用于接收待處理的內(nèi)容數(shù)據(jù);要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù);
密碼單元,用于根據(jù)相應(yīng)密鑰對(duì)內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理;
密鑰提供器,用于根據(jù)預(yù)定系統(tǒng)數(shù)據(jù)的相應(yīng)部分確定用于該內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,該部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),其中為內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部分。
因?yàn)槊荑€依賴于系統(tǒng)數(shù)據(jù)的所選部分,所以惡意用戶對(duì)該系統(tǒng)數(shù)據(jù)的所選部分的改變將也改變?cè)撁荑€,并由此阻礙了對(duì)相應(yīng)內(nèi)容塊的密碼處理的成功執(zhí)行。以此方式,保護(hù)所選部分免受篡改。因?yàn)椴煌南鄳?yīng)部分用于相應(yīng)內(nèi)容塊,所以保護(hù)相對(duì)大量的數(shù)據(jù)位免受篡改。另一優(yōu)點(diǎn)是,該系統(tǒng)使得能夠創(chuàng)建系統(tǒng)數(shù)據(jù)特定的密文(ciphertext);密碼處理僅僅在系統(tǒng)可獲得相同系統(tǒng)數(shù)據(jù)的情況下才會(huì)成功,這是因?yàn)槊荑€依賴于系統(tǒng)數(shù)據(jù)。這增強(qiáng)了安全性,因?yàn)橥ǔ?,未被授?quán)處理內(nèi)容數(shù)據(jù)的系統(tǒng)中至少一些不能獲得該系統(tǒng)數(shù)據(jù)。
在一個(gè)實(shí)施例中,預(yù)定系統(tǒng)數(shù)據(jù)包括軟件代碼,該軟件代碼包括計(jì)算機(jī)可執(zhí)行指令。在此情況下,保護(hù)軟件代碼免受未授權(quán)的修改,這是因?yàn)闊o論何時(shí)密鑰都依賴于軟件代碼的改變部分,改變軟件代碼意味著處理被擾亂。例如,要保護(hù)的軟件代碼包括與強(qiáng)制執(zhí)行數(shù)字權(quán)利管理有關(guān)的指令。在一個(gè)實(shí)施例中,密鑰提供器被布置為根據(jù)內(nèi)容數(shù)據(jù)的相應(yīng)塊之 外的內(nèi)容數(shù)據(jù)來選擇預(yù)定系統(tǒng)數(shù)據(jù)中的部分。這是在傳送側(cè)和接收側(cè) 兩者上都選擇預(yù)定系統(tǒng)數(shù)據(jù)的相同部分的非常有效的方式。這在所選 部分中帶入了隨機(jī)性,這是因?yàn)閮?nèi)容數(shù)據(jù)通常具有一定的隨機(jī)性。
在一個(gè)實(shí)施例中,密鑰提供器被布置為基于內(nèi)容數(shù)據(jù)的密文來選
擇該部分。因?yàn)槊芪木哂斜让魑?plaintext)更好的隨機(jī)性,所以在此 情況下對(duì)軟件代碼中的部分的選擇也具有更好的隨機(jī)性。
在一個(gè)實(shí)施例中,密鑰提供器被布置為基于之前處理的數(shù)據(jù)塊的 密文來選擇該部分。在需要所選部分以便處理當(dāng)前數(shù)據(jù)塊時(shí),先前處 理過的數(shù)據(jù)塊的密文容易獲得。這在接收端和傳送端皆是如此。
在一個(gè)實(shí)施例中,密鑰提供器被布置為計(jì)算所選擇部分的偽隨機(jī) 函數(shù)以獲得密碼密鑰。偽隨機(jī)特性使得更加難以破解加密方案。在另 一實(shí)施例中,偽隨機(jī)函數(shù)是散列(hash)函數(shù)。
在一個(gè)實(shí)施例中,密碼單元被布置為施加關(guān)于所述相應(yīng)密鑰的至 少一部分和所述內(nèi)容數(shù)據(jù)中的相應(yīng)塊的至少一部分的異或(X0R)運(yùn)算。 異或函數(shù)對(duì)于執(zhí)行特別有效并且仍然不容易被破解。
一個(gè)實(shí)施例包括存儲(chǔ)裝置,用于存儲(chǔ)對(duì)應(yīng)于內(nèi)容數(shù)據(jù)的密文,其 中該密碼單元被布置為解密所存儲(chǔ)的內(nèi)容數(shù)據(jù)。存儲(chǔ)裝置允許在需要 時(shí)存儲(chǔ)和取得內(nèi)容數(shù)據(jù)。因?yàn)槊芪囊蕾囉陬A(yù)定系統(tǒng)數(shù)據(jù),所以不具有 該系統(tǒng)數(shù)據(jù)的其他系統(tǒng)不能使用所存儲(chǔ)的內(nèi)容數(shù)據(jù)。因而,存儲(chǔ)裝置 是相對(duì)安全的。
在一個(gè)實(shí)施例中,密碼單元包括
加密器,用于根據(jù)相應(yīng)密鑰對(duì)從輸入接收的內(nèi)容數(shù)據(jù)中的相應(yīng)塊 進(jìn)行加密,并用于使用存儲(chǔ)裝置存儲(chǔ)該加密的內(nèi)容數(shù)據(jù);以及
解密器,用于根據(jù)相應(yīng)密鑰,對(duì)使用存儲(chǔ)裝置存儲(chǔ)的加密的內(nèi)容 數(shù)據(jù)中的相應(yīng)塊進(jìn)行解密。
因?yàn)槊荑€是系統(tǒng)特定的(即,依賴于預(yù)定系統(tǒng)數(shù)據(jù)),所以加密 和解密可有利地在相同系統(tǒng)上執(zhí)行。 一種合適的應(yīng)用是如下情況在 系統(tǒng)中本地加密和存儲(chǔ)內(nèi)容,并且以后由同一系統(tǒng)解密和使用。
在一個(gè)實(shí)施例中,密碼單元被布置為根據(jù)相應(yīng)密鑰向該內(nèi)容數(shù)據(jù) 施加數(shù)字水印。因?yàn)閿?shù)字水印依賴于密鑰數(shù)據(jù),所以其依賴于預(yù)定系 統(tǒng)數(shù)據(jù)。因而,可使用數(shù)字水印來標(biāo)識(shí)用于對(duì)內(nèi)容數(shù)據(jù)加水印的系統(tǒng)數(shù)據(jù)。
一個(gè)實(shí)施例包括用于增加數(shù)據(jù)安全性的服務(wù)器系統(tǒng),其包括
輸入,用于接收待處理的內(nèi)容數(shù)據(jù);
輸出,用于將處理過的內(nèi)容數(shù)據(jù)提供給客戶端系統(tǒng),該客戶端系 統(tǒng)包括要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù);
密碼單元,用于根據(jù)相應(yīng)密鑰對(duì)內(nèi)容數(shù)據(jù)中的相應(yīng)塊進(jìn)行密碼處
理;
密鑰提供器,用于根據(jù)預(yù)定系統(tǒng)數(shù)據(jù)中的相應(yīng)部分確定用于所述 內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,該部分不包括所有的預(yù)定系統(tǒng)數(shù) 據(jù),其中為該內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇所述預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部 分。
一個(gè)實(shí)施例包括包含客戶端系統(tǒng)和服務(wù)器系統(tǒng)的系統(tǒng),其中
服務(wù)器系統(tǒng)的輸出被布置為將由服務(wù)器系統(tǒng)的密碼單元處理過的 內(nèi)容數(shù)據(jù)提供給客戶端系統(tǒng)的輸入;以及
服務(wù)器系統(tǒng)的密鑰提供器和客戶端系統(tǒng)的密鑰提供器被布置為分 別響應(yīng)于在服務(wù)器系統(tǒng)的輸入處接收到內(nèi)容數(shù)據(jù)以及響應(yīng)于在客戶端 系統(tǒng)的輸入處接收到對(duì)應(yīng)內(nèi)容數(shù)據(jù),來使用軟件代碼的相同部分。
一個(gè)實(shí)施例包括增加數(shù)據(jù)安全性的方法,其包括
接收待處理的內(nèi)容數(shù)據(jù);
根據(jù)相應(yīng)密鑰對(duì)內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理;
塊處理的相應(yīng)密鑰,該部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),其中為內(nèi)容 數(shù)據(jù)的相應(yīng)塊選擇預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部分。
一個(gè)實(shí)施例包括增加數(shù)據(jù)安全性的方法,其包括
接收待處理的內(nèi)容數(shù)據(jù);
將處理過的內(nèi)容數(shù)據(jù)提供給客戶端系統(tǒng),客戶端系統(tǒng)包括要保護(hù) 的預(yù)定系統(tǒng)數(shù)據(jù);
根據(jù)相應(yīng)密鑰對(duì)內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理;
根據(jù)所述預(yù)定系統(tǒng)數(shù)據(jù)的相應(yīng)部分確定用于該內(nèi)容數(shù)據(jù)的相應(yīng)塊 處理的相應(yīng)密鑰,該部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),其中為所述內(nèi) 容數(shù)據(jù)的相應(yīng)塊選擇所述預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部分。
一個(gè)實(shí)施例包括用于使得處理器執(zhí)行至少一個(gè)上述方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)程序產(chǎn)品。
Stanley Chow、 Philip Eisen、 Harold Johnson和Paul C. Van Oorschot等人的 "White-BoxCryptographyandan AES Implementation" Selected Areas in Cryptography: 9th Annual International Workshop, SAC 2002, St. John's, Newfoundland, Canada, August 15-16, 2002 (下文中稱為"Chow 1"),以及Stanley Chow、 Phil Eisen、 Harold Johnson和Paul C. van Oorschot等人 的 "A White-Box DES Implementation for匪Applications": Digital Rights Management : ACM CCS-9 Workshop, 匪2002, Washington, DC, USA, November 18, 2002 (下文中稱為"Chow 2") 中公開了想要通過以下組合隱藏密鑰的方法用表示構(gòu)成而非單獨(dú)步 驟的隨機(jī)雙射來編碼其表格,以及通過將其進(jìn)一步推出到包含應(yīng)用中 來擴(kuò)展密碼邊界。
在國際申請(qǐng)?zhí)枮镻CT/IB2007/050640 (代理人文檔PH005600)的 申請(qǐng)中公開了 一種保護(hù)數(shù)據(jù)處理系統(tǒng)的完整性的方法。該方法包括確 定要保護(hù)的數(shù)據(jù)串,數(shù)據(jù)串的完整性是數(shù)據(jù)處理系統(tǒng)的完整性的指示。 計(jì)算代表預(yù)定數(shù)據(jù)處理功能的一組參數(shù),使用該組參數(shù)中的冗余度將 數(shù)據(jù)串合并到該組參數(shù)的位表示中。該系統(tǒng)能夠根據(jù)該組參數(shù)來處理
數(shù)據(jù)。該組參數(shù)代表包括密碼密鑰的密碼算法的至少一部分。該組參 數(shù)還代表查找表的網(wǎng)絡(luò)。查找表的網(wǎng)絡(luò)包括數(shù)據(jù)處理算法的白盒實(shí)現(xiàn) 方式中的多個(gè)查找表。數(shù)據(jù)處理算法包括密碼算法。
參考附圖將進(jìn)一步理解和描述本發(fā)明的這些和其他方面。
圖1是說明加密方案的圖示;
圖2是說明解密方案的圖示;
圖3是說明加密方案的圖示;
圖4是說明解密方案的圖示;
圖5是說明實(shí)施例的圖示;
圖6是說明實(shí)施例的圖示。
具體實(shí)施例方式
9防墓改軟件是其中難以進(jìn)行針對(duì)性篡改的軟件。軟件防墓改能力
在許多應(yīng)用中極其重要,這些應(yīng)用例如為數(shù)字權(quán)利管理(DRM)客戶端、 支付系統(tǒng)和條件訪問系統(tǒng)。 一個(gè)威脅是攻擊者嘗試修改如公鑰或者軟 件的關(guān)鍵動(dòng)作(如訪問判定)之類的關(guān)鍵安全數(shù)據(jù)。要注意的是,可 通過擾亂程序流并由此隱藏程序的關(guān)鍵部分,來實(shí)現(xiàn)此上下文中的代 碼硬化(hardening)。也可通過將障礙物放到攻擊者的路徑(即使攻擊 者具有關(guān)于關(guān)鍵部分的位置的完整信息)上來實(shí)現(xiàn)代碼硬化。 一種實(shí) 現(xiàn)代碼硬化的方式是交織程序的許多部分,以便強(qiáng)迫攻擊者修改代碼 的顯著部分,而不是僅僅他想要改變的片段。
一種代碼硬化方法是驗(yàn)證程序代碼的散列(hash)。散列方法作用 于相鄰的存儲(chǔ)器地址。攻擊者可能相對(duì)容易識(shí)別代碼的哪些部分被散 列了。如果需要硬化大代碼塊以免受篡改,則散列方法可能需要大量 工作。將期望具有對(duì)更大程序更有效的方法。還將期望具有其中加密 內(nèi)容(密文)依賴于程序代碼的方法,即其中程序代碼扮演關(guān)鍵性角 色的系統(tǒng)。更一般地,將期望防護(hù)相對(duì)大量的數(shù)據(jù)免受篡改,其中數(shù) 據(jù)優(yōu)選地是系統(tǒng)上可獲得的數(shù)據(jù),如硬件標(biāo)識(shí)符數(shù)據(jù)、BI0S數(shù)據(jù)、注 冊(cè)表?xiàng)l目或內(nèi)容數(shù)據(jù)段。
盡管在此說明書中,重點(diǎn)放在軟件代碼的保護(hù)上,但該概念可擴(kuò) 展到保護(hù)任何類型的數(shù)據(jù)。有效的是,所述實(shí)施例將允許使用相對(duì)大 的數(shù)據(jù)體,以用作針對(duì)密碼算法的密鑰數(shù)據(jù)。與例如密碼系統(tǒng)中經(jīng)常 使用的相對(duì)小的密鑰相比,這樣的大數(shù)據(jù)體不容易被惡意實(shí)體分發(fā)。 要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)的例子包括系統(tǒng)上存在的任何數(shù)據(jù)、硬件標(biāo)識(shí) 符、BI0S、內(nèi)容、文檔、注冊(cè)表設(shè)置、操作系統(tǒng)單元等。
在一個(gè)實(shí)施例中,使得在某個(gè)設(shè)備上運(yùn)行的程序代碼防篡改。該 方法使用密碼算法,并且基于對(duì)代碼的篡改導(dǎo)致用戶的功能性(部分) 損失這個(gè)思想。假設(shè)已經(jīng)在該設(shè)備上實(shí)現(xiàn)了解密算法。在一個(gè)實(shí)施例 中,解密算法依賴于密鑰和程序代碼。對(duì)程序代碼的修改暗示著解密 算法不再正確地進(jìn)行解密。因此,程序代碼是相對(duì)防篡改的。
一種實(shí)現(xiàn)解密算法和程序代碼之間的依賴性的方法是將密鑰定義 為代碼段。為說明這一點(diǎn),假設(shè)采用AES塊密碼。此塊密碼包含10個(gè) 循環(huán)(round),每個(gè)循環(huán)用128位循環(huán)密鑰參數(shù)化。如果每個(gè)循環(huán)密鑰 被定義為計(jì)算機(jī)程序的128位的片段,則這產(chǎn)生在循環(huán)密鑰中使用的程序的總共10x128=1280個(gè)位。因此,使得計(jì)算機(jī)程序代碼的這1280 個(gè)位防篡改,這是因?yàn)橛?jì)算機(jī)程序代碼中的這些位的改變暗示著密鑰 的改變,而密鑰需要是無改變形式以獲得期望的程序行為。
在一個(gè)實(shí)施例中,可使得任意大小的程序防篡改。使用塊大小為n 位的塊密碼作為例子。當(dāng)對(duì)可能由超過n個(gè)位構(gòu)成的內(nèi)容進(jìn)行加密/解 密時(shí),需要為內(nèi)容的多個(gè)塊進(jìn)行多次加密/解密。已經(jīng)開發(fā)出指定如何 配合加密/解密的塊密碼模式。設(shè)Pi是第i個(gè)明文塊,以及設(shè)Ci是對(duì)應(yīng) 的第i個(gè)密文塊。密文塊Ci依賴于代碼段f"換言之,Pi的加密和Ci
的解密均依賴于代碼段fi。
Ci所依賴的代碼段從作為Ci之前的密文塊
的值Cw得到。因?yàn)槊艽a的一個(gè)屬性是連續(xù)密文塊形成偽隨機(jī)序列,所 以Ci所依賴的代碼段從偽隨機(jī)值得到;并因此偽隨機(jī)地選擇代碼段。
在加密/解密依賴于代碼段f的情況下,對(duì)代碼段f中的位的修改 導(dǎo)致不正確的加密/解密。另外,以偽隨機(jī)方式選擇加密/解密所依賴 的代碼段。由此,提供了使得大軟件程序防篡改的有效方法。
塊密碼通常加密/解密恒定大小(如n位)的塊。對(duì)于超過n位的 內(nèi)容應(yīng)用塊密碼的方式被稱為塊密碼模式。NIST已經(jīng)標(biāo)準(zhǔn)化了數(shù)種塊 密碼模式。這些模式中最常用的是CBC(密碼塊鏈接)模式。可沒有限 制地使用該模式和其他塊密碼模式。CBC模式如下工作;也參見圖l和 圖2。
假設(shè)明文和密文被分為n位的塊。第i個(gè)明文塊用Pi表示,以及 第i個(gè)密文塊用"表示。另夕卜,EK(Pi)表示用密鑰K對(duì)Pi的加密,DK(Ci)
表示用密鑰K對(duì)Ci的解密。根據(jù)CBC的明文和密文之間的關(guān)系由
c ^(A十c,—》和p,-Z^(c,)十c,-'給出,其中c。被定義為某一初值IV,并
且 表示異或(X0R)運(yùn)算。這個(gè)塊密碼模式背后的思想是通過向其增加 密文塊i-l來隨機(jī)化明文塊i。
在一個(gè)實(shí)施例中,使用了 CBC模式。也可使用其他塊密碼模式。 為實(shí)現(xiàn)程序代碼和加密/解密之間的依賴性,出現(xiàn)兩個(gè)問題。第一,出 現(xiàn)使得代碼段依賴于第i次加密/解密的問題。第二,出現(xiàn)如何實(shí)現(xiàn)該 依賴性的問題。
如下回答第一問題。假設(shè)密文塊i-1確定依賴于第i次加密/解密 的代碼段。例如,這可如下實(shí)現(xiàn)。假設(shè)需要防篡改的軟件代碼存儲(chǔ)在 存儲(chǔ)器中地址0、 1、…28-1。然而,這僅僅是例子。可按直接明了的方式使用更多數(shù)目的地址。每個(gè)地址包含程序的一個(gè)字。另外,假設(shè)
使得塊密碼模式中的每次加密/解密依賴于由m個(gè)字構(gòu)成的代碼段。這 樣,使得加密/解密i+l依賴于地址Cw mod 28, (Cw+1) mod 28,…, (Cw+m) mod 28處的軟件代碼段。
因?yàn)槊芪膲K的序列可被看作偽隨機(jī)位流,所以此策略具有如下屬 性在每次加密/解密中,檢查(偽)隨機(jī)代碼段的完整性。這暗示著 可使得相對(duì)大的程序防篡改,這是因?yàn)槌绦蛑械拿看胃淖兌甲罱K導(dǎo)致 不正確的加密/解密。
出現(xiàn)的第二個(gè)問題是如何實(shí)現(xiàn)塊加密/解密和代碼段之間的依賴 性。在CBC模式下,使得第i次加密/解密依賴于第i-l個(gè)密碼塊。按 照建立此依賴性的相同方式,可建立對(duì)代碼段的依賴性。這意味著如 果第i次加密/解密依賴于由n位(其中,n位是塊大小)構(gòu)成的代碼
段f (C卜!),則由A = & (A c'-' '》和A = ^ (c,)十c,—,十/(c,—,)分別給出密
文塊Ci和明文塊Pi。在圖3和圖4中示出了這一點(diǎn)。
圖5例示了本發(fā)明的一個(gè)實(shí)施例。該圖示出了用于處理數(shù)據(jù)的系 統(tǒng)IOO。該系統(tǒng)可以是客戶端系統(tǒng)。該圖還示出了用于處理數(shù)據(jù)的服務(wù) 器系統(tǒng)200。例如,服務(wù)器200準(zhǔn)備處理過的數(shù)據(jù)110,其中該數(shù)據(jù)110 例如通過經(jīng)由諸如因特網(wǎng)的數(shù)據(jù)網(wǎng)絡(luò)的傳輸或者借助于諸如CD-ROM盤 的可移除存儲(chǔ)介質(zhì)提供給客戶端100。數(shù)據(jù)還可來源于內(nèi)部存儲(chǔ)介質(zhì) 116。
該圖示出了輸入102。輸入102接收需要被處理的數(shù)據(jù)。例如,其 從服務(wù)器200接收數(shù)據(jù)。還可從本地?cái)?shù)據(jù)存儲(chǔ)裝置116接收數(shù)據(jù)。還 可從本地運(yùn)行的另 一應(yīng)用或從用戶輸入接收數(shù)據(jù)。數(shù)據(jù)可包括例如數(shù) 據(jù)文件、圖像、音頻文件、電影或流媒體內(nèi)容(如流視頻或流音頻)。 數(shù)據(jù)可被加密,并且處理可以是對(duì)加密數(shù)據(jù)的解密。處理還可涉及對(duì) 數(shù)據(jù)的簽名或加水印,或者驗(yàn)證數(shù)據(jù)的簽名或水印。該數(shù)據(jù)被轉(zhuǎn)發(fā)給 選擇器106。
密鑰提供器106選擇要在處理所接收的內(nèi)容時(shí)使用的軟件代碼中 的部分112。優(yōu)選地,這樣實(shí)現(xiàn)選擇器106,以使得其有規(guī)律地選擇代 碼中的不同部分,以實(shí)現(xiàn)按時(shí)間選擇全部軟件代碼104。密鑰提供器 106根據(jù)所選部分112提供密碼密鑰。所選部分112可直接表示密碼密 鑰,或者可從該部分112得到的密碼密鑰。例如,可將密鑰計(jì)算為該代碼部分的內(nèi)容的散列函數(shù)。優(yōu)選地,密鑰提供器106被布置為基于 密文選擇該部分。如果使用了塊密碼,則可使用先前處理的數(shù)據(jù)塊。
密碼單元108根據(jù)由密鑰提供器106提供的密鑰,對(duì)經(jīng)由輸入102 取得的數(shù)據(jù)進(jìn)行密碼處理。該密碼處理可包括使用所提供的密鑰對(duì)內(nèi) 容進(jìn)行解密。密碼單元還可直接使用所選部分的位表示作為密鑰,例 如,這通過對(duì)所選部分的位與明文或密文進(jìn)行異或運(yùn)算來進(jìn)行。可使 用涉及所選部分112和內(nèi)容110的任何線性或非線性運(yùn)算來建立兩者 之間的依賴性。密碼處理還可涉及加密和/或數(shù)字簽名和/或數(shù)字水印。 然而,這些是密鑰處理的非限制性例子。
密鑰單元108的輸出是密碼處理過的數(shù)據(jù)114。輸出該數(shù)據(jù)用于存 儲(chǔ)裝置116或用于傳輸或用于進(jìn)一步的處理和/或呈現(xiàn)。例如,輸出的 數(shù)據(jù)114可包括用于在電視上呈現(xiàn)的視頻信號(hào)。
系統(tǒng)100可用于數(shù)據(jù)在本地或遠(yuǎn)程存儲(chǔ)介質(zhì)116上的安全存儲(chǔ)。 存儲(chǔ)裝置116用于存儲(chǔ)對(duì)應(yīng)于內(nèi)容數(shù)據(jù)的密文。每當(dāng)需要解密數(shù)據(jù)時(shí), 將存儲(chǔ)裝置116中存儲(chǔ)的加密數(shù)據(jù)經(jīng)由輸入102饋送到密碼單元108 和密鑰提供器106。
可從外部源接收在存儲(chǔ)裝置116上存儲(chǔ)的加密數(shù)據(jù)。然而,該數(shù) 據(jù)還可由系統(tǒng)自身生成;例如,可按加密形式安全地存儲(chǔ)用戶簡檔或 用戶文檔或音頻/視頻內(nèi)容。為此,優(yōu)選地,密碼單元包括加密器和解 密器兩者。首先使用密鑰提供器106和密碼單元108對(duì)從輸入102接 收的未加密數(shù)據(jù)進(jìn)行加密,然后將加密數(shù)據(jù)114存儲(chǔ)在存儲(chǔ)裝置116 中,然后每當(dāng)在需要時(shí),將所存儲(chǔ)的加密數(shù)據(jù)從存儲(chǔ)裝置116饋送到 輸入102并從那兒饋送到密鑰提供器106和密碼單元108以獲得輸出 114處的解密數(shù)據(jù)。
可替換地,密碼單元根據(jù)軟件代碼104的所選部分112來向內(nèi)容 數(shù)據(jù)施加數(shù)字水印。
一個(gè)實(shí)施例包括服務(wù)器系統(tǒng)200。該服務(wù)器系統(tǒng)200用于在把內(nèi)容 數(shù)據(jù)提供給客戶端100的輸入112之前準(zhǔn)備該內(nèi)容數(shù)據(jù)。服務(wù)器200 和客戶端100可在不同計(jì)算機(jī)上運(yùn)行。服務(wù)器200和客戶端100還可 由在單個(gè)機(jī)器上運(yùn)行的不同進(jìn)程構(gòu)成。服務(wù)器200具有在客戶端100 上使用的軟件代碼的知識(shí)。該知識(shí)至少足以產(chǎn)生能在客戶端100上根 據(jù)軟件代碼104的所選部分112正確處理的內(nèi)容數(shù)據(jù)。例如,服務(wù)器具有與可由密鑰提供器106選擇的代碼的不同部分112相對(duì)應(yīng)的預(yù)先 計(jì)算的密碼密鑰的列表??商鎿Q地,密鑰提供器206具有軟件代碼104 的本地副本。可替換地,作為例子,服務(wù)器200的選擇器206訪問客 戶端100中存儲(chǔ)的實(shí)際代碼104。服務(wù)器系統(tǒng)200包括輸出202、密鑰 提供器206、密碼單元208和輸入210。內(nèi)容數(shù)據(jù)214由輸入210接收 并被轉(zhuǎn)發(fā)到密鑰提供器206和密碼單元208。密鑰提供器206選擇軟件 代碼104中的部分112,并根據(jù)所選部分112將密鑰提供給密碼單元 208。密碼單元208使用該密鑰對(duì)輸入的內(nèi)容數(shù)據(jù)進(jìn)行密碼處理。經(jīng)由 輸出202將處理過的內(nèi)容數(shù)據(jù)IIO提供給客戶端系統(tǒng)100的輸入102。 一個(gè)實(shí)施例包括增加數(shù)據(jù)安全性的方法,該方法包括接收待處理 的內(nèi)容數(shù)據(jù)(110);根據(jù)相應(yīng)密鑰對(duì)內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理; 根據(jù)要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)(104)的相應(yīng)部分(112)確定用于內(nèi)容數(shù)據(jù) 的相應(yīng)塊處理的相應(yīng)密鑰,該部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),其中 根據(jù)預(yù)定方案為內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部 分。
一個(gè)實(shí)施例包括增加數(shù)據(jù)安全性的方法,包括接收待處理的內(nèi)容 數(shù)據(jù)(214);將處理過的內(nèi)容數(shù)據(jù)(110)提供給客戶端系統(tǒng)(100),所述 客戶端系統(tǒng)包括要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)(104);根據(jù)相應(yīng)密鑰對(duì)內(nèi)容數(shù) 據(jù)的相應(yīng)塊進(jìn)行密碼處理;根據(jù)預(yù)定系統(tǒng)數(shù)據(jù)(104)的相應(yīng)部分(112) 確定用于內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,該部分不包括所有的預(yù) 定系統(tǒng)數(shù)據(jù),其中根據(jù)預(yù)定方案為內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇預(yù)定系統(tǒng)數(shù) 據(jù)的不同相應(yīng)部分。
一個(gè)實(shí)施例包括計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括用于使 得處理器執(zhí)行任何上述方法的計(jì)算機(jī)可執(zhí)行指令。
圖6說明了適合于實(shí)現(xiàn)所述系統(tǒng)和方法的示例硬件體系。例如, 可在個(gè)人計(jì)算機(jī)、機(jī)頂盒、電視機(jī)或數(shù)字視頻播放器/記錄器中實(shí)現(xiàn)該 硬件體系。例如,可在服務(wù)器計(jì)算機(jī)中實(shí)現(xiàn)服務(wù)器系統(tǒng)200。該圖示出 了用于控制存儲(chǔ)器91、顯示器93 (或用于顯示器的連接器)、輸入94 (例如,鍵盤、鼠標(biāo)、遙控器)、通信端口 95 (例如,以太網(wǎng)、無線 網(wǎng)絡(luò)、天線線纜輸入)和存儲(chǔ)介質(zhì)96 (例如,諸如緊致盤、CD-ROM、 DVD、外部閃存的可移除存儲(chǔ)介質(zhì),或諸如硬盤的內(nèi)部非易失性存儲(chǔ)介 質(zhì))的處理器92。存儲(chǔ)器91包括用于使得處理器執(zhí)行上述一個(gè)或多個(gè)方法的計(jì)算機(jī)指令。這些計(jì)算機(jī)指令可從存儲(chǔ)介質(zhì)96或經(jīng)由通信端口 95從因特網(wǎng)加載到存儲(chǔ)器91中。輸入94用于使得用戶能與系統(tǒng)交互。 顯示器用于與用戶交互,并且可選地用于呈現(xiàn)視頻或靜態(tài)圖像。還可 提供揚(yáng)聲器(未示出),用于用戶交互和/或呈現(xiàn)音頻內(nèi)容。服務(wù)器系 統(tǒng)和客戶端系統(tǒng)兩者均可實(shí)現(xiàn)為圖6的同一硬件系統(tǒng)上的軟件應(yīng)用, 并且他們可同時(shí)運(yùn)行并經(jīng)由進(jìn)程間通信彼此通信。可替換地,客戶端 和服務(wù)器可在均具有類似于圖6的體系的分離的硬件系統(tǒng)上運(yùn)行。例 如,服務(wù)器位于且由內(nèi)容提供者擁有,而客戶端由消費(fèi)者擁有并位于 消費(fèi)者家中。
將理解,本發(fā)明還可擴(kuò)展至適用于將本發(fā)明帶入實(shí)踐的計(jì)算機(jī)程 序,特別是載體上或中的計(jì)算機(jī)程序。程序可以具有源代碼、對(duì)象代 碼、代碼中間源和諸如部分編譯形式的對(duì)象代碼的形式,或者適合用 于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的任何其他形式。載體可以是能夠攜帶程序 的任何實(shí)體或設(shè)備。例如,載體可包括存儲(chǔ)介質(zhì),如R0M(例如CDR0M 或半導(dǎo)體R0M)或者磁記錄介質(zhì)(例如軟盤或硬盤)。另外,載體可以 是可傳輸載體,如可經(jīng)由電纜或光纜或通過無線電或其他手段傳遞的 電或光信號(hào)。當(dāng)以這樣的信號(hào)實(shí)現(xiàn)程序時(shí),載體可由這樣的光纜或其 他設(shè)備或手段構(gòu)成載體??商鎿Q地,載體可以是其中嵌入程序的集成 電路,該集成電路適用于執(zhí)行相關(guān)方法,或適合于在執(zhí)行相關(guān)方法時(shí) 使用。
應(yīng)注意,上述實(shí)施例例示而不是限制本發(fā)明,本領(lǐng)域技術(shù)人員將 能夠設(shè)計(jì)許多替代實(shí)施例,而不會(huì)脫離所附權(quán)利要求的范圍。在權(quán)利 要求中,放在括號(hào)之間的任何參考符號(hào)不應(yīng)理解為限制權(quán)利要求。動(dòng) 詞"包括"及其變形的使用不排除存在除了權(quán)利要求中描述的之外的 元件或步驟。元件前面的冠詞"一"或"一個(gè)"不排除存在多個(gè)這樣 的元件。本發(fā)明可借助于包括數(shù)個(gè)不同元件的硬件,或借助于適當(dāng)編 程的計(jì)算機(jī)來實(shí)現(xiàn)。在枚舉了數(shù)個(gè)部件的設(shè)備權(quán)利要求中,這些部件 中的一些可以實(shí)現(xiàn)為一個(gè),并且由硬件的相同項(xiàng)目實(shí)現(xiàn)。在相互不同 的從屬權(quán)利要求中引用特定措施的簡單事實(shí)不表示不能有利地使用這 些措施的組合。
1權(quán)利要求
1、一種用于增加數(shù)據(jù)安全性的系統(tǒng)(100),包括輸入(102),用于接收待處理的內(nèi)容數(shù)據(jù)(110);要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)(104);密碼單元(108),用于根據(jù)相應(yīng)密鑰對(duì)所述內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理;密鑰提供器(106),用于根據(jù)所述預(yù)定系統(tǒng)數(shù)據(jù)(104)的相應(yīng)部分(112)確定用于所述內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,所述部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),其中為所述內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇所述預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部分。
2、 根據(jù)權(quán)利要求l的系統(tǒng),其中,所述預(yù)定系統(tǒng)數(shù)據(jù)包括軟件代 碼,該軟件代碼包括計(jì)算機(jī)可執(zhí)行指令。
3、 根據(jù)權(quán)利要求l的系統(tǒng),其中,所述密鑰提供器被布置為根據(jù) 所述內(nèi)容數(shù)據(jù)的相應(yīng)塊之外的內(nèi)容數(shù)據(jù)來選擇所述預(yù)定系統(tǒng)數(shù)據(jù)中的 部分。
4、 根據(jù)權(quán)利要求3的系統(tǒng),其中,所述密鑰提供器被布置為基于 內(nèi)容數(shù)據(jù)的密文來選擇所述部分。
5、 根據(jù)權(quán)利要求4的系統(tǒng),其中,所述密鑰提供器被布置為基于 之前處理的數(shù)據(jù)塊的密文來選擇所述部分。
6、 根據(jù)權(quán)利要求1的系統(tǒng),其中,所述密鑰提供器被布置為計(jì)算 所選擇部分的偽隨機(jī)函數(shù)以獲得所述密碼密鑰。
7、 根據(jù)權(quán)利要求l的系統(tǒng),其中,所述密碼單元被布置為施加關(guān) 于所述相應(yīng)密鑰的至少一部分和所述內(nèi)容數(shù)據(jù)的相應(yīng)塊的至少一部分 的異或運(yùn)算。
8、 根據(jù)權(quán)利要求1的系統(tǒng),還包括存儲(chǔ)裝置(116),用于存儲(chǔ)對(duì) 應(yīng)于所述內(nèi)容數(shù)據(jù)的密文,其中所述密碼單元被布置為解密所存儲(chǔ)的 內(nèi)容數(shù)據(jù)。
9、 根據(jù)權(quán)利要求8的系統(tǒng),其中,所述密碼單元包括 加密器,用于根據(jù)相應(yīng)密鑰對(duì)從所述輸入接收的內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行加密,并用于使用所述存儲(chǔ)裝置存儲(chǔ)所加密的內(nèi)容數(shù)據(jù);以及 解密器,用于根據(jù)相應(yīng)密鑰,對(duì)使用所述存儲(chǔ)裝置存儲(chǔ)的所加密的內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行解密。
10、 根據(jù)權(quán)利要求1的系統(tǒng),其中,所述密碼單元被布置為根據(jù)相應(yīng)密鑰向所述內(nèi)容數(shù)據(jù)施加數(shù)字水印。
11、 一種用于增加數(shù)據(jù)安全性的服務(wù)器系統(tǒng)(200),包括 輸入(210),用于接收待處理的內(nèi)容數(shù)據(jù)(214);輸出(202),用于將處理過的內(nèi)容數(shù)據(jù)(110)提供給客戶端系統(tǒng) (100),所述客戶端系統(tǒng)包括要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)(104);密碼單元(208),用于根據(jù)相應(yīng)密鑰對(duì)所述內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行 密碼處理;密鑰提供器(206),用于根據(jù)預(yù)定系統(tǒng)數(shù)據(jù)(104)的相應(yīng)部分(112) 確定用于所述內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,所述部分不包括所 有的預(yù)定系統(tǒng)數(shù)據(jù),其中為所述內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇所述預(yù)定系統(tǒng) 數(shù)據(jù)的不同相應(yīng)部分。
12、 一種包括根據(jù)權(quán)利要求1的客戶端系統(tǒng)(100)和根據(jù)權(quán)利要求 11的服務(wù)器系統(tǒng)(200)的系統(tǒng),其中服務(wù)器系統(tǒng)(200)的輸出(202)被布置為將由所述服務(wù)器系統(tǒng)(200)的輸入(102);以及所述服務(wù)器系統(tǒng)的密鑰提供器(206)和所述客戶端系統(tǒng)的密鑰提 供器(106)被布置為分別響應(yīng)于在所述服務(wù)器系統(tǒng)(200)的輸入(210) 處接收到內(nèi)容數(shù)據(jù)(214)以及響應(yīng)于在所述客戶端系統(tǒng)(100)的輸入 (102)處接收到對(duì)應(yīng)內(nèi)容數(shù)據(jù)(110),使用軟件代碼(104)的相同部分 (112)。
13、 一種增加數(shù)據(jù)安全性的方法,包括 接收待處理的內(nèi)容數(shù)據(jù)(110);根據(jù)相應(yīng)密鑰對(duì)所述內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理; 根據(jù)要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)(104)的相應(yīng)部分(112)確定用于所述內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,所述部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),應(yīng)部分。
14、 一種增加數(shù)據(jù)安全性的方法,包括 接收待處理的內(nèi)容數(shù)據(jù)(214);將處理過的內(nèi)容數(shù)據(jù)(110)提供給客戶端系統(tǒng)(100),所述客戶端系統(tǒng)包括要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)(104);根據(jù)相應(yīng)密鑰對(duì)所述內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理; 根據(jù)所述預(yù)定系統(tǒng)數(shù)據(jù)(104)的相應(yīng)部分(112)確定用于所述內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,所述部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),其中為所述內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇所述預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部分。
15、 一種計(jì)算機(jī)程序產(chǎn)品,包括用于使得處理器執(zhí)行根據(jù)權(quán)利要 求13或14的方法的計(jì)算機(jī)可執(zhí)行指令。
全文摘要
一種用于增加數(shù)據(jù)安全性的系統(tǒng)100包括要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)104。密碼單元108用于根據(jù)相應(yīng)密鑰對(duì)內(nèi)容數(shù)據(jù)的相應(yīng)塊進(jìn)行密碼處理。密鑰提供器106用于根據(jù)預(yù)定系統(tǒng)數(shù)據(jù)104的相應(yīng)部分112確定用于內(nèi)容數(shù)據(jù)的相應(yīng)塊處理的相應(yīng)密鑰,該部分不包括所有的預(yù)定系統(tǒng)數(shù)據(jù),其中為內(nèi)容數(shù)據(jù)的相應(yīng)塊選擇預(yù)定系統(tǒng)數(shù)據(jù)的不同相應(yīng)部分。一種用于增加數(shù)據(jù)安全性的服務(wù)器系統(tǒng)200包括用于將處理過的內(nèi)容數(shù)據(jù)110提供給客戶端系統(tǒng)100的輸出202,客戶端系統(tǒng)包括要保護(hù)的預(yù)定系統(tǒng)數(shù)據(jù)104。服務(wù)器系統(tǒng)200還包括密碼單元208和密鑰提供器206。
文檔編號(hào)G06F21/10GK101681408SQ200880017068
公開日2010年3月24日 申請(qǐng)日期2008年5月19日 優(yōu)先權(quán)日2007年5月22日
發(fā)明者B·斯科里克, P·M·H·M·A·戈里森, W·P·A·J·米歇爾斯 申請(qǐng)人:皇家飛利浦電子股份有限公司