[终端安全]-5 移动终端之操作系统安全

1 可信体系构建

移动终端可信体系基于可信计算思想,以硬件芯片为信任根,通过可信度量、可信存储和可信报告等机制,确保移动终端操作系统在启动和运行过程中的各个部件都是可信的。

1)可信启动

1.1)硬件信任根

- 硬件信任根是可信体系构建的基础,可使用集成在SoC芯片中TrustZone,或使用硬件安全芯片(如SE、TPM)作为信任根,存储设备唯一的密钥和其他安全信息。

- eFUSE熔断机制:通过eFUSE熔断机制防止固件回退和篡改,确保系统启动时使用最新的、未被篡改的固件。

1.2)安全启动

移动终端启动过程中,各个阶段逐一进行签名验证建立信任链:

- BL1:Boot ROM加载BL1(Boot Loader Stage 1),是信任链第一环节初始化最基本的硬件,并对BL2进行数字签名验证。

【BL1通常存储在片上ROM中,默认不可更改、安全性较高,通过加载到RAM中执行。】

- BL2:负责从BL1接管后,进一步初始化硬件,如内存控制器、时钟、GPIO等,使得系统能进入更高级的引导阶段;配置安全相关的设置,如安全内存区域、访问控制列表等,确保后续阶段的安全性。此外BL2执行数字签名验证安全性检查,校验后续加载组件(如BL3)的完整性和真实性。

【BL2通常存储在闪存或非易失性存储器中,在BL1初始化后加载到RAM中执行。】

- BL3(U-Boot):负责从BL2接管后,进行系统硬件的全面初始化,包括网络设备、存储设备、显示设备等;提供引导配置选项和命令行接口,允许用户和系统管理员配置引导参数、环境变量等;支持多种文件系统(如FAT、EXT4等),可用于加载内核镜像和其他必要的引导文件;支持网络引导功能,通过TFTP、NFS等协议可从网络服务器加载内核。此外BL3执行安全性验证,通过后从存储设备或网络加载操作系统内核或虚拟机监视器,并将控制权移交给其入口点。

【BL3通常存储在闪存或非易失性存储器中,在BL2初始化后加载到RAM中执行。】

备注:如果移动终端支持OP-TEE,则TEE内核一般在BL2或BL3阶段加载,如果TEE固件是作为BL2的一部分,则BL2会在其初始化过程中加载并启动OP-TEE OS;如果TEE固件是BL3的一部分,则U-Boot负责加载启动OP-TEE OS。

- 虚拟机监视器(Hypervisor):加载并切换至虚拟机监视器,对后续加载组件主系统内核进行完整性度量验证。

备注:TIE(可信隔离环境)的加载和初始化通常发生在虚拟机监视器加载之后,负责提供一个隔离的环境,用于运行安全关键的应用和服务,确保它们在一个受保护的区域中执行。

- 主系统内核(OS Kernel):启动主系统内核,根据需要对应用程序执行安全性检查。

在整个启动过程中,每一级引导程序在加载下一级之前,都会对其进行完整性度量和数字签名验证,确保整个启动过程是可信的。

1.3)初次启动完整性扫描

完整性度量值生成:在第一次开机运行时,对移动终端系统的可执行文件、脚本文件、安装包(APK)等进行扫描,生成完整性度量值并安全存储。

后续启动过程校验:后续启动过程中使用之前生成的度量值进行可信链校验,确保系统完整性。

2)可信运行

运行时的信任链依赖于内核中的动态度量可信根服务,该服务通常在系统启动时建立,并持续负责定期或在特定事件触发时对系统运行中的各个组件进行度量。系统内核需要支持对内存、文件系统等进行度量,并将度量结果存储在安全区域;动态度量的结果可以触发安全响应机制,如隔离可疑进程或触发系统报警

- 调度度量:在进程调度过程中,对新加载的进程和动态链接库进行度量和验证,确保每个运行的进程和库都是可信的。

- 定时度量:定期对系统中的关键组件(如内核模块、关键进程)进行度量和验证,确保其在运行过程中未被篡改。

2 应用隔离机制

每个应用进程在其独立的沙箱环境中运行,操作系统通过进程隔离和用户权限控制,确保每个应用进程只能访问其自身的资源和数据。

假设我们有两个应用程序:应用A和应用B。

1)安装过程中的隔离

1.1)APK 签名和验证

- 签名:每个应用程序(APK文件)在发布前由开发者进行数字签名。

- 验证:安装时操作系统会验证应用的签名,确保其未被篡改。

1.2)分配唯一的用户ID(UID)

- UID分配:每个安装的应用程序都会被分配一个唯一的用户ID(UID)。例如应用A可能被分配UID 10001,应用B被分配UID 10002。

