Qual è il modo migliore per memorizzare la password in memoria (RAM) in Java?

9

Immagina che ci sia un modulo di accesso nell'applicazione Java. Abbiamo bisogno di assegnare nome utente e password alle variabili. Poco dopo possiamo usare la password Hash o HMAC e tenerla solo per la fase di autenticazione (senza cache). Ma ancora dobbiamo assegnare una variabile per la password Raw.

Q1) quale tipo di variabile dovremmo usare per memorizzare la password Raw (String, Char array o altro)?

Q2) Cosa dovremmo fare variabile della password Raw dopo l'uso (cioè autorizzare il garbage collector a scaricarlo dopo che la funzione è fuori dal campo di applicazione)?

Q3) Qualcos'altro?

Questa è una domanda relativa a Java. L'ho postato qui poiché è molto vicino alla sicurezza.

Per il C / C ++ ho poca idea. Sono

  • Archivia la password in una variabile di basso livello di sistema che non dipende da altre biblioteche. Cioè memorizza la password in char [] che è molto nativa delle variabili di tipo QString (Qt) fornite dai framework.

  • Sovrascrivi immediatamente la password char [] dopo l'uso. Quindi distruggi.

  • Riduci il tempo della password in memoria.

posta Kasun 25.11.2014 - 20:38
fonte

1 risposta

9

La guida generale è di usare un carattere [], che sebbene non sia infallibile, ti permetterà di sovrascrivere i caratteri nella password una volta che hai finito con loro, cosa che non è possibile con le stringhe, poiché sono immutabili e continuare a vivere sull'heap fino alla garbage collection.

Anche questo è stato discusso in dettaglio su StackOverflow .

    
risposta data 25.11.2014 - 20:48
fonte

Leggi altre domande sui tag