Come conservare una chiave AES? un vettore di inizializzazione (IV)?

0

Attualmente sto sviluppando un servizio di autenticazione per la nostra azienda. In qualche modo capisco come memorizzare un salt usato nell'hashing di una password in quanto dovrebbe essere memorizzato insieme alla password hash. Ciò significa che per ogni account viene creato anche un sale unico.

Quello che non capisco è come immagazzini un AES Key e IV? Dovrebbe esserci un unico AES Key e IV per ogni account? O dovrebbe esserci 1 AES Key per tutta l'app e un IV per tutta l'app?

Ho letto questo post ma solo risposte dove dovrei memorizzarle.

    
posta Yongga 06.03.2017 - 02:03
fonte

2 risposte

1

Descrivi molto poco su perché stai usando la crittografia simmetrica, ma in generale, usi la stessa chiave ma una IV diversa per ogni operazione di crittografia, purché la crittografia e la decifrazione avvengano sullo stesso dispositivo .

L'IV non è un valore segreto ma dovrebbe essere generato casualmente usando un CSPRNG. Questo è molto importante.

È pratica comune anteporre la IV al testo cifrato risultante in modo che possa essere facilmente recuperata durante la decrittazione.

    
risposta data 06.03.2017 - 02:25
fonte
0

Conserverai IV insieme al testo cifrato, non è un segreto. Ma tieni a mente, ci sono varie modalità per AES (o qualsiasi altro codice blok). Consulta questa domanda e anche questo per GCM.

Il punto principale dietro questo è che IV deve essere unico ogni volta che si utilizza la stessa chiave. Di solito deve essere casuale (usa CPRNG strong), ma alcuni modi tollerano nonces.

Per rispondere direttamente alla tua domanda: sì, puoi avere una sola chiave per l'app ma no, non avrai una IV per tutta l'app.

Puoi anche ricava una chiave dalla password dell'utente e utilizzala per crittografare i dati dell'utente. Ciò complicherà però la funzionalità "password dimenticata".

    
risposta data 06.03.2017 - 19:15
fonte

Leggi altre domande sui tag