Il y a différents moyens de chiffrer des fichiers sous GnuLinux, mais ils se classent généralement dans 2 catégories.

  • Le chiffrement où l’on créé un volume chiffré.. et on met les fichiers dedans.

On trouve par exemple:
Truecrypt
loop-AES
dm-crypt

  • Le chiffrement fichier par fichier.

On trouve par exemple:
eCryptfs
EncFS

Le but de ce billet n’est pas de comparer les avantages/inconvénients de ces différents logiciels ni de décrire leur installation… mais uniquement de lister les résultats de mes tests de vitesse d’écriture sur le disque dur (non SSD) branché en USB sur mon Raspberry Pi.

Voir ces tests de vitesse sans chiffrement.

dd if=/dev/zero bs=4096 count=244140 of=/data/file_1GB  
  • Sans chiffrement
 999997440 octets (1,0 GB) copiés, 35,4711 s, 28,2 MB/s
  • Truecrypt(AES/256)
999997440 octets (1,0 GB) copiés, 229,275 s, 4,4 MB/s
  • loop-AES (AES/128)
999997440 octets (1,0 GB) copiés, 164,494 s, 6,1 MB/s
  • dm-crypt(LUKS) (AES/256)
999997440 octets (1,0 GB) copiés, 653,715 s, 1,5 MB/s
  • eCryptfs (AES/128/fnek)
999997440 octets (1,0 GB) copiés, 187,407 s, 5,3 MB/s
  • EncFS (Expert/AES/128/Blocs 4096)
999997440 octets (1,0 GB) copiés, 308,457 s, 3,2 MB/s

sshuttle est a mi-chemin entre le VPN et le port forwarding SSH.
Il permet en gros, de faire une sorte de VPN avec juste un serveur SSH en face.

Concrètement, je l’utilise surtout lorsque je suis connecté à des réseaux type “Wifi Hotel”.
Je connecte sshuttle vers mon Raspberry chez moi, en écoute en SSH (port 80 et authentification uniquement par clé).
De cette manière tout ce qui sort de mon pc est chiffré quand il passe sur le réseau Wifi, y compris mon trafic Internet, qu’il soit fait par mon navigateur, ou même un simple apt-get.

Il remplace donc avantagement un tunnel SSH avec l’option -D ainsi que l’utilisation de tsocks

Il n’encapsule pas exactement TCP dans TCP, ce qui évite des problèmes de performances réseau.
La partie DNS est “tunnelisée” avec l’option --dns
/!\ UDP (autre que DNS) et ICMP ne passent pas dans le tunnel.

sshuttle est dispo dans les dépots Debian, mais pour moi l’authentification par clé ne fonctionnait pas.
Si c’est toujours le cas, passez donc par github pour l’installation de la dernière version:

$ git clone git://github.com/apenwarr/sshuttle  
$ cd ./sshuttle  

$ curl ip.uggy.org  
x.x.x.x  
$   
$ ./sshuttle --dns -r y.y.y.y:80 0/0  
Connected.  

On ouvre par exemple un autre terminal

$ curl ip.uggy.org  
y.y.y.y  

Avec la commande sshuttle ci-dessus, toutes les connexions (0/0) DNS et TCP passent par le tunnel SSH (OpenSSH ouvert sur le port 80).
Pas besoin donc de configurer son navigateur pour passer par un proxy Socks, ni d’activer l’option network.proxy.socks_remote_dns, ni d’utiliser tsocks.

On peut utiliser aussi utiliser par exemple:

  • l’option -D pour le faire tourner en démon.
  • l’option -x pour exclure des réseaux.

Voir le README pour toutes les informations.

J’ai un projet où le Rasp sera autonome, et devra tourner sur batterie.
J’ai donc décidé d’utiliser un modèle A (pas besoin d’Ethernet, 10€ moins cher et consomme moins si pas d’utilisation d’hub USB)

J’ai ensuite acheté:

  • un LM2596 à 1,35€ (port inclu).

  • Un support pour 6 piles AA (1,22€ port inclu)

  • Un cable USB (pour la prise de l’alim)

