Descripción general de la API de Play Integrity

La API de Play Integrity te ayuda a proteger tus apps y juegos de interacciones potencialmente peligrosas y fraudulentas, como trampas y acceso no autorizado. Eso te permite tomar medidas adecuadas para evitar los ataques y disminuir los abusos.

Cuando tu app o juego se usan en un dispositivo con Android 4.4 (nivel de API 19) o versiones posteriores, la API de Play Integrity proporciona una respuesta firmada y encriptada que incluye la siguiente información:

  • Objeto binario original de la app: Determina si interactúas con el objeto binario sin modificar que Google Play reconoce.
  • Instalación original de Play: Determina si la cuenta de usuario actual tiene licencia, lo que significa que el usuario instaló o pagó la app o el juego en Google Play.
  • Dispositivo Android original: Indica si tu app se está ejecutando en un dispositivo Android original con la tecnología de los Servicios de Google Play.

Condiciones del Servicio y seguridad de los datos

Cuando accedes a la API de Play Integrity o la usas, aceptas sus Condiciones del Servicio. Asegúrate de leer y entender todas las condiciones y políticas aplicables antes de acceder a la API.

Google Play tiene una sección de Seguridad de los datos para que los desarrolladores divulguen las prácticas de seguridad, uso compartido y recopilación de datos de sus apps. A fin de ayudarte a completar los requisitos de esta sección, consulta la siguiente información sobre cómo la API de Play Integrity controla los datos.

Consideraciones de seguridad

Si bien la API de Play Integrity mejora la seguridad y protege contra la manipulación, esta le brinda el máximo valor a tu app cuando sigues las prácticas recomendadas que se mencionan a continuación:

Asegúrate de contar con una estrategia contra el abuso

La API de Play Integrity funciona mejor cuando se usa junto con otros indicadores como parte de tu estrategia general contra el abuso y no como tu único mecanismo antiabuso. Usa esta API junto con otras prácticas recomendadas de seguridad para tu app.

No obtengas el token de integridad con demasiada frecuencia

Generar un token de integridad consume tiempo, datos y batería, y cada app tiene una cantidad máxima de llamadas que puede hacer por día, en función de lo definido por su nivel de uso. Por lo tanto, debes llamar a la API para proteger las acciones poco frecuentes y de alto valor que son una parte integral de la experiencia del usuario, como acceder a un servicio o unirte a un servidor multijugador. No debes llamarla cuando se trate de acciones de alta frecuencia o de bajo valor. Por ejemplo, no la llames cada vez que la app pase a primer plano ni cuando transcurran pocos minutos en segundo plano. Es posible que una app que realiza demasiadas llamadas a la API sea limitada para proteger a los usuarios de implementaciones incorrectas.

Usa el campo nonce para proteger aún más tu app

La API de Play Integrity ofrece un campo llamado nonce, que puede usarse para proteger aún más tu app contra ciertos ataques, como los de repetición y los de manipulación relacionados a ataques de intermediario (PITM). La API de Play Integrity muestra el valor que estableces en este campo, dentro de la respuesta de integridad firmada. Sigue con atención las instrucciones para generar nonces a fin de proteger tu app de ataques.

Usa un entorno de servidor seguro

Realiza toda la desencriptación y verificación desde un entorno de servidor seguro. Si tu app cliente expone detalles de seguridad, un atacante podría extraerlos del APK o repositorio y obtener información valiosa sobre la app o el juego.

Envía un rango de respuestas del servidor a la app

En lugar de enviar la misma respuesta binaria de correcto o incorrecto del servidor a la app cada vez que corresponda, te recomendamos que establezcas un rango de resultados de decisiones, ya que esto resulta más difícil de replicar. Por ejemplo, puedes usar una serie de respuestas relacionadas, como Permitir, Permitir con límites, Permitir con límites después de que se complete el reCAPTCHA y Rechazar.

Asegúrate de contar con una estrategia de aplicación por niveles

En Play Console, puedes habilitar la opción para recibir etiquetas de dispositivo adicionales que permitan crear una estrategia contra el abuso con varios niveles de aplicación. Si habilitas la opción para recibir etiquetas adicionales, la respuesta de integridad incluirá varias etiquetas para el mismo dispositivo si se cumplen cada uno de los criterios de esas etiquetas. Por lo tanto, puedes preparar tu servidor de backend para que se comporte de manera diferente según el rango de respuestas posibles.

