系統和核心安全

在作業系統層面,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 使用安全增強 Linux (SELinux) 應用存取控制策略並在進程上建立強制存取控制 (mac)。有關詳細信息,請參閱Android 中的安全增強型 Linux

驗證啟動

Android 7.0 及更高版本支援嚴格執行的驗證啟動,這表示受感染的裝置無法啟動。驗證啟動可保證設備軟體的完整性,從硬體信任根一直到系統分區。在啟動過程中,每個階段在執行之前都會以加密方式驗證下一階段的完整性和真實性。
有關更多詳細信息,請參閱驗證啟動

密碼學

Android 提供了一組加密 API 供應用程式使用。其中包括標準和常用加密原語的實現,例如 AES、RSA、DSA 和 SHA。此外,也為 SSL 和 HTTPS 等更高層級的協定提供了 API。

Android 4.0 引入了KeyChain類,允許應用程式使用系統憑證儲存來儲存私鑰和憑證鏈。

設備生根

預設情況下,在 Android 上,只有核心和一小部分核心服務以 root 權限運行。 SELinux 仍然限制以 root 身分執行的使用者空間進程。驗證啟動可防止具有 root 權限的使用者或服務永久修改作業系統。

對於使用 Android 平台的開發人員來說,修改自己擁有的 Android 裝置的能力非常重要。在許多 Android 裝置上,用戶可以解鎖引導程序,以便安裝備用作業系統。這些替代作業系統可能允許擁有者獲得 root 存取權限,以偵錯應用程式和系統元件,或存取 Android API 未向應用程式提供的功能。

在某些裝置上,擁有裝置實體控制權和 USB 纜線的人員能夠安裝為使用者提供 root 權限的新作業系統。為了保護任何現有用戶資料免受損害,引導程式解鎖機制要求引導程式在解鎖步驟中擦除任何現有用戶資料。透過利用核心錯誤或安全漏洞獲得的根存取權限可以繞過此保護。

使用儲存在裝置上的金鑰加密資料並不能保護應用程式資料免受 root 使用者在 root 裝置上的侵害。應用程式可以使用儲存在設備外(例如伺服器上或使用者密碼)的金鑰進行加密,從而添加一層資料保護。此方法可以在密鑰不存在時提供臨時保護,但在某些時候必須將密鑰提供給應用程序,然後根用戶才能存取它。

保護根用戶資料的更可靠方法是使用硬體解決方案。 OEM 可能會選擇實施限制對特定類型內容的存取的硬體解決方案,例如用於影片播放的 DRM 或用於 Google 錢包的 NFC 相關可信任儲存。如果裝置遺失或被盜,儲存加密可確保在不知道使用者鎖定螢幕憑證的情況下無法存取使用者資料。

使用者安全功能

儲存加密

CDD 要求所有搭載 Android 10 或更高版本的裝置以及大多數搭載 Android 6.0 或更高版本的裝置立即啟用儲存加密。

Android 目前的儲存加密實作是基於檔案的加密元資料加密相結合。基於檔案的加密對使用者資料分割區上的檔案內容和名稱進行透明加密,對不同的目錄使用不同的金鑰。它為每個使用者提供憑證加密和裝置加密的儲存目錄,包括工作設定檔。

元資料加密是對基於文件的加密的補充。它使用未綁定到任何使用者鎖定螢幕憑證但仍受驗證啟動保護的金鑰來加密 userdata 分割區上尚未透過基於檔案的加密進行加密的所有區塊。

鎖定螢幕憑證保護

Android 可以設定為在提供對裝置的存取之前驗證使用者提供的鎖定螢幕憑證(PIN、密碼或圖案)。除了防止未經授權使用裝置之外,鎖定螢幕憑證還可以保護憑證加密資料的加密金鑰。設備管理員可能會要求使用鎖定螢幕憑證和/或憑證複雜性規則。

設備管理

Android 2.2 及更高版本提供 Android 裝置管理 API,它提供系統層級的裝置管理功能。例如,內建的 Android 電子郵件應用程式使用 API 來改善 Exchange 支援。透過電子郵件應用程序,Exchange 管理員可以跨裝置強制執行鎖定螢幕憑證策略,包括字母數字密碼或數字 PIN。管理員還可以遠端擦除(即恢復出廠預設值)遺失或被盜的手機。

除了在 Android 系統隨附的應用程式中使用之外,這些 API 還可供裝置管理解決方案的第三方供應商使用。設備管理中提供了有關 API 的詳細資訊。