- 文件权限:每个应用程序的私有文件和数据目录只对其UID可访问。这样应用A的UID 10001无法访问应用B的UID 10002的数据目录。

2)应用运行时的隔离

2.1)进程创建和隔离

当用户启动应用A时,操作系统会为其创建一个新的进程,该进程由应用A的UID 10001运行;同样当启动应用B时,会为其创建一个由UID 10002运行的独立进程。每个应用程序被分配一个唯一的用户ID(UID),确保应用程序运行在不同的权限上下文中。

每个应用程序运行在一个独立的进程中,通过操作系统的内存管理单元(MMU)实现自己独立的虚拟地址空间,通常从0开始到某个最大值(例如,32位系统上为4GB),这个空间是进程私有的,MMU负责将虚拟地址转换为物理地址。当操作系统在不同进程之间切换时,会切换当前的页表,通过改变MMU中存储的页表基地址(通常存储在寄存器中)来实现,这样进程A和进程B即使使用相同的虚拟地址,也会映射到不同的物理地址。

2.2)文件访问隔离

应用程序只能访问特定的文件夹和目录,通常位于自己的专有存储空间内,即使获得存储权限,也只能访问公共存储区或共享存储区的特定部分。另外,操作系统可以通过重定向技术,将应用程序试图访问的资源重定向到其私有空间。例如当一个应用程序尝试创建或修改文件时,系统可以将这个操作重定向到应用程序的私有文件夹中,这种机制确保应用程序无法对系统的关键文件或其他应用程序的数据进行未授权的修改。

2.3)应用权限管理

- 权限声明:在应用A的声明文件中,开发者声明应用需要的权限(如访问相机、读取联系人等)。

- 用户授权:安装或首次运行时,系统会提示用户授予这些权限。如果用户同意,应用A就可以使用这些权限。

- 权限限制:即使应用A获得了某些权限(如访问相机),这些权限也仅限于应用A本身,应用B无法使用这些权限,除非用户明确授予。

- 系统调用拦截和监控:系统服务(如剪贴板、位置服务)也通过UID进行访问控制,确保应用A只能访问和操作它有权限的系统资源。操作系统可以在应用程序试图访问系统资源时,通过检查是否符合安全策略拦截应用程序的系统调用来限制它们的行为。例如安卓系统中,Binder机制用于进程间通信(IPC),在进行关键系统调用时,Binder会进行权限检查。

2.4)安全通信和数据传输

- 数据加密:应用A可以使用加密API对敏感数据进行加密存储,防止其他应用或用户在没有正确解密密钥的情况下读取数据。

- 安全通信:当应用A通过网络传输数据时,使用TLS/SSL等加密协议,确保数据在传输过程中的机密性和完整性。

3 安全更新

安全更新对于移动终端操作系统至关重要,因为它们修复漏洞、提高系统安全性并保护用户数据免受新出现的威胁和攻击。

- 漏洞发现与修复

安全研究人员、开发者和厂商发现系统中的漏洞,漏洞被报告给相关的操作系统开发团队,开发团队进行漏洞分析、修复,并测试补丁。

- 更新发布

测试通过后,补丁被打包成安全更新。更新包通过官方渠道发布,通常通过OTA(Over-the-Air)方式推送到设备上。

- 用户通知与安装

用户设备会接收到更新通知,提示用户下载并安装更新,用户可以选择立即安装或延迟安装。安装过程中,设备可能会重启以完成更新。

- 更新验证

安装完成后,设备会进行验证,确保更新包完整且未被篡改;系统会检查更新后的版本信息,并记录更新日志。

4 安卓操作系统安全技术

1)安全启动

安卓设备通过安全启动来确保启动链的完整性和真实性,每个启动阶段都会验证下一个阶段的数字签名,确保系统未被篡改。

2)SELinux(Security-Enhanced Linux)

SELinux为安卓提供了强制访问控制(MAC),最初由美国国家安全局 (NSA) 开发,通过安全策略定义与每个对象和主体(例如文件和进程)相关联,限制进程对系统资源的访问,确保即使应用程序被攻破,恶意行为也会受到限制。

2.1)主要组件

- 安全上下文:每个对象(文件、进程等)都有一个安全上下文,包括用户、角色、类型和级别。

- 策略:定义哪些安全上下文可以访问哪些对象以及以何种方式访问。

- 安全策略库:包含所有定义的策略。

- SELinux 内核模块:实现强制访问控制逻辑,检查和执行安全策略。

2.2)工作原理

- 标记对象和主体:每个对象和主体都被标记为安全上下文。

- 策略检查:当一个主体尝试访问一个对象时,SELinux 内核模块检查策略库中定义的规则。

