Η αρχιτεκτονική ασφάλειας του Cryptile, επίπεδο προς επίπεδο
Το Cryptile κρυπτογραφεί κάθε αρχείο, μικρογραφία και ευρετήριο με AES-256-GCM, με κλειδιά που δημιουργούνται στο τηλέφωνό σας από το μοτίβο που σχεδιάζετε. Δεν υπάρχει λογαριασμός ούτε διακομιστής, και ο προγραμματιστής δεν κρατά ποτέ κλειδιά.
Κατεβάστε το Cryptile από το App Store
Η απλή περίληψη βρίσκεται στη σελίδα ασφάλειας.
Τι χρειάζεται να ξέρω;
- Το μοτίβο σας είναι η πηγή κάθε κλειδιού. Χωρίς αυτό δεν αποθηκεύεται τίποτα αναγνώσιμο.
- Τα μεγέθη και ο αριθμός των θησαυροφυλακίων θολώνουν. Τα αρχεία συμπληρώνονται (padding) και θέσεις-δόλωμα κρύβουν πόσα θησαυροφυλάκια υπάρχουν.
- Μπορείτε να το ελέγξετε. Ο πυρήνας κρυπτογράφησης δημοσιεύεται για έλεγχο (source-available), με μοντέλο απειλών και διανύσματα δοκιμής: github.com/jasonbrelsford/cryptile-core.
Πώς γίνεται ένα μοτίβο κλειδί;
- Το μοτίβο γράφεται ως το μέγεθος του πλέγματος ακολουθούμενο από τα κελιά που αγγίξατε, με τη σειρά.
- Αναμειγνύεται με ένα μυστικό συσκευής 32 byte που φυλάγεται στην Κλειδοθήκη του iPhone μόνο για αυτή τη συσκευή.
- Το PBKDF2-HMAC-SHA512 εκτελείται 600.000 φορές πάνω του. Κάθε μαντεψιά κοστίζει τόση δουλειά.
- Το HKDF-SHA256 χωρίζει το αποτέλεσμα σε ένα κλειδί αναζήτησης και ένα κλειδί περιτύλιξης.
- Το κλειδί αναζήτησης ονομάζει το αρχείο ευρετηρίου του θησαυροφυλακίου. Το κλειδί περιτύλιξης το ανοίγει.
Μέσα στο ευρετήριο βρίσκεται το τυχαίο κύριο κλειδί 256 bit του θησαυροφυλακίου. Το HKDF παράγει από αυτό χωριστά υποκλειδιά για τα αρχεία, τις μικρογραφίες και το ευρετήριο. Κανένα κλειδί δεν χρησιμοποιείται για δύο σκοπούς.
Πώς κρυπτογραφούνται τα αρχεία;
Τα μικρά στοιχεία, όπως οι μικρογραφίες και το ευρετήριο, σφραγίζονται σε ένα κομμάτι με AES-256-GCM και τυχαίο nonce.
Τα μεγάλα αρχεία χρησιμοποιούν διάταξη STREAM σε τμήματα του 1 MB. Κάθε τμήμα έχει το δικό του nonce και καταγράφει τη θέση του και αν είναι το τελευταίο. Αν κοπούν, αναδιαταχθούν ή αντικατασταθούν τμήματα, η αποκρυπτογράφηση αποτυγχάνει.
Το GCM πιστοποιεί επίσης κάθε κεφαλίδα, οπότε ένα αλλοιωμένο αρχείο απορρίπτεται αντί να εμφανιστεί.
Πώς κρύβονται τα μεγέθη και ο αριθμός των θησαυροφυλακίων;
Κάθε μικρό blob και κάθε τελικό τμήμα αρχείου συμπληρώνεται σε πολλαπλάσιο των 64 KiB. Όποιος αντιγράφει βλέπει κατά προσέγγιση μεγέθη, όχι ακριβή.
Δεν υπάρχει λίστα θησαυροφυλακίων. Η εφαρμογή κρατά τουλάχιστον 8 θέσεις με μορφή ευρετηρίου, πραγματικές και δόλωμα, και ανανεώνει τυχαία τα δολώματα σε κάθε εγγραφή. Ένα μοτίβο που δεν αντιστοιχεί σε καμία θέση ανοίγει ένα άδειο θησαυροφυλάκιο.
Πώς λειτουργεί η ανάκτηση;
Κάθε θησαυροφυλάκιο έχει μια φράση ανάκτησης 9 λέξεων, δηλαδή 96 bit τυχαιότητας. Ανοίγει ένα χωριστό αντίγραφο ανάκτησης του θησαυροφυλακίου, σφραγισμένο με κλειδί που προκύπτει από τη φράση.
Το αντίγραφο στο iCloud αντιγράφει τα κρυπτογραφημένα αρχεία όπως είναι. Το μυστικό της συσκευής δεν περιλαμβάνεται από προεπιλογή, οπότε ένα αντίγραφο ασφαλείας μόνο του δεν μπορεί να χρησιμοποιηθεί για να μαντέψει κανείς μοτίβα.
Τι κρυπτογραφείται και τι όχι;
Κρυπτογραφούνται: φωτογραφίες, βίντεο, αρχεία, σημειώσεις, μικρογραφίες, ονόματα, φάκελοι, αγαπημένα, αναγνωρισμένο κείμενο και τοποθεσίες φωτογραφιών. Το μικρό αρχείο που παρακολουθεί τα δολώματα και τους μετρητές του δωρεάν προγράμματος σφραγίζεται με κλειδί συσκευής.
Δεν κρυπτογραφούνται από το Cryptile:
- Οι ρυθμίσεις. Ο χρόνος αυτόματου κλειδώματος, η σειρά ταξινόμησης και ο διακόπτης αντιγράφου ασφαλείας δεν περιέχουν μυστικά.
- Στοιχεία κοινής χρήσης που περιμένουν να προστεθούν. Βρίσκονται υπό την προστασία αρχείων του iOS μέχρι να ανοίξετε ένα θησαυροφυλάκιο.
- Το συνολικό μέγεθος του χώρου της εφαρμογής και οι χρόνοι εγγραφής. Ένα θησαυροφυλάκιο 10 GB δεν μοιάζει με 10 MB.
- Ό,τι εξάγετε. Ένα αντίγραφο αποθηκευμένο στις Φωτογραφίες ή στα Αρχεία είναι έξω από το θησαυροφυλάκιο.
Από τι προστατεύει αυτό;
- Από κάποιον που αντιγράφει τα αρχεία της εφαρμογής χωρίς την Κλειδοθήκη σας. Παίρνει κρυπτογραφημένα δεδομένα και δεν μπορεί να δοκιμάσει μοτίβα.
- Από την Apple ή μια παραβίαση στην Apple. Το iCloud κρατά κρυπτογραφημένα δεδομένα και κανένα κλειδί.
- Από αλλοιώσεις. Αλλαγμένα ή αναδιαταγμένα δεδομένα δεν αποκρυπτογραφούνται.
- Από εμάς. Δεν έχουμε διακομιστή και δεν κρατάμε κλειδιά, οπότε δεν μπορούμε να επαναφέρουμε την πρόσβαση.
Από τι δεν προστατεύει αυτό;
- Από σύντομα μοτίβα. Ένα μοτίβο είναι πιο αδύναμο από μια φράση πρόσβασης. Με τα αρχεία σας και την Κλειδοθήκη σας, ένα μοτίβο 6 κελιών σε πλέγμα 4×4 σπάει σε λίγα λεπτά σε GPU. Χρησιμοποιήστε 8 ή περισσότερα κελιά.
- Από κακόβουλο λογισμικό σε ξεκλείδωτο τηλέφωνο. Κώδικας που διαβάζει τη μνήμη όσο ένα θησαυροφυλάκιο είναι ανοιχτό ξεπερνά κάθε εφαρμογή.
- Από κάποιον που σας βλέπει να σχεδιάζετε. Σχεδιάζετε εκεί που κανείς δεν βλέπει το χέρι σας.
- Από την απώλεια του τηλεφώνου και της φράσης. Το θησαυροφυλάκιο χάνεται. Δεν υπάρχει επαναφορά.
Το μοτίβο πανικού στο Plus καταστρέφει το μυστικό της συσκευής, οπότε κανένα θησαυροφυλάκιο στο τηλέφωνο δεν ανοίγει μέχρι να γίνει επαναφορά.