web-dev-qa-db-fra.com

Comment chiffrer rapidement un fichier avec AES?

Je souhaite chiffrer un fichier avec AES-256. Comment puis-je le faire rapidement et facilement, et comment puis-je - ou quelqu'un d'autre - le déchiffrer à nouveau?

75
Stefano Palazzo

Malheureusement, il n’existe pas de solution simple pour sécuriser vos documents. Pensez à votre cas d'utilisation, peut-être que quelque chose d'autre que AES est mieux adapté.


Si vous souhaitez un cryptage très simple, indépendant de la plate-forme, vous pouvez utiliser openssl .

Remarque: vous pouvez l'utiliser pour masquer l'anniversaire de votre cadeau de colocation, mais ne vous attendez pas à ce qu'il soit protégé contre un attaquant déterminé!

  1. Comme indiqué dans les commentaires, cette méthode utilise une fonction de dérivation de clé naïve, votre mot de passe doit donc être extrêmement bon pour que vous puissiez avoir une chance d'être sécurisé.
  2. De plus, cette méthode n'authentifie pas le texte chiffré, ce qui signifie qu'un attaquant peut modifier ou corrompre le contenu sans que vous le remarquiez.
  3. Pour de nombreux types de sécurité, le cryptage ne suffit tout simplement pas (par exemple, vous ne pouvez pas simplement utiliser le cryptage pour communiquer de manière sécurisée)

Si vous voulez toujours utiliser openssl:

  • Cryptage:

    openssl aes-256-cbc -in attack-plan.txt -out message.enc

  • Décryptage:

    openssl aes-256-cbc -d -in message.enc -out plain-text.txt

Vous pouvez obtenir un fichier openssl vers base64- pour coder le message en utilisant le commutateur -a sur le chiffrement et le déchiffrement. De cette façon, vous pouvez coller le texte chiffré dans un courrier électronique, par exemple. Ça va ressembler à ça:

stefano:~$ openssl aes-256-cbc -in attack-plan.txt -a
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
U2FsdGVkX192dXI7yHGs/4Ed+xEC3ejXFINKO6Hufnc=

Notez que vous avez le choix entre des chiffrements et des modes de fonctionnement. Pour une utilisation normale, je recommande aes 256 en mode CBC. Voici les modes de chiffrement dont vous disposez (uniquement en comptant AES):

aes-128-cbc ← this is okay
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc ← this is recommended
aes-256-ecb

Voir également:

Notez s'il vous plaît:

OpenSSL vous demandera un mot de passe. Ce n'est pas une clé de cryptage, elle n'est pas limitée à 32 octets! Si vous voulez transférer des fichiers avec quelqu'un d'autre, votre secret partagé devrait être très fort. Vous pouvez utiliser ce site pour avoir une idée de la qualité de votre mot de passe:

Avertissement: j'ai vérifié que ces sites n'envoient pas votre mot de passe au serveur, mais cela peut changer à tout moment. Utilisez ces sites avec dev tools/inspector et vérifiez s’ils envoient quoi que ce soit avant de saisir votre mot de passe fort.

83
Stefano Palazzo

J'aime utiliser la commande gpg:

Crypter:

gpg --cipher-algo AES256 --symmetric filename.tar.gz

Sténographie:

gpg --cipher-algo AES256 -c filename.tar.gz

Cela vous demandera un mot de passe.

Décrypter:

gpg --output filename.tar.gz --decrypt filename.tar.gz.gpg

Sténographie:

gpg -o filename.tar.gz -d filename.tar.gz.gpg

Vous pouvez également ajouter cipher-algo AES256 à ~/.gnupg/gpg.conf pour que AES256 soit la valeur par défaut. (Selon la page de manuel, il s’agit de CAST5 )

25
scrrr

