Comment crypter un fichier ou un répertoire sous Linux?


26

Quelle est la commande la plus utilisée pour chiffrer un fichier ou un répertoire dans un terminal sous Linux?

Réponses:


31

Je pense que ce serait gpg. La syntaxe des fichiers et répertoires diffère cependant.

Cryptage

Pour les fichiers (sorties filename.gpg):

gpg -c filename

Pour les dirs:

gpg-zip -c -o file.gpg dirname

Décryptage

Pour les fichiers (sorties filename.gpg):

gpg filename.gpg

Pour les dirs:

gpg-zip -d file.gpg

Edit: corrigé car @ Mk12 a souligné l'erreur de compression / décompression pour le cryptage / décryptage.


Cela ne devrait-il pas être "Cryptage" et "Décryptage"?
mk12

Personne n'a dit comment chiffrer un répertoire.
chovy

1
@chovy Pas au-dessus, il est dit: Pour les répertoires: gpg-zip -c -o file.gpg dirname
celebdor

@celebdor a raté celui-là. Merci. edit: ça ne marche pas pour moi. J'obtiens une sortie cryptée bizarre lorsque je déchiffre le fichier.
chovy

@chovy: Désolé d'entendre ça. Je peux confirmer que le cryptage et le décryptage des répertoires comme indiqué ci-dessus ont fonctionné pour moi, en utilisant gpg-zip (GnuPG) 1.4.16 sous Mint 17.
Michael Scheper

10
  • avec openssl

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

Déchiffrer:

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

  • crypter avec AES

aescrypt -e -p password file.jpg

Déchiffrer:

aescrypt -d -p password file.jpg.aes


1
+1 pour montrer comment le faire avec openssl, qui est très probablement disponible prêt à l'emploi.
DevSolar

En effet, mais 3DES est considéré comme non sécurisé et ne doit pas être utilisé, AES (aescrypt) est une bien meilleure option, voir: stackoverflow.com/questions/1619212/…
jmng

2

Essayez GnuPG .

Pour chiffrer: gpg -c filename

Pour décrypter: gpg filename.gpg


2

Ceci est ma méthode en utilisant openssl et tar

Ouvrir le répertoire crypté:

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

Verrouiller le répertoire crypté:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault

1
rm -rne supprime pas les données; il le dissocie simplement. Vous devrez utiliser quelque chose comme srmpour effacer les données du disque.
jbindel

2

J'utilise personnellement la aescryptplupart du temps.

      aescrypt -e "File" 

et décrypter:

      aescrypt -d "File"

Ou il y a mcrypt:

      mcrypt "File" 

et décrypter:

      mcrypt -d "File"

Et pour un répertoire, je suggère de tarer le répertoire et de le chiffrer. Ensuite, après le décryptage, décompressez simplement le fichier:

      tar -cf "Dir.tar" Dir/

et dégager

      tar -xf "Dir.tar"

1

Si le plus haut niveau de sécurité n'est pas un gros problème (la page de manuel de zip indique que l'algorithme de chiffrement utilisé par les utilitaires zipfile est plus faible que PGP), je préfère zip et décompressez. Il zippe mes répertoires et chiffre en même temps. Je préfère le zip car vous pouvez avoir une sorte de zip incrémentiel et crypter au lieu de zipper et de crypter le tout à nouveau. Cela est particulièrement utile lorsque les tailles de répertoire sont très grandes.

ZIP et crypter

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

Décompressez et déchiffrez

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

0

Peut ne pas être populaire, mais j'ai travaillé sur un projet pour crypter / décrypter quoi que ce soit avec une interaction utilisateur minimale grâce à l'utilisation de quelques scripts Bash. Voici un lien vers le post Hak5 qui explique la configuration pour les tests.

Couper à travers les logiques de code source, mais voici ce qui se passe pour chaque type de données qui peuvent être traitées par le projet lié ci-dessus

_gnupg_encrypt_opts="--always-trust --armor --batch --encrypt --recipient user@host.domain"
 _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 est définie en lisant un mkfifofichier de canal nommé et en définissant tout ce qui est lu dans un tableau avec mapfile -t _lines < "${_file_to_map}"lequel il est ensuite développé et enregistré dans un ${_mapped_input}... un peu compliqué, mais il permet aux fonctionnalités expérimentales d'agir sur des lignes individuelles. Les résultats finaux sont que vous vous retrouvez avec un répertoire pour contenir des fichiers cryptés ou des répertoires compressés et un fichier avec divers paquets de données cryptées.

