前言
相较于通用桌面与服务器Linux系统,嵌入式设备往往具备硬件资源受限、长期无人值守、物理暴露风险高、固件更新渠道单一等典型特征,这也让其安全威胁呈现出独有的复杂性:攻击者既可以通过网络发起远程渗透,也能够借助物理接触篡改存储固件、提取敏感密钥,甚至利用硬件漏洞突破系统边界。
市面上多数嵌入式开发人员长期聚焦于功能实现、驱动开发与系统适配,对安全体系的认知往往停留在基础权限配置层面,缺乏从威胁预判、密码体系、硬件隔离、启动链路 全维度的系统性理解。本文从安全基础理论切入,逐层拆解威胁建模方法论、现代密码学体系、CPU硬件隔离机制、ARM TrustZone可信执行环境以及端到端安全启动链路,完整搭建嵌入式Linux底层安全知识框架,全文参考Bootlin官方开源资料整理。
一、培训背景与嵌入式安全行业概况
嵌入式设备的应用场景决定了其安全防护不能直接照搬服务器或桌面Linux的方案。首先,绝大多数嵌入式设备部署在无人值守的现场环境,一旦被入侵,管理人员无法第一时间察觉;其次,设备硬件算力、内存、存储资源有限,复杂的安全检测、加密校验程序会直接影响设备核心业务的运行效率;再者,大量老旧嵌入式设备生命周期长达十余年,厂商无法持续提供版本迭代与漏洞补丁,长期暴露在已知漏洞风险之下;最后,工业、车载、金融类嵌入式设备往往存储密钥、生物信息、交易数据等高敏感数据,一旦数据泄露或系统被篡改,会引发经济损失、安全事故甚至合规风险。
基于上述痛点,嵌入式Linux安全建设必须遵循分层防御、纵深防护、软硬结合的核心思路:从顶层完成威胁建模,梳理所有潜在攻击路径;以密码学作为数据防护的基础;依托CPU、专用安全芯片实现硬件级隔离,缩小攻击面;加固从芯片ROM到根文件系统的全启动链路,杜绝固件篡改;最后配合系统层、应用层的权限管控形成完整防御体系。本文聚焦底层核心模块,依次拆解威胁建模、密码学、硬件隔离、安全启动四大核心支柱,这也是整个嵌入式安全体系的根基。
二、安全基础:威胁建模与安全属性体系
2.1 威胁建模的定义与价值
威胁建模是网络安全领域的前置核心工作,简单来说,它是一套梳理、归类系统潜在威胁,并匹配对应防护策略的标准化流程。在嵌入式产品研发阶段完成威胁建模,能够帮助架构师和开发人员达成多重目标:第一,全面识别系统中存在的所有潜在攻击点,避免因思维遗漏留下安全短板;第二,结合攻击难度、危害程度、发生概率对威胁进行风险评级,明确防护优先级,在有限的硬件资源与开发成本下实现最优防护;第三,针对每一类威胁制定对应的对抗措施,让安全设计有据可依,而非盲目叠加安全功能。
对于嵌入式Linux设备而言,威胁建模的意义尤为突出。嵌入式系统硬件架构固定、固件一旦量产便难以大规模修改,若在研发后期或量产之后才发现安全漏洞,修复成本会呈指数级上升,部分物理固件甚至无法完成现场修复。因此,在方案设计阶段通过标准化框架完成威胁梳理,是嵌入式安全开发的第一道防线。行业内经过多年发展,诞生了多款成熟的威胁建模框架,适配不同场景与防护目标,下文将逐一详解主流框架与核心安全属性。
2.2 经典安全属性:CIA三元组
CIA三元组是信息安全领域最基础、应用最广泛的安全评价体系,分别代表保密性(Confidentiality)、完整性(Integrity)、可用性(Availability),也是所有嵌入式安全设计的核心评判标准,三者相互关联,部分场景下还存在取舍关系。
保密性指的是阻止未授权主体访问系统内的敏感信息,这是绝大多数安全方案首要实现的目标。在嵌入式设备中,敏感信息包括设备密钥、用户数据、配置参数、通信报文等。针对保密性的典型攻击方式是被动中间人攻击,攻击者在不篡改数据的前提下窃听传输内容,而加密技术是实现保密性最核心的手段。需要注意的是,高强度的加密算法、复杂的加密逻辑会占用CPU与内存资源,在部分低算力嵌入式设备上,过度追求保密性可能会间接降低系统的可用性,这也是嵌入式安全设计中需要权衡的关键点。
完整性指的是保证数据在传输、存储过程中不被未授权主体篡改。即便攻击者无法读取明文数据,若能够随意修改数据内容,同样会导致系统功能失效、逻辑错乱。针对完整性的典型攻击为主动中间人攻击,攻击者截获数据后修改内容再转发给目标设备。校验和、哈希摘要等技术是防护数据篡改的基础手段,也是嵌入式固件校验、文件校验的常用方案。
可用性指的是保障授权主体能够正常访问、使用系统与数据,拒绝恶意行为导致系统服务中断。针对可用性的主流攻击是拒绝服务攻击(DoS),攻击者通过发送海量请求、占用硬件资源、触发程序异常等方式让设备宕机、服务停止。在嵌入式工业设备中,可用性的优先级甚至高于保密性,设备停机可能直接引发生产事故。防护DoS攻击的常用手段包括异常行为实时检测、系统冗余设计、故障自动切换等。同时,部分恶意诈骗、入侵手段会利用用户对可用性的诉求,诱导用户放弃部分保密性设置,这也是安全设计中需要规避的风险。
2.3 拓展安全属性:五要素与Parker六元组
随着网络攻击手段的不断升级,仅依靠CIA三元组已经无法完整描述系统的安全能力,行业在此基础上延伸出五大安全属性 ,新增真实性(Authenticity) 与**不可否认性(Non-repudiation)**两大维度,进一步完善评价体系。
真实性用于验证数据、报文、程序的来源合法性,确认信息确实由合法主体发出,数字签名是实现真实性的核心技术。这里需要明确区分真实性与完整性:完整性仅保证数据内容未被篡改,但无法验证数据来源;攻击者可以复制一份完整的合法数据反复发送,也就是重放攻击,此时完整性校验会判定数据合法,但真实性校验能够识别出该行为。
不可否认性要求主体在完成操作、发送信息之后,无法事后否认自身行为。在金融嵌入式设备、物联网网关等场景中,该属性至关重要。标准的数字签名方案可以实现不可否认性,前提是签名内容中必须包含完整的上下文信息、时间戳、唯一标识等,防止签名被复用。
在五大属性之外,Parker六元组对体系再次优化,替换原有部分维度,新增实用性(Utility) 与可控性(Control),更贴合复杂业务场景。其中实用性关注数据本身是否具备业务价值,可控性则定义合法用户对信息的访问权限边界,这套体系在复杂嵌入式集群、多权限设备管理场景中应用较多。
2.4 主流威胁建模框架详解
2.4.1 STRIDE框架
STRIDE是面向安全属性反向推导的经典框架,将安全威胁划分为六大类别,每一类均对应CIA等安全属性的破坏,非常适合嵌入式固件、网络通信类系统的威胁梳理,六个字母分别代表六种威胁:
- 身份伪造(Spoofing):未授权主体盗用合法身份、凭证,伪装成正常设备或用户,对应真实性破坏;
- 数据篡改(Tampering):恶意修改存储或传输的数据、固件、配置,对应完整性破坏;
- 抵赖(Repudiation):主体完成恶意操作后拒绝承认,对应不可否认性破坏;
- 信息泄露(Information disclosure):敏感数据被未授权主体读取,对应保密性破坏;
- 拒绝服务(Denial of Service):占用资源导致系统无法正常工作,对应可用性破坏;
- 权限提升(Elevation of privilege):低权限用户、进程获取高权限,执行未授权操作,是嵌入式系统中最高危的威胁之一。
在嵌入式Linux系统中,权限提升是高频攻击目标,攻击者往往利用内核漏洞、驱动漏洞、配置缺陷从普通用户态突破到内核态,进而完全控制设备,STRIDE框架可以帮助开发人员逐一对每个模块排查上述六类风险。
2.4.2 攻击树(Attack tree)
攻击树由安全专家Bruce Schneier提出,采用树形结构梳理攻击路径,以最终攻击目标作为根节点,实现该目标的所有方法作为子节点,子节点还可以继续拆分出更细分的攻击手段。举个典型例子,嵌入式系统中"获取root权限"作为根节点,子节点可以分为破解root密码、本地权限提升、诱导高权限程序执行恶意代码、替换setuid权限二进制文件等,每一个子节点又可以继续拆解具体实现方式。
在实际使用中,技术人员会为每一条最末端的攻击路径标注攻击成本,包括技术门槛、硬件要求、时间成本等,父节点的攻击成本取子节点中的最小值,以此判断整个系统最易被突破的攻击路径,从而针对性加固。该框架逻辑直观,非常适合嵌入式固件、启动链路这类层级清晰的系统。
2.4.3 LINDDUN框架
LINDDUN是一款面向隐私保护的威胁建模框架,由比利时鲁汶大学研究团队开发,严格适配GDPR、HIPAA等全球隐私法规,主要应用于采集用户生物信息、个人数据的嵌入式设备,如智能穿戴、人脸识别终端、智能家居网关等。该框架将隐私威胁分为七类:可链接性、可识别性、不可否认性、可检测性、信息泄露、知情缺失、合规性问题。对于处理个人隐私数据的嵌入式Linux设备,使用LINDDUN框架能够全面排查数据隐私风险,确保产品符合地区法规要求。
2.4.4 PASTA框架
PASTA全称为攻击模拟与威胁分析流程,是一套流程化、高复杂度的建模体系,总共分为七个阶段:目标定义、技术范围界定、系统拆解、威胁分析、漏洞分析、攻击建模、影响评估。PASTA的优势在于分析深度极高,适合大型嵌入式集群、工业控制网络、复杂智能硬件平台,但由于流程繁琐、工作量大,一般不会用于小型单板设备,更多应用在企业级、工业级大型嵌入式系统的安全评估中。
2.5 框架选用原则
在实际工程落地中,并不要求开发人员严格死守某一款威胁建模框架,任何形式的威胁建模都比完全不做防护要强。各类框架本质上是辅助思考的记忆工具,核心作用是帮助团队全面排查威胁、界定防护范围,避免因人为疏忽遗漏攻击点。在项目中可以根据设备类型、应用场景、开发规模灵活选用,也可以将多个框架结合使用,取各框架的优势适配自身系统。对于绝大多数中小型嵌入式Linux项目,优先使用STRIDE与攻击树组合,兼顾易用性与全面性;涉及隐私数据则叠加LINDDUN框架;大型工业集群可采用PASTA完成深度分析。
三、密码学基础:嵌入式安全的核心数据防护体系
密码学是实现保密性、完整性、真实性、不可否认性的技术基石,无论是数据存储、网络通信、固件校验还是密钥管理,都离不开各类密码算法。嵌入式设备由于资源限制,在算法选型、工作模式、软硬件加速上有着严格要求,本节结合嵌入式场景,系统讲解哈希算法、对称加密、非对称加密、密钥交换四大类核心密码技术,并分析各类算法的适用场景、优劣与工程落地要点。
3.1 密码学整体分类与应用逻辑
现代密码学体系主要分为三大基础模块:密码哈希函数、对称加密算法、非对称加密算法,密钥交换协议则是基于以上算法衍生的通信配套方案。在真实的嵌入式协议与程序中,几乎不会单独使用某一种算法,而是根据不同算法的性能、安全特性进行组合搭配,取长补短。
从性能维度区分:对称加密算法运算速度快、资源占用低,适合大批量明文数据的加密;非对称加密算法数学运算复杂、算力消耗高,不适合加密大体积数据,但密钥分发、身份认证场景优势显著;哈希算法无解密过程,主要用于数据完整性校验、密码摘要、数字签名配套。三者的组合使用,构成了嵌入式数据安全的核心逻辑。
3.2 密码哈希函数
密码哈希函数(又称散列函数)的核心特性是将任意长度的输入数据,转换为固定长度的输出摘要,这个固定长度的结果被称为哈希值。普通哈希函数仅追求运算效率,而密码学哈希函数有严格的安全要求,也是嵌入式系统中固件校验、密码存储、签名验证的核心工具。

