帳號復原聯絡人安全性
無論使用者是否已開啟「進階資料保護」,使用者最多可以加入五位他們信任的人員作為帳號復原聯絡人,以協助他們復原其 iCloud 帳號和資料,包括其所有端對端加密資料。Apple 和復原聯絡人都沒有個別的必要資訊來復原使用者的端對端加密 iCloud 資料。
「復原聯絡人」的設計將使用者隱私納入考量。使用者所選的復原聯絡人無法由 Apple 識別。Apple 伺服器只會在使用者要求聯絡人協助且其聯絡人實際開始協助復原後的復原嘗試末期得知復原聯絡人的相關資訊。該資訊在復原完成後不會保留。
復原聯絡人安全程序
使用者設定「帳號復原聯絡人」時,系統會產生與該聯絡人綁定的密鑰。此密鑰可保護使用者 iCloud 資料(包含端對端加密的 CloudKit 資料)的存取權限。接下來,系統會產生一組隨機 256 位元 AES 密鑰,用於加密「復原聯絡人」密鑰以建立「復原聯絡人封包」。加密的封包會傳送給「復原聯絡人」保管,而隨機 AES 密鑰會由 Apple 儲存。AES 密鑰和封包都不會提供有關基礎密鑰本身的任何資訊。進行復原時,使用者裝置成功向其「復原聯絡人」取得「復原聯絡人封包」,並向 Apple 取得 AES 密鑰後,就能組合這兩者來復原原始密鑰,並取用使用者的 iCloud 資料。
為設定「帳號復原聯絡人」,使用者的裝置會與 Apple 伺服器通訊以上傳 Apple 持有的密鑰資訊部分(上述的 AES 密鑰)。裝置接著會與復原聯絡人建立端對端加密 CloudKit 容器,以分享復原聯絡人所需的部分(使用 AES 密鑰加密的「復原聯絡人封包」)。Apple 建立的授權機密也會與復原聯絡人分享。此機密將用於復原帳號及協助帳號進行密碼重置。邀請和接受復原聯絡人的通訊是透過相互認證的 IDS 通道進行。復原聯絡人會自動在「iCloud 鑰匙圈」中儲存接收到的資訊。Apple 無法取用 CloudKit 容器的內容,也無法取用儲存此資訊的「iCloud 鑰匙圈」。執行分享時,Apple 伺服器只會檢視復原聯絡人的匿名 ID。
之後,當使用者需要復原他們的帳號和 iCloud 資料時,可以向他們的復原聯絡人要求協助。屆時,復原聯絡人的裝置會產生一個代碼,復原聯絡人便可透過不同的方法(例如親自或透過電話)將其提供給使用者。然後,使用者在他們的裝置上輸入代碼,以使用 SPAKE2+ 通訊協定在裝置間建立安全連線,Apple 並無法取用此內容。此互動由 Apple 伺服器協調,但 Apple 無法啟動復原程序。
建立安全連線並完成所有必要的安全檢查後,復原聯絡人的裝置會將密鑰資訊的部分和先前建立的授權密鑰傳回給要求復原的使用者。使用者向 Apple 伺服器出示此授權密鑰,此授權密鑰會授予權限來存取 Apple 保管的密鑰資訊。提供授權密鑰也會授權重置帳號密碼以復原帳號取用權限。
最後,使用者的裝置會合併從 Apple 及「帳號復原聯絡人」接收的密鑰資訊,然後用來解密和復原其 iCloud 資料。
有保護措施可以防止復原聯絡人在未經使用者同意的情況下啟動復原,其中包括對使用者帳號的活動性檢查。如果帳號處於使用中狀態,使用「復原聯絡人」進行復原也需要知道最近裝置密碼或 iCloud 安全碼。