Κρυπτογράφηση πλήρους δίσκου με cryptsetup/LUKS

Αυτός ο οδηγός δείχνει πώς να ρυθμίζετε τους τόμους με κρυπτογράφηση LUKS, για να γίνεται έλεγχος ταυτότητας κατά την εκκίνηση με Nitrokey Pro ή Nitrokey Storage.

Για να σας παρέχουμε κάποιο ιστορικό, το cryptsetup-initramfs έχει τώρα υποστήριξη για τη χρήση έξυπνων καρτών OpenPGP όπως το Nitrokey Pro και το Nitrokey Storage για να ξεκλειδώνει τόμους με κρυπτογράφηση LUKS. Μόλις ολοκληρώσετε την εγκατάσταση, θα πρέπει απλώς να τοποθετήσετε το Nitrokey κατά την εκκίνηση και να εισαγάγετε το PIN χρήστη, αντί να πληκτρολογήσετε την κανονική κωδική φράση κρυπτογράφησης δίσκου.

Αυτές οι οδηγίες έχουν δοκιμαστεί σε Ubuntu 20.04 και Debian 10.

Προειδοποίηση

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

Απαιτήσεις

  • Ένας υπολογιστής Ubuntu ή Debian με τουλάχιστον έναν τόμο κρυπτογραφημένο με LUKS.

Ανατρέξτε στην παρακάτω ενότητα για να καθορίσετε ποια μέθοδος είναι συμβατή με τον παρόντα οδηγό.

Γνωστά προβλήματα

Μέχρι στιγμής, το σενάριο λειτουργεί μόνο με τόμους με χειροκίνητη κατάτμηση, οι οποίοι αποτελούνται από μια μη κρυπτογραφημένη κατάτμηση /boot και μια κρυπτογραφημένη ριζική κατάτμηση /.

Μην επιλέγετε την αυτόματη κρυπτογράφηση πλήρους δίσκου που παρέχεται από το λειτουργικό σύστημα που χρησιμοποιείτε για αυτόν τον οδηγό. Θα αντιμετωπίσετε επαναλαμβανόμενα σφάλματα όταν η κατάτμηση γίνεται αυτόματα, χρησιμοποιώντας τη διεπαφή εγκατάστασης στο Ubuntu και το Debian.

Οδηγίες

  1. Εγκατάσταση εξαρτήσεων

    $ sudo apt install scdaemon opensc gnupg2
    
  2. Δημιουργία καταλόγου smartcard-luks

    $ mkdir smartcard-luks && cd smartcard-luks
    
  3. Κατεβάστε το smartcard-luks-script

    $ wget https://raw.githubusercontent.com/daringer/smartcard-key-luks/main/smartcard-key-luks
    $ sudo chmod +x smartcard-key-luks
    
  4. Εξαγωγή του δημόσιου κλειδιού

    Για να εξαγάγετε το δημόσιο κλειδί σας από το keyring του GnuPG:

    $ gpg2 --armor --export KeyID > pubkey.asc
    

    Αν έχετε ήδη ανεβάσει ένα δημόσιο κλειδί σε έναν διακομιστή κλειδιών (ή το έχετε αποθηκεύσει κάπου αλλού), θα πρέπει να το ανακτήσετε με τον τρόπο που σας βολεύει περισσότερο και να προχωρήσετε στο βήμα 5.

  5. Καθορίστε και επαληθεύστε το σωστό όνομα συσκευής LUKS για τη root-κατάτμησή σας:

    $ cat /etc/crypttab
    # if there is only one entry, you want the 1st column of this entry
    

    Συμβουλή

    Συνήθως αυτό θα πρέπει να είναι κάτι σαν nvme0n1p3_crypt (για NitroPC) ή sda3_crypt (για NitroPads). Μπορείτε και πρέπει να διασταυρώσετε ότι το UUID που αναφέρεται μέσα στο /etc/crypttab είναι το καθορισμένο διαμέρισμα, ελέγχοντας τον συμβολικό σύνδεσμο μέσα στο /dev/disks/by-uuid/.

  6. Εκτελέστε το σενάριο με το όνομα της συσκευής luks (π.χ. nvme0n1p3_crypt) και το pubkey.asc ως ορίσματα.

    $ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey.asc
    

