Notice icon attention yellow.png Τα περιεχόμενα του ιστότοπου δεν ανανεώνονται από το καλοκαίρι του 2015. Τα άρθρα πιθανόν να έχουν ελλείψεις ή ανακρίβειες. Συμβουλευτείτε και μια δεύτερη πηγή γνώσης πριν εφαρμόσετε πρακτικές οδηγίες.

Κρυπτογράφηση δίσκου με cryptsetup

Από Skytales
Αναθεώρηση ως προς 14:19, 1 Οκτωβρίου 2011 από τον Luigi (Συζήτηση | συνεισφορές) (Νέα σελίδα με '==Κρυπτογράφηση με cryptsetup (dm-crypt) σε Linux διανομές== ====Εισαγωγικά==== Το dm-crypt [https://secure.wikimedia.org/wikipedia/e...')

(διαφορά) ←Παλαιότερη αναθεώρηση | Τελευταία αναθεώρηση (διαφορά) | Νεώτερη αναθεώρηση → (διαφορά)
Μετάβαση σε: πλοήγηση, αναζήτηση

Κρυπτογράφηση με cryptsetup (dm-crypt) σε Linux διανομές

Εισαγωγικά

Το dm-crypt [1], μέρος της υποδομής device-mapper [2] προσφέρει κρυπτογράφηση συσκευών/δίσκων χρησιμοποιώντας εφαρμογή του πυρήνα του Linux. Δε θα χρησιμοποιήσουμε άμεσα το dm-crypt λόγω της πολυπλοκότητάς του, αντίθετα θα χρησιμοποιήσουμε μια έκδοση του προγράμματος cryptsetup, που έχει ενεργοποιημένο το LUKS(Linux Unified Key Setup).

Το LUKS είναι το στάνταρ του Linux για κρυπτογράφηση δίσκων. Έχοντας μια κοινή πολιτική στη διαμόρφωση δίσκων, διευκολύνεται η συμβατότητα ανάμεσα σε linux διανομές, και προσφέρεται ασφαλής διαχείριση με πολλαπλούς χρήστες. Το LUKS αποθηκεύει όλες τις απαραίτητες πληροφορίες εγκατάστασης στην αρχή του partition (header), δίνοντας στον χρήστη τη δυνατότητα να μετακινεί τα δεδομένα του απρόσκοπτα.

Το Cryptsetup χρησιμοποείται ως frontend για να διαμορφώσουμε κατάλληλα και ευκολότερα τις επιλογές του dm-crypt για τους δίσκους μας.

Εγκατάσταση του cryptsetup

για διανομές Debian ή Ubuntu σε ένα terminal δίνουμε :

sudo apt-get install cryptsetup

Πριν την κρυπτογράφηση

Χρησιμοποιώντας το dm-crypt/LUKS, μπορούμε να κρυπτογραφήσουμε το περιεχόμενο οποιασδήποτε συσκευής(εσωτερικής ή εξωτερικής, ολόκληρης ή μερικής). Πριν προχωρήσουμε όμως στην κρυπτογράφηση θα κάνουμε κάποιες προπαρασκευαστικές ενέργειες, στην συσκευή μας, ως ακολούθως :

Θέλουμε να διασφαλίσουμε την ακεραιότητα της κρυπτογράφησης, σε περίπτωση που κάποιος τρίτος προσπαθήσει να την σπάσει. Θα ελέγξουμε για κατεστραμμένους τομείς στον δίσκο και θα γράψουμε μια φορά τυχαία δεδομένα πάνω στη συσκευή για να υπάρχει ομοιομορφία στην κρυπτογράφηση.

Έλεγχος για bad sectors

Θα χρησιμοποιήσουμε την εντολή badblocks [3], έτσι ώστε τυχόν κατεστραμμένοι τομείς του δίσκου, να αγνοηθούν από την κρυπτογράφηση. Η διαδικασία αυτή θα πάρει κάποιο χρόνο, ανάλογα και με το μέγεθος της συσκευής.

