從技術架構角度來看,Android安全模型基於強健的Linux操做系統內核安全性,經過進程沙箱機制隔離進程資源,而且輔以獨特的內存管理技術與安全高效的進程間通訊機制,適應嵌入式移動端處理器性能與內存容量的限制。在應用層面,使用顯式定義且經用戶受權的應用權限控制機制等,系統化地規範並強制各種應用程序的行爲準則與權限許可;引入應用程序簽名機制定義應用程序之間的信任關係與資源共享的權限。Android應用程序基於Android特有的應用框架(Framework),由Java語言編寫,運行於Dalvik Java虛擬機。同時,部分底層應用仍可由C/C++語言設計實現,以原生庫形式直接運行於操做系統的用戶空間。應用程序及其Dalvik虛擬機運行環境都被限制在「進程沙箱」的隔離環境下,自行擁有專用的文件系統區域,獨享私有數據。安全
Android安全模型的設計特色可歸納爲:架構
採用多層架構,在保護用戶信息安全的同時,保證開放平臺上各類應用的靈活性。框架
既容許經驗豐富的開發者充分利用安全架構的靈活性,也爲熟悉安全架構的開發者提供更多能夠信賴的默認安全性設置。性能
鼓勵用戶瞭解應用程序是如何工做的,並鼓勵用戶對所持設備進行安全控制。spa
不但要面對惡意軟件的威脅,並且還要考慮第三方應用程序的惡意攻擊。操作系統
安全保護與風險控制同在,在安全防禦失效時,儘可能減小損害,並儘快恢復使用。設計
Android安全模型主要提供如下幾種安全機制:orm
進程沙箱隔離機制:Android應用程序在安裝時被賦予獨特的用戶標識(UID),並永久保持; 應用程序及其運行的Dalvik虛擬機運行於獨立的Linux進程空間,與UID不一樣的應用程序徹底隔離。接口
應用程序簽名機制:應用程序包(.apk文件)必須被開發者數字簽名;同一開發者可指定不一樣的應用程序共享UID,進而運行於同一進程空間,共享資源。進程
權限聲明機制:應用程序須要顯式聲明權限,名稱,權限組與保護級別 。不一樣的級別要求應用程序行使此權限時的認證方式不一樣:Normal級申請便可用;Dangerous級需在安裝時由用戶確認纔可用; Signature與Signatureorsystem則必須是系統用戶纔可用。
訪問控制機制:傳統的Linux訪問控制機制確保系統文件與用戶數據不受非法訪問。
進程通訊機制:Binder進程通訊機制提供基於共享內存的高效進程通訊;Binder基於Client-Server模型,提供相似COM與CORBA的輕量級遠程進程調用(RPC);經過接口描述語言(AIDL)定義接口與交換數據的類型,確保進程間通訊的數據不會溢出越界,污染進程空間。
內存管理機制:基於標準Linux的低內存管理機制(OOM),設計實現了獨特的低內存清理(LMK)機制,將進程按重要性分級,分組,當內存不足時,自動清理最低級別進程所佔用的內存空間;同時,引入不一樣於傳統Linux共享內存機制的Android共享內存機制Sshmem,具有清理再也不使用共享內存區域的能力。