Sunday, September 04, 2005

Late night mini-guide: dmcrypt

Οκ, η αλήθεια είναι πως βαριέμαι και ύπνος δεν μου κολλάει. Ευκαιρία λοιπόν να γράψω και τίποτα χρήσιμο (σε αντίθεση με το απίστευτο flamewar που μπλέχτηκα στο blog του J95).

Το dmcrypt είναι η νέα γενιά για partition encryption σε συστήματα linux. Σε αντίθεση με το παλαιότερο cryptoloop που ουσιαστικά ήταν μια «χακιά» του loop device με την cryptoAPI, το dmcrypt χρησιμοποιεί την infrastructure του device mapper παρουσιάζοντας έτσι καλύτερη οργάνωση και δυνατότητα χειρισμού ενώ παράλληλα εμφανίζεται ανθεκτικό απέναντι σε ένα ψιλοαπίθανο μεν, εφικτό δε crypt-only attack που περιγράφηκε για το cryptoloop. Κάθολου άσχημα αν έχετε αρχεία που «καίνε» ή αν το p2p is your middle name και θεωρείτε πιθανή την επίσκεψη από απρόσκλητα τυπάκια ντυμένα στα μπλε.

Τι θα χρειαστείτε

  • Καταρχήν χρειάζεστε το κατάλληλο support στον kernel: Device-Drivers -> Multi-device support (RAID and LVM) -> [*] Multiple devices driver support (RAID and LVM) <*> Device mapper support <*> Crypt target support αλλά και Cryptographic options -> <*> AES cipher algorithms (i586) ή/και όποιον άλλο αλγόριθμο σας κάνει πιο πολύ κέφι.
  • libgcrypt
  • device-mapper
  • cryptsetup

Σετάροντας το partition Προσοχή: προυπάρχοντα data στο partition θα καταστραφουν!

  1. «σβήστε» το partition με shred: shred -n1 -v /dev/hdxN
  2. Φτιάχνουμε το «device» με το cryptsetup: cryptsetup -y -c algo -h sha1 create name /dev/hdxN όπου algo είναι ο αλγόριθμος που θέλουμε (πχ. aes) και name το όνομα που δίνουμε στο device (πχ. mistiko). Θα μας ρωτήσει να δώσουμε ένα passphrase (make it a good one!)
  3. Φορματάρουμε το ολοκαίνουριο device (καλό είναι να αποφύγετε τα παρατραβηγμένα filesystems and stick to the basics): mkfs.ext3 /dev/mapper/mistiko
  4. Μοντάρουμε το φρεσκοφορματαρισμένο partition and we are ready to rock n roll: mount /dev/mapper/mistiko /mnt/aivresto

Χρησιμοποιόντας το partition Μετά από ένα reboot, φυσικά το mapper device έχει εξαφανιστεί, οπότε πρέπει να ξανατρέξουμε το cryptsetup με τα ίδια ακριβώς options όταν το δημιουργούσαμε. Φυσικά αυτή την φορά ΔΕΝ θα φορματάρουμε πριν το mount γιατί αλλιώς τα encrypted data μας της προηγούμενης session πήγαν περίπατο! Έπίσης πρέπει να σημειωθεί πως με ένα απλό umount, δεν «εξαφανίσατε» το encrypted partition από περίεργα μάτια καθώς το mapper device (/dev/mistiko) υπάρχει ακόμα και τα περιεχόμενα θα εμφανιστούν περίτρανα με ένα απλό mount - θα πρέπει να σβήσετε το device με rm γι´αυτό. Πάντως, if the shit hits the fan, best choice is to pull the plug! Έτσι δεν θα πρέπει να αγχώνεστε για τυχόν residuals σε swap and what not (ιδίως αν κρυπτογραφείτε το swap σας με cryptsetup και /dev/urandom σαν keyfile σε κάθε boot :-P).

Έπειδή μπορεί να καταντήσει κουραστικό να τρέχεις κάθε φορά το cryptsetup (και να τρέχεις σε manpages αν είσαι ξεχασιάρης σαν εμένα) προσωπικά έφτιαξα ένα mini-shellscript που σε πιάνει απ'το χεράκι (feel free to use / rip / tear to pieces): #!/bin/bash echo "Insert block device:" read block echo "Insert Mapper Name:" read map echo "Insert mount point:" read mnt echo "Enter cypher (plus additional options):" read cphr if [ -e /dev/mapper/$map ]; then echo "Ooops... $map already exists" res=$(grep "/dev/mapper/$map" /proc/mounts | cut -d "/" -f 1-3) if [ $res = "/dev/mapper" ]; then echo "$map is already mounted"; else mount /dev/mapper/$map $mnt; fi else #echo "DEBUG INFO:" #echo "would decrypt $map from $block and mount at $mnt" cryptsetup -c $cphr create $map $block mount /dev/mapper/$map $mnt fi

4 comments:

---. said...

Ρε αφεντικό, δεν καταλαβαίνω νάδα. Ή κάντα νιανιά, για να μαθαίνουμε ή γράψε τίποτε ιατρικό, που το πας το γράμμα! ;))))

KiTaSuMbA said...

Sorry ρε constantina, το θέμα είναι άκρως τεχνικό και αφορά προχωρημένους χρήστες GNU/Linux και μόνο. Λογικό που δεν καταλαβαίνεις και τίποτα.

Υπόσχομαι να γράψω κάτι «ιατρικού ενδιαφέροντος» στο άμεσο μέλλον, σίγουρα όχι πάντως σε σχέση με φασκόμηλα και με μαντζούνια γιατί αυτό το κουράσαμε υπερβολικά πιστεύω. ;-)

KiTaSuMbA said...

Ατς, το κάνανε και how-to; Εγώ από το forum το είχα πάρει τον ιούνιο ή τον ιούλιο, δεν θυμάμαι.
Anyway, μπορεί και να το μάθει και κανείς άλλος.

Πάντως με το link φάτσα κάρτα, δεν χρειάζεται να'σαι και sherlock holmes να καταλάβεις την distro μου. ;-)

Anonymous said...

δες κι εδώ ;)