Utiliza App Attest y DeviceCheck para prevenir fraudes en iOS

Utiliza App Attest y DeviceCheck para prevenir fraudes en iOS

App Attest y DeviceCheck son importantes para retener ingresos. Los desarrolladores de aplicaciones pueden minimizar el fraude utilizando App Attest y DeviceCheck, dos herramientas proporcionadas por Apple. Aquí te explicamos cómo utilizarlas para prevenir modificaciones no autorizadas en tu aplicación, y para evitar que los usuarios adquieran ilegítimamente contenido premium.

Como desarrollador de aplicaciones, hay varias formas en las que puedes ganar dinero con tus creaciones. Sin embargo, no todos pueden estar dispuestos a pagar, pero aún así desean acceder a algunas funciones premium pagas. Los desarrolladores buscan evitar este tipo de comportamiento. Aquí es donde entran en juego App Attest y DeviceCheck de Apple.

Al utilizar el framework DeviceCheck de Apple, puedes asegurarte de que solo los usuarios autorizados puedan acceder a contenido y promociones premium. DeviceCheck ayuda a mitigar el fraude en ofertas promocionales en aplicaciones.

Por ejemplo, si tu aplicación ofrece promociones o contenido premium, algunos usuarios pueden intentar abusar de las funciones para obtener múltiples artículos gratuitos. Esto podría hacerse desinstalando y volviendo a instalar tu aplicación. El framework DeviceCheck permite a tu aplicación verificar si un dispositivo ha recibido previamente una oferta promocional en particular.

Estas verificaciones están vinculadas al Secure Enclave en cada dispositivo de Apple. Se combinan con una cuenta de Apple y una clave criptográfica privada para garantizar la autorización. Dos bits de estado del dispositivo almacenados por Apple junto con una marca de tiempo por dispositivo, por desarrollador, persistente a través de reinicios del dispositivo. Los dos bits almacenados por Apple relacionan a cada desarrollador de Apple con un estado conocido para cualquier promoción registrada previamente por aplicación.

DeviceCheck realiza un seguimiento de los dispositivos por dispositivo, por desarrollador de aplicaciones. El estado de DeviceCheck se guarda a través de reinicios del dispositivo, incluso si el dispositivo de Apple se restablece por completo a la configuración de fábrica. Estas verificaciones pueden ser utilizadas por tu aplicación para ver si una promoción específica fue utilizada anteriormente por cualquier aplicación asociada con una cuenta de Apple en cualquier dispositivo de Apple.

App Attest también forma parte del framework DeviceCheck y te permite rastrear cualquier servicio ofrecido por tu aplicación para determinar si ese servicio es reconocido por tu aplicación. Para utilizar App Attest, necesitarás un servidor o servicio basado en la nube para recibir tokens basados en hardware del dispositivo del usuario, junto con una solicitud de App Attest. Tu servidor debe luego reenviar estas solicitudes de la aplicación a un servidor de App Attest de Apple para su verificación.

Si el servidor de Apple devuelve que la aplicación y el servicio son válidos, tu servidor informa al dispositivo emisor que la solicitud es válida. Dado que cada solicitud está vinculada a información de hardware específica del dispositivo, las solicitudes no pueden ser falsificadas o copiadas para otros dispositivos. App Attest también evita que se copien ilegítimamente funciones premium de la aplicación o del servicio de un dispositivo a otro.

App Attest proporciona tres piezas clave de información que tu aplicación puede utilizar para verificar que una solicitud proviene de un dispositivo Apple auténtico y autorizado:

– Dispositivo Apple genuino
– Identidad auténtica de la aplicación
– Carga útil confiable

Al verificar un dispositivo Apple genuino, puedes asegurarte de que la aplicación y el contenido premium se estén ejecutando en un dispositivo Apple real. La identidad auténtica de la aplicación garantiza que la aplicación que realiza la solicitud sea la tuya y que sea una copia legítima. Una que se haya descargado desde la App Store. Las cargas útiles confiables se pueden verificar para confirmar que la función premium o el contenido promocional está autorizado, ha sido comprado y no ha sido manipulado.