7z (lorsque l'option du mot de passe est utilisée) utilise un cryptage AES à 256 bits (avec SHA256 touche étirement ).

Installez-le (p7Zip-full), cliquez avec le bouton droit sur un fichier ou un répertoire que vous souhaitez chiffrer, puis choisissez Compresser , . 7z et Autres options / Mot de passe .

enter image description here

Pour le déchiffrement, faites un clic droit sur le fichier . 7z et choisissez Extraire ici .

15
arrange

aescrypt

Le site Web lié contient un outil open source de cryptage/décryptage aes 256 bits et est multiplateforme - MacOs, Windows, Linux et autres par le biais de Java.

Chiffrer: aescrypt -e <file>

Décrypter: aescrypt -d <file>

Vous pouvez sauvegarder et chiffrer votre dossier personnel en utilisant la syntaxe suivante:

tar -cvf - /home/<home_folder> | aescrypt -e -p <password_message> - > backup.tar.aes

installation d'ubuntu

Télécharger et extraire le source

make
Sudo make install

autres plateformes

Téléchargez les fichiers binaires ou le code source à partir du site Web.

4
fossfreedom

Beaucoup de suggestions que j'aurais faites ont déjà été avancées dans ce fil. En fait, openssl est le moyen le plus simple de chiffrer un fichier ou un script. Cependant, je vous déconseille d'utiliser AES-256 simplement parce qu'il n'est pas disponible dans toutes les versions de openssl on certaines plates-formes. La plupart des nouveaux systèmes d'exploitation ... c'est-à-dire. Linux l'a. Mais d'autres, comme AIX 5.3, ne le font pas (je pense également à HP-UX). Si vous souhaitez utiliser votre fichier ou votre script sur différentes plates-formes, il est vivement recommandé d'utiliser AES-128 , car celui-ci est disponible partout.

Comment pouvez-vous "rapidement et facilement" chiffrer un fichier avec AES-128?

Un site tel que www.ShellScrypt.com utilise openssl AES-128 assez intensément pour chiffrer les scripts Shell, puis effectue les copies chiffrées. des scripts exécutables. Tout ce que vous avez à faire est de coller le script sur le site et un fichier Zip sera généré pour vous. Ce fichier Zip contiendra la version cryptée (et exécutable s'il s'agit d'un script) de votre fichier. Cela vous permet de " facilement " et " facilement " pour chiffrer un fichier/script sans satisfaire à aucune exigence de paquet ou de module sur chaque système sur lequel vous comptez utiliser le script ou exécuter plusieurs incantations complexes et déroutantes de commandes openssl.

Ci-dessous, une commande de base pour chiffrer/déchiffrer openssl utilisant AES- 128:

test@test-VirtualBox:~$ 
test@test-VirtualBox:~$ echo precious-content | openssl aes-128-cbc -a -salt -k mypassword
U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z
test@test-VirtualBox:~$
test@test-VirtualBox:~$ echo U2FsdGVkX1+K6tvItr9eEI4yC4nZPK8b6o4fc0DR/Vzh7HqpE96se8Fu/BhM314z | openssl aes-128-cbc -a -d -salt -k mypassword
precious-content
test@test-VirtualBox:~$ 
test@test-VirtualBox:~$
3

En ajoutant à la réponse de Stefano Palazzo, j'ai créé une petite fonction bash qui fonctionne de manière similaire à la commande base64.

Il va aes256 chiffrer un fichier, puis base64 le coder. En effectuant l'inverse, il va décoder, décrypter, puis cracher le texte en clair d'origine en base64.

aes256() {
  decodeMe=""
  isPipe="$([ ! -t 0 ] && echo "true" || echo "false")"

  if [ "$1" = '-d' ] || [ "$1" = '--decode' ]; then
    decodeMe="-d"
    shift
  fi

  if [ "$isPipe" = "true" ]; then
    read input
    printf '%s\n' "$input" | openssl aes-256-cbc -a $decodeMe
    exitCode="$?"
  else
    openssl aes-256-cbc -a $decodeMe -in "$*"
    exitCode="$?"
  fi

  unset isPipe decodeMe input
  return "$exitCode"
}

tilisation:

echo "my string" | aes256
# enter aes-256-cbc encryption password
# Returns: U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=

echo "U2FsdGVkX1++e/BhBGlNOzNvarqq7zI13S/hbiKVzXQ=" | aes256 -d
# enter aes-256-cbc decryption password
# Returns: my string

aes256 file.plain > file.crypt
# enter aes-256-cbc encryption password

aes256 -d file.crypt
# enter aes-256-cbc decryption password
# Spits out original unencrypted file.
1