Android 13 이상 기기에서 확인 결과가 개선됨

최근 Google은 Play Integrity API의 확인 결과를 강화하여 속도를 높이고, 공격에 대한 복원력을 높이고, 사용자의 개인 정보 보호를 강화하는 등 보안을 개선했다고 발표했습니다.

변경사항 요약

이 문서의 뒷부분에서 변경사항과 자주 묻는 질문(FAQ)에 관한 자세한 요약을 확인할 수 있습니다. 2025년 5월의 평결 변경사항은 다음과 같습니다.

내용 변경사항 예상 영향* 어떤 기기
Play Integrity API 요청을 하는 모든 개발자에게 영향을 미치는 변경사항
기기 결과 응답: meets-device-integrity 하드웨어 지원 긍정적 자체 검사 부팅 평결이 있어야 합니다. Play Integrity API가 이미 Android 13 이상 기기 (~0.4%)에서 하드웨어 지원 보안 신호를 사용하므로 영향이 최소화됩니다. Android 13 이상
앱 무결성 응답: 앱 인식 확인 결과 변경사항 없음 영향이 미미하며 기기 평결의 변경사항을 반영합니다 (~0.4%). Android 13 이상
계정 세부정보 응답: Play 라이선스 판결 요청하는 앱은 Google Play에서 설치하거나 업데이트해야 함 라이선스가 부여된 대답이 약간 감소함 (~2.5%) Android 6 이상
선택적 기능을 사용하는 Play Console 개발자 및 Play SDK Console 개발자에게만 영향을 미치는 변경사항
기기 확인 결과 응답: meets-basic-integrity Android 플랫폼 키 증명이 있어야 하지만 부팅 상태는 인증되거나 인증되지 않은 상태여도 됨 기본 응답이 약간 감소함 (~0.4%) Android 13 이상
기기 확인 결과 응답: meets-strong-integrity 지난 1년 동안 보안 업데이트가 있어야 합니다. 강한 반응 감소 (~14.5%) Android 13 이상
모든 선택적 신호 (기기 속성 제외)** 요청하는 앱은 Google Play에서 설치하거나 업데이트해야 함 선택적 신호가 포함된 응답의 비율 감소 (~7%) Android 13 이상

*앞서 언급한 예상 영향 비율은 모두 평균을 기반으로 하며, 앱에 따라 설치한 사용자 수에 따라 변동률이 크거나 작을 수 있습니다.

**선택적 신호 (기기 속성 제외)는 meets-basic-integrity, meets-strong-integrity, 최근 기기 활동, 기기 리콜 (베타), Play 프로텍트 상태, 앱 액세스 위험입니다.

자주 묻는 질문(FAQ)

개요

Play Integrity API란 무엇인가요?

Play Integrity API는 기기, 앱, 사용자에 관한 정보를 획득하여 사용자의 앱 환경의 신뢰성을 평가하므로 잠재적인 악용과 공격을 감지하고 대응할 수 있습니다.

Play Integrity API는 어떤 신호를 제공하나요?

Play Integrity API에는 요청 앱의 ID, 요청 앱이 Google Play에 의해 설치되었는지 여부, 기기가 정품 인증 Android 기기인지 여부가 포함됩니다. 이러한 신호는 기본적으로 제공됩니다. 앱의 백엔드 서버에서 이러한 신호를 읽고 앱이 응답해야 하는지 여부와 방법을 결정할 수 있습니다. Google Play 개발자는 Play 설치에서 추가 신호를 수신하여 더 많은 정보를 확인할 수 있습니다.

Android 플랫폼 키 증명이란 무엇인가요?

Android 플랫폼 키 증명을 사용하면 앱이 기기 상태를 확인하고 하드웨어 지원 부팅 무결성의 강력한 신호를 얻을 수 있습니다. 기기의 하드웨어 지원 키 저장소에 Google에서 프로비저닝한 키에 따라 달라집니다. Play Integrity API는 이미 일부 기기에서 키 증명을 사용하여 하드웨어 지원 보안 신호를 획득하고 있으며, 이제 Android 13 이상을 실행하는 모든 기기에서 이를 더 깊이 통합할 예정입니다.

평결 변경

Android 13 이상 기기에서 Play Integrity API 확인 결과가 어떻게 변경되었나요?

