Come garantire crittograficamente che i dati provengano da un'applicazione attendibile su un dispositivo mobile?

1

Mi piacerebbe avere un'applicazione open source per generare dati e firmarla in modo tale che chiunque abbia accesso ai dati da solo possa sapere con certezza che è stato generato da quel codice open source.

Più specificamente l'applicazione viene eseguita su un dispositivo mobile, ad esempio Android, e non è una parte affidabile. Genera dati elaborando le letture del sensore del dispositivo come fotocamera, gps, ecc. Con un algoritmo open source. I dati vengono quindi presumibilmente firmati e caricati su un database.

L'idea è che qualcuno che ottiene l'accesso ai dati (osservatore) possa confermare crittograficamente che è stato generato da una versione nota dell'applicazione open source. L'osservatore non ha accesso all'ambiente di runtime.

È possibile garantire che l'applicazione sia nota, versione ufficiale o è possibile aggirarla?

    
posta aphoniko 30.05.2018 - 02:23
fonte

1 risposta

2

Il tuo requisito ha 2 difetti principali:

  1. non è possibile includere in modo sicuro un segreto in un'applicazione: decompilando, l'utente finale sarà sempre in grado di trovarlo. Tutto quello che puoi fare è offuscamento (google se non lo sai)

    Le migliori pratiche in materia di sicurezza raccomandano che un segreto sia accessibile a pochissime persone (in teoria, un solo proprietario). In questo modo, se puoi confermare che il segreto è stato utilizzato, puoi presumere che i dati siano stati prodotti da un proprietario segreto. E tutto ciò che non è un segreto dovrebbe essere ritenuto essere conosciuto da un aggressore. Ciò non significa che dovrebbe essere pubblicamente noto, ma la sicurezza non dovrebbe dipendere da esso.

    Al contrario, l'offuscamento consiste nel fare qualcosa di difficile ma non impossibile da decodificare. È spesso usato in Javascript, perché lo script deve essere interpretabile da un browser, ma alcuni autori non vogliono che chiunque possa facilmente riutilizzare i loro script. Ma se qualcuno lo vuole davvero, è sempre possibile capire cosa fa realmente lo script.

    Anche nel caso di software compilato, è sempre possibile eseguire il software tramite un debugger per identificare a che punto i dati vengono crittografati e come.

  2. Mi dispiace ma non ha senso (tranne la protezione delle royalty del software ma non è lo strumento giusto IMHO): ciò che dovrebbe importare è chi ha inviato i dati, o almeno quale installazione specifica (quale macchina o gruppo di macchine ) inviato.

    Se vuoi veramente sapere se il software è stato utilizzato da un utente legittimo, ognuno dovrebbe avere una chiave privata e il software dovrebbe usare quella chiave

risposta data 30.05.2018 - 17:36
fonte

Leggi altre domande sui tag