Το hash, η υπογραφή, η αναπαραγώγιμη μεταγλώττιση και ο έλεγχος απαντούν σε διαφορετικά ερωτήματα.
Ο ανοικτός κώδικας επιτρέπει την εξέταση του κώδικα· όμως από μόνος του δεν αποδεικνύει ότι η εγκατεστημένη εφαρμογή είναι ο ίδιος κώδικας ή ότι δεν έχει ευπάθειες. Για την αξιολόγηση μιας εφαρμογής μηνυμάτων, είναι καλύτερο να διαχωρίζετε τα είδη τεκμηρίων: πηγαίος κώδικας, διαδικασία μεταγλώττισης, υπογραφή αρχείου, δοκιμή πρωτοκόλλου και έκθεση ελέγχου.
Τι ακριβώς δείχνει κάθε τεκμήριο;
| Τεκμήριο | Κύρια συνεισφορά | Τι δεν αποδεικνύει μόνο του |
|---|---|---|
| Αναγνώσιμος πηγαίος κώδικας | Δυνατότητα εξέτασης σχεδιασμού και υλοποίησης | Αντιστοιχία με το αρχείο εγκατάστασης ή απουσία όλων των σφαλμάτων |
| Αναπαραγώγιμη μεταγλώττιση | Δυνατότητα σύγκρισης εξόδου από συγκεκριμένη πηγή και περιβάλλον | Ασφάλεια του ίδιου του κώδικα |
| Υπογραφή APK | Έλεγχος της υπογραφής και της σύνδεσης του αρχείου με έμπιστο κλειδί υπογράφοντος | Ακίνδυνη συμπεριφορά της εφαρμογής |
| Hash SHA-256 | Εντοπισμός διαφορών στα byte σε σχέση με έμπιστη σύνοψη | Αυθεντικότητα όταν ο επιτιθέμενος αλλάζει μαζί αρχείο και σύνοψη |
| Διάνυσμα δοκιμής | Έλεγχος συγκεκριμένης συμπεριφοράς για ορισμένη είσοδο και έξοδο | Κάλυψη όλων των καταστάσεων και διαδρομών εκτέλεσης |
| Ανεξάρτητος έλεγχος | Ευρήματα εξέτασης συγκεκριμένου πεδίου και έκδοσης | Μόνιμη εγγύηση για όλες τις μελλοντικές εκδόσεις |
Αναπαραγώγιμη μεταγλώττιση δεν σημαίνει λήψη αρχείου με ίδιο hash
Σύμφωνα με τον ορισμό του Reproducible Builds, η αναπαραγωγιμότητα αφορά τη δημιουργία ίδιας εξόδου από συγκεκριμένη πηγή, περιβάλλον και οδηγίες. Αν απλώς συγκρίνετε το αρχείο που κατεβάσατε με το hash που δημοσίευσε ο δημιουργός, έχετε κάνει έλεγχο ακεραιότητας· δεν έχετε ακόμη δημιουργήσει μόνοι σας το αρχείο από τον κώδικα.
Για να αξιολογήσετε ισχυρισμό αναπαραγωγιμότητας, ζητήστε έκδοση κώδικα, εξαρτήσεις, οδηγίες μεταγλώττισης και έκθεση άλλου προσώπου που επανέλαβε το αποτέλεσμα. Η φράση «ο κώδικας υπάρχει στο GitHub» δεν αντικαθιστά αυτά τα τεκμήρια.
Πώς ερμηνεύουμε σωστά τον έλεγχο APK;
- Αποκτήστε το αρχείο από την επίσημη διαδρομή και για συγκεκριμένη έκδοση.
- Πάρτε τη σύνοψη και τα στοιχεία υπογράφοντος από πηγή της οποίας εμπιστεύεστε την αυθεντικότητα.
- Υπολογίστε το hash του αρχείου και συγκρίνετέ το με την ίδια έκδοση.
- Στον τεχνικό έλεγχο επικυρώστε και την υπογραφή· το επίσημο εργαλείο apksigner το υποστηρίζει.
- Αν δείτε διαφορά, σταματήστε την εγκατάσταση και διευκρινίστε την αιτία· μην υπογράψετε ξανά το αρχείο για να παρακάμψετε το σφάλμα.
Παράδειγμα εντολής επαλήθευσης για ειδικό που διαθέτει Android SDK Build Tools:
apksigner verify --verbose --print-certs app.apk
Το όνομα app.apk είναι απλώς παράδειγμα. Η επιτυχία της εντολής δεν εξαλείφει την ανάγκη γνώσης του έγκυρου κλειδιού του εκδότη.
Ποιος είναι ο ρόλος του Proof Lab;
Το Proof Lab του Livara προσφέρει εργαλεία για συγκεκριμένους ελέγχους. Διαβάστε το πεδίο κάθε δοκιμής: το hash αρχείου, ένα παράδειγμα συμφωνίας κλειδιού και η απόρριψη αλλοιωμένων δεδομένων είναι διαφορετικά ερωτήματα. Η επιτυχία μιας κρυπτογραφικής επίδειξης δεν αποτελεί έλεγχο ολόκληρης της εγκατεστημένης εφαρμογής, του διακομιστή, των ενημερώσεων ή της διαχείρισης λογαριασμού.
Το μοντέλο απειλών του Livara διευκρινίζει επίσης ότι, αν ο επιτιθέμενος αλλάξει και το αρχείο APK και την εμφανιζόμενη σύνοψη, η αντιστοιχία του hash από μόνη της δεν αποδεικνύει αυθεντικότητα. Αυτό είναι γενικός περιορισμός του ελέγχου hash, όχι ιδιότητα μιας συγκεκριμένης εφαρμογής μηνυμάτων.
Τι να ρωτάμε όταν διαβάζουμε έκθεση ελέγχου;
- Ποιος οργανισμός ή ποια πρόσωπα έκαναν την εξέταση και πού βρίσκεται η δημόσια έκθεση;
- Ποια έκδοση και ποιο commit εξετάστηκαν;
- Ποια μέρη έμειναν εκτός πεδίου;
- Πώς διορθώθηκαν και επανελέγχθηκαν τα σημαντικά ευρήματα;
- Η εγκατεστημένη έκδοσή σας είναι η ίδια ή περιλαμβάνει τις διορθώσεις της;
Μη βγάζετε οριστικό συμπέρασμα από λέξεις όπως «εγκεκριμένο» χωρίς απαντήσεις σε αυτά τα ερωτήματα. Η χρήση τυποποιημένου αλγορίθμου επίσης δεν ισοδυναμεί με πιστοποίηση ολόκληρου του προϊόντος βάσει προτύπου.
Συμπέρασμα για την επιλογή εφαρμογής μηνυμάτων
Ο ανοικτός κώδικας και η επαληθευσιμότητα δεν είναι αντίπαλοι· είναι συμπληρωματικά τεκμήρια. Προτιμήστε προϊόν με ακριβείς, ανιχνεύσιμους ισχυρισμούς και σαφές πεδίο. Έπειτα εφαρμόστε την ίδια εξέταση στη λειτουργία που χρησιμοποιείτε, όπως ομάδες, έκδοση ιστού, αντίγραφα ασφαλείας και συνδεδεμένες συσκευές, αντί να συμπεραίνετε απόλυτη ασφάλεια από μία επιτυχημένη δοκιμή.



