기기 등록

기기 등록 단계에서는 발급자 시스템에 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 키를 저장합니다.

기기 무결성을 확인하는 방법

기기 증명은 발급자가 기기를 등록하기 전에 기기의 무결성을 확인할 수 있는 보안 기능입니다. 이렇게 하면 조작되었거나 승인되지 않은 소프트웨어를 실행하는 기기의 등록을 방지할 수 있습니다.

기기의 무결성을 확인하려면 발급자는 다음을 수행해야 합니다.

  1. /registerDevice 요청에서 전송된 인증서 체인을 검증합니다. 체인의 루트 인증서는 Google에서 제공하는 인증서와 일치해야 합니다.
  2. 루트 인증서가 인증서 취소 목록에 포함되지 않아야 합니다.
  3. 리프 인증서를 파싱하고, 확장 프로그램을 읽고, 다음을 확인합니다.
    • attestationChallenge 값은 /getDeviceRegistrationNonce 작업 중에 전송된 nonce과 일치합니다.
    • teeEnforced.rootOfTrust에는 다음과 같은 속성이 있습니다.
      • deviceLocked=TRUE
      • verifiedBootState=VERIFIED
    • softwareEnforced.attestationApplicationId의 패키지 이름이 com.google.android.gms 또는 com.google.android.gsf와 일치합니다.

기기 증명 프로세스의 다양한 부분에 대한 설명

  • 인증서 체인: 인증서 체인은 기기의 ID를 인증하는 일련의 인증서입니다. 체인의 루트 인증서는 가장 신뢰할 수 있는 인증서이며 체인의 각 후속 인증서는 위의 인증서로 서명됩니다.
  • 인증서 해지 목록: 인증서 해지 목록 (CRL)은 어떤 이유로든 해지된 인증서의 목록입니다. 기기 증명 인증서 체인의 루트 인증서가 CRL에 있으면 인증서가 무효이며 기기 증명을 신뢰해서는 안 됩니다.
  • 리프 인증서: 리프 인증서는 기기에 특정한 인증서입니다. 여기에는 하드웨어 식별자, 소프트웨어 버전과 같은 기기에 관한 정보가 포함됩니다.
  • 확장 프로그램: 확장 프로그램은 인증서에 포함된 추가 정보입니다. 기기 증명 인증서에는 기기의 무결성을 확인하는 데 사용되는 여러 확장 프로그램이 포함되어 있습니다. 자세한 내용은 인증서 확장 데이터 스키마를 참고하세요.