3.2.1 密码哈希函数的安全要求
一款合格的密码学哈希算法必须满足四大核心特性:第一,抗碰撞性 ,无法找到两段不同的输入数据,生成完全相同的哈希值;第二,抗原像性 ,在已知哈希摘要的前提下,无法反向推导出原始输入数据;第三,均匀分布 ,随机输入的数据生成的哈希值概率均等,不存在规律;第四,雪崩效应,输入数据发生极小的修改(哪怕一个字符、一个比特),最终的哈希摘要会发生完全颠覆性的变化,从根源上杜绝攻击者通过微小篡改绕过校验。
3.2.2 主流哈希算法与嵌入式选型
行业内主流哈希算法包括MD5、SHA-1、Whirlpool、SHA-2、SHA-3,不同算法的安全强度与应用场景差异巨大。MD5与SHA-1是早期经典算法,目前均已被证实存在严重安全漏洞,碰撞攻击可以低成本实现,新项目中严禁使用,仅在老旧设备的兼容维护场景中偶尔出现。
SHA-2系列与SHA-3(Keccak)是目前工业界推荐的主流算法,也是嵌入式新产品的首选。SHA-2包含SHA-256、SHA-384、SHA-512等分支,摘要长度越长,安全强度越高,算力消耗也略有提升;TLS 1.3等主流安全通信协议默认采用SHA-256与SHA-384。SHA-3是新一代哈希标准,架构与SHA-2完全不同,抗攻击能力更强,在高安全等级的嵌入式设备(金融、军工)中逐步普及。
在嵌入式工程中,哈希函数的典型应用场景分为三类:一是固件、镜像、配置文件的完整性校验,系统启动时计算文件哈希并与标准值对比,判断文件是否被篡改;二是用户密码存储,系统不保存明文密码,仅存储密码的哈希摘要,即便存储被攻破,攻击者也无法还原原始密码;三是配合非对称算法生成数字签名,实现身份认证与防抵赖。
3.3 对称加密算法
对称加密是历史最悠久、应用最广泛的加密方式,其核心特征是加密与解密使用完全相同的密钥,算法逻辑简单、运算高效,天然适配嵌入式设备资源受限的场景。

