在作業系統層級,Android 平台提供 Linux kernel 的安全性,以及安全的處理序間通訊 (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 上,只有核心服務和少數核心服務會以根權限執行。SELinux 仍會限制以根層級執行的使用者空間程序。驗證開機程序可防止具有 root 權限的使用者或服務永久修改作業系統。
對於使用 Android 平台的開發人員而言,能夠修改自有的 Android 裝置非常重要。在許多 Android 裝置上,使用者可以解鎖引導程序,以便安裝其他作業系統。這些替代作業系統可能會讓裝置擁有者取得 root 存取權,以便對應用程式和系統元件進行偵錯,或存取 Android API 未提供給應用程式的功能。
在某些裝置上,如果有人能直接操控裝置並使用 USB 傳輸線,就能安裝新的作業系統,為使用者提供 root 權限。為防止系統啟動載入程式解鎖機制入侵現有的使用者資料,系統啟動載入程式必須在解鎖步驟中清除任何現有的使用者資料。若是利用核心錯誤或安全性漏洞來獲取 Root 權限,可以略過這項保護機制。
使用儲存在裝置上的金鑰加密資料,並無法防止 Root 權限裝置上的應用程式資料存取。應用程式可以使用儲存在裝置外部的金鑰 (例如伺服器或使用者密碼) 進行加密,進一步保護資料安全。這個方法可在沒有金鑰的情況下暫時保護,但有時必須將金鑰提供給應用程式,讓超級使用者存取金鑰。
使用硬體解決方案是保護根目錄使用者資料的更可靠方法。原始設備製造商可以選擇導入硬體解決方案,限制存取特定類型的內容,例如影片播放的 DRM,或 Google 錢包的 NFC 相關信任儲存空間。如果裝置遺失或遭竊,儲存空間加密功能可確保使用者資料不會在未知曉使用者鎖定畫面憑證的情況下遭到存取。
使用者安全性功能
儲存空間加密
CDD 規定,所有搭載 Android 10 以上版本的裝置,以及大多數搭載 Android 6.0 以上版本的裝置,都必須預先啟用儲存空間加密功能。
Android 現行的儲存空間加密機制為檔案型加密,並搭配中繼資料加密。以檔案為基礎的加密功能會針對使用者資料分區中的檔案內容和名稱,使用不同的金鑰加密檔案,為每位使用者 (包括工作資料夾) 提供憑證加密和裝置加密的儲存空間目錄。
中繼資料加密功能可補足檔案型加密功能,加密作業會使用未繫結任何使用者的螢幕鎖定憑證,但仍受到驗證開機程序保護的使用者資料分區中的所有區塊。
螢幕鎖定憑證保護
您可以設定 Android,讓系統在提供裝置存取權之前,先驗證使用者提供的螢幕鎖定憑證 (PIN 碼、密碼或圖案)。除了防止裝置遭到未經授權的使用,螢幕鎖定憑證還可保護憑證加密資料的加密編譯金鑰。裝置管理員可以要求使用者使用螢幕鎖定憑證和/或憑證複雜度規則。
裝置管理
Android 2.2 以上版本提供 Android Device Administration API,可在系統層級提供裝置管理功能。舉例來說,Android 內建的電子郵件應用程式會使用 API 改善 Exchange 支援功能。透過電子郵件應用程式,Exchange 管理員可以在所有裝置上強制執行螢幕鎖定憑證政策,包括英數字元密碼或數字 PIN 碼。對於遺失或遭竊的手機,管理員可以從遠端清除資料 (亦即還原出廠預設值)。
除了在 Android 系統內含的應用程式中使用之外,這些 API 也適用於第三方裝置管理解決方案供應商。如要瞭解 API 的詳細資訊,請參閱「裝置管理」。