加密代碼執行的製作方法
2023-06-21 12:46:01

本公開涉及信息處理的領域,更加具體地,涉及信息處理系統中軟體的分發和使用。
背景技術:
軟體開發者和經銷商使用了各種方法來試圖控制對其可執行代碼的使用,以便於保護他們的智慧財產權和潛在收益。這類方法包括激活碼、許可伺服器、計量、複製保護、以及硬體加密狗(dongle)。
附圖說明
附圖通過示例的方式而非限制的方式示出了本發明。
圖1根據本發明的實施例示出了包括對加密代碼執行的支持的系統。
圖2根據本發明的實施例示出了包括對加密代碼執行的支持的處理器。
圖3根據本發明的實施例示出了包括加密代碼執行的系統架構。
圖4根據本發明的實施例示出了用於加密代碼執行的方法。
具體實施方式
公開了用於加密代碼執行的本發明的實施例。在說明書中,可能提及諸如組件和系統配置之類的大量具體細節以便於提供對本發明的更加深入的理解。但是,本領域技術人員將認識到的是本發明可以在不具備這些具體細節的情況下被實踐。另外,一些已知的結構、電路、及其他特徵未被詳細示出以避免不必要地使本發明模糊不清。
在下面的描述中,對「一個實施例」、「實施例」、「示例實施例」、「各種實施例」等的提及指示本發明被這樣描述的(一個或多個)實施例可以包括特定特徵、結構、或特點,但不止一個實施例可能包括這些特定特徵、結構、或特點或者並非每個實施例都必須包括這些特定特徵、結構、或特點。另外,一些實施例可以具有針對其他實施例所述的特徵中的一些特徵、全部特徵或不具有那些特徵。
如本說明書和權利要求書中所使用的,並且除非另有規定,否則使用序數形容詞「第一」、「第二」、「第三」等來描述元素僅表明所指代的是元素的特定實例或相似元素的不同實例,而並非意圖暗示被這樣描述的元素必須在時間上、空間上、排序上或以任何其他方式採用特定順序。
如背景技術部分所述,軟體開發者和經銷商使用了各種方法來試圖控制對其可執行代碼的使用,以便於保護他們的智慧財產權和潛在收益。使用本發明實施例的方法可被期望來降低對反向工程和未授權使用的敏感性。
圖1根據本發明的實施例示出了系統100,系統100是包括對加密代碼執行的支持的信息處理系統。系統100可以表示任意類型的信息處理系統,諸如,伺服器、臺式計算機、可攜式計算機、機頂盒、手持式設備(例如,平板或智慧型電話)、或嵌入式控制系統。系統100包括處理器110、系統存儲器120、圖形處理器130、外設控制代理140、以及信息存儲設備150。體現本發明的系統可以包括任意數量的這些組件中的每種組件以及任意其他組件或其他元件,諸如外設和輸入/輸出設備。除非另有規定,否則該系統實施例或任意系統實施例中的任何組件或全部組件或其他元件可以通過任意數量的總線、點對點、或其他有線或無線接口或連接被連接、耦合或者以其他方式與彼此進行通信。系統100的任意組件或其他部分(無論圖1中是否示出)可以被集成或以其他方式被包括在以下各項之上或之內:單個晶片(片上系統或SOC)、管芯、襯底、或封裝。
系統存儲器120可以是動態隨機存取存儲器或可由處理器110讀取的任意其他類型的介質。圖形處理器130可以包括任意處理器或用來處理顯示器132的圖形數據的其他組件。外設控制代理140可以表示任意組件(例如,晶片集組件),外設、輸入/輸出(I/O)、或諸如設備142之類的其他組件或設備(例如,觸控螢幕、鍵盤、麥克風、揚聲器、其他音頻設備、照相機、視頻或其他媒體設備、網絡適配器、運動傳感器或其他傳感器、用於全球定位或其他信息的接收器等等)、和/或信息存儲設備150通過包括或經由外設控制代理140可以被連接或耦合至處理器110。信息存儲設備150可以包括任意類型的永久或非易失性存儲器或存儲設備,例如快閃記憶體和/或固態、磁碟或光碟驅動。應當注意的是除了處理器110或代替處理器110,圖形處理器130、外設控制代理140和能夠執行指令(和/或根據程序或模型或一組規則)的任意其他組件或代理可以包含本發明的實施例。
處理器110可以表示集成在單個襯底或封裝在單個封裝內的一個或多個處理器或處理器核,它們中的每一個可以包括採用任意組合方式的多個線程和/或多個執行核。每個被表示為處理器110的處理器或在處理器110內的處理器可以是任意類型的處理器,包括通用微處理器(例如CoreTM處理器族的處理器或來自公司或其他公司的其他處理器族的處理器)、或專用處理器或微控制器。處理器110可以被構建或設計為在被微碼控制或沒有微碼控制的情況下根據任意指令集架構來操作。另外,處理器110可以表示可在其中實現本發明的實施例的信息處理系統中的任意設備或組件。
根據本發明實施例的對加密代碼執行的支持可以通過使用嵌入在硬體中的電路和/或邏輯、微碼、固件、和/或如下面所述或根據任意其他方法來布置的其他結構的任意組合來實現在處理器(例如,處理器110)中,並且在圖1中被表示為代碼解密器112。
圖2示出了處理器200,處理器200的實施例可以作為系統100中的處理器110。處理器200包括私鑰210、解密單元220、指令單元230、執行單元240、控制單元250以及緩存單元260。處理器200還可以包括圖2中未示出的任意其他電路、結構或邏輯。如上面所介紹以及下面進一步描述的,代碼解密器112的功能可以被包括在處理器200中或者被分布在處理器200中的任意標記單元之間或處理器200中的其他地方。另外,處理器200的每個所述和/或所示單元的功能和/或電路可以以任何方式被合併和/或分布。
私鑰210可以表示任意硬體密鑰、密鑰集、或嵌入到處理器200中可被用作加密算法中的密鑰的其他(一個或多個)值。私鑰210的大小可以是任意數目(例如,32、256等等)的比特位。在實施例中,私鑰210的值可在製造處理器200期間或之後通過使用例如導電連接件或緊附件或融合件(fuse)被嵌入、編程或以其他方式存儲在只讀存儲器中。私鑰210可對於每個處理器核、處理器IC、處理器封裝、或信息處理系統而言是唯一的。
在實施例中,在處理器200或系統100中的任意其他處理器或其他代理上運行的軟體或固件無法訪問私鑰210(例如,存儲私鑰210的只讀存儲器),換言之,防止私鑰210被軟體或固件讀取。在實施例中,私鑰210可以在物理上處於解密單元220內或者被硬連線至解密單元220,從而只有解密單元220中的硬體可以訪問私鑰210,和/或更加具體地,只有在需要對加密指令進行解密時私鑰210才是可用的、可讀取的或可以其他方式訪問的。任何軟體或任何其他硬體既無法觀察到密鑰的值也無法觀察到解密操作。在其他實施例中,私鑰210還可被用於其他用途。
解密單元220可以包括任何電路、結構和/或其他硬體來執行一個或多個密碼算法以用來根據任何已知的技術對信息進行加密和/或解密。例如,加密單元220可以使用私鑰210來將加密信息(密文)轉換成非加密信息(明文)。在實施例中,解密單元220用來對加密代碼進行解密以生成非加密的代碼,從而非加密的代碼可以被處理器200中的一個或多個執行單元(例如,執行單元240)執行。
指令單元230可以包括任意電路、結構、和/或其他硬體(例如,指令解碼器)來提取、接收、解碼、解釋、調度和/或以其他方式處理將由處理器200執行的指令。可以在本發明的範圍內使用任意指令格式。例如,指令可以包括操作碼和一個或多個操作數,其中操作碼可以被解碼成供執行單元240執行的一個或多個微指令或微操作。操作數和其他參數可以隱式地、直接地、間接地、或根據任意其他方法與指令相關聯。
執行單元240可以包括任意電路、結構、和/或其他硬體,諸如運算單元、邏輯單元、浮點單元、移位器等等,以用於處理數據和執行指令、微指令、和/或微操作。指令單元240可以表示在物理上或邏輯上不同的任意一個或多個執行單元。
控制單元250可以包括任意電路、邏輯或其他指令,包括微碼、狀態機器邏輯、以及可編程邏輯,用來控制處理器200的單元和其他元件的操作以及在處理器200內部的數據傳輸、傳入處理器200的數據傳輸以及從處理器200傳出的數據傳輸。控制單元250可以使處理器200執行或參與本發明的方法實施例的執行(諸如下面所述的方法實施例),例如,控制單元250通過使處理器200使用執行單元240、加密單元220和/或任意其他資源來執行指令單元230所接收的指令以及從執行單元230接收的指令得到的微指令或微操作。
緩存單元260可以包括系統100的存儲器層次中任意級別的任意一個或多個專用緩存存儲器或共享緩存存儲器,它們被實現在靜態隨機存取存儲器或任意其他存儲器技術中,連同電路、結構和/或其他硬體一起來控制和/或提供對它們的使用和維護。在實施例中,緩存單元260可以包括2級(L2)緩存262、1級數據緩衝(L1 d-緩存)264以及1級指令緩存(L1 i-緩存)266。
圖3根據本發明的實施例示出了用於加密代碼執行的架構300。架構300包括系統310和獨立軟體供應商(ISV)370。系統310可以表示諸如系統100之類的信息處理系統,包括處理器核320和系統存儲器390,它們二者對應於上文所述的系統100的處理器和系統存儲器。處理器核320可以表示根據本發明的實施例的處理器或處理器核(例如,處理器200),它包括代碼解密器330以及私鑰332、L2緩存340、L1 d-緩存342、L1 i-緩存344、指令單元350、以及執行單元360,每一項分別對應於上文所述的處理器200的密鑰、緩存或單元。
代碼解密器330可以表示根據本發明的實施例的代碼解密器,諸如代碼解密器112和/或解密單元220。ISV 370可以表示任意軟體開發者或經銷商、內容或服務提供商、或者可以提供要安裝在系統310上、在系統310上運行或由系統310執行的軟體、程序、過程、功能、例程、模塊或其他代碼或指令(統稱為代碼)組的任意其他實體。如下所述,這類代碼可被ISV 370加密並被表示為加密代碼372。加密代碼372可以由根據本發明的實施例的代碼解密器330解密以生成經解密的代碼374。圖3還示出了未加密的代碼376,其可以表示根據本發明實施例的來自ISV 370或來自任意其他來源的未經加密的任意代碼。
加密代碼372可由ISV 370或任意其他實體進行加密,從而加密代碼372可以使用私鑰332來解密。在實施例中,私鑰332可以是非對稱密碼密鑰對的私鑰,其中公鑰380可以是該密鑰對中的另一密鑰。因此,公鑰380可由處理器核320的製造商生成和/或用可驗證的數字籤名進行籤字,以便於為ISV 370或另一實體提供下述保障:用公鑰380加密的代碼僅可由處理器核320執行,也就是說不可以進行改變、複製、反向工程、調試、分析等等(即,不能由其他處理器核執行,除非根據需要,可由已經被處理器核製造商,或在系統供應商可對私鑰332進行編程的實施例中被系統供應商共享私鑰332的一個或多個其他處理器核執行)。公鑰380可以按照期望被公開和/或分發以允許ISV 370和其他實體使用公鑰380來對它們的代碼進行加密。
應當注意的是在圖3的實施例中,經解密的代碼374被直接從L1 i-緩存344路由至指令單元350以供執行單元360執行,而沒有返回L2緩存340的路徑(不過可能有用於數據378的路徑),以及沒有可以通過其洩露經解密的代碼的路徑。換句話說,處理器320僅包括一條用於經解密的代碼的路徑,即從代碼解密器332到執行單元360的路徑,該路徑是經解密的代碼的唯一目的地。在此實施例中,路徑包括L1 i-緩存344和指令單元350。其他實施例可以包括用來保障根據實施例解密的代碼僅可以被執行而不可以被洩露給另一緩存、緩衝器、存儲器或其他存儲位置的其他方法。例如,如果指令解碼不是必要的,則將經解密的代碼直接路由至執行單元。
圖4根據本發明的實施例示出了用於加密代碼執行的方法400。儘管本發明的方法實施例不限於此方面,但是在描述圖4的方法實施例時可以參考圖1、2、3的元件。方法400的各部分可以由硬體(例如,指令單元230、控制單元250、執行單元240和/或解密單元220)、固件、軟體以及信息處理系統的用戶等的組合獨立執行。
在方法400的方框410中,代碼例如被ISV利用處理器製造商或供應商提供的公鑰進行加密。在方框412中,加密代碼被提供給信息處理系統的用戶,該信息處理系統包括具有私鑰(例如,私鑰332)的處理器(例如,處理器320)。在方框414中,加密代碼被存儲在信息處理系統的系統存儲器(例如,系統存儲器390)中。
在方框420中,來自加密代碼的一個或多個加密指令被加載到可由處理器訪問的第一存儲結構(例如,L2緩存340)中。在方框422中,(一個或多個)加密指令被傳送至代碼解密器(例如,代碼解密器330)。在方框424中,代碼解密器使用私鑰來對(一個或多個)加密指令進行解密。在方框426中,(一個或多個)經解密的指令被加載到處理器中的第二存儲結構(例如,L1i-緩存344)中。在方框428中,(一個或多個)經解密的指令被傳送至處理器中的指令單元(例如,指令單元230)。
在方框430中,(一個或多個)經解密的指令可以被解碼或者以其他方式進行準備以供指令單元執行。在方框432中,被解碼的經解密的指令由處理器中的執行單元(例如,執行單元240)執行。應當注意的是,貫穿方法400,經解密的指令除了被處理器執行以外不可用於任何用途。
在本發明的各種實施例中,可以採用不同的順序、通過合併或省略所示出的方框、使用另外的方框、或者通過重新排序、合併、省略或另外的方框的組合來執行圖4中所示出的方法。另外,本發明的實施例不限於方法400及其變體。在本發明的範圍內許多本文未描述的其他方法實施例(以及裝置、系統和其他實施例)也是可能的。
如上所述,本發明的實施例或實施例的部分可被存儲在採用任意形式的機器可讀介質上。例如,存儲在可由處理器200讀取的介質上的軟體或固件指令在被處理器200執行時,可以使得處理器200執行本發明的實施例。另外,本發明的方面可以被體現在存儲在機器可讀介質上的數據中,其中數據表示可用於製造處理器200的部分或全部的設計或其他信息。
因此,描述了本發明的用於加密代碼執行的實施例。儘管已經描述並在附圖中示出了某些實施例,但是將要理解的是這樣的實施例對於寬泛的發明來說僅僅是說明性的而非限制性的,並且本發明不限於所示出和描述的具體結構和布置,因為本領域的普通技術人員基於對本公開的學習可以做出各種其他修改。在諸如本技術領域這樣發展迅速並且很難預見進一步演進的技術領域中,在使能技術進步的幫助下,可以很容易在布置和細節方面進行修改而不背離本公開的原理或所附權利要求的範圍。