Κρυπτογράφηση αρχείων σε usb

Από Hellug Wiki

Βασικά ο τίτλος δεν είναι πολύ κατάλληλος. Ήθελα λοιπόν σε ενα USB stick να μπορώ κάποια αρχεία να τα έχω κρυπτογραφημένα και να μπορώ χωρίς κόπο να τα βλέπω και απο Linux και απο Windows.

  • Μέσα απ'το linux χρειαζόμαστε το πακέτο cryptsetup:
apt-get install cryptsetup
  • Φτιάχνουμε ενα αρχείο 200 περίπου Mb (ή όσης χωρητικότητας πιστεύουμε ότι θα χρειαστούμε):
dd if=/dev/urandom of=/tmp/encrypted.vol bs=1024 count=200000
  • Κάνουμε αντιστοίχιση του πρώτου ελεύθερου loop device με το αρχείο που δημιουργήσαμε:
export LOOP=`losetup -f`
losetup $LOOP /tmp/encrypted.vol
Χρησιμοποιούμε τη σωστή απόστροφο: `
  • Κρυπτογραφούμε όλο το αρχείο encrypted.vol με 256bit aes key και χρησιμοποιούμε LUKS standard format. Θα μας ζητήθεί να ορίσουμε δύο φορές ενα passphrase. Καλό θα είναι να είναι κάτι περίπλοκο και μεγάλο καθώς με αυτό το passphrase θα αποκρυπτογραφούμε το αρχείο κάθε φορα.
cryptsetup -c aes -s 256 --verify-passphrase luksFormat $LOOP
  • Αποκρυπτογραφούμε το αρχείο και το δίνουμε ένα προσωρινό όνομα με το οποίο θα το αναγνωρίζει ο device mapper:
cryptsetup luksOpen $LOOP koukou
  • Φτιάχνουμε το filesystem. Διαλέγουμε vfat για μπορούμε να το βλέπουμε και απο windows
mkdosfs /dev/mapper/koukou
  • Το κάνουμε mount κάπου:
mkdir -p /mnt/koukou
mount /dev/mapper/koukou /mnt/koukou
  • Τώρα μπορούμε να ρίξουμε μέσα στο /mnt/koukou όλα τα αρχεία μας τα οποία θέλουμε κρυπτογραφημένα. Μόλις μεταφέρουμε εκεί τα αρχεία μας, κάνουμε unmount το device koukou και το αποδεσμέυουμε απο τον device mapper:
umount /mnt/koukou
cryptsetup luksClose koukou
  • Αφαιρούμε τη συσχέτιση του encrypted.vol με το loop device:
losetup -d $LOOP 
  • Τώρα λοιπόν έχουμε ενα encrypted image (/tmp/encrypted.vol) με τα αρχεία μας. Το αντιγράφουμε μέσα στο usb stick (πχ /dev/sda1 mounted στο /media/disk):
mv /tmp/encrypted.vol /media/disk
  • Μέσα στο USB stick εχω τοποθετήσει το παρακάτω script για να κάνει αυτόματα όλη τη διαδικασία (δίνει read write δικαιώματα στον χρήστη με uid 1000, αυτό το αλλάζετε όπως σας βολεύει). To script πρέπει να το τρέχετε σαν root μέσα απο το mount point του usb stick.
cat > /media/disk/mount.sh << EOF

#!/bin/sh

    DEVICEPATH=`dirname $0`/encrypted.vol
    MNTDIR=`mktemp -d`
    LOOPDEV=`losetup -f`

    losetup "$LOOPDEV" "$DEVICEPATH"
    cryptsetup luksOpen "$LOOPDEV" flashaki
    mount -t vfat -o nodev,noexec,nosuid,uid=1000,gid=100,umask=007,codepage=850,iocharset=utf8,shortname=mixed,quiet /dev/mapper/flashaki "$MNTDIR"
    echo "-------------------------------------------"
    echo "Encrypted container mounted at $MNTDIR"
    echo
    echo "Press any key to unmount"
    echo "-------------------------------------------"
    read key
    umount "$MNTDIR"
    rmdir "$MNTDIR"
    cryptsetup luksClose flashaki
    losetup -d $LOOPDEV
    echo "done"
EOF
chmod +x /media/disk/mount.sh

Θέλουμε λοιπόν τα αρχεία μας αυτα να τα βλέπουμε απο κάθε windows μηχανάκι:

  • Κατεβάζουμε το πάρα πολύ ωραίο open source freeOTFE. Εγώ προτίμησα τα binary files κι όχι το full installation package. Το τοποθετούμε μές στο usb και το κάνουμε unzip:
cd /media/disk
mkdir FreeOTFE
cd !$
unzip /path/to/FreeOTFE_4_00.zip

Τώρα απο οποιοδήποτε Windows μπορουμε να τρέχουμε το freeotfe.exe που βρίσκεται στο USB stick μας και να κάνουμε mount το αρχείο encrypted.vol. Το freeotfe εχει την επιλογή να ανοίξει με portable mode, το οποίο σημαίνει οτι δεν χρειάζεται να κάνουμε καμία εγκατάσταση στα Windows όπου το τρέχουμε.

Με αυτό τον τρόπο έχουμε τη δυνατότητα να δούμε τα αρχεία μας απο οποιοδήποτε pc!