Android开发环境对每一个需要Release的APK都会进行签名,在APK文件被安装时,Android系统会对APK的签名信息进行比对,以此来判断程序的完整性,最终确定APK是否可以正常安装使用,一定程度上达到安全的目的。
给一个APK文件的后缀名从.apk改为.zip或者.rar,然后利用解压工具进行解压,我们会在META-INF目录下看到四个文件:MANIFEST.MF、CERT.SF、INDEX.LIST、CERT.RSA
MANIFEST.MF(摘要文件):程序遍历APK包中的所有文件,对非文件夹非签名文件的文件,逐个用SHA1生成摘要信息,再用Base64进行编码。如果APK包的文件被修改,在APK安装校验时,被修改的文件与MANIFEST.MF的校验信息不同,程序将无法正常安装。
CERT.SF(对摘要文件的签名文件):对于生成的MANIFEST.MF文件利用SHA1-RSA算法对开发者的私钥进行签名。在安装时只有公共密钥才能对其解密。解密之后将其与未加密的摘要信息进行比对,如果相符则文件没有被修改。
INDEX.LIST APK索引文件目录
CERT.RSA 保存公钥、加密算法等信息。
在APK进行安装时,可以通过MANIFEST.MF文件开始的环环相扣来保证APK的安全性。但这些文件或者密钥如果被攻击者得到或者被攻击者通过某些技术手段攻破,则Android操作系统无法验证其安全性。
网友评论