- 相關(guān)推薦
Android操作系統(tǒng)的安全機(jī)制
Android是一個(gè)開(kāi)源的移動(dòng)平臺(tái)操作系統(tǒng),占據(jù)中國(guó)智能手機(jī)80%市場(chǎng)份額,主要用于便攜式設(shè)備。作為一個(gè)運(yùn)行于實(shí)際應(yīng)用環(huán)境中的終端操作系統(tǒng),Android操作系統(tǒng)在其體系結(jié)構(gòu)設(shè)計(jì)和功能模塊設(shè)計(jì)上就將系統(tǒng)的安全性考慮之中。與此同時(shí),它又改造開(kāi)發(fā)了原有的Linux系統(tǒng)內(nèi)核和Java虛擬機(jī)。在這種前提下,Android操作系統(tǒng)在利用系統(tǒng)安全機(jī)制方面就會(huì)與原系統(tǒng)安全機(jī)制的設(shè)計(jì)目的有所不同。由于A(yíng)ndroid 平臺(tái)的開(kāi)放和脆弱性,開(kāi)發(fā)其上的隱私保護(hù)系統(tǒng)顯得非常重要,其面臨的安全威脅在所有手機(jī)操作系統(tǒng)中也是最大的。
1 Android 安全機(jī)制
Android的安全機(jī)制是在Linux安全機(jī) 制基礎(chǔ)上的發(fā)展和創(chuàng)新,是傳統(tǒng)的Linux安全機(jī)制和Android特有的安全機(jī)制的共同發(fā)展。Android安全機(jī)制中的主要出發(fā)點(diǎn)是,在默認(rèn)的情況下,應(yīng)用程序任何能夠給用戶(hù)、系統(tǒng)或者其他應(yīng)用程序帶來(lái)負(fù)面影響的操作是不可以執(zhí)行的。Android是一個(gè)支持多任務(wù)的系統(tǒng),其安全機(jī)制依托于數(shù)字簽名和權(quán)限,系統(tǒng)中的應(yīng)用程序之間一般是不可以互相訪(fǎng)問(wèn)的,每一個(gè)應(yīng)用程序都有獨(dú)立的進(jìn)程空間。
1.1用戶(hù)ID
Android系統(tǒng)是基于Linux內(nèi)核的,對(duì)應(yīng)用程序文件和系統(tǒng)文件的訪(fǎng)問(wèn)都要遵循Linux的許可機(jī)制,并將這種機(jī)制用于管理應(yīng)用程序。在A(yíng)ndroid應(yīng)用程序安裝成功后,系統(tǒng)就為其指定了一個(gè)唯一的用戶(hù)名,對(duì)應(yīng)著系統(tǒng)中唯一的UID,每個(gè)用戶(hù)可以屬于一個(gè)或者多個(gè)組。如果在應(yīng)用程序執(zhí)行期間有越軌或超越權(quán)限操作的行為時(shí),用戶(hù)將會(huì)得到Android 的警告信息。
1.2應(yīng)用程序數(shù)字簽名
數(shù)字簽名是過(guò)某種密碼運(yùn)算生成一系列符號(hào)及代碼組成電子密碼進(jìn)行簽名,來(lái)代替書(shū)寫(xiě)簽名或印章。簽名的主要作用是身份認(rèn)證、完整性驗(yàn)證和建立信任關(guān)系。
Android系統(tǒng)不會(huì)安裝沒(méi)有進(jìn)行簽名的應(yīng)用程序,所有應(yīng)用程序進(jìn)行簽名認(rèn)證是必須的,但簽名認(rèn)證是第三方證書(shū)認(rèn)證機(jī)構(gòu)可以不參與的。Android系統(tǒng)對(duì)簽名證書(shū)的過(guò)期時(shí)間檢查是在應(yīng)用程序安裝時(shí)進(jìn)行的,這就意味著如果一個(gè)應(yīng)用程序在安裝后才發(fā)現(xiàn)其簽名證書(shū)過(guò)期,就不會(huì)影響應(yīng)用程序的運(yùn)行。需要注意的是,應(yīng)用程序必須使用同一個(gè)證書(shū)進(jìn)行簽名才可以升級(jí)到新的版本,兩個(gè)應(yīng)用程序使用同一個(gè)數(shù)字簽名才可以相互授予權(quán)限來(lái)訪(fǎng)問(wèn)彼此的資源。
1.3 Permission機(jī)制
Android是一個(gè)權(quán)限分離的系統(tǒng),它利用Linux已有的權(quán)限管理機(jī)制,為每一個(gè)應(yīng)用程序分配不同的UID和GID,使不同的應(yīng)用程序之間的私有數(shù)據(jù)和訪(fǎng)問(wèn)達(dá)到隔離的目的。如果使不同的應(yīng)用程序之間的私有數(shù)據(jù)和訪(fǎng)問(wèn)達(dá)到共享,就需要聲明對(duì)應(yīng)的權(quán)限。為此,Android在原有的基礎(chǔ)上進(jìn)行了擴(kuò)展,提供了permission機(jī)制,它主要是用來(lái)對(duì)應(yīng)用程序可以執(zhí)行的某些具體操作進(jìn)行權(quán)限細(xì)分和訪(fǎng)問(wèn)控制。在manifest文件中添加一個(gè)permission標(biāo)簽,就定義一個(gè)permission。另外,Android為了對(duì)某些特定的數(shù)據(jù)塊進(jìn)行ad-hoc方式的訪(fǎng)問(wèn),還提供了per-URI permission 機(jī)制。
一個(gè)權(quán)限主要包含權(quán)限名、權(quán)限組和保護(hù)級(jí)別,若干個(gè)具體權(quán)限構(gòu)成一個(gè)權(quán)限組,權(quán)限組是根據(jù)權(quán)限的功能劃分出來(lái)的,每個(gè)權(quán)限有不同的保護(hù)級(jí)別(普通級(jí)別、危險(xiǎn)級(jí)別、簽名級(jí)別和系統(tǒng)/簽名級(jí)別四類(lèi)),不同的保護(hù)級(jí)別代表了應(yīng)用程序使用此權(quán)限時(shí)的認(rèn)證方式。
1.4 沙箱隔離
Android 引入沙箱的概念來(lái)實(shí)現(xiàn)應(yīng)用程序之間的分離,具有允許或拒絕一個(gè)應(yīng)用程序訪(fǎng)問(wèn)另一個(gè)應(yīng)用程序資源的權(quán)限。
每個(gè)應(yīng)用程序在安裝后都有一個(gè)UID號(hào),且一直不會(huì)改變。系統(tǒng)根據(jù)UID號(hào)為每個(gè)應(yīng)用程序建立一個(gè)沙箱,不同的進(jìn)程空間中運(yùn)行著不同應(yīng)用程序的代碼,且不能隨意的互訪(fǎng)彼此的進(jìn)程空間。如果兩個(gè)應(yīng)用程序的UID不同,運(yùn)行在基本沙箱進(jìn)程中的應(yīng)用程序默認(rèn)情況下是沒(méi)有被分配權(quán)限,因此它們無(wú)法交互彼此的數(shù)據(jù),此類(lèi)應(yīng)用程序要想訪(fǎng)問(wèn)系統(tǒng)文件、資源文件等變得不太可能,這種相互隔離的沙箱模式保證了數(shù)據(jù)的安全性。那么,不同的應(yīng)用之間需要共享資源該怎么辦,可以通過(guò)請(qǐng)求權(quán)限來(lái)解決,即設(shè)置應(yīng)用的sharedUserld屬性,或者是與其他受信任的應(yīng)用程序運(yùn)行在同一進(jìn)程中,從而共享對(duì)其數(shù)據(jù)資源的訪(fǎng)問(wèn)。如此一來(lái),相同用戶(hù)的應(yīng)用程序的資源和數(shù)據(jù)就如同使用應(yīng)用程序自身的資源一樣可以互相訪(fǎng)問(wèn)和使用。但是,若想兩個(gè)應(yīng)用程序分配同樣的UID,那么必須使用相同的簽名,且請(qǐng)求設(shè)置了同一個(gè)sharedUserld。
2 Android的安全隱患
Android系統(tǒng)的開(kāi)源性勢(shì)必會(huì)給我們帶來(lái)一系列的安全隱患,有Linux內(nèi)核安全漏洞造成的,有Android自身權(quán)限機(jī)制不健全造成的,也有基于硬件損傷造成的,但也正因?yàn)殚_(kāi)源性才可以讓我們有自由創(chuàng)造和發(fā)揮的空間。
1)基于硬件的問(wèn)題主要體現(xiàn)在硬件損傷、溫度過(guò)高等因素導(dǎo)致便攜設(shè)備不能工作的現(xiàn)象。由于A(yíng)ndroid系統(tǒng)過(guò)于開(kāi)放,至少在手機(jī)死機(jī)現(xiàn)象頻繁發(fā)生的問(wèn)題上扮演了重要角色。
2)在Linux內(nèi)核安全上,有一個(gè)哈希算法問(wèn)題,即當(dāng)攻擊者把經(jīng)過(guò)特殊構(gòu)造的包傳給系統(tǒng)并接收后,服務(wù)器的資源因哈希表產(chǎn)生沖突而被耗盡。哈希算法是把一組關(guān)鍵詞經(jīng)過(guò)某種哈希運(yùn)算后,把得出的相同的哈希值存儲(chǔ)到同一個(gè)地址區(qū)間,從而使哈希表變成了一個(gè)單向鏈表,插入操作的復(fù)雜度因此也變得比較大,從原來(lái)的O(n)級(jí)變?yōu)镺(n*n)級(jí),如此導(dǎo)致處理器資源被大量消耗,服務(wù)器拒絕服務(wù),也就產(chǎn)生了DoS攻擊。還有Linux內(nèi)核中的整數(shù)溢出漏洞問(wèn)題,它是由于一個(gè)正數(shù)/負(fù)數(shù)不匹配整形漏洞引起的,存在于XDR處理器例程中。當(dāng)Linux系統(tǒng)的XDR處理程序接收到經(jīng)過(guò)攻擊者精心構(gòu)造的包時(shí),包的大小被程序中的檢測(cè)語(yǔ)句錯(cuò)誤的估計(jì),致使大批的內(nèi)存不斷的從內(nèi)核中復(fù)制出來(lái),導(dǎo)致系統(tǒng)癱瘓,內(nèi)核數(shù)據(jù)遭受破壞。當(dāng)然,Linux內(nèi)核還有其他的一些問(wèn)題,此處不再敘述。
3)Android自身權(quán)限機(jī)制問(wèn)題。首先,不透明的權(quán)限問(wèn)題。用戶(hù)在安裝應(yīng)用時(shí),系統(tǒng)會(huì)把該應(yīng)用使用的權(quán)限列表以界面的方式彈出告訴用戶(hù)。但是,為什么用這些權(quán)限,用戶(hù)或許不清楚,也許根本就不了解、不關(guān)心,由于用戶(hù)要使用這個(gè)應(yīng)用所以必須安裝,從而造成不必要的損失。其次,不可分的權(quán)限集問(wèn)題。上面提到,應(yīng)用程序安裝后,系統(tǒng)已經(jīng)給出了使用的權(quán)限列表,權(quán)限的使用只限于該列表而不能超出該列表。但問(wèn)題的關(guān)鍵在于,用戶(hù)不能選中權(quán)限列表中的部分選項(xiàng),要么全選,要么不選,都是一種絕對(duì)的狀態(tài),用戶(hù)只有全選權(quán)限才能使用該應(yīng)用程序,否則只能放棄使用。最后,研發(fā)工作者在研發(fā)應(yīng)用程序的過(guò)程中,由于某種原因聲明了一些或許根本就沒(méi)有使用到的權(quán)限,那么在安裝應(yīng)用程序時(shí),也會(huì)告訴用戶(hù),從而增加了系統(tǒng)的負(fù)擔(dān)和一些不安全的因素,用戶(hù)由于擔(dān)心安全問(wèn)題而不敢隨意安裝該應(yīng)用程序。
3 結(jié)束語(yǔ)
Android 是一款非常出色的操作系統(tǒng)平臺(tái),隨著Andriod系統(tǒng)智能終端的日益推廣,Android操作系統(tǒng)的安全性越來(lái)越重要,在其快速發(fā)展中不可避免的存在不完善的地方。Android平臺(tái)的開(kāi)源造成了系統(tǒng)易被攻擊,隨著安全技術(shù)的不斷發(fā)展和進(jìn)步,開(kāi)源的Android平臺(tái)的安全性可以不斷地被改進(jìn),Android系統(tǒng)的安全漏洞會(huì)得到有益補(bǔ)充。除了要不斷改善Android自身的安全,用戶(hù)也應(yīng)該加強(qiáng)安全維護(hù)意識(shí),還要對(duì)第三方程序開(kāi)發(fā)商進(jìn)行嚴(yán)格的監(jiān)管,制定出有效的應(yīng)用程審核和管理機(jī)制,這樣才能使得用戶(hù)對(duì)Android操作系統(tǒng)的支持越來(lái)越多,才能更好地保障整個(gè)系統(tǒng)的安全性。
【Android操作系統(tǒng)的安全機(jī)制】相關(guān)文章:
關(guān)于android操作系統(tǒng)05-30
Android操作系統(tǒng)的發(fā)展與未來(lái)08-19
android操作系統(tǒng)的設(shè)置過(guò)程09-13
淺談組件機(jī)制與操作系統(tǒng)的實(shí)現(xiàn)07-26
windows操作系統(tǒng)的同步機(jī)制與性能10-16
Android操作系統(tǒng)的內(nèi)存回收的策略是什么10-07
WIFI的安全機(jī)制10-17