Encrypter un fichier facilement

02/03/2011

On discutait sur le canal fedora-fr (IRC, sur freenode.net) quand une question anodine m’a fait jouer avec bash et gnome. La question était de savoir comment encrypter un fichier facilement sous Linux. Casper, un ami du net, parla alors de gpg, puis on a doucement dérivé sur openssl. Et je me suis amusé à faire un truc simple: une icone sur le bureau qui accèpte un fichier à déposer dessus et qui l’encrypte directement. C’est simple comme tout, à condition de connaitre un peu le bash.

Le cahier des charges est le suivant: -une icone simple, juste un drag and drop -encrypte ou décrypte le fichier selon le type -mot de passe demandé, écriture sur le bureau

C’est le second point qui m’a posé un petit souci mais je me suis rendu compte qu’on pouvait tricher. D’abord voyons comment on encrypte avec openssl (j’ai choisi un cryptage des3, assez fiable):

openssl des3 -salt -in fichier1 -out fichier2

Ici, le fichier fichier2 est le fichier encrypté, si je veux le décrypter:

openssl des3  -d -salt -in fichier2 -out fichier3

le fichier fichier3 est alors le résultat, c’est à dire le même fichier que fichier1

Pour savoir reconnaitre un fichier crypté, j’ai triché. Comme j’ai utilisé l’option -salt un //sel// est ajouté. Cela enrichi le fichier à sa première ligne d’un “Salted_” qui apparait… par contre le type de fichier est “data”:

$ file -b fichier2
data

Voilà comment je sais si le fichier est encodé par ma méthode. Et bien faisons un script: ` #!/bin/bash

IN=“$@” mime=$(file -b “$IN”) encrypted=1

if [[ “$mime” == “data” ]]; then head -n1 “$IN” | grep “Salted” > /dev/null encrypted=$? fi

if [ “$encrypted” == “1” ]; then #openssl encryption pass=$(zenity --entry --text “Password to encrypt”) openssl des3 -salt -in “$IN” -out ~/Bureau/$(basename $IN).encrypted -pass pass:$pass else #openssl decrypt pass=$(zenity --entry --text “Password to decrypt”) #remove dirname and extension out=$(basename $IN) out=${out%.} openssl des3 -d -salt -in “$IN” -out ~/Bureau/$out -pass pass:$pass if [[ “$?” != “0” ]]; then zenity --error --text “Incorrect Password” fi fi

`

Ce script prend un fichier en argument et écrit le fichier résultant dans le bureau. Vous allez le sauver dans \$HOME/bin/encrypter.sh et le rendre exécutable:

chmod +x ~/bin/encrypter.sh

Reste alors à faire un lanceur dans le bureau, tapez cette commande:

cat >  $HOME/Bureau/Encrypter.desktop <<EOF
#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[fr_FR]=gnome-panel-launcher
Exec=$HOME/bin/encrypter.sh
Name[fr_FR]=Encrypter
Name=MonTest
Icon=/usr/share/icons/gnome/scalable/status/security-high-symbolic.svg
EOF

chmod +x $HOME/Bureau/Encrypter.desktop

Dans le bureau apparait une icone nommé Encrypter, glisser un fichier (pas un répertoire) sur cette icone, on vous demande un mot de passe pour encrypter le fichier. Dans le bureau apparait alors un fichier suffixé par “.encrypted”

Reglissez ce fichier sur l’icone, on vous demande le mot de passe et si l’opération à marché vous voyez le fichier apparaitre.

Bref, c’est juste un bricolage là, mais c’est intéressant de voir à quel point on peut jouer avec Linux sur ce genre de travail.

Ça peut vous intéresser aussi


Gnome shell innove

Voilà des années qu’on a droit à un type ...


Optimisons un peu notre Linux en limitant les accès disques

Que vous ayez un SSD ou non, je pense que ...


Gnome 3 est pourtant meilleur

Voilà des années que j’utilisais Xmonad, un tiling desktop ...


Monter un partage webdav sharepoint sur Linux

Quand on m’a posé cette question, au boulot, chez un ...

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

webozor - 02/03/2011

Article intéressant, comme d’hab.

2 petites coquilles en début d’article

décrupter -> décrypter fichier” -> fichier3

Metal3d - 02/03/2011

Merci :) et effectivement je relis pas assez mes articles avant de poster… Je répare ça :)

yub fongarnand - 24/09/2011

Et sinon, il y a bcrypt http://bcrypt.sourceforge.net/

marche tout seul… pas besoin de script autour… je l’ai utilisé dans mon ancienne vie!

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.