3.3.1 算法演进与现状
早期对称算法包括凯撒密码、ROT13、XOR简易加密,以及近代的DES、RC4、Blowfish、Twofish等。其中DES密钥长度较短,现已被暴力破解技术攻破,RC4也被发现存在大量安全缺陷,均已逐步淘汰。AES(高级加密标准) 是目前全球通用的对称加密算法,由NIST在2001年正式发布,基于Rijndael算法设计,也是嵌入式系统、通用计算机、网络设备的标配加密方案。
AES的分组长度固定为128比特,密钥长度支持128比特、192比特、256比特三档,密钥长度越长,安全等级越高。该算法具备两大嵌入式设备青睐的优势:第一,内存与CPU占用极低,即便在低主频、小内存的MCU与嵌入式Linux设备上也能流畅运行;第二,主流ARM、x86架构CPU均集成AES硬件加速指令,开启硬件加速后运算效率会大幅提升,这也是AES能够垄断对称加密市场的核心原因。
3.3.2 分组密码工作模式
AES属于分组密码,仅能对128比特的固定数据块进行加密,而实际业务中需要加密的数据长度各不相同,因此衍生出多种分组密码工作模式,用于将多个数据块串联加密,不同模式的安全特性、并行能力、适用场景天差地别,是嵌入式开发中极易出错的环节。
- ECB模式 :最简单的工作模式,每个数据块独立加密,块与块之间无关联。该模式存在致命缺陷,相同的明文块会生成相同的密文块,攻击者可以通过密文规律推断明文内容,安全性极差,工程中禁止使用。
- CBC模式(密码块链接):每个明文块加密前,会与上一个块的密文进行异或运算,第一个块则与初始化向量(IV)异或。IV需要随机生成并随密文一同传输,该模式解决了ECB的规律问题,能够保障数据保密性,是传统嵌入式加密的常用模式,但缺点是块之间存在依赖,无法并行加密解密,大文件加密效率偏低。
- CTR模式(计数器模式):基于递增的计数器结合随机数(Nonce)生成密钥流,再与明文异或得到密文。块与块之间无依赖,支持并行运算,随机位置的数据也可以单独加解密,灵活性与效率远高于CBC,是现代嵌入式、网络协议的主流选择。
除了单纯保障保密性的模式,行业还衍生出兼顾保密性与完整性的复合模式:CBC-MAC基于CBC模式实现消息认证,用于数据完整性校验;CCM模式结合CTR与CBC-MAC,单密钥即可同时完成加密与校验;GCM模式结合CTR与伽罗瓦域运算,兼顾高性能、高安全,是TLS、IPSec等主流协议的首选模式。
这里需要重点强调一条工程规范:在同一套系统中,不能使用同一组密钥同时做加密和完整性校验,密钥复用会引发密钥泄露风险,这也是嵌入式密码设计的基础准则。
3.4 非对称加密算法
非对称加密又称公钥加密,加密与解密使用一对相互匹配但完全不同的密钥,分为公钥与私钥:公钥可以对外公开,用于数据加密与签名验证;私钥必须严格保密,仅由设备持有者保管,用于数据解密与生成数字签名。该算法基于单向数学难题设计,从公钥无法推导出私钥,彻底解决了对称加密的密钥分发难题,但运算复杂度远高于对称加密。

