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