Κρυπτογράφηση δίσκου και προστασία ευαίσθητων δεδομένων σε Android

Κρυπτογράφηση δίσκου και προστασία ευαίσθητων δεδομένων σε Android

  • Το Android έχει μεταβεί από την πλήρη κρυπτογράφηση δίσκου σε κρυπτογράφηση που βασίζεται σε αρχεία, διαχωρίζοντας την αποθήκευση που συνδέεται με διαπιστευτήρια (CE) και την αποθήκευση που συνδέεται με συσκευές (DE).
  • Τα κλειδιά κρυπτογράφησης διαχειρίζονται από τα fscrypt, vold, KeyMint/Keymaster και Gatekeeper/Weaver εντός ενός TEE, συνδέοντας την πραγματική πρόσβαση με τον κωδικό πρόσβασης κλειδώματος.
  • Η λειτουργία άμεσης εκκίνησης επιτρέπει σε ορισμένες εφαρμογές και υπηρεσίες να λειτουργούν πριν από το πρώτο ξεκλείδωμα, αλλά τα ευαίσθητα δεδομένα πρέπει πάντα να βρίσκονται στον χώρο αποθήκευσης CE.
  • Η σωστή ρύθμιση παραμέτρων του πυρήνα, του SELinux και των δικαιωμάτων είναι το κλειδί για να διασφαλιστεί ότι ούτε τα ξεκλείδωτα bootloaders ούτε η πρόσβαση root μπορούν να εκθέσουν κρυπτογραφημένα δεδομένα χωρίς τα διαπιστευτήρια του χρήστη.

⚠️ Το ψηφιακό σας δακτυλικό αποτύπωμα (διεύθυνση IP) είναι εκτεθειμένο!

Η διεύθυνση IP σας είναι: ανίχνευση…

Κάντε streaming/download/«Σερφάρισμα» στο διαδίκτυο ανώνυμα με το Surfshark .

🌐 Μόνο $45.63 - 27 μήνες + Unlimited devices
Δεν αποθηκεύουμε τη διεύθυνση IP σας. Η ανίχνευση γίνεται τοπικά στον browser σας.

Το περιεχόμενο αυτού του σεναρίου δημιουργείται αυστηρά για εκπαιδευτικούς σκοπούς. Η χρήση γίνεται με δική σας ευθύνη.

Σήμερα, μεταφέρουμε ένα μεγάλο μέρος της ζωής μας στα κινητά μας τηλέφωνα: προσωπικές φωτογραφίες, ιδιωτικές συνομιλίες, έγγραφα εργασίας, αποθηκευμένους κωδικούς πρόσβασης, τραπεζικές εφαρμογές… Η απώλεια του τηλεφώνου σας ή η κλοπή του χωρίς να προστατεύονται τα δεδομένα μπορεί να εξελιχθεί σε πραγματική καταστροφή, τόσο σε προσωπικό όσο και σε επαγγελματικό επίπεδο, γι’ αυτό είναι σημαντικό να γνωρίζουμε πώς να ενισχύσουμε την ασφάλεια.

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

Τι είναι η κρυπτογράφηση δεδομένων στο Android και γιατί είναι τόσο σημαντική;

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

Αυτή η κρυπτογράφηση προστατεύει τόσο τα προσωπικά δεδομένα (φωτογραφίες, βίντεο, μηνύματα, αρχεία που έχουν ληφθεί) όσο και τα εταιρικά δεδομένα. Σε επιχειρηματικά περιβάλλοντα, αποτελεί βασικό στοιχείο για τη συμμόρφωση με κανονισμούς όπως ο Ευρωπαϊκός ΓΚΠΔ ή ο HIPAA των ΗΠΑ , καθώς μειώνει σημαντικά τον κίνδυνο παραβίασης δεδομένων σε περίπτωση απώλειας ή κλοπής μιας συσκευής που περιέχει πληροφορίες πελατών, ιατρικά αρχεία, νομικά έγγραφα ή εσωτερικά διαπιστευτήρια πρόσβασης VPN. Επιπλέον, η διατήρηση αντιγράφων ασφαλείας αποτρέπει την απώλεια της συσκευής από το να οδηγήσει σε ολική απώλεια δεδομένων.

Είναι σημαντικό να σημειωθεί ότι ένα κλείδωμα οθόνης από μόνο του δεν είναι αρκετό. Ένα μη κρυπτογραφημένο PIN εμποδίζει κάποιον μόνο να χρησιμοποιήσει τη διεπαφή του τηλεφώνου, αλλά εάν ο χώρος αποθήκευσης δεν είναι κρυπτογραφημένος, ένας εισβολέας θα μπορούσε να εξαγάγει φυσικά τα δεδομένα αντιγράφοντας τα περιεχόμενα της μνήμης χρησιμοποιώντας εργαλεία εγκληματολογίας ή εκμεταλλευόμενος τρωτά σημεία του bootloader. Επιπλέον, η χρήση μιας εφαρμογής ασφαλείας όπως το Prey μπορεί να βοηθήσει στον εντοπισμό και τη διαχείριση μιας χαμένης ή κλεμμένης συσκευής, συμπληρώνοντας την κρυπτογράφηση.

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

