AES en modo CTR con el mismo IV aleatorio para crear el mismo texto cifrado

2

Actualmente estoy trabajando en un pequeño proyecto.

Estoy intentando generar una clave AES con la que me gustaría cifrar una clave RSA privada. Tengo que hacerlo de esta manera. Sin embargo, no quiero guardar la clave AES, sino generarla cada vez que me gustaría descifrar mi clave RSA.

Quería usar AES en modo CTR con IV aleatorios. Como el texto en claro que AES cifra no importa, pensé que solo usé mi IV inicial inicial para cifrarlo con el propio AES. Como frase de contraseña tengo una contraseña de usuario en texto sin formato.

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

Estoy usando la biblioteca CryptoJS. CCCBox es mi clase de Javascript. En realidad, también estoy guardando la IV (CCCBox._user.serial) en mi base de datos, pero también me gustaría cambiar eso.

El problema es que cada vez que genero la llave maestra no obtengo la misma clave dos veces. ¿Qué camino hay para que pueda permitir que un usuario genere su propia llave maestra cada vez sin guardarla en mi base de datos?

Todo lo mejor, Richard

    
pregunta Richard 24.05.2013 - 00:05
fuente

1 respuesta

3

Si entendí su pregunta correctamente, está intentando generar una clave AES utilizando AES y la contraseña del usuario como clave, luego use esa clave para cifrar una clave RSA.

Por supuesto, AES le dará un texto cifrado muy indistinguible que puede usar como clave de cifrado si lo desea. Pero AES no es realmente una función de derivación de claves basada en contraseña , principalmente porque es muy rápido.

Lo que estás buscando es PBKDF2 . Puede introducir la contraseña del usuario y, mientras le proporcione los mismos parámetros, le dará la misma clave de longitud fija. Puede utilizar esa clave para su cifrado y su posterior descifrado. Así que terminarías con algo como esto:

Enrypted_RSA_Key = AES-CTR(RSA_KEY, PBKDF2(USER_PASSWORD))
    
respondido por el Adi 24.05.2013 - 00:25
fuente

Lea otras preguntas en las etiquetas