기기 회상 (베타)을 사용하여 반복 악용 감지

이 페이지에서는 기기 회상을 사용하여 특정 기기로 맞춤 데이터를 저장하고 검색하는 방법을 설명합니다. 나중에 앱이 동일한 기기에 설치되면 기기를 초기화한 후에도 맞춤 데이터를 안정적으로 다시 호출할 수 있습니다. 이를 통해 사용자 개인 정보를 보호하면서 지정한 작업이나 동작에 따라 기기가 재사용되지 않도록 감지하고 방지할 수 있습니다.

기기 회상 작동 방식

기기 회상을 사용하면 앱에서 사용자 개인 정보 보호 방식으로 특정 기기와 연결된 맞춤 데이터를 저장하고 다시 호출할 수 있습니다. 데이터가 Google 서버에 저장되므로 앱을 다시 설치하거나 기기를 초기화한 후에도 앱에서 맞춤 데이터를 안정적으로 회상할 수 있습니다. 예를 들어 이 기능을 사용하여 심각한 악용의 증거가 확인된 기기나 이미 높은 가치의 항목 (예: 무료 체험판)을 사용한 기기, 악용의 목적으로 새 계정을 만들기 위해 반복적으로 사용되는 기기를 회상할 수 있습니다. 기기 회상은 사용자 개인 정보를 보호합니다. 요청하는 앱이 기기 또는 사용자 식별자에는 액세스하지 않고 기기와 관련된 제한적인 데이터만 회상할 수 있기 때문입니다. 기기 회상을 사용 설정하면 다음 작업을 할 수 있습니다.

  • 기기별 데이터 읽기: 무결성 확인 결과를 얻을 때 기기별로 세 개의 맞춤 값 또는 비트를 읽을 수 있습니다. 이러한 값은 직접 정의할 수 있습니다. 예를 들어 값을 세 개의 별도 플래그로 간주하거나 8개의 맞춤 라벨을 나타내도록 조합할 수도 있습니다.
  • 기기별 데이터 수정: 무결성 토큰을 획득하면 토큰을 사용하여 Google Play 서버에 대한 서버 측 호출을 실행해 값을 하나 이상 수정할 수 있습니다. 토큰의 사용 기간은 최대 14일입니다. 예를 들어 무결성 검사를 처음 실행한 후 2주 이내에 악용이 분명해지는 경우에만 값을 수정할 수 있습니다. 값을 수정하면 수정이 이뤄진 연월도 저장됩니다.

기기 회상 기본 요건 및 고려사항

기기 회상은 앱 보안을 보호하고 악용과 사기, 무단 액세스를 완화하기 위해 정보를 저장하고 회상하는 데만 사용할 수 있습니다. 기기 회상을 사용하여 개별 사용자나 기기를 지문으로 식별하거나 추적할 수는 없으며, 기기 회상을 사용하여 성별이나 연령, 위치 데이터와 같은 민감한 사용자 또는 기기 특성을 추적할 수도 없습니다.

기기 회상에는 다음 기본 요건이 있습니다.

  • 기기 회상은 휴대전화, 태블릿, 폴더블, TV, 자동차, Wear OS에서 사용할 수 있습니다. Wear에서 기기 회상은 Wear OS 5 이상으로 출시된 기기에서만 사용할 수 있습니다. 에뮬레이터에서는 기기 회상이 지원되지 않습니다.
  • 기기 회상을 사용하려면 최신 버전의 Google Play 스토어와 Google Play 서비스를 모두 기기에 설치하고 사용 설정해야 합니다.
  • 기기 회상을 사용하려면 사용자 계정에 Play 라이선스가 있어야 하며 없으면 확인 결과가 평가되지 않습니다.

