Visão geral da API Play Integrity

A API Play Integrity ajuda a proteger apps e jogos contra interações potencialmente perigosas e fraudulentas, como trapaças e acesso não autorizado. Assim, você pode tomar medidas adequadas para evitar ataques e reduzir abusos.

Quando o app é usado em um dispositivo com o Android 4.4 (nível 19 da API) ou mais recente, a API Play Integrity fornece uma resposta criptografada e assinada que inclui as informações abaixo:

  • Binário genuíno do app: determina se você está interagindo com o binário não modificado reconhecido pelo Google Play.
  • Instalação genuína do Play: determina se a conta do usuário atual é licenciada, o que indica se o usuário instalou ou pagou pelo app ou jogo no Google Play.
  • Dispositivo Android genuíno: informa se o app está sendo executado em um dispositivo Android genuíno com a tecnologia do Google Play Services.

Termos de Serviço

Ao acessar ou usar a API Play Integrity, você concorda com os Termos de Serviço do kit de desenvolvimento de software da Play Core. Leia e entenda todos os termos e políticas aplicáveis antes de acessar a API.

Pré-requisitos

Para integrar a API Play Integrity ao app, siga estes passos:

Considerações sobre segurança

Embora a API Play Integrity já aumente a segurança e proteja o app ou jogo contra adulterações, ela oferece um melhor resultado quando você segue todas as práticas recomendadas listadas nesta seção.

Ter uma estratégia contra abusos

A API Play Integrity funciona melhor quando usada em conjunto com outros sinais como parte da sua estratégia geral contra abuso, e não como o único mecanismo antiabuso. Use a API em conjunto com outras práticas recomendadas de segurança adequadas para o app.

Não acessar o token de integridade com muita frequência

Em primeiro lugar, chame a API para proteger ações não recorrentes e de alto valor que sejam parte fundamental da experiência do usuário, como fazer login em um serviço ou participar de um servidor multiplayer.

Em média, uma chamada por dia para cada usuário ativo é razoável, mas um usuário que realiza várias ações de alto valor em um dia pode justificar várias chamadas.

Gerar valores de uso único com cuidado

Os valores de uso único precisam ser exclusivos e impossíveis de serem previstos por um invasor.

Usar um ambiente de servidor seguro

Faça todas as validações e a descriptografia em um ambiente de servidor seguro. Caso o app cliente exponha qualquer informação de segurança, um invasor poderá extrair e remover essas informações do APK ou repositório.

Enviar várias decisões do servidor ao app

Em vez de enviar uma única resposta de aprovação/reprovação do servidor ao app, é melhor enviar vários resultados de decisão e sinais mais difíceis de replicar. Por exemplo, você pode usar uma série de respostas relacionadas, como permitir, permitir com limites, permitir com limites após o preenchimento do reCAPTCHA e negar.

Ter uma estratégia de aplicação em níveis

No Play Console, você pode optar por receber mais identificadores de dispositivos, possibilitando a criação de uma estratégia antiabuso com vários níveis de aplicação. Depois que você aceita receber outros identificadores, a resposta de integridade passa a incluir vários identificadores do mesmo dispositivo, desde que os critérios de cada identificador sejam atendidos. Assim, você pode preparar seu servidor de back-end para se comportar de maneira diferente, dependendo do intervalo de respostas possíveis.

Por exemplo, um dispositivo que retorna MEETS_BASIC_INTEGRITY, MEETS_DEVICE_INTEGRITY e MEETS_STRONG_INTEGRITY pode ser mais confiável que um dispositivo que retorna somente MEETS_BASIC_INTEGRITY. Você pode adaptar o servidor para responder de acordo isso. A resposta pode ser combinada com ações diferentes a fim de determinar se a conta de usuário é LICENSED (licenciada) ou UNLICENSED (não licenciada).

Tentar novamente com espera exponencial

Condições de ambiente, como uma conexão de Internet lenta ou um dispositivo sobrecarregado, podem causar falhas na verificação de integridade do dispositivo. Isso pode fazer com que nenhum identificador seja gerado para um dispositivo que seria confiável, não fossem essas condições. A fim de reduzir essas situações, inclua uma opção para tentar novamente com espera exponencial.

Uso da API em níveis superiores

Figura 1. Diagrama de sequência que mostra o design de alto nível da API Play Integrity.

De maneira geral, o app ou jogo usa a API Play Integrity desta maneira:

  1. O back-end do servidor do app gera e envia um valor de uso único exclusivo para a lógica do lado do cliente. As etapas restantes se referem a essa lógica como o "app".
  2. O app chama a API Play Integrity, transmitindo um valor de uso único.
  3. O app recebe um veredito assinado e criptografado da API Play Integrity.
  4. O app transmite o veredito assinado e criptografado para o back-end.
  5. O back-end do app envia o veredito ao servidor do Google Play. O servidor do Google Play descriptografa e verifica o veredito, transmitindo os resultados ao back-end do app.
  6. O back-end do app decide como proceder, de acordo com os sinais contidos no payload do token.
  7. O back-end do app envia os resultados da decisão para o app.

Níveis de uso da API

As solicitações da API estão sujeitas a um total máximo por dia para cada app, conforme determinado pelo nível de uso atribuído ao app de chamada. A tabela abaixo mostra os diferentes níveis:

Tabela 1. Níveis de uso da API Play Integrity
Nível de uso Número de chamadas de API permitidas por dia Como qualificar
Padrão Até 10.000 Disponível para apps que usam qualquer canal de distribuição
Acima do padrão Chamadas acima do limite de 10.000 estão sujeitas a aprovação É necessário implementar corretamente a lógica da API, incluindo novas tentativas
Disponível para apps que usam qualquer canal de distribuição em conjunto com o Google Play

O mesmo nome de pacote no Google Play e em outros canais de distribuição é considerado como um único app em termos de uso da API. É possível usar um único ID de projeto do Google Cloud para vários apps com diferentes nomes de pacotes. Se você fizer isso, os apps serão considerados como um único app em termos de uso da API.

Ver o nível de uso

Para ajudar a avaliar a frequência de interação com a API Play Integrity, o Play Console mostra o nível de uso do app. Siga estes passos para ver o nível de uso:

  1. Faça login no Play Console.
  2. Selecione um app que usa a API Play Integrity.
  3. Na seção Versão do menu à esquerda, acesse Configuração > Integridade do app.
  4. Na guia API Integrity, na seção Configuração da API, procure a propriedade Nível de uso da API. O valor dessa propriedade mostra o nível de uso da API.

Mudar o nível de uso

Para mudar o nível de uso do app, entre em contato com o suporte ao desenvolvedor no Play Console.