黃健文,黃 健,蔡秋艷,楊 光(中國(guó)電信股份有限公司研究院,廣州 510630)
隨著移動(dòng)通信技術(shù)從1G 到5G 持續(xù)演進(jìn),移動(dòng)通信已滲透到人們生產(chǎn)生活的方方面面[1-2]。3G 時(shí)代移動(dòng)通信技術(shù)和互聯(lián)網(wǎng)技術(shù)開(kāi)始結(jié)合[3],4G 推動(dòng)了移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展[4],出現(xiàn)了微信、支付寶等超級(jí)應(yīng)用APP。5G 通信技術(shù)帶來(lái)了大帶寬(eMBB)、大連接(mMTC)和低時(shí)延(uRLLC)等新應(yīng)用場(chǎng)景,快速拉動(dòng)大數(shù)據(jù)、人工智能、物聯(lián)網(wǎng)和智能駕駛等一系列新業(yè)態(tài)[5]。6G 開(kāi)始進(jìn)入空天一體化時(shí)代,將形成沉浸式云XR、全息通信、感官互聯(lián)、數(shù)字孿生等八大業(yè)務(wù)應(yīng)用。
在1G~3G 時(shí)代,SIM 的核心用途是移動(dòng)網(wǎng)絡(luò)接入認(rèn)證,是使用NATIVE 語(yǔ)言開(kāi)發(fā)的單應(yīng)用卡。在4G、5G 時(shí)代,由于行業(yè)應(yīng)用的快速推廣和終端技術(shù)的快速進(jìn)步,SIM 芯片從ICC 架構(gòu)發(fā)展為UICC 架構(gòu),采用JAVACARD 與GP 架構(gòu)技術(shù)的多應(yīng)用卡成為未來(lái)SIM的主流發(fā)展方向,SIM 具備入網(wǎng)鑒權(quán)與應(yīng)用加載雙重核心用途。在5G、6G 時(shí)代,電信運(yùn)營(yíng)商不僅向外提供移動(dòng)通信數(shù)據(jù)管道服務(wù),同時(shí)正力爭(zhēng)成為全產(chǎn)業(yè)鏈綜合服務(wù)商。電信運(yùn)營(yíng)商發(fā)揮SIM 的天然安全屬性向外輸出安全服務(wù)能力,并借用SIM 卡安全存儲(chǔ)空間承載數(shù)字貨幣、數(shù)字身份、數(shù)字公交、市民卡等國(guó)家重要基礎(chǔ)實(shí)施應(yīng)用[6]。SIM RAM 內(nèi)存資源是行業(yè)應(yīng)用開(kāi)發(fā)、加載流程中不可或缺的重要元素,將決定行業(yè)應(yīng)用在SIM 內(nèi)的運(yùn)行效率及穩(wěn)定性。為滿(mǎn)足行業(yè)應(yīng)用在SIM上最大程度的加載需求,本文后續(xù)將從SIM 芯片、COS內(nèi)存資源現(xiàn)狀,國(guó)際規(guī)范內(nèi)存資源管理要求,分析優(yōu)化提升SIM內(nèi)存資源利用率的方法。
現(xiàn)有JAVACARD JCRE 國(guó)際標(biāo)準(zhǔn)將SIM 內(nèi)存分為CLEAR_ON_RESET 和CLEAR_ON_DESELECT 2 類(lèi)。CLEAR_ON_RESET 簡(jiǎn)稱(chēng)RTR 內(nèi)存,用于存儲(chǔ)應(yīng)用的永久性狀態(tài),CLEAR_ON_DESELECT 簡(jiǎn)稱(chēng)DTR 內(nèi)存,用于存儲(chǔ)應(yīng)用的臨時(shí)性、過(guò)渡性狀態(tài)。RTR 內(nèi)存在應(yīng)用安裝時(shí)候申請(qǐng)并占用,應(yīng)用刪除后釋放回收為待分配的RTR,DTR 在應(yīng)用安裝時(shí)申請(qǐng),應(yīng)用選擇運(yùn)行時(shí)候內(nèi)存占用,應(yīng)用去選擇后釋放回收為DTR內(nèi)存。
當(dāng)前國(guó)內(nèi)運(yùn)營(yíng)商發(fā)行的JAVACARD SIM 芯片主要以國(guó)產(chǎn)芯片為主,典型代表為華大電子CIU98M25、紫光國(guó)微THD89,芯片物理內(nèi)存為40~44 KB。
現(xiàn)有SIM內(nèi)存管理方法將待分配內(nèi)存資源按一定比例預(yù)先固定劃分為DTR 和RTR 內(nèi)存,應(yīng)用安裝將在固定的DTR 和RTR 空間內(nèi)進(jìn)行申請(qǐng)分配,DTR 和RTR內(nèi)存類(lèi)型不可混合使用。現(xiàn)有SIM 內(nèi)存管理方法,當(dāng)應(yīng)用實(shí)際DTR 大于預(yù)先固定設(shè)置DTR 時(shí),應(yīng)用被禁止安裝,限制了應(yīng)用DTR 內(nèi)存資源的使用。目前國(guó)內(nèi)具備多應(yīng)用SIM 產(chǎn)品研發(fā)能力的主流卡商有東信和平、恒寶、華弘、握奇、天喻等,各個(gè)廠(chǎng)家研發(fā)的SIM商用產(chǎn)品可用于行業(yè)應(yīng)用加載運(yùn)行使用的待分配RAM 剩余空間為15~18 KB。
本文遵循JAVACARD 國(guó)際標(biāo)準(zhǔn)對(duì)DTR 與RTR 內(nèi)存類(lèi)型的管理原則:DTR 內(nèi)存在各個(gè)應(yīng)用間可共享,應(yīng)用去選擇后進(jìn)行內(nèi)存釋放;RTR 內(nèi)存類(lèi)型分配即占用,不可在應(yīng)用間共享,應(yīng)用刪除后則釋放內(nèi)存。
SIM 卡芯片物理內(nèi)存分為基礎(chǔ)功能層內(nèi)存和應(yīng)用層內(nèi)存。基礎(chǔ)功能層內(nèi)存是分配給基本通信能力、JAVACARD、GP 管理架構(gòu)使用的固定物理內(nèi)存,在SIM 卡開(kāi)發(fā)過(guò)程中被固定分配,不可釋放供后下載應(yīng)用使用;應(yīng)用層內(nèi)存即SIM卡的剩余內(nèi)存空間,只提供給應(yīng)用下載使用。
應(yīng)用層內(nèi)存空間分為邏輯通道固定分配內(nèi)存空間和當(dāng)前待分配內(nèi)存空間。固定分配內(nèi)存空間標(biāo)記為N×Dc,N表示SIM 支持的邏輯通道數(shù)量,Dc表示每個(gè)邏輯通道固定獨(dú)立分配的DTR,每個(gè)邏輯通道間獨(dú)立使用Dc字節(jié)DTR,不共享。當(dāng)前待分配內(nèi)存空間標(biāo)記為M,可作為DTR 和RTR 使用,不預(yù)設(shè)置其內(nèi)存類(lèi)型,根據(jù)應(yīng)用安裝參數(shù)進(jìn)行內(nèi)存類(lèi)型設(shè)置和內(nèi)存數(shù)量分配。JAVACARD SIM 內(nèi)存分配管理架構(gòu)如圖1所示。
圖1 JAVACARD SIM 內(nèi)存管理架構(gòu)
為便于JAVACARD SIM 內(nèi)存管理,根據(jù)GP 國(guó)際標(biāo)準(zhǔn),定義如下應(yīng)用內(nèi)存管理參數(shù):C7表示應(yīng)用可使用最大RTR 內(nèi)存空間;D7表示至少為應(yīng)用固定預(yù)留的RTR內(nèi)存空間;R表示應(yīng)用安裝實(shí)際使用的RTR空間;D表示應(yīng)用安裝實(shí)際使用的DTR空間。
JAVACARD SIM 應(yīng)用層M+N×Dc內(nèi)存空間,在應(yīng)用安裝、應(yīng)用選擇、應(yīng)用刪除等管理流程中,按如下原則進(jìn)行內(nèi)存申請(qǐng)釋放管理。
a)當(dāng)前待分配M字節(jié)內(nèi)存空間管理原則,分配前不預(yù)設(shè)置DTR 和RTR 類(lèi)型,根據(jù)內(nèi)存分配請(qǐng)求進(jìn)行DTR 和RTR 類(lèi)型分配。RTR 分配即被占用不可共享、應(yīng)用刪除后該應(yīng)用占用的RTR 釋放,RTR 分配后1∶1實(shí)際占用物理內(nèi)存;DTR 分配后可共享,應(yīng)用去選擇后該應(yīng)用的DTR 被釋放,多段DTR 內(nèi)存可臨時(shí)共享占用相同物理內(nèi)存。
b)獲取SIM 當(dāng)前剩余空間原則,SIM 在應(yīng)用安裝前可使用GP 指令獲取SIM 當(dāng)前可使用的剩余內(nèi)存空間,獲取SIM 當(dāng)前可使用的RTR 空間為M,獲取當(dāng)前SIM可使用DTR空間為Dc+M。
c)帶C7/D7安裝參數(shù)的應(yīng)用安裝內(nèi)存申請(qǐng)管理原則,應(yīng)用安裝優(yōu)先分配RTR 內(nèi)存,當(dāng)(D7≤M)&(D<MD7+Dc)條件成立時(shí),允許進(jìn)行應(yīng)用安裝,否則應(yīng)用安裝失敗。安裝X個(gè)相同應(yīng)用時(shí),當(dāng)(M≥D7×X)&(M+Dc-D7×X≥D)&(D7≤M),第X個(gè)應(yīng)用允許安裝成功,X為正整數(shù)。
d)不帶C7/D7安裝參數(shù)的應(yīng)用安裝內(nèi)存申請(qǐng)管理原則,應(yīng)用安裝優(yōu)先分配RTR 內(nèi)存,當(dāng)(R<M)&(D<MR+Dc)條件成立時(shí),允許進(jìn)行應(yīng)用安裝,否則應(yīng)用安裝失敗。安裝X個(gè)相同應(yīng)用時(shí),當(dāng)(M≥R×X)&(M+Dc-R×X≥D)&(R≤M),第X個(gè)應(yīng)用允許安裝成功,X為正整數(shù)。
e)應(yīng)用調(diào)用API 獲取應(yīng)用可使用的內(nèi)存空間管理原則。當(dāng)應(yīng)用不帶C7/D7參數(shù)時(shí),應(yīng)用可使用的內(nèi)存空間為當(dāng)前SIM 待分配空間M,RTR 為M,DTR 為M+Dc-D。當(dāng)應(yīng)用帶C7/D7參數(shù)時(shí)候,當(dāng)C7-D7>M,應(yīng)用可使用的RTR 為M,當(dāng)C7-D7≤M時(shí)候,應(yīng)用可使用的RTR為C7-D7;DTR為M+Dc-D。
f)帶安裝參數(shù)C7/D7的應(yīng)用刪除內(nèi)存管理原則,刪除前SIM 當(dāng)前待分配內(nèi)存空間為M,刪除后SIM 當(dāng)前待分配內(nèi)存空間為D7+M,刪除后可使用的RTR 為D7+M,刪除后可使用的DTR為D7+M+Dc。
g)不帶安裝參數(shù)C7/D7的應(yīng)用刪除內(nèi)存管理原則,刪除前SIM 當(dāng)前待分配內(nèi)存空間為M,刪除后SIM 當(dāng)前待分配內(nèi)存空間為R+M,刪除后可使用的RTR 為R+M,刪除后可使用的DTR為R+M+Dc。
h)應(yīng)用選擇DTR 內(nèi)存溢出沖突管理原則,SIM 卡支持n個(gè)邏輯通道同時(shí)打開(kāi)n個(gè)應(yīng)用,每次在邏輯通道選擇應(yīng)用應(yīng)按如下規(guī)則進(jìn)行內(nèi)存溢出沖突判斷:
(a)當(dāng)SUM(D1+D2…DX)>M+X×Dc,X≤n,DTR 內(nèi)存溢出,SIM 應(yīng)禁止當(dāng)前在第X邏輯通道上選擇DX應(yīng)用,需等待其余邏輯通道上的DTR 內(nèi)存釋放后再進(jìn)行選擇。
(b)在支持X個(gè)邏輯通道的SIM 上,不會(huì)產(chǎn)生內(nèi)存溢出沖突的DTR 最大平均值為M/X+Dc;當(dāng)SIM 卡全部安裝只要求DTR 的應(yīng)用時(shí),DTR≤M/X+Dc時(shí),不會(huì)產(chǎn)生DTR 內(nèi)存溢出;當(dāng)應(yīng)用帶RTR 和DTR、且DTR≤Dc時(shí),不會(huì)產(chǎn)生內(nèi)存溢出沖突。
假設(shè)JAVACARD SIM 應(yīng)用層內(nèi)存空間為16 KB,SIM 支持4 個(gè)邏輯通道,每個(gè)邏輯通道固定分配1 KB DTR 共4×1 KB DTR,剩余12 KB 為當(dāng)前待分配內(nèi)存空間,可根據(jù)需要作為DTR或RTR內(nèi)存類(lèi)型分配使用。
a)分別安裝配置C7/D7參數(shù)的應(yīng)用APP-A、APPB 后SIM 內(nèi)存狀態(tài)如表1所示。APP-A 應(yīng)用:C7=25,D7=2,R=1,D=2。APP-B 應(yīng)用:C7=10,D7=2,R=1,D=2。API 方式獲取應(yīng)用可用空間:C7-D7>M_AF,RTR_API=M_AF;C7-D7≤M_AF,RTR_API=C7-D7。
表1 安裝APP-A、APP-B應(yīng)用后SIM剩余內(nèi)存狀態(tài)
b)分別安裝不配置C7/D7參數(shù)的應(yīng)用APP-C、APP-D、E、F 后SIM 內(nèi)存狀態(tài)如表2 所示。APP-C 應(yīng)用:C7=0,D7=0,R=1,D=2。APP-D應(yīng)用:C7=0,D7=0,R=0,D=2。
表2 安裝APP-C、APP-D應(yīng)用后SIM剩余內(nèi)存狀態(tài)
c)累計(jì)可安裝APP-A 的數(shù)量與內(nèi)存溢出沖突實(shí)例如表3 所示。應(yīng)用APP-A:C7=25,D7=2,R=1,D=2;根據(jù)安裝成功條件(M≥D7×X)&(M+Dc-D7×X≥D)&(D7≤M),即(12≥2X)&(12+1-2X≥2),可得X最大為5,可安裝5 個(gè)APP-A 應(yīng)用,第6 個(gè)應(yīng)用安裝失敗。采用API方式獲取應(yīng)用可用空間:C7-D7>M_AF,RTR_API=M_AF;C7-D7≤M_AF,RTR_API=C7-D7。DTR 內(nèi)存溢出計(jì)算:SUM(D1+D2+…+DX+DX)>M+X×Dc,安裝完第5 個(gè)應(yīng)用后當(dāng)前待分配內(nèi)存空間為2,2×X>2+1×X,當(dāng)X>2時(shí),產(chǎn)生DTR 內(nèi)存溢出,SIM 卡只能在2 個(gè)邏輯通道上同時(shí)選擇2個(gè)應(yīng)用,在第3個(gè)邏輯通道上打開(kāi)第3個(gè)應(yīng)用時(shí)DTR內(nèi)存溢出,應(yīng)禁止打開(kāi)。
表3 累計(jì)安裝多個(gè)APP-A應(yīng)用SIM內(nèi)存狀態(tài)變化
d)刪除SIM 卡內(nèi)多個(gè)APP-A 應(yīng)用后,SIM 內(nèi)存狀態(tài)變化如表4 所示,應(yīng)用APP-A:C7=25,D7=2,R=1,D=2;初始條件:SIM 已安裝5 個(gè)APP-A;當(dāng)前SIM 待分配內(nèi)存空間為2。
表4 刪除APP-A應(yīng)用SIM內(nèi)存狀態(tài)
本文在JAVACARD 國(guó)際標(biāo)準(zhǔn)RTR 和DTR 內(nèi)存類(lèi)型管理原則基礎(chǔ)上,對(duì)SIM 應(yīng)用層待分配內(nèi)存空間進(jìn)行優(yōu)化管理,對(duì)待分配內(nèi)存空間不預(yù)設(shè)置分配內(nèi)存類(lèi)型,待分配空間可作為RTR 和DTR 混合使用,應(yīng)用刪除后釋放回收的內(nèi)存空間可作為RTR 和DTR 混合使用。本文結(jié)合應(yīng)用安裝、應(yīng)用選擇、應(yīng)用刪除等流程,定義了SIM 應(yīng)用層內(nèi)存空間管理原則、RTR 和DTR 內(nèi)存類(lèi)型管理原則、應(yīng)用安裝內(nèi)存申請(qǐng)管理規(guī)則、應(yīng)用刪除內(nèi)存回收管理原則、應(yīng)用選擇內(nèi)存溢出沖突管理原則和應(yīng)用開(kāi)發(fā)安裝內(nèi)存類(lèi)型推薦原則。本文定義的內(nèi)存管理方法具有如下優(yōu)點(diǎn):可指導(dǎo)SIM 卡外實(shí)體在應(yīng)用開(kāi)發(fā)階段盡可能使用DTR 內(nèi)存類(lèi)型,少使用或者不使用RTR 內(nèi)存類(lèi)型,當(dāng)全部安裝只使用DTR 內(nèi)存類(lèi)型應(yīng)用時(shí),DTR≤M/N+Dc時(shí),可安裝無(wú)數(shù)個(gè)應(yīng)用,且不產(chǎn)生內(nèi)存溢出沖突;待分配內(nèi)存空間不預(yù)設(shè)置內(nèi)存類(lèi)型,可廣泛應(yīng)用于各種應(yīng)用類(lèi)型的安裝,避免傳統(tǒng)方法由于DTR>Dc時(shí)應(yīng)用無(wú)法安裝的風(fēng)險(xiǎn),本文可安裝的應(yīng)用DTR 最大值為M+Dc;指導(dǎo)SIM 應(yīng)用管理平臺(tái)合理使用D7參數(shù),應(yīng)盡可能不用D7安裝參數(shù),避免過(guò)度占用RTR 內(nèi)存、造成內(nèi)存資源浪費(fèi);應(yīng)用刪除釋放的RTR 內(nèi)存,可回收作為DTR 或RTR 使用,提升了內(nèi)存回收管理的靈活性,有利于后續(xù)應(yīng)用的安裝使用。遵循本文定義的內(nèi)存管理原則,可最大程度提升SIM物理內(nèi)存利用率,裝載更多行業(yè)應(yīng)用。