專(zhuān)利名稱(chēng):用于受信數(shù)據(jù)處理的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于受信數(shù)據(jù)處理(trusted data processing)的安全中央處理單元,更具體地說(shuō),涉及一種用于處理加密指令和數(shù)據(jù)的安全中央處理單元。
背景技術(shù):
終端用戶(hù)正越來(lái)越多的通過(guò)數(shù)據(jù)網(wǎng)絡(luò)將內(nèi)容和應(yīng)用程序直接下載到位于住宅和辦公室中的電腦上。一種用于接收內(nèi)容和程序的常用方法是使用電視機(jī)機(jī)頂盒。這些電視機(jī)機(jī)頂盒扮演著家庭娛樂(lè)中心的角色,提供音頻盒視頻內(nèi)容、計(jì)算機(jī)游戲、軟件升級(jí)和其他應(yīng)用。由于所提供的內(nèi)容和軟件很有價(jià)值,機(jī)頂盒已經(jīng)成為黑客眼中的重要目標(biāo)。
在應(yīng)對(duì)早期的黑客威脅時(shí),內(nèi)容和軟件在從內(nèi)容/應(yīng)用服務(wù)器到機(jī)頂盒的傳輸過(guò)程中,由提供商對(duì)其進(jìn)行加密。然而,這些技術(shù)只能保護(hù)服務(wù)器和機(jī)頂盒之間的數(shù)據(jù)路徑。在接收之后,內(nèi)容和軟件以明文方式存儲(chǔ)在位于機(jī)頂盒中央處理單元(CPU)外部的存儲(chǔ)器中。在面對(duì)狡猾的黑客時(shí),以明文方式存儲(chǔ)在可讀存儲(chǔ)器中的內(nèi)容和/或軟件是極易受到攻擊的。一旦讀取到內(nèi)容或者獲得了主要的代碼,惡意黑客便可繞過(guò)訪(fǎng)問(wèn)控制機(jī)制,接收信道和/或內(nèi)容,而無(wú)需付費(fèi),并有可能開(kāi)發(fā)蠕蟲(chóng)、病毒或其他惡意代碼來(lái)中斷提供給合法用戶(hù)的服務(wù)。
因此,需要一種系統(tǒng)和方法來(lái)保護(hù)存儲(chǔ)在終端設(shè)備上的內(nèi)容和軟件,并還需要一種安全CPU架構(gòu)來(lái)為各種應(yīng)用高效地處理加密后的軟件程序。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供了一種在具有非對(duì)稱(chēng)公共和私有密鑰對(duì)的處理器中進(jìn)行受信處理的方法,包括
從第一存儲(chǔ)器的明文數(shù)據(jù)區(qū)中獲取經(jīng)加密的對(duì)稱(chēng)密鑰;使用非對(duì)稱(chēng)解密算法解密所述經(jīng)加密的對(duì)稱(chēng)密鑰,其中所述非對(duì)稱(chēng)解密算法將所述處理器的非對(duì)稱(chēng)私有密鑰用作解密密鑰;從所述第一存儲(chǔ)器的加密數(shù)據(jù)區(qū)中獲取經(jīng)加密的指令;使用對(duì)稱(chēng)解密算法解密所述經(jīng)加密的指令,其中所述對(duì)稱(chēng)解密算法將所述被解密的對(duì)稱(chēng)密鑰用作解密密鑰。
優(yōu)選地,所述方法還包括將所述處理器的所述非對(duì)稱(chēng)私有密鑰存儲(chǔ)在位于所述處理器內(nèi)的第二存儲(chǔ)器中。
優(yōu)選地,所述方法還包括將所述被解密的對(duì)稱(chēng)密鑰存儲(chǔ)在位于所述處理器內(nèi)的第二存儲(chǔ)器中。
優(yōu)選地,所述方法還包括將所述處理器的所述非對(duì)稱(chēng)私有密鑰存儲(chǔ)在一次性可編程存儲(chǔ)器中。
優(yōu)選地,所述方法還包括通過(guò)通信接口接收對(duì)所述非對(duì)稱(chēng)解密算法的更新;將更新后的所述非對(duì)稱(chēng)解密算法存儲(chǔ)在位于所述處理器內(nèi)的第二存儲(chǔ)器中。
優(yōu)選地,所述方法還包括通過(guò)通信接口接收對(duì)所述對(duì)稱(chēng)解密算法的更新;將更新后的所述對(duì)稱(chēng)解密算法存儲(chǔ)在位于所述處理器內(nèi)的第二存儲(chǔ)器中。
優(yōu)選地,所述方法還包括在處理所述被解密的指令的過(guò)程中生成中間數(shù)據(jù);加密所述中間數(shù)據(jù);將加密后的所述中間數(shù)據(jù)存儲(chǔ)在所述第一存儲(chǔ)器中。
優(yōu)選地,所述方法還包括生成隨機(jī)數(shù)。
優(yōu)選地,加密所述中間數(shù)據(jù)的步驟還包括將所述中間數(shù)據(jù)與生成的隨機(jī)數(shù)進(jìn)行異或運(yùn)算。
優(yōu)選地,加密所述中間數(shù)據(jù)的步驟還包括使用對(duì)稱(chēng)加密算法加密所述中間數(shù)據(jù),其中所述對(duì)稱(chēng)加密算法將所述被解密的對(duì)稱(chēng)密鑰用作加密密鑰。
優(yōu)選地,所述方法還包括在處理所述被解密的指令的過(guò)程中獲取中間數(shù)據(jù);解密所述中間數(shù)據(jù)。
優(yōu)選地,所述方法還包括生成隨機(jī)數(shù)。
優(yōu)選地,解密所述中間數(shù)據(jù)的步驟還包括將所述被解密的中間數(shù)據(jù)與所述生成的隨機(jī)數(shù)進(jìn)行異或運(yùn)算。
優(yōu)選地,解密所述中間數(shù)據(jù)的步驟還包括使用所述對(duì)稱(chēng)解密算法解密所述中間數(shù)據(jù),其中所述對(duì)稱(chēng)解密算法將所述被解密的對(duì)稱(chēng)密鑰用作解密密鑰。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于受信數(shù)據(jù)處理的系統(tǒng),包括第一存儲(chǔ)器,所述第一存儲(chǔ)器包含加密數(shù)據(jù)區(qū)和明文數(shù)據(jù)區(qū);中央處理單元,所述中央處理單元包括非易失性存儲(chǔ)器,其中包括有所述中央處理單元的非對(duì)稱(chēng)公共和私有密鑰對(duì)以及被解密的對(duì)稱(chēng)密鑰;非對(duì)稱(chēng)加密引擎,用于將所述中央處理單元的私有密鑰用作解密密鑰,來(lái)對(duì)從所述第一存儲(chǔ)器中獲取的經(jīng)加密的對(duì)稱(chēng)密鑰進(jìn)行解密;對(duì)稱(chēng)加密引擎,用于使用所述被解密的對(duì)稱(chēng)密鑰對(duì)從所述第一存儲(chǔ)器的所述加密數(shù)據(jù)區(qū)內(nèi)的地址中獲取的經(jīng)加密的指令進(jìn)行解密。
優(yōu)選地,所述加密數(shù)據(jù)區(qū)包括用戶(hù)可定義的地址范圍。
優(yōu)選地,所述中央處理單元還包括隨機(jī)數(shù)生成器。
優(yōu)選地,所述非易失性存儲(chǔ)器為一次性可編程存儲(chǔ)器。
優(yōu)選地,所述非對(duì)稱(chēng)加密引擎由硬件實(shí)現(xiàn)。
優(yōu)選地,所述非對(duì)稱(chēng)加密引擎由軟件實(shí)現(xiàn)。
優(yōu)選地,所述對(duì)稱(chēng)加密引擎由硬件實(shí)現(xiàn)。
優(yōu)選地,所述對(duì)稱(chēng)加密引擎由軟件實(shí)現(xiàn)。
優(yōu)選地,所述系統(tǒng)還包括數(shù)字簽名引擎,用于使用服務(wù)器的非對(duì)稱(chēng)公共密鑰對(duì)來(lái)自所述服務(wù)器的消息中附加的數(shù)字簽名進(jìn)行驗(yàn)證。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種在具有非對(duì)稱(chēng)公共和私有密鑰對(duì)的處理器中進(jìn)行受信處理的方法,包括從服務(wù)器接收經(jīng)加密的程序和經(jīng)加密的對(duì)稱(chēng)密鑰,其中所述經(jīng)加密的程序是使用所述對(duì)稱(chēng)密鑰進(jìn)行加密的,所述對(duì)稱(chēng)密鑰是使用所述處理器的非對(duì)稱(chēng)私有密鑰進(jìn)行加密的;將所述經(jīng)加密的程序存儲(chǔ)在存儲(chǔ)器的加密數(shù)據(jù)區(qū)中;將所述經(jīng)加密的對(duì)稱(chēng)密鑰存儲(chǔ)在所述存儲(chǔ)器的明文數(shù)據(jù)區(qū)中;使用所述處理器的私有密鑰解密所述經(jīng)加密的對(duì)稱(chēng)密鑰;當(dāng)訪(fǎng)問(wèn)到所述存儲(chǔ)器的加密數(shù)據(jù)區(qū)內(nèi)的地址時(shí),使用所述被解密的對(duì)稱(chēng)密鑰調(diào)用所述處理器中的對(duì)稱(chēng)解密算法。
優(yōu)選地,所述方法還包括接收包含有所述經(jīng)加密的程序的消息中的數(shù)字簽名;使用所述服務(wù)器的公共密鑰來(lái)驗(yàn)證所述數(shù)字簽名。
圖1是典型的處理系統(tǒng)的示意圖;圖2是典型的取指周期(fetch cycle)內(nèi)的數(shù)據(jù)流示意圖;圖3是典型的間接周期(indirect cycle)中的數(shù)據(jù)流示意圖;圖4是典型的中斷周期(interrupt cycle)中的數(shù)據(jù)流示意圖;圖5是依據(jù)本發(fā)明實(shí)施例的用于受信數(shù)據(jù)處理的安全系統(tǒng)的結(jié)構(gòu)示意圖;圖6是依據(jù)本發(fā)明實(shí)施例的安全系統(tǒng)500的工作環(huán)境的示意圖;
圖7是依據(jù)本發(fā)明實(shí)施例的用于受信數(shù)據(jù)處理的方法的流程圖;圖8是依據(jù)本發(fā)明實(shí)施例從存儲(chǔ)器中獲取安全指令的方法的流程圖;圖9A為將中間數(shù)據(jù)寫(xiě)入存儲(chǔ)器的方法的流程圖;圖9B為從存儲(chǔ)器中獲取中間數(shù)據(jù)的方法的流程圖;圖10是依據(jù)本發(fā)明實(shí)施例的中斷處理方法的流程圖;圖11是依據(jù)本發(fā)明實(shí)施例的取指周期內(nèi)數(shù)據(jù)流的示意圖;圖12是依據(jù)本發(fā)明實(shí)施例的間接周期內(nèi)數(shù)據(jù)流的示意圖;圖13是依據(jù)本發(fā)明實(shí)施例的中斷周期內(nèi)數(shù)據(jù)流的示意圖。
具體實(shí)施例方式
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中相似的標(biāo)號(hào)表示相同或功能相似的部件。此外,圖中標(biāo)號(hào)最左邊的一位數(shù)字表示該標(biāo)號(hào)第一次出現(xiàn)的附圖序號(hào)。
1、概要1.1CPU結(jié)構(gòu)圖1是典型的處理系統(tǒng)100的結(jié)構(gòu)示意圖。系統(tǒng)100包括中央處理單元(CPU)110、存儲(chǔ)器170和總線(xiàn)結(jié)構(gòu)160。存儲(chǔ)器170可與CPU 110位于同一芯片上,也可安裝在包含CPU 110的芯片的外部。
在更高一層上,典型的CPU如CPU 110執(zhí)行下列任務(wù)從存儲(chǔ)器中讀取指令(取指令);對(duì)指令解碼確定需要進(jìn)行何種動(dòng)作(解釋指令);在執(zhí)行指令過(guò)程中從存儲(chǔ)器或I/O模塊中讀取數(shù)據(jù)(取數(shù)據(jù));對(duì)數(shù)據(jù)執(zhí)行某種算法或邏輯操作(處理數(shù)據(jù));將數(shù)據(jù)寫(xiě)入存儲(chǔ)器或I/O模塊中(寫(xiě)數(shù)據(jù))。為執(zhí)行這些任務(wù),CPU 110需要臨時(shí)存儲(chǔ)一些數(shù)據(jù)。此外,CPU 110必須記住最近一條指令的位置,以便獲知在何處讀取下一指令。在執(zhí)行指令的過(guò)程,CPU 110必須臨時(shí)存儲(chǔ)指令和數(shù)據(jù)。
圖1中展示了CPU 110的簡(jiǎn)化結(jié)構(gòu)。CPU 110包括算法和邏輯單元(ALU)120、內(nèi)部CPU總線(xiàn)130、一個(gè)或多個(gè)寄存器140、控制單元150和內(nèi)部CPU存儲(chǔ)器155。由于A(yíng)LU 120只對(duì)內(nèi)部CPU存儲(chǔ)器中的數(shù)據(jù)進(jìn)行操作,因此使用內(nèi)部CPU總線(xiàn)130在一個(gè)或多個(gè)寄存器140和ALU 120之間傳送數(shù)據(jù)。除其他部件外,ALU 120可包括移位器122、累加器124、狀態(tài)標(biāo)志126和算法一邏輯電路128。
CPU 110在工作過(guò)程中會(huì)使用多種寄存器。例如,程序計(jì)數(shù)器142中包含將要讀取的指令的地址。通常,程序計(jì)數(shù)器142由CPU 110在每次取指令后進(jìn)行更新,以便使其總是指向?qū)⒁獔?zhí)行的下一條指令。指令寄存器148包含最近讀取的指令。讀取的指令將加載到指令寄存器148中,在這里對(duì)操作碼和操作數(shù)描述符進(jìn)行分析。存儲(chǔ)器地址寄存器146包含存儲(chǔ)器中位置的地址。存儲(chǔ)器緩沖寄存器144包含將要寫(xiě)入存儲(chǔ)器的數(shù)據(jù)的字和最近讀取的字。通常,使用存儲(chǔ)器地址寄存器146和存儲(chǔ)器緩沖寄存器144來(lái)與存儲(chǔ)器170交換數(shù)據(jù)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,寄存器組織是由處理器決定的,因此,不同的處理器還可包含不同的或其他的寄存器。
CPU 110通過(guò)總線(xiàn)結(jié)構(gòu)160與存儲(chǔ)器170通信??偩€(xiàn)結(jié)構(gòu)160可包含地址總線(xiàn)162、數(shù)據(jù)總線(xiàn)164和控制總線(xiàn)166。
存儲(chǔ)器170中存儲(chǔ)有CPU 110將要執(zhí)行的程序的指令和數(shù)據(jù)。數(shù)據(jù)通常視為CPU 110在其上執(zhí)行計(jì)算的數(shù)據(jù)。指令通常視為將要解釋為代碼以便生成控制信號(hào)的數(shù)據(jù)。
1.2指令周期本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,指令周期內(nèi)事件的準(zhǔn)確順序由CPU的設(shè)計(jì)決定。如圖2所示,典型的CPU 110使用了存儲(chǔ)器地址寄存器146、存儲(chǔ)器緩沖寄存器144、程序計(jì)數(shù)器142和指令寄存器148。
在取指周期內(nèi),將從存儲(chǔ)器170中讀取指令。圖2是典型的取指周期內(nèi)數(shù)據(jù)流的示意圖。程序計(jì)數(shù)器142包含有將要讀取的下一指令的地址。該地址將被裝入存儲(chǔ)器地址寄存器146,并放到地址總線(xiàn)162上??刂茊卧?qǐng)求讀取存儲(chǔ)器。讀取的結(jié)果將放到數(shù)據(jù)總線(xiàn)164上,并復(fù)制到存儲(chǔ)器緩沖寄存器144中,然后裝入指令寄存器148中。同時(shí),程序計(jì)數(shù)器142將增1,為下一次取指操作做準(zhǔn)備。
在取指周期結(jié)束之后,控制單元150檢查指令寄存器148中的內(nèi)容,判斷其中是否包含有使用間接尋址的操作數(shù)描述符。若是,則由CPU執(zhí)行間接周期(indirect cycle)。圖3描述了典型的間接周期中的數(shù)據(jù)流。
在間接周期過(guò)程中,存儲(chǔ)器緩沖寄存器144中包含地址引用的最右邊的N位將被發(fā)往存儲(chǔ)器地址寄存器146??刂茊卧?50隨后請(qǐng)求讀取存儲(chǔ)器,以將操作數(shù)的期望地址裝入存儲(chǔ)器緩沖寄存器144中。
取指周期和間接周期很簡(jiǎn)單并且可以預(yù)測(cè)。指令周期可以采用多種形式,這是由指令寄存器中的機(jī)器指令的類(lèi)型決定的。在這個(gè)周期包括在寄存器之間傳送數(shù)據(jù)、從存儲(chǔ)器端口I/O進(jìn)行讀寫(xiě)操作和/或ALU 120的激活。
與取指周期和間接周期一樣,中斷周期也是很簡(jiǎn)單并且可以預(yù)測(cè)的。圖4描述了典型的中斷周期中的數(shù)據(jù)流。在中斷周期中,程序計(jì)數(shù)器142的當(dāng)前內(nèi)容必須進(jìn)行保存,以便CPU 110能夠在中斷后恢復(fù)正常的活動(dòng)。因此,程序計(jì)數(shù)器142中的內(nèi)容將被傳送到存儲(chǔ)器緩沖寄存器144中,以便寫(xiě)入到存儲(chǔ)器中。為此目的而保留的特定存儲(chǔ)器位置將從控制單元150加載到存儲(chǔ)器地址寄存器146中。例如,該存儲(chǔ)器位置可能是棧指針。在程序計(jì)數(shù)器142中加載中斷程序的地址。這樣一來(lái),便可通過(guò)讀取對(duì)應(yīng)的指令來(lái)開(kāi)始下一周期。
2、受信數(shù)據(jù)處理架構(gòu)圖5是依據(jù)本發(fā)明實(shí)施例的用于守信數(shù)據(jù)處理的安全系統(tǒng)500的結(jié)構(gòu)示意圖。圖5展示的安全系統(tǒng)在CPU中提供有用的信任和安全功能,而成本仍然低于現(xiàn)有加密協(xié)處理器。此外,通過(guò)為多種應(yīng)用處理加密軟件程序,圖5中的架構(gòu)還可提供一種機(jī)制來(lái)保護(hù)平臺(tái)中的軟件環(huán)境。
系統(tǒng)500包括CPU 510、存儲(chǔ)器570和總線(xiàn)結(jié)構(gòu)560。總線(xiàn)結(jié)構(gòu)560包括地址總線(xiàn)562、數(shù)據(jù)總線(xiàn)564和控制總線(xiàn)566??偩€(xiàn)結(jié)構(gòu)560用于在CPU 510和存儲(chǔ)器570之間傳送指令和/或數(shù)據(jù)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,在本發(fā)明中還可使用其他架構(gòu)來(lái)在CPU 510和存儲(chǔ)器570之間傳送指令和/或數(shù)據(jù)。存儲(chǔ)器570可與CPU 510位于同一芯片上,也可安裝在包含CPU 510的芯片的外部。
存儲(chǔ)器570包括加密數(shù)據(jù)區(qū)572和明文數(shù)據(jù)區(qū)574。加密數(shù)據(jù)區(qū)572是這樣一個(gè)存儲(chǔ)器地址范圍,當(dāng)CPU 510訪(fǎng)問(wèn)這一范圍內(nèi)的地址時(shí),將導(dǎo)致調(diào)用解密處理。一個(gè)實(shí)施例中,加密數(shù)據(jù)區(qū)572存儲(chǔ)有一個(gè)或多個(gè)程序的指令,這些指令已使用對(duì)稱(chēng)密鑰算法進(jìn)行了加密。明文數(shù)據(jù)區(qū)574也是一個(gè)存儲(chǔ)器地址范圍,但當(dāng)CPU 510訪(fǎng)問(wèn)這一范圍內(nèi)的地址時(shí)將不會(huì)調(diào)用解密處理。一個(gè)實(shí)施例中,與存儲(chǔ)在加密數(shù)據(jù)區(qū)572中的程序指令相關(guān)聯(lián)的、由CPU 510的公共密鑰進(jìn)行了加密的對(duì)稱(chēng)密鑰,存儲(chǔ)在明文數(shù)據(jù)區(qū)574中。在一個(gè)實(shí)施例中,在經(jīng)加密的對(duì)稱(chēng)密鑰被解密并存儲(chǔ)到非易失性存儲(chǔ)器(NVM)582中之后,該經(jīng)加密的對(duì)稱(chēng)密鑰將從存儲(chǔ)器570中擦除。若在加密數(shù)據(jù)區(qū)572中存儲(chǔ)了多個(gè)程序,則明文數(shù)據(jù)區(qū)574中將存儲(chǔ)有多個(gè)經(jīng)加密的對(duì)稱(chēng)密鑰,一個(gè)密鑰對(duì)應(yīng)一個(gè)程序。
圖5中展示了CPU 510的簡(jiǎn)化結(jié)構(gòu)示意圖。CPU 510包括ALU 520、內(nèi)部CPU總線(xiàn)530、一個(gè)或多個(gè)寄存器540以及控制單元550。ALU 520、內(nèi)部CPU總線(xiàn)530和寄存器540已經(jīng)在上文中結(jié)合圖1進(jìn)行了討論。
CPU 510還包括有密鑰保護(hù)單元580、非易失性存儲(chǔ)器582、非對(duì)稱(chēng)加密引擎584、對(duì)稱(chēng)加密引擎586和可選的隨機(jī)數(shù)生成器588。非易失性存儲(chǔ)器582中存儲(chǔ)有CPU 510的非對(duì)稱(chēng)公共/私有密鑰對(duì)、一個(gè)或多個(gè)被解密的對(duì)稱(chēng)密鑰,可選的,還可存儲(chǔ)有由隨機(jī)數(shù)生成器588生成的隨機(jī)數(shù)。非易失性存儲(chǔ)器582可以是一次性可編程(OTP)存儲(chǔ)器陣列。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用其他結(jié)構(gòu)的非易失性存儲(chǔ)器582。
每個(gè)CPU 510都具有非對(duì)稱(chēng)密鑰(公共/私有)密鑰對(duì)。在一個(gè)實(shí)施例中,該非對(duì)稱(chēng)密鑰對(duì)對(duì)于CPU而言是唯一的。CPU的非對(duì)稱(chēng)密鑰對(duì)可以在制造過(guò)程中生成,或者由用戶(hù)或系統(tǒng)集成商輸入。該非對(duì)稱(chēng)密鑰對(duì)中的私有密鑰是CPU 510的根標(biāo)識(shí)。因此,私有密鑰必須以高度安全的方式來(lái)操作,這一點(diǎn)非常關(guān)鍵。在CPU 510中,只有密鑰保護(hù)單元580能夠讀取私有密鑰。此外,私有密鑰永遠(yuǎn)不會(huì)離開(kāi)CPU 510的安全邊界。也就是說(shuō),私有密鑰無(wú)法由用戶(hù)或者CPU 510外部的組件讀取。相比之下,公共密鑰則可由用戶(hù)或者外部組件通過(guò)控制總線(xiàn)566從CPU中讀出。
非對(duì)稱(chēng)加密引擎584提供CPU 510所需的非對(duì)稱(chēng)加密和解密處理。例如,非對(duì)稱(chēng)加密引擎584將CPU 510的私有密鑰用作解密密鑰來(lái)解密明文數(shù)據(jù)區(qū)574中經(jīng)加密的對(duì)稱(chēng)密鑰。非對(duì)稱(chēng)加密引擎584可使用RSA加密算法。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,非對(duì)稱(chēng)加密引擎584中還可使用其他非對(duì)稱(chēng)加密算法。在一個(gè)實(shí)施例中,還可對(duì)非對(duì)稱(chēng)加密引擎584所使用的非對(duì)稱(chēng)加密算法進(jìn)行更新(例如升級(jí)或者下載)或者替換。
非對(duì)稱(chēng)公共/私有密鑰對(duì)的格式與非對(duì)稱(chēng)加密引擎所使用的加密算法兼容。例如,若使用的是RSA加密算法,則CPU 510的根密鑰將是一個(gè)2048位(或者等效的格式)的RSA私有密鑰。非對(duì)稱(chēng)加密引擎584可設(shè)置在密鑰保護(hù)單元580中?;蛘?,非對(duì)稱(chēng)加密引擎584也可獨(dú)立于密鑰保護(hù)單元580。
對(duì)稱(chēng)加密引擎586提供CPU 510所需的對(duì)稱(chēng)加密和解密處理。例如,對(duì)稱(chēng)加密引擎586使用由非對(duì)稱(chēng)加密引擎584解密的對(duì)稱(chēng)密鑰作為解密密鑰來(lái)解密存儲(chǔ)在加密數(shù)據(jù)區(qū)572中的指令/數(shù)據(jù)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,在本發(fā)明中還可使用其他合適的對(duì)稱(chēng)加密算法,包括但不限于DES、3DES或者高級(jí)加密標(biāo)準(zhǔn)(AES)。在一個(gè)實(shí)施例中,還可對(duì)稱(chēng)加密引擎586所使用的對(duì)稱(chēng)加密算法進(jìn)行更新(例如升級(jí)或者下載)或者替換。
CPU 510還可包含有隨機(jī)數(shù)生成器588。隨機(jī)數(shù)生成器588具有生成加密處理過(guò)程中使用的隨機(jī)數(shù)的功能。在一個(gè)實(shí)施例中,隨機(jī)數(shù)生成器588在上電后生成隨機(jī)數(shù)。在斷電之前,生成的隨機(jī)數(shù)一直存儲(chǔ)在非易失性存儲(chǔ)器582中。在斷電后,存儲(chǔ)的隨機(jī)數(shù)將被擦除。再次上電后,將生成一個(gè)新的隨機(jī)數(shù)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用其他技術(shù)來(lái)生成加密過(guò)程中使用的隨機(jī)數(shù)。
CPU 510還可包含有存儲(chǔ)器范圍檢查器,其中存儲(chǔ)有加密數(shù)據(jù)區(qū)572和明文數(shù)據(jù)區(qū)574的存儲(chǔ)器邊界地址。在一個(gè)實(shí)施例中,存儲(chǔ)器范圍檢查器包含在密鑰保護(hù)單元580中。系統(tǒng)500的用戶(hù)通過(guò)設(shè)置每個(gè)區(qū)域的存儲(chǔ)器范圍來(lái)對(duì)受信數(shù)據(jù)處理過(guò)程進(jìn)行配置。例如,若要禁用加密/解密功能,則用戶(hù)可不為加密數(shù)據(jù)區(qū)572分配存儲(chǔ)器地址。
圖6是依據(jù)本發(fā)明實(shí)施例的安全系統(tǒng)500的工作環(huán)境600的示意圖。工作環(huán)境包括一個(gè)或多個(gè)設(shè)備602a-n、通信網(wǎng)絡(luò)604和內(nèi)容/應(yīng)用服務(wù)器690。在一個(gè)實(shí)施例中,設(shè)備602a-n為機(jī)頂盒,服務(wù)器690為頭端設(shè)備。
設(shè)備602a-n和服務(wù)器690通過(guò)通信網(wǎng)絡(luò)604交換信息。通信網(wǎng)絡(luò)604可以是能夠傳輸數(shù)據(jù)流的任意網(wǎng)絡(luò)。通信網(wǎng)絡(luò)604可以是公共數(shù)據(jù)網(wǎng)例如互聯(lián)網(wǎng)、私有數(shù)據(jù)網(wǎng)、公共交換電話(huà)網(wǎng)(PSTN)、無(wú)線(xiàn)通信網(wǎng)、有線(xiàn)網(wǎng)或類(lèi)似的網(wǎng)絡(luò)。
服務(wù)器690中存儲(chǔ)有設(shè)備602所使用的內(nèi)容和應(yīng)用,還具有與設(shè)備602進(jìn)行安全通信的功能。服務(wù)器690包括存儲(chǔ)器694、對(duì)稱(chēng)加密引擎691、非對(duì)稱(chēng)加密引擎692和可選的數(shù)字簽名引擎693。存儲(chǔ)器694存儲(chǔ)有服務(wù)器690的非對(duì)稱(chēng)(公共/私有)密鑰對(duì)695、一個(gè)或多個(gè)安全應(yīng)用程序696a-n以及由應(yīng)用服務(wù)器690提供服務(wù)的設(shè)備的公共密鑰698a-n。每個(gè)安全應(yīng)用程序696a-n都與一個(gè)對(duì)稱(chēng)加密密鑰697a-n相關(guān)聯(lián)。在一個(gè)實(shí)施例中,安全程序696的一部分將使用其關(guān)聯(lián)的對(duì)稱(chēng)密鑰697進(jìn)行加密,并以加密格式存儲(chǔ)在存儲(chǔ)器中?;蛘?,在將程序發(fā)往用戶(hù)設(shè)備602時(shí),服務(wù)器690使用該程序相關(guān)聯(lián)的對(duì)稱(chēng)密鑰來(lái)加密這個(gè)安全應(yīng)用程序。
在需要時(shí),設(shè)備602向服務(wù)器690請(qǐng)求安全應(yīng)用程序696。一個(gè)安全程序696可由多個(gè)設(shè)備602訪(fǎng)問(wèn)。當(dāng)設(shè)備602請(qǐng)求安全程序時(shí),服務(wù)器690使用請(qǐng)求該安全程序的設(shè)備的公共密鑰來(lái)加密該安全程序相關(guān)聯(lián)的對(duì)稱(chēng)密鑰。例如,若設(shè)備602a請(qǐng)求程序696A,則服務(wù)器使用設(shè)備602a的公共密鑰來(lái)加密對(duì)稱(chēng)密鑰697A。經(jīng)加密的對(duì)稱(chēng)密鑰與經(jīng)加密的安全程序一起發(fā)往發(fā)出請(qǐng)求的設(shè)備。
非對(duì)稱(chēng)加密引擎692提供服務(wù)器690所需的非對(duì)稱(chēng)加密和解密處理。例如,非對(duì)稱(chēng)加密引擎692使用設(shè)備的公共密鑰698作為加密密鑰來(lái)加密該設(shè)備請(qǐng)求的應(yīng)用程序的對(duì)稱(chēng)密鑰。非對(duì)稱(chēng)加密引擎692可使用RSA加密算法。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,非對(duì)稱(chēng)加密引擎692還可使用其他非對(duì)稱(chēng)加密算法。非對(duì)稱(chēng)加密引擎692使用的非對(duì)稱(chēng)加密算法與CPU 510的非對(duì)稱(chēng)加密引擎584所使用的算法相同或由其贈(zèng)送。
對(duì)稱(chēng)加密引擎691提供服務(wù)器690所需的對(duì)稱(chēng)加密和解密處理。例如,對(duì)稱(chēng)加密引擎691使用安全應(yīng)用程序相關(guān)聯(lián)的對(duì)稱(chēng)密鑰作為加密密鑰來(lái)加密安全應(yīng)用程序。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用任何合適的對(duì)稱(chēng)加密算法,包括但不限于DES、3DES或高級(jí)加密標(biāo)準(zhǔn)(AES)。對(duì)稱(chēng)加密引擎691使用的對(duì)稱(chēng)加密算法與CPU 510的對(duì)稱(chēng)加密引擎586所使用的算法相同或由其贈(zèng)送。
數(shù)字簽名引擎693具有對(duì)將要發(fā)往設(shè)備602的消息進(jìn)行數(shù)字簽名的功能。數(shù)字簽名引擎693使用服務(wù)器690的私有密鑰來(lái)對(duì)發(fā)往設(shè)備602的消息進(jìn)行數(shù)字簽名。在一個(gè)實(shí)施例中,數(shù)字簽名引擎693對(duì)經(jīng)加密的消息進(jìn)行散列(hash)操作和簽名。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用任何合適的散列/簽名算法,例如密鑰散列消息認(rèn)證碼(HMAC)、消息認(rèn)證碼(MAC)、安全散列算法(SHA)或加密塊鎖鏈消息認(rèn)證碼協(xié)議(CCMP)。
設(shè)備602包括上述圖5中描述的系統(tǒng)500。設(shè)備602還可包含有用于驗(yàn)證接收自服務(wù)器或其他實(shí)體的簽名的數(shù)字簽名引擎。如上文及圖6所示,每個(gè)設(shè)備都存儲(chǔ)有其CPU 510的非對(duì)稱(chēng)密鑰對(duì),可選的,還可存儲(chǔ)有服務(wù)器690的公共密鑰。服務(wù)器690的公共密鑰通常用于驗(yàn)證附加在來(lái)自服務(wù)器690的消息中的數(shù)字簽名。
3、用于受信數(shù)據(jù)處理的方法圖7是依據(jù)本發(fā)明實(shí)施例的受信數(shù)據(jù)處理所使用方法的流程圖。圖7的描述過(guò)程中繼續(xù)引用圖5和圖6中的系統(tǒng)和環(huán)境。但是流程圖700并不僅限于上述實(shí)施例。應(yīng)注意,流程圖700中的一些步驟并非必須按照下文中的順序進(jìn)行。
在步驟710,服務(wù)器690收到來(lái)自設(shè)備602的安全程序請(qǐng)求。
在步驟715,服務(wù)器690獲取發(fā)出請(qǐng)求的設(shè)備602的公共密鑰698。在一個(gè)實(shí)施例中,設(shè)備602的公共密鑰698存儲(chǔ)在服務(wù)器690?;蛘?,公共密鑰698可從設(shè)備602中請(qǐng)求獲得。
在步驟720,收到請(qǐng)求的安全程序696和相關(guān)聯(lián)的對(duì)稱(chēng)密鑰697。應(yīng)注意,在步驟720之前,安全程序696可能已經(jīng)使用其關(guān)聯(lián)的對(duì)稱(chēng)密鑰697進(jìn)行了加密,并以加密的形式存儲(chǔ)在存儲(chǔ)器692中。在這種情況下,收到的安全程序696是經(jīng)過(guò)加密的。
在步驟725,所請(qǐng)求的安全程序696將由對(duì)稱(chēng)加密引擎691使用與所請(qǐng)求的安全程序696相關(guān)聯(lián)的對(duì)稱(chēng)密鑰697進(jìn)行加密。這一步驟是可選的。若安全程序是以加密形式存儲(chǔ)在692之中的,則無(wú)需執(zhí)行步驟725。
在步驟730,與所請(qǐng)求的安全程序696相關(guān)聯(lián)的對(duì)稱(chēng)密鑰697由非對(duì)稱(chēng)加密引擎692使用發(fā)出請(qǐng)求的設(shè)備602的公共密鑰698進(jìn)行加密。經(jīng)加密的對(duì)稱(chēng)密鑰可以包含在包括有經(jīng)加密后的所請(qǐng)求安全程序的消息的包頭中。或者,該經(jīng)加密的對(duì)稱(chēng)密鑰還可通過(guò)獨(dú)立于包含經(jīng)加密的所請(qǐng)求安全程序的消息以外的另一條消息發(fā)送。
在步驟735,經(jīng)加密的安全程序和/或經(jīng)加密的對(duì)稱(chēng)密鑰由數(shù)字簽名引擎693進(jìn)行數(shù)字簽名。步驟735是可選的。在使用步驟735時(shí),數(shù)字簽名方式使得接收消息的設(shè)備602能夠驗(yàn)證消息發(fā)起方的身份,并驗(yàn)證消息內(nèi)容的真實(shí)性。在一個(gè)實(shí)施例中,為了生成數(shù)字簽名,首先通過(guò)對(duì)文件數(shù)據(jù)(例如經(jīng)加密的安全程序)進(jìn)行散列操作(hashing)生成消息摘要。隨后使用應(yīng)用服務(wù)器690的私有密鑰對(duì)該消息摘要進(jìn)行加密。加密后的消息摘要便是將要附在消息之中的簽名。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,數(shù)字簽名引擎693還可使用任何數(shù)字簽名算法來(lái)生成該簽名。典型的數(shù)字簽名算法包括SHA、數(shù)字簽名算法(DSA)或ElGamal簽名。
在步驟740,設(shè)備602收到經(jīng)加密的安全程序和經(jīng)加密的對(duì)稱(chēng)密鑰。
在步驟745,將經(jīng)加密的安全程序?qū)懭氪鎯?chǔ)器570的加密數(shù)據(jù)區(qū)572,將經(jīng)加密的對(duì)稱(chēng)密鑰寫(xiě)入存儲(chǔ)器570的明文數(shù)據(jù)區(qū)574。
在步驟750,對(duì)附加在消息中的數(shù)字簽名進(jìn)行驗(yàn)證。步驟750是可選的,只在收到數(shù)字簽名的時(shí)候才需要執(zhí)行。應(yīng)注意,步驟750可在步驟745之前執(zhí)行。步驟750包括步驟752和步驟754。
在步驟752,獲取應(yīng)用服務(wù)器690的公共密鑰。在一個(gè)實(shí)施例中,設(shè)備602將應(yīng)用服務(wù)器690的公共密鑰存儲(chǔ)在本地。或者,設(shè)備602還可從應(yīng)用服務(wù)器690或其他安全公共數(shù)據(jù)存儲(chǔ)器中獲取應(yīng)用服務(wù)器690的公共密鑰。
在步驟754,對(duì)附加的簽名進(jìn)行驗(yàn)證。如上所述,應(yīng)用服務(wù)器690和設(shè)備602中的數(shù)字簽名引擎均使用相同或一致的數(shù)字簽名算法。例如,為驗(yàn)證數(shù)字簽名,設(shè)備602使用應(yīng)用服務(wù)器690的公共密鑰來(lái)解密簽名后的消息摘要,以此來(lái)獲取第一消息摘要。設(shè)備602隨后對(duì)該消息進(jìn)行散列運(yùn)算,生成第二消息摘要。如果第二消息摘要與第一消息摘要匹配,則設(shè)備602便有理由確信該消息是來(lái)自應(yīng)用服務(wù)器690的,并且沒(méi)有經(jīng)過(guò)修改。
在流程圖700完成之后,安全程序696的指令和/或數(shù)據(jù)便可由CPU 510來(lái)執(zhí)行了。
圖8是依據(jù)本發(fā)明實(shí)施例從存儲(chǔ)器中獲取安全指令的方法的流程圖。流程圖800中讀取操作之前和之后事件的準(zhǔn)確順序由CPU的設(shè)計(jì)決定。流程圖800中的方法可應(yīng)用在任何CPU架構(gòu)中,包括但不限于順序處理、并行處理和指令流水線(xiàn)架構(gòu)。流程圖800繼續(xù)引用圖5中描述的系統(tǒng)。但是流程圖800并不僅限于該實(shí)施例。應(yīng)注意,流程圖800中的一些步驟并非必須按照下文中的順序進(jìn)行。
在步驟810,從存儲(chǔ)器570中獲取與經(jīng)加密的指令相關(guān)聯(lián)的經(jīng)加密的對(duì)稱(chēng)密鑰。
在步驟820,由非對(duì)稱(chēng)加密引擎584使用CPU 510的私有密鑰作為解密密鑰來(lái)解密該經(jīng)加密的對(duì)稱(chēng)密鑰。被解密后的對(duì)稱(chēng)密鑰存儲(chǔ)在非易失性存儲(chǔ)器582中。
步驟810和步驟820可在開(kāi)始執(zhí)行經(jīng)加密的安全程序時(shí)執(zhí)行。在一個(gè)實(shí)施例中,步驟810和步驟820在安全程序的執(zhí)行過(guò)程中只執(zhí)行一次。步驟830到步驟880(描述獲取和處理經(jīng)加密的指令的過(guò)程)將對(duì)安全程序執(zhí)行過(guò)程中獲取的每條指令和/或經(jīng)加密的數(shù)據(jù)重復(fù)執(zhí)行。
在步驟830,從存儲(chǔ)器570中讀取一條指令。
在步驟840,判斷該指令的地址是否處于存儲(chǔ)器570的加密數(shù)據(jù)區(qū)572之中。例如,在步驟840,CPU 510讀取加密數(shù)據(jù)區(qū)572和/或明文數(shù)據(jù)區(qū)574的存儲(chǔ)器邊界地址。若上述地址位于加密數(shù)據(jù)區(qū)572中,操作轉(zhuǎn)向步驟850,開(kāi)始執(zhí)行解密處理。若上述地址沒(méi)在加密數(shù)據(jù)區(qū)572之中,則操作將轉(zhuǎn)到步驟895,跳過(guò)解密處理步驟。
在步驟850,由對(duì)稱(chēng)加密引擎586使用存儲(chǔ)的對(duì)稱(chēng)密鑰作為解密密鑰來(lái)解密收到的經(jīng)加密的指令。
在步驟860,將被解密的指令裝入適當(dāng)?shù)募拇嫫骰虼鎯?chǔ)器位置,以由CPU510解碼和執(zhí)行。
在步驟865,判斷被解密的指令是否包含有使用間接尋址的操作數(shù)描述符。若包含有使用間接尋址的操作數(shù)描述符,則操作繼續(xù)進(jìn)行步驟870。若不包含使用間接尋址的操作數(shù)描述符,則操作繼續(xù)進(jìn)行步驟890。
在步驟870,讀取地址引用,然后從存儲(chǔ)器570中讀取該地址上的指令或數(shù)據(jù)。
在步驟875,判斷該地址引用是否處于存儲(chǔ)器570的加密數(shù)據(jù)區(qū)572之中。例如,在步驟875,CPU 510讀取加密數(shù)據(jù)區(qū)572和/或明文數(shù)據(jù)區(qū)574的存儲(chǔ)器邊界地址。若該地址引用位于加密數(shù)據(jù)區(qū)572中,操作轉(zhuǎn)向步驟880,開(kāi)始執(zhí)行解密處理。若上述地址引用沒(méi)在加密數(shù)據(jù)區(qū)572之中,則操作將轉(zhuǎn)到步驟895,跳過(guò)解密處理步驟。
在步驟880,由對(duì)稱(chēng)加密引擎586使用存儲(chǔ)的對(duì)稱(chēng)密鑰作為解密密鑰來(lái)解密收到的經(jīng)加密的指令。
在步驟885,將被解密的指令裝入適當(dāng)?shù)募拇嫫髦校杂蒀PU 510執(zhí)行。
在步驟890,CPU 510繼續(xù)正常的處理過(guò)程。
在步驟895,CPU 510執(zhí)行正常的處理過(guò)程。
在執(zhí)行指令的過(guò)程中,CPU可能會(huì)生成將要寫(xiě)入存儲(chǔ)器中以供將來(lái)指令的執(zhí)行過(guò)程中使用的數(shù)據(jù)。該數(shù)據(jù)在這里稱(chēng)為“中間數(shù)據(jù)”。此外,在指令的執(zhí)行過(guò)程中,CPU可能要求讀取存儲(chǔ)的中間數(shù)據(jù)。圖9A和圖9B分別描述了將中間數(shù)據(jù)寫(xiě)入存儲(chǔ)器和從存儲(chǔ)器中讀取中間數(shù)據(jù)的方法的流程圖900和950。流程圖900和950中操作之前和之后事件的準(zhǔn)確順序由CPU的設(shè)計(jì)決定。流程圖900和950中的方法可應(yīng)用在任何CPU架構(gòu)中,包括但不限于順序處理、并行處理和指令流水線(xiàn)架構(gòu)。流程圖900和950中的描述將繼續(xù)引用圖5中的系統(tǒng)。但是流程圖900和950并不僅限于該實(shí)施例。應(yīng)注意,流程圖900和950中的一些步驟并非必須按照下文中的順序進(jìn)行。
圖9A開(kāi)始于步驟910,判斷是否要將中間數(shù)據(jù)寫(xiě)入存儲(chǔ)器570。若要將中間數(shù)據(jù)寫(xiě)入存儲(chǔ)器570,則操作轉(zhuǎn)到步驟920。若沒(méi)有中間數(shù)據(jù)將要寫(xiě)入存儲(chǔ)器570,則操作轉(zhuǎn)到步驟990,CPU 510繼續(xù)進(jìn)行正常的處理。
在步驟920,CPU 510加密中間數(shù)據(jù)。在一個(gè)實(shí)施例中,CPU 510將生成的中間數(shù)據(jù)與隨機(jī)數(shù)生成器588生成的隨機(jī)數(shù)進(jìn)行異或運(yùn)算,以此來(lái)加密中間數(shù)據(jù)。例如,隨機(jī)數(shù)可在CPU 510上電時(shí)生成。當(dāng)CPU 510保持上電的過(guò)程中,將生成的隨機(jī)數(shù)進(jìn)行存儲(chǔ)并應(yīng)用于所有的本地異或加密。在斷電后,該隨機(jī)數(shù)將被擦除?;蛘撸珻PU 510通過(guò)對(duì)稱(chēng)加密引擎586將存儲(chǔ)的對(duì)稱(chēng)密鑰用作加密密鑰來(lái)加密中間數(shù)據(jù)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用其他技術(shù)來(lái)加密中間數(shù)據(jù)。
在步驟930,將經(jīng)加密的中間數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器570中的指定位置。
圖9B開(kāi)始于步驟960,判斷是否要從存儲(chǔ)器570中讀取中間數(shù)據(jù)。若要從存儲(chǔ)器570中讀取中間數(shù)據(jù),則操作轉(zhuǎn)到步驟970。若沒(méi)有中間數(shù)據(jù)要從存儲(chǔ)器570中讀取,則操作轉(zhuǎn)到步驟990,CPU 510繼續(xù)正常的處理。
在步驟960,從存儲(chǔ)器570中的指定位置讀取經(jīng)加密的中間數(shù)據(jù)。
在步驟970,CPU 510解密該中間數(shù)據(jù)。在一個(gè)實(shí)施例中,CPU 510將經(jīng)加密的中間數(shù)據(jù)與隨機(jī)數(shù)生成器588生成的隨機(jī)數(shù)進(jìn)行異或運(yùn)算,以此來(lái)得到原始的中間數(shù)據(jù)。或者,CPU 510通過(guò)對(duì)稱(chēng)加密引擎586將存儲(chǔ)的對(duì)稱(chēng)密鑰用作解密密鑰來(lái)解密該中間數(shù)據(jù)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用其他技術(shù)來(lái)解密中間數(shù)據(jù)。
圖10是依據(jù)本發(fā)明實(shí)施例的中斷處理的方法的流程圖1000。流程圖1000中中斷操作之前和之后事件的準(zhǔn)確順序由CPU的設(shè)計(jì)決定。流程圖1000中的方法可應(yīng)用在任何CPU架構(gòu)中,包括但不限于順序處理、并行處理和指令流水線(xiàn)架構(gòu)。流程圖1000繼續(xù)引用圖5中描述的系統(tǒng)。但是流程圖1000并不僅限于該實(shí)施例。應(yīng)注意,流程圖1000中的一些步驟并非必須按照下文中的順序進(jìn)行。
在步驟1010之前,隨機(jī)數(shù)可由隨機(jī)數(shù)生成器588生成。在一個(gè)實(shí)施例中,該隨機(jī)數(shù)可在CPU 510上電時(shí)生成。然后將該隨機(jī)數(shù)存儲(chǔ)起來(lái),并在CPU 510保持上電的過(guò)程中應(yīng)用于所有的本地異或加密。在斷電后,該隨機(jī)數(shù)將被擦除。
在步驟1020,CPU 510接收中斷信號(hào)或請(qǐng)求。在收到中斷時(shí),CPU 510必須保存當(dāng)前正在執(zhí)行的安全程序的狀態(tài)。這一過(guò)程包括存儲(chǔ)一個(gè)或多個(gè)寄存器540中的內(nèi)容。
在步驟1030,CPU 510加密一個(gè)或多個(gè)寄存器中的內(nèi)容。例如,CPU 510可加密將要讀取的下一指令的地址。在一個(gè)實(shí)施例中,CPU 510將寄存器數(shù)據(jù)與生成的隨機(jī)數(shù)進(jìn)行異或運(yùn)算,以此來(lái)對(duì)數(shù)據(jù)進(jìn)行加密?;蛘?,CPU 510還可通過(guò)對(duì)稱(chēng)加密引擎586將存儲(chǔ)的對(duì)稱(chēng)密鑰用作加密密鑰來(lái)加密中間數(shù)據(jù)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用其他方法來(lái)加密寄存器數(shù)據(jù)。
在步驟1040,將經(jīng)加密的寄存器數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器570為此目的而保留的位置中。
在步驟1050,恢復(fù)安全程序指令的處理。
在步驟1060,CPU 510從保留的存儲(chǔ)器位置中讀取經(jīng)加密的寄存器數(shù)據(jù)。
在步驟1070,對(duì)經(jīng)加密的寄存器數(shù)據(jù)進(jìn)行解密。在一個(gè)實(shí)施例中,CPU 510將經(jīng)加密的寄存器數(shù)據(jù)與隨機(jī)數(shù)生成器588生成的隨機(jī)數(shù)進(jìn)行異或運(yùn)算,得到原始的寄存器數(shù)據(jù)?;蛘撸珻PU 510還可通過(guò)對(duì)稱(chēng)加密引擎586將存儲(chǔ)的對(duì)稱(chēng)密鑰用作解密密鑰來(lái)解密該寄存器數(shù)據(jù)510。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,本發(fā)明還可使用其他技術(shù)來(lái)解密寄存器數(shù)據(jù)。
在步驟1080,將被解密的數(shù)據(jù)重新裝入合適的寄存器中,以便恢復(fù)正在執(zhí)行的安全程序的狀態(tài)。
在步驟1090,繼續(xù)進(jìn)行安全程序指令的處理。
圖11是依據(jù)本發(fā)明實(shí)施例的取指周期內(nèi)的數(shù)據(jù)流的示意圖。在取指周期內(nèi),從存儲(chǔ)器570的加密數(shù)據(jù)區(qū)572中讀取經(jīng)加密的指令。然后由對(duì)稱(chēng)加密引擎586將該程序的對(duì)稱(chēng)密鑰用作解密密鑰來(lái)解密該經(jīng)加密的指令。
程序計(jì)數(shù)器542中包含有由將要讀取的下一指令的地址。該地址被裝入存儲(chǔ)器地址寄存器546中,并放到地址總線(xiàn)562上??刂茊卧?50請(qǐng)求讀取存儲(chǔ)器,然后將結(jié)果放到數(shù)據(jù)總線(xiàn)564上。該指令由對(duì)稱(chēng)加密引擎586進(jìn)行解密,然后被復(fù)制到存儲(chǔ)器緩沖寄存器544中,并裝入指令寄存器548中。同時(shí),程序計(jì)數(shù)器542增1,為下一次取操作做準(zhǔn)備。
一旦取指周期結(jié)束,控制單元550便檢查指令寄存器548中的內(nèi)容,判斷其中是否包含有使用間接尋址的操作數(shù)描述符。若是,則執(zhí)行間接周期。圖12是依據(jù)本發(fā)明實(shí)施例的間接周期內(nèi)的數(shù)據(jù)流的示意圖。包含有地址引用的存儲(chǔ)器緩沖寄存器544中最右邊的N位將發(fā)往存儲(chǔ)器地址寄存器546。隨后,控制單元550請(qǐng)求讀取存儲(chǔ)器,然后將結(jié)果放到數(shù)據(jù)總線(xiàn)564上。該結(jié)果將由對(duì)稱(chēng)加密引擎586進(jìn)行解密,以將操作數(shù)的地址存入存儲(chǔ)器緩沖寄存器544中。
指令周期可以采用多種形式,這是由指令寄存器548中的機(jī)器指令的類(lèi)型決定的。這個(gè)周期包括在寄存器之間傳送數(shù)據(jù)、從存儲(chǔ)器端口I/O進(jìn)行讀取解密操作或者加密寫(xiě)入操作,和/或ALU120的激活。
圖13是依據(jù)本發(fā)明實(shí)施例的中斷周期內(nèi)的數(shù)據(jù)流的示意圖。在中斷周期內(nèi),必須保存程序計(jì)數(shù)器542中的內(nèi)容,以便CPU 510能夠在中斷后恢復(fù)正常的活動(dòng)。因此,程序計(jì)數(shù)器542中的內(nèi)容將傳送到存儲(chǔ)器緩沖寄存器544中進(jìn)行加密,然后寫(xiě)入到存儲(chǔ)器中。為此目的而保留的特定存儲(chǔ)器位置將從控制單元550加載到存儲(chǔ)器地址寄存器546中。它可以是例如棧指針。在程序計(jì)數(shù)器142中加載中斷程序的地址。這樣一來(lái),便可通過(guò)讀取適當(dāng)?shù)闹噶顏?lái)開(kāi)始進(jìn)行下一周期。
4、結(jié)論雖然上文中描述了本發(fā)明的多個(gè)實(shí)施例,但本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,這些實(shí)施例僅是舉例,不起限定作用。相關(guān)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)明白,在不脫離本發(fā)明主旨和范圍的情況下,可對(duì)形式和細(xì)節(jié)進(jìn)行許多改變。因此,本發(fā)明的范圍不應(yīng)僅限于上文描述的示范性實(shí)施例,而是由權(quán)利要求及其等同方案來(lái)定義的。
權(quán)利要求
1.一種在具有非對(duì)稱(chēng)公共和私有密鑰對(duì)的處理器中進(jìn)行受信處理的方法,其特征在于,包括從第一存儲(chǔ)器的明文數(shù)據(jù)區(qū)中獲取經(jīng)加密的對(duì)稱(chēng)密鑰;使用非對(duì)稱(chēng)解密算法解密所述經(jīng)加密的對(duì)稱(chēng)密鑰,其中所述非對(duì)稱(chēng)解密算法將所述處理器的非對(duì)稱(chēng)私有密鑰用作解密密鑰;從所述第一存儲(chǔ)器的加密數(shù)據(jù)區(qū)中獲取經(jīng)加密的指令;使用對(duì)稱(chēng)解密算法解密所述經(jīng)加密的指令,其中所述對(duì)稱(chēng)解密算法將所述被解密的對(duì)稱(chēng)密鑰用作解密密鑰。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括將所述處理器的所述非對(duì)稱(chēng)私有密鑰存儲(chǔ)在位于所述處理器內(nèi)的第二存儲(chǔ)器中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括將所述被解密的對(duì)稱(chēng)密鑰存儲(chǔ)在位于所述處理器內(nèi)的第二存儲(chǔ)器中。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括將所述處理器的所述非對(duì)稱(chēng)私有密鑰存儲(chǔ)在一次性可編程存儲(chǔ)器中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括通過(guò)通信接口接收對(duì)所述非對(duì)稱(chēng)解密算法的更新;將更新后的所述非對(duì)稱(chēng)解密算法存儲(chǔ)在位于所述處理器內(nèi)的第二存儲(chǔ)器中。
6.一種用于受信數(shù)據(jù)處理的系統(tǒng),其特征在于,包括第一存儲(chǔ)器,所述第一存儲(chǔ)器包含加密數(shù)據(jù)區(qū)和明文數(shù)據(jù)區(qū);中央處理單元,所述中央處理單元包括非易失性存儲(chǔ)器,其中包括有所述中央處理單元的非對(duì)稱(chēng)公共和私有密鑰對(duì)以及被解密的對(duì)稱(chēng)密鑰;非對(duì)稱(chēng)加密引擎,用于將所述中央處理單元的私有密鑰用作解密密鑰,來(lái)對(duì)從所述第一存儲(chǔ)器中獲取的經(jīng)加密的對(duì)稱(chēng)密鑰進(jìn)行解密;對(duì)稱(chēng)加密引擎,用于使用所述被解密的對(duì)稱(chēng)密鑰對(duì)從所述第一存儲(chǔ)器的所述加密數(shù)據(jù)區(qū)內(nèi)的地址中獲取的經(jīng)加密的指令進(jìn)行解密。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述加密數(shù)據(jù)區(qū)包括用戶(hù)可定義的地址范圍。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述中央處理單元還包括隨機(jī)數(shù)生成器。
9.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述非易失性存儲(chǔ)器為一次性可編程存儲(chǔ)器。
10.一種在具有非對(duì)稱(chēng)公共和私有密鑰對(duì)的處理器中進(jìn)行受信處理的方法,其特征在于,包括從服務(wù)器接收經(jīng)加密的程序和經(jīng)加密的對(duì)稱(chēng)密鑰,其中所述經(jīng)加密的程序是使用所述對(duì)稱(chēng)密鑰進(jìn)行加密的,所述對(duì)稱(chēng)密鑰是使用所述處理器的非對(duì)稱(chēng)私有密鑰進(jìn)行加密的;將所述經(jīng)加密的程序存儲(chǔ)在存儲(chǔ)器的加密數(shù)據(jù)區(qū)中;將所述經(jīng)加密的對(duì)稱(chēng)密鑰存儲(chǔ)在所述存儲(chǔ)器的明文數(shù)據(jù)區(qū)中;使用所述處理器的私有密鑰解密所述經(jīng)加密的對(duì)稱(chēng)密鑰;當(dāng)訪(fǎng)問(wèn)到所述存儲(chǔ)器的加密數(shù)據(jù)區(qū)內(nèi)的地址時(shí),使用所述被解密的對(duì)稱(chēng)密鑰調(diào)用所述處理器中的對(duì)稱(chēng)解密算法。
全文摘要
本發(fā)明提供了一種用于受信數(shù)據(jù)處理的系統(tǒng)和方法。所述系統(tǒng)包括具有加密數(shù)據(jù)區(qū)和明文數(shù)據(jù)區(qū)的存儲(chǔ)器,和包含非易失性存儲(chǔ)器、非對(duì)稱(chēng)加密引擎、對(duì)稱(chēng)加密引擎的中央處理單元(CPU)。所述加密數(shù)據(jù)區(qū)包括有可由用戶(hù)定義的地址范圍。所述系統(tǒng)接收經(jīng)加密的程序指令和經(jīng)加密的對(duì)稱(chēng)密鑰。經(jīng)加密的程序指令存儲(chǔ)在加密數(shù)據(jù)區(qū)中,經(jīng)加密的對(duì)稱(chēng)密鑰存儲(chǔ)在明文數(shù)據(jù)區(qū)中。CPU使用其非對(duì)稱(chēng)私有密鑰解密該經(jīng)加密的對(duì)稱(chēng)密鑰。當(dāng)CPU訪(fǎng)問(wèn)分配給加密數(shù)據(jù)區(qū)的地址范圍內(nèi)的地址時(shí),將在CPU中調(diào)用對(duì)稱(chēng)解密處理,該對(duì)稱(chēng)解密處理使用所述被解密的對(duì)稱(chēng)密鑰。本發(fā)明還提供了一種安全寫(xiě)入和獲取中間數(shù)據(jù)的方法。
文檔編號(hào)H04N7/167GK101072097SQ20071010498
公開(kāi)日2007年11月14日 申請(qǐng)日期2007年5月11日 優(yōu)先權(quán)日2006年5月11日
發(fā)明者陳雪敏 申請(qǐng)人:美國(guó)博通公司