Android 檔案系統加密機制

2022-8-20 by 高田數位鑑識

為加強用戶資料的保護,最早從 Android 4.4 版本開始,裝置上的使用者資料導入了「對稱式加密(Symmetric Encryption)」的加密方式保護。 加密機制一旦啟用,所有使用者產生的資料在將其提交到儲存空間之前都會自動加密,並且所有資料讀取都會回到系統之前自動解密完成。 加密機制確保即使未經授權的一方試圖讀取資料,也只能取得到無法辨識的亂碼內容。

Android 有兩種加密機制:Full-Disk Encryption (FDE) 與 File-based Encryption (FBE)。

加密機制對應 Android 版本

出廠預設為 Android 9 或更低版本的裝置才能使用 FDE 加密。 FBE 從 Android 7 開始支援,直到 Android 10 後出廠的裝置必須改用 FBE 加密機制。 Android 10-12 尚支援 FDE 加密機制,但僅限從較低 Android 版本升級的裝置能使用。 Android 13 則完全移除了對 FDE 加密機制的支援。

Android 各版本加密支援表

Full Disk Encryption 說明

Android 裝置出廠時預設的作業系統若介於 5.0 – 9 皆可使用 Full-Disk Encryption,Android 10 ~ 12 也支援 FDE,但僅供由出廠預設安裝 Android 9 以下的裝置升級使用。FDE 加密僅使用一把金鑰(受使用者開機密碼保護)來加密/解密整個使用者的資料分區 (/data 分區)。 啟動時,使用者必須輸入開機密碼,系統才能解開 FDE 的金鑰進而讀取使用者分區的資料。

  • FDE 僅對 「/data」 分區加密。

  • 解開 /data 分區的 Master Key (亂數產生) 預設由「default_password」搭配 Device Unique Hardware Key 保護

  • 開機進入到作業系統後 /data 分區為解密狀態,即使螢幕鎖尚未解開。

  • 因此 LockPick (透過漏洞) 可以繞過螢幕鎖,並讀取使用者分區資料。

  • 僅對 ISP,JTAG 或 Chip-off 等傳統取證方式有防堵效果。

FDE 加密方式

Secure Startup

Secure Startup 為 FDE 的延伸版本,唯一的差別是保護加密/解密的 Masterkey 金鑰的方式不同。原本在 FDE 架構下保護 Masterkey 的其中一個密碼為 default_password,在 Secure Startup 下可改為用戶自訂的螢幕鎖密碼。

由於資料加密的方式是採整個使用者分區進行加密,這代表當裝置重開機後,直到使用者輸入螢幕鎖密碼前,Android 系統皆無法讀取使用者分區的任何資料,如用戶設定的鬧鐘時間。

  • 加密 Master Key 密碼由「default_password」改為用戶的螢幕鎖密碼。

  • 在作業系統啟動後輸入正確的 Passcode 解鎖,才可解開 Master Key 金鑰讀取用戶分區的資料。

  • 未輸入密碼前使用者分區資料皆為加密狀態,無法讀取。

  • 僅可使用暴力破解,LockPick 無法繞過螢幕鎖。

Secure Startup 加密方式

File Based Encryption

Android 7.0 以上的作業系統版本開始支援 File-based Encryption (FBE),啟用後每一個檔案皆採用不同的金鑰進行加密/解密。啟用 FBE 後 Android 7.0 導入了另一項新功能,直接啟動 (Direct Boot)。 Direct Boot 允許加密裝置尚未解鎖前,存取特定的用戶檔案或資料。 與 FDE 的 Secure Startup 加密裝置最大的不同,Secure Startup 需待用戶解開螢幕鎖之後才能存取用戶分區資料,而 Direct Boot 允許 APP 開發者藉由 API 自訂義檔案是否可在未解鎖狀態下被存取。

在啟用 FBE 的裝置上,會有兩個儲存位置來存放用戶的 APP 資料:

  • Credential Encrypted (CE) 儲存空間:預設的 APP 資料存放位置,該位置必須等用戶解開螢幕鎖後才可以被系統讀取。
  • Device Encrypted (DE) 儲存空間:用戶尚未解開螢幕鎖之前 ( Direct Boot 狀態下) 與用戶解鎖後,系統都有存取權限。

而第三方 APP 如何啟用 Direct Boot 功能 ? APP 開發者必需先向 Android 系統註冊 APP 需於該模式下執行的元件 (components), 註冊後 APP 才可以在 Direct Boot 模式下執行或存取 DE 的儲存空間。註冊方式只要在 AndroidManifest.xml ( 該 XML 檔案記錄了 APP 內的重要資料,如 package 名稱、版本、Android 版本資訊、權限與所使用到的類別等) 宣告 android:directBootAware 即可使用 Direct Boot 功能。

Direct Boot 的應用如下:

  • 已安排通知的 APP,如鬧鐘。
  • 提供重要推播通知的 APP,如 LINE 或簡訊。
  • 提供無障礙服務的 APP,如 Talkback。
  • 第三方桌面 Launcher 等。

FBE 啟用規範

  • Android 10 以上的作業系統版本預設需啟用 FBE。
  • Android 9 以上的作業系統可使用 adoptable storage 與 FBE。
  • Android 7.0 – 8.1 啟用 FBE 時無法加密 adoptable storage 的儲存空間,adoptable storage 為 traditional storage 模式。

結論

市面上現有的行動裝置,不管是 Apple 或 Android,出廠皆已使用 FBE 加密方式,雖然對於使用者的資料保護是更為全面,但對鑑識人員在提取過程中能使用的工具則限制更多。Cellebrite 為因應新的鑑識挑戰,也推出了 Premium ES,支援更多主流的行動裝置解鎖並使用完整檔案系統 (Full File System) 提取關鍵資料。