기기 등록 단계에서는 발급자 시스템에 ID 키를 등록하여 DC를 저장할 수 있도록 기기를 준비합니다.
요청 흐름
흐름 설명
| 단계 | 소스 | 설명 |
|---|---|---|
| 1 | Android 기반 기기 |
사용자의 기기에 새 DC 요청이 생성되었습니다. 발급자가 새 ID 키를 만들어야 합니다. 사용자의 기기에서 getDeviceRegistrationNonce를 호출하여 이 프로세스를 시작합니다.
|
| 2 | Google 서버 |
Google은 getDeviceRegistrationNonce 요청을 발급자에게 전달합니다.
|
| 3 | 발급기관 서버 |
발급기관은 nonce를 생성하고 deviceReferenceId와 함께 저장하며 nonce를 Google에 반환합니다.
|
| 4 | Google 서버 | Google은 사용자 기기에 nonce를 전달합니다. |
| 5 | Android 기반 기기 |
사용자의 기기가 nonce에 서명하고 이를 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에 있으면 인증서가 무효이며 기기 증명을 신뢰해서는 안 됩니다.
- 리프 인증서: 리프 인증서는 기기에 특정한 인증서입니다. 여기에는 하드웨어 식별자, 소프트웨어 버전과 같은 기기에 관한 정보가 포함됩니다.
- 확장 프로그램: 확장 프로그램은 인증서에 포함된 추가 정보입니다. 기기 증명 인증서에는 기기의 무결성을 확인하는 데 사용되는 여러 확장 프로그램이 포함되어 있습니다. 자세한 내용은 인증서 확장 데이터 스키마를 참고하세요.