Quindi sto lavorando a un'app mobile in questo momento che effettuerà richieste a un'API REST costruita con Django.Come posso condividere la chiave segreta della mia app mobile con il server la prima volta che la creo?
Al fine di proteggere l'API, ho intenzione di utilizzare un sistema di autenticazione della coppia di chiavi privata/pubblica.
Il flusso di lavoro che ho pensato più o meno così:
- L'utente accede a utilizzare Facebook
- Una volta che l'utente firma l'applicazione genera una chiave
- La chiave privata privata è condivisa tra la server e l'app in modo che il server sappia mappare quella chiave privata a un utente specifico.
- Ogni volta che l'app mobile effettua una richiesta, l'app genera un HMAC/firma utilizzando i parametri di richiesta e la chiave privata. Oltre all'HMAC, l'app invia anche user_id dell'utente che l'ha inviata (che fungerà da chiave pubblica).
- Quando il server riceve la richiesta, genera il proprio HMAC. Prende user_id e cerca la chiave privata in una tabella. Utilizzando la chiave privata, ricrea l'HMAC con i parametri della richiesta e la confronta con l'HMAC che l'app mobile ha inviato. Se il server e il cellulare hanno HMAC corrispondenti, allora esegue la richiesta.
Ora il mio problema si trova nel passaggio 3 in cui la chiave privata deve in qualche modo essere condivisa tra l'app mobile e il server. Come posso inviare in modo sicuro la chiave privata?