LocalPolicyの署名キーの作成と管理
作成
macOSが工場で初めてインストールされたとき、またはテザリングされた消去インストールが実行されたときに、Macは一時的な復元用RAMディスクからコードを実行してデフォルト状態を初期化します。このプロセス中に、復元環境で、Secure Enclaveに保持される公開鍵と秘密鍵の新しいペアが作成されます。秘密鍵は、所有者ID鍵(OIK)と呼ばれます。OIKがすでに存在する場合は、このプロセスの一環として破棄されます。復元環境では、アクティベーションロックに使用される鍵であるユーザID鍵(UIK)も初期化されます。Appleシリコン搭載Macに固有のこのプロセスの一部として、アクティベーションロックのUIK認証が要求されたときに、検証時にLocalPolicyに適用される一連の要求された制約が組み込まれます。デバイスがアクティベーションロック用に認証されたUIKを取得できない場合(例えば、デバイスが現時点で「Macを探す」アカウントに関連付けられており、紛失したと報告されているために)、LocalPolicyの作成に進むことはできません。デバイスにユーザID証明書(ucrt)が発行されている場合、そのucrtには、X.509 v3拡張内のサーバが課したポリシー制約とユーザが要求したポリシー制約が含まれます。
アクティベーションロックucrt
が正常に取得されると、サーバ側のデータベースに保存され、デバイスにも返されます。デバイスにucrtが設定されると、OIKに対応する公開鍵の認証要求が基本アテステーション機関(BAA)サーバに送信されます。BAAは、BAAがアクセス可能なデータベースに格納されているucrtからの公開鍵を使用して、OIK認証要求を検証します。認証を検証できた場合、BAAは公開鍵を認証し、BAAによって署名されていてucrtに格納されている制約が含まれている所有者ID証明書(OIC)を返します。OICはSecure Enclaveに送り返されます。それ以降、Secure Enclaveが新しいLocalPolicyに署名するたびに、OICがImage4に添付されます。LLBにはBAAルート証明書への信頼が組み込まれているため、OICが信頼され、LocalPolicy署名全体が信頼されます。
RemotePolicyの制約
LocalPolicyだけでなく、すべてのImage4ファイルには、Image4マニフェスト評価に関する制約が含まれています。これらの制約は、リーフ証明書の特殊なオブジェクト識別子(OID)を使用してエンコードされています。Image4検証ライブラリは、署名の評価中に証明書から特別な証明書制約OIDをルックアップし、そこに規定されている制約を機械的に評価します。制約の形式は次の通りです:
Xが存在しなければならない
Xが存在してはならない
Xには特定の値が含まれていなければならない
そのため、例えば「パーソナライズされた」署名の場合、証明書の制約には「ECIDが存在しなければならない」が含まれ、「グローバル」署名の場合は「ECIDが存在してはならない」が含まれます。これらの制約は、誤って署名されたImage4マニフェストの生成を回避するために、特定の鍵で署名されたすべてのImage4ファイルが特定の要件に準拠することを必須にするためのものです。
各LocalPolicyのコンテキストでは、これらのImage4証明書の制約はRemotePolicyと呼ばれます。ブート環境のLocalPolicyごとに異なるRemotePolicyが存在できます。RemotePolicyは、recoveryOS LocalPolicyを制限するために使用されるため、recoveryOSのブート時に「完全なセキュリティ」でブートしているようにしか動作できません。これにより、ポリシーを変更できる場所としてのrecoveryOSブート環境の整合性に対する信頼が高まります。RemotePolicyは、LocalPolicyが生成されたMacのECIDと、そのMacのセキュアストレージコンポーネントに保存されているRemotePolicyノンスハッシュ(rpnh
)が含まれるようにLocalPolicyを制限します。rpnh
は(したがってRemotePolicyも)、「Macを探す」およびアクティベーションロックで登録、登録解除、リモートロック、リモートワイプなどのアクションが実行されたときにのみ変更されます。RemotePolicyの制約は、ユーザID鍵(UIK)の認証時に決定および指定され、発行済みユーザID証明書(ucrt)に署名されます。ECID、ChipID、BoardIDなどの一部のRemotePolicyの制約は、サーバによって決定されます。これは、あるデバイスが別のデバイスのLocalPolicyファイルに署名するのを防ぐためです。ほかのRemotePolicyの制約は、現在のOIKにアクセスするために必要なローカル認証とデバイスがアクティベーションロックされているアカウントのリモート認証の両方を提供せずにLocalPolicyのセキュリティがダウングレードするのを防ぐために、デバイスによって指定される場合があります。