estoy un poco confundido cómo utilizar AES y HMAC (basado en SHA-256) de una manera adecuada cuando se transmite el mensaje cifrado del servidor al cliente o viceversaconfundido cómo utilizar AES y HMAC
corregirme por favor, si el método siguiente es incorrecto:
- tomar la llave seguro desde el archivo de clave (por ejemplo, se aconseja utilizar el AES-256 y ya tenemos una clave de longitud válida de 256 bits)
- Generar IV aleatorio para AES-256 para asegurarse de que el mismo texto plano tendrá una salida de cifrado diferente.
- Calcule HMAC-SHA-256 usando el texto sin formato y la clave segura. (La primera pregunta: ¿debo usar IV para el cálculo de HMAC? Por ejemplo, agregar a la clave de seguridad?)
- Encripte el texto sin formato con AES-256.
- redactar mensaje para el cliente de la siguiente manera: HMAC + IV + ENCRYPTED_MESSAGE
La gran pregunta es: ¿es posible de alguna manera a no enviar a IV cliente, pero en vez de generar la misma manera y aún así estar seguro de cifrado? ¿O está bien enviar el IV también?
He terminado con la generación IV aleatoria, porque es necesario que el mismo texto plano termine en diferentes resultados de cifrado.
¿Y qué modo de operación recomendaría? CBC tiene sus gastos generales y deberíamos lidiar con el relleno. Creo que mi elección es OFB/CFB. – Valentin
Desde un punto de vista de seguridad, son todos iguales (excepto el BCE, no lo use). Solo asegúrate de usar una IV fresca si el sistema toma una IV. Si desea ahorrarse un poco de esfuerzo, existen modos autenticados que no necesitan un hmac. GCM es el mejor de ellos. Qué idioma estás usando ? – imichaelmiers
No recomendaría tomar la suma SHA1 de la primera clave como la segunda clave. En su lugar, puede derivar dos claves diferentes con diferentes parámetros y PBKDF2 a partir de una frase de contraseña.Lo mejor es tener dos claves independientes y no confiar en una (probablemente) frase de contraseña débil. –