Google Play Juegos se encuentra en versión beta abierta.

Protección de la integridad

Los desarrolladores invitados tienen acceso a varias funciones que proporcionan protección de la integridad. La API de Play Integrity y la Protección automática de la integridad funcionan tanto en Google Play Juegos como en las plataformas móviles.

API de Play Integrity

La API de Play Integrity te ayuda a proteger tus juegos de interacciones potencialmente peligrosas y fraudulentas, ya que te permite tomar las medidas adecuadas a fin de reducir los ataques y los abusos, como fraudes, trampas y acceso no autorizado. El servidor backend de tu juego puede recibir señales sobre el canal de distribución (mediante una licencia o si se instala desde Play Store), el paquete de aplicación (que no se alteró ni modificó de ninguna manera) y el mismo dispositivo (p. ej., un dispositivo vulnerado o con permisos de administrador). Esta es la única solución compatible con Google que proporciona un indicador confiable de que los usuarios están dentro de Google Play Juegos y no en otro entorno virtual. Esto te permite hacer lo siguiente:

  • Protegerte contra accesos sin autorización asegurándose de que Google Play instale y distribuya tu APK
  • Protegerte contra la manipulación del APK verificando que el servidor backend de tu juego interactúe con objetos binarios no modificados
  • Asegurarte de que los objetos binarios x86 que se publicaron recientemente se ejecuten en el entorno virtual de Google Play Juegos y no se puedan utilizar en plataformas no compatibles

La API de Play Integrity reúne varios indicadores en un token encriptado, ofrece veredictos de integridad positivos para los dispositivos Android y entornos virtuales genuinos que hayan aprobado las verificaciones de integridad de Google Play. Recomendamos usar la API de Play Integrity durante los eventos principales del juego cuando la app se está ejecutando (por ejemplo, cuando el usuario realiza una compra directa desde la aplicación o cuando el juego guarda las puntuaciones del usuario). No se recomienda usar esta API de forma predefinida, como cuando se llama a la API en un momento predeterminado.

La API proporciona la máxima flexibilidad, pero requiere la ejecución de código adicional en un servidor de confianza. No se recomienda la validación en el dispositivo dado que no es segura. La solución completa debe incluir un componente del servidor que brinde las bases necesarias para la verificación de integridad y la validación de respuesta. Te recomendamos que evites enviar una decisión binaria de sí o no al dispositivo y, en su lugar, modifica el comportamiento de la aplicación según el veredicto que proporcionó la API de Play Integrity.

La API de Play Integrity es la sucesora de la API de SafetyNet Attestation (SNAA) y de las API de Play App Licencing. La SNAA no funcionará con Google Play Juegos porque solo muestra indicadores negativos cuando verifica la integridad de la app.

Campo de integridad del dispositivo

El campo deviceIntegrity contiene un solo valor, deviceRecognitionVerdict, que representa la eficacia con la que un dispositivo puede aplicar de manera forzosa la integridad de la app. De forma predeterminada, deviceRecognitionVerdict puede tener una de las siguientes etiquetas:

  • MEETS_DEVICE_INTEGRITY: La app se está ejecutando en un dispositivo Android con los Servicios de Google Play. El dispositivo pasa las verificaciones de integridad del sistema y cumple con los requisitos de compatibilidad de Android.
  • MEETS_VIRTUAL_INTEGRITY: La app se está ejecutando en un entorno virtual de Android con los Servicios de Google Play, que actualmente se limita a Google Play Juegos. El entorno cumple con los requisitos principales de compatibilidad de Android y aprueba las verificaciones de integridad de Google Play.
  • Sin etiquetas (por ejemplo, un valor en blanco): La app se está ejecutando en un dispositivo que tiene señales de ataque (como trampas de API) o de vulneración del sistema (como un dispositivo con permisos de administrador), o bien en un dispositivo no físico (como un emulador) que desaprueba las verificaciones de integridad de Google Play.

