デバイス登録フェーズでは、発行元のシステムに ID キーを登録して、DC を保存するデバイスを準備します。
リクエスト フロー
フローの説明
| ステップ | ソース | 説明 |
|---|---|---|
| 1 | Android デバイス |
ユーザーのデバイスに新しい DC リクエストが作成されました。発行元が新しい ID キーを作成する必要があります。ユーザーのデバイスは、getDeviceRegistrationNonce を呼び出してこのプロセスを開始します。
|
| 2 | Google サーバー |
Google が getDeviceRegistrationNonce リクエストを発行元にリレーします。
|
| 3 | 発行元サーバー |
発行元がノンスを生成し、deviceReferenceId とともに保存して、そのノンスを Google に返します。
|
| 4 | Google サーバー | Google がノンスをユーザーのデバイスにリレーします。 |
| 5 | Android デバイス |
ユーザーのデバイスがノンスに署名して、x509 証明書に埋め込みます。
これは、デバイスを検証するための registerDevice 呼び出しに含まれます。
|
| 6 | Google サーバー | Google が発行元に対して registerDevice 呼び出しをリレーします。 |
| 7 | 発行元サーバー | 発行元がデバイスの完全性チェックを実行し、デバイスに関連付けられた ID キーを保存します。 |
デバイスの完全性を確認する方法
デバイス認証は、発行者がデバイスを登録する前にデバイスの完全性を確認できるセキュリティ機能です。これにより、改ざんされたデバイスや不正なソフトウェアを実行しているデバイスの登録を防ぐことができます。
デバイスの完全性を検証するには、発行者は次のことを行う必要があります。
/registerDeviceリクエストで送信された証明書チェーンを検証します。チェーン内のルート証明書は、Google が提供する証明書と一致する必要があります。- ルート証明書が証明書失効リストに含まれていないことを確認します。
- リーフ証明書を解析し、拡張機能を読み取り、次のことを確認します。
attestationChallenge値は、/getDeviceRegistrationNonceオペレーション中に送信されたnonceと一致します。teeEnforced.rootOfTrustには次のプロパティがあります。deviceLocked=TRUEverifiedBootState=VERIFIED
softwareEnforced.attestationApplicationIdのパッケージ名がcom.google.android.gmsまたはcom.google.android.gsfと一致します。
デバイス認証プロセスのさまざまな部分の説明
- 証明書チェーン: 証明書チェーンは、デバイスの ID を認証する一連の証明書です。チェーン内のルート証明書は最も信頼できる証明書であり、チェーン内の後続の各証明書は、その上の証明書によって署名されます。
- 証明書失効リスト: 証明書失効リスト(CRL)は、何らかの理由で失効した証明書のリストです。デバイス構成証明証明書チェーンのルート証明書が CRL にある場合、証明書は無効であり、デバイス構成証明は信頼できません。
- リーフ証明書: リーフ証明書は、デバイスに固有の証明書です。これには、ハードウェア ID やソフトウェア バージョンなど、デバイスに関する情報が含まれます。
- 拡張機能: 拡張機能は、証明書に含まれる追加情報です。デバイス証明書には、デバイスの完全性を検証するために使用される拡張機能が多数含まれています。詳細については、証明書の拡張機能データのスキーマをご覧ください。