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.
- Ho sostituito PBKDF2 con scrypt qui, ma il concetto è lo stesso.
- I sali sono 16 byte casuali generati con urandom
AggiornaHoscopertochelalibreriaPyCryptodomex(Python)offreunafunzionescrypt
incuipossospecificarequantihash/chiavivogliodaunasingolachiavediinput.Adesempio,sedesidero2hashdioutputa256bit,possospecificarloescrypt
creeràunachiave2*256bit=512bit
esemplicementeladivideròper2,ottenendo2hashlunghi256bit.Possoquindiutilizzareunhashpercrittografareidatieunoperl'autenticazione,eliminandocosìlanecessitàdelsecondolivellodiscryt
eSHA256
dihashingnelmioconcettoprecedente.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).