Κρυπτογράφηση αρχείων σε 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 utilitακι 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 βρήσκεται κοντά μου την ώρα που το χρειάζομαι.