網(wǎng)絡(luò)安全攻防:Android系統(tǒng)安全之安全機(jī)制
Android是一種基于Linux的、自由的、開(kāi)源的操作系統(tǒng)。它主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟開(kāi)發(fā)。Android系統(tǒng)架構(gòu)可以分為4層結(jié)構(gòu),由上至下分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層以及內(nèi)核層,如圖1所示。
圖1 Android系統(tǒng)結(jié)構(gòu)
Android應(yīng)用層允許開(kāi)發(fā)者無(wú)須修改底層代碼就能對(duì)設(shè)備的功能進(jìn)行拓展,Android的應(yīng)用程序框架層為開(kāi)發(fā)者提供了大量的API來(lái)訪問(wèn)Android的設(shè)備。
Android 應(yīng)用和Android 框架都是用 Java 語(yǔ)言開(kāi)發(fā)的,并運(yùn)行在 DalvikVM 中運(yùn)行。DalvikVM的作用主要就是為操作系統(tǒng)底層提供一個(gè)高效的抽象層。DalvikVM是一種基于寄存器的虛擬機(jī),能夠解釋執(zhí)行Dalvik可執(zhí)行格式DEX的字節(jié)碼,Android 應(yīng)用和Android 框架都是用 Java 語(yǔ)言開(kāi)發(fā)的,并運(yùn)行在 DalvikVM 中運(yùn)行。DalvikVM的作用主要就是為操作系統(tǒng)底層提供一個(gè)高效的抽象層。DalvikVM是一種基于寄存器的虛擬機(jī),能夠解釋執(zhí)行Dalvik可執(zhí)行格式DEX的字節(jié)碼,
Android 將安全設(shè)計(jì)貫穿系統(tǒng)架構(gòu)的各個(gè)層面,覆蓋系統(tǒng)內(nèi)核、虛擬機(jī)、應(yīng)用程序框架層以及應(yīng)用層各個(gè)環(huán)節(jié),力求在開(kāi)放的同時(shí),也能保護(hù)用戶的數(shù)據(jù)、應(yīng)用程序和設(shè)備安全。
1. Android進(jìn)程沙箱隔離機(jī)制
進(jìn)程沙箱隔離機(jī)制,使Android應(yīng)用程序在安裝時(shí)被賦予獨(dú)特的用戶標(biāo)識(shí)(UID),并永久保持。應(yīng)用程序及其運(yùn)行的Dalvik虛擬機(jī)運(yùn)行在獨(dú)立的Linux進(jìn)程空間,與其他應(yīng)用程序完全隔離,如圖2所示。
圖2 Android進(jìn)程沙箱隔離機(jī)制
在特殊情況下,進(jìn)程間還可以存在相互信任關(guān)系。如源自同一開(kāi)發(fā)者或同一開(kāi)發(fā)機(jī)構(gòu)的應(yīng)用程序,通過(guò)Android提供的共享UID(Shared UserId)機(jī)制,使具備信任關(guān)系的應(yīng)用程序可以運(yùn)行在同一進(jìn)程空間。
2. 應(yīng)用程序簽名機(jī)制
規(guī)定 APK 文件必須被開(kāi)發(fā)者進(jìn)行數(shù)字簽名,以便標(biāo)識(shí)應(yīng)用程序作者和在應(yīng)用程序之間的信任關(guān)系。在安裝應(yīng)用程序APK時(shí),系統(tǒng)安裝程序首先檢查APK是否被簽名,有簽名才能安裝。當(dāng)應(yīng)用程序升級(jí)時(shí),需要檢查新版應(yīng)用的數(shù)字簽名與已安裝的應(yīng)用程序的簽名是否相同,否則,會(huì)被當(dāng)作一個(gè)新的應(yīng)用程序。Android 開(kāi)發(fā)者有可能把安裝包命名為相同的名字,通過(guò)不同的簽名可以把它們區(qū)分開(kāi)來(lái),也保證簽名不同的安裝包不被替換,同時(shí)防止惡意軟件替換安裝的應(yīng)用。
3. 權(quán)限聲明機(jī)制
要想在對(duì)象上進(jìn)行操作,就需要把權(quán)限和此對(duì)象的操作進(jìn)行綁定。不同級(jí)別要求應(yīng)用程序行使權(quán)限的認(rèn)證方式也不一樣,Normal級(jí)申請(qǐng)就可以使用,Dangerous級(jí)需要安裝時(shí)由用戶確認(rèn),Signature和SignatureOrSystem級(jí)則必須是系統(tǒng)用戶才可用。
4. 進(jìn)程通信機(jī)制
基于共享內(nèi)存的 Binder 實(shí)現(xiàn),提供輕量級(jí)的遠(yuǎn)程進(jìn)程調(diào)用(RPC)。通過(guò)接口描述語(yǔ)言(AIDL)定義接口與交換數(shù)據(jù)的類(lèi)型,確保進(jìn)程間通信的數(shù)據(jù)不會(huì)溢出越界,如圖3所示。
圖3 進(jìn)程通信機(jī)制
5. 內(nèi)存管理機(jī)制
基于Linux的低內(nèi)存管理機(jī)制,設(shè)計(jì)實(shí)現(xiàn)了獨(dú)特的LMK,將進(jìn)程重要性分級(jí)、分組,當(dāng)內(nèi)存不足時(shí),自動(dòng)清理級(jí)別進(jìn)程所占用的內(nèi)存空間。同時(shí),引入的 Ashmem 內(nèi)存機(jī)制,使Android具備清理不再使用共享內(nèi)存區(qū)域的能力。
正是因?yàn)锳ndroid采用多層架構(gòu),在保護(hù)信息安全的同時(shí),也保證開(kāi)放平臺(tái)的靈活性。