Μόλις εκτελέσετε το σενάριο με το δημόσιο κλειδί OpenPGP ως όρισμα, αυτό δημιουργεί αυτόματα ένα νέο μυστικό LUKS, το κρυπτογραφεί με αυτό το δημόσιο κλειδί και ρυθμίζει το crypttab, το LUKS, το initramfs και το GRUB.

Πρώτα θα σας ζητηθεί να δηλώσετε το User PIN

img1

Μόλις ξεκλειδώσετε το κλειδί Nitrokey, θα σας ζητηθεί να δώσετε το OLD passphrase. Πρόκειται για τη συνθηματική φράση που εισαγάγατε για την κρυπτογράφηση του τόμου σας κατά την εγκατάσταση.

img2

Σημείωση

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

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

img3

Έγινε!

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

Χρήση

Μετά την επανεκκίνηση, θα σας ζητηθεί ο κωδικός PIN χρήστη.

img5

Εισάγετε τον κωδικό PIN χρήστη για να ξεκλειδώσετε τη μονάδα

img6

Περαιτέρω υποδείξεις

Αλλαγή φράσης πρόσβασης

Μόλις γίνει αυτή η ρύθμιση, δεν θα πρέπει να χρησιμοποιείτε πλέον το βοηθητικό πρόγραμμα (gnome) disks για να αλλάξετε την (εφεδρική) συνθηματική φράση. Ο σωστός τρόπος για να το κάνετε αυτό είναι να καλέσετε απευθείας το cryptsetup όπως παρακάτω:

$ sudo cryptsetup luksChangeKey /dev/nvme0n1p3

Με nvme0n1p3 να είναι η κατάτμηση για την οποία δημιουργήσατε τα κλειδιά.

Χρήση πολλαπλών πλήκτρων

Είναι εύκολο να χρησιμοποιήσετε πολλαπλά κλειδιά ασφαλείας (υλικού), έτσι ώστε καθένα από αυτά να μπορεί να ξεκλειδώσει τη μονάδα δίσκου LUKS ανεξάρτητα. Απλά εξάγετε πολλαπλά δημόσια κλειδιά και επίσης περάστε πολλαπλά κλειδιά στο σενάριο εγκατάστασης ως εξής:

$ sudo ./smartcard-key-luks nvme0n1p3_crypt pubkey-1.asc pubkey-2.asc

Ορισμός ονόματος κατόχου κάρτας

Κατά την εισαγωγή του PIN κατά την εκκίνηση για την αποκρυπτογράφηση του ριζικού διαμερίσματος LUKS παρουσιάζεται στον χρήστη ένας κάτοχος κάρτας, για να το ορίσετε αυτό χρησιμοποιήστε $ gpg --edit-card και μέσα στην προτροπή πληκτρολογήστε admin και name για να ορίσετε τον κάτοχο κάρτας για την κάρτα OpenPGP (Nitrokey Storage 2 ή Nitrokey Pro 2).

Αντικατάσταση/Διαγραφή κλειδιών

Δεν είναι δυνατή η άμεση προσθήκη/αφαίρεση κλειδιών. Επομένως, πρέπει να διαγράψετε/απομακρύνετε την παλιά ρύθμιση και να εκτελέσετε εκ νέου τη ρύθμιση με το(τα) καθορισμένο(-α) κλειδί(-α):

Αφαιρέστε το αρχείο κλειδιών (διαδρομή, αν χρησιμοποιήσατε το παραπάνω σενάριο) από τη συσκευή luks-device (nvme0n1p3):

$ sudo cryptsetup luksRemoveKey /dev/nvme0n1p3 /etc/cryptsetup-initramfs/cryptkey.gpg

Αφαίρεση του ίδιου του αρχείου κλειδιού:

$ sudo rm /etc/cryptsetup-initramfs/cryptkey.gpg

Επαναλάβετε την παραπάνω ρύθμιση.

Ξεκλείδωμα του LUKS2 με πιστοποιητικό X509

Το SystemD υποστηρίζει το ξεκλείδωμα μιας κατάτμησης LUKS2 χρησιμοποιώντας ένα πιστοποιητικό X509, βρείτε μια εξαιρετική καταχώρηση στο ιστολόγιο του Vladimir Timofeenko στο Προσωπικό ιστολόγιο του Vladimir Timofeenko