iCloud 加密
iCloud 中的資料加密與資料儲存模型密切相關,從 CloudKit 架構和 API 開始,允許 App 和系統軟體代表使用者將資料儲存在 iCloud 中,並使所有裝置和網路上的所有內容保持最新狀態。
CloudKit 加密
CloudKit 是一種架構,可讓 App 開發者在 iCloud 中儲存鍵值資料、結構資料和資產(大型資料會與資料庫分開儲存,例如影像或影片)。CloudKit 同時支援公用和專用資料庫,以容器分類。公用資料庫為公開共享,通常用於一般資產,而不會經過加密。專用資料庫則會儲存每個使用者的 iCloud 資料。
CloudKit 會使用與資料結構相符的密鑰階層。每個容器的專用資料庫受到密鑰階層保護,該密鑰階層根植於稱為「CloudKit 服務密鑰」的非對稱式密鑰。這些密鑰對於每個 iCloud 使用者都是唯一的,並於他們信任的裝置上產生。當資料寫入 CloudKit 時,所有記錄密鑰皆會在使用者信任的裝置上產生,並在上傳任何資料前封裝至適當的密鑰階層。
許多 Apple 服務(Apple 支援文章 iCloud 資料安全性概覽中詳盡列出)都使用端對端加密,並搭配受到與「iCloud 鑰匙圈」同步功能相同方式保護的 CloudKit 服務密鑰。對這些 CloudKit 容器而言,服務密鑰只能在使用者信任的裝置上使用,Apple 或任何第三方均無法取用。就算使用者選擇不使用「iCloud 鑰匙圈」來同步密碼、通行密鑰和其他使用者資料,這些密鑰還是會在使用者的裝置間同步。當裝置遺失時,使用者可以利用保護「iCloud 鑰匙圈」復原、「帳號復原聯絡人」或「帳號復原密鑰」來復原其「iCloud 鑰匙圈」資料。
加密密鑰管理
CloudKit 中加密資料的安全性是依靠相應加密密鑰的安全性。CloudKit 服務密鑰分為兩類:端對端加密和認證後可用。
端對端加密服務密鑰:對於端對端加密的 iCloud 服務,Apple 伺服器永遠無法取得相關的 CloudKit 服務專用密鑰。服務密鑰組(包含專用密鑰)會在使用者信任的裝置端上建立,並使用「iCloud 鑰匙圈」安全性傳輸到使用者的其他裝置。雖然「iCloud 鑰匙圈」復原和同步流程是由 Apple 伺服器所協調,但加密方式可防止這些伺服器取用使用者的任何鑰匙圈資料。在失去「iCloud 鑰匙圈」取用權和所有復原機制的最壞情況下,CloudKit 中的端對端加密資料會遺失。Apple 無法協助復原這些資料。
認證後可用服務密鑰:對於其他服務,例如「照片」和「iCloud 雲碟」,服務密鑰會儲存在 Apple 資料中心的「iCloud 硬體安全性模組」中,而且可由部分 Apple 服務取用。使用者在新裝置上登入 iCloud 並認證其 Apple ID 時,這些密鑰無需進一步的使用者互動或輸入便可由 Apple 伺服器取用。例如,在登入 iCloud.com 後,使用者可以立即在線上檢視其照片。這些服務密鑰即為認證後可用密鑰。