이제 Play Integrity API는 모든 무결성 확인 결과에 하드웨어 지원 보안 신호를 요구합니다.

  • meets-device-integrity 기기 인식 평결은 앱이 실행되는 기기가 정품 인증된 Android 기기임을 나타냅니다. 이 판결에서는 기기 부트로더를 잠그고 로드된 Android OS가 인증된 기기 제조업체 이미지여야 합니다.
  • meets-strong-integrity 기기 인식 확인 결과는 최신 보안 업데이트가 적용된 인증된 정품 Android 기기를 나타냅니다. 이 평결에는 Android OS 파티션 패치와 공급업체 파티션 패치를 비롯한 기기의 모든 파티션에 지난 1년간 meets-device-integrity 및 보안 업데이트가 필요합니다. 이 조건은 향후 변경될 수 있습니다.
  • meets-basic-integrity 기기 인식 확인 결과는 실제 Android 지원 기기에서 확인이 이루어졌음을 나타냅니다. 기기 부트로더는 잠겨 있거나 잠금 해제되어 있을 수 있으며 부팅 상태는 인증되거나 인증되지 않은 상태일 수 있습니다. 인증되지 않았을 수 있으며, 이 경우 Google은 보안, 개인 정보 보호 또는 앱 호환성을 보장할 수 없고 기기가 Android의 가상 인스턴스와 같은 프록시로 작동하지 않는다고 보장할 수 없습니다. 이는 또한 루팅된 기기도 키 증명이 있는 한 meets-basic-integrity를 반환할 수 있다는 의미입니다.

이러한 변경사항은 PC용 Play 게임즈의 Play Integrity API에 영향을 미치지 않으며 계속해서 meets-virtual-integrity를 반환합니다.

Android 13 이상 기기에서 Play Integrity API 확인 결과가 변경된 이유는 무엇인가요?

Play Integrity API는 Android 12 이하에서 하드웨어 지원 보안 신호를 부분적으로 사용했습니다. Android 13 이상에서 하드웨어 지원 보안을 요구함으로써 Play Integrity API 확인 결과는 공격에 대한 복원력이 높아지고, 앱의 성능이 향상되며, 사용자의 개인 정보 보호가 강화됩니다. 개발자는 Android 13 이상을 실행하는 기기에서 다음과 같은 개선사항을 기대할 수 있습니다.

  • Google 서버에서 기본 확인 결과를 생성하기 위해 수집하고 평가해야 하는 기기 신호가 약 90% 감소합니다. 선택적 신호는 계속해서 추가 신호를 수집해야 합니다.
  • 최악의 표준 요청의 경우 최대 80%, 기본 평결을 얻기 위한 모든 기존 요청의 경우 최대 80% 까지 평결 지연 시간 개선 선택적 신호는 지연 시간을 늘릴 수 있습니다.
  • 모바일, 태블릿, 폴더블, TV, Auto, Wear OS, ChromeOS를 비롯한 주요 증명으로 모든 Android 폼 팩터를 일관되게 지원하고 안정성을 유지합니다.
  • 기기 인식 평결(meets-strong-integrity, meets-device-integrity, meets-basic-integrity)에서 각 기기 라벨 간의 차이가 더 커집니다.

PC용 Play 게임즈의 Play Integrity API 확인 결과는 변경되지 않으며 Android 13 이상과 Android 12 이하에서 동일합니다.

무결성 평결이 Android SDK 버전을 고려하도록 앱의 백엔드 로직을 업데이트하려면 어떻게 해야 하나요?

Android SDK 버전에 따라 앱의 백엔드 서버에서 다른 로직을 사용하려면 확인 결과의 새 기기 속성 필드를 사용하면 됩니다. 다음은 이 작업을 수행하는 방법의 예입니다.

Kotlin

val deviceIntegrity =
  JSONObject(payload).getJSONObject("deviceIntegrity")
val sdkVersion =
  if (deviceIntegrity.has("deviceAttributes")) {
    deviceIntegrity.getJSONObject("deviceAttributes").getInt("sdkVersion")
  } else {
    0
  }

if (sdkVersion >= 30) {
  // Provide Android R+ specific experience to the user.
}

자바

JSONObject deviceIntegrity =
  new JSONObject(payload).getJSONObject("deviceIntegrity");
int sdkVersion =
  deviceIntegrity.has("deviceAttributes")
    ? deviceIntegrity.getJSONArray("deviceAttributes").getInt("sdkVersion")
    : 0;

if (sdkVersion >= 30) {
  // Provide Android R+ specific experience to the user.
}

모든 Android SDK 버전에서 이전 meets-strong-integrity 라벨 정의를 사용하려면 어떻게 해야 하나요?

Android SDK 버전이 포함된 확인 결과의 새 기기 속성 필드를 사용하여 Android 13 이전 기기인 경우 meets-strong-integrity을 사용하고 Android 13 이상 기기인 경우 meets-device-integrity을 사용하도록 앱의 백엔드 로직을 업데이트하면 됩니다. 다음은 이 작업을 수행하는 방법의 예입니다.

