¿Cómo garantizar criptográficamente que los datos provienen de una aplicación confiable en un dispositivo móvil?

1

Me gustaría que una aplicación de código abierto genere datos y los firme de tal forma que cualquier persona con acceso solo a los datos pueda estar seguro de que fue generado por ese código de código abierto.

Más específicamente, la aplicación se ejecuta en un dispositivo móvil, por ejemplo Android, y no es una parte confiable. Genera datos al procesar las lecturas del sensor del dispositivo como cámara, gps, etc. con un algoritmo de código abierto. Los datos luego son presumiblemente firmados y cargados en una base de datos.

La idea es que alguien que tenga acceso a los datos (observador) pueda confirmar criptográficamente que fue generado por una versión conocida de la aplicación de código abierto. El observador no tiene acceso al entorno de ejecución.

¿Es posible garantizar que la aplicación es una versión oficial conocida o es posible eludirla?

    
pregunta aphoniko 30.05.2018 - 02:23
fuente

1 respuesta

2

Tu requisito tiene 2 fallas principales:

  1. no es posible incluir de forma segura un secreto en una aplicación: mediante la descompilación, el usuario final siempre podrá encontrarlo. Todo lo que puede hacer es ofuscación (busque en Google si no lo sabe).

    Las mejores prácticas en seguridad recomiendan que muy pocas personas accedan a un secreto (idealmente un solo propietario). De esa manera, si puede confirmar que el secreto ha sido utilizado, puede asumir que los datos fueron producidos por un propietario secreto. Y todo lo que no es un secreto debe ser asumido como conocido por un atacante. Eso no significa que se debe conocer públicamente, pero la seguridad no debe depender de ello.

    En contraste, la ofuscación consiste en hacer algo difícil pero no imposible de descifrar. A menudo se usa en Javascript, porque el script debe ser interpretable por un navegador, pero algunos autores no quieren que nadie pueda reutilizar fácilmente sus scripts. Pero si alguien realmente quiere hacerlo, siempre es posible entender lo que realmente hace el script.

    Incluso en el caso de software compilado, siempre es posible ejecutar el software a través de un depurador para identificar en qué punto se cifran los datos y cómo.

  2. Lo siento, pero no tiene sentido (excepto la protección de regalías del software, pero esa no es la herramienta correcta IMHO): lo que debería importar es quién envió los datos, o al menos qué instalación específica (qué máquina o grupo de máquinas ) lo envió.

    Si realmente desea saber si el software fue utilizado por un usuario legítimo, cada uno debe tener una clave privada y el software debe usar esa clave

respondido por el Serge Ballesta 30.05.2018 - 17:36
fuente

Lea otras preguntas en las etiquetas