共计 1511 个字符,预计需要花费 4 分钟才能阅读完成。
导读 | Android 将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求在开放的同时,也能保护用户的数据、应用程序和设备安全。 |
Android 是一种基于 Linux 的、自由的、开源的操作系统。它主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟开发。Android 系统架构可以分为 4 层结构,由上至下分别是应用程序层、应用程序框架层、系统运行库层以及内核层,如图 1 所示。
Android 应用层允许开发者无须修改底层代码就能对设备的功能进行拓展,Android 的应用程序框架层为开发者提供了大量的 API 来访问 Android 的设备。
Android 应用和 Android 框架都是用 Java 语言开发的,并运行在 DalvikVM 中运行。DalvikVM 的作用主要就是为操作系统底层提供一个高效的抽象层。DalvikVM 是一种基于寄存器的虚拟机,能够解释执行 Dalvik 可执行格式 DEX 的字节码,Android 应用和 Android 框架都是用 Java 语言开发的,并运行在 DalvikVM 中运行。DalvikVM 的作用主要就是为操作系统底层提供一个高效的抽象层。DalvikVM 是一种基于寄存器的虚拟机,能够解释执行 Dalvik 可执行格式 DEX 的字节码,
Android 将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求在开放的同时,也能保护用户的数据、应用程序和设备安全。
进程沙箱隔离机制,使 Android 应用程序在安装时被赋予独特的用户标识(UID),并永久保持。应用程序及其运行的 Dalvik 虚拟机运行在独立的 Linux 进程空间,与其他应用程序完全隔离,如图 2 所示。
在特殊情况下,进程间还可以存在相互信任关系。如源自同一开发者或同一开发机构的应用程序,通过 Android 提供的共享 UID(Shared UserId)机制,使具备信任关系的应用程序可以运行在同一进程空间。
规定 APK 文件必须被开发者进行数字签名,以便标识应用程序作者和在应用程序之间的信任关系。在安装应用程序 APK 时,系统安装程序首先检查 APK 是否被签名,有签名才能安装。当应用程序升级时,需要检查新版应用的数字签名与已安装的应用程序的签名是否相同,否则,会被当作一个新的应用程序。Android 开发者有可能把安装包命名为相同的名字,通过不同的签名可以把它们区分开来,也保证签名不同的安装包不被替换,同时防止恶意软件替换安装的应用。
要想在对象上进行操作,就需要把权限和此对象的操作进行绑定。不同级别要求应用程序行使权限的认证方式也不一样,Normal 级申请就可以使用,Dangerous 级需要安装时由用户确认,Signature 和 SignatureOrSystem 级则必须是系统用户才可用。
基于共享内存的 Binder 实现,提供轻量级的远程进程调用(RPC)。通过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界,如图 3 所示。
基于 Linux 的低内存管理机制,设计实现了独特的 LMK,将进程重要性分级、分组,当内存不足时,自动清理级别进程所占用的内存空间。同时,引入的 Ashmem 内存机制,使 Android 具备清理不再使用共享内存区域的能力。
正是因为 Android 采用多层架构,在保护信息安全的同时,也保证开放平台的灵活性。
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)