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不清楚的,我可以把视频教程分享给他(百度网盘),欢迎留言!

0 0
原创粉丝点击