文档介绍:Android 系统安全机制
演讲:王景学
Android 安全事件
智能终端
硬件
软件
信息
通信
安全范畴
具有后门特性的恶意电路
伪造签名,浏览器攻击
蜂窝、WiFi、蓝牙、互联网通信
隐私、敏感数据、数据库(加密算法)
Android框架
内核层
本地库和虚拟机运行环境
应用程序框架层
应用程序层
讨论主题
代码安全-场景
关键逻辑,算法,涉及电子交易的部分--需要
如果应用的竞争点在与创意,用户体验,服务等偏软的东西,而且免费,技术难度低-----不需要
设计到数据通信加密用到的密钥的—需要
有些部分没有办法加密,加密后系统无法识别
代码混淆:不改变代码逻辑的情况下,增加无用代码,或者重命名类名、方法名和变量名,使反编译后的源代码难于看懂,提高被破解的难度
使用jni技术,敏感部分代码用c/c++来编写
尽量减少客户端代码中的敏感内容,例如加密算法的密钥key
自定义类加载器:,在加载时使用自定义的类加载器解密的方式提高代码的安全性
代码安全-措施
java不同于C/C++,java是解释性语言,存在代码被反编译的隐患
应用层权限-接入权限
应用层权限旨在允许或限制应用程序访问受限的 API 和资源。默认情况下,Android 应用程序没有被授予权限,这通过不允许它们访问设备上的受保护 API 或资源,确保了它们的安全。权限在安装期间通过 manifest 文件由应用程序请求,由用户授予或不授予,运行是不再允许再申请权限,但可以检查、执行、授予和撤销权限
显式权限声明
安装时申请
用户授权
应用层权限-权限级别
对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用程序拥有platform级别的认证才能申请。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。
Normal权限:不会给用户带来实质性的伤害,如调整背光
Dangerous权限:可能会给用户带来潜在性的伤害,如读取电话簿、联网等,系统在安装应用时提示用户
signature权限:具有同一签名的应用才能访问。
signatureOrSystem权限:主要被设备商使用,不推荐使用。
应用层权限-权限类别
Android定义的权限列表
应用程序自定义的权限列表
数据库权限和文件权限
Activities
Broadcast Receiver
Content Providers
Services