zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android与鸿蒙系统安全(一)

Android鸿蒙 系统安全
2023-09-11 14:14:52 时间

Android鸿蒙系统安全

一、信息安全概念

信息安全涉及信息论、计算机科学和密码学等多方面的知识,它研究计算机系统和通信网络内信息的保护方法,是指在信息的产生、传输、使用、存储过程中,对信息载体(处理载体、存储载体、传输载体)和信息的处理、传输、存储、访问提供安全保护,以防止数据信息内容或能力被非法使用、篡改。

信息安全的基本属性包括机密性、完整性、可用性、可认证性和不可否认性,主要的信息安全威胁包括被动攻击、主动攻击、内部人员攻击和分发攻击,主要的信息安全技术包括密码技术、身份管理技术、权限管理技术、本地计算环境安全技术、防火墙技术等,信息安全的发展已经经历了通信保密、计算机安全、信息安全和信息保障等阶段。信息安全本身包括的范围很大,包括如何防范商业企业机密泄露、防范青少年对不良信息的浏览、个人信息的泄露等。信息安全达到的其核心目标包括保密性、完整性、可用性、可控性和不可否认性五个安全目标

狭义的安全是建立在以密码论为基础的计算机安全领域,早期中国信息安全专业通常以此为基准。以下将分别从密码理论,Android安全,鸿蒙安全介绍。

  • 密码学相关的基本概念

图1.0 信息安全所面临的威胁与应对这些威胁的密码技术

                                                 图2. 密码学家的工具集合

·  散列函数(散列(hash)、指纹、消息摘要、摘要算法、杂凑函数):把任意长度的输入消息数据转化成固定长度的输出数据的一种密码算法。

·  消息验证代码:验证数据完整性,即数据没有被篡改。

·  数字签名:RSA私钥加密,公钥解密,结合散列函数。验证消息真实性。

·  伪随机函数(PRF):生成任意数量的伪随机数据。

·  RSA:可以同时用于密钥交换和身份验证(数字签名)。

·  DHE_RSA:DHE 算法:密钥协商,RSA 算法:身份验证(数字签名)。

·  ECDHE_RSA: ECDHE 算法:密钥协商,RSA 算法:身份验证(数字签名)。

·  ECDHE_ECDSA :ECDHE 算法:密钥协商,ECDSA 算法:身份验证(数字签名)

三、PKI体系概述

PKI 的本质是把非对称密钥管理标准化,PKI 是 Public Key Infrastructure 的缩写,其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。

专门负责颁发数字证书的系统称为CA系统,负责管理并运营 CA 系统的机构称为CA中心。

·  KMC:解决私钥的备份与恢复问题;

·  双证书机制:「签名证书及私钥」只用于签名验签,「加密证书及私钥」只用于加密解密。

·  LDAP:解决数字证书查询和下载的性能问题,避免 CA 中心成为性能瓶颈。

·  CRL(证书作废列表) 和 OSCP(在线证书状态协议):方便用户快速获得证书状态。

·  RA:方便证书业务远程办理、方便证书管理流程与应用系统结合。

·  电子认证服务机构:保证 CA 系统在数字证书管理方面的规范性、合规性和安全性。

四、Android系统安全体系

Android 将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求在开放的同时,也能保护用户的数据、应用程序和设备安全。

Android安全模型主要提供以下几种安全机制:

  • 进程沙箱隔离机制
  • 应用程序签名机制
  • 权限声明机制
  • 访问控制机制
  • 进程通信机制
  • 内存管理机制

从功能模块上来划分主要有:硬件安全,系统安全,数据应用安全,安全更新,如下图所示:

图3.0 Android 系统安全体系

4.1 Android进程沙箱隔离机制

进程沙箱隔离机制,使Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持。应用程序及其运行的Dalvik虚拟机运行在独立的Linux进程空间,与其他应用程序完全隔离,如下图3.1所示;在特殊情况下,进程间还可以存在相互信任关系。如源自同一开发者或同一开发机构的应用程序,通过Android提供的共享UID(Shared UserId)机制,使具备信任关系的应用程序可以运行在同一进程空间。

4.1 Android进程沙箱隔离机制

进程沙箱隔离机制,使Android应用程序在安装时被赋予独特的用户标识(UID),并永久保持。应用程序及其运行的Dalvik虚拟机运行在独立的Linux进程空间,与其他应用程序完全隔离,如下图3.1所示;在特殊情况下,进程间还可以存在相互信任关系。如源自同一开发者或同一开发机构的应用程序,通过Android提供的共享UID(Shared UserId)机制,使具备信任关系的应用程序可以运行在同一进程空间。

图4. Android 应用程序沙箱机制

Android从Linux继承了已经深入人心的类Unix进程隔离机制与最小权限原则,同时结合移动终端的具体应用特点,进行了许多有益的改进与提升。具体而言,进程以隔离的用户环境运行,不能相互干扰,比如发送信号或者访问其他进程的内存空间。因此,Android沙箱的核心机制基于以下几个概念:

  1. 标准的Linux进程隔离

2. 大多数进程拥有唯一的用户ID(UID)

3. 以及严格限制文件系统权限

4.2. 应用程序签名机制

规定 APK 文件必须被开发者进行数字签名,以便标识应用程序作者和在应用程序之间的信任关系。在安装应用程序APK时,系统安装程序首先检查APK是否被签名,有签名才能安装。当应用程序升级时,需要检查新版应用的数字签名与已安装的应用程序的签名是否相同,否则,会被当作一个新的应用程序。Android 开发者有可能把安装包命名为相同的名字,通过不同的签名可以把它们区分开来,也保证签名不同的安装包不被替换,同时防止恶意软件替换安装的应用(Android Keystore)。

4.3 权限声明机制

要想在对象上进行操作,就需要把权限和此对象的操作进行绑定。不同级别要求应用程序行使权限的认证方式也不一样,Normal级申请就可以使用,Dangerous级需要安装时由用户确认,Signature和SignatureOrSystem级则必须是系统用户才可用。

4.4 进程通信机制

基于共享内存的 Binder 实现,提供轻量级的远程进程调用(RPC)。通过接口描述语言(AIDL)定义接口与交换数据的类型,确保进程间通信的数据不会溢出越界,如下图所示。

图5. Android Binder 机制通讯

5. 内存管理机制

基于Linux的低内存管理机制,设计实现了独特的LMK,将进程重要性分级、分组,当内存不足时,自动清理级别进程所占用的内存空间。同时,引入的 Ashmem 内存机制,使Android具备清理不再使用共享内存区域的能力。

Android还增加了一些面向移动设备的特有功能,如低内存管理LMK(Low Memory Killer)、匿名共享内存(Ashmem: Anonymous Shared Memory),以及进程间通信Binder机制。这些功能的增强进一步提升了Android在内存管理、进程间通信等方面的安全性。