Come crittografare i dati e accedere con la stessa password - rivisitata

2

Ho letto i post precedenti sull'argomento su come crittografare i dati e accedere con la stessa password / chiave, tuttavia il concetto mi sembra ancora poco chiaro, in particolare i dati che è sicuro archiviare nel database.

Questo fantastico post consigliato le seguenti 2 possibilità:

1: You could derive the encryption key from the password with PBKDF2, and then use a normal cryptographic hash (e.g. SHA-256) of the key as the password hash for logging in.

2: Or, if you want to be extra careful, derive both the encryption key and the password hash from an intermediate key derived from the password using PBKDF2.

Ho creato un diagramma della mia comprensione per la seconda possibilità. Pensi di averlo ottenuto correttamente? Puoi forse pensare a un modo migliore di implementarlo?

N.b.

  1. Ho sostituito PBKDF2 con scrypt qui, ma il concetto è lo stesso.
  2. I sali sono 16 byte casuali generati con urandom

AggiornaHoscopertochelalibreriaPyCryptodomex(Python)offreunafunzionescryptincuipossospecificarequantihash/chiavivogliodaunasingolachiavediinput.Adesempio,sedesidero2hashdioutputa256bit,possospecificarloescryptcreeràunachiave2*256bit=512bitesemplicementeladivideròper2,ottenendo2hashlunghi256bit.Possoquindiutilizzareunhashpercrittografareidatieunoperl'autenticazione,eliminandocosìlanecessitàdelsecondolivellodiscryteSHA256dihashingnelmioconcettoprecedente.Hocreatounadescrizionevisivadelnuovoconcettoeapprezzereilatuaopinionealriguardo:)

Riepilogo A seconda della libreria e del KDF che utilizzi, credo che funzionerà il concetto 1 o il concetto 2 (che è essenzialmente lo stesso, ma più compatto).

    
posta Peter 13.08.2017 - 14:03
fonte

1 risposta

3

Se con "PW - Hash + Salt", intendi la chiave derivata, la tua comprensione è corretta.

Ho visto alcune varianti

  • Uso di diversi sali ogni volta che ne usi uno (vale a dire, sale 1 e sale 2 nel tuo caso). C'è qualche vantaggio teorico con questo, ma non lo considero abbastanza grande.
  • Usa la PW come input anche nel secondo round (di hashing / derivazione chiave). Ancora una volta, non sono sicuro che sia un vantaggio abbastanza grande, ma il costo è trascurabile.
  • Uso di un numero elevato di round con la funzione di derivazione chiave (probabilmente lo hai implicato). Questo è importante poiché l'idea è di aumentare il fattore lavoro coinvolto.
  • OWASP consiglia qui il sale a 32 o 64 byte: link . I vantaggi IMHO in questo momento sono teorici poiché l'iterazione di oltre 16 byte non è un lavoro banale per un utente malintenzionato.

In generale, non mi piace la logica che dice "facciamolo solo nel caso" (cioè, lasciamo che la nostra paura decida senza valutare i rischi vs i benefici). Quindi sono scettico riguardo l'intera idea della chiave intermedia . YMMV. :)

    
risposta data 14.08.2017 - 04:30
fonte

Leggi altre domande sui tag