Sono abbastanza nuovo per gli argomenti di sicurezza delle informazioni e sono alla ricerca di una guida per implementare la trasmissione sicura di dati statistici da un'app a un server. Inoltre, non voglio alcuna conoscenza dei dati memorizzati sul server.
Questo è il mio approccio:
- Uno sviluppatore crea una coppia di chiavi e inserisce la chiave pubblica nell'app.
- L'app genera una chiave pubblica e una privata all'avvio per la prima volta. Invia la chiave pubblica al server e ottiene in cambio un ID utente. Quindi scarta la chiave pubblica generata.
- Ogni volta che l'app invia dati, lo fa crittografando i dati con la chiave pubblica dal server e firmandoli con la propria chiave privata.
- Lo sviluppatore può quindi recuperare i dati per ciascun ID utente dal server e verificare l'autenticità con la chiave pubblica archiviata con l'ID utente.
E qui ci sono le mie domande:
- È sufficiente inviare la chiave pubblica generata sul dispositivo una volta o dovrei utilizzare uno schema più sofisticato per verificare che i dati vengano inviati da questo utente esatto? Non c'è accesso e non mi interessa chi sia l'utente. Ma voglio assicurarmi che un utente malintenzionato non possa inviare dati errati falsificando l'ID utente senza essere rilevato.
- Che cosa devo fare per rilevare i dati mancanti? Va bene se alcuni dati vengono persi a causa di problemi di rete. Sto considerando l'utilizzo di numeri interi crescenti nei dati crittografati. Questo rivelerebbe se qualcuno ruba la chiave privata e il numero corrente dall'app e invia dati errati.
- Infine, ci sono alcune implementazioni concrete che un utente inesperto come me può usare senza fare confusione?