Al utilizar estas tres piezas de información, tu aplicación puede garantizar que el contenido esté disponible para el usuario. Esto evita que los hackers y los jailbreakers intenten descargar o reutilizar contenido premium pagado y autorizado en otro dispositivo de Apple. La comprobación genuina del dispositivo se logra mediante un examen de un par de claves seguras en el dispositivo, que es utilizado por el Secure Enclave. Se combina con una solicitud de App Attest del dispositivo que se genera utilizando el par de claves válido.

Las claves seguras forman parte de lo que se llama Infraestructura de Clave Pública (PKI), que utiliza cifrado para crear claves seguras y enviarlas a través de una red. Al utilizar claves seguras y firmas digitales, una aplicación y un dispositivo pueden confirmar que una solicitud se origina de quien dice ser.

Cuando tu aplicación realiza una solicitud de App Attest, puede utilizar las claves seguras para hacerlo, que luego pueden ser verificadas por el servidor. Cada clave segura es única por instalación y no se sincronizan ni copian entre dispositivos. Una copia codificada de la ID de paquete de cada aplicación solicitante también se envía con cada solicitud para su verificación.

Para agregar App Attest a tu aplicación en Xcode, primero debes incluir el framework DeviceCheck en la pestaña de Información de compilación en el panel de frameworks de cada objetivo del proyecto. Para utilizar App Attest en tu aplicación, la aplicación debe estar ejecutándose en un dispositivo con un Secure Enclave. Por lo tanto, siempre debes verificar la capacidad de utilizar App Attest en tu aplicación antes de hacerlo realmente.

Hay también tres partes para agregar App Attest a tu aplicación:

– Generar una clave de App Attest
– Verificar claves
– Generar y verificar afirmaciones

Para crear una clave de App Attest en el código de tu aplicación, utiliza la propiedad .shared en el objeto de clase DCAppAttestService de esta manera:

let appAttestService = DCAppAttestService.shared

Esto crea una variable local llamada appAttestService a partir de la propiedad .shared y almacena una copia del objeto de servicio compartido. Una vez que tengas una instancia de la propiedad .shared, puedes usarla para crear una clave:

Generar una clave de dispositivo para App Attest. En el código anterior, primero obtienes una instancia compartida de la clase DCAppAttestService. Luego verificas su propiedad .isSupported para asegurarte de que AppAttest esté disponible en este dispositivo, y luego generas una clave con el método .generateKey. Si .generateKey devuelve un error, lo verificas y lo manejas, de lo contrario la clave se devuelve en keyId. Una vez que tengas la clave, puedes almacenarla para su uso posterior, probablemente en un objeto que definiste y creaste previamente.

El framework DeviceCheck también soporta interfaces Objective-C si todavía estás utilizando ese lenguaje en lugar de Swift. Si la propiedad .isSupported devuelve NO o la clave devuelve nil, no puedes usar AppAttest en tu aplicación. Debes estar preparado para manejar estos casos también. En estas situaciones, asume que el llamante no es de confianza, luego diseña tu propia lógica de código basada en un conjunto de reglas de evaluación de riesgos para determinar si las funciones premium deben permitirse. Este enfoque es una validación de segundo nivel cuando la propiedad .isSupported devuelve NO.

Validar clave. Suponiendo que tienes una clave válida del código anterior, el siguiente paso es validar o atestiguar la clave. Para hacer esto, tu aplicación necesitará crear un desafío de servidor único. Este desafío está diseñado para atestiguar la clave que generaste con un desafío de tu servidor, que valida la clave en combinación con la información de la cuenta del usuario. También necesitarás idear código del lado del servidor para hacer esto en cada ocasión de atestiguar claves. La atestación de claves proporciona un nivel adicional de seguridad al prevenir ataques de intermediarios y de repetición.

El primer paso en este proceso es generar una atestación de clave. Utilizas el mismo objeto de servidor de atestación de aplicaciones que arriba, pero con el método .attestKey. Al utilizar este método, pasas el keyID original, un hash de datos del cliente, un objeto de atestación y una variable de error opcional que el método .attestKey toma como entrada. Al regresar, el objeto de atestación se puede utilizar para el desafío de servidor.

El propósito del método .attestKey es utilizar la clave privada del dispositivo para crear una solicitud de atestación de hardware opaca. Una atada a la clave y a este dispositivo específico. Esta atestación de hardware se envía luego a un servidor de atestación de Apple para su verificación de hardware. Una vez verificada, el servidor de Apple… (texto cortado)



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *