chcę poprzedzić to pytanie z dwóch rzeczy, więc mogę zawęzić gdzie mój rzeczywisty pytanie brzmi:Jak działa weryfikacja aplikacji/podpisu Androida?
a) Zrobiłem oprogramowania dev wcześniej, chociaż nigdy do android
b) Jestem zaznajomiony z PKI i szyfrowaniem oraz hashowaniem i podpisami cyfrowymi i bla bla bla
Z tego powodu mam problem ze znalezieniem dodatkowych informacji o tym, gdzie i jak Android sprawdza twórców aplikacji. Słyszałem wiele różnych informacji, więc próbuję zsyntetyzować, aby uzyskać lepszy obraz przepływu pracy.
Wiem, że każdy programista aplikacji ma swoją własną parę kluczy prywatny/publiczny i podpisuje aplikacje, mieszając pakiet APK (z SHA-1 przez większość czasu, jeśli się nie mylę) i gotowe. Przesyłacie go i (jak sądzę) klucz publiczny trafia do META INF wewnątrz APK. Tyle rozumiem.
Moje pytanie dotyczy tego, w jaki sposób użytkownik pobiera samą aplikację. Wiem, że telefon sprawdza, czy aplikacja jest prawidłowo podpisana i czy podpis zawiera informacje o autorze i itp. Ale przeczytałem też, że aplikacje są podpisywane automatycznie, a Google Play (czy jak tam nazywają rynek) nie wdraża urzędu certyfikacji i nie ma uwierzytelniania tożsamości? Ale moje pytanie brzmi: co powstrzymuje ludzi przed przesyłaniem aplikacji pod inną nazwą programisty (crowdsourcing na bok)?
Jeśli telefon sprawdza tylko poprawne podpisy, czy oznacza to, że jedynym sposobem uwierzytelniania jest wykonanie aplikacji? A jeśli tak, to jak działa rynek aplikacji? Czy to normalne - użyj klucza prywatnego w pliku i zweryfikuj podpis? Czy deweloper musi dostarczyć rynkowi klucz prywatny do uwierzytelnienia?
Po podpisaniu pliku APK należy podać prywatne hasło. Aby ktoś mógł opublikować aplikację "jako ktoś inny", musiałby mieć dostęp do swoich plików kluczy i haseł. I dostęp do konta Google powiązanego z rynkiem. – FoamyGuy
@Tim: Myślę, że pyta: Co ma przeszkodzić, by ktoś inny stworzył własną parę kluczy i samopodpisujący się certyfikat, który również zawiera w sobie "Fewmitz". Czy jest to w jakiś sposób powiązane z kontem? –