Από την πλήρη κρυπτογράφηση δίσκου έως την κρυπτογράφηση βάσει αρχείων

Ιστορικά, το Android έχει χρησιμοποιήσει δύο κύριες προσεγγίσεις για την κρυπτογράφηση συσκευών: την πλήρη κρυπτογράφηση δίσκου (FDE) και την κρυπτογράφηση βάσει αρχείων (FBE) . Η κατανόηση της διαφοράς βοηθάει σημαντικά στην κατανόηση του τι προστατεύεται ανά πάσα στιγμή και γιατί ορισμένες λειτουργίες συνεχίζουν να λειτουργούν ακόμα και όταν το τηλέφωνο είναι “κλειδωμένο”.

Η πλήρης κρυπτογράφηση δίσκου εισήχθη στο Android 4.4 (API 19) και απέκτησε μεγάλη απήχηση με το Android 5.0 (API 21). Σε αυτό το μοντέλο, ολόκληρο το διαμέρισμα δεδομένων χρήστη προστατεύεται με ένα μόνο κλειδί . Αυτό το κλειδί προέρχεται από τα διαπιστευτήρια του χρήστη, επομένως το σύστημα δεν μπορεί να έχει πρόσβαση σε τίποτα στο /data μέχρι να εισαγάγετε το PIN, το μοτίβο ή τον κωδικό πρόσβασής σας κατά την εκκίνηση.

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

Για να αντιμετωπίσει αυτό το πρόβλημα, η Google επανασχεδίασε ολόκληρο το σύστημα κρυπτογράφησης στο Android 7.0 Nougat (API 24), εισάγοντας την κρυπτογράφηση βάσει αρχείων (FBE). Σε αυτό το μοντέλο, κάθε αρχείο μπορεί να προστατευτεί με διαφορετικό κλειδί , επιτρέποντας σε διαφορετικά μέρη του συστήματος να ξεκλειδώνονται ανεξάρτητα ανάλογα με το ποιο διαπιστευτήριο έχει παρασχεθεί.

Το FBE φέρνει επίσης τη λεγόμενη λειτουργία Άμεσης Εκκίνησης , η οποία επιτρέπει στη συσκευή να εκκινείται απευθείας στην οθόνη κλειδώματος και επιτρέπει σε ορισμένες εφαρμογές να λειτουργούν σε περιορισμένο πλαίσιο πριν ο χρήστης εισαγάγει το PIN ή τον κωδικό πρόσβασής του.

Κρυπτογράφηση δίσκου και προστασία ευαίσθητων δεδομένων σε Android

Πώς λειτουργούν η λειτουργία άμεσης εκκίνησης και ο διαχωρισμός CE/DE

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

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

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

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

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

Τεχνικές απαιτήσεις και η υποχρεωτική φύση της κρυπτογράφησης στο σύγχρονο Android

Η κρυπτογράφηση βάσει αρχείων (FBE) υποστηρίζεται από την έκδοση Android 7.0 και, ξεκινώντας από το Android 10, η Google απαιτεί από όλες τις συσκευές που κυκλοφορούν με αυτήν την έκδοση ή νεότερη να χρησιμοποιούν κρυπτογράφηση βάσει αρχείων . Σε τηλέφωνα χωρίς κρυπτογράφηση AES με επιτάχυνση υλικού, χρησιμοποιείται ο αλγόριθμος Adiantum για τη διατήρηση καλής απόδοσης.

Για την σωστή εφαρμογή του FBE, ο κατασκευαστής πρέπει να πληροί αρκετές απαιτήσεις χαμηλού επιπέδου. Πρώτον, ο πυρήνας Linux της συσκευής πρέπει να υποστηρίζει το επίπεδο κρυπτογράφησης συστήματος αρχείων fscrypt για ext4 ή F2FS (οι δύο συνήθεις επιλογές για το /data στο Android). Στους σύγχρονους πυρήνες, αρκεί να ενεργοποιήσετε επιλογές όπως CONFIG_FS_ENCRYPTION και, εάν επιθυμείτε ενσωματωμένη κρυπτογράφηση, CONFIG_FS_ENCRYPTION_INLINE_CRYPT.

Απαιτείται επίσης το KeyMint ή τουλάχιστον το Keymaster 1.0 , μαζί με το Gatekeeper, το οποίο εκτελείται σε ένα Trusted Execution Environment (TEE). Αυτό προστατεύει τα κλειδιά κρυπτογράφησης που συνδέονται με τη συσκευή και τον χρήστη από μη εξουσιοδοτημένα λειτουργικά συστήματα και τροποποιημένους πυρήνες που επιχειρούν εκκίνηση με έναν ξεκλείδωτο bootloader.

