Protege el entorno

Google ofrece un conjunto de APIs y servicios para ayudarte a detectar si tu app se ejecuta en un entorno seguro y confiable. El elemento central es la API de Play Integrity, que ayuda a verificar que las interacciones sean genuinas a través de la detección de interacciones potencialmente peligrosas y fraudulentas. Además de la integridad de la app y el dispositivo, la API de Play Integrity ahora ofrece información sobre los riesgos de acceso y accesibilidad, Google Play Protect y la actividad reciente del dispositivo. Para reforzar aún más tu estrategia contra fraudes, la plataforma de Android ofrece APIs para situaciones específicas que podrían ser relevantes para tu app.

API de Play Integrity

Funciones de la API de Play Integrity

La API de Play Integrity te permite obtener información sobre el estado de seguridad del dispositivo en el que se ejecuta tu app. Esto te ayuda a saber si el usuario adecuado accede a información sensible.

Te ayuda a verificar que las interacciones y las solicitudes del servidor provengan del objeto binario original de la app en un entorno confiable:

  • 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: Determina si tu app se está ejecutando en un dispositivo Android original con la tecnología de los Servicios de Google Play.
  • Sin software malicioso conocido: Determina si Google Play Protect está activado y si encontró apps peligrosas o peligrosas instaladas en el dispositivo.
  • Bajo riesgo de acceso por parte de otras apps: Determina si se están ejecutando otras apps que podrían capturar la pantalla o controlar el dispositivo y las entradas en tu app.

Cómo ayuda esto a mitigar el fraude

Cuando un usuario realiza una acción importante en tu app, puedes llamar a la API de Play Integrity. Si no fue así, el servidor de backend de tu app puede decidir qué acciones realizará para defenderse contra ataques y fraudes. Por ejemplo, puedes requerir una verificación adicional del usuario o denegar el acceso a funciones sensibles.

Flujo de decisión de la API de Play Integrity

Riesgo de acceso a la app

El indicador de riesgo de acceso a apps se introdujo para ayudarte a evaluar si otras apps de un dispositivo podrían estar viendo y capturando la pantalla cuando tu app se está ejecutando o accediendo a ella con permisos de accesibilidad. Las apps de accesibilidad verificadas se excluyen automáticamente de estos veredictos. El riesgo de acceso de apps ayuda a los desarrolladores a proteger sus apps y preservar la privacidad del usuario, ya que la app solicitante no obtiene la identidad de las apps instaladas y el veredicto no está vinculado con identificadores de usuarios o dispositivos.

Captura de pantalla de un teléfono que requiere que el usuario cierre ciertas apps.

Gracias a este esfuerzo colaborativo, podemos obtener los indicadores necesarios para proporcionarnos estadísticas más detalladas y, así, proteger a nuestros clientes de manera más efectiva.
—Nubank, socio de acceso anticipado

El riesgo de acceso a la app tiene diferentes niveles de riesgo:

  • Una respuesta de captura significa que se están ejecutando otras apps que pueden capturar la pantalla.
  • Una respuesta de control significa que se están ejecutando otras apps que pueden controlar el dispositivo y, por lo tanto, podrían capturar la pantalla y controlar las entradas a tu app.

El riesgo de acceso de apps está disponible ahora en versión beta pública y estará disponible de forma general en los próximos meses.

Aplicación del Riesgo de acceso a la app

Identifica acciones sensibles o de alto valor en tu app o juego para protegerlas con la API de Play Integrity en lugar de denegar directamente el acceso. Cuando sea posible, desafía el tráfico riesgoso antes de permitir que se realicen acciones de alto valor. Por ejemplo, cuando el riesgo de acceso a la app indique que se está ejecutando una app que podría capturar la pantalla, pídele al usuario que inhabilite o desinstale apps que puedan capturar la pantalla antes de permitirle continuar con la funcionalidad que quieres proteger.

Esta tabla contiene algunos veredictos de ejemplo:

Ejemplo de respuesta de veredicto de riesgo de acceso de apps Interpretación
appsDetected:
["KNOWN_INSTALLED"]
Solo hay apps instaladas que Google Play reconoce o que están precargadas en la partición del sistema por el fabricante del dispositivo. No hay apps en ejecución que generen veredictos de captura, control o superposiciones.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
Hay apps instaladas por Google Play o precargadas en la partición del sistema por el fabricante del dispositivo. Hay otras apps en ejecución que tienen permisos habilitados que podrían usarse para ver la pantalla o capturar otras entradas y salidas.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
Hay Play o un sistema en ejecución que tienen permisos habilitados que podrían usarse para ver la pantalla o capturar otras entradas y salidas. También hay otras apps en ejecución que tienen permisos habilitados que podrían usarse para controlar el dispositivo y controlar directamente las entradas de tu app.
appAccessRiskVerdict: {} No se evalúa el riesgo de acceso de apps porque se omitió un requisito necesario. Por ejemplo, el dispositivo no era lo suficientemente confiable.

Señal de Play Protect

El indicador de Play Protect le indica a tu app si Play Protect está activado y si encontró apps dañinas conocidas que están instaladas en el dispositivo.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

Si el software malicioso es una preocupación importante para tu app o los datos de tus usuarios, puedes verificar este veredicto y pedirles que activen Play Protect o quiten apps dañinas antes de continuar.

Activar diálogo de Play Protect

playProtectVerdict puede tener uno de los siguientes valores:

Veredicto Explicación Acción recomendada

NO_ISSUES

Play Protect está activado y no detectó ningún problema con las apps del dispositivo.

Play Protect está activado y no detectó ningún problema, por lo que no se requiere ninguna acción por parte del usuario.

NO_DATA

Play Protect está activado, pero aún no se realizó ningún análisis. Es posible que el dispositivo o la app de Play Store se hayan restablecido recientemente.

