systemadmin.es > Seguridad > Cifrar y descrifrar con OpenSSL

Cifrar y descrifrar con OpenSSL

OpenSSL permite cifrar y descrifrar un fichero usando su linea de comandos. Vamos a ver un ejemplo:

Primero de todo deberemos escoger un algoritmo de cifrado, con list-cipher-commands podremos ver la lista completa:

$ openssl list-cipher-commands
aes-128-cbc
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc
aes-256-ecb
base64
bf
bf-cbc
bf-cfb
bf-ecb
bf-ofb
cast
cast-cbc
cast5-cbc
cast5-cfb
cast5-ecb
cast5-ofb
des
des-cbc
des-cfb
des-ecb
des-ede
des-ede-cbc
des-ede-cfb
des-ede-ofb
des-ede3
des-ede3-cbc
des-ede3-cfb
des-ede3-ofb
des-ofb
des3
desx
rc2
rc2-40-cbc
rc2-64-cbc
rc2-cbc
rc2-cfb
rc2-ecb
rc2-ofb
rc4
rc4-40

A continuación podemos usar uno, por ejemplo AES, para cifrar un fichero:

$ openssl aes-128-cbc -salt -in ejemplo -out ejemplo.aes128
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:

Podemos ver el resultado del cifrado de un fichero con el texto “ejemplo“:

$ hexdump -C ejemplo.aes128
00000000  53 61 6c 74 65 64 5f 5f  6d 0e d3 d7 f2 d4 ff c6  |Salted__m.Ó×òÔÿÆ|
00000010  ae 4d 05 59 6b d9 3a 80  c0 12 18 8b da d7 13 6e  |®M.YkÙ:.À...Ú×.n|
00000020

Para su descrifrado se puede hacer mediante la opción -d (decrypt):

$ openssl aes-128-cbc -d -salt -in ejemplo.aes128 -out ejemplo.out
enter aes-128-cbc decryption password:

Para evitar que se pida interactivamente la contraseña se puede hacer uso del parámetro -k para indicarla a continuación en la línea del comando. Para una mayor seguridad, evitando que se vea la contraseña usada en la lista de procesos, se puede usar -kfile que indicamos el fichero donde se encuentra la contraseña en su lugar.

2 comments to “Cifrar y descrifrar con OpenSSL”

  1. “evitando que se vea la contraseña usada en la lista de procesos”

    A que te refieres? A que no se muestre en el history del bash o si haces un ps ? No lo veo claro.

    Gràcies

  2. Me refería al ps, un usuario en el mismo sistema podría ver el proceso con los parámetros con un simple

    ps auxf
    

    Mediante grsecurity se puede limitar la visibilidad de procesos a los del propio usuario.

    Por otro lado, el history acaba siendo un fichero con unos determinados permisos, por lo que es equivalente al kfile.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>