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