Play Protect está activado y no detectó ningún problema, por lo que no se requiere ninguna acción por parte del usuario.

POSSIBLE_RISK

Play Protect está desactivado.

Play Protect está activado y no detectó ningún problema, por lo que no se requiere ninguna acción por parte del usuario.

MEDIUM_RISK

Play Protect está activado y encontró apps potencialmente dañinas instaladas en el dispositivo.

Según tu tolerancia al riesgo, puedes pedirle al usuario que inicie Play Protect y tome medidas con respecto a sus advertencias. Si el usuario no puede cumplir con estos requisitos, puedes bloquearlo de la acción del servidor.

HIGH_RISK

Play Protect está activado y encontró apps peligrosas instaladas en el dispositivo.

Según tu tolerancia al riesgo, puedes pedirle al usuario que inicie Play Protect y tome medidas con respecto a sus advertencias. Si el usuario no puede cumplir con estos requisitos, puedes bloquearlo de la acción del servidor.

UNEVALUATED

No se evaluó el veredicto de Play Protect.

Esto puede ocurrir por varios motivos, incluidos los siguientes:

  • El dispositivo no es lo suficientemente confiable.
  • Solo para juegos: La cuenta de usuario no es LICENSED.

Actividad reciente del dispositivo

También puedes habilitar la actividad reciente del dispositivo, que te indica la cantidad de veces que tu app solicitó un token de integridad en un dispositivo específico durante la última hora. Puedes usar la actividad reciente del dispositivo para proteger tu app de dispositivos hiperactivos inesperados que podrían indicar un ataque activo. Puedes decidir cuánto confiar en cada nivel de actividad del dispositivo reciente en función de la cantidad de veces que esperas que tu app instalada en un dispositivo típico solicite un token de integridad cada hora.

Si aceptas recibir recentDeviceActivity, el campo deviceIntegrity tendrá dos valores:

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

Primero, debes verificar los datos para ver cuáles son los niveles típicos de actividad de los dispositivos de tu app en todos tus dispositivos. Luego, puedes decidir cómo debe responder tu app cuando un dispositivo realiza demasiadas solicitudes. Si la actividad es un poco alta, puedes pedirle al usuario que vuelva a intentarlo más tarde. Si la actividad es muy alta, te recomendamos que tomes medidas de aplicación más estrictas.

Solicitudes estándar frente a clásicas

Como parte de tu implementación de Play Integrity, es importante tener en cuenta los dos tipos de solicitudes. En la mayoría de los casos, debes usar solicitudes estándar para proporcionar la respuesta más rápida, y las solicitudes clásicas deben usarse cuando se necesita una solicitud nueva generada en el registro de certificación del dispositivo.

Solicitud clásica

Solicitud estándar

Las solicitudes tardan más tiempo y deben hacerse con menos frecuencia.

Por ejemplo, de vez en cuando para verificar si una acción altamente valiosa o sensible es genuina.

Úsalo con poca frecuencia.

Las solicitudes tienen latencia baja y se pueden usar a pedido.

Una solicitud estándar consta de dos partes:

  • Cómo preparar el proveedor de token de integridad (una sola vez)
  • Cómo solicitar un token de integridad (a pedido)

Úsalo a pedido.

Lee la documentación de Play Integrity para obtener más información sobre las solicitudes estándar y clásicas.

Implementación

Para comenzar a usar la API de Play Integrity, haz lo siguiente:

De forma predeterminada, la API de Play Integrity permite hasta 10,000 solicitudes por app por día. Para expresar tu interés en aumentar las solicitudes máximas diarias, sigue estas instrucciones. Para poder recibir un aumento en la cantidad máxima diaria de solicitudes, la app debe implementar correctamente la API de Play Integrity y estar disponible en Google Play, además de cualquier otro canal de distribución.

Aspectos que debes tener en cuenta sobre la API de Play Integrity

Protección automática de la integridad (nivel de API >= 23)

Protección automática de la integridad es un servicio de protección contra manipulaciones que protege tu app contra el abuso de integridad en forma de modificaciones y redistribuciones no autorizadas. Funciona sin conexión de datos, no requiere trabajo de los desarrolladores antes de las pruebas ni integración del servidor de backend.

Cómo ayuda esto a mitigar el fraude

Cuando activas Protección automática de la integridad, Google Play agrega verificaciones al código de tu app y hace que sea difícil quitarlas con técnicas avanzadas de ofuscación y antirreversión de ingeniería. Durante el tiempo de ejecución, la protección verifica si se manipuló o redistribuyó la app:

  • Si falla la verificación del instalador, se solicitará a los usuarios que accedan a la app desde Google Play
  • Si falla la verificación de modificaciones, no se ejecutará la app

Esto ayuda a mantener a los usuarios protegidos de las versiones modificadas de tu app.

Implementación

Por el momento, Protección automática de la integridad solo está disponible para socios de Play seleccionados. Comunícate con el equipo de asistencia para desarrolladores de Google Play si la función no está disponible en tu cuenta de Google Play Console y quieres expresar tu interés en obtener acceso.

Puedes activar la protección cuando crees una versión o en la página Integridad de la app (Versión > Integridad de la app). La protección automática de la integridad requiere que tu app use la firma de apps de Play.

Asegúrate de probar la app protegida antes de promocionar la versión a producción.

Aspectos que debes tener en cuenta

  • No lances versiones de apps desprotegidas
  • Ten cuidado a la hora de mezclar soluciones de protección contra manipulaciones
  • Prueba tu app protegida antes de lanzarla a producción
  • Supervisa las estadísticas con normalidad para ver si hay aumentos en las fallas.
  • Puedes denunciar las versiones pirateadas de tu app en Google Play