資料保護類別
在支援「資料保護」的裝置上製作新檔案時,用來製作的 App 會替檔案指定一個類別。每個類別使用不同的規則來決定資料何時可供存取。基本類別和規則會在下面的章節中說明。配備 Apple 晶片的 Mac 電腦不支援類別 D:「無保護」,安全界限是針對登入與登出而建立(而不是如 iPhone 和 iPad 般針對裝置鎖定或解鎖而建立)。
類別 | 保護類型 |
---|---|
類別 A:完整保護 | NSFileProtectionComplete |
類別 B:未打開檔案的保護 | NSFileProtectionCompleteUnlessOpen |
類別 C:首次使用者認證前的保護 【注意】macOS 使用卷宗密鑰來重建「檔案保險箱」保護特性。 | NSFileProtectionCompleteUntilFirstUserAuthentication |
類別 D:無保護 【注意】macOS 不支援。 | NSFileProtectionNone |
完整保護
NSFileProtectionComplete:類別密鑰會使用從使用者密碼和裝置 UID 所衍生的密鑰加以保護。使用者鎖定裝置後不久(若「需要密碼」設定為「立即」,則為 10 秒),系統便會捨棄已解密的類別密鑰,如此一來只有在使用者再次輸入密碼或使用 Face ID 或 Touch ID 解鎖(登入)裝置時,才可以存取此類別中的所有資料。
在 macOS 中,上一個使用者登出後不久,系統會捨棄已解密的類別密鑰,如此一來,只有當同一個使用者再次輸入密碼或使用 Touch ID 或 Face ID 登入裝置時,才可以存取此類別中的所有資料。
未打開檔案的保護
NSFileProtectionCompleteUnlessOpen:裝置鎖定或使用者登出時可能需要寫入某些檔案。在背景中下載的電子郵件附件就是一個典型的例子。此行為是藉由使用非對稱橢圓曲線加密(ECDH over Curve25519)技術來達成。一般的檔案專屬密鑰則是使用 One-Pass Diffie‑Hellman Key Agreement(如 NIST SP 800-56A 中所述)所衍生的密鑰加以保護。
該協議的臨時公用密鑰與封裝的檔案專屬密鑰一起儲存。KDF 是鏈結密鑰衍生函數(Approved Alternative 1),如 NIST SP 800-56A 的 5.8.1 節中所述。AlgorithmID 已忽略。PartyUInfo 和 PartyVInfo 則分別為臨時和靜態公用密鑰。SHA256 則用於雜湊函式。檔案一旦關閉,檔案專屬密鑰便會從記憶體中清除。若要再次打開檔案,系統會使用「未打開檔案的保護」類別的專用密鑰和檔案的臨時公用密鑰來重新製作共享密鑰;該密鑰會用於解除封裝檔案專屬密鑰,然後再用來解密檔案。
在 macOS 中,系統上的任何使用者只要登入或經過認證,就能取用 NSFileProtectionCompleteUnlessOpen 的私密部分。
首次使用者認證前的保護
NSFileProtectionCompleteUntilFirstUserAuthentication:此類別與「完整保護」類別的行為方式相同,只是在鎖定裝置或使用者登出時,已解密的類別密鑰不會從記憶體中移除。此類別中的保護和桌上型電腦完整卷宗的加密有類似的屬性,可防止資料因重新啟動而遭到攻擊。對於未指定至「資料保護」類別的所有第三方 App 資料,這是預設類別。
在 macOS 中,此類別會使用卷宗密鑰,只要掛載卷宗就能取用這個卷宗密鑰,且其功用與「檔案保險箱」相同。
無保護
NSFileProtectionNone:此類別密鑰僅受到 UID 的保護,並且儲存在可抹除儲存空間中。因為解密該類別中檔案所需的所有密鑰都儲存在裝置上,因此這種加密方式只有在快速遠端清除時才具有效益。即使未對檔案指定「資料保護」類別,此檔案仍會以加密形式儲存(就像 iOS 和 iPadOS 裝置上的所有資料一樣)。
macOS 不支援此功能。
【注意】在 macOS 中,針對沒有與啟動的作業系統對應的卷宗,只要掛載卷宗就能取用所有資料保護類別。預設資料保護類別為 NSFileProtectionCompleteUntilFirstUserAuthentication。Rosetta 2 和原生 App 均可使用範圍專屬密鑰功能。