目录
前言
以前的Android安全机制(1)介绍过基于UID和GID的Android进程隔离机制,使用的是Linux的权限访问控制,控制文件和设备访问。Android安全机制(2)Android Permission权限机制是对Android安全机制的一个重要补充,控制了应用对于系统接口或者对外接口的访问。
这次介绍一下Android的APK签名机制。APK签名是Android安全的第一道防线,Android系统在安装APK的时候,首先会检验APK的签名,如果发现签名文件不存在或者校验签名失败,则会拒绝安装。另外签名被破解或者伪造的话,就等于整个APK都可能被伪造。
基础知识
数字摘要
数字摘要(Digital Digest),又称消息摘要(Message Digest)或数字指纹(Finger Print)。一段信息,经过摘要算法得到一串值,就是摘要(dijest)。摘要算法有MD5、SHA1、SHA256、SHA512等
1、信息是任意长度,而摘要是定长。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出,SHA-1的变体可以产生192比特位和256比特位的消息摘要。一般认为,摘要的最终输出越长,该摘要算法就越安全。
2、算法把无限的映射成有限,因此理论上可能会有碰撞(两个不同的信息,算出的摘要相同)
3、摘要不同于加密算法,因为不存在解密,因为从摘要反推原信息很难(可以认为能加密但无法解密还原)
4、HmacMD5/HmacSHA1/HmacSHA256等算法在对应的HASH算法之上增加了密钥的支持以提高安全性
非对称加密算法(私钥、公钥)
加密算法重要的概念是公钥和私匙。
先有私钥,再用函数生成公钥。公钥包含了私钥的信息,但也掺杂了其他随机变量,因此不能反推。
私匙不要泄露,公钥要告诉和你通信的对方。公钥加密,只有对应私钥能解开;私钥加密,只有对应公钥能解开。
具体有两种情形:
(1)对方用你的公钥加密信息,你收到后用私钥解开。只有你有私钥,所以只有你能解开,换句话说,有私钥才能看到信息,很安全。
(2)你拿私钥加密信息,对方收到后用你的公钥解开。公钥是公开的,所以其他人也可以看到你的信息,不保密。私钥加密