come crittografare un modello sensibile su Android e iOS

0

Sto scrivendo un'app mobile che utilizza un modello statistico contenuto nei file binari. Voglio essere in grado di distribuire l'app liberamente, ma non voglio che nessuno sia in grado di utilizzare i miei file di modello, anche su un dispositivo rooted. È possibile?

Grazie.

    
posta barisdad 22.12.2014 - 15:07
fonte

2 risposte

4

Suggerirei di memorizzare il modello sul server, e poi di avere l'app Interrogare il server con l'input per il modello e ottenere la risposta. Se non desideri che i concorrenti siano in grado di utilizzare il tuo server come modello stesso, suggerirei di richiedere agli utenti di registrarsi e quindi di imporre un limite al numero di query modello che possono essere eseguite al secondo o al minuto, quindi un concorrente non può solo hardcode un account nella loro app.

Fondamentalmente, diciamo che hai un modello statistico su quante persone muoiono ogni anno data la popolazione come input. Quindi dai la popolazione come input al server (può essere un semplice HTTP GET) e ottieni il numero di persone che muoiono ogni anno, come output.

Ciò consente anche di combinare diversi modelli per imporre restrizioni su come il tuo modello può essere usato. Puoi anche inserire restrizioni sugli input massimi e minimi nei numeri interi. Ad esempio: dando l'imputazione di Potenza e frequenza, si ottiene un valore, che, sempre sul lato server, viene inserito in un altro modello che fornisce questo valore e gradi come input, fornisce un valore di uscita. In tal caso, hai input: potenza, frequenza, gradi. e quindi una singola uscita, da 2 modelli.

Se rendi i modelli e la logica sul lato server così complicati da non poter essere dedotti per tentativi ed errori, hai una soluzione stagna. Se un giorno decidi di iniziare a raccogliere denaro per questo servizio, puoi assicurarti che solo gli utenti paganti abbiano accesso al servizio di calcolo del modello, e puoi anche stabilire un modello pay-per-calcolo dove l'utente deve pagare per ogni input fatto per il modello.

Assicurati anche che il tuo modello non sia così semplice in quanto potrebbe essere ricostruito matematicamente alimentando input appositamente costruiti per il modello. Anche l'EULA non può impedirlo, dal momento che l'utente finale può semplicemente inserire gli input nell'applicazione e ottenere i risultati, così tante volte in modo che il modello possa essere ricostruito "fuori dalla scatola" e che non contenga il riconoscimento inverso.

    
risposta data 22.12.2014 - 16:42
fonte
1

In linea di massima, no ... in maggiori dettagli ... dovrai dare alla "app" un modo di usare il modello. il che significa che TUTTI i metodi di crittografia richiedono di fornire all'app le chiavi del contenuto crittografato. anche inviarlo all'app su Internet fa lo stesso. quindi, in pratica, tutto ciò che puoi fare è rendere non così facile ottenere il modello. ma la prevenzione flat out è impossibile.

@sebastian, questa soluzione non durerà a lungo. dal momento che è necessario "consentire" l'accesso client (il che significa che il reverse engineer ha l'accesso). e la "complessità" spesso non è proprio lì. (quasi tutta la complessità è data o suggerita dall'app stessa, solo le funzioni non presenti in alcun modo nell'app possono essere "oscurate" dall'ingegnere, a condizione che non siano ovvie e complesse da quelle proprie.

    
risposta data 22.12.2014 - 15:13
fonte

Leggi altre domande sui tag