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

Advertisements

5 comments

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

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

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

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

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s