Android安全体系结构简介

Android操作系统是一个开放式的操作系统,保护这样一个开放平台,需要强有力的安全体系结构。Android系统拥有多层次的安全机制,可以灵活地满足用户各层次的安全需求。 

 

1.1 系统体系结构

Android系统的体系结构如图2‑1所示。

Android安全体系结构简介

图 2‑1 Android系统结构图

系统共分为4层,分别是应用层、应用框架层、系统运行库层和Linux内核层。

应用层

Android系统应用层的软件主要由Java语言编写而成,运行在虚拟机中(后面介绍),分为系统软件和应用软件(关于应用程序的基本组件、结构等内容在培训的第二阶段进行介绍)。

应用框架层

这一层是Android的系统服务程序和应用开发的API框架。系统服务程序提供了一系列基本服务,API框架负责给应用开发者提供基本的类库(编程序时通常需要import进去)。

主要的系统服务程序有:

1. 资源管理器(Resource Manager)。提供非代码资源的访问,如本地字符串、图形和布局文件等。

2. 通知管理器(Notification):应用可以在状态栏中显示自定义的提示信息。

3. 活动管理器(Activity Manager):用来管理应用程序的声明周期。

4. 服务管理器(Service Manager):管理系统服务。

5. 窗口管理器(Window Manager):管理所有的窗口程序。

6. 包管理器(Package Manager):管理所有的应用软件包。

主要的API框架(Java类库)有:

1. android.app:提供高层的程序模型和基本的运行环境。

2. android.content:包含对各种设备上的数据进行访问和发布。

3. android.database:通过内容提供者浏览和操作数据库。

4. android.graphics:底层的图形库,包含画布、颜色过滤、点、矩形,可以将它们直接绘制到屏幕上。

5. android.location:定位和相关服务的类。

6. android.media:提供一些类管理多种音频、视频的媒体接口。

7. android.net:提供帮助网络访问的类,超过通常的java.net.*接口。

8. android.os:提供了系统服务、消息传输和IPC机制。

9. android.opengl:提供OpenGL工具。

10. android.provider:提供访问Android内容提供者的类。

11. android.telephony:提供与拨打电话相关的API。

12. android.view:提供基础的用户界面接口框架。

13. android.util:涉及工具性的方法,例如时间日期的操作。

14. android.webkit:默认浏览器的操作接口。

15. android.widget:包含各种UI元素(大部分是可见的)在应用程序的布局中使用。

系统运行库层

 当使用Android应用框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件。主要有以下几种库:

1. Bionic系统C库:C语言标准库,系统最底层的库。

2. 多媒体库:Android系统多媒体库,基于PacketVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制。

3. SGL:2D图形引擎库。

4. SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。

5. OpenGL:支持3D效果。

6. SQLite:关系数据库。

7. Webkit:Web浏览器引擎。

8. FreeType:位图(bitmap)及矢量(vector)。

Android系统中所有应用程序都运行在Dalvik虚拟机中。其可执行文件的格式为dex。Dalvik虚拟机是Android相对于Java的JVM的Android应用程序独有的虚拟机。其指令执行效率比JVM要高,不需要很高的CPU主频,同时,也不需要占用很大的内存空间。有以下几个主要特点:

1. 使用专有的dex文件格式,将所有的class文件内容整合到一个文件中,可以减少整体的文件大小,提高类的查找速度。

2. 基于寄存器。相对于基于堆栈的JVM ,Dalvik在平台的通用性上略差,但在代码的执行效率上却更胜一筹。

3. 独立的进程空间。每一个应用程序在DalvikVM的层面都是一个虚拟机实例,每个虚拟机实例都是一个独立的进程空间。所有进程间交互的操作都会通过Linux驱动来完成。

Linux内核层

Android完全继承了Linux的内核,但是增加了很多适应于移动设备的驱动。具体如下。

1. 显示驱动:基于Linux的帧缓冲驱动。

2. 键盘驱动:作为输入设备的键盘驱动。

3. Flash内存驱动:基于MTD的Flash驱动程序。

4. 照相机驱动:常用的基于Linux的v412驱动。

5. 音频驱动:常用的基于ALSA的高级Linux声音体系驱动。

6. 蓝牙驱动:基于IEEE802.15.1标准的无线传输驱动。

7. Binder IPC驱动:Android的一个特殊的驱动程序,不对应任何的硬件设备,提供进程间通信的功能。

8. 电源驱动:管理电池。

 

1.2 系统安全机制

在安全机制方面,Android系统既继承了Linux内核的安全机制,又对系统框架的各个层次都进行了安全增强,逐渐形成了Android系统自己的一套安全体系。Android系统的安全特性可分为以下两个方面:一是继承自Linux的安全机制,二是Android系统框架特有的安全机制。

继承自Linux的安全机制分为以下两个方面。

一、用户控制。Android系统的每一个应用软件在安装时都会被分配一个唯一的UID(User ID,用户ID)[ ]。因此应用软件只能运行在自己的进程中,应用软件之间也不能互相访问。这样相当于每个应用软件都运行在一个独立的“沙箱”中,程序的私有数据会被完全的保护起来。