La API de Play Integrity usa la etiqueta deviceRecognitionVerdict de MEETS_VIRTUAL_INTEGRITY para indicar que el juego se ejecuta en Google Play Juegos. A continuación, se muestra un ejemplo de una respuesta de aprobación de la API de Play Integrity:

deviceIntegrity: {
    // "MEETS_VIRTUAL_INTEGRITY" indicates the game is running on Google Play Games
    deviceRecognitionVerdict: ["MEETS_VIRTUAL_INTEGRITY"]
}

Asegúrate de que la lógica de validación verifique la etiqueta MEETS_VIRTUAL_INTEGRITY en Google Play Juegos.

Si también tienes un juego multiplataforma disponible para dispositivos móviles, asegúrate de que la lógica de validación también verifique la etiqueta MEETS_DEVICE_INTEGRITY.

Para obtener más información, consulta la documentación de la API de Play Integrity.

Protección automática de la integridad

La Protección automática de la integridad es una verificación de tiempo de ejecución que agrega Google Play cada vez que se abre el juego. Si el juego se alteró o Google Play no lo instaló, la Protección automática de la integridad puede impedir que se ejecute. Dado que no verifica el dispositivo, es necesario usar la API de Play Integrity a fin de obtener su estado de integridad.

La Protección automática de la integridad ayuda a proteger la integridad con las siguientes funciones:

  • Requisito de instalación desde Google Play: Agrega una verificación para comprobar si tu app se instaló desde Google Play. Si falla esta verificación, se le solicitará al usuario que descargue la app desde Google Play. Esta función recomendada está activa de forma predeterminada, pero se puede desactivar. Si lo haces, se inhabilitará la protección contra piratería para las aplicaciones pagadas.
  • Restricción de modificaciones: Agrega una verificación para comprobar si tu app sufrió alguna modificación. Si falla la verificación, no podrá ejecutarse la app. Esta función siempre está activa y no se puede desactivar.
  • Restricción de ingeniería inversa: Agrega ofuscación y otras técnicas avanzadas que dificultan la posibilidad de quitar las verificaciones en el tiempo de ejecución. Esta función siempre está activa y no se puede desactivar.

La Protección automática de la integridad requiere la habilitación del desarrollador. Asimismo, no necesita cambios en el código ni trabajo del desarrollador. Las protecciones se ejecutan independientemente de que haya conexión a Internet o de datos, y no necesita que haya componentes del servidor. Ten en cuenta que si se habilita la opción "Requerir la instalación desde Google Play", se necesitará conexión de datos constante si la app de Play Store del dispositivo estuvo sin conexión durante un período prolongado.

Otras consideraciones de Google Play Juegos

Play ofrece un conjunto de productos de integridad que te ayudarán a proteger tu juego. Consulta la documentación de integridad de Play para obtener más información sobre los productos disponibles. En esta sección, se destacan las consideraciones especiales a la hora de usar estos productos con Google Play Juegos.

Cómo excluir de la distribución los dispositivos poco confiables

Google Play Console tiene un parámetro de configuración que te permite evitar que tu app esté disponible para instalarse desde Google Play en dispositivos que no hayan aprobado las verificaciones de integridad.

Por el momento, esta función no es compatible con Google Play Juegos y evita la distribución del juego en la plataforma. No habilites esta regla de exclusión en el catálogo de dispositivos.

API de Play Integrity

La API de Play Integrity usa la etiqueta MEETS_VIRTUAL_INTEGRITY de deviceRecognitionVerdict para indicar que el juego se ejecuta en Google Play Juegos. A continuación, se muestra un ejemplo de una respuesta de aprobación de la API de Play Integrity:

deviceIntegrity: {
    // "MEETS_DEVICE_INTEGRITY" is one of several possible values.
    deviceRecognitionVerdict: ["MEETS_VIRTUAL_INTEGRITY"]
}

Asegúrate de que la lógica de validación verifique la etiqueta MEETS_VIRTUAL_INTEGRITY.

Para obtener más información, consulta la documentación de la API de Play Integrity.