Η συσκευή πρέπει επίσης να διαθέτει μια ρίζα αξιοπιστίας υλικού και μια επαληθευμένη διαδικασία εκκίνησης συνδεδεμένη με την αρχικοποίηση KeyMint, έτσι ώστε ένα μη εξουσιοδοτημένο σύστημα να μην μπορεί να έχει πρόσβαση στα κλειδιά κρυπτογράφησης συσκευής (DE). Με άλλα λόγια, ακόμη και αν εγκατασταθεί τροποποιημένο υλικολογισμικό, το υλικό ασφαλείας θα αρνηθεί να απελευθερώσει τα κλειδιά εάν η αλυσίδα εκκίνησης δεν είναι νόμιμη.

Στο επίπεδο διαμόρφωσης, η κρυπτογράφηση FBE ενεργοποιείται με την επεξεργασία του αρχείου fstab της συσκευής για το διαμέρισμα userdata. Εκεί, καθορίζεται μια επιλογή ` filencryption=…` , η οποία ορίζει τον αλγόριθμο κρυπτογράφησης περιεχομένου (συνήθως aes-256-xts ή Adiantum), τον αλγόριθμο κρυπτογράφησης ονόματος αρχείου (aes-256-cts, aes-256-heh, aes-256-hctr2 ή adiantum) και μια σειρά από προαιρετικές σημαίες (v1/v2, inlinecrypt_optimized, emmc_optimized, wrapedkey_v0, dusize_4k).

Κρυπτογράφηση δίσκου και προστασία ευαίσθητων δεδομένων σε Android

Ποια μέρη του συστήματος είναι κρυπτογραφημένα και πώς είναι οργανωμένα τα κλειδιά;

Σε ένα σύστημα Android με σωστά διαμορφωμένο FBE, το /data οργανώνεται σε διαφορετικές «κλάσεις αποθήκευσης» ανάλογα με το κλειδί που τα προστατεύει και πότε γίνονται προσβάσιμα.

Υπάρχουν κατάλογοι που δεν είναι κρυπτογραφημένοι με FBE (αν και σε πολλές περιπτώσεις είναι κρυπτογραφημένοι με μεταδεδομένα), όπως /data/apex (εκτός από ορισμένους υποκαταλόγους), /data/lost+found, /data/preloads και /data/unencrypted. Αυτές είναι διαδρομές όπου αποθηκεύονται στοιχεία ή δομές συστήματος που δεν χρειάζεται να συνδεθούν με διαπιστευτήρια χρήστη.

Έπειτα, υπάρχει η κλάση System DE , η οποία ομαδοποιεί κρυπτογραφημένα δεδομένα ανά συσκευή που δεν ανήκουν σε έναν συγκεκριμένο χρήστη: /data/app, /data/misc, /data/system, /data/vendor και άλλοι υποκατάλογοι του /data. Υπάρχει επίσης μια κλάση “per_boot” (/data/per_boot) για προσωρινά αρχεία που δεν χρειάζεται να παραμένουν σε όλες τις επανεκκινήσεις.

Για κάθε χρήστη, δημιουργούνται συγκεκριμένες διαδρομές CE και DE: /data/user/${user_id}, /data/system_ce/${user_id}, /data/misc_ce/${user_id}, /data/vendor_ce/${user_id} για εσωτερικό CE και /data/user_de/${user_id}, /data/system_de/${user_id}, /data/misc_de/${user_id}, /data/vendor_de/${user_id} για εσωτερικό DE. Εάν υπάρχει διαθέσιμος αποθηκευτικός χώρος (μια κάρτα SD που έχει μετατραπεί σε επέκταση εσωτερικής μνήμης), παρόμοιες δομές αναπαράγονται στο /mnt/expand/${volume_uuid}/.

Η διαχείριση κλειδιών γίνεται από το vold, το daemon τόμου Android. Το Vold διαχειρίζεται τα κλειδιά FBE και τα αποθηκεύει κρυπτογραφημένα σε δίσκο (εκτός από το κλειδί “κατά την εκκίνηση”, το οποίο προκύπτει κάθε φορά και δεν αποθηκεύεται ποτέ). Για παράδειγμα, τα εσωτερικά κλειδιά CE και DE χρήστη αποθηκεύονται στο /data/misc/vold/user_keys/ce/${user_id} και /data/misc/vold/user_keys/de/${user_id}, αντίστοιχα, και με τη σειρά τους προστατεύονται από κλειδιά που είναι αποθηκευμένα στο Keystore εντός του TEE.

