¿Proteger los datos en un dispositivo móvil (incluso del usuario / propietario)?

1

Estoy escribiendo una aplicación para generar códigos OTP para la autenticación de dos factores donde necesito almacenar datos de manera segura a nivel local. Estos datos deben estar seguros tanto del propietario / usuario como de los intrusos. He estado pensando en cifrar los datos, pero la clave de esos datos también se almacena en el dispositivo móvil. La aplicación no accederá a internet. Simplemente muestra un código que cambia en un intervalo de tiempo determinado, similar a un token RSA SecurID. Los datos que se almacenarán son la clave del token y la clave para descifrarlos. He leído acerca de las posibles soluciones que pueden ser posibles para almacenar esta información en la tarjeta SIM u otro almacén seguro en el dispositivo. ¿Cuáles son las mejores prácticas de la industria para este escenario?

    
pregunta Daniel Rudy 30.10.2013 - 01:10
fuente

1 respuesta

2

El punto importante es que no puede ocultar secretos en el software: si algún software se ejecuta en el hardware del atacante (aquí, el usuario y su teléfono inteligente), el atacante puede aplicar ingeniería inversa al código de la aplicación y extraer el secreto . Si fuera posible proteger el software de eso, entonces no habría software ni piratería de video. La industria de los medios estaría muy interesada; buscaron una solución alta y baja, y gastaron mucho dinero en el tema, y no encontraron nada realmente sólido.

Por lo tanto, necesita hardware a prueba de manipulaciones , es decir, un hardware que impida la ingeniería inversa. En un teléfono inteligente, esto de hecho apunta a la tarjeta SIM: las tarjetas inteligentes son, por diseño, resistentes a la manipulación. De hecho, la tarjeta SIM es la única pieza de hardware a prueba de manipulaciones que se puede encontrar en un teléfono inteligente típico, por lo que tiene que usarla. Sin embargo, habrá desafíos adicionales:

  • Para una protección adecuada, no debe usar la tarjeta SIM solo como almacenamiento ; el punto de resistencia a la manipulación es nunca dejar que la llave salga de la tarjeta. Si la tarjeta acaba de entregar la llave a quien la solicite, el atacante no tendrá problemas para extraerla. Por lo tanto, el cálculo completo debe ocurrir dentro de la tarjeta. Dependiendo de cuán programable sea la tarjeta, esto puede o no ser fácil; En cualquier caso, el proveedor de la tarjeta y el operador telefónico deberán participar.

  • No hay reloj en una tarjeta inteligente. Si el algoritmo depende de la hora actual, entonces esa hora debe obtenerse desde el exterior, y ese "exterior" es el teléfono, bajo el control total del atacante. El teléfono puede mentir. Esto permitiría al atacante generar los códigos para, digamos, el año próximo completo. Dependiendo de lo que haga con los códigos, esto puede o no ser un problema para usted; pero debes tenerlo en cuenta en tu modelo de seguridad.

El problema del reloj podría evitarse si genera sus códigos no con un reloj, sino con un contador, como lo que se hace con HOTP . Una característica de los tokens SecurID de RSA es que incluyen un reloj con batería interna que el usuario no puede manipular; Esta es una característica costosa que explica tanto el tamaño (que es sustancialmente más grande que el chip de una tarjeta inteligente) como el precio de estos tokens.

Otra forma de evitar el problema del reloj es usar la red. El código en la tarjeta inteligente generaría un desafío aleatorio (por ejemplo, 16 bytes aleatorios), envíelo al teléfono; el teléfono luego hablaría con una Autoridad de sello de tiempo que firmaría el desafío junto con la fecha y hora actuales, y enviaría la firma. La tarjeta inteligente todavía tendría que verificar esa firma y verificar que la respuesta contenga el valor de desafío correcto. Este proceso garantiza que la tarjeta obtenga una noción no controlada de la hora actual con una precisión decente. Pero el protocolo se ha vuelto bastante complejo e involucra el acceso a la red (no necesariamente fácil, especialmente cuando el propietario del teléfono está en un país extranjero) y un servidor confiable (que debe mantenerse).

    
respondido por el Tom Leek 30.10.2013 - 15:01
fuente

Lea otras preguntas en las etiquetas