Android安全机制简述

Android 系统组件及其作用
1.Zygote:Android应用的孵化器,一切Android程序由此进程fork而来。
2.Binder:Android的进程间通信机制,它是Android平台最核心的功能组件。
3.Package Manager Service:应用安装包管理服务,不仅负责包的安装和卸载,更重要的是负责Android应用信息的查询和控制,例如Android权限管理。
4.Activity Manager Service:管理Android框架层的进程,也包含了Android应用四大组件的逻辑实现。
5.Dalvik,art虚拟机:android 系统的虚拟机,google自己编写的一个虚拟机.可执行文件是dex文件。
Android安全机制    
1.进程沙箱隔离机制

Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持;应用程序及其运行的Dalvik虚拟机运行于独立的Linux进程空间,与UID不同的应用程序完全隔离。如下图:

在特殊情况下,进程间还可以存在相互信任关系。如源自同一开发者或同一开发机构的应用程序,通过Android提供的共享UID(Shared UserId)机制,使得具备信任关系的应用程序可以运行在同一进程空间

2.应用程序签名机制

应用程序包(.apk文件)必须被开发者数字签名;同一开发者可指定不同的应用程序共享UID,进而运行于同一进程空间,共享资源。

签名的过程:
   • 生成私有、公共密钥和公共密钥证书
   • 对应用进行签名
   • 优化应用程序

签名的作用:
   • 识别代码的作者。
   • 检测应用程序是否发生了改变。
   • 在应用程序之间建立信任,以便于应用程序可以安全地共享代码和数据。

在安装应用程序APK时,系统安装程序首先检查APK是否被签名,有签名才能安装。当应用程序升级时,需要检查新版应用的数字签名与已安装的应用程序的签名是否相同,否则,会被当做一个新的应用程序。Android开发者有可能把安装包命名为相同的名字,通过不同的签名可以把他们区分开来,也保证签名不同的包不被替换,同时防止恶意软件替换安装的应用。

3.权限声明机制
动态权限:
要想获得在对象上进行操作,就需要把权限和此对象的操作进行绑定。不同级别要求应用程序行使权限的认证方式也不一样,Normal级申请就可以使用,Dangerous级需要安装时由用户确认,Signature和Signatureorsystem级则必须是系统用户才可用。一般我们接触的比较多的就是Normal的声明和Dangerous的动态权限申请 
• 通过manifest文件中声明以下属性:
• 通过以下属性添加自定义权限:

• 系统组件权限,如activity组件:
4.访问控制机制
确保系统文件和用户数据不受非法访问。尽量控制系统和程序的访问权限。
Linux用户权限:

5.进程通信机制

基于共享内存的Binder实现,提供轻量级的远程进程调用(RPC)。通过接口定义语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界,污染进程空间。至于这一块具体的Bindler机制,自己也没有理解的太透彻,大家有兴趣可以去看其他文章

6.内存管理机制

基于标准 Linux的低内存管理机制(OOM),设计实现了独特的低内存清理(LMK)机制,将进程按重要性分级、分组,当内存不足时,自动清理最低级别进程所占用的内存空间;同时,引入不同于传统Linux共享内存机制的Android共享内存机制Ashmem,具备清理不再使用共享内存区域的能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值