Εκτός από τα κλειδιά CE εσωτερικής αποθήκευσης, όλα τα άλλα κλειδιά FBE είναι τυλιγμένα με AES-256-GCM χρησιμοποιώντας κλειδιά Keystore που παραμένουν στο ασφαλές περιβάλλον. Επιπλέον, χρησιμοποιούνται τεχνικές όπως η αντίσταση στην επαναφορά και τα αρχεία “secdiscardable” για να διασφαλιστεί ότι η διαγραφή ενός κλειδιού είναι πραγματικά μόνιμη, ακόμη και σε περίπτωση προσπαθειών επαναφοράς προηγούμενων καταστάσεων συστήματος.

Σχέση μεταξύ κλειδώματος οθόνης, συνθετικού κωδικού πρόσβασης και κλειδιών CE

Τα εσωτερικά κλειδιά CE αποθήκευσης διαθέτουν ένα επιπλέον επίπεδο προστασίας, επειδή είναι αυτά που πραγματικά εμποδίζουν έναν εισβολέα, ακόμη και με τον έλεγχο του συστήματος, να αποκρυπτογραφήσει τα δεδομένα σας χωρίς τον κωδικό πρόσβασής σας. Το Android εισάγει εδώ την έννοια ενός συνθετικού κωδικού πρόσβασης : ένα μυστικό υψηλής εντροπίας, που δημιουργείται τυχαία από το σύστημα για κάθε χρήστη, το οποίο δεν εισάγεται ποτέ απευθείας, αλλά προστατεύεται από τον κωδικό PIN, το μοτίβο ή τον κωδικό πρόσβασης κλειδώματος οθόνης (LSKF).

Η υπηρεσία LockSettingsService, που βρίσκεται στο system_server, διαχειρίζεται αυτόν τον συνθετικό κωδικό πρόσβασης. Όταν ορίζετε ή αλλάζετε τον κωδικό PIN ή τον κωδικό πρόσβασης οθόνης , το σύστημα λαμβάνει αυτό το LSKF, το κρυπτογραφεί (για να το ενισχύσει) και το χρησιμοποιεί για να αλληλεπιδράσει με το Weaver ή το Gatekeeper, ανάλογα με το υλικό της συσκευής.

Σε συσκευές με δυνατότητα Weaver, το ενισχυμένο LSKF σχετίζεται με ένα τυχαίο μυστικό υψηλής εντροπίας που είναι αποθηκευμένο σε ένα ασφαλές στοιχείο (SE) ή το TEE. Ο συνθετικός κωδικός πρόσβασης κρυπτογραφείται στη συνέχεια δύο φορές: πρώτα με ένα κλειδί που προέρχεται από το LSKF και το μυστικό Weaver και, στη συνέχεια, με ένα κλειδί αποθήκευσης κλειδιών. Αυτό εισάγει ένα όριο ρυθμού που επιβάλλεται από το υλικό στις προσπάθειες εικασίας κωδικού πρόσβασης, αποτρέποντας τις γρήγορες επιθέσεις brute-force.

Σε συσκευές χωρίς Weaver, το ενισχυμένο LSKF χρησιμοποιείται με το Gatekeeper και, πάλι, ο συνθετικός κωδικός πρόσβασης κρυπτογραφείται πρώτα με ένα κλειδί που προέρχεται από το LSKF και ένα αρχείο μιας χρήσης και, στη συνέχεια, με ένα κλειδί Keystore που συνδέεται με τον έλεγχο ταυτότητας στο Gatekeeper. Το αποτέλεσμα είναι ότι τα κλειδιά CE δεν μπορούν να ξεκλειδωθούν χωρίς να παρακαμφθούν αυτές οι προστασίες , ακόμη και με ένα τροποποιημένο σύστημα ή μια εναλλακτική εκκίνηση.

Όταν αλλάζετε το PIN ή τον κωδικό πρόσβασης κλειδώματος οθόνης, η υπηρεσία LockSettingsService καταργεί την προηγούμενη σύνδεση μεταξύ του LSKF και του συνθετικού κωδικού πρόσβασης . Σε συσκευές με υποστήριξη αντίστασης επαναφοράς, αυτό αποτρέπει την επαναχρησιμοποίηση παλιών συσχετίσεων, ενισχύοντας περαιτέρω το μοντέλο ασφαλείας.

Η κρυπτογράφηση εξακολουθεί να προστατεύεται με ξεκλείδωτο ή rooted bootloader;

Αυτό μας φέρνει σε ένα από τα σημεία που προκαλεί τη μεγαλύτερη συζήτηση μεταξύ των προχωρημένων χρηστών. Θεωρητικά, ένα “καλά σχεδιασμένο” σύστημα κρυπτογράφησης δεν θα πρέπει να παραβιάζεται απλώς και μόνο επειδή ο bootloader είναι ξεκλείδωτος ή επειδή αποκτάτε πρόσβαση σε ένα κέλυφος ADB με δικαιώματα root: εφόσον δεν έχετε το κλειδί που προέρχεται από τον κωδικό πρόσβασης του χρήστη, τα δεδομένα θα πρέπει να παραμένουν μη αναγνώσιμα.

