Dostępny jest schemat podpisów APK w wersji 3 z obsługą rotacji kluczy

W projekcie Android Open Source wykryto schemat podpisu APK v3, który wydaje się zapewniać obsługę rotacji kluczy.

Jeśli jesteś programistą lub w jakikolwiek sposób znasz się na dekompilacji, modyfikowaniu i/lub instalowaniu zmodyfikowanych plików APK, prawdopodobnie znasz sygnatury aplikacji. Mówiąc prościej, Android wymaga, aby aplikacja musieć być podpisane tym samym kluczem, aby system mógł dokonać aktualizacji danej aplikacji. Android weryfikuje to, sprawdzając podpis APK.

Podpisy APK to bardzo podstawowy środek bezpieczeństwa w Androidzie, o którym mówiliśmy wcześniej. Zasadniczo wszystkie podpisy są unikalne dla określonego programisty lub grupy programistów, więc jeśli podpis/certyfikat w pliku APK jest nieważny lub nie pasuje do oryginalnej aplikacji, instalacja zakończy się niepowodzeniem, uniemożliwiając w ten sposób instalację zmienionych lub fałszywych plików APK na Twoim Androidzie urządzenie. Klucze podpisu muszą być również bezpiecznie przechowywane przez programistę, ponieważ są niezbędne do weryfikacji i ostatecznego wydania aktualizacji aplikacji. Na szczęście schemat podpisu do podpisywania plików APK otrzymuje kolejną wersję – v3 – która wydaje się dodawać wygodną funkcję przy jednoczesnym zachowaniu wysokich standardów bezpieczeństwa.


Schemat podpisu APK v1 i v2

Nie minęło dużo czasu od aktualnej wersji schematu podpisów APK, v2, został udostępniony programistom. Przecież ledwo został nam przedstawiony wraz z premierą Androida 7.0 Nougat pod koniec 2016 roku. Gorąco zachęcano do korzystania ze schematu podpisu v2 w aplikacjach na Androida 7.0 lub nowszego, ponieważ wprowadzono szereg niezbędnych poprawek i ulepszenia bezpieczeństwa: podczas gdy wersja 1 podpisała jedynie plik JAR, wersja 2 podejmuje dodatkowe kroki w celu ochrony integralności całości plik. Schematy podpisów nie są jednak kompatybilne wstecz, a Android Marshmallow i starsze wersje wymagają podpisów w wersji 1 dla aplikacji.

Proces sprawdzania poprawności pakietu APK. Źródło: Google.

O ile nie obsługujesz użytkowników w wersji Nougat lub wyższej, idealnym scenariuszem byłoby użycie obu schematów podpisów obok siebie, podpisując najpierw wersję 1, a następnie rezygnując z wersji 2. W ten sposób Nougat i nowsze rozpoznają sygnaturę v2, podczas gdy Marshmallow i starsze rozpoznają sygnaturę v1.

Jednakże używanie wyłącznie wersji 1 jest zdecydowanie odradzane ze względu na szereg luk w zabezpieczeniach i innych problemów związanych z bezpieczeństwem, z których najbardziej zauważalną jest luka Janus, co pozwala atakującym bezpośrednio atakować i modyfikować pliki APK bez wpływu na podpisy. Popularne aplikacje z rzadkimi aktualizacjami, takie jak Instagram czy Snapchat, są podpisane tylko podpisami w wersji 1, co oznacza, że ​​są podatne na tego typu problemy.

Sprawdzanie wersji podpisujących APK popularnych aplikacji społecznościowych/płatniczych.

Schemat podpisu APK v3

Najważniejszą cechą v3, która ma być rewizją v2, będzie obsługa rotacji klawiszy. The schemat podpisu v3 wprowadza linię podpisu APK, która według jedno z zatwierdzeń, „zawiera historię podpisywania certyfikatów u każdego przodka potwierdzających ważność jego potomka. Każdy dodatkowy potomek reprezentuje nową tożsamość, której można użyć do podpisania pliku APK. W ten sposób rodowód zawiera dowód rotacji, dzięki któremu zawierający go plik APK może wykazać innym stronom zaufania, można mu zaufać w zakresie obecnego certyfikatu podpisywania, tak jakby był podpisany przez jednego ze starszych te.”

Rotacja kluczy to świetna funkcja dla programistów z kilku powodów. Na początek może to być przydatne dla programistów w zespołach pracujących nad pojedynczą aplikacją, dzięki czemu programiści nie muszą udostępniać zespołowi swoich kluczy do podpisywania. Ponieważ aplikacja wymaga tego samego dokładnego podpisu do aktualizacji, obecnie wszystkie aplikacje muszą być kompilowane przez tego samego programistę lub grupę programiści pracujący z tym samym kluczem, zmniejszając bezpieczeństwo (jest większe ryzyko kradzieży klucza) i spowalniając rozwój.

Co więcej, może być również przydatne w przypadku kradzieży/zagubienia klucza podpisującego programisty, który zwykle oznaczałoby, że aplikację trzeba by ponownie przesłać do Sklepu Play w innym pakiecie nazwa. Nie jest to wcale rzadki przypadek, ponieważ dawno temu nawet firma Google najwyraźniej zgubiła klucz do podpisywania aplikacji Google Authenticator, co doprowadziło do jej ponownej publikacji pod inną nazwą pakietu. Od tego czasu Google udostępnia narzędzia umożliwiające bezpieczne przechowywanie kluczy do podpisu w chmurze Podpisywanie aplikacji Google Play, ale rotacja klawiszy umożliwiłaby kontynuację aktualizacji aplikacji w przypadku hipotetycznego niepowodzenia.

Kiedy jest wdrażany?

Chociaż możesz chcieć go wypróbować dla dodatkowej wygody, schemat podpisu v3 został zauważony unoszący się w AOSP Witryna Gerrit Code Review, a same zatwierdzenia nie zostały obecnie połączone z główną gałęzią, więc nie jest jeszcze gotowa już. Powinniśmy spodziewać się, że schemat podpisu v3 trafi w ręce programistów wraz z nadchodzącą wersją Androida P, jeśli poprzednia wersja v2 z Androidem Nougat powie nam cokolwiek.

Powinniśmy również zauważyć, że rotacja klawiszy najprawdopodobniej nie jest jedyną różnicą w stosunku do wersji 2. Prace nad schematem podpisów APK v3 są wciąż w toku, więc faktyczne ulepszenia schematu podpisów v3 zobaczymy, gdy w przyszłości pojawi się pełna dokumentacja dla niego.