- 决策:根据策略,决定是否允许访问,如果不允许,则阻止访问并记录事件。

3)应用沙箱

每个安卓应用运行在独立的用户空间(UID),通过Linux内核的用户和权限管理机制,防止应用互相访问彼此的数据和进程。

4)权限管理

安卓应用需要声明权限,并在安装时或运行时请求用户授权,确保用户对应用访问的敏感资源有控制权。

5)Google Play Protect

Google Play Protect 是安卓内置的防护机制,扫描应用和设备上的潜在威胁,提供恶意软件检测和阻止。

6)设备加密

安卓设备支持文件级和全盘加密,通过AES加密算法保护存储在设备上的数据,防止未经授权的访问。

7)安全更新

安卓提供定期安全更新,修复操作系统和应用中的漏洞,确保设备免受已知威胁的攻击。

8)Keystore

安卓的Keystore系统提供了一个安全环境,用于生成、存储和使用加密密钥。硬件支持的Keystore(如TEE)提供了更高的安全性。

5 iOS操作系统安全技术

1)安全启动

iOS设备通过硬件根信任和数字签名验证,确保从引导加载程序到内核的每个组件都未被篡改。

2)系统完整性保护(System Integrity Protection, SIP)

SIP限制系统关键部分的修改,包括系统文件、运行时保护等,防止恶意软件或用户无意中改变系统的完整性。

3)应用沙箱

iOS应用运行在受限的沙箱环境中,限制应用对文件系统、网络和其他应用的访问,确保即使应用被攻破,危害也会被最小化。

4)权限管理

iOS使用细粒度的权限管理,应用在运行时需要请求用户授权访问敏感数据和功能,如相机、位置、通讯录等。

5)App Store审核

所有iOS应用必须通过App Store审核,苹果会进行严格的安全和隐私检查,确保应用符合安全标准。

6)数据加密

iOS设备默认启用文件级加密,通过硬件和软件结合,确保存储在设备上的数据在锁定状态下无法被访问。

7)安全更新

苹果提供定期安全更新,通过OTA方式及时修补操作系统和内置应用的安全漏洞。

8)Keychain

Keychain提供了一个安全存储,保护用户的密码、证书和其他敏感数据。iOS通过硬件加密和访问控制,确保密钥和数据的安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI绘画杀死了设计师!?恰恰相反……

与大多数人想象的不同,ChatGPT等各种AI工具爆火之后,受到冲击最大的居然是设计师、作家、翻译等具有创造性的工作,以体力劳动为主的蓝领反而最不易被替代。 以城市数据团做过的一项研究为例,他们对中国1639种职业进行了GPT替代风险…

网页报错err_connection_timed_out 怎么办?教你快速修复错误代码

遇到网页错误提示“ERR_CONNECTION_TIMED_OUT”时,通常表示你的网络浏览器无法在规定时间内从服务器获取数据。这种错误不仅会阻碍你访问特定网站,而且可能会引起一些疑惑和不便。首先,这个问题可能是由于网络连接问题、服务器响应延迟或配置…

Python 轻松生成多种条形码、二维码 (Code 128、EAN-13、QR code等)

条形码和二维码是现代信息交换和数据存储的重要工具,它们将信息以图形的形式编码,便于机器识别和数据处理,被广泛应用于物流、零售、医疗、教育等各领域。 本文将介绍如何使用Python快速生成各种常见的条形码如Code 128、EAN-13,…

从传统到智能:安全帽AI检测算法助力工地/矿山/工厂/电力巡检安全监管

随着科技的快速发展,人工智能(AI)技术已经渗透到我们生活的方方面面,特别是在建筑工地这一对安全要求极高的领域中,AI技术的应用更是显得尤为重要。其中,安全帽AI检测算法以其高效、准确的特性,…

c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决

有需求需要对。多边形 获取中心点方法&#xff0c;绝大多数都是 puthon和java版本。立体几何学中的知识。 封装函数 point ##########::getCenterOfGravity(std::vector<point> polygon) {if (polygon.size() < 2)return point();auto Area [](point p0, point p1, p…

Quartus程序烧录

1. .sof文件烧录&#xff08;断电丢失&#xff09; &#xff08;1&#xff09;Programmer&#xff08;程序设计&#xff09; &#xff08;2&#xff09;Hardware Setup...&#xff08;硬件设置&#xff09; &#xff08;如无USB-Blaster[USB-0]&#xff0c;在Hardware Setup..…

buuctf被嗅探的流量

下载出来是一个流量分析题 因为题目说了是联网状态下 嗅探到 所以一定有http协议 这里设置过滤器 一个一个去找吧 目前感觉wireshark的题都是http,太难的也不会

Perl文件锁机制:守护你的数据安全

