Weryfikacja podpisów APK: jak upewnić się, że Twoja aplikacja jest bezpieczna
Ładowanie aplikacji na Androida zapewnia swobodę i elastyczność, ale wiąże się z poważnym ryzykiem: zmanipulowane aplikacje. Złośliwi przestępcy często modyfikują popularne aplikacje tak, aby zawierały oprogramowanie szpiegowskie lub reklamowe, a następnie rozpowszechniają je w nieoficjalnych witrynach. Jak możesz mieć pewność, że właśnie pobrany plik APK jest dokładnie tym samym, który programista przesłał do Google Play?
Odpowiedź sprowadza się do Podpisy cyfrowe APK. Poniżej omówimy, jak faktycznie działa podpisywanie aplikacji, i omówimy proces korzystania z naszego Weryfikator pakietu APK online w celu sprawdzenia skrótu i certyfikatu pliku APK, zanim zdecydujesz się mu zaufać.
Wersja 60-sekundowa:
Android podpisuje każdy plik APK kluczem wydawcy. Telefon odmawia „aktualizacji”, której sygnatura nie pasuje do istniejącej instalacji; jest to główna obrona systemu operacyjnego przed podszywaniem się pod inne osoby. Aby zweryfikować plik APK pobrany z boku, oblicz jego skrót SHA-256 i odcisk palca certyfikatu podpisu, a następnie porównaj oba z wartościami, którym ufasz (istniejąca instalacja ze Sklepu Play, opublikowany odcisk palca programisty lub znana, dobra wcześniejsza kopia). Dopasowanie oznacza, że plik jest identyczny pod względem bajtów i podpisany przez tego samego wydawcę; niedopasowanie oznacza nie instaluj.
Co to jest podpis APK?
Podpis cyfrowy jest kryptograficznym dowodem tożsamości. Kiedy programista kończy pracę nad aplikacją, „podpisuje” ją przy użyciu klucza prywatnego (magazynu kluczy). Następnie Android używa odpowiedniego klucza publicznego osadzonego w pliku APK, aby zapewnić:
- Uczciwość: Plik nie był zmieniany od czasu podpisania.
- Autentyczność: Deweloper jest tym, za kogo się podaje.
- Aktualizacje: Tylko pliki APK podpisane tym samym kluczem mogą aktualizować istniejącą aplikację w telefonie.
Ewolucja podpisu: V1, V2, V3 i V4
Przez lata Google stale ulepszało bezpieczeństwo plików APK:
- V1 (podpisywanie słoików): Podpisuje poszczególne wpisy w ZIP. Powolny i podatny na niektóre ataki.
- V2 (schemat podpisu APK): Podpisuje cały blok pliku. Znacznie szybsza weryfikacja i bezpieczniejsze. (Android 7.0+)
- V3 (obrót klawisza): Umożliwia programistom zmianę klucza podpisu przy jednoczesnym utrzymaniu aktualizacji aplikacji. (Android 9.0+)
- V4 (strumieniowanie): Zoptymalizowany pod kątem instalacji przyrostowych poprzez ADB. (Android 11+)
Jak zweryfikować podpisy APK online
Nasz Narzędzie weryfikatora APK nie tylko oblicza skróty; dokonuje pełnego audytu kryptograficznego łańcucha certyfikatów. Oto jak z niego korzystać:
Kroki weryfikacji:
- Przejdź do strony Weryfikator APK.
- Wybierz plik APK lub XAPK.
- Nasze narzędzie analizuje katalog META-INF/ i wyodrębnia dane certyfikatu (.RSA, .DSA lub .EC).
- Poczekaj na zakończenie analizy (zajmuje to tylko sekundy).
- Przejrzyj Informacje o certyfikacie: nazwa programisty, organizacja i kraj pochodzenia.
- Sprawdź Hasze: Porównaj SHA-256 wyświetlany na naszej stronie z wartością opublikowaną przez wydawcę na jego własnej oficjalnej stronie, stronie wydania projektu lub manifeście podpisu.
Ostrzeżenie dotyczące bezpieczeństwa
Jeśli weryfikator pokazuje „Certyfikat debugowania” lub nieznaną jednostkę „z podpisem własnym” dla głównej aplikacji, takiej jak Facebook lub WhatsApp, NIE INSTALUJ GO. Prawie na pewno jest to zagrożone.
Zrozumienie sum kontrolnych (MD5, SHA-1, SHA-256)
Sumy kontrolne to ciągi o stałej długości reprezentujące cały plik. Jeśli zmienisz pojedynczy piksel w ikonie aplikacji, skrót SHA-256 ulegnie całkowitej zmianie.
| Typ skrótu | Poziom bezpieczeństwa | Notatki |
|---|---|---|
| MD5 | Dziedzictwo | Podatny na kolizje. Nie dla bezpieczeństwa. |
| SHA-1 | Umiarkowany | Nadal powszechnie używany do szybkiego wyszukiwania. |
| SHA-256 | Doskonały | Nowoczesny standard weryfikacji aplikacji. |
Co właściwie mówi certyfikat podpisu
Kiedy weryfikator zwraca certyfikat, częściami istotnymi dla bezpieczeństwa sideloadingu nie są kolorowe fragmenty metadanych X.509, ale niewielka garść pól. W praktyce:
- Odcisk palca SHA-256 certyfikatu. Jest to najważniejsza wartość: skrót składający się z 64 znaków szesnastkowych, który jednoznacznie identyfikuje klucz podpisu. Dwa pliki APK z tym samym odciskiem palca SHA-256 zostały podpisane tym samym kluczem prywatnym. To właśnie oznacza „ciągłość podpisu” w logice aktualizacji systemu operacyjnego.
- Nazwa wyróżniająca podmiotu. Często coś w rodzaju CN=Some App, O=Example Inc., C=US. Przydatny jako wskazówka, a nie jako dowód tożsamości, ponieważ osoba atakująca może umieścić dowolny ciąg znaków w nazwie wyróżniającej własnego certyfikatu z podpisem własnym. Zawsze sprawdzaj odcisk palca, a nie imię i nazwisko.
- Okres ważności. Większość legalnych kluczy wydawniczych jest generowanych z okresem ważności ~25 lat (zalecenie historyczne to 10000 dni). Certyfikat, który wygasa w przyszłym miesiącu lub taki, którego ważność pokrywa się już z przeszłością, jest czerwoną flagą.
- Algorytm podpisu. Nowoczesne aplikacje korzystają z SHA256withRSA lub SHA256withECDSA. MD5 jest uszkodzony; SHA1withRSA jest przestarzały. Plik APK podpisany tylko za pomocą v1/SHA-1 będzie podejrzany w 2026 roku.
Hash a podpis: różnica Większość tutoriali jest pomijana
Ludzie często mylą „hasz” i „podpis”. Służą one bardzo różnym celom, a bezpieczna weryfikacja wymaga zarówno:
- haszysz (SHA-256 całego pliku APK) informuje, czy bajty pliku są identyczne z kopią referencyjną. Jeśli Twój skrót jest zgodny z haszem opublikowanym przez wydawcę, plik nie został zmieniony od czasu obliczenia tego skrótu. Samo sprawdzenie skrótu nie mówi nic o tym, kto stworzył bajty.
- podpis dowodzi, kto utworzył bajty, a konkretnie, że posiadacz klucza prywatnego połączonego z certyfikatem podpisującym wyprodukował ten plik. Samo sprawdzenie podpisu nie mówi nic o tym, czy plik został naruszony po podpisaniu (system operacyjny to wykryje i odrzuci, ale sam certyfikat „nie wie” o zawartości pliku).
W przypadku pliku APK ładowanego z boku najsilniejsza pewność łączy oba: odcisk palca certyfikatu odpowiada znanemu odciskowi palca wydawcy I, SHA-256 pliku odpowiada wartości opublikowanej przez wydawcę dla tej dokładnej kompilacji.
Gdzie uzyskać godny zaufania odcisk palca referencyjnego
Najtrudniejszą częścią weryfikacji jest znajomość właściwej wartości do porównania. Kilka niezawodnych podejść, w przybliżeniu w kolejności pewności:
- Własna witryna internetowa lub strona wydania wydawcy. Wiele projektów open source i dostawców dbających o bezpieczeństwo publikuje odcisk palca SHA-256 swojego certyfikatu podpisującego wraz z pobieranymi plikami. To jest złoty standard.
- Istniejąca instalacja Sklepu Play. Jeśli aplikacja jest już zainstalowana na urządzeniu zarządzanym przez Play, jej odcisk palca certyfikatu jest z definicji odciskiem palca wydawcy. Porównaj z tym odcisk palca pobranego pliku APK. Narzędzia takie jak Apk Analyzer (w Android Studio) lub apksigner verify --print-certs odczytują je bezpośrednio z zainstalowanego pliku APK.
- Pierwszy pakiet APK tej aplikacji, jaki kiedykolwiek zainstalowałeś. Jeśli korzystasz z aplikacji już od jakiegoś czasu i nigdy nie wyświetlił się monit o „niezgodność podpisu”, możesz użyć dowolnej ze swoich starszych kopii jako punktu odniesienia. Kolejne aktualizacje od tego samego wydawcy muszą używać tego samego klucza (lub zmieniać się poprzez wersję 3, w takim przypadku łańcuch nadal weryfikuje).
- Zarchiwizowana migawka publiczna. Internet Archive i podobne usługi okazjonalnie przechowują strony starych wydań plików APK wraz z zadeklarowanymi skrótami. Przydatne w przypadku bardzo starych wersji, w których nie ma oryginalnej strony wydawcy.
Typowe błędy weryfikacyjne
- Porównywanie niewłaściwego pola. „MD5 pliku APK” to nie to samo, co „MD5 certyfikatu”. Użyj tego samego pola dla akt kandydata i referencji.
- Ufanie własnym metadanym pliku. Plik APK może zawierać w swoim manifeście dowolny ciąg wersji, dowolną etykietę pakietu i dowolny znacznik autora. Żadne z nich nie jest kryptograficzne. Blok podpisu to jedyna rzecz, którą system operacyjny faktycznie sprawdza.
- Pomijam weryfikację, ponieważ plik został wysłany przez znajomego. Znajomy, który twierdzi, że „to jest oficjalny plik APK”, nie zweryfikował tego bardziej niż Ty. Nalegaj, aby źródło publikowało odcisk palca, który możesz sprawdzić.
- Traktowanie jednego pasującego pola jako wystarczającego. Dopasowuje zarówno identyfikator SHA-256 pliku, jak i odcisk palca SHA-256 certyfikatu; dopasowanie jednego, ale nie drugiego, oznacza, że bajty zostały zmienione lub źródło podszywa się pod wydawcę.
- Wyłączanie Play Protect dla „wygody”. Play Protect to skaner drugiej opinii, który nie zastępuje weryfikacji podpisu, ale wychwytuje rzeczywiste złośliwe oprogramowanie, którego weryfikacja podpisu nie jest w stanie zweryfikować, ponieważ Protect wie o znanych złych pakietach na podstawie zawartości, a nie klucza podpisującego. Zostaw to.
Czy Twoja aplikacja jest bezpieczna?
Nie zgaduj. W ciągu kilku sekund zweryfikuj pobrane pliki APK z oficjalnymi certyfikatami programistów.
Rozpocznij weryfikację APKCzęsto zadawane pytania (FAQ)
Dlaczego Android blokuje mi instalację zmodyfikowanego pakietu APK?
Ponieważ podpis nowego pliku APK nie pasuje do już zainstalowanego. Uniemożliwia to hakerom „nadpisanie” Twojej prawdziwej aplikacji bankowej fałszywą.
Czy mogę ponownie podpisać plik APK po jego zmodyfikowaniu?
Tak, ale będziesz używać inny klucz. Aplikacja nadal będzie instalowana na „czystym” telefonie, ale nie będzie już otrzymywać aktualizacji od pierwotnego programisty.
Co to jest przypinanie certyfikatu?
Jest to zaawansowana funkcja zabezpieczeń, w ramach której aplikacja jawnie sprawdza konkretny certyfikat przed komunikacją z serwerami, przez co zmodyfikowane aplikacje stają się bezużyteczne, nawet jeśli zostaną poprawnie zainstalowane.
Spraw, aby weryfikacja podpisu była częścią każdego sideloadu
Podpisy odgrywają dużą rolę w nowoczesnych zabezpieczeniach Androida. Poświęcenie kilku dodatkowych sekund na uruchomienie pliku przez Weryfikator APK to tani sposób na zatrzymanie zmodyfikowanej aplikacji poza urządzeniem, zanim zostanie ona zainstalowana.