
認証プロセスのセキュリティ
認証プロセスのセキュリティ
ACME構成がハードウェア固定鍵を指定しているとき、またはデバイス管理サービスがDeviceInformation認証をリクエストするときに、デバイスは以下の手順を実行します:
オペレーティングシステムは、認証済み鍵と呼ばれるハードウェア固定鍵をSecure Enclaveにリクエストします。ACME認証の場合、この鍵は発行される証明書識別情報の一部です。
DeviceInformation認証の場合、鍵はオペレーティングシステムによって生成され、登録の有効期間全体にわたって以後すべてのDeviceInformation認証に再利用されます。オペレーティングシステムは、ハードウェア認証をSecure Enclaveにリクエストします。オペレーティングシステムは認証済み鍵、鮮度コード、認証を受けたいプロパティを指定します。
Secure Enclaveは新しいハードウェア認証を生成して返します。
オペレーティングシステムは、ハードウェア認証をApple認証サーバに送信します。
認証サーバがリクエストを検証し、認証証明書の発行を拒否するか、確認できたプロパティと値のみを含む認証を生成します。認証証明書の公開鍵が認証済み鍵と一致します。
オペレーティングシステムは、取得した認証証明書をデバイス管理サービスまたはACMEソリューションに提供します。
提供された認証証明書の検証について詳しくは、Apple DeveloperのWebサイトの「Validating a Managed Device Attestation」(管理対象デバイス認証の検証)を参照してください。
ハードウェア認証について
Secure Enclaveがハードウェア認証を生成する場合、認証には主に以下の要素が含まれます:
メインロジックボードのID。
認証済み鍵の公開鍵。
起動プロセス中に計算されてハードウェアレジスタに保存されている、以下のソフトウェアコンポーネントのハッシュ(シールドキー保護と同様):
Secure Enclaveのファームウェア(sepOS)。
LLBに添付されたImage4マニフェスト。システムとペアリングされたその他のファームウェアすべての測定値も含まれています。
オペレーティングシステムのImage4マニフェスト。OSとペアリングされたファームウェアすべての測定値が含まれています。
ECIDやChipIDなど、その他のデバイス固有の値。
Macコンピュータの場合は、LocalPolicyの詳細。
鮮度コード。
Secure Enclaveが認証済み鍵をアンラップできない場合、Secure Enclaveはハードウェア認証の生成を拒否します。これにより、認証済み鍵がその特定のSecure Enclaveにバインドされていること、およびその他すべての認証済みプロパティがその鍵に関連付けられていることが保証されます。
これらの要素はすべてカスタムのバイナリ構造にコンパイルされ、UIKによって署名されます。これにより、ハードウェア認証がAppleの認証によって検証可能な特定の識別情報と紐付けられ、リクエストを特定のアクティベーションレコードと関連付けることができるため、特定の製造レコードとリクエストの関連付けが可能になります。
認証証明書の生成
Appleの認証サーバが認証リクエストを受信すると、以下の処理を実行します:
ハードウェア認証のユーザID鍵(UIK)署名を検証します。署名が無効な場合、認証は生成されません。
UIKの公開鍵に対応するAppleのアクティベーションレコード内の
ucrtを検索します。ucrtが見つからない場合、認証は生成されません。デバイスの
ucrtに対応するscrtを検索します。scrtは、シリコンID鍵(SIK)に基づいて製造時にAppleサーバによって発行される証明書です。SIKはSecure Enclaveによって生成され、その公開鍵は製造時にデバイスから収集されます。アクティベーション時に、アクティベーションを行うデバイスのSecure Enclaveが秘密鍵を保有していることを確認するためにSIKが使用されます。SIKはデバイスの存続期間全体にわたって維持され、一意の識別情報の役割を果たします。scrtを使用して、デバイスの製造レコードが取得されます。レコードが見つからない場合、認証は生成されません。ハードウェアコンポーネントの識別情報が製造レコードと一致することを確認します。コンポーネントの識別情報が製造レコードと一致しない場合、認証は生成されません。
存在する場合は、鮮度コードを認証にコピーします。
認証によってリクエストされている場合:
ソフトウェアコンポーネントの計算されたハッシュを、ビルドレコードからの既知のハッシュと比較します。一致するものがあれば、正式なバージョン番号が認証に挿入されます。そうでなければ、OIDが省略されるか、値が空白になります。
LLB、Secure Enclave、またはメインオペレーティングシステムのイメージがビルドされるときに、ハッシュが計算されて、これらのイメージの正式なバージョン番号と共にビルドレコードデータベースに記録されます。
ECIDとChipIDからUDIDを計算します。
デバイスがMacの場合は、リクエストされたOIDの値をLocalPolicyから認証にコピーします。
これらの検証の実際的な結果としては、認証サーバがデバイスを正規のAppleハードウェアとして認識できない場合、認証は生成されません。認証証明書内の各プロパティは、認証サーバがそのプロパティの値を検証できた場合にのみ証明書に含められます。ただし例外として、鮮度コードは検証を行わずに含められます。