Encrypter/Protéger ses données : Différence entre versions
m |
m (→Ecraser des fichiers sensibles) |
||
| Ligne 131 : | Ligne 131 : | ||
La méthode vi+openssl présentée pour Linux est fonctionnelle avec cygwin moyennant l'installation des packages adéquats. | La méthode vi+openssl présentée pour Linux est fonctionnelle avec cygwin moyennant l'installation des packages adéquats. | ||
| − | == | + | == Effacer le contenu des fichiers sensibles == |
| − | * shred (pkg coreutils) permet d'écraser le contenu d'un fichier et optionnellement le supprimer. | + | * shred (pkg coreutils) permet d'écraser le contenu d'un fichier et optionnellement le supprimer. A noter: les blocs constituant le fichier ont pu être déplacés au cours de sa vie (redimensionnement, ...) donc pas une garantie absolue... Exemple: nettoyage et suppression du fichier /tmp/myfile.txt |
| + | |||
| + | $ shred -u /tmp/myfile.txt | ||
[[Category:Sécurité]] | [[Category:Sécurité]] | ||
Version du 14 mars 2018 à 10:07
Les distributions Linux récentes et divers autres OS proposent d'activer l'encryption des partitions complètes lors de l'installation (ou après).
Si on n'opte pas pour cette solution, on peut néanmoins protéger ses données sensibles en créant des conteneurs chiffrés. C'est le choix préférentiel pour moi par rapport à l'utilisation de disques chiffrés, car permet de distinguer différents types de conteneurs, et également de les maintenir fermés la plupart du temps.
Cet article wikipedia donne des éléments de comparaison sur un ensemble de solutions de chiffrement.
Sommaire
Encrypter: Solutions utilisables sous Linux
Conteneurs avec accès à sudo
cryptsetup : conteneurs luks, trueCrypt...
cryptsetup permet notamment d'exploiter des conteneurs précédemment créés avec TrueCrypt, par exemple:
$ sudo cryptsetup --type tcrypt open ~/Documents/divers.tc tcmisc $ sudo mount -o rw,dmask=0000,fmask=0000 /dev/mapper/tcmisc ~/Documents/Importants
et pour démonter:
$ sudo umount ~/Documents/Importants $ sudo cryptsetup close tcmisc
On peut bien sûr créer ses conteneurs directement avec cryptsetup aussi. Par exemple, un conteneur de type luks:
1. créer le fichier support du conteneur (taille 512Mb ici):
$ dd if=/dev/zero of=/tmp/test.bin count=1000k
2. créer une partition dans ce fichier (on commence ici par identifier le 1er loop-device disponible et y associer notre fichier)
$ losetup -f
/dev/loop0
$ sudo losetup /dev/loop0 /tmp/test.bin
$ sudo fdisk /dev/loop0
n ==> new partition
p ==> primaire
accepter les autres valeurs par défaut.
3. Initialiser le cryptage du pseudo-device, ici au format luks
$ sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/loop0
=> répondre aux questions
$ sudo losetup -d /dev/loop0
4. Commencer à utiliser le conteneur: On l'ouvre, puis comme c'est le premier accès, il faut y créer un système de fichiers, puis le monter. Par la suite on n'aura qu'a le monter.
$ sudo cryptsetup --type luks open /tmp/test.bin test $ sudo mkfs.ext2 /dev/mapper/test $ sudo mount /dev/mapper/test /mnt/tcvp/
5. Utiliser le conteneur, et quand on veut le fermer:
$ sudo umount /mnt/tcvp/ $ sudo cryptsetup close test
NB: en utilisant "cryptsetup --type luks open ... " et "cryptsetup close ...", les operations losetup sont encapsulées.
Autres moyens d'accès aux conteneurs truecrypt
tcplay : conteneurs trueCrypt
(Essayé pour la première fois avec Fedora 17). Tcplay est une implémentation de TrueCrypt sous license BSD. Voir projet github ici. Avec tcplay, monter un conteneur 'truecrypt':
$ sudo losetup /dev/loop1 $HOME/my-tc-file $ sudo tcplay -m tcvol -d /dev/loop1 => entrer passphrase. $ sudo mount /dev/mapper/tcvol /mnt/tcvol
Et pour démonter:
$ sudo umount /mnt/tcvol $ sudo cryptsetup remove tcvol $ sudo losetup -d /dev/loop1
Sans accès à sudo
encFS : arborescence encryptés
Pour un utilisateur qui n'a pas accès à sudo, encFS (Package: fuse-encfs, voir man encfs) permet de créer et monter des pseudo systèmes de fichier encryptés.
Contrairement à cryptsetup, encFS ne crée pas vraiment de système de fichier dans un conteneur, mais s'appuie sur le système de fichiers sous-jacent pour stocker les données chiffrées. Lors de la création de la zone chiffrée, on passe 2 noms de dossiers: un chiffré, l'autre non chiffré. Ensuite, les fichiers déposés dans la zone non-chiffrée sont automatiquement copiés chiffrés dans l'autre répertoire (noms de fichiers/sous-répertoires également).
Ensuite, lorsque l'on démonte la zone chiffrée, les fichiers sont supprimés de la partie non-chiffrée, mais toujours visibles (chiffrés) dans l'autre. Petit incovénient donc, on masque moins de choses qu'avec un vrai conteneur.
Exemple de création/montage de dossier chiffré avec encFS (répertoire chiffré ~/.bdata, répertoire en clair: ~/cdata):
$ encfs ~/.bdata ~/cdata
=> la première fois, le encfs pose quelques questions pour la configuration de la zone (dont le mot de passe).
les fois suivantes, il ne s'agit que du montage: seul le mot de passe est demandé.
A ce stade, la zone est montée. df montre bien une ligne pour cet espace, mais les infos de taille et occupation correspondent au FS sous-jacent (/home dans cet exemple):
$ df encfs 10475520 5200528 5274992 50% /home/toine/cdata
openssl : cryptage direct de fichier
Documentation détaillée : man enc
Exemples:
$ echo test | openssl enc -aes-256-cbc -a -k 'absnfjtyrufjdngjvhfgksdfrtifghkv' U2FsdGVkX18cc9vgYPbfl74Q8dq/VyL4XyjvyEEo0LU= $ echo "U2FsdGVkX18cc9vgYPbfl74Q8dq/VyL4XyjvyEEo0LU=" | openssl enc -d -aes-256-cbc -a -k 'absnfjtyrufjdngjvhfgksdfrtifghkv' test $ openssl enc -aes-256-cbc -d -a -in /cygdrive/d/tmp/toine.bin | grep -i launch
openssl dans vi : décryptage du fichier à l'ouverture et cryptage à la sauvegarde
Cette méthode est intéressante car ne requiert pas de fichier temporaire en clair. Les données en mémoire sont en clair donc sensibles à un dump mémoire.
Les commandes suivantes sont à insérer dans ~/.vimrc ou équivalent. Il faut juste avoir openssl dans son path.
" OpenSSL encrypted files.
" PBKDF v1.5 (salted) aes-256-cbc encrypted file. (File magic "Salted__")
augroup aes
autocmd!
autocmd BufReadPre,FileReadPre *.aes set binary
autocmd BufReadPre,FileReadPre *.aes set history=0 cmdheight=3 viminfo=
autocmd BufReadPre,FileReadPre *.aes set noswapfile nowritebackup
autocmd BufReadPost,FileReadPost *.aes set shell=/bin/sh shellredir=>
autocmd BufReadPost,FileReadPost *.aes '[,']!openssl aes-256-cbc -d -salt
autocmd BufReadPost,FileReadPost *.aes set nobinary cmdheight& shell&
autocmd BufReadPost,FileReadPost *.aes let b:encflag=1
autocmd BufReadPost,FileReadPost *.aes exe "doau BufReadPost " . expand("%:r")
autocmd BufReadPost,FileReadPost *.aes redraw!
autocmd BufWritePre,FileWritePre *.aes mark z
autocmd BufWritePre,FileWritePre *.aes set binary cmdheight=3 shell=/bin/sh
autocmd BufWritePre,FileWritePre *.aes '[,']!openssl aes-256-cbc -salt
autocmd BufWritePost,FileWritePost *.aes undo
autocmd BufWritePost,FileWritePost *.aes set nobinary cmdheight& shell&
autocmd BufWritePost,FileWritePost *.aes 'z
augroup END
Ensuite, il suffit d'utiliser l'extension .aes (ou autre à condition d'adapter la macro) pour activer le mode crypté. Le mot de passe est demandé une fois à l'ouverture et 2 fois à l'écriture.
Encrypter: Solutions utilisables sous Windows
Le système propose de base BitLocker dans certaines versions (notamment entreprise) depuis Vista.
Depuis l'arrêt de TrueCrypt, il est possible d'utiliser VeraCrypt (son clone). Pour un usage personnel, et assurer la confidentialité de ses données dans les cas d'usage courants (perte/vol d'un PC par exemple), c'est tout à fait suffisant. L'ergonomie et intégration à Windows (au moins XP, 7 ) est correcte.
Egalement: FreeOTFE (si install sous winXP), dont le support a été arrété, est maintenant suivi sous le projet LibreCrypt. Cet outil est compatible LUKS => possibilité donc de partager des conteneurs avec le monde Android ou Linux.
WinZIP et autres utilitaires permettent aussi de créer des archives protégées par mot de passe.
Openssl pour windows (ou dans cygwin) permet de (dé)crypter directement un fichier.
La méthode vi+openssl présentée pour Linux est fonctionnelle avec cygwin moyennant l'installation des packages adéquats.
Effacer le contenu des fichiers sensibles
- shred (pkg coreutils) permet d'écraser le contenu d'un fichier et optionnellement le supprimer. A noter: les blocs constituant le fichier ont pu être déplacés au cours de sa vie (redimensionnement, ...) donc pas une garantie absolue... Exemple: nettoyage et suppression du fichier /tmp/myfile.txt
$ shred -u /tmp/myfile.txt