Στην πράξη, το σύγχρονο μοντέλο Android στοχεύει σε δύο πράγματα: πρώτον, ότι τα κλειδιά CE δεν μπορούν να ληφθούν χωρίς το LSKF , χάρη στη συνδυασμένη χρήση των TEE/SE, Gatekeeper/Weaver και Keystore· δεύτερον, ότι η επαληθευμένη εκκίνηση αποκλείει την πρόσβαση στα κλειδιά DE εάν εντοπιστεί ένα μη αξιόπιστο σύστημα. Ωστόσο, υπάρχουν σημαντικές λεπτομέρειες.

Ένα από αυτά τα προβλήματα είναι ότι, σε συσκευές με FBE, ορισμένα από τα περιεχόμενα του /data ενδέχεται να είναι διαθέσιμα στο DE ακόμη και πριν από την εισαγωγή του PIN . Αυτό περιλαμβάνει εσωτερικές δομές, βοηθητικά αρχεία, ακόμη και ορισμένους καταλόγους στο /data/misc, /data/system ή παρόμοιες τοποθεσίες, οι οποίοι, αν και κρυπτογραφημένοι στο δίσκο, αποκρυπτογραφούνται μετά την εκκίνηση επειδή το κλειδί DE είναι διαθέσιμο χωρίς την παρέμβαση του χρήστη.

Σε ορισμένα πειράματα σε πραγματικό κόσμο, έχει παρατηρηθεί, για παράδειγμα, ότι σε ένα Moto X4 με LineageOS 16 (Android 9), ενεργοποιημένο FBE και εγκατεστημένη κάρτα SD, το /data είναι ήδη προσαρτημένο κατά την άφιξη στην οθόνη κλειδώματος και ορισμένα συγκεκριμένα αρχεία μπορούν να εξαχθούν από ένα root shell ADB χωρίς την εισαγωγή του κωδικού πρόσβασης. Άλλα, ωστόσο, αποτυγχάνουν ή φαίνονται μη προσβάσιμα, γεγονός που υποδηλώνει ότι έχουν συνδεθεί σωστά με το CE.

Ακόμα πιο σοβαρό είναι ότι, εάν τα δικαιώματα και οι πολιτικές δεν έχουν διαμορφωθεί σωστά, είναι δυνατό να διαβαστούν ορισμένα κλειδιά που σχετίζονται με υιοθετήσιμους τόμους , όπως το κρυπτογραφημένο κλειδί της κάρτας SD, από το /data/misc/vold. Με αυτό το κλειδί, είναι δυνατό να τοποθετήσετε και να αποκρυπτογραφήσετε τον τόμο εκτός του τηλεφώνου, καθιστώντας την κρυπτογράφηση της κάρτας άχρηστη.

Αυτές οι καταστάσεις δεν αποτελούν τόσο ένα ελάττωμα σχεδιασμού στο ίδιο το FBE, αλλά μάλλον σφάλματα υλοποίησης ή μη ασφαλείς διαμορφώσεις σε προσαρμοσμένες ROM, τροποποιημένες ανακτήσεις ή συσκευές όπου ο κατασκευαστής δεν έχει ακολουθήσει όλες τις συστάσεις (για παράδειγμα, μη σωστή απομόνωση των ατόμων που μπορούν να έχουν πρόσβαση στο /data/misc/vold, μη εφαρμογή του SELinux σε αυστηρή λειτουργία ή μη επαρκής διαχωρισμός των δεδομένων που θα έπρεπε να βρίσκονται στο CE). Η αναθεώρηση και η προσαρμογή των ρυθμίσεων ασφαλείας βοηθά στη μείωση αυτών των κινδύνων.

Γιατί το Spotify, το YouTube ή οι ειδοποιήσεις εξακολουθούν να λειτουργούν όταν το τηλέφωνό μου είναι κλειδωμένο;

Μια πολύ συνηθισμένη ερώτηση μεταξύ των χρηστών είναι: αν «όλα είναι κρυπτογραφημένα» όταν κλειδώνω το τηλέφωνό μου, πώς γίνεται να συνεχίζουν να ηχούν οι ειδοποιήσεις, το Spotify να λειτουργεί ακόμα ή να λαμβάνονται μηνύματα ενώ η οθόνη είναι σβηστή και η συσκευή είναι προφανώς προστατευμένη;

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

