• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Android客戶端訪問(wèn)控制技術(shù)研究

    2014-01-01 00:00:00黃健黃健劉兆元梁棟李俊磊

    摘 要:近年來(lái),隨著Android手機(jī)技術(shù)的日益進(jìn)步,客戶端上的應(yīng)用程序可以通過(guò)相對(duì)應(yīng)的開(kāi)放式API訪問(wèn)手機(jī)卡片上的應(yīng)用程序。結(jié)合Android核心技術(shù)與訪問(wèn)控制安全等方面因素,介紹了最新訪問(wèn)控制實(shí)現(xiàn)方式與規(guī)范,并提出一種手機(jī)卡片中訪問(wèn)控制規(guī)則的實(shí)現(xiàn)方案以及應(yīng)用示例。

    關(guān)鍵詞:Android;開(kāi)放式API;訪問(wèn)控制

    中圖分類號(hào):TP393.09

    隨著Android技術(shù)的不斷發(fā)展,智能手機(jī)逐漸成為人們的日常消費(fèi)品,智能手機(jī)的用戶與日俱增。除了基本的通話功能以外,智能手機(jī)還具備PDA(personal digital assistant)的主要功能,尤其包括個(gè)人信息管理以及無(wú)線接入互聯(lián)網(wǎng)的功能,智能手機(jī)已經(jīng)成為互聯(lián)網(wǎng)中新型的終端節(jié)點(diǎn)。目前智能手機(jī)的主流操作系統(tǒng)主要有Android和IOS。

    惡意程序威脅著計(jì)算機(jī)系統(tǒng)的安全,攻擊者利用計(jì)算系統(tǒng)的漏洞在目標(biāo)計(jì)算機(jī)上安裝惡意程序,借此來(lái)竊取被攻擊者的敏感信息。智能手機(jī)通過(guò)在無(wú)線接入設(shè)備進(jìn)入互聯(lián)網(wǎng)的同時(shí),也成為惡意程序新的攻擊對(duì)象。智能手機(jī)客戶端訪問(wèn)手機(jī)卡或SD卡的同時(shí),也兼?zhèn)渲鴲阂夤艋虿《靖腥镜奈kU(xiǎn)。因此,如何控制Android手機(jī)客戶端對(duì)手機(jī)卡或SD卡的訪問(wèn),已成為智能終端必須解決的重要目標(biāo)。

    針對(duì)上述問(wèn)題,本文以Android手機(jī)為平臺(tái),介紹了最新中國(guó)電信集團(tuán)公司提出的訪問(wèn)控制企業(yè)標(biāo)準(zhǔn),即訪問(wèn)控制實(shí)現(xiàn)方式與規(guī)范,并在此基礎(chǔ)上,提出一種手機(jī)卡片中訪問(wèn)控制規(guī)則的實(shí)現(xiàn)方案。

    1 相關(guān)研究

    對(duì)于Android手機(jī)上的一個(gè)客戶端應(yīng)用而言,可以通過(guò)手機(jī)底層的一組開(kāi)放式API[1]訪問(wèn)手機(jī)卡中的一個(gè)客戶端應(yīng)用,手機(jī)卡中會(huì)存儲(chǔ)是否允許手機(jī)客戶端應(yīng)用訪問(wèn)卡片應(yīng)用的一個(gè)規(guī)則,這個(gè)訪問(wèn)規(guī)則的實(shí)現(xiàn)方式規(guī)范在中國(guó)電信集團(tuán)公司企業(yè)標(biāo)準(zhǔn)TSM平臺(tái)技術(shù)要求[2]中已經(jīng)作出了明確規(guī)范,現(xiàn)對(duì)最新訪問(wèn)控制方面的技術(shù)要求進(jìn)行介紹。

    1.1 體系結(jié)構(gòu)

    技術(shù)要求中定義了SE訪問(wèn)控制的通用機(jī)制,對(duì)于任何SE都可用(包括嵌入式SE、有安全控制器的microSD卡、UICC卡等)。它支持多個(gè)應(yīng)用方的應(yīng)用程序管理,并允許每個(gè)應(yīng)用方為其加載到卡內(nèi)的應(yīng)用設(shè)置訪問(wèn)規(guī)則。

    SE訪問(wèn)規(guī)則數(shù)據(jù)存儲(chǔ)在SE里,供設(shè)備上的訪問(wèn)控制執(zhí)行器使用。訪問(wèn)控制執(zhí)行器將從SE里取回訪問(wèn)規(guī)則,然后運(yùn)用這些規(guī)則來(lái)控制應(yīng)用客戶端對(duì)SE應(yīng)用的訪問(wèn)。本文闡述Android系統(tǒng)其中一種架構(gòu)方式。如圖1所示。

    圖1 訪問(wèn)控制體系架構(gòu)—訪問(wèn)規(guī)則僅存放主安全域中

    卡發(fā)行商為SE應(yīng)用定義了訪問(wèn)控制規(guī)則,并把這些規(guī)則提供給訪問(wèn)規(guī)則應(yīng)用主控(ARA-M)。(卡發(fā)行商可委托TSM進(jìn)行代管)。當(dāng)一個(gè)應(yīng)用客戶端試圖訪問(wèn)一個(gè)SE應(yīng)用時(shí),訪問(wèn)控制執(zhí)行器就使用ARA-M提供的設(shè)備接口從SE中取回訪問(wèn)規(guī)則。只有規(guī)則允許的情況下,才能進(jìn)行訪問(wèn)。ARA-M是一個(gè)普通的SE應(yīng)用,它能通過(guò)由GP定義的AID來(lái)選擇。ARA-M是唯一的,盡管訪問(wèn)規(guī)則數(shù)據(jù)可能被存儲(chǔ)在SE的不同位置,在收到來(lái)自設(shè)備上的訪問(wèn)控制執(zhí)行器的訪問(wèn)請(qǐng)求后,ARA-M負(fù)責(zé)取回所有有效的訪問(wèn)規(guī)則。

    1.2 訪問(wèn)控制規(guī)則

    存儲(chǔ)在SE中的每個(gè)訪問(wèn)控制規(guī)則通過(guò)以下方式進(jìn)行聲明:①對(duì)于一個(gè)指定的SE應(yīng)用,或一個(gè)指定SE中的所有其他應(yīng)用;②一個(gè)指定的應(yīng)用客戶端,或所有其他應(yīng)用客戶端有權(quán)訪問(wèn):所有的APDU命令,沒(méi)有任何APDU命令或指定的APDU命令以及所有的NFC事件或沒(méi)有任何NFC事件。

    因?yàn)樵L問(wèn)控制規(guī)則可能適用于一個(gè)或多個(gè)應(yīng)用程序,并且不同的規(guī)則可能存放在SE的不同位置(例如在ARA-M和ARA-C),因此訪問(wèn)控制規(guī)則間可能會(huì)發(fā)生重疊或沖突,所以必須定義一個(gè)方法用于解決沖突?,F(xiàn)簡(jiǎn)略說(shuō)明訪問(wèn)控制規(guī)則沖突解決方案。

    一個(gè)規(guī)則的優(yōu)先權(quán)不是基于它的讀取順序。

    管理規(guī)則沖突的策略基于以下三個(gè)基本原則(按順序):

    (1)特定規(guī)則優(yōu)先。特定規(guī)則是指顯式聲明了以下內(nèi)容的規(guī)則:第一是通過(guò)AID或者隱式選擇應(yīng)用方式指定SE應(yīng)用;第二是通過(guò)聲明用于簽署應(yīng)用程序的數(shù)字證書(shū)指定一個(gè)應(yīng)用客戶端。如表1給出了規(guī)則優(yōu)先級(jí)從高到低排列的順序。

    表1 訪問(wèn)控制標(biāo)識(shí)規(guī)則

    SE應(yīng)用是否被顯式聲明應(yīng)用客戶端是否被顯式聲明優(yōu)先級(jí)

    是是最高

    是否高

    否是低

    否否最低

    (2)與位于證書(shū)鏈末端的數(shù)字證書(shū)相關(guān)的規(guī)則優(yōu)先。如果應(yīng)用客戶端是使用一個(gè)證書(shū)鏈里的證書(shū)來(lái)簽名的,在查找最為特定規(guī)則的過(guò)程中,首先查找用于簽署應(yīng)用程序的證書(shū)(證書(shū)鏈最末端的證書(shū))是否定義了相關(guān)規(guī)則;如無(wú)定義,則再查找證書(shū)鏈上的上一級(jí)證書(shū)的規(guī)則定義,以此類推,直到找到一個(gè)合適的證書(shū)。如果整個(gè)證書(shū)鏈中都未找到定義了相關(guān)規(guī)則的證書(shū),那么才會(huì)進(jìn)入下一個(gè)更低優(yōu)先級(jí)的查找。

    (3)限制性規(guī)則優(yōu)先。限制性越強(qiáng)的規(guī)則優(yōu)先級(jí)越高。主要包括以下幾點(diǎn):①限制性最強(qiáng)的規(guī)則禁止應(yīng)用客戶端訪問(wèn)SE應(yīng)用;②中等限制規(guī)則只允許應(yīng)用客戶端訪問(wèn)一些特定的APDU命令;③限制性最弱的規(guī)則總是允許應(yīng)用客戶端訪問(wèn)SE應(yīng)用[3]。

    如前面所描述的那樣,最特定的規(guī)則比通用規(guī)則具有優(yōu)先權(quán)。這種嚴(yán)格的優(yōu)先級(jí)將由訪問(wèn)控制執(zhí)行器來(lái)執(zhí)行。因此,訪問(wèn)控制執(zhí)行器首先尋找應(yīng)用在特定SE應(yīng)用和特定應(yīng)用客戶端的規(guī)則,如果沒(méi)有找到特定的規(guī)則,再去查找通用規(guī)則。如果一個(gè)或多個(gè)特定規(guī)則應(yīng)用到一個(gè)訪問(wèn)請(qǐng)求,則優(yōu)先級(jí)高的規(guī)則將被使用,而優(yōu)先級(jí)低的規(guī)則將被忽略。

    如果有多個(gè)規(guī)則適用于同一個(gè)目標(biāo)SE應(yīng)用,并且具有相同的優(yōu)先級(jí),這些規(guī)則將被聚合,具有更強(qiáng)限制性的規(guī)則優(yōu)先于更寬松的規(guī)則。如果兩個(gè)規(guī)則有具有相同的限制等級(jí),兩個(gè)規(guī)則的數(shù)據(jù)(NFC事件處理權(quán)限、APDU命令過(guò)濾)將被合并,并且都會(huì)被運(yùn)用。如表2中總結(jié)了以規(guī)則聚合的方式解決訪問(wèn)控制規(guī)則沖突問(wèn)題。

    表2 訪問(wèn)控制規(guī)則沖突解決方案組合

    沖突規(guī)則解決方案R1

    AllAID

    NeverFilterAlwaysNeverFilterAlways

    R2AllNeverR1=R2R2R2R1

    FilterR1R1+R2R2

    AlwaysR1R1R1+R2

    AIDNeverR2R1=R2R2R2

    Filter R1R1+R2R2

    Always R1R1R1=R2

    2 訪問(wèn)控制規(guī)則實(shí)現(xiàn)方案

    2.1 實(shí)現(xiàn)目標(biāo)

    在通過(guò)ARA_M應(yīng)用訪問(wèn)ARA_C應(yīng)用中的規(guī)則。ARA_M應(yīng)用屬于ISD,ARA_C應(yīng)用可以屬于ISD,也可以屬于其他SD。

    2.2 實(shí)現(xiàn)方案

    ARA_C應(yīng)用必須實(shí)現(xiàn)ARAShareble接口,ARA-M通過(guò)調(diào)用ARAShareble接口方法來(lái)獲取ARA-C的規(guī)則,ARAShareble接口定義如下(提供的是源碼):

    ARAShareble.java:

    package com.telecom.ARAShareble;

    import javacard.framework.Shareable;

    public class ARAShareble extends Shareable

    {

    public short getRules(byte[] rules,short rulesLen byte[] aramAid, short aidOffset, short aidLen);

    };

    2.3 getRules函數(shù)說(shuō)明

    函數(shù)定義源碼如下:

    public short getRules(byte[] rules,short rulesLen byte[] aramAid, short aidOffset,short aidLen);

    (1)功能描述。該接口用于為ARA-M提供獲取ARA-C所有訪問(wèn)規(guī)則的入口。通過(guò)此接口當(dāng)前ARA-C應(yīng)該輸出其中存儲(chǔ)的所有訪問(wèn)規(guī)則。輸出的訪問(wèn)規(guī)則在rules中排列,格式按照GPAC規(guī)范[4](GPD_SE_Access_Control_v1.0)中storedata命令Command-Get-AR-DO模式輸出,當(dāng)規(guī)則太長(zhǎng)不能單條輸出時(shí),ARA-M應(yīng)用應(yīng)多次調(diào)用此函數(shù)得到全部規(guī)則。Rules中采用LV結(jié)構(gòu),L表示后續(xù)V的長(zhǎng)度,V表示所有的規(guī)則;其中L<=(rulesLen-1);函數(shù)的返回值表示ARA-C剩余規(guī)則的長(zhǎng)度,如果為0表示所有規(guī)則已經(jīng)取完;ARA-C應(yīng)用需要校驗(yàn)傳入的ARA-M應(yīng)用的AID,如果不是允許的AID應(yīng)拋出SecurityException;如果rules數(shù)組越界或者aramAid數(shù)組越界,返回IndexOutOfBoundsException,ArrayIndexOutOfBoundsExc-eption等異常信息。

    (2)參數(shù)說(shuō)明。rules:用于存放規(guī)則的buffer,LV結(jié)構(gòu);rulesLen:rules buffer的可用長(zhǎng)度;aramAid:ARA-M的AID buffer;aidOffset:aramAid的起始偏移;aidLen:Aid的長(zhǎng)度。

    (3)返回值。<=0,表示成功執(zhí)行,并返回所有規(guī)則的數(shù)據(jù);>0,表示剩余規(guī)則[5]數(shù)據(jù)長(zhǎng)度。

    (4)異常信息包括以下幾種。Security Exception, IndexOu- tOfBounds Exception,Array Index out of Bounds Exception。

    (5)應(yīng)用示例。

    ARA-C.java:

    package com.telecom.arac;

    import com.telecom.ARAShareble;

    public class ARAC extends Applet

    implements MultiSelectable, ARAShareble{

    protected ARAC(byte[] bArray, short bOffset, byte bLength) {

    register(bArray, (short)(bOffset+(short)1), bArray[bOffset]);

    }

    public static void install(byte[] bArray, short bOffset, byte bLength) {

    new ARAC(bArray, bOffset, bLength);

    }

    public void process(APDU apdu) {}

    public short getRules(byte[] rules, short rulesLen byte[] aramAid, short aidOffset, short aidLen) {

    // 此處需要ARA-C應(yīng)用實(shí)現(xiàn)此方法;return 0;

    }}

    ARA-M.java:

    package com.telecom.aram;

    import com.telecom.ARAShareble;

    public class ARAM extends Applet implements MultiSelectable

    {

    protected ARAM(byte[] bArray, short bOffset, byte bLength)

    {

    register(bArray, (short)(bOffset+(short)1), bArray[bOffset]);

    }

    public static void install(byte[] bArray, short bOffset, byte bLength) {

    new ARAM(bArray, bOffset, bLength);

    }

    public void process(APDU apdu) {

    byte[] buffer = apdu.getBuffer();

    byte cla = (byte)(buffer[ISO7816.OFFSET_CLA] (byte)0xFC);

    byte ins = (byte)(buffer[ISO7816.OFFSET_INS]);

    switch (ins)

    {

    case INS_GETDATA:

    gettARACRules();

    break;

    }

    }

    void gettARACRules () {//第一步,先獲取ARAC的實(shí)例

    ARAShareble sio;

    sio=(ARAShareble)JCSystem.getAppletShareableInterfaceObject(aracAid, (byte)0);if(sio != 1)

    {

    //獲取到ARAC的實(shí)例了,可以調(diào)用其方法了

    sio. getRules (…);

    }

    }

    }

    3 結(jié)束語(yǔ)

    以Android技術(shù)為首的智能手機(jī)技術(shù)日益發(fā)展,智能手機(jī)時(shí)代已經(jīng)來(lái)臨。然而Android手機(jī)客戶端與手機(jī)卡之間訪問(wèn)控制安全問(wèn)題卻不容小覷。本文結(jié)合Android核心技術(shù)與訪問(wèn)控制安全等各方面因素,簡(jiǎn)略地介紹了最新中國(guó)電信TSM平臺(tái)技術(shù)要求中訪問(wèn)控制實(shí)現(xiàn)方式與規(guī)范,并提出一種手機(jī)卡片中訪問(wèn)控制規(guī)則的實(shí)現(xiàn)方案以及應(yīng)用示例。

    參考文獻(xiàn):

    [1]中國(guó)電信集團(tuán)公司企業(yè)標(biāo)準(zhǔn)(中國(guó)電信TSM平臺(tái)技術(shù)要求SE應(yīng)用安全下載技術(shù)要求分冊(cè))[R].

    [2]Secure Element Access Control[R].

    [3]孫曉波.淺談移動(dòng)通信終端發(fā)展趨勢(shì)[J].移動(dòng)通信,2010(21).

    [4]劉昌平,范明鈺.Android手機(jī)的輕量級(jí)訪問(wèn)控制[J].計(jì)算機(jī)應(yīng)用研究,2010(07).

    [5]劉偉,梁洪亮.移動(dòng)終端系統(tǒng)的訪問(wèn)控制框架[J].計(jì)算機(jī)科學(xué),2006(06).

    作者簡(jiǎn)介:黃?。?976-),男,工程師,畢業(yè)于廣東工業(yè)大學(xué),研究方向:計(jì)算機(jī)軟件與理論,現(xiàn)在從事通信智能卡和手機(jī)終端,安全訪問(wèn)控制研究工作;黃健文(1972-),男,工程師,畢業(yè)于武漢大學(xué),研究方向:計(jì)算機(jī)軟件與理論,現(xiàn)在從事通信智能卡和手機(jī)終端研究;劉兆元(1970-),男,工程師,畢業(yè)于華南理工大學(xué)通信與信息系統(tǒng)專業(yè),現(xiàn)在從事通信智能卡和手機(jī)終端研究,移動(dòng)行業(yè)應(yīng)用定制開(kāi)發(fā)工作;梁棟(1981-),男,工程師,畢業(yè)于成都理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),現(xiàn)在從事通信智能卡和手機(jī)終端研究,移動(dòng)行業(yè)應(yīng)用定制開(kāi)發(fā)工作;李俊磊(1987-),男,工程師,畢業(yè)于長(zhǎng)沙學(xué)院計(jì)算機(jī)科學(xué)與應(yīng)用專業(yè),現(xiàn)在從事通信智能卡和手機(jī)終端研究,移動(dòng)行業(yè)應(yīng)用定制開(kāi)發(fā)工作。

    作者單位:廣州電信研究院,廣州 510630

    泰顺县| 雷波县| 淅川县| 松潘县| 黑水县| 晋城| 南康市| 乌拉特后旗| 乌拉特前旗| 瓦房店市| 罗城| 陈巴尔虎旗| 若羌县| 祁东县| 瑞金市| 龙南县| 贡嘎县| 庆城县| 玉屏| 康定县| 井陉县| 湛江市| 福海县| 顺昌县| 海兴县| 盱眙县| 高邮市| 古交市| 莆田市| 嘉黎县| 博乐市| 措美县| 太保市| 抚宁县| 屏山县| 德州市| 纳雍县| 湖州市| 沈阳市| 筠连县| 铁岭市|