3.4.1 RSA算法
RSA是最早商业化的非对称算法,1977年由三位科学家联合提出,核心数学原理是大质数乘积的因式分解难题:将两个大质数相乘容易,但对大数做因式分解、还原原始质数在算力上几乎不可行。
RSA既可以实现数据加密,也可以生成数字签名。在嵌入式新产品中,推荐使用3072比特或4096比特密钥长度,1024比特RSA已被证实存在安全风险,逐步被淘汰。由于运算量大,RSA几乎不会用于加密大体积数据,行业通用做法是:使用RSA加密对称算法的会话密钥,再用对称算法加密业务数据,结合两者优势。同时,RSA硬件实现复杂度较高,多数低端嵌入式设备仅能依靠软件运算,使用时需要合理控制调用频次,避免占用业务算力。
3.4.2 椭圆曲线密码(ECC)
椭圆曲线密码是新一代非对称算法,基于椭圆曲线数学难题设计,同等安全强度下,ECC的密钥长度远小于RSA。例如256比特ECC密钥的安全等级等同于3072比特RSA密钥,这意味着ECC的算力、内存占用更低,完美契合嵌入式设备的资源约束,目前在物联网、嵌入式终端中快速普及。
主流ECC衍生算法分为ECDSA与EdDSA两大类:
- ECDSA:椭圆曲线数字签名算法,1999年推出,广泛用于设备身份认证、固件签名,算法运行过程中需要生成随机数(Nonce),随机数质量不足会引发安全漏洞;
- EdDSA:以Ed25519、Ed448为代表,2011年推出,基于扭曲爱德华曲线设计,采用确定性随机数生成方案,规避了随机数漏洞,安全性与稳定性更强,Ed25519使用256比特密钥搭配SHA-512哈希,是当前嵌入式签名场景的优选算法。
3.5 密钥交换协议:Diffie-Hellman
在两台嵌入式设备建立加密通信前,需要协商出一套共同的对称会话密钥,Diffie-Hellman(DH)协议就是经典的密钥交换方案,1976年正式发布。该协议的核心能力是:通信双方在攻击者全程窃听报文的情况下,依然能够协商出一致的私密密钥,第三方无法通过截获的公开数据还原密钥内容。
DH协议还具备前向保密性:即便设备长期使用的根密钥后续发生泄露,过往所有通信的会话密钥也不会被破解,历史通信数据依然安全。在嵌入式网络设备、网关通信场景中,DH及其衍生的ECDH(椭圆曲线DH)协议是TLS、SSH等协议的底层基础。

