AES in modalità CTR con lo stesso IV casuale per creare lo stesso testo cifrato

2

Attualmente sto lavorando a un piccolo progetto.

Sto cercando di generare una chiave AES con cui vorrei crittografare una chiave privata RSA. Devo farlo in questo modo. Tuttavia, non voglio salvare la chiave AES, ma generarla ogni volta che desidero decifrare la mia chiave RSA.

Volevo usare AES in modalità CTR con IV casuali. Dal momento che il testo in chiaro non ha importanza, i crittografi AES, ho pensato che ho usato la mia IV iniziale iniziale per essere crittografata con l'AES stesso. Come passphrase ho la password di un utente in chiaro.

CCBox._user.masterkey = CryptoJS.AES.encrypt(CCCBox._user.serial, CCCBox._user.password ,
                                {
                                    iv: CCCBox._user.serial,
                                    mode: CryptoJS.mode.CTR
                                });

Sto usando la libreria CryptoJS. CCCBox è la mia classe Javascript. In realtà sto salvando anche l'IV (il CCCBox._user.serial) nel mio database, ma vorrei anche cambiarlo.

Il problema è che ogni volta che genera il masterkey non ottengo la stessa chiave due volte. Che senso c'è in giro in modo che io possa consentire a un utente di generare la propria masterkey ogni volta senza salvarlo nel mio database?

Tutto il meglio, Richard

    
posta Richard 24.05.2013 - 00:05
fonte

1 risposta

3

Se ho compreso correttamente la tua domanda, stai provando a generare una chiave AES utilizzando AES e la password utente come chiave, quindi utilizza quella chiave per crittografare una chiave RSA.

Certo, AES ti darà un testo cifrato molto indistinguibile che puoi usare come chiave di crittografia se lo desideri. Ma AES non è in realtà una funzione di derivazione della chiave basata su password, principalmente perché è dannatamente veloce.

Quello che stai cercando è PBKDF2 . È possibile alimentarlo con la password dell'utente e, finché gli si forniscono gli stessi parametri, verrà fornita la stessa chiave a lunghezza fissa. È possibile utilizzare quella chiave per la crittografia e la successiva decrittografia. Quindi ti ritroverai con qualcosa di simile:

Enrypted_RSA_Key = AES-CTR(RSA_KEY, PBKDF2(USER_PASSWORD))
    
risposta data 24.05.2013 - 00:25
fonte

Leggi altre domande sui tag