來源:IceSword Lab
作者:suezi@IceSword Lab
一、概述
Chromebook 的使用場景模式是允許多人分享使用同一台設備,但是同時也要保護每個用戶數據的私密性,使得每個使用者都不允許訪問到對方的隱私數據,包括:賬戶信息、瀏覽歷史記錄和 cache、安裝的應用程序、下載的內容以及用戶自主在本地產生的文本、圖片、視頻等。本文試圖從較高的角度闡述 ChromeOS 是如何通過 eCryptfs 機制保護用戶數據隱私。
二、eCryptfs 簡介
eCryptfs 在 Linux kernel 2.6.19 由 IBM 公司的 Halcrow,Thompson 等人引入,在 Cryptfs 的基礎上實現,用於企業級的文件系統加密,支持文件名和文件內容的加密。本質上 eCryptfs 就像是一個內核版本的 Pretty Good Privacy(PGP)服務,插在 VFS和下層物理文件系統之間,充當一個“過濾器”的角色。用戶應用程序對加密文件的寫請求,經系統調用層到達 VFS 層,VFS 轉給 eCryptfs 文件系統組件處理,處理完畢后,再轉給下層物理文件系統;讀請求流程則相反。
eCryptfs 的設計受到 OpenPGP 規範的影響,核心思想:eCryptfs 通過一種對稱密鑰加密算法來加密文件的內容或文件名,如 AES-128,密鑰 FEK(File Encryption Key)隨機產生。而 FEK 通過用戶口令或者公鑰進行保護,加密后的 FEK 稱EFEK(Encrypted File Encryption Key),口令/公鑰稱為 FEFEK(File Encryption Key Encryption Key)。在保存文件時,將包含有 EFEK、加密算法等信息的元數據(metadata)放置在文件的頭部或者 xattr 擴展屬性里(本文默認以前者做為講解),打開文件前再解析 metadata。