Per utilizzare la nostra piattaforma e le nostre API, un client richiede l'integrazione di iOS e Android SDK nelle loro app mobili. A ciascuno dei client viene rilasciata una chiave API, come qualsiasi altra piattaforma come Crashlytics, MixPanel, ecc., Per comunicare con il server.
Stiamo cercando di oscurare le chiavi durante qualsiasi tipo di intercettazione di rete o MITM. Tuttavia, questo sembra essere un lavoro difficile.
Finora abbiamo provato a seguire:
1. Memorizzazione delle chiavi del cliente nel keystore, portachiavi.
2. Modificare l'intestazione, i nomi dei parametri JSON per confondere l'autore dell'attacco.
3. Mettere le chiavi in un file e poi trasmetterlo sulla rete.
4. Il metodo della prima e dell'ultima chiamata. Stiamo eseguendo l'hash del timestamp della prima richiesta e quindi confrontandolo con le successive chiamate consecutive. Se il timestamp è maggiore del primo timestamp, allora possiamo supporre che un utente malintenzionato non stia cercando di riprodurre le chiamate per abuso della piattaforma.
Non possiamo permettere che le chiavi vengano viste dall'attentatore per un motivo, ogni chiamata viene fatturata al cliente e chiunque sia a conoscenza della nostra piattaforma può causare enormi danni ai nostri clienti semplicemente rigiocando le richieste al nostro server.
Come ci assicuriamo che le chiavi siano trasmesse in modo sicuro e non siano visibili all'attaccante?
Nota: quando l'SDK su un'app mobile diventa attiva, per un cliente, stiamo aggiornando le chiavi in diverse ore del giorno e archiviandole nel portachiavi, nel keystore.
Grazie Fennec