sudo badblocks -c 10240 -s -w -t random -v /dev/sdx 
  • -c ο αριθμός των block της συσκευής που ελέγχονται μαζί, προεπιλογή 64.
  • -w ελέγχος με εγγραφή. Η εντολή badblocks γράφει κάποιες ακολουθίες στον δίσκο, στη συνέχεια τις διαβάζει και συγκρίνει για τυχόν λάθη.
  • -t επιλογή της ακουλουθίας που θα γράφει και θα διαβάζει
  • -s δείχνει την πρόοδο της διαδικασίας

για περισσότερες λεπτομέρειες δώστε στο τερματικό

man badblocks
Εγγραφή τυχαίων δεδομένων με shred

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

sudo shred -v -n 1 /dev/sdx 
  • -n αριθμός επαναλήψεων. Προεπιλογή 3.

Αν είμαστε πραγματικά παρανοϊκοί για την ασφάλεια των δεδομένων μας, ίσως χρειάζεται να αυξήσουμε τον αριθμό επαναλήψεν της διαδικασίας. Αυτό όμως μπορεί να είναι αρκετά χρονοβόρο.

Για περισσότερα δώστε

man shred

Προετοιμασία του Filesystem

Πριν εκτέλέσουμε το cryptsetup χρειάζεται να διαμορφώσουμε τον δίσκο και πιθανόν να φτιάξουμε και διαμερίσματα(partitions). Στο παράδειγμα που ακολουθεί θα φτιάξουμε ένα partition που θα εκτείνεται σε όλο τον δίσκο.

The file system will need to be partitioned prior to running the cryptsetup commands. In the example setup, one partition is created that spans the entire disk:

Ως super-users ή root δίνουμε :

fdisk /dev/sdx 

(όπου sdx η συσκευή μας, πχ sda, sdb... )

Στο τερματικό παίρνουμε :

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x9f9bbbd7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): 

Τώρα το fdisk, περιμένει συγκεκριμένες εντολές για την διαμόρφωση του δίσκου. Δίνουμε κατά σειρά τις εντολές/παραμέτρους :

  • n, new partition
  • p, primare partition ή e, extended partition
  • 1, ο αριθμός των partition
  • Enter, διατηρούμε την προεπιλογή
  • Enter, διατηρούμε την προεπιλογή
  • w, εγγραφή στον δίσκο

Και βλέπουμε κάτι τέτοιο :

Command (m for help): n
Command action
    e   extended
    p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1020, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1020, default 1020):
Using default value 1020

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


Κρυπτογράφηση του Filesystem

Φτιάχνουμε λοιπόν ένα LUKS partition, κρυπτογραφημένο διαμέρισμα. Εισάγουμε τον κωδικό για την κρυπτογράφηση, αυτός θα είναι ο κωδικός με τον οποίο θα χρησιμοποιούμε την συσκευή μας.e passphrase.

sudo cryptsetup luksFormat /dev/sdx1 
WARNING!
========
This will overwrite data on /dev/sdx1 irrevocably.

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


Τώρα χρησιμοποιώντας την ακόλουθη εντολή, ανοίγουμε το LUKS partition και κάνουμε mapping(αντιστοίχιση). Θα πρέπει να εισάγουμε τον κωδικό μας πριν προχωρήσουμε.


sudo cryptsetup luksOpen /dev/sdx1 sdx1 
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.

Βλέπουμε το mapping των δίσκων μας με :

ls -l /dev/mapper/  
total 0
crw-rw---- 1 root root  10, 60 2010-03-25 20:04 control
brw-rw---- 1 root disk 252,  0 2010-03-25 23:36 sdx1


Διαμορφώνουμε την συσκευή σε ext3 format ή κάποιο άλλο της αρεσκείας μας

sudo mkfs.ext3 /dev/mapper/sdx1 

Εναλλακτικά μπορούμε να την διαμορφώσουμε ως ext4, ntfs κλπ.

Τέλος, αφαιρούμε το mapping, "κλείνοντας" το partition.

sudo cryptsetup luksClose sdx1 

Τώρα η συσκευή μας μπορεί να γίνει mount όπως κάθε άλλη, με την διαφορά ότι χρειάζεται κωδικός για την αποκρυπτογράφηση και τη χρήση της.

πηγή : [4]