2009-08-16 20 views
10

Sto utilizzando la crittografia basata su password. Il mio pensiero iniziale era di utilizzare AES per crittografare il file che contiene le password. Si scopre che la crittografia basata su password non supporta AES. Usa DES. AFAIK des non è sicuro. PBEWithMD5AndDES è abbastanza sicuro da spingere i miei dati o dovrei cercare un'altra implementazione?Java PBEWithMD5AndDES

+1

Sembra che tu stia usando alcune espressioni in modo confuso. "Crittografia basata su password" si riferisce a uno schema in cui i file vengono crittografati con una chiave derivata da un passowrd. (Ad es. Lo standard PKCS # 5 è uno schema di crittografia basato su password). Quello che vuoi è qualcosa di diverso, cioè uno schema di archiviazione/gestione delle password sicuro. Quindi PBEWithMD5AndDES non è quello che ti serve, indipendentemente da quanto sia sicuro o insicuro. – Accipitridae

+0

Questa è ora una domanda completamente obsoleta, AES è supportato per la crittografia basata su password da Java 6, sebbene dovrei menzionare che dovrebbe essere usato solo per la crittografia * in posizione * in quanto manca la protezione dell'integrità. –

risposta

16

Appare dai vostri commenti che quello che vorreste fare è crittografare un file che contiene informazioni sensibili, utilizzando uno schema di crittografia basato su password, con una password fornita dall'utente in decrypt-time. Le informazioni sensibili in questo caso sono anche password, ma questo non è veramente rilevante. (Probabilmente dovresti aggiornare la domanda per renderla più chiara).

Stai facendo la cosa giusta, il tuo problema è solo che il provider di crittografia Java SunJCE non supporta AES per la crittografia basata su password. È necessario utilizzare un fornitore alternativo che: ad esempio, è possibile utilizzare il provider Bouncy Castle con l'algoritmo "PBEWITHSHA256AND128BITAES-CBC-BC". (Nonostante il nome stravagante, il castello di Bouncy è molto rispettato).

Per quanto riguarda "il DES è abbastanza sicuro per i miei dati", beh se i dati che stai proteggendo varrebbero meno di circa $ 10.000 per un utente malintenzionato, quindi nel 2009 probabilmente era abbastanza sicuro. E nel 2014, se i tuoi dati valgono la crittografia, la risposta è no.

+3

Probabilmente puoi sostituire $ 10.000 con $ 100 ... visti i recenti progressi nel forzare brute usando le GPU. –

-1

Le password non devono essere mantenute in alcuna forma diversa da saltedhash digests.

È quindi necessario utilizzare il sistema di autorizzazione del sistema operativo per rendere tale che il file della password con hash sia leggibile solo dall'utente che convalida le password.

+1

È un'applicazione personale per memorizzare le password. Un gestore di password giocattolo. –

+1

-1, Non risponde alla domanda –

3

Se disponi di Java 6, è disponibile tutto ciò che ti serve. Dai un'occhiata a questo question e guarda la risposta accettata per un esempio di codice. Poiché si desidera crittografare i file, il file iv generato deve essere anteposto al file in cui si sta scrivendo il testo cifrato, in modo che sia disponibile durante la decrittografia.