Επιπλέον, πολλά από τα δεδομένα που χρειάζονται εφαρμογές όπως το Spotify, το YouTube ή οι υπηρεσίες push notifications αποθηκεύονται ή αναπαράγονται σε ζώνες DE ή οι εφαρμογές επισημαίνονται ως “directBootAware” για να λειτουργούν με ένα περιορισμένο υποσύνολο δεδομένων, ενώ ο χρήστης δεν έχει ακόμη εισαγάγει το PIN του μετά από μια επανεκκίνηση. Αυτός είναι ο λόγος για τον οποίο, για παράδειγμα, μπορείτε να λάβετε μια κλήση ή να ακούσετε ένα ξυπνητήρι ακόμα κι αν το τηλέφωνο μόλις ενεργοποιήθηκε και βρίσκεστε ακόμα στην αρχική οθόνη κλειδώματος.

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

Αυτό σημαίνει ότι εάν ένας εισβολέας αποκτήσει αυξημένα δικαιώματα αφού η συσκευή έχει ήδη ξεκλειδωθεί μετά από μια εκκίνηση (για παράδειγμα, μέσω rooted malware ή εκμετάλλευσης πυρήνα), θα μπορούσε να έχει πρόσβαση σε πολύ περισσότερες πληροφορίες από ό,τι αν επιχειρούσε να το κάνει αμέσως μετά την ενεργοποίηση της συσκευής, πριν κάποιος εισαγάγει το PIN . Γι’ αυτό είναι τόσο σημαντικό να κάνετε αναγκαστική επανεκκίνηση μιας συσκευής πριν την παραδώσετε σε συνοριακούς ελέγχους, τεχνικούς επισκευών ή άλλες ευαίσθητες καταστάσεις και να μην την ξεκλειδώσετε ξανά.

Τι μπορούν και τι δεν μπορούν να κάνουν οι εφαρμογές συστήματος με το Direct Boot

Με την άφιξη του FBE, το Android εισήγαγε νέα API και χαρακτηριστικά manifest, ώστε οι εφαρμογές να γνωρίζουν σε ποια κατάσταση κρυπτογράφησης βρίσκεται η συσκευή και ποιος χώρος αποθήκευσης είναι διαθέσιμος ανά πάσα στιγμή.

Δύο σχετικά χαρακτηριστικά μπορούν να δηλωθούν στο μανιφέστο μιας εφαρμογής: `android:directBootAware` και `android:defaultToDeviceProtectedStorage`. Το πρώτο υποδεικνύει ότι όλα τα στοιχεία της εφαρμογής γνωρίζουν την κρυπτογράφηση και μπορούν να λειτουργήσουν κατά τη λειτουργία άμεσης εκκίνησης. Το δεύτερο ορίζει ότι η εφαρμογή, από προεπιλογή, χρησιμοποιεί χώρο αποθήκευσης DE αντί για CE για τα δεδομένα της.

Οι εφαρμογές συστήματος που επισημαίνονται με `defaultToDeviceProtectedStorage` πρέπει να ελέγχουν προσεκτικά τις πληροφορίες που αποθηκεύουν σε αυτήν την τοποθεσία και να μετακινούν τυχόν δεδομένα που θα μπορούσαν να θεωρηθούν προσωπικά ή ευαίσθητα στην Κρυπτογράφηση Συσκευής (DE). Οι κατασκευαστές είναι υπεύθυνοι να μην μεταφέρουν εκτεταμένα ιστορικά, λίστες επαφών ή δεδομένα χρήστη στην DE, αλλά να περιορίζονται στις ελάχιστες διαμορφώσεις που είναι απαραίτητες για τη λειτουργία της συσκευής πριν από το πρώτο ξεκλείδωμα.

Για την καλύτερη διαχείριση αυτών των περιβαλλόντων, το Android παρέχει μεθόδους όπως οι Context.createCredentialProtectedStorageContext() και Context.isCredentialProtectedStorage(), οι οποίες επιτρέπουν στις εφαρμογές να επιλέγουν ρητά πού θα αποθηκεύουν ή θα διαβάζουν τα δεδομένα τους με βάση την κατάσταση κρυπτογράφησης και τις ανάγκες απορρήτου.

Σε συσκευές πολλαπλών χρηστών με προφίλ εργασίας, τα πράγματα γίνονται ακόμη πιο περίπλοκα: κάθε χρήστης και κάθε προφίλ εργασίας έχει τα δικά του κλειδιά CE και DE . Δικαιώματα εφαρμογών όπως INTERACT_ACROSS_USERS ή INTERACT_ACROSS_USERS_FULL επιτρέπουν σε ορισμένες εφαρμογές συστήματος να αλληλεπιδρούν μεταξύ χρηστών, αλλά μπορούν να έχουν πρόσβαση μόνο στο CE των χρηστών που είναι ήδη ξεκλειδωμένοι, προσθέτοντας ένα ακόμη επίπεδο απομόνωσης.