Kotlin

val deviceRecognitionVerdict =
  if (deviceIntegrity.has("deviceRecognitionVerdict")) {
    deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString()
  } else {
    ""
  }

val deviceIntegrityToCheckFor =
  sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY";

if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) {
  // Looks good!
}

자바

JSONObject deviceIntegrity =
  new JSONObject(payload).getJSONObject("deviceIntegrity");
String deviceRecognitionVerdict =
  deviceIntegrity.has("deviceRecognitionVerdict")
    ? deviceIntegrity.getJSONArray("deviceRecognitionVerdict").toString()
    : "";

String deviceIntegrityToCheckFor =
  sdkVersion < 33 ? "MEETS_STRONG_INTEGRITY" : "MEETS_DEVICE_INTEGRITY";

if (deviceRecognitionVerdict.contains(deviceIntegrityToCheckFor)) {
  // Looks good!
}

하드웨어 지원 신호이기도 하므로 기기 속성 필드는 Android 13 이상을 실행하는 기기에서 가장 신뢰할 수 있습니다.

다른 평결 변경사항은 무엇인가요?

Google은 Play Integrity API의 기존 신호의 신뢰성을 높이기 위해 지속적으로 투자하고 있으며, 개발자가 새로운 위협과 새로운 사용 사례에 대처할 수 있도록 주기적으로 새로운 기능을 출시하고 있습니다. 그 외에 Google에서 내린 평결을 개선한 사항은 다음과 같습니다.

  • Play 라이선스 응답: Play 라이선스 응답을 반환하기 위해 Play Integrity API는 이제 요청 앱이 Google Play에 의해 설치되거나 업데이트되도록 항상 요구합니다. 이렇게 하면 일부 극단적인 사례가 수정되고 개발자가 응답을 더 쉽게 해석할 수 있습니다.
  • 선택적 신호 사용 가능 여부: 이제 Google Play Console 또는 Play SDK Console을 사용하는 개발자가 사용할 수 있는 모든 선택적 신호 (기기 속성 제외)에는 요청 앱이 Android 13 이상에서 Google Play에 의해 설치되거나 업데이트되어야 합니다. 여기에는 meets-strong-integrity, meets-basic-integrity, 최근 기기 활동, 기기 리콜 (베타), 앱 액세스 위험 평결, Play 프로텍트 평결이 포함됩니다. 기기 확인 (meets-device-integrity 라벨만 포함), 설치 프로그램 확인, 앱 무결성 확인, 기기 속성 (사용 설정된 경우)을 수신하도록 다른 모든 Play Integrity API 요청을 표준화했습니다.
  • 특정 기기의 확인 결과 변경: Play Integrity API는 과도한 활동이나 키 유출의 증거가 있는 경우와 같이 모든 Android SDK 버전에서 앱을 더 일찍 보호하기 위해 더 많은 시나리오에서 기기 확인 결과를 자동으로 변경합니다. 여기에는 하드웨어 지원 신호를 사용할 수 없을 때 Play에서 다른 신호로 대체하여 사용자의 임시 기기 평결을 생성하는 기능이 포함됩니다. 개발자는 인앱 Play 수정 대화상자를 사용하거나 사용자를 Play 스토어 앱으로 안내하여 무결성 확인 결과 문제를 해결하는 것이 좋습니다. 향후 이러한 대화상자에서는 더 많은 시나리오를 다루고 사용자에게 특정 기기나 계정을 기반으로 수정해야 하는 사항을 알려주는 구체적인 안내를 포함할 예정입니다.

무결성 확인 결과 문제를 신고하려면 어떻게 해야 하나요?

Play Integrity API의 응답에 문제가 있는 경우(기존 확인 결과 또는 새로운 확인 결과와 관련된 문제) 지원 페이지의 안내를 따르세요.

가용성

Play Integrity API가 작동하려면 무엇이 필요한가요?

Play Integrity API를 사용하려면 기기에 Google Play 스토어와 Google Play 서비스가 설치되어 있어야 합니다. 여기에는 Android 기기와 PC용 Google Play 게임즈가 포함됩니다. 클래식 요청에는 Android 4.4 (API 수준 19) 이상이 필요하고 표준 요청에는 Android 5.0 (API 수준 21) 이상이 필요합니다. Android 13 (API 수준 33) 이상을 실행하는 기기에서 이제 Play Integrity API는 휴대전화, 태블릿, 폴더블, TV, 자동차, Wear OS, ChromeOS를 비롯한 모든 Android 폼 팩터에서 동일한 수준의 안정성과 지원을 제공합니다.