Le déchiffrement des fichiers ou des répertoires compressés est assez simple sur un appareil avec une clé privée liée à la clé publique utilisée pour le chiffrement. Mais le déchiffrement de plusieurs paquets de données chiffrés par armure était un peu plus difficile, donc un script nommé Paranoid_Pipes_Scenario_One.shdans le projet ci-dessus a été écrit pour tout faire avec une interaction utilisateur minimale. Vous trouverez ci-dessous une version simplifiée du code source des scripts d'aide pour les fichiers et répertoires chiffrés normaux.

_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 vous souhaitez voir quelles autres fonctionnalités fonctionnent et sont testées de manière publiquement vérifiable, alors consultez les journaux de construction de Travis-CI (en particulier vers la fin des journaux), vous constaterez qu'il y a d'autres choses fantastiques sur lesquelles travailler en relation au chiffrement et au déchiffrement de presque toutes les données.


0

Utilisez FinalCrypt - Cryptage de fichiers / répertoires OpenSource Pad unique et incassable (GUI et CLI)

Il crée des touches de pavé à usage unique par lui-même

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

Mot de passe:

A commencé à crypter 4 fichiers totalement 249,7 MiB

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 « / Accueil / ron / Mon-test-Répertoire / vidéo / château-waxjo-sweden.mp4.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" -> "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" 91,2% 🔒" /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit » 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 "/ Home / ron / Mon-Test-Répertoire / Brother DSmobile 700d_uke_usr.pdf.bit » 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

Fin du cryptage [4/4] des fichiers totalement [249,7 Mio / 249,7 Mio] en 7,3 secondes (moyenne: 34,2 Mio / s)

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

Mot de passe:

A commencé à décrypter 4 fichiers totalement 124,9 MiB

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" -> "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" 32,8% 🔓 « / Accueil / ron / Mon-test-Répertoire / vidéo / Eerebegraafplaats.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" -> "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" 91,2% 🔓 « / home / ron / Mon-test -Répertoire / Brother dsmobile 700d_uke_usr.pdf "✔ ✔ 🔓✔ ℄✔ 🗑✔ SHA-256:" 88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E "->" 8D718D2F3B6F8B6F7/home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf » 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" -> "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" 100,0%

Décryptage complet des fichiers [4/4] totalement [124,9 MiB / 124,9 MiB] en 3,4 secondes (moyenne: 36,3 MiB / s)

Il a également une interface graphique

J'essaie juste d'aider la communauté ...



FinalCrypt 5 a ajouté une clé automatique et crée automatiquement des clés OTP, de sorte que la discussion à laquelle Scott fait référence n'est plus pertinente
Ron de Jong

J'aimerais voir une description de son fonctionnement qui soit plus technique et moins agitant la main. Le problème est que les pads à usage unique (1) sont parfaits pour la transmission de données, et moche pour le  stockage, et (2) doivent être aléatoires.  Si les OTP de FinalCrypt sont vraiment aléatoires, ils doivent être stockés, ce qui compromet la sécurité. S'ils peuvent être régénérés, alors ils ne sont pas aléatoires, mais uniquement pseudo-aléatoires, et donc ce ne sont pas des OTP appropriés. … (Suite)
Scott

(Suite)… Leur page sur la  gestion automatique des clés indique que les OTP sont stockés «sur un lecteur externe (USB) amovible. ”OK, cela pourrait fonctionner. Mais, si vous devez connecter votre clé USB à chaque fois que vous souhaitez décrypter votre fichier (et étant donné qu'un OTP doit être au moins aussi grand que le fichier qu'il crypte), vous pouvez tout aussi bien stocker vos fichiers sur le lecteur amovible et pas la peine de chiffrer. … (Suite)
Scott

(Suite)… De plus, la page principale de FinalCrypt dit que «la plupart des logiciels de cryptographie utilisent AES cassé…», mais les affirmations selon lesquelles AES est «cassé» semblent être considérablement exagérées. Connexes: Pourquoi AES est-il considéré comme sécurisé? (sur  Cryptography Stack Exchange ).
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.