未來(lái)的Android會(huì)發(fā)展成什么樣子?Android發(fā)展安全是重點(diǎn)。Android安全機(jī)制是什么?Android安全培訓(xùn)課程學(xué)什么?這里華清遠(yuǎn)見(jiàn)Android培訓(xùn)技術(shù)專家為朋友們做了總結(jié),Android系統(tǒng)是基于Linux內(nèi)核開發(fā)的,因此,Android系統(tǒng)不僅保留和繼承了Linux操作系統(tǒng)的安全機(jī)制,而且其系統(tǒng)架構(gòu)的各個(gè)層次都有獨(dú)特的安全特性,我們來(lái)具體看一下。
Android安全機(jī)制簡(jiǎn)介,Android安全培訓(xùn)課程學(xué)什么?
1. Linux內(nèi)核層安全機(jī)制
Android的Linux內(nèi)核包含了強(qiáng)制訪問(wèn)控制機(jī)制和自主訪問(wèn)控制機(jī)制。強(qiáng)制訪問(wèn)控制機(jī)制由Linux安全模塊來(lái)實(shí)現(xiàn),但Google出于某種原因,并沒(méi)有將LSM編譯進(jìn)Android內(nèi)核。自主訪問(wèn)控制機(jī)制通常由文件訪問(wèn)控制來(lái)實(shí)現(xiàn),Linux文件系統(tǒng)的權(quán)限控制是由user、 group、other與讀(r) 、寫(w) 、執(zhí)行(x)的不同組合來(lái)實(shí)現(xiàn)的。這樣,每個(gè)文件都有三個(gè)基本權(quán)限集,它們的組合可以容許、限制、拒絕用戶、用戶組和其他用戶的訪問(wèn)。通常,只有uid是 “system”或“root”用戶才擁有Android系統(tǒng)文件的訪問(wèn)權(quán)限,而應(yīng)用程序只有通過(guò)申請(qǐng)Android權(quán)限才能實(shí)現(xiàn)對(duì)相應(yīng)文件的訪問(wèn),也正因?yàn)榇,Android使用內(nèi)核層Linux的自主訪問(wèn)控制機(jī)制和運(yùn)行時(shí)的Dalvik虛擬機(jī)來(lái)實(shí)現(xiàn)Android的“沙箱”機(jī)制。
2. Android的“沙箱”機(jī)制
Android“沙箱”的本質(zhì)是為了實(shí)現(xiàn)不同應(yīng)用程序和進(jìn)程之間的互相隔離,即在默認(rèn)情況下,應(yīng)用程序沒(méi)有權(quán)限訪問(wèn)系統(tǒng)資源或其它應(yīng)用程序的資源。每個(gè) APP和系統(tǒng)進(jìn)程都被分配唯一并且固定的User Id,這個(gè)uid與內(nèi)核層進(jìn)程的uid對(duì)應(yīng)。每個(gè)APP在各自獨(dú)立的Dalvik虛擬機(jī)中運(yùn)行,擁有獨(dú)立的地址空間和資源。運(yùn)行于Dalvik虛擬機(jī)中的進(jìn)程必須依托內(nèi)核層Linux進(jìn)程而存在,因此Android使用Dalvik虛擬機(jī)和Linux的文件訪問(wèn)控制來(lái)實(shí)現(xiàn)沙箱機(jī)制,任何應(yīng)用程序如果想要訪問(wèn)系統(tǒng)資源或者其它應(yīng)用程序的資源必須在自己的manifest[23]文件中進(jìn)行聲明權(quán)限或者共享uid。
3. Android的權(quán)限檢查機(jī)制
Android是一個(gè)“權(quán)限分離”的系統(tǒng),任何一個(gè)應(yīng)用程序在使用Android受限資源(網(wǎng)絡(luò)、電話、短信、藍(lán)牙、通訊錄、SdCard等)之前都必須以XML文件的形式事先向Android系統(tǒng)提出申請(qǐng),等待Android系統(tǒng)批準(zhǔn)后應(yīng)用程序方可使用相應(yīng)的資源,權(quán)限與Java的API是多對(duì)多的映射關(guān)系。
當(dāng)Android應(yīng)用程序獲得相應(yīng)權(quán)限后,它就能通過(guò)調(diào)用API來(lái)完成相應(yīng)的功能。一個(gè)API調(diào)用可被分為三個(gè)步驟[3]:第一,應(yīng)用程序獲取相應(yīng)權(quán)限后會(huì)調(diào)用公共庫(kù)中的API;第二,公共API會(huì)調(diào)用一個(gè)叫API代理的接口(RPC stub);第三,RPCstub把請(qǐng)求以IPC綁定的形式傳遞給系統(tǒng)服務(wù),由系統(tǒng)服務(wù)進(jìn)程完成具體的功能,權(quán)限檢查恰恰發(fā)生在對(duì)系統(tǒng)服務(wù)和系統(tǒng)進(jìn)程中。權(quán)限檢查不僅包括安裝時(shí)的靜態(tài)檢查,還包括APP運(yùn)行時(shí)的動(dòng)態(tài)檢查。動(dòng)態(tài)檢查是指APP在運(yùn)行期間調(diào)用的系統(tǒng)服務(wù)或系統(tǒng)組件需要經(jīng)過(guò)授權(quán)檢查。動(dòng)態(tài)檢查并不發(fā)生在APP本身,而是發(fā)生在系統(tǒng)服務(wù)或系統(tǒng)組件的進(jìn)程中。在Android4.0版本之前,Android的權(quán)限檢查機(jī)制是可以被繞過(guò)的,這是因?yàn)闄?quán)限檢查機(jī)制存在漏洞,即調(diào)用者不需要具有被調(diào)用者的相關(guān)權(quán)限,Android4.0 版本不僅使用函數(shù)“checkUidPermission”來(lái)決定權(quán)限是否應(yīng)授予相應(yīng)的進(jìn)程而且使用了函數(shù) “checkCallingPermission”來(lái)檢查調(diào)用者是否有相應(yīng)的權(quán)限。因此,Android權(quán)限機(jī)制一般不能被繞過(guò),但Android權(quán)限機(jī)制有些不容忽視的缺陷,具體表現(xiàn)在如下幾個(gè)方面:
第一,權(quán)限一經(jīng)授予應(yīng)用程序,那么此權(quán)限在該應(yīng)用程序生命期間都將有效,用戶無(wú)法剝奪權(quán)限;
第二,權(quán)限機(jī)制缺乏靈活性,要么全都批準(zhǔn)應(yīng)用程序所要求的所有權(quán)限,要么拒絕應(yīng)用程序的安裝;
第三,權(quán)限機(jī)制安全性不夠,不能阻止惡意軟件通過(guò)JNI技術(shù)直接調(diào)用C庫(kù),從而獲取系統(tǒng)服務(wù)。
4. Android的數(shù)字簽名機(jī)制
所有安裝到Android系統(tǒng)中的應(yīng)用程序都必須擁有一個(gè)數(shù)字證書[4],此數(shù)字證書用于標(biāo)識(shí)應(yīng)用程序的作者和應(yīng)用程序之間的信任關(guān)系。 Android系統(tǒng)不會(huì)安裝一個(gè)沒(méi)有數(shù)字證書的應(yīng)用程序,如果一個(gè)權(quán)限的保護(hù)級(jí)別為signature,只有當(dāng)應(yīng)用程序所用數(shù)字簽名與聲明此權(quán)限的應(yīng)用程序所用數(shù)字簽名相同時(shí),Android系統(tǒng)才會(huì)授權(quán)。如果一個(gè)權(quán)限的保護(hù)級(jí)別為signatureOrSystem,Android系統(tǒng)會(huì)將該權(quán)限授予具有相同數(shù)字簽名的應(yīng)用程序或Android包類。
關(guān)于Android安全機(jī)制和Android安全培訓(xùn)課程學(xué)什么的內(nèi)容先給大家介紹到這里。
熱點(diǎn)新聞
課程問(wèn)答