综述

  • Android系统安全性分为客户端安全和云服务安全。
    • 客户端安全主要分为:核心平台和应用程序两大部分。其中,核心平台包括设备硬件、Android操作系统、Android应用程序运行环境。应用程序分为:预装应用程序和用户安装的应用程序。
    • 云服务安全主要指的是:
      • Android Market:提供用户从Andoird设备或Web上发现、安装和购买应用程序,还提供社区审查,应用程序授权验证和其他安全服务;
      • Android Updates: OTA(over the air)更新
      • Application Serivces: 支持Android应用程序使用云服务来实现类似备份应用程序数据和设置,还包括C2DM(cloud-to-device messaging)来实现消息推送。

Android平台安全架构

Android平台致力于重新定义传统操作系统的安全控制目标为:

  • 保护用户数据
  • 保护系统资源(包括网络)
  • 提供应用程序隔离

为了达到以上控制目标,Android提供以下关键安全特性:

  • 通过Linux内核加强操作系统级别的安全可靠性
  • 强制所有应用程序的沙盒机制
  • 安全加固的进程间通信
  • 应用程序签名
  • 应用程序定义和用户授权机制

Android系统架构图

系统和内核层安全

  • Linux内核所提供的安全特性
    • 基于用户的权限模型
    • 进程隔离
    • 安全IPC的可扩展机制
    • 按需移除非必需和潜在不安全的内核模块
  • 作为一个多用户的操作系统,用户资源隔离机制非常重要。Linux:
    • 防止用户A读取B的文件
    • 确保用户A无法耗尽用户B的内存
    • 确保用户A无法耗尽用户B的CPU资源
    • 确保用户A无法耗尽用户B的设备(例如:电话、GPS、蓝牙)
  • Android系统给每一个Android应用程序分配一个独立的UID并确保运行在一个独立进程中
  • 默认设置:应用程序相互之间无法互操作,应用程序对操作系统的访问受限
  • 原生代码的安全性和解释代码的安全性相同
  • Android 3.0及后续版本引入了系统层面的文件系统加密支持
  • Android 2.2及后续版本引入了设备管理API,支持系统层面的管理:管理员可以远程擦除数据!

内存管理安全加固

  • ASLR:地址空间随机化布局
  • 硬件NX:防止堆栈代码执行
  • ProPolice机制:防止栈溢出
  • safe_iop:减少整数溢出
  • 扩展了OpenBSD的dlmalloc预防double free()相关漏洞和chunk consolidation类堆破坏攻击
  • 内存分配时使用OpenBSD的calloc来防止整数溢出
  • Linux的mmap_min_addr()机制缓和null指针释放引起的权限提升漏洞危害
  • 设备口令可以用于保护用户数据不被root权限用户获取

Android应用程序安全

Android应用程序组成模块:

  • AndroidManifest.xml
  • Activities
  • Services
  • Broadcast Receiver

Andoird权限模型

访问受保护API:

  • 相机功能
  • 位置数据(GPS)
  • 蓝牙功能
  • 电话功能
  • SMS/MMS功能
  • 网络数据连接

用户无法对单个权限进行授权,只能接受或拒绝所有授权请求

进程间通信

  • 传统的UNIX进程间通信机制
  • 新IPC机制:
    • Binder
    • Services
    • Intents
    • ContentProviders

消费敏感API

  • 电话
  • SMS/MMS
  • 网络/数据通信
  • In-App付费
  • NFC访问

参考文献

返回顶部