在白盒實現(xiàn)方案中實現(xiàn)填充的制作方法
【專利摘要】在白盒實現(xiàn)方案中實現(xiàn)填充。一種加密鑰的加密運算方法,用于將具有編碼部分和填充部分的輸入消息映射到輸出消息,該方法包括:接收填充值k;接收輸入消息,其中,填充部分具有由填充值k指示的大??;計算加密運算的第一部分,以產(chǎn)生第一部分輸出;計算與輸入消息的填充部分相對應(yīng)的補償因數(shù);以及基于補償因數(shù),補償?shù)谝徊糠州敵觥?br>【專利說明】
在白盒實現(xiàn)方案中實現(xiàn)填充
技術(shù)領(lǐng)域
[0001] 本文公開的各種示例性實施例總體上設(shè)及確保執(zhí)行密碼功能的軟件組件免受攻 擊,包括在白盒實現(xiàn)方案中實現(xiàn)填充。
【背景技術(shù)】
[0002] 互聯(lián)網(wǎng)給用戶帶來了對數(shù)字內(nèi)容的便捷且普及的訪問。由于互聯(lián)網(wǎng)是強大的分發(fā) 渠道(distr化Ution channel),因此許多用戶設(shè)備力圖直接訪問互聯(lián)網(wǎng)。用戶設(shè)備可W包 括個人計算機、膝上型計算機、機頂盒、支持互聯(lián)網(wǎng)的媒體播放器、移動電話、智能手機、平 板電腦、移動熱點或能夠訪問互聯(lián)網(wǎng)的任意其它設(shè)備。將互聯(lián)網(wǎng)用作正版內(nèi)容的分發(fā)媒介 產(chǎn)生了關(guān)于確保內(nèi)容提供商利益的緊迫問題。用戶設(shè)備越發(fā)普遍地使用加載有適合軟件的 處理器來進行操作,W呈現(xiàn)(回放)數(shù)字內(nèi)容(比如音頻和/或視頻)。對回放軟件進行控制是 加強內(nèi)容所有者利益的一種方式,包括內(nèi)容可W被使用的條款和條件。此前,許多用戶設(shè)備 是封閉系統(tǒng)。今天,越來越多的平臺是部分開放式的。一些用戶可W被假定為能夠完全控制 和訪問對內(nèi)容提供訪問的硬件和軟件,并擁有大量時間和資源來攻擊和避開任何內(nèi)容保護 機制。結(jié)果,內(nèi)容提供商必須穿過惡意網(wǎng)絡(luò)到并非所有用戶或用戶設(shè)備都可信的社區(qū)W向 合法用戶傳送內(nèi)容。
[0003] 可W調(diào)用安全軟件應(yīng)用來執(zhí)行多種功能,例如用來保護和認證數(shù)字內(nèi)容的密碼功 能。為了對抗攻擊,必須對運些算法進行混淆處理(隱藏),W防止對算法進行反向工程和修 改或禁止獲得用戶特定安全信息。因此,可W通過由實現(xiàn)安全軟件的處理器的指令集限定 的多種功能,來執(zhí)行安全軟件應(yīng)用的功能。例如,一種模糊運些功能的方法是使用查找表。
[0004] 內(nèi)容提供商必須穿過惡意網(wǎng)絡(luò)到并非所有用戶或設(shè)備都可信的社區(qū)W向合法用 戶傳送內(nèi)容。運樣導致開發(fā)了白盒(white-box)密碼術(shù)。在白盒密碼術(shù)情境下,假定用戶完 全控制對內(nèi)容提供訪問的硬件和軟件,并具有無限量的時間和資源來攻擊和避開任何內(nèi)容 保護機制。加強內(nèi)容可W被使用的條款和條件的安全軟件代碼應(yīng)是防篡改的。數(shù)字權(quán)限管 理是安全軟件應(yīng)用的普通應(yīng)用。在數(shù)字權(quán)限管理中,用于分發(fā)到用戶設(shè)備的受保護內(nèi)容的 一般方法是使用例如DES(數(shù)據(jù)加密標準)、AES(高級加密標準)或使用其他已知加密方案來 加密數(shù)字內(nèi)容,并使用解密密鑰來恢復數(shù)字內(nèi)容。必須保護運些解密密鑰,W防止對保護材 料的非授權(quán)訪問。
[0005] 在數(shù)字權(quán)限管理情境下,攻擊者完全控制加強對所保護內(nèi)容的管理和訪問的軟 件。因此,攻擊者可W修改軟件并還尋求獲得用于對受保護內(nèi)容進行加密的加密密鑰??蒞 通過分析軟件來找到運樣的密鑰。
[0006] 關(guān)于密鑰分發(fā),媒體播放器必須從許可證數(shù)據(jù)庫獲取解密密鑰W回放媒體。然后 媒體播放器必須將所述解密密鑰存儲在存儲器中的某處,W便對加密內(nèi)容進行解密。運樣 向攻擊者留下了用于攻擊所述密鑰的兩個選項。首先,攻擊者可W對許可證數(shù)據(jù)庫訪問功 能執(zhí)行逆向工程,允許攻擊者從所有許可證數(shù)據(jù)庫檢索資產(chǎn)密鑰(asset keys)。在運種情 況下,攻擊者不需要理解密碼學功能的內(nèi)部工作。第二,攻擊者可W觀察在內(nèi)容解密期間的 存儲器訪問,從而攻擊者可W獲取解密密鑰。在運兩種情況下,密鑰被視為缺乏抵抗力的。
[0007] 數(shù)字權(quán)限管理(DRM)和其他安全軟件的廣泛使用已經(jīng)引起對尋求復雜的軟件篡改 的防篡改軟件的安全的需要。存在多種用于增加軟件應(yīng)用的防篡改的技術(shù)。運些技術(shù)中的 大多數(shù)基于通過對軟件應(yīng)用的控制和數(shù)據(jù)路徑二者的隨機性和復雜性加W掩蓋來隱藏應(yīng) 用的內(nèi)在知識。其背后的構(gòu)思在于,只通過代碼檢查來提取信息變得更加困難。因此,找到 例如處理安全應(yīng)用的訪問和許可控制的代碼并因此改變代碼會更加困難。
[0008] 如本文所用,白盒密碼術(shù)包括在攻擊者完全控制運行白盒密碼術(shù)軟件的系統(tǒng)的環(huán) 境下執(zhí)行密碼功能的安全軟件應(yīng)用。從而,攻擊者可W修改輸入和輸出,追蹤軟件的操作, 在任意時刻對軟件所使用的存儲器進行采樣和監(jiān)測,甚至修改軟件。從而,需要通過防止公 開安全功能中使用的秘密信息的方式來執(zhí)行安全功能。白盒密碼功能可W實現(xiàn)為各種方 式。運樣的方法包括:模糊軟件代碼;使用模糊秘密信息的使用的復雜的數(shù)學函數(shù);使用查 找表;使用有限狀態(tài)機;或者執(zhí)行密碼功能但是隱藏安全功能所需的秘密信息的任何其他 方法。白盒實現(xiàn)方案還可W包含包括抗調(diào)試和防篡改特性的組件。
[0009] 密碼算法的軟件實現(xiàn)方案比硬件實現(xiàn)方案更受歡迎有多種理由。例如,運可W是 W下情況:因為在密鑰泄露的情況下軟件解決方案是可更新的,因為軟件解決方案具有更 低的成本,或者因為應(yīng)用開發(fā)者對實現(xiàn)白盒系統(tǒng)的硬件沒有影響。
【發(fā)明內(nèi)容】
[0010] 下文呈現(xiàn)各種示例性實施例的簡短總結(jié)??蒞在W下總結(jié)中進行一些簡化和省 略,其目的是強調(diào)和介紹各種示例性實施例的某些方面,然而并非限制本發(fā)明的范圍。在W 下部分的示例性實施例的詳細描述將使本領(lǐng)域技術(shù)人員能夠制造和使用本發(fā)明的思想。
[0011] 各示例性實施例設(shè)及一種加密鑰的加密運算方法,用于將具有編碼部分和填充部 分的輸入消息映射到輸出消息,所述方法包括:接收填充值k;接收輸入消息,其中,填充部 分具有由填充值k指示的大小;計算加密運算的第一部分,W產(chǎn)生第一部分輸出;計算與輸 入消息的填充部分相對應(yīng)的補償因數(shù);W及基于補償因數(shù),補償?shù)谝徊糠州敵觥?br>[0012] 此外,各示例性實施例設(shè)及一種加密鑰的加密運算方法,用于將具有編碼部分和 填充部分的輸入消息映射到輸出消息,其中,所述加密鑰的加密運算包括至少一輪,所述至 少一輪包括配置為將輸入數(shù)據(jù)映射到輸出數(shù)據(jù)的非線性映射函數(shù),所述方法包括:接收填 充值k;接收輸入消息,其中,輸入消息具有N個部分,填充部分具有由填充值k指示的大小, 并且填充部分具有隨機值;針對輸入消息的所述N個部分中的一個部分,計算非線性映射函 數(shù)的輸出;針對輸入消息的所述一個部分計算補償因數(shù),其中,當輸入消息的所述一個部分 是編碼部分的一部分時,補償因數(shù)是0,并且其中,當輸入消息的所述一個部分是填充部分 的一部分時,補償因數(shù)等于非線性映射函數(shù)的輸出;W及基于補償因數(shù),補償非線性映射函 數(shù)的輸出。
[0013] 此外,各示例性實施例設(shè)及一種加密鑰的解密運算方法,用于將具有填充部分的 加密輸入消息映射到具有編碼部分和填充部分的輸出消息,所述方法包括:對加密輸入消 息計算解密運算,W產(chǎn)生輸出消息的編碼輸出部分;隨機產(chǎn)生輸出消息的填充部分。
[0014] 此外,各示例性實施例設(shè)及一種加密鑰的解密運算方法,用于將具有編碼部分和 填充部分的輸入消息映射到輸出消息,其中,所述加密鑰的解密運算包括至少一輪,所述至 少一輪包括配置為將輸入數(shù)據(jù)映射到輸出數(shù)據(jù)的非線性映射函數(shù),其中,輸入消息具有N個 部分,并且其中,加密鑰的解密運算的狀態(tài)具有N個部分,所述方法包括:針對所述狀態(tài)的所 述N個部分中的一個部分,計算非線性映射函數(shù)的輸出;針對非線性映射函數(shù)的輸出計算補 償因數(shù),其中,當非線性映射函數(shù)的輸出是編碼部分的一部分時,補償因數(shù)是0,并且其中, 當非線性映射函數(shù)的輸出是填充部分的一部分時,補償因數(shù)等于非線性映射函數(shù)的輸出; W及基于補償因數(shù),補償非線性映射函數(shù)的輸出。
【附圖說明】
[0015] 為了更好地理解各示例性實施例,將參照附圖,附圖中:
[0016] 圖1示出了一輪AES的主要步驟;
[0017] 圖2示出了帶有對多輪的輸入的固定編碼的白盒AES實現(xiàn)方案;
[0018] 圖3示出了通過查找表的網(wǎng)絡(luò)來計算一個輸出半字節(jié)(output nibble);
[0019] 圖4示出了通過對輸入和輸出進行編碼而模糊處理的圖3的網(wǎng)絡(luò)表的一部分;
[0020] 圖5示出了用于計算補償因數(shù)U2,3的表網(wǎng)絡(luò)。
[0021] 圖6示出了補償填充的解密功能的白盒實現(xiàn)方案的表網(wǎng)絡(luò)。
[0022] 圖7示出了用于Z2,3的第一半字節(jié)的第二輪至最后輪的白盒實現(xiàn)方案的表網(wǎng)絡(luò)。
[0023] 圖8示出了確定Z2,3的兩個半字節(jié)是否為0的查找表。
[0024] 圖9示出了用于確定輸出ZM中的填充字節(jié)的數(shù)目的查找表網(wǎng)絡(luò)。
[0025] 圖10示出了用于向用戶設(shè)備提供安全內(nèi)容和對該安全內(nèi)容進行處理的軟件應(yīng)用 的系統(tǒng)。
[0026] 為幫助理解,相同的附圖標記用于表示具有實質(zhì)相同或相似結(jié)構(gòu)和/或具有實質(zhì) 相同或相似功能的單元。
【具體實施方式】
[0027] 說明書和附圖示出了本發(fā)明的原理。因此將理解的是,本領(lǐng)域的技術(shù)人員將能夠 設(shè)計出雖然本文沒有明確地描述或示出但體現(xiàn)了本發(fā)明的原理并包括在其范圍之內(nèi)的各 種布置。此外,本文所述的全部示例主要旨在明確地用于示范目的,W幫助讀者來理解發(fā)明 人為推進技術(shù)所貢獻的本發(fā)明的原理和構(gòu)思,并且應(yīng)被理解為不對具體陳述的示例和條件 進行限制。此外,除非另有說明(例如"或其它的"或"或備選地"),否則本文中使用的術(shù)語 "或者"指代非排他性的或(即,和/或)。此外,本文說明的各實施例不必是相互排他的,一些 實施例可與一個或多個其他實施例組合,W形成新的實施例。
[00%]密碼算法的軟件實現(xiàn)方案比硬件實現(xiàn)方案更受歡迎有多種理由。例如,運可W是 W下情況:因為在密鑰泄露的情況下軟件解決方案是可更新的,因為軟件解決方案具有更 低的成本,或者因為應(yīng)用開發(fā)者對實現(xiàn)白盒系統(tǒng)的硬件沒有影響。盡管W下對實施例的描 述針對在處理器上運行的軟件實現(xiàn)方案,但是要注意的是,運些實施例還可W部分地或完 全地用硬件實現(xiàn)方案。所描述的查找表和有限狀態(tài)機可W用硬件實現(xiàn)W執(zhí)行所描述的各種 功能。
[0029] W下文獻中提出了對于高級加密標準(AES)和數(shù)據(jù)加密標準(DES)的白盒實現(xiàn)方 案的基于表的方式:2002年8月15-16日加拿大紐芬蘭圣約翰斯SAC 2002第九屆年度國際研 討會:密碼術(shù)選區(qū),Sl:anley Qiow、Philip Eisen、化rold Johnson和化ul C."Van Oorschot 的('怖ite-Box Cryptogra地y and an AES Implementation(白盒加密和AES實現(xiàn)方案)", W下稱為乂how r;W及2002年11月18日美國華盛頓DRM 2002,ACM CCS-9研討會:數(shù)字權(quán) 限管理,Sl:anley Qiow、Phil Eisen、化rold Johnson和Paul C.van Oorschot的 "A 怖ite- Box DES Implementation for DRM Applications(用于DRM應(yīng)用的白盒DES實現(xiàn)方案)",W 下稱為"化OW 2"?;疧W巧日化OW 2公開了通過W下操作的組合來使用基于表的方式隱藏密 碼密鑰的方法:使用隨機雙射對其表進行編碼、W及通過將其進一步推入包含應(yīng)用來擴展 密碼邊界。
[0030] 應(yīng)注意,對于多數(shù)密碼運算,需要的是具有白盒實現(xiàn)方案。本發(fā)明可W應(yīng)用于例如 對稱和非對稱密碼操作。此外,本發(fā)明可W應(yīng)用于塊密碼、流密碼、消息認證方案、簽名方案 等。注意的是,本發(fā)明還W應(yīng)用于哈希函數(shù)。在哈希函數(shù)被用作處理秘密信息(例如,秘密密 鑰、秘密數(shù)據(jù)等)的構(gòu)建塊的情況下,后者尤其有用。例如,本發(fā)明W應(yīng)用于加密鑰的散列消 息認證代碼(HMAC或KHMAC)中所使用的哈希函數(shù)。公知的塊密碼包括:高級加密標準(AES)、 安全和快速加密例程(SAF邸W及變型SAFER+和SAFER++)、Blowfish、數(shù)據(jù)加密標準(DES) 等。一種公知的流密碼是RC4。此外,通過使用適當?shù)牟僮髂J?例如密碼反饋(CFB)、計數(shù)器 模式(CTR)等),可W將任意塊密碼用作流密碼。
[0031] 輸入消息可W表示例如加密內(nèi)容數(shù)據(jù)(例如,包括音頻和/或視頻數(shù)據(jù)的多媒體數(shù) 據(jù))。加密內(nèi)容數(shù)據(jù)還可W包括加密軟件,例如表示一些計算機應(yīng)用(例如,計算機游戲或辦 公應(yīng)用)的加密計算機代碼。輸入消息還可W表示用于進一步密碼運算的密鑰。例如,可W 將后者用于密鑰交換協(xié)議,其中根據(jù)本發(fā)明的白盒實現(xiàn)方案對表示新密鑰的數(shù)據(jù)進行加密 和/或解密。輸入數(shù)據(jù)還可W是明文數(shù)據(jù)(plain da化),例如,明文用戶數(shù)據(jù)。在消息認證方 案中后者是尤其有利的。根據(jù)本發(fā)明的白盒實現(xiàn)方案可W具有如下特性:該實現(xiàn)方案可W 僅用于進行加密,僅用于進行解密,但是不能既用于加密也用于解密。例如,如果該實現(xiàn)方 案使用非雙射的查找表(例如,具有比輸出比特更多的輸入比特的查找表),則可W實現(xiàn)該 特性。因此,如果用戶僅具有白盒解密器,則他可驗證MAC代碼,但是不創(chuàng)建新的MAC。運增強 了運種消息認證方案的不可否認特性。
[0032] 可W使用多個基本塊實現(xiàn)白盒實現(xiàn)方案。在一些塊建立在一個或多個之前塊的輸 出上的意義上,所述多個基本塊互相連接?;緣K可W在例如計算機忍片的硬件中實現(xiàn)?;?本塊可W使用開關(guān)板、狀態(tài)機或任何其它適合結(jié)構(gòu),W便在計算機硬件中實現(xiàn)功能。還可W 將基本塊實現(xiàn)在運行于通用計算機忍片(例如微處理器)上的軟件中。例如,基本塊可W使 用多個計算機指令,其中包括算術(shù)指令,運些指令一起實現(xiàn)基本塊的功能。可W在軟件和硬 件二者中使用的基本塊的廣泛使用的實現(xiàn)方案是查找表。例如,Chow 1和化OW 2采用運種 方式來實現(xiàn)AES和DES塊密碼。查找表實現(xiàn)方案包括列出可能輸入值、輸出值的列表。輸入值 在查找表中可W是顯式的。在運種情況下,查找表實現(xiàn)方案能夠通過在輸入值的列表中捜 索特定輸入,來將特定輸入映射到特定輸出。當找到該特定輸入時,隨后也找到該特定輸 出。例如,該特定輸出可W存儲在該特定輸入的旁邊。優(yōu)選地,僅隱含式地存儲輸入值,而非 顯式地存儲。例如,如果可能的輸入是例如數(shù)字或比特串的連續(xù)范圍,則查找表可W被限制 為存儲輸出值的列表。特定輸入數(shù)字可W例如被映射到存儲在由該數(shù)字指示的位置的特定 輸出。此外,有限狀態(tài)機或代碼混淆可W用來實現(xiàn)白盒實現(xiàn)方案。
[0033] 例如,可W通過針對可能的輸入計算函數(shù)輸出值并將輸出存儲在列表中,來創(chuàng)建 函數(shù)的查找表。如果函數(shù)依賴于多個輸入,則可W針對多個輸入的所有可能組合,計算并存 儲所述輸出。查找表尤其適合于實現(xiàn)非線性函數(shù),不規(guī)則地將輸入映射到輸出。如下所示, 可W通過向白盒實現(xiàn)方案的查找表中的一個或多個查找表應(yīng)用固定混淆輸入編碼和固定 輸出編碼,來進一步混淆白盒實現(xiàn)方案。接著,完全預(yù)估應(yīng)用固定混淆輸入編碼和輸出編碼 的結(jié)果。使用該技術(shù),查找表將被具有相同維度的混淆查找表替代,該混淆查找表采用相同 數(shù)目的輸入比特并產(chǎn)生相同數(shù)目的輸出比特。在運種混淆中所使用的輸入編碼和輸出編碼 在最終白盒實現(xiàn)方案中不是顯式的。
[0034] 將基本塊網(wǎng)絡(luò)布置為在與輸入消息一起存在時計算輸出消息。通常,基于多個基 本輸入塊來運算輸入消息。多個其它基本塊可W采用來自一個或多個所述基本輸入塊和/ 或來自輸入的輸入。另外的其它基本塊可W采用所述輸入消息、所述基本輸入塊的輸出W 及所述其它基本塊的輸出的任何組合形式的輸入。最終,基本退出塊的某集合(即至少一 個)產(chǎn)生輸出消息的全部或部分,作為輸出。W運種方式,出現(xiàn)了共同計算從輸入消息到輸 出消息的映射的基本塊網(wǎng)絡(luò)。
[0035] 所使用的密鑰可W是密碼密鑰并且可W包含充分的賭W經(jīng)受預(yù)期的強力攻擊。應(yīng) 注意,在白盒實現(xiàn)方案中,密鑰通常并非明確存在于實現(xiàn)方案中。運樣將存在通過觀察實現(xiàn) 方案而找到密鑰的風險。通常,密鑰僅隱含式地呈現(xiàn)。已知多種方式來將密鑰隱藏在密碼系 統(tǒng)中。通常,至少使用部分評估的方法,其中,需要密鑰輸入的基本塊被評估,直到其不依賴 于輸入消息。例如,可W通過預(yù)先將密鑰值與不依賴于輸入消息的掩蔽值一起進行異或來 部分評估輸入值、不依賴于輸入消息的掩蔽值(例如,來自S-box的值)和密鑰值需要被異或 的基本運算。W運種方式,雖然密鑰值并非明確存在于實現(xiàn)方案中,但是運算仍然依賴于密 鑰值。相反,僅密鑰值與掩蔽值之間的異或存在于實現(xiàn)方案中。注意到,隱藏所述密鑰的更 為復雜的方式和/或進一步的方式與本發(fā)明的實施例是可兼容的。
[0036] W下示例性實施例是使用AES(高級加密標準)塊密碼描述的,運是因為AES已經(jīng)成 為塊密碼的廣泛使用標準。AES是塊大小為128比特或16字節(jié)的塊密碼。將明文劃分為16字 節(jié)的塊,所述16字節(jié)形成加密算法的初始狀態(tài),加密算法的最終狀態(tài)是密文。在加密算法的 任何給定點處,運些16字節(jié)是加密算法的狀態(tài)。為了概念上解釋AES,將狀態(tài)字節(jié)組織為4x4 字節(jié)的矩陣。AES包括多輪,輪數(shù)依賴于密鑰大小。每一輪包括類似的處理步驟,運些類似的 處理步驟對狀態(tài)矩陣的字節(jié)、行或列進行運算,每一輪在運些處理步驟中使用不同的輪密 鑰。在使用AES作為示例的討論中,注意到,AESW特定的方式定義一輪。在W下實施例中,一 輪是步驟的任意群組,所述群組包括至少一個非線性映射函數(shù),比如AES中的S-box。因此, 下文所述的一輪包括一個非線性映射函數(shù)W及密碼函數(shù)的其它步驟的任何組合。此外,該 輪的邊界可W從非線性映射函數(shù)(例如,S-box)或者可W與非線性映射函數(shù)合并的任何其 他操作(例如,密鑰添加)開始。
[0037] 圖1示出了一輪AES的一些主要處理步驟。處理步驟包括:
[0038] AddRoumlKey (添加輪密鑰)110--狀態(tài)的每個字節(jié)與輪密鑰的字節(jié)進行異或;
[0039] SubBytes 120-使用查找表的字節(jié)到字節(jié)排列;
[0040] ShiftRows 140-將狀態(tài)的每一行旋轉(zhuǎn)固定數(shù)目的字節(jié);
[0041 ] W及MixColumns 150-使用GF(28)中的模乘運算來處理每一列。
[0042] 步驟SubB}ftes 120、ShiftRows 130和MixColu皿S 150不依賴于所使用的特定密 鑰。密鑰應(yīng)用于步驟AddRoun服ey 110中。除了步驟化iftRows 140之外,還可W對4x4狀態(tài) 矩陣的每一列執(zhí)行處理步驟,而不需要知道其他列。因此,由于每一列由四個8比特值構(gòu)成, 所W它們可W被認為是32比特操作。虛線150指示在已經(jīng)執(zhí)行了所需輪數(shù)之前重復所述處 理。
[0043] 運些步驟中的每一個或步驟的組合可W由查找表或由查找表網(wǎng)絡(luò)表示。如果通過 與輪密鑰進行異或來執(zhí)行AddRoundKey 110步驟,則密鑰對于白盒攻擊環(huán)境中的攻擊者是 可見的。AddRoundKey 110步驟還可W嵌入在查找表中,使得找出所述密鑰變得不顯而易 見。事實上,能夠使用查找表網(wǎng)絡(luò)來替代完整的一輪AES。例如,可W使用查找表來實現(xiàn) SubB}ftes 120、aiiftRows 130和MixColumns 150步驟。下文詳細地討論了AES的可能白盒 實現(xiàn)方案,W便在下文描述本發(fā)明的實施例,此外在化OWl中可W找到對運種實現(xiàn)方案的更 詳細描述。此外,可W在查找表實現(xiàn)方案中使用其它變型,變型仍在本發(fā)明的范圍內(nèi)。
[0044] 基于表的白盒實現(xiàn)方案W及有限狀態(tài)機實現(xiàn)方案都具有如下屬性:對實現(xiàn)方案中 的所有中間值進行編碼(相較于標準實現(xiàn)方案)。在題為"Data Processing MethocK數(shù)據(jù)處 理方法r的第2007/0014394號美國專利公布W及日期為2008年3月11日在Re-trust Sixth 如arterly Meeting(Re-t;rust第六季度會議)由Wulf化rder和Atis Strau化ms做出的題 為"Synchrosoft MCFACTTM Secure Data Processing Technology(Synchrosoft MCFACTTM安全數(shù)據(jù)處理技術(shù)r的報告中公開了使用有限狀態(tài)機的白盒實現(xiàn)方案的示例,該 美國專利公布W及該報告均出于所有目的通過引用合并于此,猶如完整地闡述于此。圖2示 出了帶有對多輪的輸入(即,對S-box的輸入)的固定編碼的白盒AES實現(xiàn)方案。如所示出的, 16個輸入字節(jié)中的每一個通過fi被編碼,并且輸出字節(jié)中的每一個通過gi被編碼。
[0045] 為了描述本發(fā)明的實施例,將對基于表的白盒AES實現(xiàn)方案進行基本描述。對用于 實現(xiàn)基于表的白盒AES的方法的更詳細描述參閱化OW 1。化OW 1示出了使用指定大小的表 拆分特定函數(shù)的特定實現(xiàn)方案。很好理解,可W對表進行各種其他劃分,從而產(chǎn)生針對查找 表的不同函數(shù)和不同大小。此外,盡管W下描述的本發(fā)明的實施例使用AES的基于表的白盒 實現(xiàn)方案,但是可W根據(jù)所描述的實施例執(zhí)行其他密碼和密碼功能。此外,可W使用其他類 型的白盒實現(xiàn)方案,而非基于表的實現(xiàn)方案,比如有限狀態(tài)實現(xiàn)方案。
[0046] 對基于表的白盒AES的描述分為兩個步驟。在第一步驟中,將一輪AES描述為查找 表網(wǎng)絡(luò)。在第二步驟中,通過對它們的輸入和輸出進行編碼來混淆表。
[0047] 步驟1:將AES實現(xiàn)為查找表網(wǎng)絡(luò)。
[004引AES對16字節(jié)的數(shù)據(jù)塊進行操作。通常,運些16字節(jié)的數(shù)據(jù)塊被描述為4x4字節(jié)矩 陣,被稱為包括字節(jié)XI, 1、禮2、禮3、…X4,4的狀態(tài)。如W上針對圖1描述的一輪AES包括W下操 作:AddRoundKey 110、SubBytes 120、ShiftRows 130 和 MixColumns 140。前兩個操作 AddRoun化ey和SubBytes可W合并成單個T-box操作。也就是,我們可W將針對輸入字節(jié)Xi, j 的字節(jié)到字節(jié)函數(shù)Tl, J定義為'
I,其中,kw是基于AES密鑰的16字節(jié)輪 密鑰的單個字節(jié)。設(shè)yi,j是Ti, j的輸出。ShiftRows操作僅是對輸出字節(jié)yi,j進行索引重新編 號。為了便于呈現(xiàn),在本描述中省略該操作,但是可W將該操作合并入實現(xiàn)Tl,J的查找表中, 或者將該操作實現(xiàn)為狀態(tài)矩陣的單獨操縱。在MixColumns步驟中,通過針對一些常量MCiJ 的GF(28)中的代數(shù)表達式
,從4 個輸出字節(jié)yi, j、y2, j、y3, j和y4, j計算該輪的輸出字節(jié)Zi, j。
[00例現(xiàn)在針對每個字節(jié)到字節(jié)函數(shù)Qi,j,l(xi,j)=MCl,i?Ti,j(xi,j)定義查找表,其中i, j,l = l,2,...,16。然后,可W通過對運些查找表的結(jié)果進行異或來計算任何輸出字節(jié)zl,J, 良P,
。注意到,可W將Q- box的索引i、j、l解釋為"一輪的輸入字節(jié)i、j對該輪的輸出字節(jié)Uj的貢獻"。異或可W被實 現(xiàn)為對作為查找表的兩個半字節(jié)(即,4比特值)中的每一個進行運算W減小異或表的尺寸。 因此,Q-box可W被實現(xiàn)為產(chǎn)生輸出半字節(jié),從而減小表的尺寸。因而,已將AES輪的每個輸 出字節(jié)ZlJ的計算描述為查找表網(wǎng)絡(luò)。圖3示出了用于計算字節(jié)Z2,3的單個輸出半字節(jié)的查 找表網(wǎng)絡(luò)。
[0050] 圖3示出了通過查找表的網(wǎng)絡(luò)來計算一個輸出半字節(jié)(output n化bleKQ-box中 的上標索引(1)指示所述表僅提供Q-box的輸出的第一個半字節(jié)。輸入狀態(tài)310下的輸入字 節(jié)集合Xl,3、X2,3、村,3和X4,3被輸入到Q-box 320、322、324、326中。查找表320和322的輸出被 饋送到異或330,查找表324和326的輸出被饋送到異或332。異或330和332的輸出被饋送到 異或334。異或334的輸出是輸出狀態(tài)340的輸出Z2,3的第一半字節(jié)??蒞使用附加Q-boxW及 類似異或網(wǎng)絡(luò),W相同方式計算輸出狀態(tài)340的輸出Z2.3的第二半字節(jié)。此外,可W通過接收 來自輸入狀態(tài)的一列字節(jié),并將其轉(zhuǎn)換為輸出狀態(tài)的對應(yīng)列的輸出,來實現(xiàn)附加表集合,W 便將輸入狀態(tài)310完全轉(zhuǎn)換為輸出狀態(tài)340。
[0051 ] 步驟2:混淆表和中間值
[0052] 在圖3所述的實現(xiàn)方案中,可W從Q-box中方便地提取密鑰。僅將逆MixColumns乘 法和逆S-box應(yīng)用到所述輸出會顯露出明文AddRoundK巧操作。為了防止運樣,用任意雙射 函數(shù)對所有查找表的輸入和輸出進行編碼。在化OW 1中對此進行了描述。運意味著將查找 表與對輸出進行編碼的編碼函數(shù)W及對輸入進行解碼的解碼函數(shù)合并。對編碼進行選擇, W使得一個表的輸出編碼與接下來的表中所假定的輸入編碼匹配。圖4針對第一輪描述了 圖3的實現(xiàn)方案的一部分。在該示例中,不對該輪的輸入進行編碼,W便與AES兼容,但是對 該輪的輸出進行編碼。在下一輪中處理輸出編碼。也就是,與第一輪不同,第二輪(和后續(xù) 輪)假定對輸入編碼??蛇x地,第一輪可W接收編碼輸入。然后,必須將該輸入編碼應(yīng)用于包 含白盒實現(xiàn)方案的軟件程序中的別處。類似地,根據(jù)輸出是否將是AES兼容的,最后輪可W 包括或者可W不包括輸出編碼。應(yīng)注意,在所獲得的白盒實現(xiàn)方案中,查找表和中間值都是 混淆的。
[0053] 圖4示出了通過對輸入和輸出進行編碼而混淆的圖3的網(wǎng)絡(luò)表的一部分。查找表 420、422、424、426與圖3的查找表320、322、324、326相對應(yīng)。分別用函數(shù)69、61〇、611、612對查 找表420、422、424、426的輸入進行編碼。分別用函數(shù)'1^2^3^4對查找表420、422、424、426 的輸出進行編碼。異或430與異或330相對應(yīng)。異或430的輸入使用fri和對輸入進行解 碼。接著,異或430的輸出由函數(shù)fs編碼。按照類似方式,異或432、434具有所示的輸入解碼 和輸出編碼。使用f對輸出Z2, 3進行編碼。
[0054] 除了隱藏密鑰,可W使用白盒實現(xiàn)方案來實現(xiàn)多個感興趣目標。例如,如化OW等人 所示,其可用于將密碼功能鉤連化OOk)到周邊程序。此外,2014年3月20日提交的題為 "沈CURITY MODULE FOR 沈CURE 即NCTION EXECUTIN ON UNT抓ST抓 PLATFORM(用于在非 信任的平臺上執(zhí)行安全功能的安全模塊r的美國專利申請No. 14/220,321描述了白盒實現(xiàn) 方案可W如何用于W安全方式對數(shù)據(jù)進行內(nèi)部編碼。運些申請都基于將外部編碼添加到白 盒實現(xiàn)方案。也就是,替代具有與執(zhí)行的密碼相關(guān)聯(lián)的明文和密文的輸入和輸出的白盒實 現(xiàn)方案,輸入和/或輸出由某個秘密函數(shù)被編碼。
[0055] 當明文不是密碼函數(shù)的塊大小的偶數(shù)倍時出現(xiàn)需要填充的問題。注意到,明文在 加密的情況下是輸入,而在解密的情況下是輸出。該填充存在W下問題。填充模式通常簡單 (例如,一些特定字節(jié)之后是零字節(jié))并且應(yīng)被假定為被攻擊者已知。
[0056] 假定期望將針對16字節(jié)數(shù)據(jù)塊設(shè)計的白盒AES實現(xiàn)方案應(yīng)用于10字節(jié)數(shù)據(jù)塊X = X1,X2, . . .,X10。然后,輸入會用6字節(jié)P = P1,P2, . . .,P6來填充。此外,設(shè)E表示針對白盒實現(xiàn) 方式的外部編碼函數(shù)。然后,EU, P)是由X和P的編碼版本e(x)計算出來的。運里,假定P未被 編碼,運是因為其被假定為對攻擊者已知。假定存在進行此操作的程序P。然后,可W針對不 同填充長度來分析該程序的輸入-輸出行為。運易受對E的信息泄露的影響。運可W通過示 例的方式示出。
[0057] 設(shè)填充全部由零給出,即對于所有i,pi = 0。此外,設(shè)e和E是按字節(jié)編碼,其中,如 果對于輸入字節(jié)blb2, . . .,bn和雙射函數(shù)fl,f2, . . .,fn,我們具有F(blb2, . . .,bn) = (fl(bl), f2(b2),. . .,fn(bn)),則函數(shù)F被稱為按字節(jié)。然后,觀察P的輸入-輸出得到fi(0)。因此,如果 fi是仿射化k特函數(shù),則我們丟失化k特的安全性(超過(out Of)大約70)。
[0058] W下實施例中描述了運種問題的一種解決方案。對于加密,白盒實現(xiàn)方案設(shè)置有 表示明文的大小的額外輸入。接著,不將填充合并在白盒實現(xiàn)方案的編碼輸入中。取而代 之,該額外輸入?yún)?shù)導致白盒實現(xiàn)方案根據(jù)填充方案而工作。對于解密,在將明文的大小作 為額外輸入?yún)?shù)或者使白盒實現(xiàn)方案計算明文的大小之間存在選擇。與填充字節(jié)相對應(yīng)的 輸出字節(jié)可W隨后被白盒實現(xiàn)方案任意填充。
[0059] 可W應(yīng)用W上描述的解決方案來獲得可W在與填充的組合中使用的基于表的白 盒AES實現(xiàn)方案。W上描述了化OW等的白盒AES實現(xiàn)方案的簡化版本,并且化OW等的白盒AES 實現(xiàn)的簡化版本將被用于描述W下實施例W實現(xiàn)填充解決方案。
[0060] 如上所述已經(jīng)指示的,白盒實現(xiàn)方案中的外部編碼可W用于將密碼功能鉤連 化OOk)到周邊程序或者在軟件架構(gòu)中安全地對數(shù)據(jù)進行內(nèi)部編碼。上面呈現(xiàn)的白盒實現(xiàn)方 案具有運樣的外部編碼。現(xiàn)在假定白盒實現(xiàn)方案要用在如下應(yīng)用中,在該應(yīng)用中,AES的明 文輸入可W小于16字節(jié)塊大小,并且運樣的輸入要用一個或多個0字節(jié)填充。
[0061] 對于111<16字節(jié)的輸入,運可^通過導出化1(山瓜佔),...瓜(祉),化+1(0),..., Eis(O))來實現(xiàn),其中,函數(shù)Ei表示外部字節(jié)編碼。然而,運泄露了關(guān)于針對i>k的Ei的信息。 現(xiàn)在,將描述W下白盒實現(xiàn)方案:該白盒實現(xiàn)方案提供有輸入?yún)?shù)k并內(nèi)部地處理填充。
[0062] 該白盒實現(xiàn)方案接收輸入k和編碼輸入化I(Xi),E2(x),...,化(祉),vk+i,. . .,vi6), 其中,XI,. . .,Xk是輸入數(shù)據(jù),Vk+l,. . .,V16是一些任意字節(jié)。運導致白盒實現(xiàn)產(chǎn)生誤差,因為 值Vi應(yīng)當是Ei(0)?,F(xiàn)在,將示出在Z2,3的第一半字節(jié)的計算中如何對此進行補償。然后,通過 針對第一輪的所有輸出半字節(jié)進行該補償,描述解決輸入數(shù)據(jù)的填充的實施例?,F(xiàn)在,將通 過擴展圖3的表網(wǎng)絡(luò)來示出Z2,3的第一半字節(jié)的修改計算。接下來,通過W與所描述的獲得 圖4的網(wǎng)絡(luò)的方式相同的方式應(yīng)用混淆處理來獲得Z2,3的第一半字節(jié)的實際白盒實現(xiàn)方案。
[0063] 設(shè)針對Z2,3的第一半字節(jié)產(chǎn)生的誤差由化,康示。接著,可W通過將計算的值Z2,3與 U2,3進行異或來補償由于輸入Vi引起的誤差。圖5示出了用于計算補償因數(shù)U2,3的表網(wǎng)絡(luò)。9- box510、512、514、616分別接收輸入字節(jié)xl,3、X2,3、x,3,3和X4,3。在從xi,j計算yi,j,l的每個Q- box 510、512、514、516之后,引入填充表520、522、524、526,填充表520、522、524、526將參數(shù) kW及各個Q-box 510、512、514、516的輸出71,^作為輸入。注意到,因為填充字節(jié)的數(shù)目的 范圍從0到15(16個填充字節(jié)沒有多大意義),因此運兩個輸入是半字節(jié)。如果Xi, J是合適的 輸入字節(jié),則填充表520、522、524、526返回0,當取而代之是隨機選擇的字節(jié)V時,如果Xi, j應(yīng) 當是填充字節(jié)0,則填充表520、522、524、526返回yi,j,l。選擇的字節(jié)v的隨機性可W是真實隨 機的或者偽隨機的,并且當任意值被描述為隨機時預(yù)期W上兩種情況。因此,通過圖3的網(wǎng) 絡(luò)的輸出Z2,3、圖5的網(wǎng)絡(luò)的輸出112,3?及用于將Z2,3和化,3進行異或的異或表來獲得根據(jù)該 實施例的用于計算第一輪的第一半字節(jié)輸出字節(jié)(2,3)的表網(wǎng)絡(luò)。如之前所述,現(xiàn)在可W通 過應(yīng)用圖4中使用的混淆技術(shù)來獲得白盒實現(xiàn)方案。
[0064] 圖3和圖4示出了用于加密的基本白盒AES實現(xiàn)方案。對于解密,可W導出僅Q-box 的內(nèi)容發(fā)生改變的類似的表網(wǎng)絡(luò)。所W,圖3再次被用作起始點。
[0065] 對于解密,計算編碼輸出
其 中,函數(shù)Ei表示外部字節(jié)編碼。與加密情況類似,取而代之計算E(X) =化I(Xl),E2(X),..., 化(Xk),Vk+l,. . .,V16),W防止關(guān)于外部字節(jié)編碼的信息泄露。運里,Vk+l,. . .,V16同樣是一些 任意字節(jié)。為了便于周邊程序知道如何處理隨機字節(jié)(即,知道隨機字節(jié)事實上應(yīng)當具有值 0,除了 EU)之外,周邊程序必須也知道值k。運引起兩個問題。首先,白盒實現(xiàn)方案必須將填 充字節(jié)改變?yōu)槿我庵?。此外,白盒實現(xiàn)方案如何知道哪些字節(jié)是填充字節(jié)?第二,使用白盒 實現(xiàn)方案的輸出的軟件如何知道值k?
[0066] 處理第一個問題的一種方式是將參數(shù)k作為白盒實現(xiàn)方案的輸入?yún)?shù)。接著,可W 如下構(gòu)造實施例。因為最后輪不包含MixColumns操作,所W最后輪的輸入字節(jié)相對于完整 解密算法的輸出具有雙射。因此,可W通過將第二回合至最后輪的相應(yīng)輸出字節(jié)改變?yōu)槿?意值Vi, J來將填充字節(jié)改變?yōu)槿我庵?。運可W例如通過將圖3的表網(wǎng)絡(luò)擴展為圖6的網(wǎng)絡(luò)來 完成。
[0067] 處理第二個問題的一種方式是將填充長度值k傳送到周邊軟件。
[0068] 圖6示出了補償填充的解密功能的白盒實現(xiàn)方案的表網(wǎng)絡(luò)。Q-box610、612、614、 616分別接收輸入字節(jié)xl,3、X2,3、x,3,3和X4,3W計算yi,j,l。異或630將Q-box610和612的輸出 進行異或。異或632將Q-box 614和616的輸出進行異或。填充表620接收k作為輸入,并且如 果Z2,3不是填充字節(jié),則產(chǎn)生0,如果Z2,3是填充字節(jié),則產(chǎn)生V2,3。異或634將填充表620和異 或632的輸出進行異或。異或636將異或630和異或634的輸出進行異或。如果Z2,3不是填充字 節(jié),則異或636產(chǎn)生Z2, 3,如果Z2, 3是填充字節(jié),則異或636產(chǎn)生V2, 3。
[0069] 用于上面提到的第一個問題的備選方法是在白盒實現(xiàn)方案中計算值怎?,F(xiàn)在將描 述運如何來完成。對于第二輪至最后輪,考慮圖3的網(wǎng)絡(luò)。因此,X-值表示第二輪至最后輪的 輸入,值表示該輪的輸出。運意味著S-值是最后輪輸入。最后輪僅包括Q-box層,即,按字節(jié) 非線性操作和逆化iftRows操作。為了便于呈現(xiàn),在最后輪(其僅與字節(jié)的重新編號相對應(yīng)) 中省略逆化if tRows操作,并且假設(shè)最后輪的Q-box將0填充字節(jié)映射到0。運意味著檢查密 碼的最后輸出字節(jié)是否為O與檢查倒數(shù)第二輪的最后輸出字節(jié)是否等于O相對應(yīng)。
[0070] 圖7示出了用于Z2,3的第一半字節(jié)的第二輪至最后輪的白盒實現(xiàn)方案的表網(wǎng)絡(luò)。該 網(wǎng)絡(luò)計算半字節(jié)是否為0。異或730將Q-box 710和712的輸出進行異或。異或732將Q-box 714和716的輸出進行異或。零檢測表720接收異或730和732的輸出,并確定Z2,3的第一半字 節(jié)的輸出是否為0。
[0071] 圖8示出了確定Z2,3的兩個半字節(jié)是否為0的查找表。圖9示出了用于確定輸出Zi, J 中的填充字節(jié)的數(shù)目的查找表網(wǎng)絡(luò)。已知對于所有16個輸出字節(jié)不管它們是否為0,可W計 算填充長度。首先,查找表910計算在前8輸出字節(jié)中存在多少個0,查找表920計算在最后8 輸出字節(jié)中存在多少個0。從運些數(shù)目,查找表930計算填充長度k。注意到,如果明文的最后 字節(jié)是0,則運可能是因為它們是填充字節(jié)或者因為運些明文字節(jié)碰巧是0。通過該實施例 無法進行該區(qū)分。如果輸出字節(jié)W零結(jié)束,則運被解釋為填充字節(jié)。
[0072] 具有填充長度名,現(xiàn)在可W將該值用于計算第二輪至最后輪的輸出值Zi,J,從而如 果字節(jié)與填充相對應(yīng),則其被設(shè)置為某個任意值U。運能夠W與如上所述的針對是白盒實 現(xiàn)方案的輸入?yún)?shù)的情況的方式相同的方式來完成。W圖3中呈現(xiàn)的方式,再次混淆總表網(wǎng) 絡(luò)。
[0073] 根據(jù)本發(fā)明的實施例的方法可W作為計算機實現(xiàn)方法實現(xiàn)于計算機上。根據(jù)本發(fā) 明的方法的可執(zhí)行代碼可W存儲在計算機程序介質(zhì)上。計算機程序介質(zhì)的示例包括存儲器 設(shè)備、光存儲設(shè)備、集成電路、服務(wù)器、在線軟件等。因此,白盒系統(tǒng)可W包括實現(xiàn)白盒計算 機程序的計算機。運種系統(tǒng)還可W包括其他硬件元件,其中包括存儲設(shè)備、用于與外部系統(tǒng) W及在白盒系統(tǒng)的元件之間進行數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)接口。
[0074] 在本發(fā)明的實施例中,計算機程序可W包括適于在計算機程序運行于計算機上時 執(zhí)行根據(jù)本發(fā)明的方法的所有步驟的計算機程序代碼。優(yōu)選地,計算機程序?qū)崿F(xiàn)在非暫時 性的計算機可讀介質(zhì)上。
[0075] 另外,因為白盒密碼術(shù)通常非常復雜和/或混亂,所W對于人來說編寫起來是乏味 冗長的。因此,有利的是具有W自動方式創(chuàng)建根據(jù)本發(fā)明實施例的密碼系統(tǒng)的方法。
[0076] 創(chuàng)建根據(jù)本發(fā)明的密碼系統(tǒng)的方法可W作為計算機實現(xiàn)方法實現(xiàn)于計算機上或 實現(xiàn)于專用硬件中或?qū)崿F(xiàn)于兩者的組合中。根據(jù)本發(fā)明的方法的可執(zhí)行代碼可W存儲在計 算機程序介質(zhì)上。在運種方法中,計算機程序可W包括適于在計算機程序運行于計算機上 時執(zhí)行方法的所有步驟的計算機程序代碼。計算機程序體現(xiàn)在非暫時性的計算機可讀介質(zhì) 上。
[0077] 本文描述的密碼系統(tǒng)可W實現(xiàn)在諸如移動電話、平板電腦、計算機、機頂盒、智能 TV等的用戶設(shè)備上。諸如電視網(wǎng)絡(luò)、視頻流服務(wù)、金融機構(gòu)、音樂流服務(wù)等的內(nèi)容提供商可 W將軟件提供給用于從內(nèi)容提供商接收加密內(nèi)容的用戶沒備。所述軟件可W具有如上所述 嵌入在其中的加密密鑰,并還可W包括如上所述的綁定串。然后,內(nèi)容提供上可W向用戶設(shè) 備發(fā)送加密內(nèi)容,然后用戶設(shè)備可W使用所提供的軟件進行解密并使用內(nèi)容。
[0078] 圖10示出了用于向用戶設(shè)備提供安全內(nèi)容和對該安全內(nèi)容進行處理的軟件應(yīng)用 的系統(tǒng)。所述系統(tǒng)包括內(nèi)容服務(wù)器1000、應(yīng)用服務(wù)器1080、用戶設(shè)備1050和1052、W及數(shù)據(jù) 網(wǎng)絡(luò)1040。用戶設(shè)備1050和1052可W經(jīng)由數(shù)據(jù)網(wǎng)絡(luò)1040請求對內(nèi)容服務(wù)器1000提供的安全 內(nèi)容的訪問。數(shù)據(jù)網(wǎng)絡(luò)可W是提供用戶設(shè)備1050和1052與內(nèi)容服務(wù)器1000 W及應(yīng)用服務(wù)器 1080之間的連接的任何數(shù)據(jù)網(wǎng)絡(luò)。用戶設(shè)備1050和1052可W是多個設(shè)備中的一個,例如機 頂盒、媒體流傳輸器、數(shù)字視頻記錄器、平板計算機、移動電話、膝上型計算機、便攜式媒體 設(shè)備、智能手表、桌面計算機、媒體服務(wù)器等。
[0079] 針對訪問的用戶請求可W先需要可W用于處理內(nèi)容服務(wù)器1000提供的安全內(nèi)容 的軟件應(yīng)用的下載??蒞從應(yīng)用服務(wù)器1080下載軟件應(yīng)用。使用上文描述的技術(shù)并且如上 文操作,可W模糊軟件應(yīng)用。一旦用戶設(shè)備1050、1052安裝軟件應(yīng)用,用戶設(shè)備就可W隨后 從內(nèi)容服務(wù)器1000下載安全內(nèi)容,并使用下載的軟件應(yīng)用來訪問安全內(nèi)容。例如,下載的軟 件應(yīng)用可W對從內(nèi)容服務(wù)器接收的加密內(nèi)容執(zhí)行解密。在其他實施例中,軟件應(yīng)用可W執(zhí) 行其他安全操作,例如,加密、數(shù)字簽名生成和驗證等。
[0080] 內(nèi)容服務(wù)器1000可W控制訪問用戶設(shè)備1050、1052提供的安全內(nèi)容。因此,當內(nèi)容 服務(wù)器1000接收到針對安全內(nèi)容的請求時,內(nèi)容服務(wù)器1000可W向請求的用戶設(shè)備發(fā)送安 全內(nèi)容。類似地,應(yīng)用服務(wù)器1020可W控制訪問用戶設(shè)備1050、1052提供的軟件應(yīng)用。因此, 當應(yīng)用服務(wù)器1020接收到針對軟件應(yīng)用的請求時,應(yīng)用服務(wù)器1020可W向請求的用戶設(shè)備 發(fā)送軟件應(yīng)用。在向用戶設(shè)備提供軟件應(yīng)用或安全內(nèi)容前,各服務(wù)器還可W認證請求軟件 應(yīng)用或安全內(nèi)容的用戶設(shè)備。
[0081 ]內(nèi)容服務(wù)器1000可W包括經(jīng)由一個或多個系統(tǒng)總線1080互連的處理器1002、存儲 器1004、用戶接口 1006、網(wǎng)絡(luò)接口 1010、W及內(nèi)容存儲模塊1012。將要理解的是,圖10構(gòu)成一 定程度的抽象并且設(shè)備1000的組件的實際組織可W比所示出的更為復雜。
[0082] 處理器1002可W是能夠執(zhí)行存儲在存儲器1004或存儲模塊1012中的指令的任何 硬件設(shè)備。由此,處理器可W包括微處理器、現(xiàn)場可編程口陣列(FPGA)、專用集成電路 (ASIC)或其他類似的設(shè)備。
[0083] 存儲器1004可W包括各種存儲器,例如Ll、L2或L3高速緩存或系統(tǒng)存儲器。因此, 存儲器1002可W包括靜態(tài)隨機存取存儲器(SRAM)、動態(tài)RAM(DRAM)、閃存、只讀存儲器 (ROM)、或者其他類似存儲設(shè)備。
[0084] 用戶接口 1006可W包括用于使得能夠與諸如管理員等用戶進行通信的一個或多 個設(shè)備。例如,用戶接口 1006可W包括顯示器、鼠標、W及用于接收用戶命令的鍵盤。
[0085] 網(wǎng)絡(luò)接口 1010可W包括用于實現(xiàn)與其他硬件設(shè)備的通信的一個或多個設(shè)備。例 如,網(wǎng)絡(luò)接口 1010可W包括配置成根據(jù)W太網(wǎng)協(xié)議進行通信的網(wǎng)絡(luò)接口卡(NIC)。此外,網(wǎng) 絡(luò)接口 1010可W實現(xiàn)用于根據(jù)TCP^P協(xié)議的通信的雌?八?找。網(wǎng)絡(luò)接口 1010的各種備選或 附加的硬件或配置是顯而易見的。
[0086] 內(nèi)容存儲器1012可W包括一個或多個機器可讀內(nèi)容存儲介質(zhì),例如,只讀存儲器 (ROM)、隨機存取存儲器(RAM)、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存設(shè)備、或類似存儲介質(zhì)。在 各實施例中,內(nèi)容存儲器1012可W存儲要提供給用戶的內(nèi)容。
[0087] 應(yīng)用服務(wù)器1020包括與內(nèi)容服務(wù)器1000中的元件相似的元件,并且對內(nèi)容服務(wù)器 1000中的相似元件的描述適用于應(yīng)用服務(wù)器1020。此外,應(yīng)用存儲器1032替換內(nèi)容存儲器 1012。此外,應(yīng)該注意的是,內(nèi)容服務(wù)器和應(yīng)用服務(wù)器可W在單個服務(wù)器上實現(xiàn)。而且,運樣 的服務(wù)器可W實現(xiàn)在分布式計算機系統(tǒng)W及云計算機系統(tǒng)上。
[0088] 用來實現(xiàn)本發(fā)明的實施例的在處理器上運行的特定軟件的任意組合構(gòu)成特定的 專用機器。
[0089] 本文所使用的術(shù)語"非暫時性的機器可讀存儲介質(zhì)"將被理解為排除瞬時傳播信 號,但是包括所有形式的易失性和非易失性存儲器。此外,本文使用的術(shù)語"處理器"將被理 解為涵蓋多種類型的設(shè)備,比如微處理器、現(xiàn)場可編程口陣列(FPGA)、專用集成電路(ASIC) 和其它類似的處理設(shè)備。當軟件實現(xiàn)于處理器上時,所述組合變成單個特定機器。
[0090] 本領(lǐng)域技術(shù)人員應(yīng)該理解的是,本文中的任意框圖表示實現(xiàn)本發(fā)明的原理的說明 性電路的概念視圖。
[0091] 盡管通過對特定示例性方面的參考詳細地描述了各示例性實施例,但是應(yīng)當理 解,本發(fā)明還能用于其他實施例,其細節(jié)也能夠在各種顯而易見的方面進行修改。本領(lǐng)域技 術(shù)人員非常清楚,可在本發(fā)明的精神和范圍內(nèi)實現(xiàn)改變和修改。相應(yīng)地,前述公開、描述和 圖僅僅是用于說明性的目的,不W任何形式限制本發(fā)明,本發(fā)明僅由權(quán)利要求限定。
【主權(quán)項】
1. 一種加密鑰的加密運算方法,用于將具有編碼部分和填充部分的輸入消息映射到輸 出消息,所述方法包括: 接收填充值k; 接收輸入消息,其中,所述填充部分具有由填充值k指示的大?。? 計算加密運算的第一部分,以產(chǎn)生第一部分輸出; 計算與輸入消息的填充部分相對應(yīng)的補償因數(shù);以及 基于補償因數(shù),補償?shù)谝徊糠州敵觥?. 根據(jù)權(quán)利要求1所述的方法,其中, 計算與輸入消息的填充部分相對應(yīng)的補償因數(shù)還包括:確定輸入消息的輸入部分是否 是填充部分的一部分,并且基于輸入部分是否是填充部分的一部分來計算補償因數(shù)。3. 根據(jù)權(quán)利要求1所述的方法,其中,填充部分是隨機值。4. 一種加密鑰的加密運算方法,用于將具有編碼部分和填充部分的輸入消息映射到輸 出消息,其中,所述加密鑰的加密運算包括至少一輪,所述至少一輪包括配置為將輸入數(shù)據(jù) 映射到輸出數(shù)據(jù)的非線性映射函數(shù),所述方法包括: 接收填充值k; 接收輸入消息,其中,輸入消息具有N個部分,填充部分具有由填充值k指示的大小,并 且填充部分具有隨機值; 針對輸入消息的N個部分中的一個部分,計算非線性映射函數(shù)的輸出; 針對輸入消息的所述一個部分計算補償因數(shù),其中,當輸入消息的所述一個部分是編 碼部分的一部分時,補償因數(shù)是〇,并且其中,當輸入消息的所述一個部分是填充部分的一 部分時,補償因數(shù)等于非線性映射函數(shù)的輸出;以及 基于補償因數(shù),補償非線性映射函數(shù)的輸出。5. 根據(jù)權(quán)利要求4所述的方法,其中, 加密運算是AES加密運算, 所述N個部分是16字節(jié), 非線性映射函數(shù)包括AES替換盒。6. 根據(jù)權(quán)利要求4所述的方法,其中,查找表實現(xiàn)所述加密鑰的加密運算。7. 根據(jù)權(quán)利要求4所述的方法,其中,有限狀態(tài)機實現(xiàn)所述加密鑰的加密運算。8. -種加密鑰的解密運算方法,用于將具有填充部分的加密輸入消息映射到具有編碼 部分和填充部分的輸出消息,所述方法包括: 計算對加密輸入消息的解密運算,以產(chǎn)生輸出消息的編碼輸出部分; 隨機產(chǎn)生輸出消息的填充部分。9. 根據(jù)權(quán)利要求8所述的方法,還包括:接收填充值k,其中,所述填充部分具有由填充 值k指示的大小。10. 根據(jù)權(quán)利要求8所述的方法,還包括:基于輸入消息的填充部分確定填充值k,其中, 輸入消息的填充部分具有由填充值k指示的大小。11. 一種解密用于將具有編碼部分和填充部分的輸入消息映射到輸出消息,其中,所述 加密鑰的解密運算包括至少一輪,所述至少一輪包括配置為將輸入數(shù)據(jù)映射到輸出數(shù)據(jù)的 非線性映射函數(shù),其中,輸入消息具有N個部分,并且其中,加密鑰的解密運算的狀態(tài)具有N 個部分,所述方法包括: 針對所述狀態(tài)的所述N個部分中的一個部分,計算非線性映射函數(shù)的輸出; 針對非線性映射函數(shù)的輸出計算補償因數(shù),其中,當非線性映射函數(shù)的輸出是編碼部 分的一部分時,補償因數(shù)是〇,并且其中,當非線性映射函數(shù)的輸出是填充部分的一部分時, 補償因數(shù)等于非線性映射函數(shù)的輸出;以及 基于補償因數(shù),補償非線性映射函數(shù)的輸出。12. 根據(jù)權(quán)利要求11所述的方法,其中, 解密運算是AES解密運算, 所述N個部分是16字節(jié), 非線性映射函數(shù)包括AES替換盒。13. 根據(jù)權(quán)利要求11所述的方法,其中,查找表實現(xiàn)所述加密鑰的解密運算。14. 根據(jù)權(quán)利要求11所述的方法,其中,有限狀態(tài)機實現(xiàn)所述加密鑰的解密運算。
【文檔編號】H04L9/06GK105978680SQ201610140963
【公開日】2016年9月28日
【申請日】2016年3月11日
【發(fā)明人】威赫穆斯·P·A·J·米歇爾, 簡·胡格布魯格, 約艾西摩·阿蒂爾·崔斯切爾
【申請人】恩智浦有限公司