處理數(shù)據(jù)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的實(shí)施例涉及數(shù)據(jù)處理,特別是在智能卡上的數(shù)據(jù)處理。
【背景技術(shù)】
[0002] 現(xiàn)代智能卡應(yīng)用要求允許高度可變性的數(shù)據(jù)保護(hù)機(jī)制。
【發(fā)明內(nèi)容】
[0003] 第一實(shí)施例涉及一種用于執(zhí)行程序代碼的方法,該方法包括:
[0004] -基于觸發(fā)器來檢查存儲(chǔ)器訪問策略資源;以及
[0005] -將當(dāng)前程序計(jì)數(shù)器與由存儲(chǔ)器訪問策略資源提供的程序計(jì)數(shù)器信息進(jìn)行比較, 并且在當(dāng)前程序計(jì)數(shù)器與程序計(jì)數(shù)器信息的比較滿足預(yù)定義的條件的情況下,執(zhí)行存儲(chǔ)器 訪問策略檢查。
[0006] 第二實(shí)施例涉及一種包括處理單元的設(shè)備,其中該處理單元被設(shè)置用于:
[0007] -基于觸發(fā)器來檢查存儲(chǔ)器訪問策略資源;以及
[0008] -將當(dāng)前程序計(jì)數(shù)器與由存儲(chǔ)器訪問策略資源提供的程序計(jì)數(shù)器信息進(jìn)行比較, 并且在當(dāng)前程序計(jì)數(shù)器與程序計(jì)數(shù)器信息的比較滿足預(yù)定義的條件的情況下,執(zhí)行存儲(chǔ)器 訪問策略檢查。
[0009] 第三實(shí)施例涉及一種智能卡,包括:
[0010] -處理單元;以及
[0011] -存儲(chǔ)器,
[0012] -其中該處理單元被布置用于:
[0013] -基于觸發(fā)器來檢查存儲(chǔ)器訪問策略資源;以及
[0014] -將當(dāng)前程序計(jì)數(shù)器與由存儲(chǔ)器訪問策略資源提供的程序計(jì)數(shù)器信息進(jìn)行比較, 并且在當(dāng)前程序計(jì)數(shù)器與程序計(jì)數(shù)器信息的比較滿足預(yù)定義的條件的情況下,執(zhí)行存儲(chǔ)器 訪問策略檢查。
[0015] 第四實(shí)施例針對(duì)一種用于處理數(shù)據(jù)的設(shè)備,包括:
[0016] -用于基于觸發(fā)器來檢查存儲(chǔ)器訪問策略資源的裝置;以及
[0017] -用于將當(dāng)前程序計(jì)數(shù)器與由存儲(chǔ)器訪問策略資源提供的程序計(jì)數(shù)器信息進(jìn)行比 較,并且在當(dāng)前程序計(jì)數(shù)器與程序計(jì)數(shù)器信息的比較滿足預(yù)定義的條件的情況下,執(zhí)行存 儲(chǔ)器訪問策略檢查的裝置。
[0018] 第四實(shí)施例針對(duì)一種能夠直接加載到數(shù)字處理設(shè)備的存儲(chǔ)器中的計(jì)算機(jī)程序產(chǎn) 品,包括用于執(zhí)行這里描述的方法的步驟的軟件代碼部分。
【附圖說明】
[0019] 參照附圖示出并說明了實(shí)施例。附圖用來說明基本的原理,使得僅說明對(duì)理解基 本原理所必需的方面。附圖并不是按比例的。在附圖中,相同的附圖標(biāo)記表示類似的特征。
[0020] 圖1示出了包括被執(zhí)行以便驗(yàn)證當(dāng)前執(zhí)行的代碼是否滿足要求的訪問策略的這 樣的步驟的示意性流程圖。
[0021] 圖2示出了包括微控制器和存儲(chǔ)器的示意性硬件框圖。
【具體實(shí)施方式】
[0022] 所暗示的示例例如提供了用于微控制器的機(jī)構(gòu)以僅在滿足特定預(yù)定義和/或用 戶配置的條件時(shí)允許某個(gè)代碼段的執(zhí)行。
[0023] 例如,僅在以下條件中的至少一個(gè)條件被滿足的情況下執(zhí)行機(jī)密密鑰處置代碼:
[0024] -通信接口被去激活;
[0025] -針對(duì)命令提供對(duì)機(jī)密密鑰處置代碼的訪問;
[0026] -用于對(duì)密鑰執(zhí)行操作的應(yīng)用特定條件被滿足。
[0027] 對(duì)數(shù)據(jù)區(qū)域的訪問僅可以在指定的情況下和/或用戶配置的條件被滿足而被準(zhǔn) 許。例如,對(duì)包含(例如)秘密密鑰的存儲(chǔ)器的訪問僅可以在以上提到的條件被滿足的情 況下被允許。
[0028] 這里描述的示例可以特別地允許硬件來解決這些問題并且在預(yù)定義的條件被滿 足的情況下靈活地準(zhǔn)許存儲(chǔ)器訪問。
[0029] 示例還可以提供應(yīng)用特定條件,在該應(yīng)用特定條件下,允許對(duì)存儲(chǔ)器(例如,到存 儲(chǔ)器的至少一個(gè)部分)的訪問。這樣的條件被稱為存儲(chǔ)器訪問策略(MAP)。
[0030] 存儲(chǔ)器可以用MAP來標(biāo)記。存儲(chǔ)器可以包括代碼和數(shù)據(jù)。這樣的存儲(chǔ)器可以稱為 任何粒度水平處的存儲(chǔ)器部分。
[0031] 在執(zhí)行期間,處理單元(例如,中央處理單元一一CPU)可以執(zhí)行以下檢查:
[0032] -用于被執(zhí)行的代碼的MAP被滿足?
[0033]-用于被訪問的數(shù)據(jù)的MAP被滿足?
[0034] 在檢查中的任何檢查失敗的情況下,可以觸發(fā)預(yù)定義動(dòng)作,例如可以敲響警報(bào)和/ 或可以發(fā)出通知。
[0035] 例如,可以提供兩種模式以用于執(zhí)行MAP檢查:
[0036] -在AUT0模式中,處理單元在可配置的預(yù)定義時(shí)間區(qū)間處執(zhí)行MAP檢查。
[0037] -在MANUAL模式中,可以使用特殊操作(操作代碼)來觸發(fā)MAP檢查。
[0038] 根據(jù)示例性實(shí)施例,可以使用以下實(shí)體:
[0039] -MAP 表;
[0040] -MAP_STATUS 寄存器;
[0041] -MAP_CFGx 寄存器;
[0042] -操作代碼:ASSERTMAP。
[0043] 下文中進(jìn)一步詳細(xì)地解釋這些實(shí)體:
[0044] MAP 表
[0045] MAP表可以被構(gòu)建為具有以下條目(列):
[0046] -存儲(chǔ)器的開始地址;
[0047] -大?。?br>[0048] -MAP 值;
[0049] -訪問許可。
[0050] MAP表可以包括針對(duì)給定存儲(chǔ)器地址范圍的(所需的)存儲(chǔ)器訪問策略(對(duì)應(yīng)于 MAP值)的列表。存儲(chǔ)器地址范圍可以由開始地址和大小來限定。
[0051] MAP STATUS 寄存器
[0052] 這一 MAP_STATUS寄存器中的每個(gè)位可以對(duì)應(yīng)于在當(dāng)前執(zhí)行的情境中被滿足的應(yīng) 用特定訪問策略??梢杂蓱?yīng)用邏輯來管理這些位的關(guān)聯(lián)和設(shè)置。
[0053] MAP CFGx 寄存器
[0054] 這些是允許配置MAP檢查的模式(即AUTO模式或MANUAL模式)的配置寄存器。
[0055] 在AUT0模式中,在MAP_CFGx寄存器中定義的特定時(shí)間區(qū)間處執(zhí)行MAP檢查。因 此,在AUT0模式中,可以有可能配置在其處MAP檢查被觸發(fā)的這樣的時(shí)間區(qū)間。
[0056] 在MANUAL模式中,可以在代碼的各種位置中插入特殊操作代碼"ASSERTMAP"以顯 式地觸發(fā)MAP檢查。
[0057] 另外可以使用MAP_CFGx寄存器來配置MAP表的位置和大小。
[0058] 橾作代碼:ASSERTMAP
[0059] 這是(手動(dòng)地)觸發(fā)MAP檢查的操作代碼(指令)。
[0060] 操也
[0061 ] 在芯片(硬件)的啟動(dòng)期間,MAP_CFGx寄存器被配置有默認(rèn)值。這樣的默認(rèn)值可 以是在預(yù)定時(shí)間區(qū)間處觸發(fā)MAP檢查的AUT0模式。另外,可以重置MAP_STATUS寄存器。此 外,可以配置MAP表位置和/或大小。
[0062] 在操作期間,基于應(yīng)用特定策略被滿足,應(yīng)用可以適當(dāng)?shù)卦O(shè)置MAP_STATUS寄存 器。
[0063] 基于MAP檢查的觸發(fā),硬件可以驗(yàn)證當(dāng)前正在被執(zhí)行的代碼滿足要求的訪問策 略。
[0064] 圖1示出了包括被執(zhí)行以便驗(yàn)證當(dāng)前正在被執(zhí)行的代碼是否滿足要求的訪問策 略這樣的步驟的示意性流程圖。
[0065] 在狀態(tài)101中,發(fā)出觸發(fā)器102以執(zhí)行MAP檢查。在步驟103中,基于當(dāng)前程序計(jì) 數(shù)器來執(zhí)行對(duì)MAP表的查找。在步驟104中,檢查程序計(jì)數(shù)器的當(dāng)前值在MAP表中是否具 有條目。如果沒有,在步驟105中繼續(xù)程序的執(zhí)行。如果MAP表包括與程序計(jì)數(shù)器的當(dāng)前 值對(duì)應(yīng)的這樣的條目,則在步驟106中執(zhí)行訪問策略檢查。
[0066] 程序計(jì)數(shù)器的當(dāng)前值選擇MAP表中的條目。從這一條目,取回MAP,其對(duì)應(yīng)于存儲(chǔ) 器訪問策略MAP。在步驟106中如以下檢查這一 MAP :
[0067] MAP&MAP_STATUS = = MAP ?
[0068] 在步驟107中,確定MAP是否被滿足。在肯定的情況下,分叉到步驟105。如果沒 有MAP沒有被滿足,可以觸發(fā)預(yù)定義動(dòng)作,例如在步驟108中可以敲響警報(bào)和/或發(fā)出通 知。
[0069] 可以針對(duì)數(shù)據(jù)訪問執(zhí)行相似類型的檢查。為了改善性能,MAP_CFGx寄存器可以包 括其中能夠關(guān)閉針對(duì)數(shù)據(jù)訪問的檢查的設(shè)置。例如,MAP表可以包括與安全數(shù)據(jù)區(qū)域?qū)?yīng) 的條目。在請(qǐng)求地址總線上的數(shù)據(jù)之前,處理單元可以用MAP表執(zhí)行檢查。這樣的檢查可 以伴隨每次數(shù)據(jù)取讀而發(fā)生。
[0070] 在下文中,示出樣本C代碼以更詳細(xì)解釋所呈現(xiàn)的方案:
[0071] #pragma MAPENTRY(MAP_VALUE_1,X)//這一編譯指示向 MAP 表中生成條目。'X' 指示"執(zhí)行"許可。在這一示例中,MAP_VALUE_1被分配OxCOOO。
[0072] #pragma MAPEXIT ;這一編譯指示是用于先前MAPENTRY的中止
[0073] //MAP表結(jié)構(gòu)的示例:
[0074]
[0076] 主程序可以是如下的無限while循環(huán):
[0077]
[007