二、文件访问控制。Android系统的文件访问控制来源于Linux。每一个文件的访问权限都由其拥有者ID(uid)、所属组ID(gid)、及读写执行(rwx)三个向量组控制。文件在创建时将被赋予不同的应用软件 ID,从而不能被其它应用软件访问,除非它们拥有相同的组ID 或文件被设置为全局可读写。Android在此基础上,将系统文件目录设置为不可读写,如/system、/system/xbin、/system/modules等,这样即使拥有了root权限也无法向其中写入文件。

Android特有的安全机制分为以下三个方面。

一、权限控制机制。Android系统自有安全机制的核心是权限控制机制。系统通过权限来制约应用软件访问系统资源的能力。权限的表现形式是一段字符串[ ],如:SEND_SMS表示发送短信,INTERNET表示访问网络等。由此可见,每个权限都与特定的操作以及特定系统资源绑定在一起,应用软件只有在权限申请获得许可的情况下才能进行操作或访问资源。应用软件的所有权限必须由开发者在程序包中的AndroidManifest.xml文件中声明,并且在安装的时候由用户来许可。Android系统采用的是“all or nothing”的机制,即应用软件只有在所有权限申请都被用户授权的情况下才能被安装,若有任何一个权限申请不被用户授权,则无法安装。

二、组件封装机制。Android系统的应用软件由四类组件构成,分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider)。默认情况下,这四类组件被封装在同一程序中,且均被设置为私有(Private),即不允许其他应用软件访问。如果开发者需要让自己的组件能够被其他应用软件访问,即将组件设置为公有(Public),则可通过显式地将manifest文件中的exported属性的值修改为true来实现。具有安全意识的开发者通常都会显式地设置exported属性的值,因为在不同的Android SDK中,exported的默认值是不一样的,不一定与开发者打算设置的值相同。

三、数字签名机制。与Symbian系统类似,Android 系统同样要求应用软件在经过数字签名认证后才能被安装。每一个Android程序都会以apk压缩包的形式来安装,而在程序编译完成,打包之前必须经过一步数字签名的过程。系统在程序安装前会检测其数字签名,只要程序用来签名的证书是合法的,则该应用软件也是合法的。同一个开发者发布的不同应用可以用同一个证书来签名。

 

1.3 参考

Google官方文档:http://source.android.com/devices/tech/security/index.html

原创文章,作者:admin,如若转载,请注明出处:https://www.isclab.org.cn/2014/10/21/android%e5%ae%89%e5%85%a8%e4%bd%93%e7%b3%bb%e7%bb%93%e6%9e%84%e7%ae%80%e4%bb%8b/

(2)
adminadmin
上一篇 2014年10月21日
下一篇 2014年10月22日

相关推荐

  • 在线集成学习

          本次学术报告介绍了集成学习和在线学习基本思想,对离线bagging(装袋)和离线boosting(提升)的基…

    2019年7月1日
    1.1K
  • 智能模型的不确定性估计

    智能模型的不确定性是模型内生脆弱性问题的重要表征之一,反映了模型对输入数据预测结果的可信程度,包含了对数据和模型两方面缺陷的量化估计。本次报告介绍了模型不确定性估计工作基本概念,讲…

    2023年11月6日
    676
  • Android Hook 技术分析

      Hook技术就是在事件传送到终点前截获并监控事件的传输,像个钩子钩上事件一样,并且能够在钩上事件时,处理一些自己特定的事件。  附件-Android Hook 技术分析.pdf

    学术报告 2017年11月11日
    663
  • 基于深度学习的NIDS对抗样本检测与防御技术

    随着网络攻击日益复杂化,基于深度学习的入侵检测系统面临严峻的对抗性威胁。本次学术报告聚焦对抗样本的攻防研究,介绍了一种提升模型自身抗攻击能力的防御方法,以及一种能够有效甄别隐蔽对抗…

    2025年12月15日
    330
  • 格式化字符串漏洞

          介绍了格式化字符串漏洞的常见形式,以及在Windows32和Linux64下的两种利用思路,可以扩展到其他漏…

    2018年7月15日
    750
  • 第三方库检测技术研究

    第三方库检测技术是一个自动识别应用程序或二进制程序中,所包含的第三方库的技术。对二进制文件或APP进行分析,主要用于安全性评估、软件合规性检查以及漏洞管理。通过本次学术报告对第三方…

    2025年7月15日
    406
  • 图神经网络的反事实解释方法

    图神经网络模型的可解释性对于建立用户与决策模型之间的信任关系至关重要,为了安全、可信地部署图神经网络模型,需要提高图神经网络模型的可解释性和透明性。本次报告为大家介绍图神经网络反事…

    2024年6月3日
    629
  • 强化学习基础与实战

    本报告介绍了强化学习领域基本概念,详细介绍了Q-Learning算法和Deep Q Learning算法的原理,简要梳理了了两种算法的发展脉络,以经典案例windy grid-wo…

    2022年3月28日
    717
  • 缺乏先验知识条件下的模型窃取方法

    随着机器学习的快速发展,图像分类、恶意软件识别等多个领域都通过建立机器学习模型解决相应的问题。但由于一些训练出的模型可能涉及训练数据的隐私信息与模型的商业价值,所以其安全性一直备受…

    2021年4月14日
    885
  • Transformer中的Multi-Head Attention

          注意力(Attention)机制被广泛应用到基于深度学习的自然语言处理(NLP)各个任务中。随着注意力机制的…

    2018年12月17日
    831