在操作系統級別,Android 平台提供了 Linux 內核的安全性,以及一個安全的進程間通信 (IPC) 工具,以實現在不同進程中運行的應用程序之間的安全通信。這些操作系統級別的安全功能確保即使是本機代碼也受到應用程序沙箱的約束。無論該代碼是包含應用程序行為的結果還是應用程序漏洞利用的結果,該系統都旨在防止惡意應用程序損害其他應用程序、Android 系統或設備本身。請參閱內核配置,了解您可以採取哪些措施來加強設備上的內核。有關所需設置,請參閱Android 兼容性定義文檔 (CDD) 。
Linux 安全
Android 平台的基礎是 Linux 內核。 Linux 內核已廣泛使用多年,並用於數百萬對安全敏感的環境中。通過不斷被成千上萬的開發人員研究、攻擊和修復的歷史,Linux 已成為許多公司和安全專業人士信任的穩定、安全的內核。
作為移動計算環境的基礎,Linux 內核為 Android 提供了幾個關鍵的安全功能,包括:
- 基於用戶的權限模型
- 進程隔離
- 安全IPC的可擴展機制
- 刪除內核中不必要和可能不安全的部分的能力
作為一個多用戶操作系統,Linux 內核的一個基本安全目標是隔離用戶資源。 Linux 的安全理念是相互保護用戶資源。因此,Linux:
- 防止用戶 A 讀取用戶 B 的文件
- 確保用戶 A 不會耗盡用戶 B 的內存
- 確保用戶 A 不會耗盡用戶 B 的 CPU 資源
- 確保用戶 A 不會耗盡用戶 B 的設備(例如,電話、GPS 和藍牙)
應用程序沙箱
Android 的應用程序安全性由應用程序沙箱強制執行,該沙箱將應用程序彼此隔離並保護應用程序和系統免受惡意應用程序的侵害。有關更多詳細信息,請參閱應用程序沙箱。
系統分區和安全模式
系統分區包含 Android 的內核以及操作系統庫、應用程序運行時、應用程序框架和應用程序。此分區設置為只讀。當用戶將設備啟動到安全模式時,第三方應用程序可能會由設備所有者手動啟動,但默認情況下不會啟動。
文件系統權限
在 UNIX 風格的環境中,文件系統權限確保一個用戶不能更改或讀取另一個用戶的文件。在 Android 的情況下,每個應用程序都作為自己的用戶運行。除非開發人員明確與其他應用程序共享文件,否則由一個應用程序創建的文件不能被另一個應用程序讀取或更改。
安全增強的 Linux
Android 使用 Security-Enhanced Linux (SELinux) 來應用訪問控制策略並在進程上建立強制訪問控制 (mac)。有關詳細信息,請參閱Android 中的安全增強型 Linux 。
驗證啟動
Android 6.0 及更高版本支持驗證啟動和 device-mapper-verity。驗證啟動保證了從硬件信任根到系統分區的設備軟件的完整性。在啟動過程中,每個階段在執行之前都會以加密方式驗證下一個階段的完整性和真實性。
Android 7.0 及更高版本支持嚴格強制驗證啟動,這意味著受感染的設備無法啟動。
有關更多詳細信息,請參閱驗證啟動。
密碼學
Android 提供了一組加密 API 供應用程序使用。其中包括標準和常用加密原語的實現,例如 AES、RSA、DSA 和 SHA。此外,還為 SSL 和 HTTPS 等更高級別的協議提供 API。
Android 4.0 引入了KeyChain類以允許應用程序將系統憑證存儲用於私鑰和證書鏈。
設備生根
默認情況下,在 Android 上,只有內核和一小部分核心應用程序以 root 權限運行。 Android 不會阻止具有 root 權限的用戶或應用程序修改操作系統、內核或任何其他應用程序。通常,root 對所有應用程序和所有應用程序數據具有完全訪問權限。更改 Android 設備上的權限以授予對應用程序的 root 訪問權限的用戶會增加對惡意應用程序和潛在應用程序缺陷的安全風險。
修改自己擁有的 Android 設備的能力對於使用 Android 平台的開發人員來說非常重要。在許多 Android 設備上,用戶可以解鎖引導加載程序以允許安裝備用操作系統。這些備用操作系統可能允許所有者出於調試應用程序和系統組件的目的獲得 root 訪問權限,或者訪問 Android API 未提供給應用程序的功能。
在某些設備上,對設備和 USB 電纜具有物理控制權的人能夠安裝為用戶提供 root 權限的新操作系統。為保護任何現有用戶數據免受損害,引導加載程序解鎖機制要求引導加載程序擦除任何現有用戶數據作為解鎖步驟的一部分。通過利用內核錯誤或安全漏洞獲得的 Root 訪問權限可以繞過此保護。
使用存儲在設備上的密鑰加密數據不會保護應用程序數據免受 root 用戶的侵害。應用程序可以使用存儲在設備外的密鑰(例如服務器或用戶密碼)進行加密,從而添加一層數據保護。這種方法可以在密鑰不存在時提供臨時保護,但在某些時候必須將密鑰提供給應用程序,然後它才可供 root 用戶訪問。
保護數據免受 root 用戶訪問的一種更強大的方法是使用硬件解決方案。 OEM 可以選擇實施限制對特定類型內容的訪問的硬件解決方案,例如用於視頻播放的 DRM,或用於 Google 錢包的 NFC 相關可信存儲。
在設備丟失或被盜的情況下,Android 設備上的完整文件系統加密使用設備密碼來保護加密密鑰,因此在沒有用戶設備密碼的情況下修改引導加載程序或操作系統不足以訪問用戶數據。
用戶安全功能
文件系統加密
Android 3.0 及更高版本提供完整的文件系統加密,因此所有用戶數據都可以在內核中加密。
Android 5.0 及更高版本支持全盤加密。全盤加密使用單個密鑰(受用戶設備密碼保護)來保護設備的整個用戶數據分區。啟動時,用戶必須提供他們的憑據,然後才能訪問磁盤的任何部分。
Android 7.0 及更高版本支持基於文件的加密。基於文件的加密允許使用可以獨立解鎖的不同密鑰對不同文件進行加密。
有關文件系統加密實現的更多詳細信息,請參見加密部分。
密碼保護
Android 可以配置為在提供對設備的訪問之前驗證用戶提供的密碼。除了防止未經授權使用設備外,此密碼還可以保護加密密鑰以實現完整的文件系統加密。
設備管理員可能要求使用密碼和/或密碼複雜性規則。
設備管理
Android 2.2 及更高版本提供了 Android Device Administration API,它提供了系統級別的設備管理功能。例如,內置的 Android 電子郵件應用程序使用 API 來改進 Exchange 支持。通過電子郵件應用程序,Exchange 管理員可以跨設備強制執行密碼策略,包括字母數字密碼或數字 PIN。管理員還可以遠程擦除丟失或被盜的手機(即恢復出廠默認設置)。
除了在 Android 系統中包含的應用程序中使用之外,這些 API 還可供設備管理解決方案的第三方提供商使用。設備管理中提供了有關 API 的詳細信息。