Uso un FPS incredibile e devo memorizzare la chiave segreta nel codice java. Tuttavia temo che qualcuno possa decompilare il mio apk e trovare la chiave. Ho decompilato l'apk da solo e non sono riuscito a trovare la chiave, ma non sono un esperto di VM. Qualsiasi aiuto?Tasto di memorizzazione Android, decompilazione della paura
risposta
Non è possibile inserire la chiave di crittografia nell'applicazione e aspettarsi che rimanga un segreto. Basta un determinato programmatore per decompilarlo e trovare la chiave, e possono condividerlo con il mondo.
La crittografia asimmetrica/chiave pubblica è esattamente la soluzione che si desidera. Crea una coppia di chiavi pubblica/privata, quindi inserisci la chiave pubblica nell'applicazione e mantieni la chiave privata. Poi si può fare due cose:
- l'applicazione può cifrare un messaggio utilizzando la chiave pubblica, che possono essere decifrati solo con la chiave privata.
- Oppure, è possibile firmare un messaggio utilizzando la chiave privata, che può essere autenticata utilizzando la chiave pubblica nell'applicazione.
vero. ma se inserisci la chiave privata o la chiave pubblica nell'app, possono utilizzarla anche per decrittografare la chiave. –
@Patrick Boos: Questo è proprio il punto della crittografia asimmetrica: non è possibile calcolare la chiave privata dalla chiave pubblica. Il modo in cui funziona è che * si cripta * sul proprio server, utilizzando la chiave privata (che non si condivide con nessuno, si trova solo sul server) e l'app sul client ha la chiave * public * con la quale può decifrare; inoltre, l'app sul client firma con la chiave * public * e il server verifica utilizzando la chiave privata. * Le chiavi pubbliche * sono destinate a essere condivise liberamente. – Piskvor
@Piskvor Per essere sicuri, la crittografia a chiave pubblica richiede che le chiavi private vengano mantenute segrete. Ma cosa succede se qualcuno ha ricevuto una chiave privata memorizzata nell'applicazione (ad esempio decompilandola)? Poi lui o lei può ancora leggere tutti i dati segreti codificati con la chiave pubblica (esattamente come l'applicazione originale). C'è un modo per impedirlo? – Piotr
Un individuo abbastanza determinato sarà in grado di estrarre la chiave, e non c'è davvero molto che si possa fare al riguardo. Puoi tentare di offuscare in qualche modo i tasti (alzando la barra su quanto determinati devono essere), ma non puoi impedire loro di ottenere la chiave.
Tuttavia, a seconda del motivo per cui è necessario memorizzare la chiave segreta, è possibile utilizzare Asymmetric Key Cryptography. Sarai in grado di memorizzare una chiave pubblica che potrebbe essere limitata alla crittografia (non alla decrittografia) o ai fini dell'autenticazione, pur essendo in grado di mantenere la chiave privata al sicuro.
La chiave pubblica è utile solo per la crittografia e la verifica della firma. –
- 1. Android - tasto della tastiera personalizzato e azione
- 2. Tasto "Vai" della tastiera Android su "Cerca"
- 3. La decompilazione di Apk per Android sembra facile
- 4. Decompilazione EXE in ASM
- 5. Decompilazione applicazioni Adobe AIR
- 6. Rileva il tasto di ricerca della tastiera
- 7. tasto rotondo in Android
- 8. build.gradle è protetto dalla decompilazione?
- 9. Vulnerabilità nella memorizzazione nella cache della chiave offuscata? Licenze Android
- 10. esplorare e decompilazione pitone bytecode
- 11. Android - Premere il tasto tastiera
- 12. Come cambiare il carattere del tasto della tastiera Android?
- 13. L'albero di copertura minimo ha paura dei pesi negativi?
- 14. Memorizzazione della posizione di rango da mysql
- 15. Memorizzazione della versione della dipendenza nella variabile in gradle
- 16. Memorizzazione di una chiave segreta su Android
- 17. Memorizzazione di valuta nel database Android SQlite
- 18. Xamarin Android EditText tasto Invio
- 19. Ascoltate tasto ENTER in Android
- 20. Git rm, dà paura "Cancellazione della directory non riuscita" quando elimino solo un file
- 21. Tasto di ritorno tasto AngularJS
- 22. PhoneGap - memorizzazione locale non funziona - Android
- 23. tasto di manipolazione premere il tasto
- 24. Memorizzazione della mappa nel file delle proprietà
- 25. RavenDB memorizzazione della proprietà con l'attributo JsonIgnore
- 26. Implementazione della memorizzazione nella cache coclea blu
- 27. Word macro, memorizzazione della selezione corrente (VBA)
- 28. Memorizzazione della condizione "CASE WHEN" nell'entità Doctrine2
- 29. Javascript - Memorizzazione della funzione nell'oggetto - cattiva pratica?
- 30. Android - memorizzazione dei riferimenti a ApplicationContext
Non è possibile "davvero" impedire alle persone di decompilare qualsiasi programma. Il tuo modello di sicurezza dovrebbe tenerne conto. :-) –
Se lo carico dal server web (la chiave), come faccio a garantire che la richiesta non possa essere fatta da nessun altro (supponendo che decompila) –
http://en.wikipedia.org/wiki/Public-key_cryptography potrebbe essere utile per autenticare le richieste. –