cómo cifrar un modelo sensible en Android e iOS

0

Estoy escribiendo una aplicación móvil que utiliza un modelo estadístico contenido en archivos binarios. Quiero poder distribuir la aplicación libremente, pero no quiero que nadie pueda usar los archivos de mi modelo, incluso en un dispositivo rooteado. ¿Es esto posible?

Gracias.

    
pregunta barisdad 22.12.2014 - 15:07
fuente

2 respuestas

4

Sugeriría almacenar el modelo en el servidor, y luego hacer que la aplicación consulte el servidor con información para el modelo y obtener respuesta. Si no desea que los competidores puedan usar su servidor como el modelo en sí, sugeriría que los usuarios se registren y luego imponer un límite a la cantidad de consultas de modelos que se pueden realizar por segundo o por minuto, por lo que un competidor no puede Hardcode One cuenta en su aplicación.

Básicamente, digamos que tiene un modelo estadístico sobre la cantidad de personas que mueren por año, dada la población como aportación. Luego, asigna la población como entrada al servidor (puede ser un HTTP GET simple) y obtiene la cantidad de personas que mueren por año, como resultado.

Esto también le permite combinar diferentes modelos de manera de imponer restricciones sobre cómo se puede usar su modelo. También puede poner restricciones en entradas máximas y mínimas en enteros. Por ejemplo: si se le asigna la potencia y la frecuencia, se obtiene un valor que, aún en el lado del servidor, se alimenta a un modelo Otro que proporciona este valor y grados como entrada, da un valor de salida. En ese caso, tienes entradas: Potencia, frecuencia, grados. y luego una salida única, a partir de 2 modelos.

Si los modelos y la lógica en el lado del servidor son tan complicados que no pueden deducirse por prueba y error, tiene una solución hermética. Si algún día decide comenzar a recolectar dinero para este servicio, puede asegurarse de que solo los usuarios que pagan tengan acceso al servicio de cálculo del modelo, e incluso puede eliminar un modelo de pago por cálculo en el que el usuario tiene que pagar por cada entrada. hecho al modelo.

También asegúrese de que su modelo no esté bien, ya que podría ser reconstruido matemáticamente mediante la introducción de entradas específicamente construidas para el modelo. Entonces, el EULA tampoco puede evitarlo, ya que el usuario final podría simplemente ingresar entradas en la aplicación y obtener resultados, muchas veces para que el modelo se pueda reconstruir "fuera de la caja" y eso no contaría como ingeniería inversa.

    
respondido por el sebastian nielsen 22.12.2014 - 16:42
fuente
1

Básicamente, no ... con más detalles ... tendrá que darle a la "aplicación" alguna forma de usar el modelo. lo que significa que TODOS los métodos de encriptación requieren que le des a la "aplicación" las claves del contenido encriptado. Incluso enviarlo a la aplicación a través de Internet hace lo mismo. así que, básicamente, todo lo que puede hacer es hacer que no sea tan fácil obtener el modelo. pero la prevención total es imposible.

@sebastian, esta solución no durará mucho. ya que necesita "permitir" el acceso del cliente (lo que significa que el ingeniero inverso tiene el acceso). y la "complejidad" a menudo simplemente no existe. (casi toda la complejidad está dada o sugerida por la propia aplicación. solo las características que no están presentes de ninguna manera en la aplicación, pueden ser "ocultadas" por el ingeniero. siempre que no sean obvias y que sean complejas por sí mismas.

    
respondido por el LvB 22.12.2014 - 15:13
fuente

Lea otras preguntas en las etiquetas