Cryptsetup: Δημιουργία κρυπτογραφημένου File Container

Σε παλαιότερη δημοσίευση είχαμε δει πως μπορούμε να κρυπτογραφήσουμε ένα εξωτερικό μέσο, με το cryptsetup.
Σε αυτή τη δημοσίευση θα δούμε πως μπορούμε να δημιουργήσουμε ένα File Container με σύστημα αρχείων ext4, το οποίο στη συνέχεια θα κρυπτογραφήσουμε με το cryptsetup.
Τον οδηγό τον υλοποιούμε σε λειτουργικό σύστημα Ubuntu/Linux 16.04 LTS, ωστόσο περιμένω να λειτουργήσει το ίδιο σωστά σε οποιαδήποτε άλλη διανομή Linux.
Οι οδηγίες δημοσιεύονται με εντολές τερματικού έτσι ώστε να υπάρχει «κοινή γλώσσα», ανεξάρτητα από το γραφικό περιβάλλον που ενδέχεται να χρησιμοποιούμε.

ΕΛΕΓΧΟΣ ΑΡΘΡΩΜΑΤΟΣ ΚΑΙ ΕΓΚΑΤΑΣΤΑΣΗ

Για τη σωστή χρήση του cryptsetup ελέγχουμε αν το module dm_crypt είναι φορτωμένο με τη παρακάτω εντολή.

$ lsmod | grep dm_crypt

Εάν μας γυρίσει κάποιο αποτέλεσμα, μπορούμε να προχωρήσουμε. Εάν όχι, φορτώνουμε το module με την εντολή:

$ sudo modprobe -v dm_crypt

Κάνουμε εγκατάσταση του cryptsetup με τη παρακάτω εντολή:

$ sudo apt-get install cryptsetup

ΔΗΜΙΟΥΡΓΙΑ ΚΡΥΠΤΟΓΡΑΦΗΜΕΝΟΥ FILE CONTAINER

Με τη παρακάτω εντολή θα δημιουργήσουμε μέσα στο προσωπικό μας κατάλογο ένα αρχείο μεγέθους 1GB, με όνομα PRIVATE, το οποίο στη συνέχεια θα χρησιμοποιήσουμε ως κρυπτογραφημένο χώρο.

$ fallocate -l 1GB PRIVATE

Με τη βοήθεια του cryptsetup κρυπτογραφούμε το αρχείο.

$ cryptsetup -v luksFormat PRIVATE

Χρησιμοποιούμε εδώ το LUKS, κατά τη γνώμη μου ως πιο αξιόπιστο.
Θα μας επιστρέψει μια προειδοποίηση στην οποία πρέπει να απαντήσουμε YES (με κεφαλαία), ώστε να συνεχίσει.
Έπειτα θα μας ζητήσει τον κωδικό (passphrase) δυο φορές.

WARNING!
========
This will overwrite data on PRIVATE irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase: 
Verify passphrase: 
Command successful.

Δίνοντας τη παρακάτω εντολή θα δούμε πληροφορίες σχετικά με τον κρυπτογραφημένο χώρο που δημιουργήσαμε.

$ cryptsetup -v luksDump PRIVATE
LUKS header information for PRIVATE

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha1
Payload offset: 4096
MK bits:        256
......
......
......

ΑΝΟΙΓΜΑ CONTAINER ΚΑΙ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΩΝ

Αυτό που έχουμε να κάνουμε τώρα είναι να «ανοίξουμε» τον κρυπτογραφημένο χώρο και να δημιουργήσουμε ένα σύστημα αρχείων το οποίο θα φιλοξενεί τα προσωπικά μας δεδομένα.

$ sudo cryptsetup -v luksOpen PRIVATE PRIVATE

Βλέπουμε παραπάνω ότι χρειαζόμαστε δικαιώματα διαχειριστή (sudo) και επίσης σημειώστε ότι το δεύτερο PRIVATE δεν είναι τυπογραφικό λάθος. Πρέπει να προσδιορίσουμε ένα όνομα στο οποίο θα «ανοίξει» ο κρυπτογραφημένος χώρος. Αναλόγως το όνομα που θα δώσουμε θα το εντοπίσουμε έπειτα στη διαδρομή: /dev/mapper/
Αν όλα πάνε καλά, το αποτέλεσμα της παραπάνω εντολής πρέπει να είναι όπως παρακάτω:

