使用帶有多個外部編碼的單個白盒實現的制作方法
【技術領域】
[0001] 本文公開的各實施例總體上涉及確保執行針對攻擊的密碼功能的軟件組件的安 全,所述密碼功能包括在白盒實現中實現填充。
【背景技術】
[0002] 互聯網給用戶帶來了對數字內容的便捷且普及的訪問。由于互聯網是強大的分發 通道,所以許多用戶設備都力求能夠直接訪問互聯網。用戶設備可以包括個人計算機、膝上 型計算機、機頂盒、互聯網啟用的媒體播放器、移動電話、智能手機、平板電腦、移動熱點或 能夠訪問互聯網的任意其它設備。將互聯網用作版權內容的分發介質在確保內容提供商的 利益方面帶來了極大的挑戰。用戶設備越發普遍地使用加載了適當軟件的處理器來呈現 (回放)數字內容(比如音頻和/或視頻)。對回放軟件的控制是加強內容擁有者的利益的一 種手段,其中包括可以使用所述內容的條款和條件。此前,許多用戶設備是封閉系統。如今, 越來越多的平臺變為部分開放的。一些用戶可以被假定為能夠完全地控制和訪問提供內容 訪問的硬件和軟件,并擁有大量時間和資源來攻擊和繞過任意內容保護機制。結果,內容提 供商必須在社區的惡意網絡上將內容遞送給合法用戶,其中所述社區中并不是所有用戶或 用戶設備都是可信的。
[0003] 可以訪問安全軟件應用來執行多種功能,比如用來保護和認證數字內容的密碼功 能。為了對抗攻擊,必須對這些算法進行混淆處理(隱藏),以防止對算法進行反向工程和修 改或禁止獲得用戶特定安全信息。從而,可以通過如實現安全軟件的處理器的指令集所限 定的多種功能來執行安全軟件應用的功能。例如,一種用來掩蓋這些功能的手段是使用查 找表。
[0004] 內容提供商必須在社區的惡意網絡上將內容遞送給合法用戶,其中所述社區中并 不是所有用戶或用戶設備都是可信的。這必然導致白箱密碼學的發展。在白箱密碼學場景 中,假定用戶具有對提供內容訪問的硬件和軟件的完全控制,并擁有無限的時間和資源來 攻擊和繞過任意內容保護機制。加強能夠使用內容所需的條款和條件的安全軟件代碼應當 是防篡改的。數字版權管理是安全軟件應用的常見應用。數字版權管理中針對分發給用戶 設備的一般方法是使用例如DES(數據加密標準)、AES(高級加密標準)或者使用其他已知加 密方案對數字內容進行加密,并且使用解密密鑰來恢復數字內容。必須保護這些解密密鑰, 以防止對保護材料的非授權訪問。
[0005] 在數字版權管理場景中,攻擊者具有對加強所保護內容的管理和訪問的軟件的完 全控制。因此,攻擊者可以修改并試圖獲得用于對保護內容進行加密的密碼密鑰。通過分析 軟件,可以獲得這些密鑰。
[0006] 就密鑰分發而言,媒體播放器必須從證書數據庫獲取解密密鑰以回放媒體。然后, 媒體播放器必須將該解密密鑰存儲在存儲器中某處,以便對加密內容進行解密。這樣,攻擊 者就有兩個選擇來攻擊密鑰。第一,攻擊者可以對證書數據庫訪問功能進行反向工程,從而 允許攻擊者從全部證書數據庫中獲取資產密鑰。在這種情形中,攻擊者不需要理解密碼功 能的內部工作。第二,攻擊者可以在內容解密期間觀察存儲器訪問,從而攻擊者可以獲取解 密密鑰。在這兩種情形中,密鑰都被認為受到損害的。
[0007] 對數字版權管理(DRM)和其它安全軟件的廣泛使用引起了對于尋求使得對軟件的 篡改更加復雜的安全、防篡改的軟件的需求。存在多種用來提高軟件應用的防篡改的技術。 這些技術大多基于以下方面:通過在軟件應用的控制和數據路徑中都加入隨機性和復雜性 掩飾來隱藏所述應用的嵌入知識。其背后的構思在于,只通過代碼檢查來提取信息將更加 困難。因此,找到處理安全應用的訪問和許可控制的代碼并進而將其改變是更加困難的。
[0008] 本文所使用的白箱密碼包括在攻擊者已經對運行白箱密碼軟件的系統完全控制 的環境中執行密碼功能的安全軟件應用。從而,攻擊者可以修改輸入和輸出,追蹤軟件的操 作,在任意時刻對軟件所使用的存儲器進行采樣和監測,甚至修改軟件。從而,需要通過防 止公開安全功能中使用的秘密信息的方式來執行安全功能。可以通過多種方式來實現白箱 密碼功能。這些方法包括:掩蓋(Obscure)軟件代碼;使用掩蓋對秘密信息的使用的復雜數 學函數;使用查找表;使用有限狀態機;或執行密碼功能但隱藏這些安全功能所需的秘密信 息的任何其它方法。白箱實現還可以包含包括反調試和防篡改屬性的組件。
[0009] 密碼算法的軟件實現比硬件實現更受歡迎有多種理由。比如,可以是因為在密鑰 泄漏的情況下軟件方案是可更新的、因為其成本低、或因為應用開發者不對實現白箱系統 的硬件有任何影響。
【發明內容】
[0010] 下文給出了對多種示例性實施例的簡要概述。以下概述中可以進行一些簡化和省 略,其是為了強調和介紹多種示例性實施例的一些方面,而不是為了限制本發明的范圍。隨 后的內容中將對足以使得本領域技術人員能夠實施和使用發明構思的示例性實施例進行 詳細描述。
[0011] 各實施例涉及一種編碼有指令的非瞬態機器可讀存儲介質,所述指令由將編碼輸 入消息映射到輸出消息的密碼系統通過執行密鑰式密碼操作來執行,所述非瞬態機器可讀 存儲介質包括:用于接收編碼選擇參數P的指令;用于接收編碼輸入消息的指令,其中對輸 入消息的編碼與編碼選擇參數P相對應;用于使用默認輸入編碼的逆(inverse)對輸入消息 進行解碼的指令;用于對解碼輸入消息計算密碼操作的第一部分以產生第一部分輸出的指 令;以及用于基于編碼選擇參數P補償第一部分輸出的指令。
[0012] 此外,各示例性實施例涉及一種編碼有指令的非瞬態機器可讀存儲介質,所述指 令由將輸入消息映射到編碼輸出消息的密碼系統通過執行密鑰式密碼操作來執行,所述非 瞬態機器可讀存儲介質包括:用于接收編碼選擇參數P的指令;用于接收輸入消息的指令; 用于對輸入消息計算密碼操作的第一部分以產生第一部分輸出的指令;用于基于編碼選擇 參數P補償第一部分輸出的指令;用于對補償后的第一部分輸出執行密碼操作的第二部分 以產生第二部分輸出的指令;以及用于使用默認輸出編碼對第二部分輸出進行編碼的指 令。
[0013] 此外,各示例性實施例涉及一種通過將編碼輸入消息映射到輸出消息的密碼系統 來執行密鑰式密碼操作的方法,包括:接收編碼選擇參數P;接收編碼輸入消息,其中對輸入 消息的編碼與編碼選擇參數P相對應;使用默認輸入編碼的逆對輸入消息進行解碼;對解碼 輸入消息計算密碼操作的第一部分,以產生第一部分輸出;以及基于編碼選擇參數P,補償 第一部分輸出。
[0014] 此外,各示例性實施例涉及一種通過將輸入消息映射到編碼輸出消息的密碼系統 來執行密鑰式密碼操作的方法,包括:接收編碼選擇參數P;接收輸入消息;對輸入消息計算 密碼操作的第一部分,以產生第一部分輸出;基于編碼選擇參數P,補償第一部分輸出;對補 償后的第一部分輸出執行密碼操作的第二部分,以產生第二部分輸出;以及使用默認輸出 編碼對第二部分輸出進行編碼。
【附圖說明】
[0015] 為了更好地理解各種示例性實施例,對附圖進行參考,其中:
[0016] 圖1示出了AES的一個回合的主要步驟;
[0017]圖2示出了帶有對回合的輸入的固定編碼的白箱AES實現;
[0018]圖3示出了借助查找表的網絡對一個輸出半字節的計算;
[0019]圖4示出了通過對輸入和輸出進行編碼而混淆處理的圖3的網絡表的一部分;
[0020]圖5示出了帶有多輸入編碼的白箱實現的實施例;
[0021]圖6示出了根據到回合9的輸入的外部編碼輸出字節的計算;
[0022] 圖7示出了包括兩個可能的不同外部編碼的白箱實現的實施例;以及
[0023] 圖8示出了提供用戶設備安全內容和處理該安全內容的軟件應用的系統。
[0024] 為了便于理解,使用相同的附圖標記來指代具有基本相同或相似的結構和/或基 本相同或相似的功能的元素。
【具體實施方式】
[0025]說明書和附圖示出了本發明的原理。從而,將理解的是,本領域技術人員能夠設想 出實現本發明的原理并包括在其范圍內的多種布置(盡管此處并未明確描述或示出)。此 外,這里所述的所有示例明顯主要用于教導目的,以輔助讀者理解本發明的原理以及發明 人為推進現有技術而貢獻的構思,其被認為不限于具體描述的示例和條件。此外,本文中使 用的術語"或"指代非排他性的或(即和/或),除非另作指示(例如"或其它"或"或在備選方 式中")。此外,本文所述的多種實施例不必是互