3.6 算法组合与典型应用场景
综合对称、非对称、哈希、密钥交换算法的特性,嵌入式系统形成了固定的算法组合范式,覆盖绝大多数业务场景:
- 单纯签名场景(安全启动、固件校验):使用RSA、ECDSA、EdDSA对固件哈希摘要进行签名,验证方通过公钥校验签名,判断固件合法性,全程不做数据加密;
- 单纯加密场景(磁盘、分区加密):使用AES搭配GCM/CTR等工作模式,对存储数据加密,依靠对称算法的高效率保障读写性能;
- 安全通信场景(TLS、SSH):采用"非对称算法身份认证 + DH/ECDH密钥交换 + AES数据加密"的组合,兼顾身份合法、密钥安全、通信高效。
3.7 TLS协议与握手流程解析
TLS是嵌入式设备最常用的安全通信协议,前身是SSL,目前主流版本为TLS 1.3,广泛应用于物联网MQTTs、HTTPS、设备远程管理等场景。TLS依托整套密码体系,实现通信双方身份认证、数据加密、防篡改,本节以仅服务端认证的TLS 1.3握手流程为例,完整拆解交互逻辑,这也是绝大多数嵌入式客户端访问云端的标准模式。

完整握手分为六个核心步骤:
- 客户端发送Client Hello:客户端发起连接请求,携带自身支持的TLS版本、32字节随机数、支持的AES加密套件、密钥交换参数(DH公钥参数),向服务端发起协商;
- 服务端回复Server Hello:服务从客户端的列表中选定TLS版本、加密套件与密钥交换方案,同时生成自身随机数与DH公钥参数,返回给客户端,完成基础配置协商;
- 服务端发送证书与证书验证:服务端下发由CA签发的公钥证书,同时使用自身私钥对所有前文握手报文生成签名,证明自身持有证书对应的私钥,完成身份认证;
- 服务端发送Finished报文:服务端使用协商出的临时密钥生成HMAC摘要,告知客户端服务侧握手流程完成;
- 客户端发送Finished报文:客户端同样生成HMAC摘要,确认客户端握手流程完成;
- 应用数据传输:双方基于协商好的会话密钥与AES加密套件,传输业务数据。
整个握手流程串联了非对称签名、DH密钥交换、对称加密、哈希校验四大技术,是密码学体系在嵌入式网络中最典型的落地案例。
3.8 公钥基础设施(PKI)
TLS证书、设备身份证书的正常运转,依赖公钥基础设施(PKI)。PKI是一套完整的规则、机构、流程体系,核心作用是对公钥进行身份背书:证书颁发机构(CA)使用自身私钥为实体(设备、服务器、用户)的公钥签发证书,证书内包含实体信息、公钥、有效期、CA签名等内容。
设备验证证书时,通过CA根证书逐级校验签名,形成信任链,只要根证书可信,整条链路的证书都具备合法性。嵌入式设备、物联网集群、邮件加密等场景均依赖PKI体系,设备量产阶段烧录根证书、现场部署阶段签发设备证书,是嵌入式安全的标准流程。证书主流格式为X.509,同时支持证书吊销机制,当设备密钥泄露、证书失效时,可通过吊销列表终止证书权限。
3.9 密码学实操实验概述
理论之外,密码学的落地离不开工具实操,嵌入式领域主流使用OpenSSL工具链完成所有密码实验,包括:生成各类密钥、创建X.509证书、加密/解密文件、生成与验证数字签名、测试不同算法的运算性能、模拟密钥交换与证书吊销。掌握OpenSSL的常用命令,是嵌入式工程师落地密码方案的必备技能。
四、硬件安全隔离:CPU特权级与内存防护机制
密码学解决了数据本身 的安全问题,而硬件隔离机制则从运行环境层面划分权限、隔离风险,防止低权限程序越权访问硬件、内存与高权限数据。现代嵌入式Linux基于ARM、x86架构CPU实现分层特权模型,将内核与用户态彻底隔离,配合内存管理单元(MMU)、内存属性控制、特殊防护指令,构建最基础的硬件安全屏障。
4.1 内核与用户态隔离的必要性
嵌入式Linux系统中,内核是整个系统的安全管控核心,承担进程隔离、用户权限管控、文件访问控制、硬件资源调度等关键职责。一旦内核被攻陷,攻击者将获得整个设备的最高权限,所有上层安全防护都会形同虚设。因此,现代CPU均设计了特权分级机制,严格区分内核态与用户态,让普通应用程序无法直接操作硬件、访问内核内存。
这套隔离机制依托CPU硬件实现,不同架构的命名与实现方式略有差异:
- x86架构:定义4个保护环(Ring 0~Ring 3),实际工程中仅使用两个层级,Ring 0为内核态,拥有全部硬件访问权限;Ring 3为用户态,权限被严格限制,这也是桌面、服务器Linux的标准模型;
- ARM架构(嵌入式主流):定义多个异常等级(EL),EL0为用户态,EL1为内核态,EL2为虚拟化层,EL3为监控层,不同等级拥有不同的硬件访问权限与指令执行权限。
CPU在执行指令、访问内存时,会实时校验当前特权等级,低等级进程尝试执行高等级指令、访问高等级内存时,会触发异常,系统终止非法操作。
4.2 系统调用:用户态与内核态的交互桥梁
用户态应用无法直接访问内核资源与硬件,若需要读取文件、操作网络、读写外设,必须通过系统调用向内核发起请求。系统调用是用户态进入内核态的唯一合法通道,由CPU专属指令触发,完成特权等级切换。