Por ejemplo, un dispositivo que muestra MEETS_BASIC_INTEGRITY, MEETS_DEVICE_INTEGRITY y MEETS_STRONG_INTEGRITY podría resultar más confiable que uno que solo muestra MEETS_BASIC_INTEGRITY. Puedes configurar la respuesta del servidor en función de ello. Esto se puede combinar con diferentes acciones según si la cuenta de usuario es LICENSED o UNLICENSED.

Vuelve a intentarlo con una retirada exponencial

Las condiciones del entorno, como una conexión a Internet inestable o un dispositivo sobrecargado, pueden causar fallas en las verificaciones de integridad del dispositivo. Esto puede provocar que no se generen etiquetas para un dispositivo que sea de confianza. A fin de mitigar estas situaciones, asegúrate de incluir una opción de reintento con retirada exponencial.

Muestra mensajes de error prácticos

Cuando sea posible, proporciona mensajes de error útiles al usuario y dile qué hacer a los efectos de solucionarlo, como volver a intentar la acción, habilitar la conexión a Internet o verificar si la app de Play Store está actualizada.

Uso general de la API

Figura 1: Diagrama de secuencia que muestra el diseño general de la API de Play Integrity.

Cuando el usuario realice una acción de alto valor en tu app que quieras proteger con una verificación de integridad, completa los siguientes pasos:

  1. El backend del servidor de la app genera y envía un valor único a la lógica del cliente. En los pasos restantes, se hace referencia a esta lógica como tu "app".
  2. Tu app crea el nonce a partir del valor único y el contenido de la acción de alto valor. Luego, llama a la API de Play Integrity y pasa el nonce.
  3. Tu app recibe un veredicto firmado y encriptado de la API de Play Integrity.
  4. Tu app pasa el veredicto firmado y encriptado a su backend.
  5. El backend de tu app envía el veredicto a un servidor de Google Play. El servidor de Google Play desencripta y verifica el veredicto, y muestra los resultados en el backend de la app.
  6. El backend de la app decide el procedimiento, según los indicadores contenidos en la carga útil del token.
  7. El backend de tu app envía los resultados de la decisión a la app.

Niveles de uso de la API

Las solicitudes a la API están sujetas a una cantidad máxima por app y por día según lo determinado por el nivel de uso asignado de la app que realiza la llamada. En la siguiente tabla, se muestran los diferentes niveles:

Tabla 1: Niveles de uso de la API de Play Integrity
Nivel de uso Cantidad de llamadas a la API permitidas por día Requisitos
Estándar Hasta 10,000 Disponible para las apps que usan cualquier canal de distribución
Elevado Más de 10,000 - límite sujeto a aprobación Se debe implementar, de manera correcta, la lógica de API, incluidos los reintentos.
Disponible para apps que usan cualquier canal de distribución además de Google Play

Si el nombre de paquete en Google Play y en otros canales de distribución es el mismo, se cuenta como una sola app en términos de uso de la API. Puedes usar un solo ID del proyecto de Google Cloud para varias apps con diferentes nombres de paquetes. Si lo haces, estas apps se cuentan como una sola en términos de uso de la API.

Consulta tu nivel de uso

Para ayudarte a evaluar la frecuencia con la que interactúas con la API de Play Integrity, Play Console muestra el nivel de uso de tu app. Para consultar este nivel de uso, haz lo siguiente:

  1. Accede a Play Console.
  2. Selecciona una app que use la API de Play Integrity.
  3. En la sección Versión del menú de la izquierda, ve a Configuración > Integridad de la app.
  4. En la pestaña API de Integrity, en la sección Configuración, busca la propiedad de nivel de uso. El valor de esta propiedad muestra el nivel de uso de tu app.

Cambia tu nivel de uso

Si deseas solicitar que se cambie el nivel de uso de tu app, completa este formulario. Debes solicitar pasar al nivel de uso superior si tu app necesita controlar una mayor cantidad de usuarios, pero no para llamar a la API con mayor frecuencia por usuario. Incluso con un nivel de uso superior, tu app debe continuar limitando las llamadas a la API a acciones poco frecuentes y de alto valor.