Jak zweryfikować integralność aplikacji na iOS?

5

Jeśli piszę aplikację na iOS i jest ona akceptowana przez AppStore, to skąd mam wiedzieć, czy aplikacja jest tak naprawdę aplikacją, którą skompilowałem i czy nie została zastąpiona / zmieniona przez, powiedzmy, przechwytywanie / atak typu „Człowiek w środku”? Czy istnieje sposób na wykonanie sumy kontrolnej po fakcie lub z poziomu samej aplikacji?

xuinkrbin.
źródło
1
Twoja aplikacja i wszystkie zasoby są już podpisane, a iOS nie pozwoli jej działać bez weryfikacji podpisów. Dlaczego uważasz, że naprawdę potrzebujesz czegoś więcej?
Kevin,
1
Jeśli nie ufasz Apple, ćwiczenie to jest bezcelowe. Uruchamiają Twój program, jeśli chcą uzyskać z niego jakiekolwiek informacje, mogą to zrobić dość łatwo, bez dotykania Twojego pliku binarnego.
Kevin
1
@Kevin: Byłbym bardzo wdzięczny, gdybyś wypowiedział swoje komentarze w sposób bardziej dyplomatyczny i mniej podejrzany, ponieważ to Internet i wszystko inne, bez względu na to, czy masz rację, czy nie.
xuinkrbin.
4
Apple nie potrzebuje keyloggera do przechwytywania naciśnięć klawiszy, kontroluje klawiaturę, która mówi ci, co użytkownik pisze w pierwszej kolejności. Nawet jeśli napiszesz niestandardową klawiaturę, kod Apple wyświetla go na ekranie i informuje, kiedy i gdzie użytkownik pukał. Cała interakcja użytkownika w iDevice przechodzi przez kod Apple, kropka. Jeśli chcą przechwycić jakiekolwiek dane, mogą i nic nie można na to poradzić. Chcesz wysyłać lub odbierać dane z serwera? Apple kontroluje stos sieciowy. Chcesz czytać lub zapisywać na dysku? Apple kontroluje także operacje wejścia / wyjścia pliku.
Kevin,
1
Będziesz miał dostęp do swojej bazy kodów, gdy aplikacja będzie w sklepie. Aktualizacje można okresowo wypychać, a dzienniki można wykorzystywać do sprawdzania i dostarczania kluczowych wiadomości. nth
David DelMonte,

Odpowiedzi:

1

Okazuje się, że podczas tworzenia kopii zapasowej w iTunes plik * .ipa jest kopiowany z urządzenia z systemem iOS. Ten plik to po prostu * .zip z innym rozszerzeniem. Korzystanie z narzędzia takiego jak 7-zip pozwala na sprawdzenie zawartości po utworzeniu kopii zapasowej w iTunes. Sumę kontrolną można uruchomić dla poszczególnych składników w tym archiwum, sprawdzając brak manipulacji.

xuinkrbin.
źródło
Pozostaje jednak pytanie - jeśli nie ufasz Appleowi, że nie będzie manipulował twoją aplikacją, to dlaczego miałbyś chcieć za jej pośrednictwem rozpowszechniać? Ponadto mogą zmienić pobieranie w dowolnym momencie. Więc chociaż możesz opublikować w App Store i pobrać kopię, aby upewnić się, że nie została zmieniona, mogą zmienić kopię w App Store w następnym tygodniu i nie będziesz miał pojęcia.
tubedogg,
To bardzo dobra uwaga. Przynajmniej w ten sposób można jednak wiedzieć, przynajmniej w pewnym stopniu, czy takie manipulacje miały miejsce.
xuinkrbin.
Doceniam zaufanie, ale w tym przypadku sprawdzam stanowisko. Odpowiedź, która wyjaśnia nieco więcej szczegółów na temat podpisywania kodu, może być miła, ale oznacza to, że sumujesz (lub używasz skrótu, a nawet sprawdzasz bit pliku) bitów komponentów IPA w przeciwieństwie do całego pakietu, który wyraźnie podpisuje Apple w ramach procesu dystrybucji po przesłaniu aplikacji.
bmike
co powiesz na urządzenie z jailbreakiem, które używa zhakowanej wersji twojej aplikacji? czy możesz to kiedykolwiek z pewnością wykryć na serwerze? Zaatakowana aplikacja może zawierać fałszywą wersję wszelkich sprawdzonych przez nią mechanizmów sprawdzania integralności. Android ma mechanizm SafetyNet, który prawdopodobnie można również zhakować w zrootowanym urządzeniu, ale wciąż coś oferują. czy IOS oferuje coś podobnego?
Radu Simionescu,