在Linux系统中,每一个系统调用都被分配唯一数字编号,内核通过unistd.h头文件定义编号映射,例如__NR_read编号为63、__NR_write编号为64。用户态程序调用libc的read()、write()等函数时,最终都会封装为系统调用指令:CPU保存用户态上下文,切换至内核态,内核查询系统调用表找到对应的处理函数,执行逻辑后再切换回用户态,恢复上下文。
ARM架构使用svc指令、x86使用syscall指令完成切换,系统调用的参数通过CPU寄存器传递,内核会对参数合法性做严格校验,这也是防止参数类漏洞的第一道关卡。系统调用的管控也是后续seccomp安全机制的基础。
4.3 虚拟内存与MMU内存保护
现代嵌入式Linux全部开启内存管理单元(MMU),CPU不再直接访问物理内存,而是使用虚拟地址,MMU负责完成虚拟地址到物理地址的地址翻译。每一个用户进程都拥有独立的虚拟地址空间,进程之间、进程与内核之间的内存天然隔离,即便一个进程出现内存损坏、越界访问,也不会影响其他进程与内核。
内存页是MMU管理的最小单位,页描述符(页表项)中定义了丰富的内存属性,用于精细化权限控制,这是嵌入式内存安全的核心:
- 用户态标识位:区分该内存页属于内核还是用户态,限制跨权限访问;
- NX(不可执行)位:x86架构的NX位、ARM架构的PXN/UXN位,标记内存页是否允许执行代码。将数据内存页设置为不可执行,能够有效防御缓冲区溢出、代码注入类攻击,攻击者即便向数据区写入恶意指令,也无法执行;
- SMAP/SMEP防护:x86架构的SMEP禁止内核执行用户态内存中的代码,SMAP禁止内核访问用户态数据,从硬件层面阻断内核态被用户态数据劫持的路径;ARMv8架构则通过拆分的XN位实现同类防护能力。
结合内存属性,系统可以将内存划分为代码段、数据段、栈、堆等区域,分别配置不同的读写、执行权限,最小化内存攻击面。文中配套的实验代码也验证了mprotect系统调用修改内存权限后,非法访问会触发段错误(SIGSEGV),直观体现硬件防护的效果。
4.4 传统特权模型的局限性
内核与用户态的两级隔离是通用Linux的标准模型,但在高安全要求的嵌入式场景中存在明显短板:第一,Linux内核代码体量庞大、功能复杂,攻击面极广,漏洞难以完全杜绝;第二,部分场景下内核本身不可信,例如虚拟机宿主内核、第三方定制ROM;第三,设备需要保护密钥、生物信息等高敏感数据,即便内核被攻破,也不能让这些数据泄露。
为了解决上述问题,ARM架构推出了TrustZone硬件隔离技术,在原有异常等级之外,划分独立的安全世界,实现比内核更高等级的硬件隔离,这也是高端嵌入式安全设备的标配方案。
五、ARM TrustZone 可信执行环境深度解析
ARM TrustZone是专为ARM架构嵌入式设备设计的硬件级双世界隔离技术 ,广泛应用于手机、车载、支付终端、工业加密设备,能够将系统划分为安全世界(Secure World) 与普通世界(Normal World/富环境),两个世界硬件资源隔离、运行环境独立,即便是普通世界的Linux内核被完全攻破,攻击者也无法访问安全世界的数据与程序。

