當前位置:才華齋>計算機>作業系統>

Android作業系統的安全機制

作業系統 閱讀(1.28W)

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作業系統的支援越來越多,才能更好地保障整個系統的安全性。