Android操作系統的安全機制

Android是一個開源的移動平台操作系統,佔據中國智能手機80%市場份額,主要用於便攜式設備。作為一個運行於實際應用環境中的終端操作系統,Android操作系統在其體系結構設計和功能模塊設計上就將系統的安全性考慮之中。與此同時,它又改造開發了原有的Linux系統內核和Java虛擬機。在這種前提下,Android操作系統在利用系統安全機制方面就會與原系統安全機制的設計目的有所不同。由於Android 平台的開放和脆弱性,開發其上的隱私保護系統顯得非常重要,其面臨的安全威脅在所有手機操作系統中也是最大的。

Android操作系統的安全機制

1 Android 安全機制

Android的安全機制是在Linux安全機 制基礎上的發展和創新,是傳統的Linux安全機制和Android特有的安全機制的共同發展。Android安全機制中的主要出發點是,在默認的情況下,應用程序任何能夠給用户、系統或者其他應用程序帶來負面影響的操作是不可以執行的。Android是一個支持多任務的系統,其安全機制依託於數字簽名和權限,系統中的應用程序之間一般是不可以互相訪問的,每一個應用程序都有獨立的進程空間。

1.1用户ID

Android系統是基於Linux內核的,對應用程序文件和系統文件的訪問都要遵循Linux的許可機制,並將這種機制用於管理應用程序。在Android應用程序安裝成功後,系統就為其指定了一個唯一的用户名,對應着系統中唯一的UID,每個用户可以屬於一個或者多個組。如果在應用程序執行期間有越軌或超越權限操作的行為時,用户將會得到Android 的警告信息。

1.2應用程序數字簽名

數字簽名是過某種密碼運算生成一系列符號及代碼組成電子密碼進行簽名,來代替書寫簽名或印章。簽名的主要作用是身份認證、完整性驗證和建立信任關係。

Android系統不會安裝沒有進行簽名的應用程序,所有應用程序進行簽名認證是必須的,但簽名認證是第三方證書認證機構可以不參與的。Android系統對簽名證書的過期時間檢查是在應用程序安裝時進行的,這就意味着如果一個應用程序在安裝後才發現其簽名證書過期,就不會影響應用程序的運行。需要注意的是,應用程序必須使用同一個證書進行簽名才可以升級到新的版本,兩個應用程序使用同一個數字簽名才可以相互授予權限來訪問彼此的資源。

1.3 Permission機制

Android是一個權限分離的系統,它利用Linux已有的權限管理機制,為每一個應用程序分配不同的UID和GID,使不同的應用程序之間的私有數據和訪問達到隔離的目的。如果使不同的應用程序之間的私有數據和訪問達到共享,就需要聲明對應的權限。為此,Android在原有的基礎上進行了擴展,提供了permission機制,它主要是用來對應用程序可以執行的某些具體操作進行權限細分和訪問控制。在manifest文件中添加一個permission標籤,就定義一個permission。另外,Android為了對某些特定的數據塊進行ad-hoc方式的訪問,還提供了per-URI permission 機制。

一個權限主要包含權限名、權限組和保護級別,若干個具體權限構成一個權限組,權限組是根據權限的功能劃分出來的,每個權限有不同的保護級別(普通級別、危險級別、簽名級別和系統/簽名級別四類),不同的保護級別代表了應用程序使用此權限時的認證方式。

1.4 沙箱隔離

Android 引入沙箱的概念來實現應用程序之間的.分離,具有允許或拒絕一個應用程序訪問另一個應用程序資源的權限。

每個應用程序在安裝後都有一個UID號,且一直不會改變。系統根據UID號為每個應用程序建立一個沙箱,不同的進程空間中運行着不同應用程序的代碼,且不能隨意的互訪彼此的進程空間。如果兩個應用程序的UID不同,運行在基本沙箱進程中的應用程序默認情況下是沒有被分配權限,因此它們無法交互彼此的數據,此類應用程序要想訪問系統文件、資源文件等變得不太可能,這種相互隔離的沙箱模式保證了數據的安全性。那麼,不同的應用之間需要共享資源該怎麼辦,可以通過請求權限來解決,即設置應用的sharedUserld屬性,或者是與其他受信任的應用程序運行在同一進程中,從而共享對其數據資源的訪問。如此一來,相同用户的應用程序的資源和數據就如同使用應用程序自身的資源一樣可以互相訪問和使用。但是,若想兩個應用程序分配同樣的UID,那麼必須使用相同的簽名,且請求設置了同一個sharedUserld。

2 Android的安全隱患

Android系統的開源性勢必會給我們帶來一系列的安全隱患,有Linux內核安全漏洞造成的,有Android自身權限機制不健全造成的,也有基於硬件損傷造成的,但也正因為開源性才可以讓我們有自由創造和發揮的空間。

1)基於硬件的問題主要體現在硬件損傷、温度過高等因素導致便攜設備不能工作的現象。由於Android系統過於開放,至少在手機死機現象頻繁發生的問題上扮演了重要角色。

2)在Linux內核安全上,有一個哈希算法問題,即當攻擊者把經過特殊構造的包傳給系統並接收後,服務器的資源因哈希表產生衝突而被耗盡。哈希算法是把一組關鍵詞經過某種哈希運算後,把得出的相同的哈希值存儲到同一個地址區間,從而使哈希表變成了一個單向鏈表,插入操作的複雜度因此也變得比較大,從原來的O(n)級變為O(n*n)級,如此導致處理器資源被大量消耗,服務器拒絕服務,也就產生了DoS攻擊。還有Linux內核中的整數溢出漏洞問題,它是由於一個正數/負數不匹配整形漏洞引起的,存在於XDR處理器例程中。當Linux系統的XDR處理程序接收到經過攻擊者精心構造的包時,包的大小被程序中的檢測語句錯誤的估計,致使大批的內存不斷的從內核中複製出來,導致系統癱瘓,內核數據遭受破壞。當然,Linux內核還有其他的一些問題,此處不再敍述。

3)Android自身權限機制問題。首先,不透明的權限問題。用户在安裝應用時,系統會把該應用使用的權限列表以界面的方式彈出告訴用户。但是,為什麼用這些權限,用户或許不清楚,也許根本就不瞭解、不關心,由於用户要使用這個應用所以必須安裝,從而造成不必要的損失。其次,不可分的權限集問題。上面提到,應用程序安裝後,系統已經給出了使用的權限列表,權限的使用只限於該列表而不能超出該列表。但問題的關鍵在於,用户不能選中權限列表中的部分選項,要麼全選,要麼不選,都是一種絕對的狀態,用户只有全選權限才能使用該應用程序,否則只能放棄使用。最後,研發工作者在研發應用程序的過程中,由於某種原因聲明瞭一些或許根本就沒有使用到的權限,那麼在安裝應用程序時,也會告訴用户,從而增加了系統的負擔和一些不安全的因素,用户由於擔心安全問題而不敢隨意安裝該應用程序。

3 結束語

Android 是一款非常出色的操作系統平台,隨着Andriod系統智能終端的日益推廣,Android操作系統的安全性越來越重要,在其快速發展中不可避免的存在不完善的地方。Android平台的開源造成了系統易被攻擊,隨着安全技術的不斷髮展和進步,開源的Android平台的安全性可以不斷地被改進,Android系統的安全漏洞會得到有益補充。除了要不斷改善Android自身的安全,用户也應該加強安全維護意識,還要對第三方程序開發商進行嚴格的監管,制定出有效的應用程審核和管理機制,這樣才能使得用户對Android操作系統的支持越來越多,才能更好地保障整個系統的安全性。