Επαλήθευση υπογραφών APK: Πώς να διασφαλίσετε ότι η εφαρμογή σας είναι ασφαλής
Η πλευρική φόρτωση εφαρμογών στο Android προσφέρει ελευθερία και ευελιξία, αλλά συνοδεύεται από έναν σημαντικό κίνδυνο: παραποιημένες εφαρμογές. Οι κακόβουλοι φορείς συχνά τροποποιούν δημοφιλείς εφαρμογές για να περιλαμβάνουν λογισμικό υποκλοπής spyware ή adware πριν τις αναδιανείμουν σε ανεπίσημους ιστότοπους. Πώς μπορείτε να είστε σίγουροι ότι το APK που μόλις κατεβάσατε είναι ακριβώς το ίδιο με αυτό που ανέβασε ο προγραμματιστής στο Google Play;
Η απάντηση καταλήγει στο Ψηφιακές υπογραφές APK. Παρακάτω, θα καλύψουμε τον τρόπο με τον οποίο λειτουργεί πραγματικά η υπογραφή εφαρμογών και θα χρησιμοποιήσουμε το Διαδικτυακός Επαληθευτής APK για να ελέγξουμε τον κατακερματισμό και το πιστοποιητικό ενός APK προτού αποφασίσετε να το εμπιστευτείτε.
Η έκδοση των 60 δευτερολέπτων:
Το Android υπογράφει κάθε APK με ένα κλειδί εκδότη. Το τηλέφωνο αρνείται μια "ενημέρωση" της οποίας η υπογραφή δεν ταιριάζει με την υπάρχουσα εγκατάσταση. αυτή είναι η κύρια άμυνα του ΛΣ κατά της πλαστοπροσωπίας. Για να επαληθεύσετε ένα πλευρικό APK, υπολογίστε τον κατακερματισμό του SHA-256 και το δακτυλικό του αποτύπωμα του πιστοποιητικού υπογραφής και, στη συνέχεια, συγκρίνετε και τα δύο με τιμές που εμπιστεύεστε (την υπάρχουσα εγκατάσταση του Play Store, το δημοσιευμένο δακτυλικό αποτύπωμα του προγραμματιστή ή ένα γνωστό-καλό παλαιότερο αντίγραφο). Μια αντιστοίχιση σημαίνει ότι το αρχείο είναι πανομοιότυπο byte και υπογράφεται από τον ίδιο εκδότη. μια αναντιστοιχία σημαίνει μην εγκαταστήσετε.
Τι είναι η υπογραφή APK;
Η ψηφιακή υπογραφή είναι μια κρυπτογραφική απόδειξη ταυτότητας. Όταν ένας προγραμματιστής τελειώνει μια εφαρμογή, την "υπογράφει" χρησιμοποιώντας ένα ιδιωτικό κλειδί (keystore). Στη συνέχεια, το Android χρησιμοποιεί το αντίστοιχο δημόσιο κλειδί που είναι ενσωματωμένο στο APK για να διασφαλίσει:
- Ακεραιότητα: Το αρχείο δεν έχει αλλάξει από τότε που υπογράφηκε.
- Αυθεντικότητα: Ο προγραμματιστής είναι αυτός που λένε ότι είναι.
- Ενημερώσεις: Μόνο τα APK που είναι υπογεγραμμένα με το ίδιο κλειδί μπορούν να ενημερώσουν μια υπάρχουσα εφαρμογή στο τηλέφωνό σας.
Εξέλιξη της υπογραφής: V1, V2, V3 και V4
Η Google βελτιώνει συνεχώς την ασφάλεια APK όλα αυτά τα χρόνια:
- V1 (Υπογραφή βάζου): Υπογράφει μεμονωμένες εγγραφές στο ZIP. Αργή και ευάλωτη σε ορισμένες επιθέσεις.
- V2 (Σχήμα υπογραφών APK): Υπογράφει ολόκληρο το μπλοκ αρχείου. Πολύ πιο γρήγορο στην επαλήθευση και πιο ασφαλές. (Android 7.0+)
- V3 (Περιστροφή κλειδιού): Επιτρέπει στους προγραμματιστές να αλλάξουν το κλειδί υπογραφής τους διατηρώντας παράλληλα ενημερώσεις εφαρμογών. (Android 9.0+)
- V4 (Ροή): Βελτιστοποιημένο για σταδιακές εγκαταστάσεις μέσω ADB. (Android 11+)
Πώς να επαληθεύσετε τις υπογραφές APK στο Διαδίκτυο
Το Εργαλείο επαλήθευσης APK μας δεν υπολογίζει απλώς τους κατακερματισμούς. εκτελεί έναν πλήρη κρυπτογραφικό έλεγχο της αλυσίδας πιστοποιητικών. Εδώ είναι πώς να το χρησιμοποιήσετε:
Βήματα για επαλήθευση:
- Μεταβείτε στη σελίδα Επαληθευτής APK.
- Επιλέξτε το αρχείο APK ή XAPK.
- Το εργαλείο μας αναλύει τον κατάλογο META-INF/ και εξάγει τα δεδομένα πιστοποιητικού (.RSA, .DSA ή .EC).
- Περιμένετε να ολοκληρωθεί η ανάλυση (διαρκεί μόνο δευτερόλεπτα).
- Ελέγξτε το Πληροφορίες πιστοποιητικού: Όνομα προγραμματιστή, οργανισμός και χώρα προέλευσης.
- Ελέγξτε το Hashes: Συγκρίνετε το SHA-256 που εμφανίζεται στον ιστότοπό μας με την τιμή που δημοσίευσε ο εκδότης στον επίσημο ιστότοπο, στη σελίδα έκδοσης έργου ή στη δήλωση υπογραφής.
Προειδοποίηση ασφαλείας
Εάν ο επαληθευτής εμφανίζει μια "Πιστοποιητικό εντοπισμού σφαλμάτων" ή μια άγνωστη οντότητα "Αυτο-υπογεγραμμένη" για μια σημαντική εφαρμογή όπως το Facebook ή το WhatsApp, ΜΗΝ ΤΟ ΕΓΚΑΤΑΣΤΑΣΤΕ. Είναι σχεδόν βέβαιο ότι διακυβεύεται.
Κατανόηση των αθροισμάτων ελέγχου (MD5, SHA-1, SHA-256)
Τα αθροίσματα ελέγχου είναι συμβολοσειρές σταθερού μήκους που αντιπροσωπεύουν ολόκληρο το αρχείο. Εάν αλλάξετε ένα μόνο pixel στο εικονίδιο μιας εφαρμογής, ο κατακερματισμός SHA-256 θα αλλάξει εντελώς.
| Τύπος κατακερματισμού | Επίπεδο Ασφαλείας | Σημειώσεις |
|---|---|---|
| MD5 | Κληροδότημα | Ευάλωτο σε συγκρούσεις. Όχι για ασφάλεια. |
| SHA-1 | Μέτριος | Ακόμα χρησιμοποιείται ευρέως για γρήγορες αναζητήσεις. |
| SHA-256 | Εξοχος | Το σύγχρονο πρότυπο για την επαλήθευση εφαρμογών. |
Τι πραγματικά σας λέει ένα πιστοποιητικό υπογραφής
Όταν ο επαληθευτής επιστρέφει ένα πιστοποιητικό, τα μέρη που έχουν σημασία για την ασφάλεια πλευρικής φόρτωσης δεν είναι τα πολύχρωμα bits των μεταδεδομένων X.509 αλλά μια μικρή χούφτα πεδίων. Πρακτικά:
- SHA-256 δακτυλικό αποτύπωμα του πιστοποιητικού. Αυτή είναι η πιο σημαντική τιμή: ένας κατακερματισμός 64 δεκαεξαδικών χαρακτήρων που προσδιορίζει μοναδικά το κλειδί υπογραφής. Δύο APK με το ίδιο δακτυλικό αποτύπωμα SHA-256 υπογράφηκαν από το ίδιο ιδιωτικό κλειδί. Αυτό σημαίνει "συνέχεια υπογραφής" στη λογική ενημέρωσης του λειτουργικού συστήματος.
- Θέμα Διακεκριμένο Όνομα. Συχνά κάτι σαν CN=Some App, O=Example Inc., C=US. Χρήσιμο ως υπαινιγμός, όχι ως απόδειξη ταυτότητας, καθώς ένας εισβολέας μπορεί να βάλει όποια συμβολοσειρά θέλει στο δικό του υπογεγραμμένο DN πιστοποιητικού. Να ελέγχετε πάντα το δακτυλικό αποτύπωμα και όχι το όνομα.
- Περίοδος ισχύος. Τα περισσότερα νόμιμα κλειδιά δημοσίευσης δημιουργούνται με ισχύ ~25 ετών (η σύσταση ιστορικού είναι 10000 ημέρες). Ένα πιστοποιητικό που λήγει τον επόμενο μήνα ή ένα πιστοποιητικό του οποίου η ισχύς επικαλύπτει ήδη το παρελθόν, είναι μια κόκκινη σημαία.
- Αλγόριθμος υπογραφής. Οι σύγχρονες εφαρμογές χρησιμοποιούν SHA256withRSA ή SHA256withECDSA. Το MD5 είναι σπασμένο. Το SHA1withRSA έχει καταργηθεί. Ένα APK που υπογράφεται μόνο με v1 / SHA-1 είναι ύποπτο το 2026.
Hash vs Signature: The Difference Τα περισσότερα μαθήματα που παραλείπουν
Οι άνθρωποι συχνά συγχέουν το "hash" και το "signature". Εξυπηρετούν πολύ διαφορετικούς σκοπούς και μια ασφαλής επαλήθευση απαιτεί και τα δύο:
- Ένα χασίσι (SHA-256 ολόκληρου του APK) σάς ενημερώνει εάν τα byte του αρχείου είναι πανομοιότυπα με ένα αντίγραφο αναφοράς. Εάν ο κατακερματισμός σας ταιριάζει με το δημοσιευμένο κατακερματισμό του εκδότη, το αρχείο δεν έχει τροποποιηθεί από τότε που υπολόγισαν αυτόν τον κατακερματισμό. Μόνο ένας κατακερματισμός δεν λέει τίποτα για το ποιος δημιούργησε τα byte.
- Ένα υπογραφή αποδεικνύει ποιος δημιούργησε τα byte, συγκεκριμένα, ότι ο κάτοχος του ιδιωτικού κλειδιού που συνδυάστηκε με το πιστοποιητικό υπογραφής παρήγαγε αυτό το αρχείο. Μόνο ένας έλεγχος υπογραφής δεν λέει τίποτα σχετικά με το εάν το αρχείο έχει παραβιαστεί μετά την υπογραφή (το λειτουργικό σύστημα θα το εντοπίσει και θα το απορρίψει, αλλά το ίδιο το πιστοποιητικό δεν "γνωρίζει" για το περιεχόμενο του αρχείου).
Για ένα πλευρικό APK, η ισχυρότερη διασφάλιση συνδυάζει τα δύο: το δακτυλικό αποτύπωμα πιστοποιητικού ταιριάζει με το γνωστό δακτυλικό αποτύπωμα του εκδότη και το SHA-256 του αρχείου ταιριάζει με την τιμή που δημοσίευσε ο εκδότης για αυτήν ακριβώς την έκδοση.
Πού να αποκτήσετε ένα αξιόπιστο δακτυλικό αποτύπωμα αναφοράς
Το πιο δύσκολο μέρος της επαλήθευσης είναι να γνωρίζετε τη σωστή τιμή για σύγκριση. Μερικές αξιόπιστες προσεγγίσεις, κατά γενική σειρά εμπιστοσύνης:
- Ο ιστότοπος ή η σελίδα έκδοσης του ίδιου του εκδότη. Πολλά έργα ανοιχτού κώδικα και προμηθευτές με επίγνωση της ασφάλειας δημοσιεύουν το δακτυλικό αποτύπωμα SHA-256 του πιστοποιητικού υπογραφής τους μαζί με τις λήψεις τους. Αυτός είναι ο κανόνας του χρυσού.
- Μια υπάρχουσα εγκατάσταση του Play Store. Εάν η εφαρμογή είναι ήδη εγκατεστημένη σε μια συσκευή που διαχειρίζεται το Play, το δακτυλικό αποτύπωμα πιστοποιητικού είναι εξ ορισμού το δακτυλικό αποτύπωμα του εκδότη. Συγκρίνετε το δακτυλικό αποτύπωμα του πλευρικού σας APK με αυτό. Εργαλεία όπως το Apk Analyzer (στο Android Studio) ή το apksigner verify --print-certs το διαβάζουν απευθείας από ένα εγκατεστημένο APK.
- Το πρώτο APK που εγκαταστήσατε ποτέ αυτής της εφαρμογής. Εάν χρησιμοποιείτε την εφαρμογή για λίγο και δεν είχατε ποτέ μήνυμα "αναντιστοιχία υπογραφής", μπορείτε να χρησιμοποιήσετε οποιοδήποτε από τα παλαιότερα αντίγραφά σας ως αναφορά. Οι επόμενες ενημερώσεις από τον ίδιο εκδότη πρέπει να χρησιμοποιούν το ίδιο κλειδί (ή να περιστρέφονται μέσω v3, οπότε η αλυσίδα εξακολουθεί να επαληθεύει).
- Ένα αρχειοθετημένο δημόσιο στιγμιότυπο. Το Αρχείο Διαδικτύου και παρόμοιες υπηρεσίες περιστασιακά διατηρούν παλιές σελίδες έκδοσης APK μαζί με τα δηλωμένα hashes τους. Χρήσιμο για πολύ παλιές εκδόσεις όπου έχει φύγει η αρχική σελίδα εκδότη.
Συνήθη λάθη επαλήθευσης
- Συγκρίνοντας το λάθος πεδίο. Το "MD5 του αρχείου APK" δεν είναι το ίδιο με το "MD5 του πιστοποιητικού". Χρησιμοποιήστε το ίδιο πεδίο για το αρχείο υποψηφίου και την αναφορά.
- Εμπιστοσύνη στα μεταδεδομένα του ίδιου του αρχείου. Ένα APK μπορεί να περιλαμβάνει οποιαδήποτε συμβολοσειρά έκδοσης, οποιαδήποτε ετικέτα πακέτου, οποιαδήποτε ετικέτα συντάκτη στο μανιφέστο του. Κανένα από αυτά δεν είναι κρυπτογραφικό. Το μπλοκ υπογραφής είναι το μόνο πράγμα που επαληθεύει πραγματικά το λειτουργικό σύστημα.
- Παράβλεψη επαλήθευσης επειδή το αρχείο στάλθηκε από φίλο. Ένας φίλος που λέει "αυτό είναι το επίσημο APK" δεν το έχει επαληθεύσει περισσότερο από εσάς. Επιμείνετε σε μια πηγή που δημοσιεύει ένα δακτυλικό αποτύπωμα που μπορείτε να ελέγξετε.
- Αντιμετώπιση ενός αντίστοιχου πεδίου ως επαρκούς. Αντιστοιχίστε τόσο το SHA-256 του αρχείου όσο και το δακτυλικό αποτύπωμα SHA-256 του πιστοποιητικού. η αντιστοίχιση του ενός αλλά όχι του άλλου είναι σημάδι ότι τα byte έχουν αλλοιωθεί ή ότι η πηγή υποδύεται τον εκδότη.
- Το Απενεργοποίηση του Play Protect για "ευκολία". Play Protect είναι ένας σαρωτής δεύτερης γνώμης, δεν υποκαθιστά την επαλήθευση υπογραφής, αλλά εντοπίζει πραγματικό κακόβουλο λογισμικό που δεν μπορεί να γίνει με την επαλήθευση υπογραφής, επειδή το Protect γνωρίζει για γνωστά κακά πακέτα βάσει περιεχομένου και όχι μέσω κλειδιού υπογραφής. Αφήστε το.
Είναι η εφαρμογή σας ασφαλής;
Μην μαντεύετε. Επαληθεύστε τα παραφορτωμένα APK σας σε σχέση με τα επίσημα πιστοποιητικά προγραμματιστή σε δευτερόλεπτα.
Ξεκινήστε την επαλήθευση APKΣυχνές Ερωτήσεις (FAQ)
Γιατί το Android με αποκλείει από την εγκατάσταση ενός τροποποιημένου APK;
Επειδή η υπογραφή του νέου APK δεν ταιριάζει με αυτή που έχει ήδη εγκατασταθεί. Αυτό εμποδίζει τους χάκερ να «αντικαταστήσουν» την πραγματική σας τραπεζική εφαρμογή με μια ψεύτικη.
Μπορώ να υπογράψω ξανά ένα APK αφού το τροποποιήσω;
Ναι, αλλά θα χρησιμοποιείτε διαφορετικό κλειδί. Η εφαρμογή θα συνεχίσει να εγκατασταθεί σε ένα "καθαρό" τηλέφωνο, αλλά δεν θα λαμβάνει πλέον ενημερώσεις από τον αρχικό προγραμματιστή.
Τι είναι το καρφίτσωμα πιστοποιητικού;
Είναι μια προηγμένη λειτουργία ασφαλείας όπου μια εφαρμογή ελέγχει ρητά για ένα συγκεκριμένο πιστοποιητικό πριν επικοινωνήσει με τους διακομιστές της, καθιστώντας τις παραποιημένες εφαρμογές άχρηστες ακόμα και αν εγκατασταθούν σωστά.
Κάντε την επαλήθευση υπογραφής μέρος κάθε πλευρικού φορτίου
Οι υπογραφές κάνουν πολλά από τα βαριά στη σύγχρονη ασφάλεια Android. Το να ξοδεύετε τα επιπλέον δευτερόλεπτα για να τρέξετε ένα αρχείο μέσω ενός Επαληθευτής APK είναι ένας φθηνός τρόπος για να κρατήσετε μια παραποιημένη εφαρμογή μακριά από τη συσκευή σας προτού εγκατασταθεί ποτέ.