¿Cómo cifrar un archivo o directorio en Linux?

26

¿Cuál es el comando más popular para hacer cosas como encriptar un archivo o directorio en una terminal en Linux?

Scott
fuente

Respuestas:

31

Creo que sería gpg. Sin embargo, la sintaxis de los archivos y directorios difiere.

Cifrado

Para archivos (salidas filename.gpg):

gpg -c filename

Para dirs:

gpg-zip -c -o file.gpg dirname

Descifrado

Para archivos (salidas filename.gpg):

gpg filename.gpg

Para dirs:

gpg-zip -d file.gpg

Editar: corregido cuando @ Mk12 señaló el error de compresión / descompresión para el cifrado / descifrado.

celebrador
fuente
¿No debería ser "Cifrado" y "Descifrado"?
mk12
Nadie ha dicho cómo cifrar un directorio.
chovy
1
@chovy No es lo que dice arriba: Para directorios: gpg-zip -c -o file.gpg dirname
celebrador
@celebdor se perdió esa. Gracias. editar: eso no funciona para mí. Obtengo un resultado cifrado extraño cuando descifro el archivo.
chovy
@chovy: Lamento escuchar eso. Puedo confirmar que cifrar y descifrar directorios como se muestra arriba funcionó para mí, usando gpg-zip (GnuPG) 1.4.16 en Mint 17.
Michael Scheper
10
  • con openssl

openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3

Descifrar:

openssl des3 -d -salt -in encrypted-data.tar.des3 -out unencrypted-data.tar

  • cifrar con AES

aescrypt -e -p password file.jpg

Descifrar:

aescrypt -d -p password file.jpg.aes

chorro
fuente
1
+1 para mostrar cómo hacerlo con openssl, que probablemente esté disponible de forma inmediata.
DevSolar
De hecho, pero 3DES se considera inseguro y no debe usarse, AES (aescrypt) es una opción mucho mejor, consulte: stackoverflow.com/questions/1619212/…
jmng
2

Prueba GnuPG .

Para encriptar: gpg -c filename

Para descifrar: gpg filename.gpg

slhck
fuente
2

Este es mi método usando openssl y tar

Directorio encriptado abierto:

openssl enc -aes-256-cbc -d -in ~/vault.tar.gz.dat | tar xz; thunar ~/vault

Bloquear directorio cifrado:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault
Tom
fuente
1
rm -rno elimina datos; simplemente lo desvincula. Tendrá que usar algo como srmborrar los datos del disco.
jbindel
2

Yo personalmente uso aescryptprincipalmente.

      aescrypt -e "File" 

y descifrar:

      aescrypt -d "File"

O hay mcrypt:

      mcrypt "File" 

y descifrar:

      mcrypt -d "File"

Y para un directorio, sugiero tar'ing el directorio y cifrar eso. Luego, después de descifrar, simplemente descomprime el archivo

      tar -cf "Dir.tar" Dir/

y para deshacer

      tar -xf "Dir.tar"
Mate
fuente
1

Si el nivel más alto de seguridad no es un gran problema (la página de manual de zip dice que el algoritmo de cifrado utilizado por las utilidades zipfile es más débil que PGP), entonces prefiero zip y descomprimir. Comprime mis directorios y encripta al mismo tiempo. Prefiero zip porque puedes tener una especie de zip incremental y cifrar en lugar de comprimir y cifrar todo de nuevo. Especialmente es útil cuando los tamaños de directorio son muy grandes.

ZIP y cifrar

zip file.zip file
zip -r directory.zip directory
zip --encrypt file.zip.enc file # prompt for password
zip --encrypt -r directory.zip.enc directory # prompt for password

Descomprimir y descifrar

unzip directory.zip.enc #Beware if any directory is present with the same name as the zipped file, then it would be overwritten. Hence I normally send the contents to another directory.

unzip directory.zip.enc -d directory-new # prompts for password
infoclogged
fuente
0

Puede que no sea popular, pero he estado trabajando en un proyecto para cifrar / descifrar cualquier cosa con una mínima interacción del usuario mediante el uso de algunos scripts de Bash. Aquí hay un enlace a la publicación de Hak5 que explica la configuración para las pruebas.

Cortando las lógicas del código fuente, sin embargo, esto es lo que sucede para cada tipo de datos que puede manejar el proyecto vinculado anterior.

_gnupg_encrypt_opts="--always-trust --armor --batch --encrypt --recipient [email protected]"
 _bulk_output_dir="some_path"
