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/no
true/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?
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? –