用于維持安全時間的方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總體涉及安全時間,更具體地涉及一種用于維持計(jì)算裝置中的安全時間的方法和設(shè)備,在所述計(jì)算裝置中,一個或多個處理器實(shí)現(xiàn)富執(zhí)行環(huán)境(Rich Execut1nEnvironment, REE)和獨(dú)立的可信執(zhí)行環(huán)境(Trusted Execut1n Environment, TEE)。
【背景技術(shù)】
[0002]可信執(zhí)行環(huán)境(TEE)是敏感代碼能夠獨(dú)立于所謂的“富OS”(例如Linux、Wind0WS)而實(shí)現(xiàn)的環(huán)境。在一些基于ARM的移動裝置中,TEE基于ARM TRUSTZONE (ARM信任區(qū))技術(shù)而實(shí)現(xiàn),該技術(shù)是允許在相同的物理CPU上安全敏感代碼獨(dú)立于其他不太安全的敏感代碼而實(shí)現(xiàn)的基于硬件的技術(shù)(“TRUSTZONE”是ARM公司的注冊商標(biāo))。這通過具有指示CPU是在所謂的“安全模式”下執(zhí)行還是在“正常模式”下執(zhí)行的狀態(tài)的CPU而實(shí)現(xiàn)。該狀態(tài)在總線上被傳播給存儲器以及其他的硬件塊。具有利用該狀態(tài)的能力的硬件被稱作“信任區(qū)感知(TRUSTZONE aware)”。通過這樣的事實(shí)實(shí)現(xiàn)分離:安全從設(shè)備(slave),例如安全存儲器,只能夠通過在安全模式下的安全主設(shè)備(master)(例如DMA,Direct Memory Access,直接存儲器訪問)或者在安全模式執(zhí)行的CPU進(jìn)行訪問。存在用于在兩個模式之間轉(zhuǎn)換的特殊的CPU指令,其觸發(fā)被稱作“監(jiān)控器”的用于轉(zhuǎn)換的代碼所位于的某個地址的一個例外。存在被稱作安全監(jiān)控模式的特殊的CPU模式,在該安全監(jiān)控模式下可以進(jìn)行轉(zhuǎn)換。
[0003]在TEE內(nèi)執(zhí)行的應(yīng)用程序被稱作受信任的應(yīng)用程序(Trusted Applicat1n,TA)。受信任的應(yīng)用程序的功能(例如服務(wù))能夠從富OS應(yīng)用程序調(diào)用。在圖1的計(jì)算裝置10中示出允許這樣的TEE框架,其包括分開的富執(zhí)行環(huán)境(REE) 12和可信執(zhí)行環(huán)境(TEE) 14。TEE客戶端API 30被富OS (即REE 12)調(diào)用以訪問受信任的應(yīng)用程序服務(wù)。TEE驅(qū)動器28、監(jiān)控器32和TEE核48參與調(diào)用TEE內(nèi)的正確服務(wù)。受信任的應(yīng)用程序44能夠借助TEE內(nèi)部API 46從TEE核48調(diào)用服務(wù)。這種服務(wù)的例子為加密服務(wù)、存儲管理服務(wù)、和安全時間服務(wù)。還存在TEE懇求端(supplicant) 36,該TEE懇求端36是向TEE核48提供REE服務(wù)的富REE 12中的后臺程序,例如非易失性存儲器。
[0004]TEE客戶端API和TEE內(nèi)部API在全球平臺內(nèi)被標(biāo)準(zhǔn)化(參見“全球平臺TEE客戶端 API V1.0 (Global Platform TEE Client API VL 0) ” 和“全球平臺 TEE 內(nèi)部API V1.0 (Global Platform TEE Internal API V1.0) ”,該兩種都能夠在 http: //www.globalplatform.0rg/上獲得)。對于安全時間,TEE內(nèi)部API 46包含用于處理受信任的應(yīng)用程序44持續(xù)時間的函數(shù)。存在允許受信任的應(yīng)用程序44設(shè)定(即存儲)其自己的時間基準(zhǔn)(“TA持續(xù)時間”)的一個函數(shù)和可被調(diào)用以得到TA的當(dāng)前時間的另一函數(shù)。利用安全時間的受信任的應(yīng)用程序的例子為數(shù)字版權(quán)管理(Digital Rights Management,DRM)TA,其需要跟蹤用于評估DRM許可證是否期滿的時間基準(zhǔn)。當(dāng)下載DRM許可證時,該時間基準(zhǔn)可以以安全的方式從許可證服務(wù)器獲得。
[0005]對于已經(jīng)存儲時間基準(zhǔn)的每個TA,TEE 14負(fù)責(zé)跟蹤TA持續(xù)時間、TA持續(xù)時間的已經(jīng)存儲的時間基準(zhǔn),并且檢測任何篡改TA持續(xù)時間的企圖。為了實(shí)現(xiàn)最高的保護(hù)水平,TEE規(guī)范授權(quán)TA持續(xù)時間基于TEE-控制的實(shí)時時鐘以及TEE控制的安全存儲器。實(shí)時時鐘必須在來自REE 12的軟件攻擊之外。
[0006]一個已知的用于DRM的安全時間解決方案將安全時間存儲為關(guān)于系統(tǒng)實(shí)時時鐘的時間偏移。通過讀取實(shí)時時鐘以及根據(jù)所存儲的偏移進(jìn)行補(bǔ)償,而獲得安全時間。無論何時對系統(tǒng)的RTC進(jìn)行改變,偏移量也相應(yīng)地改變,以保持安全時間不變。該解決方案用在封閉的OS產(chǎn)品中,在該封閉的OS產(chǎn)品中,不使用TEE且全部代碼進(jìn)行數(shù)字標(biāo)記、執(zhí)行前驗(yàn)證、以及被信任以不對實(shí)時時鐘或者偏移量造成非授權(quán)的改變。使用芯片個人密鑰對偏移量進(jìn)行完整性保護(hù)且存儲在非易失性存儲器中。
[0007]然而,該解決方案不足以用于通過TEE安全時間來操控的安全時間。對于如今的基于Linux/Android的產(chǎn)品,例如,其中,或多或少的全部裝置模型能夠得以支持,上述解決方案不適用。Linux/Android不能夠控制實(shí)時時鐘,因?yàn)長inux/Android不能夠被信任而被裝置用戶非法闖入,以操控時間。
[0008]另一已知的解決方案實(shí)施硬件(HW)支持以防止黑客使時鐘倒退。在該解決方案中,為了將時鐘倒退至比目前的值更小的值,需要使用通常僅僅在OEM顧客服務(wù)中心能夠獲得的私人密鑰(RSA)來標(biāo)記該值。裝置硬件包含驗(yàn)證所標(biāo)記的值需要的相對應(yīng)的公開密鑰。只有小于實(shí)時時鐘的當(dāng)前值的被成功驗(yàn)證的值被硬件認(rèn)可。然而,該解決方案也是不充分的。盡管其保護(hù)免受實(shí)時時鐘的未授權(quán)回退,但是其非常不靈活且在不轉(zhuǎn)向服務(wù)中心的情況下,對用戶自身可在其裝置上設(shè)定什么時間進(jìn)行限制。因此,該解決方案也未阻止實(shí)時時鐘的未授權(quán)增加。
[0009]用以實(shí)現(xiàn)由TEE控制、不能夠被REE 12操控的安全時間的直截了當(dāng)?shù)慕鉀Q方案將具有兩個實(shí)時時鐘:一個實(shí)時時鐘用于TEE的“安全模式”用于安全時間,另一個實(shí)時時鐘用于“正常模式”以存儲用戶控制的時間。然而,該選擇在硅空間方面是昂貴的。
【發(fā)明內(nèi)容】
[0010]公開了維持計(jì)算裝置中的安全時間的示例性方法,其中,一個或多個處理器實(shí)現(xiàn)富執(zhí)行環(huán)境(REE)、以及獨(dú)立的可信執(zhí)行環(huán)境(TEE)。根據(jù)所述方法,TEE維持實(shí)時時鐘(RTC),實(shí)時時鐘向REE提供RTC時間。RTC偏移被存儲在非易失性存儲器中,其中RTC偏移表示RTC時間和被保護(hù)的基準(zhǔn)(PR)時間之間的差值。響應(yīng)于來自REE的讀取RTC時間的請求,當(dāng)前RTC時間被返回到REE。響應(yīng)于來自REE的調(diào)節(jié)RTC時間的請求,以相同的量調(diào)節(jié)RTC時間和相對應(yīng)的RTC偏移,使得PR時間未被RTC調(diào)節(jié)而改變。
[0011]在一個實(shí)施方式中,當(dāng)每次使用來自TEE的PR時間以及每次調(diào)整RTC時間時,當(dāng)前PR時間被存儲在非易失性存儲器中。在該實(shí)施方式中,當(dāng)重新啟動實(shí)現(xiàn)TEE的處理器時,執(zhí)行下面的步驟:讀取當(dāng)前RTC時間、存儲的PR時間以及來自非易失性存儲器的被存儲的RTC偏移;通過將被存儲的RTC偏移與當(dāng)前RTC時間相加來計(jì)算當(dāng)前PR時間;比較當(dāng)前PR時間和存儲的PR時間;和,如果當(dāng)前PR時間小于存儲的PR時間,則調(diào)節(jié)RTC偏移等于零,使得RTC時間和PR時間相同。如果當(dāng)前PR時間小于存儲的PR時間,則可確定PR時間已經(jīng)被篡改。
[0012]在一個實(shí)施方式中,非易失性存儲器可包括作為更大存儲器單元的一部分的重放保護(hù)內(nèi)存塊(RPMB)。在該實(shí)施方式中,RPMB基于RPMB和TEE之間的共享的密鑰支持已認(rèn)證的讀寫操作,使得僅僅TEE能夠變更RPMB的內(nèi)容,且使得TEE能夠驗(yàn)證從RPMB讀取的數(shù)據(jù)的真實(shí)性。在該實(shí)施方式中,REE向TEE提供用于發(fā)送已認(rèn)證的讀寫請求給RPMB的服務(wù)。在另一實(shí)施方式中,非易失性存儲器包括僅僅受到TEE控制的電可擦除可編程只讀存儲器(EEPROM)單元。
[0013]還可支持各種受信任的應(yīng)用程序(TA)特征。例如,在一個實(shí)施方式中,在TEE內(nèi),從在TEE中執(zhí)行的TA接收用于設(shè)定用于TA的持續(xù)時間的請求?;诋?dāng)前RTC時間和存儲的RTC偏移確定當(dāng)前PR時間。當(dāng)前PR時間和被請求的持續(xù)時間之間的差值被確定為用于TA的持續(xù)時間偏移,并且用于TA的持續(xù)時間偏移和持續(xù)時間標(biāo)識符被存儲在非易失性存儲器中。多個TA中的各個TA可被允許將其本身的持續(xù)時間偏移存儲在非易失性存儲器中,并且可基于相同的RTC偏移確定多個TA中的各個TA的持續(xù)時間偏移。
[0014]在一個示例性實(shí)施方式中,當(dāng)在TEE內(nèi)接收來自TA的對于其持續(xù)時間的請求時,從非易失性存儲器中檢索到TA的持續(xù)時間偏移,并且確定所檢索到的持續(xù)時間偏移的有效性。響應(yīng)于確定所檢索到的持續(xù)時間偏移是有效的,執(zhí)行下面的步驟:基于持續(xù)時間偏移和當(dāng)前PR時間確定持續(xù)時間,所述當(dāng)前PR時間是根據(jù)當(dāng)前RTC時間和被存儲的RTC偏移計(jì)算的;以及,將持續(xù)時間發(fā)送給TA。響應(yīng)于確定所檢索到的持續(xù)時間偏移是無效的,將指示TA持續(xù)時間已經(jīng)被篡改的錯誤返回至TA。通過比較存儲的RTC計(jì)數(shù)器和當(dāng)前RTC計(jì)數(shù)器可確定所檢索到的持續(xù)時間的有效性。
[0015]還公開了示例性的安全時間計(jì)算裝置。計(jì)算裝置既提供可信執(zhí)行環(huán)境(TEE)又提供獨(dú)立的富執(zhí)行環(huán)境(REE),且包含包括第一處理器的TEE電路和包括同一處理器或者