Χακαρίστηκε η κρυπτογράφηση σκληρών δίσκων των Linux;
(30/4/2023)
Ο Ivan, αναρχικός που βρίσκεται προφυλακισμένος στη Γαλλία εδώ και αρκετό χρονικό διάστημα, ενημέρωσε σε γράμμα του πως η γαλλική αστυνομία κατάφερε ν’ αποκτήσει πρόσβαση στο περιεχόμενο του laptop του (1). Το εν λόγω laptop είχε εγκατεστημένο κρυπτογραφημένο λειτουργικό σύστημα Ubuntu Linux. Απεναντίας, δεν κατάφεραν να αποκτήσουν πρόσβαση σε μια άλλη συσκευή με εγκατεστημένα Windows, η οποία όμως είχε κρυπτογραφηθεί με Bitlocker. Ο Ivan εξήγησε στο γράμμα του πως είχε χρησιμοποιήσει για το σύστημα (των Ubuntu) 20-ψήφιο κωδικό, αποτελούμενο από γράμματα, αριθμούς και ειδικούς χαρακτήρες.
Όχι, η κρυπτογράφηση δίσκων των Linux ούτε “έσπασε”, ούτε και είναι “μη-ασφαλής”. Τα επιτεύγματα της τεχνολογίας, όπως επίσης και οι αλγόριθμοι, έχουν εξελιχθεί, συνεπώς τα δεδομένα περί κρυπτογραφίας πρέπει να ελεγχθούν ξανά και, αν είναι αναγκαίο, να δεχθούν ενημερώσεις.
Λίστα περιεχομένων:
- Το σύστημα κρυπτογράφησης Linux Unified Key Setup (LUKS) εν συντομία
- Η τρωτότητα των Ubuntu 18.04, των Tails και λοιπών λειτουργικών συστημάτων
- Ασφαλείς κωδικοί
Έκτοτε, έχουν ανακύψει συζητήσεις στο διαδίκτυο και στους κύκλους μας σχετικά με το πώς συνέβη κάτι τέτοιο, αν ευθύνεται ένας μη-αναβαθμισμένος αλγόριθμος κρυπτογράφησης στην εγκατεστημένη έκδοση των Ubuntu του Ivan, και τι σημαίνει κάτι τέτοιο για την ασφάλεια άλλων συστημάτων της Linux. Έχουμε ακούσει επίσης ισχυρισμούς πως η κρυπτογράφηση του λειτουργικού συστήματος Tails -που αποτελεί ένα ακόμη σύστημα της Linux- δεν ήταν ασφαλής, λόγω μη-αναβαθμισμένων αλγόριθμων. Το ζήτημα της κρυπτογράφησης συσκευών δεν είναι εύκολα κατανοητό από πολλούς, οπότε θα θέλαμε να θέσουμε κάποιες βάσεις σ’ αυτή τη συζήτηση με την παρούσα δημοσίευση.
Όλα τα λειτουργικά συστήματα της Linux χρησιμοποιούν τη μέθοδο Linux Unified Key Setup -ή εν συντομία “LUKS”– για την κρυπτογράφηση σκληρών δίσκων. Η βάση της υπόθεσης πως για την περίπτωση του Ivan ευθύνεται ένας μη-αναβαθμισμένος αλγόριθμος, είναι το γεγονός ότι η έκδοση Ubuntu 18.04 (που κυκλοφόρησε τον Απρίλιο του 2018, όπως δηλώνει η συντομογραφία) χρησιμοποιεί ακόμα τις σχετικά απαρχαιωμένες προδιαγραφές “LUKS1” για την κρυπτογράφηση σκληρών δίσκων, ενώ οι νεότερες εκδόσεις των Linux χρησιμοποιούν προδιαγραφές “LUKS2” για τον σκοπό αυτό (2). Για να καταλάβουμε πώς σχετίζονται αυτά, είναι απαραίτητο να έχουμε μια εικόνα της κρυπτογραφικής μεθόδου “LUKS”, καθώς και να κατανοήσουμε τι ρόλο παίζει σε αυτό η λεγόμενη λειτουργία παραγωγής κλειδιού. Δυστυχώς, το ζήτημα αυτό είναι κάπως τεχνικής φύσεως, παρ’ όλα αυτά θα προσπαθήσουμε να το κάνουμε όσο πιο ξεκάθαρο μπορούμε.
Το σύστημα κρυπτογράφησης Linux Unified Key Setup (LUKS) εν συντομία
Ένας σκληρός δίσκος που κρυπτογραφείται με τη μέθοδο “LUKS”, είναι ένα πεδίο με δύο μέρη, με μια μη-κρυπτογραφημένη κεφαλίδα, και ένα κρυπτογραφημένο σώμα. Το σώμα εμπεριέχει τα πραγματικά κρυπτογραφημένα δεδομένα, ενώ η κεφαλίδα πρέπει να γίνεται αντιληπτή ως ένα εγχειρίδιο οδηγιών: Ποιος αλγόριθμος κρυπτογράφησης χρησιμοποιείται για το σώμα, τι μέγεθος πρέπει να έχει το σώμα, σε ποια σημεία του σκληρού δίσκου τοποθετείται το σώμα, ποια είναι η ταυτότητα της διχοτομημένης συσκευής, κλπ. – Μοιάζει κάπως έτσι:
LUKS header information
Version: 2
UUID: d077227a-eb02-4349-ab5b-fd9494ade3a6
Data segments:
0: crypt
offset: 16764544 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 512 [bytes]
...
Κάτι σημαντικό για εμάς: Η κεφαλίδα περιέχει επίσης τις πληροφορίες για το ποια λειτουργία παραγωγής κλειδιού πρόκειται να χρησιμοποιηθεί κατά τη διαδικασία κρυπτογράφησης ή αποκρυπτογράφησης. Η παραγωγή κλειδιού (Key Derivation Function) είναι μια κρυπτογραφική μετατροπή του κωδικού πρόσβασης στο κλειδί με το οποίο κρυπτογραφήθηκε το σώμα, και με το οποίο αυτό μπορεί να αποκρυπτογραφηθεί ξανά. Σε αντίθεση με ό,τι μπορεί να σκέφτεται κάποιος, δεν είναι ο ίδιος ο κωδικός πρόσβασης το κλειδί με το οποίο κρυπτογραφήθηκε το σώμα, αλλά από αυτόν μονάχα παράγεται το πραγματικό κλειδί. Θα εξηγήσουμε σε λίγο γιατί είναι απαραίτητο αυτό το ενδιάμεσο βήμα. Αρχικά, είναι σημαντικό να γνωρίζουμε απλώς πως υπάρχουν πολλοί διαφορετικοί αλγόριθμοι για την παραγωγή κλειδιού, και πως οι πληροφορίες που είναι αποθηκευμένες στην κεφαλίδα είναι απαραίτητες για την παραγωγή κλειδιού.
Ας δούμε ένα παράδειγμα, με την απεικόνιση του κωδικού “dPhdWnv1.3k4d4,szv!”:
Τώρα τίθεται το ερώτημα, γιατί λοιπόν χρειάζεται το ενδιάμεσο βήμα, αντί απλώς να κρυπτογραφείται/αποκρυπτογραφείται το σώμα του σκληρού δίσκου απευθείας με τον κωδικό πρόσβασης. Πρώτα απ’ όλα, πρέπει να εξετάσουμε το σενάριο επίθεσης απ’ το οποίο υποτίθεται ότι προστατεύει η κρυπτογράφηση: Κανείς δε θα προσπαθούσε να σπάσει τον πραγματικό αλγόριθμο – στην προκειμένη περίπτωση: AES-XTS-PLAIN64: Αυτό, από έρευνες, θεωρείται ασφαλές. Συνήθως, οι άνθρωποι προσπαθούν να μαντέψουν τον κωδικό πρόσβασης δοκιμάζοντας απλώς όλους τους πιθανούς συνδυασμούς χαρακτήρων. Αυτή η μέθοδος ονομάζεται “brute force”. Κάθε προσπάθεια κοστίζει σε υπολογιστική ισχύ, μνήμη και χρόνο, επομένως κάποιος συνήθως θα χρησιμοποιήσει έναν εξαιρετικά ισχυρό υπολογιστή ή μια συστάδα πολλών υπολογιστών. Υπάρχει επίσης αποκλειστικό λογισμικό που λειτουργεί με λίστες γνωστών κωδικών πρόσβασης, ή ακόμα και με προσωπικά δεδομένα για τον ιδιοκτήτη (γλώσσες, ενδιαφέροντα, κωδικούς πρόσβασης που χρησιμοποιεί για άλλες υπηρεσίες) για την ανάδειξη πιο πιθανών συνδυασμών.
Εδώ μπαίνει στο παιχνίδι η λειτουργία παραγωγής κλειδιού: Η ιδέα είναι να επεκταθεί η αποκρυπτογράφηση με τον σωστό κωδικό πρόσβασης, προσθέτοντας το ενδιάμεσο βήμα της παραγωγής κλειδιού, που λαμβάνει τόσο λίγα χιλιοστά του δευτερολέπτου ώστε δε γίνεται καν αντιληπτό στην καθημερινή χρήση ενός υπολογιστή, αλλά αυξάνει σημαντικά την προσπάθεια για μαζική εικασία κωδικών πρόσβασης. Η λειτουργία παραγωγής κλειδιού προστατεύει κυρίως τους μικρούς κωδικούς πρόσβασης και αυτούς που αποτελούνται από μια μικρότερη ομάδα πιθανών χαρακτήρων: Για έναν κωδικό πρόσβασης που αποτελείται από μόλις 6 ψηφία, για παράδειγμα, η πληθώρα όλων των πιθανών συνδυασμών υπολογίζεται πολύ πιο γρήγορα από ότι για έναν αλφαριθμητικό κωδικό πρόσβασης 20 χαρακτήρων.
Υπάρχουν υψηλές απαιτήσεις για τη λειτουργία παραγωγής κλειδιού: Απ’ τη μία πλευρά, θα πρέπει να είναι σε θέση να αντεπεξέρχονται απέναντι σε τεράστιες συστάδες υπολογιστών που έχουν ασύλληπτη υπολογιστική ισχύ στη διάθεσή τους, και συνάμα, η κρυπτογράφηση και η αποκρυπτογράφηση σε καθημερινούς φορητούς και σταθερούς υπολογιστές δε θα πρέπει να απαιτούν τόσο χρόνο ώστε να καθίστανται πλέον μη-πρακτικές. Η λύση σ’ αυτό το πρόβλημα είναι –για να το θέσουμε εν συντομία– η ανάπτυξη μαθηματικών αλγορίθμων σχεδιασμένων με τέτοιο τρόπο ώστε ακόμη κι όταν πολλαπλασιάζεται η υπολογιστική ισχύς, ο χρόνος που απαιτείται για την παραγωγή κλειδιού να παραμένει σχετικά ίδιος.
Η τρωτότητα των Ubuntu 18.04, των Tails και λοιπών λειτουργικών συστημάτων
Τώρα που εξηγήθηκε η έννοια της λειτουργίας παραγωγής κλειδιού, επιστρέφουμε στο laptop του Ivan: Σύμφωνα με το γράμμα του, σ’ αυτό ήταν εγκατεστημένη η έκδοση 18.04 των Ubuntu. Αυτή η έκδοση των Ubuntu εξακολουθεί να χρησιμοποιεί το ξεπερασμένο μοντέλο κρυπτογράφησης LUKS1, το οποίο με τη σειρά του χρησιμοποιεί μια ξεπερασμένη λειτουργία παραγωγής κλειδιού (PBKDF2). Είναι γνωστό πως αυτό είναι ελάχιστα χρήσιμο απέναντι σε εξειδικευμένα μηχανήματα, και επομένως πλέον δε θεωρείται ασφαλές. Εξ ου και η υπόθεση πως ήταν η παρωχημένη λειτουργία παραγωγής κλειδιού που επέτρεψε την πρόσβαση στο laptop του Ivan. Κι άλλες εκδόσεις επηρεάζονται απ’ αυτήν την ενδεχόμενη τρωτότητα, εάν η πρώτη τους εγκατάσταση ήταν πολύ καιρό πριν: Πράγματι, ο αλγόριθμος συνήθως δε βελτιώνεται σε μια υπάρχουσα εγκατάσταση όταν εκτελείται μια πλήρης αναβάθμιση λογισμικού (π.χ. από το Ubuntu 18.04 στο Ubuntu 22.04) (3). Έχει επίσης συζητηθεί ότι, ενώ η κοινότητα προγραμματιστών πίσω από το λειτουργικό σύστημα Tails έχει εδώ και αρκετά χρόνια στη λίστα μελλοντικών εργασιών της τη μετάβαση στην πιο ασφαλή κρυπτογράφηση LUKS2, παρ’ όλα αυτά δεν την έχει ακόμη εφαρμόσει. Αυτό φαίνεται και πάλι να οδήγησε άλλους να ισχυριστούν ότι η κρυπτογράφηση σε στικάκι Tails δεν είναι ασφαλής (4).
Τι πρέπει να συμπεράνουμε απ’ αυτό; Βασικά, είναι ανησυχητικό ότι πολλές παλιές εγκαταστάσεις Linux χρησιμοποιούν έναν απαρχαιωμένο αλγόριθμο για κρυπτογράφηση σκληρού δίσκου. Οι χρήστες με παλαιότερες εγκαταστάσεις πρέπει τώρα να αποφασίσουν εάν είναι αρκετά τεχνολογικά-προνοητικοί ώστε να αναβαθμίσουν οι ίδιοι την κρυπτογράφησή τους –υπάρχει ένας οδηγός για αυτό στο wiki μας–, να επανεγκαταστήσουν το λειτουργικό τους σύστημα, ή να αποδεχτούν τη χρήση ενός απαρχαιωμένου αλγόριθμου. Ωστόσο, το αν η συγκεκριμένη τρωτότητα έπαιξε κάποιον ρόλο στην περίπτωση του Ivan, αποτελεί απλώς υπόθεση και όχι γεγονός. Η πιθανότητα ότι τον παρακολουθούσαν ή ότι τον βιντεοσκοπούσαν κατά την εισαγωγή του κωδικού πρόσβασής του, ότι έχει ξαναχρησιμοποιήσει τον ίδιο κωδικό πρόσβασης σε διαφορετικά σημεία, ότι ο κωδικός πρόσβασης ήταν απλώς μη-ασφαλής, ακόμη και ότι τα ίχνη χρήσης στο πληκτρολόγιο θα μπορούσαν να αποτελούν ένδειξη για τον κωδικό πρόσβασης, όλα τα παραπάνω αποτελούν πιθανές εξηγήσεις για την πρόσβαση στα δεδομένα του. Λαμβάνοντας υπόψη τις ασαφείς πληροφορίες, δηλώσεις όπως “Η κρυπτογράφηση των Tails έχει σπάσει” φαίνονται κινδυνολογικές και αμφίβολες.
Είναι δύσκολο να εκτιμηθεί πόσο σοβαρός είναι στην πραγματικότητα ένας απαρχαιωμένος αλγόριθμος: Μια καλύτερη λειτουργία παραγωγής κλειδιού που κάνει πιο δύσκολη τη διαδικασία brute forcing, αναμφίβολα συμβάλλει κατά πολύ στα επίπεδα ασφαλείας της κρυπτογράφησης συσκευών. Αντίθετα, ωστόσο, αυτό δε σημαίνει πως όλες οι συσκευές που χρησιμοποιούν έναν απαρχαιωμένο αλγόριθμο παραγωγής κλειδιού είναι κατ’ ανάγκη θεμελιωδώς μη-ασφαλείς. Πρώτα και κύρια, η ασφάλεια της κρυπτογράφησης LUKS εξαρτάται από την ασφάλεια του κωδικού πρόσβασης, και, ενώ αυτή βελτιώνεται με έναν καλό κωδικό πρόσβασης, δεν επιδεινώνεται από έναν απαρχαιωμένο αλγόριθμο παραγωγής κλειδιού. Ένας καλός κωδικός πρόσβασης, δηλαδή ένας πραγματικά τυχαία δημιουργημένος κωδικός πρόσβασης με επαρκές μήκος και αποτελούμενος από μια αρκετά μεγάλη δεξαμενή γραμμάτων, ψηφίων και ειδικών χαρακτήρων, απαιτεί αδιανόητο χρόνο για να σπάσει, ακόμη και με μια ξεπερασμένη λειτουργία παραγωγής κλειδιού, ακόμη και με ασύλληπτα ποσά πόρων. Παρ’ όλα αυτά, δεν μπορούμε και δεν πρέπει να βασιζόμαστε σε εκτιμήσεις για το τι είδους πόροι είναι διαθέσιμοι σε έναν πιθανό εισβολέα. Ωστόσο, θεωρούμε τουλάχιστον απίθανο τέτοιους κωδικούς πρόσβασης –ακόμη και με ανεπαρκή παραγωγή κλειδιού– να μπορούν να τους σπάσουν με brute force χωρίς περαιτέρω καθυστέρηση.
Ασφαλείς κωδικοί
Μια μικρή προσθήκη σχετικά με τους ασφαλείς κωδικούς: Κάνοντας λόγο για τυχαίο κωδικό, αυτό σημαίνει να έχει παραχθεί από μηχάνημα. Ένας κωδικός δημιουργημένος από εσένα, δε θα είναι ποτέ τόσο ασφαλής όσο ένας τυχαίος κωδικός: Ακόμα και ο κωδικός dPhdWnv1;3k4d4;szv! φαίνεται ασφαλής με μια πρώτη ματιά, με τα κεφαλαία και τα μικρά γράμματα, με τους αριθμούς και τους ειδικούς χαρακτήρες. Παρ’ όλα αυτά, αποτελεί απλώς συντομογραφία της όχι-και-τόσο-μυστικής γερμανικής φράσης “Die Philosophen haben die Welt nur verschieden interpretiert; es kommt aber darauf an, sie zu verändern.”, με κάποια φωνήεντα να έχουν αντικατασταθεί από αριθμούς και με κάποιους ειδικούς χαρακτήρες να έχουν προστεθεί. Τέτοια και αντίστοιχα κόλπα είναι ιδιαιτέρως διαδεδομένα, αλλά μπορούν εύκολα να προβλεφθούν έπειτα από καλή έρευνα και διαισθητικότητα, και δεν αποτελούν τη βάση ενός πραγματικά ασφαλούς κωδικού.
Η κοινότητα των Tails συστήνει στις οδηγίες της να χρησιμοποιούμε κωδικούς “Diceware” (*δημιουργημένους τυχαία από αλληλουχία ρίψεων ζαριού).
*
(1) https://lanemesi.noblogs.org/post/2023/04/09/qualche-novita-su-ivan-recluso-nel-carcere-di-villepinte-francia-8-aprile-2023/ και https://www.csrc.link/read/some-initial-notes-on-the-investigation-file-against-ivan.html / Onion link: http://7sk2kov2xwx6cbc32phynrifegg6pklmzs7luwcggtzrnlsolxxuyfyd.onion/en/2023/04/30/is-linux-hard-disk-encryption-hacked/index.html#fnref:1
(2) https://mjg59.dreamwidth.org/66429.html / Onion link: http://7sk2kov2xwx6cbc32phynrifegg6pklmzs7luwcggtzrnlsolxxuyfyd.onion/en/2023/04/30/is-linux-hard-disk-encryption-hacked/index.html#fnref:2
(3) Αυτό γίνεται κατανοητό ως εξής: Στη χειρότερη περίπτωση, το να παίζεις με τις ρυθμίσεις της κρυπτογράφησης μπορεί να οδηγήσει σε απώλεια των δεδομένων, και σαφώς θες να αποφεύγεις τέτοια ρίσκα όταν αναβαθμίζεις το λειτουργικό σου σύστημα. / Onion link: http://7sk2kov2xwx6cbc32phynrifegg6pklmzs7luwcggtzrnlsolxxuyfyd.onion/en/2023/04/30/is-linux-hard-disk-encryption-hacked/index.html#fnref:3
(4) Η κοινότητα των Tails εργάζεται για την επιδιόρθωση αυτού, η οποία αναμένεται να είναι διαθέσιμη στην έκδοση Tails 5.13, τέλη Μάη 2023: https://gitlab.tails.boum.org/tails/tails/-/merge_requests/1116 / Onion link: http://7sk2kov2xwx6cbc32phynrifegg6pklmzs7luwcggtzrnlsolxxuyfyd.onion/en/2023/04/30/is-linux-hard-disk-encryption-hacked/index.html#fnref:4
Πηγή: Act for Freedom Now
Μετάφραση: Επαναστατική Συνείδηση