Crypto file

Oggi mi son divertito a creare un file criptato da usare per archiviare le mie cose e non farle vedere ad occhi indiscreti.

Matrix
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

blogroll

social