Play Integrity API의 확인 결과가 기기마다 다른 이유는 무엇인가요?

Play Integrity API는 다양한 사용 사례와 위험 허용 범위를 가진 개발자를 수용하고 계층화된 시행 전략을 사용할 수 있도록 여러 기기 확인 결과를 제공합니다. 예를 들어 앱과 기기가 더 신뢰할 수 있는 경우 개발자는 사용자 인증 단계를 간소화할 수 있습니다. 반면 기기가 알 수 없는 경우 개발자는 보호되거나 민감한 작업을 실행하기 전에 추가 사용자 인증을 요구할 수 있습니다. 이는 악용 및 공격을 줄이는 효과적인 방법이 될 수 있습니다.

인증된 Android 기기란 무엇인가요?

인증된 Android 기기 (Play 프로텍트 인증 Android 기기라고도 함)는 예측 가능한 소프트웨어를 실행하고, 수백 건의 Google 호환성 테스트를 통과하고, Android 보안 및 권한 모델을 준수하고, Google Play 프로텍트 멀웨어 방지 기능 모음과 함께 제공되는 기기입니다. Play Integrity API가 기기가 정품 인증된 Android 기기임을 확인할 수 있는 경우 기기 인식 확인 결과에서 meets-device-integrity 응답을 반환합니다.

meets-basic-integrity 기기란 무엇인가요?

Play Integrity API는 기기 확인 결과에서 선택적 응답인 meets-basic-integrity도 반환합니다. 기기가 meets-device-integrity 또는 meets-strong-integrity 없이 meets-basic-integrity 결과만 반환하는 경우 Android OS를 확인할 수 없지만 키 증명이 있음을 의미합니다. 이는 실제 Android 지원 기기에서 검사가 이루어졌음을 나타내지만, Google에서는 기기의 보안, 개인 정보 보호, 앱 호환성을 보장할 수 없으며 기기가 Android의 가상 인스턴스와 같은 프록시 역할을 하지 않는다고 보장할 수 없습니다. 개발자는 사용 사례와 위험 허용 범위에 따라 이러한 기기에서 앱을 실행하는 방법을 결정할 수 있습니다.

모든 개발자가 Play Integrity API를 사용할 수 있나요?

예, 모든 Android 개발자는 Play Integrity API 요청을 통해 기본 무결성 확인 결과를 받을 수 있습니다. 배포 채널과 관계없이 사용량은 일일 10,000개의 요청으로 제한됩니다. 다른 배포 채널은 물론 Google Play에도 앱을 게시하는 개발자는 일일 할당량 증가를 요청할 수 있습니다.

모든 개발자가 Android 플랫폼 키 증명을 사용할 수 있나요?

예, 모든 Android 개발자는 Android 플랫폼 키 증명을 사용하여 키 증명 레코드를 획득할 수 있으며, 이 레코드는 Google의 증명 루트 키의 공개 인증서로 확인할 수 있습니다. Play Integrity API는 개발자가 키 증명과 통합하지 않아도 키 증명의 이점과 추가 기능을 제공합니다.

시행 조치

개발자는 Play Integrity API 확인 결과를 어떻게 사용하나요?

Play Integrity API 확인 결과를 사용할지 여부와 사용 방법은 개발자가 결정합니다. 일부 개발자는 내부 악용 방지 분석을 위해 신호를 수집하고, 다른 개발자는 평결에 따라 앱의 동작 방식을 결정합니다. 예를 들어 개발자는 신뢰도가 낮은 기기에서 계정을 만들 때 추가 사용자 인증 단계를 수행하도록 요구할 수 있습니다. 또는 신뢰도가 낮은 기기가 동일한 멀티플레이어 서버에서 함께 플레이하도록 결정할 수 있습니다.

Play Integrity API는 사용자 또는 기기를 차단하나요?

아니요, Play Integrity API는 자체적으로 기능 액세스를 차단하지 않습니다. 신호를 제공하는 선택적 개발자 서비스이며 개발자는 이러한 신호에 따라 어떻게 조치를 취할지 선택합니다.

기기가 Play Integrity API 기기 검사에 실패하면 사용자는 어떻게 해야 하나요?

사용자는 기기에서 Play 스토어 앱으로 이동하여 설정 메뉴를 열고 아래로 스크롤하여 정보를 찾은 다음 Play 프로텍트 인증을 확인할 수 있습니다. 기기의 Play 프로텍트 인증에 문제가 있는 경우 사용자가 문제를 해결하기 위해 누를 수 있는 버튼이 표시됩니다. 이렇게 하면 기기의 인증 상태가 새로고침되고 수정해야 할 사항에 관한 구체적인 안내가 제공됩니다.