亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在白盒實(shí)現(xiàn)方案中實(shí)現(xiàn)填充的制作方法

文檔序號(hào):10615784閱讀:260來(lái)源:國(guó)知局
在白盒實(shí)現(xiàn)方案中實(shí)現(xiàn)填充的制作方法
【專利摘要】在白盒實(shí)現(xiàn)方案中實(shí)現(xiàn)填充。一種加密鑰的加密運(yùn)算方法,用于將具有編碼部分和填充部分的輸入消息映射到輸出消息,該方法包括:接收填充值k;接收輸入消息,其中,填充部分具有由填充值k指示的大??;計(jì)算加密運(yùn)算的第一部分,以產(chǎn)生第一部分輸出;計(jì)算與輸入消息的填充部分相對(duì)應(yīng)的補(bǔ)償因數(shù);以及基于補(bǔ)償因數(shù),補(bǔ)償?shù)谝徊糠州敵觥?br>【專利說(shuō)明】
在白盒實(shí)現(xiàn)方案中實(shí)現(xiàn)填充
技術(shù)領(lǐng)域
[0001] 本文公開(kāi)的各種示例性實(shí)施例總體上設(shè)及確保執(zhí)行密碼功能的軟件組件免受攻 擊,包括在白盒實(shí)現(xiàn)方案中實(shí)現(xiàn)填充。
【背景技術(shù)】
[0002] 互聯(lián)網(wǎng)給用戶帶來(lái)了對(duì)數(shù)字內(nèi)容的便捷且普及的訪問(wèn)。由于互聯(lián)網(wǎng)是強(qiáng)大的分發(fā) 渠道(distr化Ution channel),因此許多用戶設(shè)備力圖直接訪問(wèn)互聯(lián)網(wǎng)。用戶設(shè)備可W包 括個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、機(jī)頂盒、支持互聯(lián)網(wǎng)的媒體播放器、移動(dòng)電話、智能手機(jī)、平 板電腦、移動(dòng)熱點(diǎn)或能夠訪問(wèn)互聯(lián)網(wǎng)的任意其它設(shè)備。將互聯(lián)網(wǎng)用作正版內(nèi)容的分發(fā)媒介 產(chǎn)生了關(guān)于確保內(nèi)容提供商利益的緊迫問(wèn)題。用戶設(shè)備越發(fā)普遍地使用加載有適合軟件的 處理器來(lái)進(jìn)行操作,W呈現(xiàn)(回放)數(shù)字內(nèi)容(比如音頻和/或視頻)。對(duì)回放軟件進(jìn)行控制是 加強(qiáng)內(nèi)容所有者利益的一種方式,包括內(nèi)容可W被使用的條款和條件。此前,許多用戶設(shè)備 是封閉系統(tǒng)。今天,越來(lái)越多的平臺(tái)是部分開(kāi)放式的。一些用戶可W被假定為能夠完全控制 和訪問(wèn)對(duì)內(nèi)容提供訪問(wèn)的硬件和軟件,并擁有大量時(shí)間和資源來(lái)攻擊和避開(kāi)任何內(nèi)容保護(hù) 機(jī)制。結(jié)果,內(nèi)容提供商必須穿過(guò)惡意網(wǎng)絡(luò)到并非所有用戶或用戶設(shè)備都可信的社區(qū)W向 合法用戶傳送內(nèi)容。
[0003] 可W調(diào)用安全軟件應(yīng)用來(lái)執(zhí)行多種功能,例如用來(lái)保護(hù)和認(rèn)證數(shù)字內(nèi)容的密碼功 能。為了對(duì)抗攻擊,必須對(duì)運(yùn)些算法進(jìn)行混淆處理(隱藏),W防止對(duì)算法進(jìn)行反向工程和修 改或禁止獲得用戶特定安全信息。因此,可W通過(guò)由實(shí)現(xiàn)安全軟件的處理器的指令集限定 的多種功能,來(lái)執(zhí)行安全軟件應(yīng)用的功能。例如,一種模糊運(yùn)些功能的方法是使用查找表。
[0004] 內(nèi)容提供商必須穿過(guò)惡意網(wǎng)絡(luò)到并非所有用戶或設(shè)備都可信的社區(qū)W向合法用 戶傳送內(nèi)容。運(yùn)樣導(dǎo)致開(kāi)發(fā)了白盒(white-box)密碼術(shù)。在白盒密碼術(shù)情境下,假定用戶完 全控制對(duì)內(nèi)容提供訪問(wèn)的硬件和軟件,并具有無(wú)限量的時(shí)間和資源來(lái)攻擊和避開(kāi)任何內(nèi)容 保護(hù)機(jī)制。加強(qiáng)內(nèi)容可W被使用的條款和條件的安全軟件代碼應(yīng)是防篡改的。數(shù)字權(quán)限管 理是安全軟件應(yīng)用的普通應(yīng)用。在數(shù)字權(quán)限管理中,用于分發(fā)到用戶設(shè)備的受保護(hù)內(nèi)容的 一般方法是使用例如DES(數(shù)據(jù)加密標(biāo)準(zhǔn))、AES(高級(jí)加密標(biāo)準(zhǔn))或使用其他已知加密方案來(lái) 加密數(shù)字內(nèi)容,并使用解密密鑰來(lái)恢復(fù)數(shù)字內(nèi)容。必須保護(hù)運(yùn)些解密密鑰,W防止對(duì)保護(hù)材 料的非授權(quán)訪問(wèn)。
[0005] 在數(shù)字權(quán)限管理情境下,攻擊者完全控制加強(qiáng)對(duì)所保護(hù)內(nèi)容的管理和訪問(wèn)的軟 件。因此,攻擊者可W修改軟件并還尋求獲得用于對(duì)受保護(hù)內(nèi)容進(jìn)行加密的加密密鑰。可W 通過(guò)分析軟件來(lái)找到運(yùn)樣的密鑰。
[0006] 關(guān)于密鑰分發(fā),媒體播放器必須從許可證數(shù)據(jù)庫(kù)獲取解密密鑰W回放媒體。然后 媒體播放器必須將所述解密密鑰存儲(chǔ)在存儲(chǔ)器中的某處,W便對(duì)加密內(nèi)容進(jìn)行解密。運(yùn)樣 向攻擊者留下了用于攻擊所述密鑰的兩個(gè)選項(xiàng)。首先,攻擊者可W對(duì)許可證數(shù)據(jù)庫(kù)訪問(wèn)功 能執(zhí)行逆向工程,允許攻擊者從所有許可證數(shù)據(jù)庫(kù)檢索資產(chǎn)密鑰(asset keys)。在運(yùn)種情 況下,攻擊者不需要理解密碼學(xué)功能的內(nèi)部工作。第二,攻擊者可W觀察在內(nèi)容解密期間的 存儲(chǔ)器訪問(wèn),從而攻擊者可W獲取解密密鑰。在運(yùn)兩種情況下,密鑰被視為缺乏抵抗力的。
[0007] 數(shù)字權(quán)限管理(DRM)和其他安全軟件的廣泛使用已經(jīng)引起對(duì)尋求復(fù)雜的軟件篡改 的防篡改軟件的安全的需要。存在多種用于增加軟件應(yīng)用的防篡改的技術(shù)。運(yùn)些技術(shù)中的 大多數(shù)基于通過(guò)對(duì)軟件應(yīng)用的控制和數(shù)據(jù)路徑二者的隨機(jī)性和復(fù)雜性加W掩蓋來(lái)隱藏應(yīng) 用的內(nèi)在知識(shí)。其背后的構(gòu)思在于,只通過(guò)代碼檢查來(lái)提取信息變得更加困難。因此,找到 例如處理安全應(yīng)用的訪問(wèn)和許可控制的代碼并因此改變代碼會(huì)更加困難。
[0008] 如本文所用,白盒密碼術(shù)包括在攻擊者完全控制運(yùn)行白盒密碼術(shù)軟件的系統(tǒng)的環(huán) 境下執(zhí)行密碼功能的安全軟件應(yīng)用。從而,攻擊者可W修改輸入和輸出,追蹤軟件的操作, 在任意時(shí)刻對(duì)軟件所使用的存儲(chǔ)器進(jìn)行采樣和監(jiān)測(cè),甚至修改軟件。從而,需要通過(guò)防止公 開(kāi)安全功能中使用的秘密信息的方式來(lái)執(zhí)行安全功能。白盒密碼功能可W實(shí)現(xiàn)為各種方 式。運(yùn)樣的方法包括:模糊軟件代碼;使用模糊秘密信息的使用的復(fù)雜的數(shù)學(xué)函數(shù);使用查 找表;使用有限狀態(tài)機(jī);或者執(zhí)行密碼功能但是隱藏安全功能所需的秘密信息的任何其他 方法。白盒實(shí)現(xiàn)方案還可W包含包括抗調(diào)試和防篡改特性的組件。
[0009] 密碼算法的軟件實(shí)現(xiàn)方案比硬件實(shí)現(xiàn)方案更受歡迎有多種理由。例如,運(yùn)可W是 W下情況:因?yàn)樵诿荑€泄露的情況下軟件解決方案是可更新的,因?yàn)檐浖鉀Q方案具有更 低的成本,或者因?yàn)閼?yīng)用開(kāi)發(fā)者對(duì)實(shí)現(xiàn)白盒系統(tǒng)的硬件沒(méi)有影響。

【發(fā)明內(nèi)容】

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