本公開的實施例涉及用于在安全元件中執(zhí)行諸如java?card?applet(java?card小程序)之類的應用的技術。
背景技術:
1、安全元件是已知的,其例如是防篡改平臺,通常是單芯片安全微控制器,該微控制器能夠按照知名可信機構(gòu)設定的規(guī)則和安全要求安全地托管應用及其機密和加密數(shù)據(jù)(例如,加密密鑰)。例如,可以使用java?card平臺獲得這種安全托管。安全元件可以對應于uicc、“euicc,訂戶身份模塊”、“芯片卡”、iuicc、集成euicc、集成安全元件、嵌入式安全元件、“安全元件”或sim或通過這些來體現(xiàn)。
2、在圖1中示意性地示出了系統(tǒng)10,系統(tǒng)10包括第一主機11(例如,移動電話),第一主機11包括在第一安全元件se1內(nèi)的第一相應java?card運行時環(huán)境j1中操作的主機應用app1。主機11的操作由微控制器單元或微處理器hp1監(jiān)督。該示例中的主機應用app1可以訪問第一安全元件se1中的nfc控制器n1。因此,主機應用app1可以通過第一主機11中的nfc天線na與例如基于iso/iec?14443a的信令類型nfc-a的nfc信道nc上的nfc讀取器12通信。nfc讀取器12包括被耦合到nfc讀取器/寫入器nrw的相應的nfc天線rna,該rna解碼在nfc信道nc上與第一主機11交換的信號并且例如經(jīng)由spi(串行到并行接口)rsp與讀取器處理器rp通信,rp例如經(jīng)由can總線vb被耦合到與第二主機13(例如,ecu主機)內(nèi)的微處理器以用于通信。
3、第二主機13包括第二主機se2,包括第二安全元件se2和相應的java?card運行時環(huán)境j2,j2包括第二小程序app2。
4、在圖1中,第二主機13還包括相應的nfc讀取器/寫入器nrw2,nrw2與第二主機微控制器單元hp2交換信號以讀取和寫入在nfc信道nc上交換的信號。特別地,主機的架構(gòu)非常簡化,根據(jù)此處描述的解決方案,僅顯示在協(xié)議中涉及的模塊。
5、在這方面,虛線指示來自第一主機11的命令的路徑,特別是從第一小程序app1到第二主機13中的第二小程序app2。
6、圖1還以示例的方式指示了替代的無線通信信道ucb,其可以是ble(低功耗藍牙)/uwb(超寬帶無線信道),其是從第一小程序app1到第二主機13(特別是第二處理器hp2,由虛線(較短的虛線)指示)的命令的路徑。主機11可以在信道ucb的一端包括ble收發(fā)器bt和uwb收發(fā)器ut,在另一端可以被耦合到ble讀取器br和uwb錨點ua(即,檢測第二主機13中的uwb脈沖的設備)。uwb錨點ua由uwb控制器uc控制。
7、所示的架構(gòu)例如可以對應于移動電話,該移動電話使用第一小程序app1發(fā)送命令以打開車輛的車門,該車輛裝有讀取器12和第二主機13(例如,汽車ecu)。在這種架構(gòu)中,第二小程序app2通過ecu(例如,第二主機13)實施(perform)打開車門的任務。特別地,小程序(app2與app1協(xié)作)可以根據(jù)ccc(車聯(lián)網(wǎng)聯(lián)盟)數(shù)字鑰匙生態(tài)系統(tǒng)來實現(xiàn)操作。
8、圖2示出了協(xié)議圖,該協(xié)議圖通過其在節(jié)點(諸如主機、實體、應用)之間的傳輸、或是第一主機11(具體而言是其主機應用app1)與第二安全元件se2之間的交互來表示協(xié)議。根據(jù)iso/iec?7816標準,主機-se傳輸是基于apdu命令/響應協(xié)議。因此,主機11中的主機應用app1必須從第二安全元件se2接收響應狀態(tài)字sw(sw指示命令處理已完成),然后才能處理對應的響應并繼續(xù)下一個協(xié)議步驟。響應狀態(tài)字sw是字節(jié),例如,sw1(例如,命令處理狀態(tài))和sw2(例如,命令限定符),它們按照規(guī)范iso-7814-4來定義卡中的處理狀態(tài)。狀態(tài)字sw可以信令正常處理(‘9000’iso-7814-4)或包括警告或錯誤的幾個其他狀態(tài)。因此,例如,根據(jù)iso-7814-4,狀態(tài)字sw包含正常處理指示(sw1sw2=‘9000’),以指示第一apdu命令ac1的完成,如下所解釋的。如前所提及的,基于java?card的安全元件包括java?card運行時環(huán)境(jcre),它接收apdu(應用協(xié)議數(shù)據(jù)單元)命令并將其轉(zhuǎn)發(fā)到安全元件中的應用(小程序)。
9、因此,在圖2中,首先示出了第一主機11(未示出)中的第一應用app1在第一傳輸t1中實施其應用功能,例如,該應用功能確定在傳輸t2中通過讀取器12向第二安全元件se2發(fā)送命令(例如,第一apdu命令ac1),讀取器12在傳輸t3中將第一apdu命令ac1轉(zhuǎn)發(fā)給第二安全元件se2,第二安全元件se2又在其低級操作系統(tǒng)o2(即,負責安全元件與其他實體(其中包括第一主機11)的輸入/輸出通信的操作系統(tǒng))處接收第一apdu命令ac1。低級操作系統(tǒng)22通過傳輸t4將接收到的命令和apdu命令ac1指示給第二java?card運行時環(huán)境j2。javacard運行時環(huán)境j2在傳輸t5中處理apdu命令ac1,例如,應用applet.process(apdu)方法(例如,參見jcre規(guī)范、java?cardtm平臺運行時環(huán)境規(guī)范、經(jīng)典版3.1,網(wǎng)址為https://docs.oracle.com/javacard/3.1/related-docs/jccre/jccre.pdf)。
10、apdu命令導致包含該命令的apdu類的實例被傳遞給當前選定的小程序(即,app2)的處理(apdu)方法,因此它啟動小程序執(zhí)行程序p1,這種啟動由p1s指示,其中java?card虛擬機或jvcm執(zhí)行第二小程序app2進程,在傳輸t6中處理第一apdu命令ac1,然后實施t7對應的第一任務tsk1(即,apdu命令ac1所需的任務)。
11、然后,通過向低級操作系統(tǒng)o2發(fā)送命令響應(即,響應apdu?rc1)來實施傳輸t8。如果第一apdu命令ac1要求實施多于一個的任務(例如,在第一任務tsk1之后將要實施第二任務tsk2),則發(fā)生更加耗時的第二傳輸t7',只有在該一個或多個任務時(特別是在示例任務tsk2中),小程序執(zhí)行程序p1才認為app2進程的java?card虛擬機執(zhí)行已完成(進程p1完成pc)并向低級os?o2發(fā)送完成信號t9到java?card運行時環(huán)境o2,其進而又確定在傳輸t10中向低級操作系統(tǒng)o2發(fā)送狀態(tài)字sw,sw指示命令處理狀態(tài),例如,通過信令正常處理來指示完成(例如,根據(jù)iso-7814-4,正常處理指示(sw1sw2=‘9000’)指示第一apdu命令ac1已完成,如前所提及的)。
12、此外,一般來說,iso?7816apdu命令/響應的結(jié)構(gòu)如下:
13、-apdu命令(例如,ac1):
14、○定義類、指令、附加命令參數(shù)1和2(p1?p2)的報頭(4字節(jié))
15、○命令輸入數(shù)據(jù)的長度(可選)
16、○命令輸入數(shù)據(jù)(可選)
17、○預期輸出數(shù)據(jù)的長度(可選)
18、-apdu響應:
19、○輸出數(shù)據(jù)(可選)
20、○狀態(tài)字(2字節(jié))
21、針對類、指令、p1、p2的允許值、每個命令所需的輸入數(shù)據(jù)、以及預期響應數(shù)據(jù)和狀態(tài)字sw由應用級規(guī)范和協(xié)議來定義。
22、然后,第二安全元件se2通過低級os?o2將響應rc1加上狀態(tài)字sw(例如,如上面提及的java?card運行時環(huán)境規(guī)范中所定義的)發(fā)送(傳輸t11)到讀取器12,讀取器12又將這種響應rc2加上狀態(tài)字sw發(fā)送(傳輸t12)到主機11上的第一主機應用app1。在傳輸t10之后,第二安全元件se2也進入空閑時間或待機狀態(tài),由在os?o2級循環(huán)的傳輸t10’指示。
23、然后,第一主機應用app1處理第二安全元件se2的響應rc1和狀態(tài)字sw,即,實施由這種響應rc1和狀態(tài)字sw確定的一個或多個小程序操作(傳輸t13),并且當它被完成時,通過讀取器12向第二安全元件se發(fā)出(傳輸t14)新命令,讀取器12在傳輸t15中發(fā)出第二apdu命令ac2。如圖2中所示,第一安全元件se1(特別是與第一應用app1相關)和第二安全元件se2(o2)處的時間段可以被定義為:
24、-主機等待時間hwt,在主機應用app1處的傳輸t2和t12之間,即,主機11(特別是應用app1)等待第二安全元件se2的響應的時間,以及
25、-安全元件命令處理時間seht,在傳輸t3和t11之間,其是第二安全元件se2處理第一apdu命令ac1所需的時間,即,通過這種命令ac1實施第二安全元件se2所要求的操作所需的時間;
26、-安全元件等待時間sewt,在傳輸t10(t10’)之后的os22進入的空閑狀態(tài)或待機狀態(tài)與在傳輸t15中接收第二apdu命令ac2之間的時間,即,第二安全元件se2保持空閑以等待下一個命令的時間;
27、-傳輸t12和t14之間的主機處理時間hpt,其是小程序app1/主機11處理響應rc1并發(fā)出下一個命令ac2所需的時間。
28、由于主機處理時間hpt和第二安全元件se2接收下一個命令ac2所需的時間,第二安全元件se2等待對應于死區(qū)時間的時間sewt,即,幾乎不活動或不活動的時間。在等待時間sewt期間,安全元件se2通常進入待機狀態(tài):在該狀態(tài)下,第二安全元件se2可以切換到低功耗模式以降低功耗,直到接收到第二apdu命令ac2或下一個apdu命令。
29、根據(jù)java?card虛擬機規(guī)范,java?card小程序執(zhí)行(例如,程序p1)是單線程的:小程序無法并行化任務。第二安全元件se2上的耗時操作增加了安全元件命令處理時間seht和主機等待時間hwt。第一主機側(cè)(例如,移動電話)上的耗時操作增加了主機處理時間hpt和安全元件等待時間sewt。
30、由于主機/安全元件的通信通常是半雙工的,并且安全元件一次只能處理一個命令,因此提高性能的典型方法是對主機或安全元件采取以下措施:
31、主機和安全元件:優(yōu)化操作系統(tǒng)、應用代碼
32、主機和安全元件:提高cpu(中央處理單元)操作頻率、i/o(輸入/輸出)協(xié)議速度
33、僅安全元件:移除任何不必要的nvm操作
34、僅安全元件:在應用用例允許的情況下微調(diào)安全對策或減少它們(安全元件側(cè))
35、僅安全元件:提供為應用(安全元件側(cè))的特定用例定制的專用api(應用編程接口)。
36、每種措施都有缺點。
37、給定示例中的主機具有復雜的架構(gòu)和操作約束:hw/sw層根據(jù)明確定義的協(xié)議、時序、以及功耗限制進行交互??梢赃M行有限的改進。
38、安全元件還應嚴格遵循安全準則:對策級別不能降低到準則中定義的閾值以下。
39、在所有基于java?card的安全元件上可用的標準api都是“通用的”,并且應該安全地服務于任何適用的用例;因此,安全級別不能為特定應用進行定制。
40、專用api可以提供性能和安全性之間的必要權衡,但它們不能在所有可能的用例中重復使用。
技術實現(xiàn)思路
1、考慮到上述情況,本公開的各種實施例旨在提供能夠克服現(xiàn)有技術的一個或多個限制的解決方案。
2、根據(jù)一個或多個實施例,在安全元件中執(zhí)行應用包括:由至少一個主機向包括應用的安全元件發(fā)送至少一個apdu命令;在安全元件處對至少一個apdu命令進行處理以供應用執(zhí)行;實施由至少一個apdu命令所命令的應用的確定的多個操作,其中應用在由至少一個apdu命令所命令的多個應用操作當中確定在接收到apdu命令之后應用要執(zhí)行的至少第一組操作和至少第二組操作,該方法包括:在安全元件處,實施在接收到apdu命令之后應用要執(zhí)行的第一組操作,在從安全元件向主機傳達了至少第一組操作的執(zhí)行完成之后,實施至少第二組操作的推遲執(zhí)行。
3、在實施例中,處理至少一個apdu命令以供應用執(zhí)行包括在安全元件的運行時環(huán)境中進行處理,該方法包括:在安全元件中提供定義了推遲程序執(zhí)行特權實體的軟件模塊,應用在至少一個apdu命令所命令的多個應用操作中,確定在接收到apdu命令之后應用要執(zhí)行的至少第一組操作和推遲程序要執(zhí)行的至少第二組操作,該方法包括:通過運行時環(huán)境向推遲程序執(zhí)行特權實體命令在由推遲程序執(zhí)行特權實體創(chuàng)建的推遲程序?qū)ο笾械耐七t執(zhí)行來實施至少第二組操作的推遲執(zhí)行;在安全元件處等待向運行時環(huán)境供應另一apdu命令,直到推遲程序?qū)ο笠獔?zhí)行的這樣的第二組操作完成。
4、在實施例中,推遲程序執(zhí)行特權實體在安裝階段(應用的安裝)期間創(chuàng)建推遲程序?qū)ο蟆?/p>
5、在實施例中,當在安全元件處對apdu命令(特別是第一apdu命令)進行處理時,推遲程序執(zhí)行特權實體創(chuàng)建推遲程序?qū)ο蟆?/p>
6、在實施例中,定義推遲程序執(zhí)行特權實體的軟件模塊公開被添加到系統(tǒng)(特別是安全元件中的java?card系統(tǒng))的api,該系統(tǒng)包括運行時環(huán)境。
7、在實施例中,安全元件被托管在主機中。
8、在實施例中,安全元件被托管在不同的主機中。
9、在實施例中,該方法包括,當在安全元件處接收到另一apdu命令時,在推遲程序執(zhí)行特權實體處實施對與至少一個apdu命令相關聯(lián)的推遲程序?qū)ο蟮膱?zhí)行結(jié)果的檢查。
10、在實施例中,該方法包括:實施與第一任務相對應的第一組操作;由應用向推遲程序執(zhí)行特權實體請求執(zhí)行推遲程序?qū)ο?;推遲程序執(zhí)行特權實體被配置為在接收到請求之后在運行時環(huán)境中調(diào)度推遲程序,指示推遲程序?qū)ο蟊环峙浣o了應用,并且在從安全元件向主機發(fā)送響應(特別是由第一組操作的完成確定的apdu響應和狀態(tài)字)之后在空閑或待機時間開始執(zhí)行推遲程序?qū)ο螅贿\行時環(huán)境被配置為在接收到調(diào)度之后指示(特別是通過設置標志)推遲程序待執(zhí)行;安全元件被配置為等待執(zhí)行另一apdu命令,直到推遲程序待執(zhí)行的指示被移除;在發(fā)送響應之后,運行時環(huán)境命令推遲程序執(zhí)行特權實體開始執(zhí)行推遲程序?qū)ο螅詧?zhí)行第二組操作;然后,在發(fā)出第二組操作完成的信號或在執(zhí)行期間發(fā)出異常之后,推遲程序執(zhí)行特權實體向運行時環(huán)境發(fā)出推遲程序完成的信號,運行時環(huán)境相應地實施移除推遲程序待執(zhí)行的指示。
11、在變型實施例中,安全元件包括專用于輸入/輸出通信操作以在運行時環(huán)境和主機之間交換信號的操作系統(tǒng)部分。
12、在變型實施例中,應用被配置為,根據(jù)基于操作執(zhí)行時間或操作執(zhí)行優(yōu)先級的標準,在至少一個apdu命令所命令的多個應用操作當中確定在接收到apdu命令之后應用要執(zhí)行的至少第一組操作以及至少第二組操作。
13、在變型實施例中,應用是java?card小程序,并且運行時環(huán)境是java?card運行時環(huán)境。
14、根據(jù)一個或多個實施例,一個或多個先前的目的還通過包括進行通信交換的主機和安全元件的系統(tǒng)來實現(xiàn),該安全元件包括應用,特別是java?card小程序。該主機被配置為向應用發(fā)送至少一個apdu命令,并且該系統(tǒng)被配置為根據(jù)實施例來操作該方法。
15、在變型實施例中,該系統(tǒng)包括:第一主機,其托管相應的安全元件;以及第二主機,其包括安全元件中的應用,特別是java?card小程序。
16、在變型實施例中,第一主機是用戶終端,第二主機是車輛ecu,特別是被配置為命令車門致動或汽車引擎的啟動。
17、在變型實施例中,主機和安全元件通過有線或無線信道(特別是nfc、uwb或ble信道)進行通信。
18、根據(jù)一個或多個實施例,一個或多個先前的目的還通過被配置為與至少一個主機通信的安全元件來實現(xiàn),該安全元件包括應用,特別是java?card小程序,該安全元件被配置為:處理至少一個apdu命令以供應用執(zhí)行,實施由至少一個apdu命令所命令的該應用的確定的多個操作,該應用在至少一個apdu命令所命令的多個應用操作當中確定在接收到apdu命令之后該應用要執(zhí)行的至少第一組操作和至少第二組操作;實施在接收到apdu命令之后該應用要執(zhí)行的第一組操作;在從安全元件向主機傳達至少第一組操作的執(zhí)行完成之后,實施至少第二組操作的推遲執(zhí)行。
19、在實施例中,主機向包括java?card小程序的安全元件發(fā)送至少一個apdu命令。安全元件包括java?card運行時環(huán)境,該運行時環(huán)境被配置為處理至少一個apdu命令以供java?card小程序執(zhí)行。java?card小程序被配置為實施由至少一個apdu命令所命令的多個確定小程序操作。特別地,此處描述的解決方案可以在應用協(xié)議中被應用,諸如卡連接聯(lián)盟的數(shù)字鑰匙車輛訪問和引擎啟動事務。