_arbitrary_parsed_output="some_file.gpg"
## If file make encrypted time stamped file with similar name
_path_to_file="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_${_path_to_file##*/}.gpg"
cat "${_path_to_file}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if directory make compressed encrypted time stamped output file
_path_to_dir="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_dir.tgz.gpg
tar -cz - "${_path_to_dir}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if something else append encrypted output to file
_path_to_output="${_arbitrary_parsed_output}"
cat <<<"${_mapped_input}" | gpg ${gpg _gnupg_encrypt_opts} >> "${_path_to_output}"

La ${_mapped_input}variable se establece leyendo un mkfifoarchivo de canalización con nombre y configurando cualquier cosa leída en una matriz con la mapfile -t _lines < "${_file_to_map}"que luego se expande y se guarda en un ${_mapped_input}... un poco enrevesada pero permite que las características experimentales actúen en líneas individuales. Los resultados finales son un directorio para guardar archivos cifrados o directorios comprimidos y un archivo con varios paquetes de datos cifrados.

El descifrado de archivos o directorios comprimidos es bastante simple en un dispositivo con una clave privada relacionada con la clave pública utilizada para el cifrado. Pero el descifrado de los paquetes de datos cifrados de armadura múltiple fue un poco más difícil, por lo que hay un script nombrado Paranoid_Pipes_Scenario_One.shen el proyecto anterior escrito para hacerlo todo con una mínima interacción del usuario. A continuación se muestra una versión simplificada del código fuente de los scripts de ayuda para archivos y directorios cifrados normales.

_gnupg_decrypt_opts="--quiet --no-tty --always-trust --passphrase-fd 9 --decrypt"
_decryption_output_dir="some_directory"
# if file
exec 9<"${_pass[@]}"
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.gpg*}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} > "${_decryption_output_dir}/${_output_name}"
# else if compressed file
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tgz.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xzf -
cd "${_old_pwd}"
# else if non-compressed directory
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tar.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xf -
cd "${_old_pwd}"

Si desea ver qué otras funciones funcionan y se prueban de manera públicamente verificable, consulte los registros de compilación de Travis-CI (especialmente cerca del final de los registros) y verá que hay otras cosas elegantes en las que se trabaja en relación al cifrado y descifrado de casi cualquier dato.

S0AndS0
fuente
0

Utilice FinalCrypt : cifrado de directorio / archivo OpenSource de Pad One-Time irrompible (GUI y CLI)

Crea teclas One-Time Pad por sí mismo

java -cp FinalCrypt.jar rdj/CLUI --encrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Contraseña:

Comenzó a encriptar 4 archivos totalmente 249,7 MiB

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 "/ .Ag. /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 "/ Home / ron / Mi-Test-Directorio / Brother DSmobile 700d_uke_usr.pdf.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

Terminé de cifrar [4/4] archivos totalmente [249,7 MiB / 249,7 MiB] en 7,3 segundos (promedio: 34,2 MiB / s)

java -cp FinalCrypt.jar rdj/CLUI --decrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Contraseña:

Comenzó a descifrar 4 archivos totalmente 124,9 MiB

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" -> "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" 32,8% 🔓 "/ Inicio / ron / Mi-test-Directorio / vídeo / Eerebegraafplaats.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" -> "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" 91,2% 🔓 "/ home / ron / Mi-test ./home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" -> "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" 100,0%

Terminé de descifrar [4/4] archivos totalmente [124,9 MiB / 124,9 MiB] en 3,4 segundos (promedio: 36,3 MiB / s)

También tiene una GUI

Solo trato de ayudar a la comunidad ...

Ron de Jong
fuente
FinalCrypt 5 agregó Auto Key y crea OTP Keys automáticamente, por lo que la discusión a la que Scott se refiere ya no es relevante
Ron de Jong
Me gustaría ver una descripción de cómo funciona que sea más técnica y menos manual. El problema es que los pads únicos (1) son excelentes para la transmisión de datos, y pésimos para el  almacenamiento, y (2) deben ser aleatorios.  Si las OTP de FinalCrypt son verdaderamente aleatorias, entonces deben almacenarse, lo que compromete la seguridad. Si pueden regenerarse, entonces no son aleatorios, sino solo seudoaleatorios, por lo que no son OTP adecuados. ... (Continúa)
Scott
(Cont.) ... Su página en  Auto Key Management indica que las OTP se almacenan "en una unidad externa (USB) extraíble. "Bien, eso podría funcionar. Pero, si tiene que conectar su unidad USB cada vez que desea descifrar su archivo (y dado que una OTP debe ser al menos tan grande como el archivo que encripta), también podría almacenar sus archivos en la unidad extraíble y No te molestes con el cifrado. ... (Continúa)
Scott
(Cont.) ... Además, la página principal de FinalCrypt dice que "la mayoría del software criptográfico usa AES roto ...", pero afirma que AES está "roto" parece ser muy exagerado. Relacionado: ¿Por qué se considera que AES es seguro? (en el  intercambio de pila de criptografía ).
Scott