Android安全机制讲解
来源:互联网 发布:单片机复位电路原理 编辑:程序博客网 时间:2024/06/07 06:56
前言
Android将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求在开放的同时,也恰当保护用户的数据、应用程序和设备的安全。
android安全机制
Android安全模型主要提供以下几种安全机制:
进程沙箱隔离机制
进程沙箱隔离机制,使得Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持。应用程序及其运行的Dalvik虚拟机运行在独立的Linux进程空间,与其它应用程序完全隔离
应用程序签名机制
我们在apk上线时,必须被开发者进行数字签名的,以便标识应用程序作者和在应用程序之间的信任关系。在安装应用程序APK时,系统安装程序首先检查APK是否被签名,有签名才能安装。当应用程序升级时,需要检查新版应用的数字签名与已安装的应用程序的签名是否相同,否则,会被当做一个新的应用程序。Android开发者有可能把安装包命名为相同的名字,通过不同的签名可以把他们区分开来,也保证签名不同的包不被替换,同时防止恶意软件替换安装的应用。当然,有些公司还有自己专门加密框架。我上一家是在游戏公司,公司内部就有一个专门的加密框架,会对所以的资源进行逐一加密。
权限声明机制
权限声明,是我们每天都在接触的。当需要在对象上操作时,把权限和对象进行绑定
访问控制机制
确保系统文件和用户数据不受非法访问。
进程通信机制
基于共享内存的Binder实现,提供轻量级的远程进程调用(RPC)。通过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界。
Linux进程视角
应用程序视角
内存管理机制
基于Linux的低内存管理机制,设计实现了独特的LMK,将进程重要性分级、分组,当内存不足时,自动清理级别进程所占用的内存空间。同时,引入的Ashmem内存机制,使得Android具备清理不再使用共享内存区域的能力。
Android面临的安全问题
病毒
Android手机木马有的独立存在,有的则伪装成图片文件的方式附在正版App上,隐蔽性极强,部分病毒还会出现变种,并且一代比一代更强大
数据在传输过程遭劫持
传输过程最常见的劫持就是中间人攻击。很多安全要求较高的应用程序要求所有的业务请求都是通过https,但是https的中间人攻击也逐渐多了起来,而且我们发现在实际使用中,证书交换和验证在一些山寨手机或者非主流ROM上面存在一些问题,让https的使用碰到阻碍。
Webview漏洞(js注入漏洞、WebView钓鱼漏洞、WebView跨域漏洞)
APP重打包
关键信息泄露
进程被劫持
这个几乎是目前针对性最强的一种攻击方式了,它可以全面入侵我们的监听器,一般通过进程注入或者调试进程的方式来hook进程,改变程序运行的逻辑和顺序,获取程序运行的内存信息,也就是用户所有的行为都被监控起来,这也是盗取帐号密码最常用的一种方式。一般来说,hook需要获取root权限或者跟被hook进程相同的权限,因此如果你的手机没有被root,而且是正版apk的话,被注入还是很困难的。
现实开发中,面临的问题不仅仅只有这些,我们可以从以下几方面入手:
安全组件的安全
Android 包括四大组件:Activitie、Service、Content Provider、Broadband Receiver,它们每一个都可以通过外面隐式的Intent方式打开,所以这些组件只要不是对外公开的必须在manifest里面注明exported为false,禁止其他程序访问我们的组件,对于要和外部交互的组件,应当添加
一下访问权限的控制,还需要要对传递的数据进行安全的校验。应用权限控制
应用程序签名
应用加固(包括病毒扫描、防注入、防调试、防篡改四个模块)
可以利用360、百度应用加固等静态代码分析(可以使用lint查找分析待优化的代码)
防火墙(必要时为Android设备安装防火墙,以防止远程网络攻击。)
数据存储加密
对hook不清楚的,我可以把视频教程分享给他(百度网盘),欢迎留言!
- Android安全机制讲解
- Android安全机制讲解
- android 安全机制
- Android 安全机制
- Android 安全机制
- Android 安全机制
- (转) Android 安全机制
- Android 安全机制
- Android 安全机制概述
- Android 安全机制概述
- Android 安全机制
- Android 安全访问机制
- Android 安全机制
- Android 安全机制
- Android安全机制详解
- Android 安全机制
- Android 安全机制
- Android 安全机制概述
- dp专题 第八题 最长公共子上升序列
- Scala之特质Trait
- Jedis分片连接池(分布式)
- Sprite Animations精灵动画
- vim的简单配置
- Android安全机制讲解
- C#继承浅谈
- SynchronizedPool对象池使用
- tcpdump -w xxxxx.pcap 提示 Permission denied
- Java中String、StringBuilder以及StringBuffer的区别
- JAVA内存模型
- 第六周作业2(LeetCode 12)
- 为何大量网站不能抓取?爬虫突破封禁的6种常见方法
- python函数