Se sono obbligato a memorizzare una password / certificato su un client, come posso assicurarmi che sia protetto?

11

In alcuni casi dobbiamo stabilire una chiave / password / certificato come primo timer e poi come client dobbiamo usare questa chiave / password / certificato per essere autenticati. Pertanto la chiave / password / certificato devono essere archiviati sul lato client.

Come proteggere questa chiave?

Ovviamente possiamo cancellarlo ma abbiamo ancora bisogno della chiave e non del valore hash per accedere nuovamente.

    
posta Phoenician-Eagle 12.11.2010 - 22:47
fonte

3 risposte

3

Considerando il tuo commento in alto, direi che mentre questo è possibile, è piuttosto complicato con numerose probabili insidie.

Anche se non è ancora così comune, ti consiglio vivamente di consultare CardSpace (nee InfoCard) . Fondamentalmente ciò fornisce un'implementazione molto sicura di ciò che stai cercando e vantaggi aggiuntivi (ad esempio, l'utente ha più controllo su quali informazioni vengono inviate a chi). Naturalmente non è senza compromessi, ad es. gli utenti hanno meno familiarità con esso ed è un po 'complesso da implementare ...

    
risposta data 14.11.2010 - 14:37
fonte
2

Il modo "giusto" per archiviare in modo sicuro le informazioni sensibili lato client è utilizzare le funzionalità fornite dal sistema operativo - ad es. KeyChain su MacOS X o DPAPI su Windows. Proteggere i dati lato client è un problema difficile, ma in alcuni casi è disponibile qualche hardware utile (ad esempio una smartcard); il sistema operativo ha accesso diretto all'hardware e potrebbe persino essere già configurato. Inoltre, i sistemi di protezione implementati dal sistema operativo hanno una possibilità di essere ben integrati nel normale sistema di autenticazione dell'utente.

Da un punto di vista teorico, non c'è molto che possa essere fatto solo nel software, salvare:

  • offuscamento. L'applicazione manipola le cose in quello che spera di essere un modo di fuga - ma l'applicazione è un codice che può svelare i dati offuscati, quindi questo resisterà agli attaccanti solo se non eseguono il reverse-engineer del codice - cioè, non per a lungo.

  • Crittografia basata su password. Si crittografa i dati, utilizzando una chiave simmetrica derivata dalla password. Questo può essere reso sicuro se la password ha un'alta entropia ed è adeguatamente "rafforzata" (usa bcrypt ). Questo è quello che le soluzioni basate su OS tendono a fare comunque. Per una pura implementazione applicativa, considera l'utilizzo di GnuPG , che può farlo in modo nativo (con lo strumento da riga di comando, che è gpg -c file ).

risposta data 06.10.2011 - 18:54
fonte
1

Utilizza una cifra simmetrica per crittografare il certificato localmente e costringi l'utente a scegliere una passphrase strong come chiave.

Pertanto, diventa impossibile utilizzare il certificato senza prima fornire la passphrase.

    
risposta data 31.01.2011 - 03:50
fonte