Appleプラットフォームのセキュリティ
iCloudキーチェーンエスクローのセキュリティ
iCloudには、認証されたユーザおよびデバイスのみが復元を実行できるようにするためのキーチェーンエスクロー向けに安全なインフラストラクチャが用意されています。iCloudを背後で支えているのが、エスクローレコードを保護するHSM(ハードウェアセキュリティモジュール)のクラスタです。前述の通り、クラスタごとに鍵があり、その鍵を使ってクラスタの監視下でエスクローレコードを暗号化します。
キーチェーンを復元するには、ユーザがiCloudアカウントとパスワードで認証し、登録済みの電話番号に送信されるSMSに返信する必要があります。そのあと、ユーザはiCloudセキュリティコードを入力する必要があります。HSMクラスタはSRP(Secure Remote Password)プロトコルを使用して、ユーザがiCloudセキュリティコードを知っていることを確認します。コード自体はAppleに送信されません。クラスタの各メンバーは、ユーザがレコードを取得する際に許容される最大試行回数(後述)を超えていないことをそれぞれで確認します。超えていないという判断で過半数が一致した場合は、エスクローレコードがアンラップされ、レコードがユーザのデバイスに送信されます。
次に、デバイスがエスクローデータを使用して、ユーザのキーチェーンの暗号化に使用したランダムな鍵をアンラップします。その鍵を使って、CloudKitとiCloudのキー値ストレージから取得されたキーチェーンが復号され、デバイス上に復元されます。エスクローサービスは、エスクローレコードの認証と取得の試行を10回のみ許可します。試行に数回失敗するとレコードがロックされるため、それ以上試行するには、ユーザはAppleサポートに電話して承認を得る必要があります。10回失敗すると、HSMクラスタによってエスクローレコードが破棄され、キーチェーンが完全に失われます。これは、キーチェーンデータを犠牲にする代わりに、レコードの取得を試みる総当たり(ブルートフォース)攻撃からレコードを守る手段になります。
これらのポリシーはHSMファームウェアに組み込まれています。ファームウェアの変更を許可する管理アクセスカードは破棄されています。ファームウェアの改ざんまたは秘密鍵へのアクセスが試行されると、HSMクラスタによって秘密鍵が削除されます。万一この状況が発生した場合は、そのクラスタによって保護されている各キーチェーンの所有者に、エスクローレコードが失われたことを通知するメッセージが送信されます。それらのユーザは、その後再登録ができます。