encrypt enc openssl aes hmac

enc - openssl hmac con aes-256-cbc



openssl enc (2)

Puede realizar un HMAC de un archivo usando una clave AES como entrada al HMAC.

Cifre el archivo usando cualquier algoritmo AES que desee (en este ejemplo -aes-256-cbc); genere una clave AES basada en una contraseña (cambie "contraseña" a su contraseña) y use el modificador -p para volcar la sal, la clave y iv utilizados para encriptar.

openssl enc -e -k password -p -aes-256-cbc -in plaintext -out ciphertext salt=A2402067B9BFD4A1 key=EB3A88115C30F26C3987F1AB2577DF5B58C80EBEEA623506517FAD843C64E1FC iv =B382453BCBF579CE14C0726D343F40E2

Cree un HMAC de cualquier objeto / archivo usando un algoritmo hash de su elección y la clave AES que se utilizó para encriptar el archivo:

openssl dgst -hmac EB3A88115C30F26C3987F1AB2577DF5B58C80EBEEA623506517FAD843C64E1FC -sha256 ciphertext HMAC-SHA256(ciphertext)= fa3fb9c9c743f35ba81793e2704c3fc9737cd2675011110cb1655ea7ceed2914

Recuerde la clave AES para usar más adelante si necesita verificar el HMAC. Tenga en cuenta que no sé qué está tratando de lograr y no puedo afirmar que lo anterior cumple con sus requisitos criptográficos, pero sí muestra cómo cifrar un archivo, obtener la clave de cifrado y usar esa clave de cifrado en un cálculo HMAC.

Estoy tratando de tomar un AES HMAC de un archivo usando el programa de línea de comando openssl en Linux. He estado mirando las páginas man, pero no puedo entender con qué éxito crear un HMAC. Puedo encriptar un archivo usando el comando enc con openssl pero parece que no puedo crear un HMAC. El cifrado tiene el siguiente aspecto:

openssl enc -aes-256-cbc -in plaintext -out ciphertext

Cualquier consejo o tutorial sería maravilloso


Usted puede estar preguntando sobre CBC-MAC . Para eso, creo que solo encriptas tu mensaje o archivo con un IV de 0 y luego tomas el último bloque (16 bytes para AES256-cbc). Encontré una publicación de blog que describe cómo hacer esto con OpenSSL:

openssl enc -e -aes-256-cbc -K 0123456789ABCDEF -iv 0000000000000000 < file | tail -c 16 | od -A n

  • -K es donde proporcionas tu clave, que la página wiki dice que debe ser diferente de la que estás usando para encriptar el archivo, si lo estás encriptando.
  • -iv obviamente proporciona un IV por completo cero, que es la clave para CBC-MAC.
  • La tail -c 16 es para obtener el último bloque AES256-cbc, que tiene 16 bytes de longitud.
  • od es convertirlo en hexadecimal, que ese sitio web dice que es común. De lo contrario, en lugar de od -A n podría hacer base64 si eso es más aplicable, o dejarlo completamente para tener solo los bytes sin formato.

No puede tomar un AES HMAC de un archivo porque AES256-cbc es un cifrado de bloque, no un algoritmo hash. AES256-cbc es para encriptar y descifrar un archivo. HMAC es para verificar la integridad de un archivo y requiere un algoritmo hash en su núcleo, como SHA-1 o MD5.

¿Estás intentando firmar o verificar un archivo, o encriptarlo? Para iniciar sesión, consulte el comando dgst de OpenSSL y use HMAC simples como MD5 o SHA-1, o bien agote todo y firme digitalmente con DSS / DSA.

Además, creo que usar un cifrado de bloque como MAC se llama un EMAC , pero OpenSSL no hace EMAC hasta donde yo sé. EMAC simplemente toma el último bloque de un archivo encriptado y lo encripta para crear un MAC.