$ [sudo] password for nicktux: 
Enter passphrase for PRIVATE: 
Key slot 0 unlocked.
Command successful.

Τώρα μπορούμε να δημιουργήσουμε ένα σύστημα αρχείων, κατά προτίμηση ext4.

$ sudo mkfs -t ext4 /dev/mapper/PRIVATE

Το σύστημα αρχείων δημιουργείται, όταν η εντολή επιστρέψει αποτελέσματα όπως τα παρακάτω:

mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 243628 4k blocks and 60928 inodes
Filesystem UUID: decf6b5c-ee51-4713-92fa-aba25a0da8d8
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

ΠΡΟΣΑΡΤΗΣΗ CONTAINER

Πλέον μπορούμε να προσαρτήσουμε το «διαμέρισμα» όπως και κάθε άλλο διαμέρισμα στο επιθυμητό σημείο προσάρτησης. Εδώ χρησιμοποιούμε το /mnt, ωστόσο μπορείτε να δημιουργήσετε το δικό σας σημείο προσάρτησης εάν θέλετε.

$ sudo mount /dev/mapper/PRIVATE /mnt
$ cd /mnt && ls

Είμαστε πλέον μέσα στο File Containter που δημιουργήσαμε και μπορούμε να δούμε τον αναμενόμενο lost+found κατάλογο.
Μπορούμε πλέον να δημιουργήσουμε καταλόγους, αρχεία, να αντιγράψουμε τα προσωπικά μας δεδομένα μέσα στο σημείο προσάρτησης /mnt.

ΑΠΟ-ΠΡΟΣΑΡΤΗΣΗ CONTAINER ΚΑΙ ΚΛΕΙΣΙΜΟ

Αφού έχουμε τελειώσει με τη δημιουργία – αντιγραφή των προσωπικών μας αρχείων, προχωράμε στη διαδικασία απορποσάρτησης και κλεισίματος του, πλέον, αποκρυπτογραφημένου container.

Για αποπροσάρτηση, όπως και για κάθε άλλο σύστημα αρχείων/σημείο προσάρτησης/, δίνουμε:

$ sudo umount /mnt

Για κλείσιμο (κρυπτογράφηση) του container δίνουμε:

$ sudo cryptsetup luksClose PRIVATE

Πλέον εάν κοιτάξουμε στη διαδρομή /dev/mapper το αρχείο PRIVATE θα έχει εξαφανιστεί (κλείσει). Έχει μείνει στον προσωπικό μας κατάλογο το αρχείο ονόματι PRIVATE που δημιουργήσαμε στην αρχή της διαδικασίας. Αυτό είναι και το κρυπτογραφημένο αρχείο-container το οποίο δεν πειράζουμε.

Για να το ανοίξουμε ξανά και να τροποποιήσουμε αρχεία, πρέπει να ακολουθήσουμε την ίδια διαδικασία, προσάρτησης και ανοίγματος.
Παράδειγμα:

$ sudo cryptsetup luksOpen PRIVATE PRIVATE
$ sudo mount /dev/mapper/PRIVATE/ /mnt

ΤΙ ΚΑΝΑΜΕ ΣΕ ΑΥΤΟ ΤΟΝ ΟΔΗΓΟ

  1. Δημιουργήσαμε ένα αρχείο μεγέθους 1GB,
  2. το διαμορφώσαμε με το cryptsetup σε ένα κρυπτογραφημένο χώρο,
  3. στη συνέχεια δημιουργήσαμε ένα σύστημα αρχείων(ext4) σε αυτό το αρχείο (μετατροπή σε container),
  4. έπειτα κάναμε προσάρτηση το container σε ένα σημείο προσάρτησης (/mnt),
    • με τη προϋπόθεση ότι έχουμε ολοκληρώσει τη δημιουργία ή αντιγραφή αρχείων στο /mnt
  5. κάνουμε αποπροσάτηση το container και κλείνουμε το σημείο πρόσβασης (κρυπτογραφούμε).

Συμβάλετε κι εσείς με ένα σχόλιο

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

Λογότυπο WordPress.com

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

Φωτογραφία Twitter

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

Φωτογραφία Facebook

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

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

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

Σύνδεση με %s