Как работает проверка приложения/подписи Android?

Я хочу предварить этот вопрос двумя вещами, чтобы я мог сузить круг моего вопроса:

а) я уже занимался разработкой программного обеспечения, но никогда не занимался разработкой для Android

б) я знаком с PKI, шифрование, хеширование, цифровые подписи и прочее бла-бла-бла

. При этом у меня возникли проблемы с отслеживанием дополнительной информации о том, где и как Android проверяет создателей приложений. Я слышал много разной информации, поэтому пытаюсь обобщить, чтобы лучше понять рабочий процесс.

Я знаю, что каждый разработчик приложения получает свою собственную пару закрытый/открытый ключ, и они подписывают свои приложения, хешируя APK (в большинстве случаев с SHA-1, если я не ошибаюсь), и вот так. Вы загружаете его, и (я полагаю) открытый ключ попадает в META INF внутри APK. Это я понимаю.

Мой вопрос заключается в том, как это связано с тем, когда пользователь загружает само приложение. Я знаю, что телефон проверяет, действительно ли приложение подписано, и что в подписи также есть информация об авторе и т. д.Но я также читал, что приложения являются самоподписанными и что Google Play (или как там они сейчас называют Market) не реализует CA, и что нет аутентификации личности? Но мой вопрос: что же тогда мешает людям загружать приложение под именем другого разработчика (помимо краудсорсинга)?

Если телефон проверяет только действительные подписи, означает ли это, что единственный способ аутентификации выполняется при загрузке приложения? И если это так, то как маркет приложений это проверяет? Это обычное дело — использовать закрытый ключ в файле и проверить подпись? Или разработчик должен предоставить рынку свой закрытый ключ для аутентификации?

8
задан Fewmitz 7 June 2012 в 19:08
поделиться