&#x1f512; Perl文件锁机制&#xff1a;守护你的数据安全 在多任务和多用户的系统环境中&#xff0c;文件锁是确保数据完整性和一致性的关键机制。Perl作为一种强大的脚本语言&#xff0c;提供了多种文件锁处理方式&#xff0c;以支持并发访问时的安全性。本文将深入探讨Pe…

腾讯混元大模型集成LangChain

腾讯混元大模型集成LangChain 获取API密钥 登录控制台–>访问管理–>API密钥管理–>新建密钥&#xff0c;获取到SecretId和SecretKey。访问链接&#xff1a;https://console.cloud.tencent.com/cam/capi python SDK方式调用大模型 可参考腾讯官方API import json…

wpf 自定义 一个事件聚合自定义示例

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace WpfLibraryEventAggregator {public class EventAggregator{/// <summary>/// 定义数据暂存/// </summary>private readonly Dic…

Linux--深入理与解linux文件系统与日志文件分析

目录 一、文件与存储系统的 inode 与 block 1.1 硬盘存储 1.2 文件存取--block 1.3 文件存取--inode 1.4 文件名与 inode 号 ​编辑 1.5 查看 inode 号码方法 1.6 Linux 系统文件的三个主要的时间属性 1.7 硬盘分区结构 1.8 访问文件的简单了流程 1.9 inode 占用 1.…

【前端从入门到精通:第八课:CSS浮动布局实战】

EWSHOP布局实战 目录结构 /ewshop/ |- index.html 首页 |- css/ CSS目录 |- global.css 全局样式 |- index.css index.html文件样式 |- img/ 图像资源目录 |- font/字体图标目录 global.css 主要作用&#xff1a;设置全局样式&#xff0c;清空默认样式 base.css,设置常用的基础…

适配各种IT场景的零信任沙箱

在当今数字化时代&#xff0c;网络安全威胁层出不穷&#xff0c;传统的安全防御策略已难以应对日益复杂的网络攻击。零信任与沙箱技术的结合&#xff0c;作为一种新兴的安全防护策略&#xff0c;正逐渐受到企业和组织的青睐。本文将深入探讨零信任结合沙箱技术所能解决的问题及…

odoo视图继承

odoo视图继承 在模型时候&#xff0c;不对视图、菜单等进行修改&#xff0c;原视图和菜单等视图数据仍然可以使用&#xff0c;不需要重新构建 form视图继承案例 model&#xff1a;为对应模型 inherit_id&#xff1a;为继承的视图&#xff0c;ref:为继承视图的id&#xff0…

高考完的假期想学c语言要注意那些问题?

c语言算是现代编程语言里面比较简单的一个&#xff0c;对于高考刚考完的学生来说确实很适合刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「c语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全…

1.mysql基本概念环境配置等

1、数据库 mysqlmysqld数据库服务端 以特定格式保存的文件&#xff0c;我们叫做数据库广义&#xff1a;提供较为便捷的数据的存取服务 的软件集合、解决方案 ——mysql数据库 数据库VS文件 文件或者数据库&#xff0c;都可以进行数据的存储。 如果用文件&#xff0c;数据内容…

ChatGPT提问获取高质量答案的艺术PDF下载书籍推荐分享

ChatGPT高质量prompt技巧分享pdf&#xff0c; ChatGPT提问获取高质量答案的艺术pdf。本书是一本全面的指南&#xff0c;介绍了各种 Prompt 技术的理解和利用&#xff0c;用于从 ChatGPTmiki sharing中生成高质量的答案。我们将探讨如何使用不同的 Prompt 工程技术来实现不同的目…

类与对象-继承-构造和析构顺序

构造和析构顺序 #include<iostream> using namespace std;class Base { public:Base(){cout << "Base构造函数" << endl;}~Base(){cout << "Base析构函数" << endl;} };class Son :public Base { public:Son(){cout <&l…

移动UI:发现页面,是什么,有啥作用,该如何设计呢?

移动应用中的“发现页面”通常用于向用户展示新的内容、功能、活动或推荐信息&#xff0c;以帮助用户发现和探索应用中的新内容或功能。设计一个好的发现页面可以提升用户对应用的兴趣和粘性。 以下是设计发现页面时可以考虑的一些要点&#xff1a; 1. 推荐内容&#xff1a; …

驻场运维的前途在哪里,这里有金玉良言

甲方和乙方都干过&#xff0c;技术和经理都当过&#xff0c;我把重点跟你标记出来了。 你的思想要认识到&#xff0c;驻场运维不是纯技术&#xff0c;不是依靠你的技术进行单纯维护工作。是配合服务经理&#xff0c;做好服务工作&#xff0c;让乙方服务经理更好的开展工作&…