2012-01-09 3 views
5

La sección Security Controls en el resumen de facturación integrada en aplicaciones instruye para realizar una "verificación de firma" en un servidor remoto en lugar de en la aplicación (que se ejecuta localmente en el dispositivo Android):¿Por qué la verificación de firma en el servidor remoto es más segura que en el dispositivo?

Mediante la realización de verificación de firma que pueda ayuda a detectar las respuestas que han sido manipuladas o que han sido falsificadas. Puede realizar este paso de verificación de firma en su aplicación; sin embargo, si su aplicación se conecta a un servidor remoto seguro, entonces recomendamos que realice la verificación de la firma en ese servidor .

Pero si realizo la verificación de la firma en el servidor remoto, esperando una respuesta única o yes/notrue/false, este no es realmente más fácil de interceptar y modificar por un atacante?

Y si la respuesta del servidor remoto es otra firma, ¿cómo es más seguro verificar la segunda firma localmente en el dispositivo que hacerlo para la primera firma (Market)?

¿Qué me estoy perdiendo?

Actualización: @alf señaló correctamente que si el servidor es también responsable de la entrega de contenido adquirido y la verificación de la firma se realiza en el servidor, a continuación, incluso si el atacante comprometa la aplicación, el servidor no entregar el contenido comprado a través de la facturación integrada en la aplicación. Esto es trivial y bien entendido.

Lo que no se menciona inicialmente es que en realidad estoy refiriendo a un escenario en el que el servidor no entrega ningún contenido sino que sólo se verifica la firma, por lo que la aplicación puede decidir si desbloquear ciertas características . En tal caso, ¿cuál es la ventaja de la verificación remota de firmas del servidor a través de la aplicación?

+0

También me pregunto si la verificación de la firma del servidor es realmente necesaria al implementar la facturación en la aplicación solo para desbloquear funciones. ¿Cuáles fueron tus hallazgos? –

Respuesta

3

¿no es esto realmente más fácil de interceptar y modificar por un atacante?

Si está utilizando SSL para comunicarse con el servidor, no pueden interceptar y modificar la respuesta. SSL también verifica la identidad del servidor, por lo que está seguro de que está hablando con su propio servidor, no con el del atacante.

En cuanto a por qué realizar la verificación de la firma en el servidor, la idea del comentario del documento original es que si lo hace en el cliente, debe almacenar la clave pública dentro de la aplicación. El atacante podría intercambiar la clave con la suya, y las firmas generadas por el atacante verificarán que está bien. Puede evitar esto haciendo la verificación en el servidor. Sin embargo, las herramientas de cracking de la vida real como AntiLVL buscarán el bytecode que devuelve true/false y lo modifica para devolver siempre true.

+0

Y con esto llamado ["truco inteligente de certificado SSL"] (http://techcrunch.com/2011/11/14/siri-cracked-open-theoretically-opening-it-up-to-other-devices-or -even-android /) parece que no tiene sentido ningún tipo de verificación, ni siquiera en el servidor a través de SSL ... –

+0

Nada especial sobre esto, es solo DNS spoofing. Esto se puede hacer fácilmente en un entorno de laboratorio controlado, pero no trivial en la Internet real. Especialmente para sitios importantes. –

2

Porque tiene el control del código de verificación en el servidor. El código en el extremo del dispositivo podría haber sido comprometido.

+3

Pero el código que busca 'verdadero/falso' en el dispositivo también podría verse comprometido ... ¿Qué me estoy perdiendo? –

2

Si no realiza la verificación de firma en el servidor, el atacante no se molestará con su dispositivo. O, si lo desea, puede descargar su aplicación, descompilarla y simplemente eliminar la verificación. ¿Qué vas a hacer contra una aplicación modificada?

+0

Incluso si realizo la verificación de la firma en el servidor, el atacante puede descompilar la aplicación y simplemente eliminar la parte que se comunica con el servidor para obtener el resultado de la verificación. ¿Qué voy a hacer contra eso? –

+2

En este caso, el atacante no obtendrá su precioso contenido, que es responsabilidad del servidor entregar. La suposición es que los servidores de Android Market confían (¡ja!), Su servidor es de confianza, pero usted no tiene control sobre la aplicación. – alf

+0

En este caso, tienes razón, por supuesto. Olvidé mencionar que estoy hablando de usar la facturación integrada en la aplicación para desbloquear funciones, no para entregar contenido. ¿Puedes referirte a ese escenario? +2 por ahora. –

Cuestiones relacionadas