Le LM2596 à pour but ici de maintenir une tension de 5V pour alimenter le Rasp. Ceci même si les 6 piles accumulateurs AA fournissent 6 x 1.2V. (Pour ce test il s’agit de 2000mAH 1.2V Ni-MH.)

Il suffit de tourner la petite vis pour ajuster la tension de sortie:

lm2596_m

En pratique, j’ai coupé le serveur X et juste utilisé le script suivant (lancé par le cable sérial)

#!/bin/bash
while true
do
	echo `date` >> /home/pi/heure
sleep 60
done
$ nohup ./heure.sh &

Une fois qu’il s’est éteint, on regarde le fichier /home/pi/heure pour voir l’heure de début et de fin : 18h27 d’autonomie

D’après mon compteur d’énergie, il consomme dans cette configuration 1.6 W

lm2596-battery_m

Dans mon cas, il y aura quand même des trucs branchés en USB..Il a des chances de consommer comme un modèle B… D’autres tests plus complets seront nécessaires.

A tester également quelques pistes pour le faire consommer moins…

Detox est un petit soft qui permet de renommer des fichiers contenant des caractères un peu spéciaux.

J’utilisais jusqu’à présent une “grosse” function dans mon .bashrc pour essayer de faire cela “moi-même”.. ce qui fait que je n’étais jamais encore tombé sur ce petit soft.

Vous pouvez éditer le fichier /usr/share/detox/safe.tbl pour modifier le comportement du remplacement des caractères…

Exemple, on créé un fichier avec des caractères un peu spéciaux :

$ touch "éa%b =c+dàe[f)g"  
$ detox -v éa%b =c+dàe[f)g   
Scanning: éa%b =c+dàe[f)g  
éa%b =c+dàe[f)g -> ea_b_c_dae-f-g  
$ ls ea_b_c_dae-f-g   
ea_b_c_dae-f-g  
$

Le fichier à été renommé en supprimant tous les caractères particuliers.

Dans la vraie vie c’est surtout pratique pour renommer les trucs téléchargés (légalement bien entendu).

Pour plus d’infos:

man detox  
man detox.tbl  
man detoxrc  

Le RaspberryPi nécessite 2 partitions et les OS sont généralement founis en .img

J’avais besoin de comparer certains fichiers entre mon installation Rasbian et la distribution Raspbmc.

Je télécharge donc raspbmc-final.img sur mon laptop puis:

$ mkdir mount  
$ sudo fdisk -l raspbmc-final.img   

Disk raspbmc-final.img: 1363 MB, 1363148800 bytes  
4 heads, 32 sectors/track, 20800 cylinders, total 2662400 sectors  
Units = sectors of 1 * 512 = 512 bytes  
Sector size (logical/physical): 512 bytes / 512 bytes  
I/O size (minimum/optimal): 512 bytes / 512 bytes  
Disk identifier: 0x000d692e  

Device Boot Start End Blocks Id System  
raspbmc-final.img1 4096 147455 71680 c W95 FAT32 (LBA)  
raspbmc-final.img2 151552 2662399 1255424 83 Linux  

Si on veut monter la 1ère partition qui démarre au sector 4096, l'offset à utiliser est donc 512x4096=2097152

$ sudo mount -o loop,offset=2097152 raspbmc-final.img mount/  
$ cat mount/cmdline.txt   
dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2  
$ sudo umount mount/

Si on veut monter la 2ème partition qui démarre au sector 151552, l’offset à utiliser est donc 512x151552=77594624

$ sudo mount -o loop,offset=77594624 raspbmc-final.img mount/  
$ cat mount/etc/hostname   
raspbmc  
$ sudo umount mount/  

man fdisk  
 [...] starting offset and the size of each partition is stored in two ways: as an absolute number of sectors [...]
 
man mount  
 [...] mount knows about four options, namely loop, *offset*, sizelimit and encryption  [...]

[Edit:] Tassatux m’indique dans le commentaires que kpartx est créé à cet effet:

This tool, derived from util-linux' partx, reads partition tables on specified device and create device maps over partitions segments detected. It is called from hotplug upon device maps creation and deletion.

Voir les commentaires pour les informations supplémentaires.