Κρυπτογράφηση κάρτας SD και προσαρμόσιμος χώρος αποθήκευσης: πλεονεκτήματα και μειονεκτήματα

Όταν χρησιμοποιείτε μια κάρτα SD ως προσαρμόσιμο αποθηκευτικό χώρο, το Android την αντιμετωπίζει ως κρυπτογραφημένη επέκταση της εσωτερικής μνήμης. Η κάρτα κρυπτογραφείται με ένα κλειδί που, κατ’ αρχήν, μόνο η ίδια η συσκευή θα πρέπει να μπορεί να χρησιμοποιήσει και αυτό το κλειδί αποθηκεύεται κρυπτογραφημένο μαζί με άλλα πλήκτρα έντασης ήχου σε διαδρομές όπως /data/misc_ce/${user_id}/vold/volume_keys/${volume_uuid} ή /data/misc_de/${user_id}/vold/volume_keys/${volume_uuid}.

Από την έκδοση Android 9, τα Μπλοκ Περιβάλλοντος Αρχείων (FBE) και ο προσαρμόσιμος χώρος αποθήκευσης υποστηρίζονται πλήρως και, ξεκινώντας από το Android 11, ο τρόπος ορισμού των μορφών κρυπτογράφησης περιεχομένου και μεταδεδομένων ενοποιείται μέσω ιδιοτήτων συστήματος, όπως ro.crypto.volume.options ή ro.crypto.volume.metadata.encryption. Οι προηγούμενες εκδόσεις χρησιμοποιούσαν ξεχωριστές ιδιότητες για λειτουργίες περιεχομένου και ονόματα αρχείων και σε πολλές συσκευές, η προεπιλεγμένη τιμή για τα ονόματα σε προσαρμόσιμους τόμους δεν συνιστάται και επομένως έπρεπε να προσαρμοστεί ρητά.

Σε έναν ιδανικό κόσμο, ακόμη και αν κάποιος αφαιρέσει την κάρτα SD, τα δεδομένα θα πρέπει να παραμένουν μη προσβάσιμα χωρίς το κλειδί που είναι αποθηκευμένο στο τηλέφωνο . Αλλά και πάλι, εάν αυτό το κλειδί μπορεί να εξαχθεί από το /data/misc/vold με ένα root shell επειδή η συσκευή δεν έχει ρυθμιστεί σωστά, το μοντέλο καταρρέει. Αυτό καταδεικνύει γιατί η απλή «ενεργοποίηση της κρυπτογράφησης» θεωρητικά δεν είναι αρκετή: πρέπει να συνοδεύεται από σωστές πολιτικές SELinux και προσεκτικό σχεδιασμό δικαιωμάτων.

Για κάρτες SD που χρησιμοποιούνται ως παραδοσιακός (μη προσαρμόσιμος) εξωτερικός χώρος αποθήκευσης, πολλοί κατασκευαστές προσφέρουν την επιλογή “κρυπτογράφηση κάρτας SD” στις Ρυθμίσεις > Ασφάλεια. Αυτή η κρυπτογράφηση συνήθως διασφαλίζει ότι μόνο η συγκεκριμένη συσκευή στην κάρτα μπορεί να διαβάσει το περιεχόμενό της . Η διαδικασία μπορεί να διαρκέσει λίγο χρόνο ανάλογα με το μέγεθος και την ταχύτητα της κάρτας SD, αλλά μόλις ολοκληρωθεί, η τοποθέτηση της κάρτας σε άλλο τηλέφωνο ή υπολογιστή θα καταστήσει το περιεχόμενο μη αναγνώσιμο. Επιπλέον, συνιστάται να διατηρείτε αντίγραφα ασφαλείας στο cloud για να διασφαλίσετε την απώλεια δεδομένων σε περίπτωση βλάβης της κάρτας.

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

Κρυπτογράφηση, απόδοση και πιθανά μειονεκτήματα

Η κρυπτογράφηση έχει υπολογιστικό κόστος: η ανάγνωση ή η εγγραφή κρυπτογραφημένων δεδομένων περιλαμβάνει τη λειτουργία με αλγόριθμους όπως ο AES-256-XTS ή ο Adiantum. Στις σύγχρονες συσκευές με κρυπτογραφική επιτάχυνση υλικού (για παράδειγμα, επεκτάσεις ARMv8 CE σε ARM64), ο αντίκτυπος στην απόδοση και την κατανάλωση ενέργειας είναι πολύ μικρός και σχεδόν ανεπαίσθητος.

