
Τα τελευταία χρόνια, οι μονάδες TPM 2.0 έχουν μετατραπεί από ένα μυστήριο υλικού σε ένα τυπικό στοιχείο σε οποιοδήποτε σύγχρονο σύστημα ασφαλούς εκκίνησης με δυνατότητα UEFI. Αυτό το άρθρο εξηγεί τι είναι τα /dev/tpm0 και /dev/tpmrm0 και πώς να χρησιμοποιήσετε τις εντολές tpm2_pcrread και tpm2_pcrextend (καθώς και την πραγματική τους εντολή στα εργαλεία tpm2) και πώς εντάσσονται στις πολιτικές μετρούμενης εκκίνησης, κρυπτογράφησης δίσκου και υπογεγραμμένης PCR στο Linux.
Υπάρχει χρήσιμη τεκμηρίωση, αλλά είναι διάσπαρτη σε σελίδες εγχειριδίου του systemd, καταχωρήσεις wiki και πολύ πυκνές αναρτήσεις. Εδώ συγκεντρώνουμε όλες τις βασικές πληροφορίες (PCR, πρακτικά παραδείγματα, κινδύνους και άμυνες) έτσι ώστε οι τεχνικοί, ακόμη και αν δεν είναι ειδικοί στο TPM, να μπορούν να εργαστούν με αυτά τα εργαλεία χωρίς να χαθούν σε ασαφείς λεπτομέρειες.
Τι είναι το TPM 2.0 και γιατί μπορεί να σας ενδιαφέρει
Μια Μονάδα Αξιόπιστης Πλατφόρμας (TPM) είναι ένα τσιπ ασφαλείας που βρίσκεται στη μητρική πλακέτα σας (ή μέσα στην CPU ως fTPM/Intel PTT) και λειτουργεί ως ασφαλής χώρος αποθήκευσης, γεννήτρια τυχαίων αριθμών και ρίζα εμπιστοσύνης συστήματος. Είναι παθητική: αν δεν τη χρησιμοποιήσετε, δεν κάνει τίποτα . Ωστόσο, όταν ενσωματώνεται στη διαδικασία εκκίνησης και στην κρυπτογράφηση δίσκου, παρέχει επαλήθευση ακεραιότητας και κλειδιά που προστατεύονται από υλικό.
Στην πράξη, ένα TPM 2.0 σάς επιτρέπει δύο κύριους τρόπους χρήσης στην κρυπτογράφηση δίσκου: α) δημιουργία/αποθήκευση ενός ισχυρού κλειδιού και προστασία της χρήσης του με ένα PIN με κλείδωμα κατά της ωμής βίας· β) ενεργοποίηση της λεγόμενης μετρούμενης εκκίνησης, όπου κάθε στοιχείο εκκίνησης μετριέται σε καταχωρητές PCR , έτσι ώστε το κλειδί να "αποκαψουλώνεται" μόνο εάν το σύστημα δεν έχει τροποποιηθεί (και προαιρετικά με ένα PIN πριν από την εκκίνηση).
/dev/tpm0 και /dev/tpmrm0: διαφορές και πότε να χρησιμοποιείται το καθένα
Στο Linux, θα δείτε δύο ονόματα συσκευών όταν είναι διαθέσιμο το TPM 2.0. Το /dev/tpm0 είναι η "ακατέργαστη" διεπαφή TPM , ενώ το /dev/tpmrm0 παρέχει πρόσβαση μέσω του Resource Manager (ο οποίος χειρίζεται πολλαπλούς υπολογιστές-πελάτες, συνεδρίες και πόρους) και συνιστάται από τα tpm2-tools στα περισσότερα σενάρια.
Αν δεν είστε σίγουροι αν υπάρχει ένα TPM, μπορείτε να το ελέγξετε ζωντανά. Αν το `/sys/class/tpm/` είναι κενό ή η εντολή wiki δεν επιστρέψει τίποτα , δεν υπάρχει ορατό TPM: ενδέχεται να μην υπάρχει φυσικά ή ενδέχεται να είναι απενεργοποιημένο στο υλικολογισμικό.
# ¿Hay TPM 2.0?
ls /sys/class/tpm/
cat /sys/class/tpm/tpm*/tpm_version_major
# Dispositivos
ls -l /dev/tpm*
Όταν υπάρχουν και οι δύο κόμβοι συσκευών, τα εργαλεία tpm2 συνήθως ανιχνεύουν το /dev/tpmrm0 και το χρησιμοποιούν αυτόματα. Εάν χρειαστεί να επιβάλετε μια συσκευή, τα περισσότερα εργαλεία δέχονται το `--tcti` ή χρησιμοποιούν μεταβλητές περιβάλλοντος TCTI, αλλά αυτό συνήθως δεν είναι απαραίτητο για συνήθεις εργασίες.
TPM PCRs: Πώς λειτουργούν και τι μετρούν
Οι καταχωρητές διαμόρφωσης πλατφόρμας είναι καταχωρητές που αποθηκεύουν κατακερματισμούς (συνήθως SHA-256) της κατάστασης των κρίσιμων στοιχείων σε κάθε στάδιο εκκίνησης. Αρχικοποιούνται στο μηδέν κατά την εκκίνηση και μπορούν μόνο να επεκταθούν : ποτέ δεν ξαναγράφονται ή διαγράφονται (εκτός από περιπτώσεις εντοπισμού σφαλμάτων όπως το PCR 16).
Η βασική λειτουργία είναι η επέκταση: new_value = SHA256(current_value || SHA256(data)) . Αυτό συνδέει τις μετρήσεις χωρίς να επιτρέπει ευκαιριακές επαναφορές. Αυτό το μοτίβο χρησιμοποιείται για τη μέτρηση του υλικολογισμικού, της διαμόρφωσης, της Ασφαλούς εκκίνησης, του πυρήνα, του initrd και των παραμέτρων του πυρήνα, μεταξύ άλλων.
Σε σύγχρονο εξοπλισμό θα δείτε 24 PCR (0–23). Τα πιο σχετικά στην εκκίνηση UEFI με systemd είναι:
– PCR 0: κωδικός υλικολογισμικού.
– PCR 1: διαμόρφωση υλικολογισμικού (ρυθμίσεις UEFI).
– PCR 7: Κατάσταση ασφαλούς εκκίνησης και πιστοποιητικά που εμπιστεύεται.
– PCR 9: initrd(s) που μετρήθηκαν από τον πυρήνα.
– PCR 11: UKI (Ενοποιημένη Εικόνα Πυρήνα) και σημάνσεις φάσης μέσω systemd-stub/systemd-pcrphase.
– PCR 12: γραμμή εντολών πυρήνα.
Ανάγνωση και επέκταση PCR με εργαλεία tpm2: tpm2_pcrread και tpm2_pcr_extend
Στα εργαλεία tpm2, η ανάγνωση γίνεται με την εντολή tpm2_pcrread και η επέκταση με την εντολή tpm2_pcrextend . Μερικές φορές θα δείτε τη λέξη "tpm2_pcr_extend" να χρησιμοποιείται για να αναφερθεί στην εννοιολογική λειτουργία επέκτασης, αλλά η πραγματική εντολή στη σουίτα είναι η εντολή tpm2_pcrextend.
Για να ελέγξετε την τρέχουσα κατάσταση των PCR SHA-256 , είναι τόσο απλό:
# Leer PCRs en SHA-256 (ejemplos de índices habituales)
sudo tpm2_pcrread sha256:0,1,7,9,11,12
# O todos los PCRs SHA-256 disponibles
tpm2_pcrread sha256:all
Για να επεκτείνετε μια PCR με το hash αυθαίρετων δεδομένων (για παράδειγμα, το hash του /etc/passwd), υπολογίστε το hash SHA-256 και επεκτείνετέ το. Να θυμάστε: το TPM δεν λαμβάνει τεράστιες ποσότητες δεδομένων, μόνο το hash του , λόγω περιορισμών σχεδιασμού.
# 1) Guardar el hash de /etc/passwd
echo -n $(sha256sum /etc/passwd | cut -d' ' -f1) > passwd.sha
# 2) Extender PCR 7 (ejemplo) con el hash previo
sudo tpm2_pcrextend 7:sha256=$(cat passwd.sha)
# 3) Ver el nuevo valor del PCR 7
tpm2_pcrread sha256:7
Αν θέλετε να αναπαράγετε τα μαθηματικά της επέκτασης εκτός του TPM, συνενώνετε την τρέχουσα τιμή του PCR (δυαδικό) με το νέο hash και εφαρμόζετε ξανά το SHA-256 για να ελέγξετε το αποτέλεσμα.
Μπορεί να γίνει επαναφορά μιας PCR;
Υπό κανονικές συνθήκες, όχι. Η φιλοσοφία είναι ότι ένα PCR αναπτύσσεται μόνο με επεκτάσεις . Υπάρχει μία εξαίρεση: το PCR 16 συνήθως προορίζεται για "εντοπισμό σφαλμάτων" και μπορεί να επαναφερθεί σε ορισμένες ροές, αλλά δεν είναι χρήσιμο ως ριζική ασφάλεια για την πολιτική σας.
Μετρημένη εκκίνηση, LUKS και systemd-cryptenroll: Συνδυάζοντας τα κομμάτια
Όταν ενσωματώνετε το TPM στην κρυπτογράφηση του δίσκου σας, μπορείτε να "συνδέσετε" το κλειδί ξεκλειδώματος με ένα σύνολο PCR. Εάν, κατά την τρέχουσα εκκίνηση, αυτά τα PCR έχουν τις ίδιες τιμές όπως όταν καταχωρίσατε το κλειδί , το TPM αποσφραγίζεται και ο τόμος LUKS ανοίγει αυτόματα (με ή χωρίς PIN πριν από την εκκίνηση, ανάλογα με τη διαμόρφωσή σας).
Αυτό επιτυγχάνεται εύκολα χρησιμοποιώντας τα systemd-cryptenroll και systemd-cryptsetup. Η ιδέα είναι να δημιουργήσετε τον τόμο σας, να καταχωρήσετε το κλειδί TPM και να προσθέσετε ένα κλειδί ανάκτησης, ώστε να μην κλειδωθείτε εκτός σύνδεσης εάν αλλάξουν οι μετρήσεις (για παράδειγμα, μετά από μια ενημέρωση υλικολογισμικού ή πυρήνα).
# Ejemplo: crear LUKS, matricular TPM y añadir recuperación (pseudoflujo)
# 1) Crear el volumen con contraseña temporal
sudo cryptsetup luksFormat /dev/nvme0n1p2
# 2) Matricular TPM en LUKS usando PCRs concretos y PIN
sudo systemd-cryptenroll \
--tpm2-device=auto \
--tpm2-with-pin=yes \
--tpm2-pcrs=1+2+3+4 \
--wipe-slot=empty \
/dev/nvme0n1p2
# 3) Añadir clave de recuperación aleatoria
sudo systemd-cryptenroll --recovery-key /dev/nvme0n1p2
# 4) Abrir con TPM o con recovery cuando proceda
systemd-cryptsetup attach root /dev/nvme0n1p2 - tpm2-device=auto
Εάν επιβάλετε μια ασυμφωνία (για παράδειγμα, επεκτείνοντας σκόπιμα το PCR 4 ), το TPM δεν θα απελευθερώνει πλέον το κλειδί και θα πρέπει να χρησιμοποιήσετε το κλειδί ανάκτησης. Στη συνέχεια, μπορείτε να εγγράψετε ξανά το TPM με τις νέες τιμές χρησιμοποιώντας την εντολή `--wipe-slot=tpm2` και μια άλλη εκτέλεση του `systemd-cryptenroll`.
Ποιες PCR να επιλέξετε και γιατί
Όσο πιο σχετικές PCR συνδέετε, τόσο μεγαλύτερη επιφάνεια μειώνετε, αλλά τόσο πιο συχνά θα πρέπει να κάνετε εκ νέου εγγραφή μετά από νόμιμες αλλαγές. Μερικά πρακτικά κριτήρια:
– PCR 7 (Ασφαλής εκκίνηση): Θα πρέπει να είναι πολύ σταθερό εάν το σύνολο κλειδιών σας δεν αλλάξει.
– PCR 0/1 (υλικολογισμικό και διαμόρφωση): Αυτά σπάνια αλλάζουν. Απαιτείται εκ νέου εγγραφή μετά την ενημέρωση του υλικολογισμικού ή την αλλαγή του BIOS/UEFI.
– PCR 9/11/12 (kernel, initrd, UKI και cmdline): Αυτά αλλάζουν συχνά εάν δεν χρησιμοποιείτε UKI ή σταθερή υπογραφή/πολιτική.
Σε ορισμένα περιβάλλοντα, μόνο το PCR 7 έχει συνδεθεί, βασιζόμενο στην Ασφαλή Εκκίνηση που επαληθεύει τον πυρήνα και το initrd εάν εκκινούνται ως υπογεγραμμένα UKI και χρησιμοποιώντας το systemd-boot, το οποίο αποτρέπει την επεξεργασία παραμέτρων πυρήνα όταν η Ασφαλής Εκκίνηση είναι ενεργή . Αυτό λειτουργεί, αλλά εάν η Ασφαλής Εκκίνηση βασίζεται σε κλειδιά τρίτων (όπως το σύστημα τρίτων της Microsoft), είναι ευκολότερο να οργανώσετε μια εναλλακτική εκκίνηση που διατηρεί το PCR 7 και, επομένως, δεν είναι η πιο περιοριστική επιλογή.
Υπογραφή πολιτικών UKI και PCR: σταθερότητα χωρίς απώλεια ασφάλειας
Μια πρακτική λύση για να αποφύγετε την εκ νέου εγγραφή κάθε φορά που ενημερώνετε τον πυρήνα είναι να χρησιμοποιήσετε ένα Unified Kernel Image (UKI) και μια υπογεγραμμένη πολιτική PCR . Δημιουργείτε ένα ζεύγος κλειδιών, συνδέετε το δημόσιο κλειδί με το TPM κατά την εγγραφή και υπογράφετε το UKI σας μετά από κάθε ενημέρωση. Το TPM εμπιστεύεται αυτήν την υπογραφή και επιτρέπει το ξεκλείδωμα ακόμα και αν αλλάξει το συγκεκριμένο hash πυρήνα.
Το εργαλείο systemd-measure και ο βοηθός systemd-ukify διευκολύνουν αυτό: το ukify συσκευάζει τον πυρήνα, το initrd και το cmdline στο UKI (συνήθως μετριέται στο PCR 11) και το systemd-measure υπογράφει την πολιτική. Με το mkinitcpio, το ukify μπορεί να ενσωματωθεί έτσι ώστε η υπογραφή μετά την εγκατάσταση να εκτελείται αυτόματα.
# Esquema típico (pseudocomandos)
# 1) Crear claves para política PCR firmada
openssl genpkey -algorithm RSA -out /etc/kernel/pcr-initrd.key.pem -pkeyopt rsa_keygen_bits:3072
openssl req -new -x509 -key /etc/kernel/pcr-initrd.key.pem -out /etc/kernel/pcr-initrd.pub.pem -subj "/CN=UKI PCR Policy"
# 2) Configurar ukify/mkinitcpio para generar UKI y firmar política
# (consultar man ukify y systemd-measure para parámetros)
# 3) Matricular en LUKS atando PCRs y clave pública de la política
sudo systemd-cryptenroll \
--tpm2-device=auto \
--wipe-slot=tpm2 \
--tpm2-with-pin=yes \
--tpm2-pcrs=0+1+2+7 \
--tpm2-public-key=/etc/kernel/pcr-initrd.pub.pem \
--tpm2-public-key-pcrs=11 \
/dev/nvme0n1p2
Με αυτόν τον τρόπο, η πολιτική σας παραμένει σταθερή έναντι αλλαγών στον πυρήνα/initrd, εφόσον συνεχίζετε να υπογράφετε το UKI με το κλειδί σας . Εάν ανανεώσετε κλειδιά ή αλλάξετε το σύνολο των PCR, θα χρειαστεί να το καταχωρήσετε ξανά.
Παραδείγματα αλυσίδων μέτρησης με systemd
Κατά την εκκίνηση, τα systemd-stub και systemd-pcrphase επεκτείνουν τα PCR σε συγκεκριμένες χρονικές στιγμές. Για παράδειγμα, το "enter-initrd" καταχωρείται στο PCR 11 , επιτρέποντας σε ένα κλειδί ξεκλειδώματος να είναι έγκυρο μόνο εντός του initrd (μειώνοντας τα διανύσματα όπου ένας εισβολέας μπορεί να προσπαθήσει να επαναχρησιμοποιήσει το κλειδί αργότερα).
Σε συστήματα με UKI, τα περιεχόμενα του UKI μετριούνται στο PCR 11. σε συστήματα χωρίς UKI, ο πυρήνας μετρά τα initrd στο PCR 9 και ο bootloader μπορεί να μετρήσει την cmdline στο PCR 12. Βεβαιωθείτε ότι έχετε καλύψει τα initrd και cmdline στην πολιτική σας, διαφορετικά κάποιος θα μπορούσε να κάνει backdoor στο initrd ή να εκκινήσει με μια κακόβουλη cmdline όπως init=/bin/bash.
Πραγματικοί κίνδυνοι: κρύα εκκίνηση, εισπνοή TPM και άλλα
Τι θα μπορούσε να πάει στραβά; Αρκετά πράγματα που πρέπει να γνωρίζετε για τη μοντελοποίηση απειλών. Οι επιθέσεις κρυφής εκκίνησης παραμένουν βιώσιμες: εάν το ξεκλείδωμα είναι πλήρως αυτόματο, ένας εισβολέας μπορεί να κάνει απεριόριστες προσπάθειες. Ο σαφής μετριασμός είναι η απαίτηση ενός PIN πριν από την εκκίνηση (PBA), μειώνοντας τις προσπάθειες σε μία ανά κύκλο ενεργοποίησης.
Μια άλλη κατηγορία περιλαμβάνει επιθέσεις ανίχνευσης (sniffing) στον δίαυλο TPM . Η CPU ζητά το κλειδί, το TPM το στέλνει. Εάν η σύνδεση παραβιαστεί, το κλειδί μπορεί να διαρρεύσει. Για να αποτραπεί αυτό, το systemd εφαρμόζει κρυπτογράφηση παραμέτρων έτσι ώστε η ανταλλαγή να είναι κρυπτογραφημένη. Εναλλακτικά, η χρήση fTPM/Intel PTT ή κρυπτογραφημένης μνήμης μειώνει την έκθεση. Υπάρχουν σχετικά προσιτές δημόσιες επιδείξεις (ακόμα και με χρήση μικροελεγκτών) που καταδεικνύουν τη δυνατότητα εφαρμογής αυτού σε φορητούς υπολογιστές από μεγάλες μάρκες.
Υπήρξαν επίσης ακαδημαϊκά και πρακτικά τρωτά σημεία: TPM-Fail, faulTPM (με αξιοσημείωτο αντίκτυπο στην AMD) και η περίπτωση bitpixie (CVE-2023-21563) . Αυτό δεν σημαίνει ότι το TPM είναι άχρηστο, αλλά μάλλον ότι θα πρέπει να διατηρείτε το υλικολογισμικό σας ενημερωμένο, να κατανοείτε το μοντέλο απειλής σας και να μην βασίζεστε τυφλά σε αυτό.
Κατάσταση BitLocker έναντι αυτών των απειλών
Στον κόσμο των Windows, το BitLocker είναι η πιο ευρέως χρησιμοποιούμενη μέθοδος κρυπτογράφησης δίσκου. Πρόσφατα επισημάνθηκε ότι η προεπιλεγμένη διαμόρφωσή του (αυτόματο ξεκλείδωμα μόνο με TPM) αφήνει ανοιχτή την πόρτα τόσο για κρύα εκκίνηση όσο και για ανίχνευση καναλιών TPM, καθώς δεν εφαρμόζει κρυπτογράφηση παραμέτρων τύπου systemd. Αυτό καθιστά ορισμένα εταιρικά συστήματα ευάλωτα σε επιθέσεις μέσα σε λίγα λεπτά.
Η σύσταση εκεί είναι να ενεργοποιήσετε τον έλεγχο ταυτότητας πριν από την εκκίνηση μέσω πολιτικών/μητρώου ή CLI, κάτι που δεν είναι επαρκώς εκτεθειμένο στον μέσο χρήστη. Επίσης, θυμηθείτε να ελέγξετε πού είναι αποθηκευμένο το κλειδί ανάκτησης: συχνά βρίσκεται στον λογαριασμό Microsoft του χρήστη, κάτι που αποτελεί έναν ακόμη πιθανό κίνδυνο εάν δεν διαχειριστεί σωστά.
Επιθετικό/Αμυντικό Κόλπο: Αντικαταστήστε τη ρίζα LUKS για να επιβάλετε τον κωδικό πρόσβασής σας
Ένα ενδιαφέρον διάνυσμα επίθεσης υπάρχει όταν δεν υπάρχει έλεγχος ταυτότητας πριν από την εκκίνηση. Ένας εισβολέας μπορεί να κλωνοποιήσει το πραγματικό διαμέρισμα LUKS, να το αντικαταστήσει με ένα άλλο διαμέρισμα LUKS χρησιμοποιώντας το ίδιο UUID και έναν κωδικό πρόσβασης που γνωρίζει και να εκκινήσει το μηχάνημα. Δεδομένου ότι οι μετρήσεις PCR ταιριάζουν, το TPM απελευθερώνει το κλειδί, αλλά δεν ταιριάζει με το ψεύτικο διαμέρισμα LUKS, επομένως η initrd ζητά το κλειδί "ανάκτησης". Εισάγοντας τον κωδικό πρόσβασης που γνωρίζει ο εισβολέας, το σύστημά του εκτελείται ως root στο initrd και στη συνέχεια μπορεί να ενορχηστρώσει την κλοπή του αρχικού κλειδιού (για παράδειγμα, τοποθετώντας το πραγματικό αντίγραφο μέσω του δικτύου και χρησιμοποιώντας το systemd-cryptsetup).
Σαφείς μετριασμοί: ενεργοποιήστε τον έλεγχο ταυτότητας πριν από την εκκίνηση , αξιοποιήστε το systemd-pcrphase για να συνδέσετε το ξεκλείδωμα αυστηρά με τη φάση initrd και εξετάστε το ενδεχόμενο μέτρησης/σύνδεσης και του όγκου-στόχου LUKS (απαιτείται προσεκτικός σχεδιασμός για την αποφυγή φαύλων κύκλων).
Επιλογή διαμέρισης και δεύτερου κλειδιού: βέλτιστη πρακτική
Η διατήρηση ενός κλειδιού ανάκτησης είναι υποχρεωτική: εάν η TPM ή η μητρική πλακέτα παρουσιάσει βλάβη, το κλειδί που είναι συνδεδεμένο στην TPM είναι άχρηστο. Το LUKS επιτρέπει πολλαπλές υποδοχές (η TPM χρησιμοποιεί τη μία, η ανάκτηση άλλη μία). Επιπλέον, ο διαχωρισμός των διαμερισμάτων / και /home έχει πλεονεκτήματα: μπορείτε να επιβάλετε αυστηρά μέτρα ασφαλείας TPM στο / και να χρησιμοποιήσετε ένα ισχυρό κλειδί ή μια συσκευή FIDO2/YubiKey για το /home, μειώνοντας την εξάρτηση από έναν μόνο μηχανισμό.
Τι συμβαίνει όταν ενημερώνω το firmware ή τον πυρήνα;
Εάν αλλάξετε το υλικολογισμικό ή τροποποιήσετε τις ρυθμίσεις UEFI, τα PCR όπως το 0/1 θα αλλάξουν και το TPM δεν θα αποδεσμεύσει το κλειδί μέχρι να το καταχωρήσετε ξανά. Για τον πυρήνα και το initrd , οι αλλαγές είναι συχνές : εάν δεν χρησιμοποιείτε μια υπογεγραμμένη πολιτική UKI, κάθε ενημέρωση μπορεί να σας αναγκάσει να χρησιμοποιήσετε τη λειτουργία ανάκτησης και να το καταχωρήσετε ξανά αργότερα. Με ένα υπογεγραμμένο UKI, απλώς υπογράφετε και είστε έτοιμοι.
Σημειώσεις και παρατηρήσεις της κοινότητας
Μερικοί δημοφιλείς οδηγοί για ορισμένες διανομές συνιστούν τη χρήση μόνο του PCR 7 κατά τη χρήση του UKI και του systemd-boot , επικαλούμενοι την ασφάλεια του Secure Boot και την αδυναμία επεξεργασίας των cmdlines. Λειτουργεί, αλλά υπάρχουν κίνδυνοι αν βασίζεστε σε πηγές τρίτων. Έχει επίσης καταγραφεί στο παρελθόν ένα σφάλμα όπου το επανειλημμένο πάτημα του Enter προκαλούσε την εμφάνιση ενός κελύφους ανάκτησης μετά το ξεκλείδωμα. Συνιστάται να διατηρείτε τις εκδόσεις ενημερωμένες για να αποφύγετε εκπλήξεις.
Στις 2025/06, κοινοποιήθηκαν ορισμένα ενδιαφέροντα σχόλια: το faultTPM συνεχίζει να επηρεάζει την AMD σε κάποιο βαθμό· τα wiki έχουν προσθέσει συγκεκριμένες ενότητες σχετικά με τις υπογεγραμμένες πολιτικές PCR· και δοκιμάστηκε το πρόγραμμα εγκατάστασης μιας διανομής που προσφέρει FDE με TPM ως πειραματική λειτουργία, με ορισμένα πρακτικά προβλήματα (αίτημα ανάκτησης κατά την πρώτη εκκίνηση, εξάρτηση από snaps, διπλός κρυπτογραφημένος δίσκος), ένα θέμα που αξίζει έναν πιο εμπεριστατωμένο έλεγχο.
Μια μελέτη παρακολούθησης που επικεντρώθηκε στην κρυπτογράφηση δίσκου στα Windows δημοσιεύτηκε τον Ιούλιο του 2025. Το συνολικό συμπέρασμα ενισχύει την ανάγκη για κρυπτογράφηση καναλιών PBA και TPM , καθώς και τον περιορισμό της εξάρτησης από κλειδιά τρίτων στην Ασφαλή Εκκίνηση.
Συμβουλές λειτουργίας με tpm2-tools και systemd
Για καθημερινή χρήση: εγκαταστήστε τα tpm2-tools και tpm2-tss. Χρησιμοποιήστε το /dev/tpmrm0 από προεπιλογή και το tpm2_pcrread/tpm2_pcrextend για να ελέγξετε και να πειραματιστείτε με τις PCR. Αποφύγετε την επέκταση των PCR παραγωγής με αυθαίρετα δεδομένα: κάντε το σε εργαστήρια ή χρησιμοποιήστε την PCR16 για δοκιμές.
Κατά την εγγραφή στο systemd-cryptenroll: Το `--tpm2-device=auto` ανιχνεύει το TPM. Το `--tpm2-with-pin` προσθέτει ένα PBA. Το `--tpm2-pcrs=… ` επιλέγει τα PCR σας. Το `--tpm2-public-key=…` και το `--tpm2-public-key-pcrs=… ` ενεργοποιούν μια υπογεγραμμένη πολιτική PCR (για παράδειγμα, συνδεδεμένη με το PCR 11 για UKI). Μην ξεχνάτε το `--wipe-slot` όταν θέλετε να διαγράψετε μια προηγούμενη θέση.
Αν δεν έχετε TPM και το systemd σας κάνει να περιμένετε κατά την εκκίνηση
Περιστασιακά, μετά από μια ενημέρωση, μια υπηρεσία ενδέχεται να προσπαθήσει να χρησιμοποιήσει το TPM ακόμα κι αν το μηχάνημά σας δεν το έχει ορατό, προκαλώντας χρονικά όρια κατά την εκκίνηση. Αρχικά, ελέγξτε ότι δεν υπάρχουν καταχωρήσεις στο /dev/tpm* ή στο /sys/class/tpm.
# Verificación rápida
ls /dev/tpm*
ls /sys/class/tpm/
Εάν δεν υπάρχει TPM, ελέγξτε ότι το αρχείο /etc/crypttab δεν περιέχει επιλογές όπως tpm2-device=auto . Εάν υπάρχουν, καταργήστε τις και δημιουργήστε ξανά την initrd σας. Μπορείτε επίσης να απενεργοποιήσετε τη φάση μέτρησης σε συσκευές χωρίς TPM.
# 1) Eliminar referencias TPM en /etc/crypttab y regenerar initrd
sudo mkinitcpio -P # (o dracut/rebuildinitrd según distro)
# 2) Evitar carga de módulos TPM si el firmware publica algo extraño
echo -e "blacklist tpm\nblacklist tpm_tis\nblacklist tpm_crb" | sudo tee /etc/modprobe.d/no-tpm.conf
# 3) Opcional: evitar pcrphase si te da problemas
sudo systemctl mask systemd-pcrphase.service
Αυτό εξαλείφει την περιττή αναμονή εάν ο υπολογιστής σας δεν διαθέτει TPM. Εάν αργότερα ενεργοποιήσετε το TPM στο BIOS/UEFI , καταργήστε τη μαύρη λίστα και απομασκεύαστε τη μονάδα δίσκου για να ανακτήσετε μετρήσεις.
Καλές πρακτικές και αποφάσεις εμπιστοσύνης
Μερικοί άνθρωποι είναι επιφυλακτικοί με το TPM επειδή είναι ένα «μαύρο κουτί», όπως ακριβώς και οι αυτοκρυπτογραφούμενοι δίσκοι. Αυτή είναι μια εύλογη ανησυχία. Αξιολογήστε το μοντέλο απειλής σας και εξισορροπήστε τη χρηστικότητα, το απόρρητο και τη συντήρηση. Για πολλούς, το TPM + PBA + υπογεγραμμένο UKI αντιπροσωπεύει μια σημαντική αναβάθμιση ασφάλειας χωρίς υπερβολικές τριβές.
Σε υλικό που το επιτρέπει, προσθέστε κρυπτογραφημένη μνήμη και αποφύγετε να βασίζεστε σε κλειδιά τρίτων στην Ασφαλή εκκίνηση. Περιορίστε την αλυσίδα κλειδιών στα δικά σας κλειδιά όποτε είναι εφικτό. Διατηρήστε το υλικολογισμικό και τον πυρήνα ενημερωμένα για να ενσωματώσετε δημοσιευμένα μέτρα μετριασμού ευπαθειών.
Η εξοικείωση με τις λειτουργίες `/dev/tpm0`, `/dev/tpmrm0`, καθώς και τις λειτουργίες `tpm2_pcrread` και `tpm2_pcr_extend` ανοίγει την πόρτα για μετρημένη εκκίνηση και ισχυρή κρυπτογράφηση δίσκου στο Linux. Με το UKI και μια υπογεγραμμένη πολιτική PCR, επιτυγχάνετε λειτουργική σταθερότητα και η προσθήκη ενός PIN πριν από την εκκίνηση προστατεύει από τις πιο πρακτικές επιθέσεις. Το κλειδί είναι η επιλογή των σωστών PCR, η υπογραφή των ρυθμίσεων που αλλάζουν συχνά και η διατήρηση πάντα ενός ισχυρού κλειδιού ανάκτησης.