裝置註冊階段會將身分識別金鑰註冊到發行者系統,為裝置儲存 DC 做準備。
要求流程
流程說明
| 步驟 | 來源 | 說明 |
|---|---|---|
| 1 | Android 裝置 |
系統已在使用者裝置上建立新的 DC 要求。發行者必須建立新的身分識別金鑰。使用者的裝置會呼叫 getDeviceRegistrationNonce,啟動這項程序。 |
| 2 | Google 伺服器 |
Google 會將 getDeviceRegistrationNonce 要求轉送給發卡機構。
|
| 3 | 簽發者伺服器 |
發卡機構會產生隨機值,並將其與 deviceReferenceId 一併儲存,然後將隨機值傳回給 Google。
|
| 4 | Google 伺服器 | Google 會將隨機碼轉送至使用者的裝置。 |
| 5 | Android 裝置 |
使用者的裝置會簽署隨機數,並將其嵌入 x509 憑證。
這項資訊會包含在 registerDevice 呼叫中,用於驗證裝置。
|
| 6 | Google 伺服器 | Google 會將 registerDevice 呼叫轉送給發卡機構。 |
| 7 | 簽發者伺服器 | 發卡機構會執行裝置完整性檢查,並儲存與裝置相關聯的身分識別金鑰。 |
如何驗證裝置完整性
裝置驗證是一項安全功能,發卡機構可在註冊裝置前驗證裝置完整性。這有助於防止註冊遭竄改或執行未經授權軟體的裝置。
如要驗證裝置完整性,核發者應採取下列行動:
- 驗證
/registerDevice要求中傳送的憑證鏈結。 鏈結中的根憑證必須與 Google 提供的憑證一致。 - 確認根憑證不在憑證撤銷清單中。
- 剖析葉子憑證、讀取擴充功能,並驗證下列項目:
attestationChallenge值與/getDeviceRegistrationNonce作業期間傳送的nonce相符。teeEnforced.rootOfTrust具有下列屬性:deviceLocked=TRUEverifiedBootState=VERIFIED
softwareEnforced.attestationApplicationId中的套件名稱與com.google.android.gms或com.google.android.gsf相符。
說明裝置認證程序的各個部分
- 憑證鏈結:憑證鏈結是一連串的憑證,用於驗證裝置的身分。鏈結中的根憑證是最受信任的憑證,鏈結中的每個後續憑證都會由上方的憑證簽署。
- 憑證撤銷清單:憑證撤銷清單 (CRL) 會列出因故遭到撤銷的憑證。如果裝置認證憑證鏈結中的根憑證位於 CRL,則該憑證無效,且裝置認證不應受到信任。
- 分葉憑證:分葉憑證是裝置專屬的憑證。當中包含裝置資訊,例如硬體 ID 和軟體版本。
- 擴充功能:擴充功能是憑證中包含的額外資訊。裝置認證憑證包含多項擴充功能,可用於驗證裝置完整性。詳情請參閱憑證擴充資料結構定義。