Encrypter/Protéger ses données : Différence entre versions

De TechWik
Aller à : navigation, rechercher
m
m (openssl dans vi : décryptage du fichier à l'ouverture et cryptage à la sauvegarde)
Ligne 91 : Ligne 91 :
 
Les données en mémoire sont en clair donc sensibles à un dump mémoire.  
 
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 avoir openssl dans son path).  
+
Les commandes suivantes sont à insérer dans directement dans ~/.vimrc  ou équivalent (par exemple dans un fichier .vim/plugin/aes.vim). Il faut avoir openssl dans son path pour que le plugin fonctionne.  
  
 
   " OpenSSL encrypted files.
 
   " OpenSSL encrypted files.
Ligne 115 : Ligne 115 :
 
   augroup END
 
   augroup END
  
Ensuite, il suffit d'utiliser l'extension .aes (ou autre à condition d'adapter la macro) pour activer le mode crypté.  
+
Ensuite, il suffit d'utiliser l'extension .aes (ou autre à condition d'adapter le code) pour activer le mode crypté.  
 
Le mot de passe est demandé une fois à l'ouverture et 2 fois à l'écriture.
 
Le mot de passe est demandé une fois à l'ouverture et 2 fois à l'écriture.
  
 
'''Attention:''' ici, on a positionné la variable "backup". C'est préférable car an cas de problème de confirmation du mot de passe, le fichier est écrasé...
 
'''Attention:''' ici, on a positionné la variable "backup". C'est préférable car an cas de problème de confirmation du mot de passe, le fichier est écrasé...
 +
 +
'''Note:''' le plugin [https://www.vim.org/scripts/script.php?script_id=2012 openssl.vim] effectue le même type de fonction avec un panel plus large d'algorithmes, et une tempo de sortie automatique de vi.
  
 
== Encrypter: Solutions utilisables sous Android ==
 
== Encrypter: Solutions utilisables sous Android ==

Version du 20 mai 2018 à 16:57

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.

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 ~/misc.tc tcmisc
 $ sudo mount -o rw,dmask=0000,fmask=0000 /dev/mapper/tcmisc /mnt/misc

et pour démonter:

 $ sudo umount /mnt/misc
 $ 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 (ex: 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 directement dans ~/.vimrc ou équivalent (par exemple dans un fichier .vim/plugin/aes.vim). Il faut avoir openssl dans son path pour que le plugin fonctionne.

 " 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 backup
 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 le code) pour activer le mode crypté. Le mot de passe est demandé une fois à l'ouverture et 2 fois à l'écriture.

Attention: ici, on a positionné la variable "backup". C'est préférable car an cas de problème de confirmation du mot de passe, le fichier est écrasé...

Note: le plugin openssl.vim effectue le même type de fonction avec un panel plus large d'algorithmes, et une tempo de sortie automatique de vi.

Encrypter: Solutions utilisables sous Android

Conteneurs sans nécessité de rooter

  • application EDS (ou EDS lite): compatible avec des conteneurs au format Truecrypt, VeraCrypt, LUKS, EncFs

Conteneurs avec nécessité de rooter

  • application LUKSmanager

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