Il modo migliore per archiviare le chiavi di crittografia lato client

0

Ho diverse applicazioni client in esecuzione su diversi SO (iOS, Android, Windows Desktop, Windows Phone, Mac, Windows Store -Tutte le app native-) Devo decifrare (AES-128) alcuni file (migliaia di loro) su i clienti quindi ho bisogno di archiviare le chiavi di crittografia sul lato client. Attualmente lo sto mantenendo come una stringa hardcoded che è male. Quindi qual è il modo migliore per archiviare le chiavi di crittografia nel client in modo sicuro e protetto?

    
posta Walt S. 24.07.2015 - 21:39
fonte

1 risposta

2

Per ciascuno dei sistemi operativi che hai elencato, dovresti sfruttare l'archiviazione sicura integrata del sistema operativo per le chiavi piuttosto che tentare di "roll your own".

In generale, non è considerata una best practice utilizzare la propria crittografia poiché si continuerà a dover supportare e eseguire il debug della propria implementazione che potrebbe avere vulnerabilità non ottimizzate. Invece, è una buona pratica sfruttare gli strumenti nativi a disposizione per l'archiviazione sicura.

Per iOS, questo sarebbe il portachiavi. Per Android, questo è noto come il keystore. Per Windows Phone 8.1+, questo è noto come "Credential Locker".

Questi sistemi generalmente funzionano crittografando i dati privati in un piccolo database sul dispositivo e limitandone l'accesso solo alle applicazioni autorizzate. Ciò rende molto più difficile togliere la chiave privata dal dispositivo senza il rooting / jailbreak del dispositivo, ecc.

Dovresti anche generare chiavi univoche per ogni dispositivo che riceve questi file. Avere una stringa hardcoded nell'app (piuttosto che in un file di configurazione) è pericoloso perché una volta che quella chiave è compromessa, tutti gli utenti sono compromessi. Verifica l'uso corretto di SecureRandom o di librerie crittografiche simili per assicurarti di generare chiavi uniche, quasi impossibili da decifrare.

    
risposta data 24.07.2015 - 21:48
fonte

Leggi altre domande sui tag