Για τη μεγιστοποίηση της απόδοσης, οι συνηθισμένοι πυρήνες Android περιλαμβάνουν ένα ενσωματωμένο πλαίσιο κρυπτογράφησης , το οποίο επιτρέπει σε ορισμένους ελεγκτές αποθήκευσης (UFS, eMMC) να κρυπτογραφούν και να αποκρυπτογραφούν δεδομένα “εν κινήσει”. Η ενεργοποίηση επιλογών όπως CONFIG_BLK_INLINE_ENCRYPTION, CONFIG_SCSI_UFS_CRYPTO ή CONFIG_MMC_CRYPTO, μαζί με σημαίες όπως inlinecrypt_optimized ή emmc_optimized, βοηθά στην ελαχιστοποίηση της επιβάρυνσης και στην παράταση της διάρκειας ζωής της μπαταρίας.

Σε παλαιότερες συσκευές ή σε συσκευές χωρίς υποστήριξη επιταχυνόμενου AES, η μείωση της απόδοσης μπορεί να είναι πιο αισθητή, γι’ αυτό και η Google σχεδίασε το Adiantum , ένα σύστημα που αποσκοπεί στην παροχή ισχυρής ασφάλειας σε μέτριο υλικό. Παρόλα αυτά, ορισμένοι χρήστες ενδέχεται να αντιμετωπίσουν μια μικρή πτώση στην απόδοση, ειδικά εάν η κρυπτογράφηση είναι ενεργοποιημένη χειροκίνητα σε μια συσκευή χαμηλού επιπέδου.

Ένα άλλο σημείο που πρέπει να έχετε κατά νου είναι ότι μόλις κρυπτογραφηθεί ο χώρος αποθήκευσης, συνήθως δεν υπάρχει τρόπος να τον επαναφέρετε χωρίς επαναφορά εργοστασιακών ρυθμίσεων . Η μορφή κρυπτογράφησης δίσκου ορίζεται από επιλογές όπως το `filencryption` στο `fstab` και δεν μπορεί να αλλάξει με μια απλή ενημέρωση over-the-air (OTA). Εάν θέλετε να απενεργοποιήσετε την κρυπτογράφηση, η τυπική λύση είναι να διαγράψετε το διαμέρισμα δεδομένων και να ξεκινήσετε από την αρχή.

Σε παλαιότερες εκδόσεις του Android, ορισμένες παραδοσιακές ενημερώσεις OTA απαιτούσαν πρόσβαση από το διαμέρισμα ανάκτησης σε δεδομένα που βρίσκονται στο /data, κάτι που δεν είναι δυνατό εάν η περιοχή αυτή προστατεύεται από DE. Σε τέτοιες περιπτώσεις, ορισμένοι κατασκευαστές επέλεξαν να αφήσουν έναν κατάλογο ανώτατου επιπέδου μη κρυπτογραφημένο (για παράδειγμα, /data/misc_ne) αποκλειστικά για την αποθήκευση πακέτων ενημέρωσης, χρησιμοποιώντας το SELinux για να διασφαλίσουν ότι μόνο η διαδικασία ενημέρωσης θα μπορούσε να έχει πρόσβαση σε αυτά.

Πέρα από αυτές τις τεχνικές παραμέτρους, για τον μέσο χρήστη το κύριο μειονέκτημα της κρυπτογράφησης είναι ότι εάν ξεχάσει το PIN ή τον κωδικό πρόσβασής του και δεν διαθέτει μηχανισμούς ανάκτησης, οι πληροφορίες χάνονται για πάντα . Δεν υπάρχει επίσημη «κερκόπορτα»: χωρίς το LSKF και χωρίς να είναι δυνατή η εξαγωγή του συνθετικού κωδικού πρόσβασης, τα κλειδιά CE δεν μπορούν να ανακτηθούν.

Τελικά, ολόκληρο αυτό το πλαίσιο καθιστά την κρυπτογράφηση δίσκου και την προστασία ευαίσθητων δεδομένων στο Android πολύ πιο εξελιγμένη από ό,τι φαίνεται αρχικά. Μεταξύ FDE και FBE, χώρων CE και DE, TEE, KeyMint, Gatekeeper, fscrypt, κρυπτογράφησης μεταδεδομένων και επαληθευμένης εκκίνησης , το σύστημα έχει σχεδιαστεί έτσι ώστε ένας μη εξουσιοδοτημένος εισβολέας, ακόμη και με πρόσβαση στη συσκευή και προσπάθεια εκκίνησης τροποποιημένου λογισμικού ή χρήσης ADB με πρόσβαση root, θα δυσκολευτεί εξαιρετικά να διαβάσει οτιδήποτε χρήσιμο χωρίς τον κωδικό πρόσβασης του χρήστη, υπό την προϋπόθεση ότι ο κατασκευαστής έχει ακολουθήσει τις συστάσεις και ο χρήστης το συμπληρώνει αυτό με ισχυρά μέτρα ασφαλείας, ενημερωμένες ενημερώσεις και κοινή λογική κατά την εγκατάσταση εφαρμογών.

Αφήστε ένα Σχόλιο

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Δεν είναι διαφήμιση – ανήκει στο DirectVortex