Investigating the security of android security applications

Paul, Greig and Irvine, James (2016) Investigating the security of android security applications. In: 9th CMI Conference on Smart Living, Cyber Security and Privacy, 2016-11-24 - 2016-11-25, Aalborg University, Copenhagen.

[thumbnail of Paul-Irvine-CMI2016-Investigating-the-security-of-android-security-applications]
Text. Filename: Paul_Irvine_CMI2016_Investigating_the_security_of_android_security_applications.pdf
Accepted Author Manuscript

Download (573kB)| Preview


Encryption is commonly used to provide confidentiality of sensitive or personal information when held on smartphones. While many Android devices feature inbuilt full-disk encryption as a precaution against theft of a device, this is not available on all devices, and doesn't provide security against a device which is turned on and in use. For this reason, a wide variety of applications are available within the Google Play Store, offering to encrypt user data. Modern, strong encryption offers strong assurances of confidentiality when used correctly, although the fundamental cryptographic primitives are complex, with many opportunities for mistakes to be made. The security of a number of implementations of Android-based encryption applications is investigated. Highly popular applications, including those by Google-endorsed "Top Developers", are considered. A number of major weaknesses in the implementation of encryption within these applications is presented. This highlights the importance of both well-audited open-source cryptographic implementations, as well as the underlying cryptographic algorithms themselves, given the vulnerabilities identified in these applications. In many cases, there was no encryption in use by the application, and file headers were undergoing trivial static obfuscation, such that files would appear corrupted. In other cases, encryption algorithms were used, but with significant implementational errors. In these cases, plaintext recovery was still possible, due to the use of static keys for every installation of the app, and the re-use of cipher initialisation vectors.