Un'app Android/Iphone accederà ai dati dell'applicazione dal server. [Django-Python]Protezione della comunicazione [Autenticità, privacy e integrità] con l'app mobile?
Come posso proteggere la comunicazione con l'app mobile?
Aspettativa: Abbastanza sicuro per informazioni sensibili come le password, non ci sarà alcun modo diretto di decrittazione tranne brute-forzatura.
miei requisiti:
- autenticazione [l'applicazione è autorizzata solo]
- integrità [I messaggi non devono essere modificati in mezzo]
- Privacy [La comunicazione non deve essere leggibile se annusato]
Il mio impegno:
- SSL autentica solo il server, non il client.
- posso-non usare una crittografia simmetrica [Fornisce solo Privacy]
- firma digitale non è possibile [Manca Privacy]
- PGP pieno riempie tutti e 3 i requisiti.
Problema:
- PGP richiede ai tasti memorizzare sul client app.
- Non sembra esserci un modo sicuro per proteggere le chiavi sull'app client.
- Se la chiave è fuori, la crittografia PGP o Symmetric è ugualmente vulnerabile.
- Le chiavi PGP o tasti simmetrici di Reverse Engineering sono ugualmente difficili.
- In questo caso PGP è un onere non sense sul processore mobile.
- OAuth è di nuovo inutile, poiché ha anche una chiave client.
Quindi, come posso/devo andare avanti su questo? Come funziona il settore?
Devo implementare approccio informale:
- Usa semplice SSL e incrocio le dita?, poiché l'autenticazione non è possibile se le chiavi vengono rubate?(Autenticazione del server è il solo possibile con questo)
Aggiornamento:
Conclusione era di usare AES, dal momento che se riesco a tenere la chiave sicuro allora io sono buono come SSL. Inoltre, posso continuare a modificare i tempi di consegna della chiave per una maggiore sicurezza. Contribuisci se pensi che ci sia un modo migliore, leggi l'intero post prima di postare.
Non avete integrità con AES: http://security.stackexchange.com/questions/ 9437/does-SIMMETRIC-CRAFTTION-provide-Integrity-Data – schlamar
Posso crittografare un 'SHA1' con i dati per implementare l'integrità con' AES', che può essere facilmente verificata quando decifrata al destinatario. –
Sei ancora più vulnarable. Se si utilizza AES e vi è una divulgazione della chiave, l'utente malintenzionato può leggere tutte le comunicazioni come MITM. Con SSL, un utente malintenzionato può semplicemente falsificare un client autorizzato e non leggere la comunicazione di altri client. – schlamar