Oggi mi son divertito a creare un file criptato da usare per archiviare
le mie cose e non farle vedere ad occhi indiscreti.
Per prima cosa occorre aver bene chiaro che si vuole fare:
- avere un file "trasportabile"
- esser sicuri che in mani sbagliate non possa esser decriptato
- inserire la decriptazione e il montaggio in un servizio classico di
Debian
Cominciamo con "trasportabile", serve un file:
dd if=/dev/zero of=~/file_criptato bs=1M count=350
Questo creerà un file da 350 MB, se pensate che non sia sufficiente
come dimensione modificate l'ultimo parametro.
Per essere usato occorrerà montarlo come fosse un filesystem e allora
"looppiamolo"
losetup /dev/loop0 ~/file_criptato
e adesso per evitare problemi riempiamolo di "zozzerie"
badblocks -s -w -t random -v /dev/loop0
Ora veniamo alla vera criptazione:
cryptsetup luksFormat /dev/loop0 cryptsetup luksOpen /dev/loop0 ~/file_criptato
Ci verrà chiesta una chiave, mi raccomando che sia seria!!!
Con questo comando andiamo a criptare il device per cui ricordatevela
bene altrimenti poi saranno dolori!
Adesso abbiamo creato un device in /dev/mapper di nome file_criptato e
ora come se fosse un dispositivo qualunque lo formattiamo
mkfs.ext2 /dev/mapper/file_criptato
e per sicurezza lo controlliamo, metti che...
e2fsck -f /dev/mapper/file_criptato
Ora è possibile montare il device
mount /dev/mapper/file_criptato ~/cryptf
Quello che rimane da fare è riempire il nostro file con le cose
segretissime.
Come possibili varianti possiamo giocare con le opzioni di:
cryptsetup luksFormat /dev/loop0
per esempio scegliendo un sistema di
criptazione ben preciso oppure una lunghezza della chiave tale per cui
sarebbe estremamente complicato recuperarla.
Ora occorre automatizzare la procedura e scrivere qualche script per
inserirlo in un sistema Linux, cominciando con Debian
cat montami_il_file_criptato.sh #!/bin/bash losetup /dev/loop0 ~/file_criptato cryptsetup luksOpen /dev/loop0 file_criptato mount /dev/mapper/file_criptato ~/cryptf
cat smontami_il_file_criptato.sh #!/bin/bash umount ~/cryptf cryptsetup luksClose file_criptato losetup -d /dev/loop0
Questi rispettivamente i primi script per montare e smontare il file.
Possibili migliorie:
- controllo errori per ogni comando
- uso del primo device loop libero e non di loop0 che potrebbe già
esser usato
- uso di variabili d'ambiente o di file di configurazione per settare
alcuni parametri come il mount point o il nome del device criptato
Ora non resta che creare un file in /etc/init.d/ non so di nome cryptf
#! /bin/bash # /etc/init.d/cryptf # ### BEGIN INIT INFO # Provides: cryprtf # Required-Start: checkroot cryptdisks-early # Required-Stop: umountroot cryptdisks-early # Should-Start: udev mdadm-raid lvm2 # Should-Stop: udev mdadm-raid lvm2 # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: cryptf support files # Description: Cryptf ### END INIT INFO DESC="Cryptf common utilities" touch /var/lock/cryptf case "$1" in start) echo "Starting script cryptf " montami_il_file_criptato.sh ;; stop) echo "Stopping script cryptf" smontami_il_file_criptato.sh ;; *) echo "Usage: /etc/init.d/cryptf {start|stop}" exit 1 ;; esac exit 0
E come comando per inserire il servizio in avvio:
update-rc.d cryptf defaults
FATTO