アカウント復旧用連絡先のセキュリティ
ユーザは、高度なデータ保護をオンにしているかどうかに関係なく、信頼する人を最大で5人までアカウント復旧用連絡先として追加して、iCloudアカウントおよびデータ(エンドツーエンドで暗号化されたすべてのデータを含む)の復旧を手伝ってもらうことができます。Appleと復旧用連絡先のいずれも、ユーザのエンドツーエンドで暗号化されたiCloudデータを復元するのに必要な情報を単独で持つことはありません。
復旧用連絡先は、ユーザのプライバシーを考慮して設計されています。ユーザが選択した復旧用連絡先は、Appleには知られていません。Appleのサーバは、ユーザが連絡先に助けを求め、その連絡先が実際に復旧の支援を始めたあと、復旧の試みの後半に復旧用連絡先に関する情報を学習するだけです。その情報は、復旧の完了後は保持されません。
復旧用連絡先のセキュリティプロセス
ユーザがアカウント復旧用連絡先を設定すると、ユーザのiCloudデータ(エンドツーエンドで暗号化されたCloudKitデータを含む)にアクセスするための鍵が強力なランダムな鍵で暗号化されます。そのあと、このランダムな鍵が復旧用連絡先とAppleで分けて保持されます。復旧時には、2つの鍵共有が再度組み合わさった場合にのみ、元の鍵を復旧してユーザのiCloudデータにアクセスすることができます。
ユーザのデバイスは、アカウント復旧用連絡先を設定するために、Appleのサーバと通信して鍵情報のAppleが保持する共有をアップロードします。さらに、デバイスは復旧用連絡先を使用してエンドツーエンドで暗号化されたCloudKitコンテナを確立し、復旧用連絡先に必要な部分を共有します。また、Appleと復旧用連絡先の両方が、ユーザから同じ認証シークレットを受信します。これはあとで復旧のために必要になります。復旧用連絡先を依頼して承認するための通信は、相互認証されたIDSチャネルを通じて行われます。復旧用連絡先が受信した情報は、自動的に復旧用連絡先のiCloudキーチェーンに保存されます。Appleは、CloudKitコンテナの内容にも、この情報が保存されているiCloudキーチェーンにもアクセスできません。共有の実行時にAppleのサーバが参照するのは復旧用連絡先の匿名IDのみです。
そのあと、ユーザがアカウントとiCloudデータを復旧する必要があるときは、復旧用連絡先に協力を依頼できます。すると、復旧用連絡先のデバイスで復旧コードが生成され、復旧用連絡先はそのコードを帯域外でユーザに提供します(直接会って伝える、通話で伝えるなど)。次にユーザは復旧コードをデバイスに入力し、SPAKE2+プロトコルを使用したデバイス間の安全な接続を確立します。Appleはその内容にアクセスできません。このやり取りはAppleのサーバによって進められますが、Appleが復旧プロセスを開始することはできません。
安全な接続が確立され、すべての必要なセキュリティチェックが完了すると、復旧用連絡先のデバイスに保持されている鍵情報の部分と、以前に確立した認証シークレットが、復旧を要求したユーザに返却されます。ユーザはこの認証シークレットをAppleのサーバに提示し、AppleのサーバはAppleが保持している鍵情報へのアクセス権を付与します。認証シークレットの提示により、アカウントのパスワードをリセットして、アカウントへのアクセスを復元することも認証されます。
最後に、ユーザのデバイスはAppleとアカウント復旧用連絡先から受信した鍵情報を再度組み合わせ、それを使用してiCloudデータを復号して復元します。
復旧用連絡先がユーザの同意なく復旧を開始できないように、ユーザのアカウントの生体確認などのセキュリティ機能が採用されています。アカウントがアクティブに使用されている場合、復旧用連絡先を使って復旧するには、デバイスの最新のパスコードまたはiCloudセキュリティコードを知っていることも必要です。