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 se usa 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

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

Requisitos previos

Para integrar la API de Play Integrity en tu app, haz lo siguiente:

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 cada una de las prácticas recomendadas que se mencionan en esta secció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

Principalmente, debes llamar a la API para proteger acciones valiosas y no recurrentes que sean una parte integral de la experiencia del usuario, como acceder a un servicio o unirse a un servidor multijugador.

En promedio, una llamada por usuario activo por día resulta razonable, aunque un usuario que realice varias acciones valiosas en un día podría requerir varias llamadas.

Genera nonces con cuidado

Los nonces deben ser únicos e impredecibles para un atacante.

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 extraer y quitar estos detalles del APK o del repositorio.

Envía varias decisiones del servidor a la app

En lugar de enviar una sola respuesta de aprobación o error desde el servidor hacia la app, es mejor enviar una serie de indicadores y resultados de decisiones que sean más difíciles 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 ser más confiable que uno que solo muestra MEETS_BASIC_INTEGRITY, y la respuesta de tu servidor se puede personalizar según corresponda. Esto se puede combinar con diferentes acciones en función de 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 hacer que fallen las verificaciones de integridad del dispositivo. Esto puede provocar que no se generen etiquetas para un dispositivo que sea de confianza. Para mitigar estas situaciones, asegúrate de incluir una opción de reintento con retirada exponencial.

Uso general de la API

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

A nivel general, tu app o juego usan la API de Play Integrity de la siguiente manera:

  1. El backend del servidor de la app genera y envía un nonce único a la lógica del cliente. En los pasos restantes, se hace referencia a esta lógica como tu "app".
  2. Tu app 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 al servidor de Play. El servidor de Play desencripta y verifica el veredicto, y pasa los resultados al 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 un máximo 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 de la API, busca la propiedad Nivel de uso de la API. El valor de esta propiedad muestra el nivel de uso de la API.

Cambia tu nivel de uso

Si deseas solicitar que se cambie el nivel de uso de tu app, comunícate con el equipo de asistencia para desarrolladores en Play Console.