기기 회상에는 다음과 같은 타이밍 고려사항이 있습니다.

  • 무결성 토큰을 확인한 후 최대 14일 동안 이를 사용하여 맞춤 기기 회상 데이터를 저장할 수 있습니다.
  • 기기 회상에는 오래전에 수정된 데이터보다 최근 수정된 데이터를 높은 우선순위로 고려할 수 있도록 타임스탬프가 포함되어 있습니다. 기기의 주인이 바뀌거나 기기가 리퍼되어 재판매될 수 있음을 고려할 만큼 오랜 기간이 지난 후에는 데이터를 무시하거나 초기화하는 것이 좋습니다.
  • 기기의 리콜 비트는 마지막 읽기 또는 쓰기 액세스 후 3년 동안 저장됩니다.
  • 기기와 관련된 데이터를 모두 삭제해야 한다면 앱은 기기의 세 가지 값을 모두 false로 재설정할 수 있습니다. 이렇게 하면 자동으로 타임스탬프가 재설정됩니다.

앱이 여러 개인 개발자와 앱을 이전하는 개발자의 경우 기기 회수는 다음과 같이 작동합니다.

  • Google Play 개발자 계정의 모든 앱에서 기기별 세 가지 값에 동일하게 액세스할 수 있습니다. 즉, 앱 하나가 한 가지 값을 수정하면 모든 앱이 동일한 기기에 설치될 때 수정된 값을 읽습니다.
  • 앱이 한 개발자 계정에서 다른 개발자 계정으로 이전되면 기기 회상은 이전 개발자 계정의 기기별 데이터가 아닌 새로운 개발자 계정의 기기별 데이터를 반영합니다.

기기 회상 사용 설정하기

준비가 되면 Play Console에서 기기 회상을 사용 설정합니다.

  1. Play Console에 로그인합니다.
  2. 기기 회상을 사용할 앱을 선택합니다.
  3. 왼쪽 메뉴의 출시 섹션에서 앱 무결성으로 이동합니다.
  4. Play Integrity API 옆에 있는 설정을 클릭합니다.
  5. 페이지의 '응답' 섹션에서 응답 변경을 클릭합니다.
  6. 기기 회상을 사용 설정합니다.
  7. 변경사항 저장을 클릭합니다.

기기 회상을 사용 설정 또는 사용 중지하면 Play Console에서 설정한 Play Integrity API 테스트 응답이 삭제되므로 다시 만들어야 합니다.

기기 회상 값 읽기

기기 회상은 Play Integrity API 기존 요청 및 표준 요청에서 모두 작동합니다. 표준 요청에서 기기 회상은 준비 호출에서 새로고침됩니다. 즉, 기기별 데이터를 수정한 후 업데이트된 값을 확인하려면 또 다른 준비 작업을 실행해야 합니다. 기기 회상을 사용 설정하면 무결성 확인 결과에서 기기 회상 값을 읽을 수 있습니다.

기기 회상 값 수정

무결성 확인 결과 디코딩과 유사하게 서버 간 API 호출을 실행하여 기기 회상 값을 수정할 수 있습니다. 비트를 true로 설정하면 쓰기 날짜도 업데이트됩니다(이미 true인 경우에도). 비트를 false로 설정하면 쓰기 날짜가 빈 상태로 재설정됩니다. 요청에서 지정되지 않은 비트는 변경되지 않고 유지됩니다. 비트를 쓰는 것과 확인 결과에서 이를 다시 읽을 수 있는 것 사이에는 약간의 전파 지연이 있습니다. 이 지연은 최대 30초가 될 수 있지만 일반적으로 이보다 훨씬 짧습니다. 기기 리콜 쓰기 요청은 무결성 토큰 요청보다 빈도가 낮아야 합니다. 무결성 토큰 요청 할당량에 포함되지 않지만 비공개 방어 비율 제한이 적용됩니다.

playintegrity.googleapis.com/v1/PACKAGE_NAME/deviceRecall:write -d \
'{
  "integrityToken": "INTEGRITY_TOKEN",
  "newValues": {
    "bitFirst": true,
    "bitThird": false
  }
}'
newValues.BitFirst = true // ForceSendFields optional for value true
newValues.BitSecond = false // ForceSendFields required for value false
newValues.BitThird = nil // do not set ForceSendFields for unspecified bits
newValues.ForceSendFields = []string{"BitSecond"}