签名和权限的作用
Android签名
中使用到的一些加密技术有:
公/私钥, SHA1(CERT.SF,MANIFEST.MF), RSA(CERT.RSA), 消息摘要,
移动平台中的主流签名作用:
- Android平台中是使用自签名
自签名,证书的签名者和证书拥有者
是同一人.
自签名的完整性认证
自签名是没有信任模式的
,因为自签名信息是自己的,对无法知道该信息是不是安全,我们只能对其的完整性进行认证.
限制安装和运行
下面是限制应用安装和运行的流程
应用安装时
校验是否含签名 –> 没有,禁止安装
–> 有,提取证书进行校验–> 证书是否有效可信任–> 不是禁止安装.基于证书的公钥对签名进行校验–> 签名是否正确 –> 不正确禁止安装.
应用运行时
校验是否包含签名 –> 没有,禁止运行
–> 有,提取证书进行校验–> 证书是否有效可信任–> 不是禁止运行.(这一步跟安装流程相似)基于证书的公钥对签名进行校验–> 签名是否正确 –> 不正确禁止运行.(这一步跟安装流程相似)
权限的作用(细粒度的特权管理)
- 权限是一个ID或者一个字符串
- 谦虚用来细分权利(类似Capability,分散权利)
- 通常一个权限与一个类操作绑定
- 权限首先需要申请(AndroidManifest或者代码动态申请)
- 但是申请后是否被批准有平台策略决定
如:用户需要读取SDCard的权限,这时Android平台会弹出访问SDCard的窗口,如果用户accept了,那这个权限就被申请.
权限的安全性保护(通过签名)
权限的完整性保护(防篡改)
如发短信的方式,不可能没发一条短信都弹dialog来申请权限,所以这时开发只要在Manifest 中添加sendSMS permission
就可以.(通过认证并获得签名后再加policy权限)权限的授权安全策略(防Escalate)
如普通应用申请Inject Event 权限(注入)
签名作用
完整性鉴别
自签名支持完整性鉴别
Android中使用的是自签名方式
,那就是无法对签名的信任进行认证,只能通过他的完整性鉴别.不做安装和运行时的限制(不做信任模式)
Android不会在安装的时候进行