Android's trust-on-first-use application signing model associates developers with a fixed code signing certificate, but lacks a mechanism to enable transparent key updates or certificate renewals. The model allows application updates to be recognized as authorized by a party with access to the original signing key. However, changing keys or certificates requires that end users manually uninstall/reinstall apps, losing all non-backed up user data. In this paper, we show that with appropriate OS support, developers can securely and without user intervention transfer signing authority to a new signing key. Our proposal, Baton, modifies Android's app installation framework enabling key agility while preserving backwards compatibility with current apps and current Android releases. Baton is designed to work consistently with current UID sharing and signature permission requirements. We discuss technical details of the Android-specific implementation, as well as the applicability of the Baton protocol to other decentralized environments.

Additional Metadata
Keywords android, application signing, mobile operating systems
Persistent URL dx.doi.org/10.1145/2627393.2627397
Conference 7th ACM Conference on Security and Privacy in Wireless and Mobile Networks, WiSec 2014
Citation
Barrera, D. (David), McCarney, D. (Daniel), Clark, J. (Jeremy), & Van Oorschot, P. (2014). Baton: Certificate agility for android's decentralized signing infrastructure. Presented at the 7th ACM Conference on Security and Privacy in Wireless and Mobile Networks, WiSec 2014. doi:10.1145/2627393.2627397