API pubblicamente disponibile + ID sensibile / Trasmissione chiave su HTTP

1

Mi sono imbattuto in una situazione difficile ... Sto sviluppando un'applicazione mobile che utilizza un server per varie cose. Una parte è che memorizza una coppia id / chiave relativa all'accesso e all'elaborazione delle informazioni sulle transazioni per account specifici. Questo ID / chiave per account specifici viene deciso dinamicamente in base a ciò che accade al client e a quale account deve accedere all'interno del codice sul lato client. Tuttavia, poiché si accede a tutte le informazioni per l'app tramite un'API su HTTP (S), l'id / chiave potrebbe potenzialmente essere pubblicamente disponibile per le persone con cattive intenzioni ..

Sono estremamente paranoico delle violazioni della sicurezza di queste informazioni, ma ho bisogno di trovare un modo per farlo arrivare al cliente in modo sicuro senza possibilità di intercettazione.

Ho pensato ad alcuni modi, ma non ho ideato nulla che sembra a prova di tutto, e non sono sicuro che ci sia qualcosa di garantito dal momento che anche un valore cifrato di questa coppia di id / chiavi può essere acquisito con le credenziali API.

La mia idea principale era una sorta di autenticazione dinamica client / server che è generata in modo univoco e identificabile tra entrambe le entità, insieme a una crittografia a 2 vie salata di questo id / chiave che viene passata al client? Anche se questo potrebbe essere violato se qualcuno è riuscito a scavare nel codice compilato e vedere come viene generata questa autenticazione / sale dinamico.

Ovviamente, è meglio al 100% non dover trasmettere queste informazioni al cliente, ma sfortunatamente in questa situazione specifica non c'è modo di aggirarlo.

Data la delicatezza di queste informazioni, la soluzione qui deve essere solida.

    
posta Braydon Batungbacal 08.07.2014 - 04:24
fonte

1 risposta

1

Dovrebbe essere possibile ottenere la chiave sul client senza il rischio che un utente malintenzionato con accesso alla connessione di rete possa intercettarlo. Potrebbe essere inattivo con qualcosa come SSL che utilizza specifici certificati server e client per autenticare ogni estremità della connessione.

Tuttavia un utente malintenzionato con accesso al codice client (ad esempio la maggior parte delle piattaforme mobili) sarà sempre in grado (in teoria) di accedere a qualsiasi segreto che si tratti del client sia che il certificato client sia in uso o la chiave stessa, e dovresti davvero pianificare il tuo modello di sicurezza con questo pensiero in mente.

Una volta che qualcosa viene posto su un sistema su cui non hai alcun controllo, devi assumere che un utente malintenzionato che ha il controllo su quel sistema abbia accesso ad esso.

    
risposta data 08.07.2014 - 08:59
fonte

Leggi altre domande sui tag