5.1 TrustZone 基础架构与层级划分
TrustZone的隔离逻辑与CPU原有异常等级(EL)正交,也就是说,每一个异常等级都分为安全与非安全两个状态:
- 安全世界:包含EL0(可信应用TA)、EL1(可信操作系统TEE)、EL3(安全监控器),其中EL3是整个TrustZone的最高权限,仅存在于安全世界,负责两个世界的切换;
- 普通世界:同样包含EL0(普通用户应用)、EL1(Linux内核)、EL2(虚拟化Hypervisor),我们日常运行的嵌入式Linux系统,全部运行在普通世界。
安全世界拥有独立的硬件资源:部分专用外设、加密引擎、一次性可编程存储器(OTP/eFuse)、独立内存,这些资源仅对安全世界开放,普通世界无法直接访问,从硬件层面阻断越权路径。
5.2 世界切换机制
两个世界的切换由**安全配置寄存器(SCR)**的NS位控制,该寄存器仅能在安全世界的EL1~EL3权限下访问,普通世界无法修改。系统上电后,CPU默认从安全世界的EL3启动,依次初始化安全世界、普通世界,完成启动流程。
切换分为两个方向,规则严格区分:
- 安全世界 → 普通世界:仅由EL3安全监控器修改SCR的NS位为1完成切换,其他安全世界层级无权操作;
- 普通世界 → 安全世界 :无法直接修改寄存器,只能通过两种异常触发切换:一是FIQ异步中断,二是
smc(安全监控调用)指令。普通世界的用户态EL0无法直接执行smc,必须先通过系统调用进入普通世界内核EL1,再发起调用,多层校验提升攻击门槛。
这套切换规则保证了普通世界无法主动篡改安全世界状态,所有跨世界访问都必须经过EL3监控器的校验。
5.3 ARM Trusted Firmware(TF-A)固件体系
TrustZone安全世界并非凭空运行,需要专用固件支撑,**ARM Trusted Firmware(TF-A)**是业界标准的开源安全世界实现,分为面向应用处理器的TF-A与面向单片机的TF-M,也是绝大多数ARM嵌入式SoC的默认安全固件。
5.3.1 TF-A 启动阶段划分
TF-A将整个启动流程划分为5个固化阶段,每个阶段分工明确,逐级引导,也是嵌入式安全启动链路的重要组成:
- BL1 :SoC厂商固化在ROM中的第一阶段引导程序,只读不可篡改,是整个系统的信任根,运行在EL3;
- BL2:第二阶段引导程序,又称可信引导固件,初始化基础硬件,加载后续镜像,对应U-Boot的SPL;
- BL31 :EL3运行时固件,常驻内存,核心职责是处理
smc调用、中断等跨世界请求,是安全监控器的主体; - BL32(可选):安全世界操作系统(TEE),运行在安全EL1,如开源的OP-TEE,用于承载可信应用;
- BL33:普通世界引导程序,即标准U-Boot,引导普通世界的Linux内核。
在NXP i.MX93等实验平台中,标准启动链路为:ROM(BL1) → U-Boot SPL(BL2) → TF-A(BL31) → OP-TEE(BL32) → U-Boot主程序(BL33) → Linux内核,整个链路环环相扣。启动完成后,仅BL31与BL32常驻内存,负责日常的跨世界交互。

