Sto facendo un'applicazione web che distribuisce i dati crittografati con le chiavi pubbliche dei suoi clienti. In questo momento funziona per dispositivi dedicati che distribuisco da solo. Prima che vengano spediti, faccio lampeggiare la coppia di chiavi pubblica / privata nel firmware del dispositivo.
Tuttavia, dal momento che questo è il 2017, volevo anche creare un'applicazione Android per fare in modo che qualsiasi dispositivo Android si comportasse come uno dei dispositivi che vendevo, poiché questo è più semplice per i clienti. L'unico collo di bottiglia che sto vivendo è la distribuzione delle chiavi.
Posso generare una coppia di chiavi pubblica / privata sul dispositivo Android al primo avvio dell'app e archiviarli in modo sicuro nella memoria interna, ma devo trovare un modo per inviare la chiave pubblica generata del dispositivo Android al mio server, quindi il mio server può crittografare i dati con esso.
Il motivo per cui non posso semplicemente inviare la chiave pubblica come richiesta HTTP al mio server è che non voglio che qualcuno con un computer sia in grado di generare una coppia di chiavi pubblica / privata e inviarlo al mio server in grado di ricevere dati come. È molto facile decompilare le applicazioni Android o usare wireshark per scoprire l'url utilizzato per registrare nuove chiavi.
Se dovessi utilizzare in questo modo, come potrei verificare ai miei server che la richiesta provenga da un dispositivo Android legittimo?