無需改變密鑰的安全性補丁的制作方法
【技術(shù)領(lǐng)域】
[0001] 這里公開的多種示例性實施例一般地涉及在不改變密碼密鑰的情況下在白箱實 現(xiàn)中打安全性補丁。
【背景技術(shù)】
[0002] 互聯(lián)網(wǎng)給用戶帶來了對數(shù)字內(nèi)容的便捷且普及的訪問。由于互聯(lián)網(wǎng)是強大的分發(fā) 通道,所以許多用戶設(shè)備都力求能夠直接訪問互聯(lián)網(wǎng)。用戶設(shè)備可以包括個人計算機、膝上 型計算機、機頂盒、互聯(lián)網(wǎng)啟用的媒體播放器、移動電話、智能手機、平板電腦、移動熱點或 能夠訪問互聯(lián)網(wǎng)的任意其它設(shè)備。將互聯(lián)網(wǎng)用作版權(quán)內(nèi)容的分發(fā)介質(zhì)在確保內(nèi)容提供商的 利益方面帶來了極大的挑戰(zhàn)。用戶設(shè)備越發(fā)普遍地使用加載了適當軟件的處理器來呈現(xiàn) (回放)數(shù)字內(nèi)容(比如音頻和/或視頻)。對回放軟件的控制是加強內(nèi)容擁有者的利益 的一種手段,其中包括可以使用所述內(nèi)容的條款和條件。此前,許多用戶設(shè)備是封閉系統(tǒng)。 如今,越來越多的平臺變?yōu)椴糠珠_放的。一些用戶可以被假定為能夠完全地控制和訪問提 供內(nèi)容訪問的硬件和軟件,并擁有大量時間和資源來攻擊和繞過任意內(nèi)容保護機制。結(jié)果, 內(nèi)容提供商必須在社區(qū)的惡意網(wǎng)絡(luò)上將內(nèi)容遞送給合法用戶,其中所述社區(qū)中并不是所有 用戶或用戶設(shè)備都是可信的。
[0003] 可以訪問安全軟件應(yīng)用來執(zhí)行多種功能,比如用來保護和認證數(shù)字內(nèi)容的密碼功 能。為了對抗攻擊,必須對這些算法進行模糊處理(隱藏),以防止對算法進行反向工程和 修改或禁止獲得用戶特定安全信息。從而,可以通過如實現(xiàn)安全軟件的處理器的指令集所 限定的多種功能來執(zhí)行安全軟件應(yīng)用的功能。例如,一種用來掩蓋這些功能的手段是使用 查找表。
[0004] 對數(shù)字版權(quán)管理(DRM)和其它安全軟件的廣泛使用引起了對于尋求使得對軟件 的篡改更加復(fù)雜的安全、防篡改的軟件的需求。存在多種用來提高軟件應(yīng)用的防篡改的技 術(shù)。這些技術(shù)大多基于以下方面:通過在軟件應(yīng)用的控制和數(shù)據(jù)路徑中都加入隨機性和復(fù) 雜性掩飾來隱藏所述應(yīng)用的嵌入知識。其背后的構(gòu)思在于,只通過代碼檢查來提取信息將 更加困難。因此,找到處理安全應(yīng)用的訪問和許可控制的代碼并進而將其改變是更加困難 的。
[0005] 本文所使用的白箱密碼包括在攻擊者已經(jīng)對運行白箱密碼軟件的系統(tǒng)完全控制 的環(huán)境中執(zhí)行密碼功能的安全軟件應(yīng)用。從而,攻擊者可以修改輸入和輸出,追蹤軟件的操 作,在任意時刻對軟件所使用的存儲器進行采樣和監(jiān)測,甚至修改軟件。從而,需要通過防 止公開安全功能中使用的秘密信息的方式來執(zhí)行安全功能??梢酝ㄟ^多種方式來實現(xiàn)白箱 密碼功能。這些方法包括:掩蓋軟件代碼;使用掩蓋秘密信息的使用的復(fù)雜數(shù)學(xué)函數(shù);使用 查找表;使用有限狀態(tài)機;或執(zhí)行密碼功能但隱藏這些安全功能所需的秘密信息的任何其 它方法。白箱實現(xiàn)還可以包含包括反調(diào)試和防篡改屬性的組件。
[0006] 密碼算法的軟件實現(xiàn)比硬件實現(xiàn)更受歡迎有多種理由。比如,可以是因為在密鑰 泄漏的情況下軟件方案是可更新的、因為其成本低、或因為應(yīng)用開發(fā)者不對實現(xiàn)白箱系統(tǒng) 的硬件有任何影響。
【發(fā)明內(nèi)容】
[0007] 下文給出了對多種示例性實施例的簡要概述。以下概述中可以進行一些簡化和省 略,其是為了強調(diào)和介紹多種示例性實施例的一些方面,而不是為了限制本發(fā)明的范圍。隨 后的內(nèi)容中將對足以使得本領(lǐng)域技術(shù)人員能夠?qū)嵤┖褪褂冒l(fā)明構(gòu)思的示例性實施例進行 詳細描述。
[0008] 多種示例性實施例涉及一種在密碼系統(tǒng)中在不改變密鑰的情況下對密碼實現(xiàn)打 補丁的方法,包括:向所述密碼實現(xiàn)發(fā)送來自第一消息集的消息,其中所述第一消息使用 所述密碼實現(xiàn)的第一部分;決定對所述密碼實現(xiàn)打補??;在決定對所述密碼實現(xiàn)打補丁之 后,向所述密碼實現(xiàn)發(fā)送來自第二消息集的第二消息,其中所述第二消息使用所述密碼實 現(xiàn)的不用于所述第一消息集中的任何消息的第二部分。
[0009] 描述了多種實施例,其中,所述第一消息使用所述密碼實現(xiàn)的不用于不在所述第 一消息集中的任何消息的所述第一部分,并且所述第二消息使用所述密碼實現(xiàn)的不用于不 在所述第二消息集中的任何消息的所述第二部分。
[0010] 描述了多種實施例,來自所述第二消息集的消息能夠使用所述密碼實現(xiàn)的所述第 一部分的任意部分。
[0011] 描述了多種實施例,還包括:在決定對所述密碼實現(xiàn)打補丁之后,使用所述密碼實 現(xiàn)的所述第二部分更新所述密碼實現(xiàn)。
[0012] 描述了多種實施例,還包括:在決定對所述密碼實現(xiàn)打補丁之后,繼續(xù)發(fā)送來自所 述第一消息集的消息。
[0013] 描述了多種實施例,其中,決定對所述密碼實現(xiàn)打補丁還包括:接收關(guān)于已經(jīng)復(fù)制 了所述密碼實現(xiàn)的指示。
[0014] 描述了多種實施例,其中,決定對所述密碼實現(xiàn)打補丁在時間段(timeperiod)已 經(jīng)期滿之后發(fā)生。
[0015] 描述了多種實施例,其中,所述密碼實現(xiàn)包括有限狀態(tài)機的網(wǎng)絡(luò)。
[0016] 描述了多種實施例,其中,所述密碼實現(xiàn)包括查找表的網(wǎng)絡(luò)。
[0017] 描述了多種實施例,其中,所述密碼操作是高級加密系統(tǒng)AES或數(shù)據(jù)加密標準DES 之一。
[0018] 此外,多種示例性實施例涉及一種在密碼系統(tǒng)中產(chǎn)生將輸入消息映射到輸出消息 的帶密鑰密碼操作的密碼實現(xiàn)的方法,其中能夠在不改變密碼密鑰的情況下對所述密碼實 現(xiàn)打補丁,所述方法包括:接收指定多個消息組的信息;基于所接收的指定所述多個消息 組的信息來修改所述密碼實現(xiàn),以使得:當所述密碼實現(xiàn)接收到來自第一消息集的消息時, 所述第一消息使用所述密碼實現(xiàn)的第一部分;當所述密碼實現(xiàn)在決定對所述密碼實現(xiàn)打補 丁之后接收到來自第二消息集的第二消息時,所述第二消息使用所述密碼實現(xiàn)的不用于所 述第一消息集中的任何消息的第二部分。
[0019] 描述了多種實施例,其中,所述第一消息使用所述密碼實現(xiàn)的不用于不在所述第 一消息集中的任何消息的所述第一部分,并且所述第二消息使用所述密碼實現(xiàn)的不用于不 在所述第二消息集中的任何消息的所述第二部分。
[0020] 描述了多種實施例,其中,來自所述第二消息集的消息能夠使用所述密碼實現(xiàn)的 所述第一部分的任意部分。
[0021] 描述了多種實施例,其中,所述密碼實現(xiàn)被進一步修改為處理來自與所述密碼實 現(xiàn)的第一部分相關(guān)聯(lián)的第一消息組的消息,并且所述密碼實現(xiàn)被配置為在接收到來自與所 述密碼實現(xiàn)的所述第二部分相關(guān)聯(lián)的第二消息組的消息之前接收所述密碼實現(xiàn)的第二部 分。
[0022] 描述了多種實施例,其中,密碼實現(xiàn)包括多個函數(shù),并且修改所述密碼實現(xiàn),以使 得:第一函數(shù)的輸出包括關(guān)于所述第一函數(shù)的輸入與處于所述多個消息組之一中的所接收 的輸入消息相對應(yīng)的指示;以及基于關(guān)于所述第一函數(shù)的輸入與所述多個組之一中的消息 相對應(yīng)的指示,僅使用第二函數(shù)的與和所接收的輸入消息相關(guān)聯(lián)的消息組相對應(yīng)的部分。
[0023] 描述了多種實施例,其中,所述密碼實現(xiàn)包括有限狀態(tài)機的網(wǎng)絡(luò)。
[0024] 描述了多種實施例,其中,所述密碼實現(xiàn)包括查找表的網(wǎng)絡(luò)。
[0025] 描述了多種實施例,其中,所述密碼操作是高級加密系統(tǒng)AES或數(shù)據(jù)加密標準DES 之一。
[0026] 此外,多種示例性實施例涉及一種在密碼系統(tǒng)中的帶密鑰密碼操作的密碼實現(xiàn)中 將輸入消息映射到輸出消息的方法,其中能夠在不改變密碼密鑰的情況下對所述密碼實現(xiàn) 打補丁,所述方法包括:由所述密碼系統(tǒng)接收與第一消息集相關(guān)聯(lián)的第一輸入消息,其中所 述第一消息集與所述密碼實現(xiàn)的第一部分相關(guān)聯(lián);由所述密碼系統(tǒng)執(zhí)行將所述第一輸入消 息映射到第一輸出消息的帶密鑰密碼操作,其中對所述第一輸入消息執(zhí)行所述映射使用所 述密碼實現(xiàn)的所述第一部分;由所述密碼系統(tǒng)接收與第二消息集相關(guān)聯(lián)的第二輸入消息, 其中所述第二消息集與所述密碼實現(xiàn)的第二部分相關(guān)聯(lián);由所述密碼系統(tǒng)執(zhí)行將所述第二 輸入消息映射到第二輸出消息的帶密鑰密碼操作,其中對所述第二輸入消息執(zhí)行所述映射 使用所述密碼實現(xiàn)的不用于所述第一消息集中的任何消息的所述第二部分。
[0027] 描述了多種實施例,其中,所述第一輸入消息使用所述密碼實現(xiàn)的不用于不在所 述第一消息集中的任何輸入消息的所述第一部分,并且所述第二輸入消息使用所述密碼實 現(xiàn)的不用于不在所述第二消息集中的任何輸入消息的所述第二部分。
[0028] 描述了多種實施例,其中,來自所述第二消息集的輸入消息能夠使用所述密碼實 現(xiàn)的所述第一部分的任意部分。
[0029] 描述了多種實施例,還包括:在接收到所述第二輸入消息之前,接收所述密碼實現(xiàn) 的第二部分。
[0030] 描述了多種實施例,其中,所述密碼實現(xiàn)包括多個函數(shù),第一函數(shù)的輸出包括關(guān)于 所述第一函數(shù)的輸入與處于所述第二消息組中的所接收的第二輸入消息相對應(yīng)的指示;以 及基于關(guān)于所述第一函數(shù)的輸入與所述第二消息組中的所接收的第二輸入消息相對應(yīng)的 指示,僅使用第二函數(shù)的與所述第二消息組相對應(yīng)的部分。
[0031] 描述了多種實施例,其中,所述密碼實現(xiàn)包括有限狀態(tài)機的網(wǎng)絡(luò)。
[0032] 描述了多種實施例,其中,所述密碼實現(xiàn)包括查找表的網(wǎng)絡(luò)。
[0033] 描述了多種實施例,其中,所述密碼操作是高級加密系統(tǒng)AES或數(shù)據(jù)加密標準DES 之一。
[0034] 此外,多種示例性實施例涉及一種編碼有指令的非瞬時機器可讀存儲介質(zhì),所述 指令由密碼系統(tǒng)中的帶密鑰密碼操作的密碼實現(xiàn)來執(zhí)行以用于將輸入消息映射到輸出消 息,其中能夠在不改變密碼密鑰的情況下對所述密碼實現(xiàn)打補丁,所述非瞬時機器可讀存 儲介質(zhì)包括:用于接收與第一消息集相關(guān)聯(lián)的第一輸入消息的指令,其中所述第一消息集 與所述密碼實現(xiàn)的第一部分相關(guān)聯(lián);用于執(zhí)行將所述第一輸入消息映射到第一輸出消息的 帶密鑰密碼操作的指令,其中對所述第一輸入消息執(zhí)行所述映射使用所述密碼實現(xiàn)的所述 第一部分;用于接收與第二消息集相關(guān)聯(lián)的第二輸入消息的指令,其中所述第二消息集與 所述密碼實現(xiàn)的第二部分相關(guān)聯(lián);用于執(zhí)行將所述第二輸入消息映射到第二輸出消息的帶 密鑰密碼操作的指令,其中對所述第二輸入消息執(zhí)行所述映射使用所述密碼實現(xiàn)的不用于 所述第一消息集中的任何消息的所述第二部分。
[0035] 描述了多種實施例,其中,所述第一輸入消息使用所述密碼實現(xiàn)的不用于不在所 述第一消息集中的任何輸入消息的所述第一部分,并且所述第二輸入消息使用所述密碼實 現(xiàn)的不用于不在所述第二消息集中的任何輸入消息的所述第二部分。
[0036]