5.4 可信执行环境(TEE)与可信应用(TA)
安全世界中运行的操作系统被称为可信执行环境(TEE) ,对应普通世界的Linux。TEE的设计原则是代码量极小、攻击面极低,远比重型Linux内核安全,即便普通世界被攻陷,TEE依然可以保障敏感数据安全。
目前主流TEE分为商业闭源与开源两大类:商业方案包括三星Knox、高通QTEE、华为iTrustee、Trustsonic Kinibi;开源方案以OP-TEE为行业标杆,也是本次实验使用的环境,此外还有Android Trusty、Nvidia TLK等。
运行在TEE安全EL0的应用被称为可信应用(TA),也就是安全世界的"用户程序",专门处理密钥管理、加密运算、生物识别、DRM、支付等高敏感业务。OP-TEE将TA分为三类:
- 伪TA:静态编译进OP-TEE内核,无法单独加载,安全性最高;
- 早期TA:存储在OP-TEE数据段,启动阶段加载;
- REE文件系统TA :存放在普通世界文件系统,由普通世界客户端加载,必须经过签名校验才能运行,防止恶意TA注入。
工程中有一条硬性安全规范:量产设备必须替换OP-TEE默认签名密钥,若使用默认公钥,攻击者可以随意伪造TA,彻底突破TEE防护。
5.5 TrustZone 典型应用与现存风险
5.5.1 核心应用场景
- 软件HSM:依托TEE实现硬件级密钥存储与加密运算,对应PKCS#11标准,替代物理加密机,是嵌入式密钥管理的主流方案;
- fTPM:基于TEE实现固件版可信平台模块,用于度量启动、身份认证;
- 支付与DRM:金融终端的交易加密、多媒体设备的版权保护;
- 生物识别:指纹、人脸数据的采集与比对,生物原始数据全程不离开安全世界;
- 恶意软件检测:安全世界监控普通世界运行状态,检测恶意程序。
5.5.2 安全风险
TrustZone是硬件隔离屏障,但安全强度完全依赖上层软件实现:各类厂商的TEE、TA都曾曝出栈溢出、任意代码执行、权限提升等漏洞,攻击者利用软件漏洞突破安全世界边界;同时,TrustZone的实现高度依赖SoC硬件,不同厂商的固件、配置互不兼容,移植与维护难度较高。
5.6 安全世界实操实验方向
在实际工程与培训实验中,针对TrustZone的实操内容包括:编译TF-A、OP-TEE与TA程序,添加日志观察CPU异常等级、安全/普通世界的切换流程,编写自定义可信应用,并在Linux用户态开发客户端完成跨世界交互,完整掌握TEE的开发与调试流程。
六、安全启动(Secure Boot):全链路固件防篡改体系
经过威胁建模、密码学、硬件隔离三层防护后,最后一道底层屏障就是安全启动。安全启动的核心目标是:保证设备从上电到Linux内核启动的全链路固件、镜像、配置未被篡改,阻止攻击者替换恶意固件、植入后门,是嵌入式设备"上电第一道安全锁"。
6.1 安全启动的核心概念与威胁模型
设备出厂时固件处于可信状态,但设备流通、现场使用过程中,攻击者可以通过重刷闪存、运行时篡改等方式替换固件。安全启动构建逐级校验的信任链:从上一级可信代码,校验下一级镜像的哈希与签名,校验失败则拒绝执行,中断启动流程。

标准校验流程为:只读ROM(信任根) → 一级引导程序 → 二级引导程序 → Linux内核 → 根文件系统,每一级都使用上一级信任的公钥完成签名校验。安全启动的威胁模型明确了防护范围:主要对抗离线固件篡改 (拆机重刷)与运行时固件持久化篡改 ;但无法防御系统运行后利用漏洞发起的实时入侵。同时,安全启动的安全底线由信任根决定,信任根包括只读BootROM、一次性可编程熔丝(OTP/eFuse)、烧录在熔丝中的公钥哈希,这部分由芯片厂商固化,用户无法修改。
6.2 安全启动核心实现原理
- 信任根存储:芯片BootROM为只读存储器,无法篡改;用于校验第一级引导程序的公钥哈希,烧录在OTP/eFuse一次性熔丝中,熔丝一旦烧写便无法修改,杜绝密钥替换;
- 逐级签名校验:每一级固件都由上一级厂商/开发者的私钥签名,镜像中包含签名与原始哈希;加载镜像前,运行中的程序使用内置公钥解密签名、还原标准哈希,再计算当前镜像的实时哈希,两者对比,一致则允许继续启动,不一致则报错停机;
- 密钥存储优化:熔丝中一般存储公钥的哈希,而非完整公钥,这样设计的好处是哈希长度固定,不受签名算法影响,适配性更强。
部分芯片支持"熔丝锁定"功能,安全启动配置完成后,再次烧录熔丝彻底关闭修改通道,进一步提升安全性。
6.3 主流平台安全启动案例
6.3.1 UEFI 安全启动
x86架构PC、服务器普遍使用UEFI固件实现安全启动,Windows 11已将其列为强制要求。UEFI支持x86-64、ARM、RISC-V等多种架构,结合Intel Boot Guard、AMD PSB等硬件机制完成底层校验,使用微软PE文件格式存储引导镜像,是通用计算设备的标准方案。
6.3.2 树莓派安全启动
树莓派4及以上版本支持安全启动,BootROM内置4组RSA2048公钥,OTP熔丝存储公钥吊销状态、OEM密钥哈希与设备唯一私钥。启动过程分为多级校验:BootROM校验EEPROM中的引导程序 → 引导程序校验OEM密钥与启动配置 → 最终校验Linux镜像,树莓派5进一步强化了校验规则,EEPROM必须经过OEM密钥二次签名,未烧录OTP的设备无法正常启动。