微处理器内安全子系统的安全增强技术*

2021-09-24 11:12张剑锋
计算机工程与科学 2021年8期
关键词:极性生命周期密钥

石 伟,刘 威,龚 锐,王 蕾,张剑锋

(国防科技大学计算机学院,湖南 长沙 410073)

1 引言

随着信息技术的快速发展,网络与信息化在生活中的应用日益普及,电子商务、电子银行和电子政务等新兴技术也正逐渐走进人们的生活。上述技术的普及一方面提升了工作、生活的便利性,另一方面也带来了潜在的风险,如信息泄露。因此,在信息技术快速发展的同时,信息安全受到越来越多的重视。信息安全是指对信息系统进行防护,保护计算机硬件、软件和数据不因偶然的或者恶意的原因而遭到破坏、更改和泄露。

信息系统的安全是一个系统性的问题,需要从系统架构和软硬件多角度进行定义。处理器等底层硬件是整个系统安全的基石,通常从安全与可信2个方面进行防护。可信是安全的基础,可信主要通过度量和验证的技术手段确保整个系统的行为是没有被修改的,是可控的。安全则是更高范畴的概念,涉及加解密、防篡改、数据保护、身份认证和物理攻击防护等,需要在底层硬件上进行多种安全技术设计。

早期可信计算的研究主要以国际可信赖计算组织TCG(Trusted Computing Group)为主,该组织定义的TPM(Trusted Platform Module)规范[1]在可信计算领域得到广泛的应用,基于TPM标准研制的TPM芯片已在服务器、桌面和嵌入式等领域得到全面推广。国内开展可信计算研究的基本思想与TCG一致,国内对应的是TCM(Trusted Cryptography Module)芯片,遵循国家标准“可信计算密码支撑平台功能与接口规范”[2]。随着可信计算的发展,可信的概念不再局限于TPM或TCM芯片,可信执行环境TEE(Trusted Execution Environment)成为一个热门研究方向[3]。ARM的TrustZone 技术[4]、Intel的SGX(Software Guard eXtensions)[5]和AMD的安全处理器架构[6]是目前比较成功的可信执行环境技术。

随着攻击手段的丰富与攻击技术的提升,信息系统面临的各种安全风险和安全威胁更加严重,其脆弱性也更加明显。可信能够为应用提供相对安全的执行环境,保护敏感信息,但是不能完全解决信息系统的安全威胁问题。安全是从底层逻辑电路、物理实现、固件和应用安全等多个层次、多个角度提升系统的安全性。安全芯片通常采用多种安全防护技术,如密码加速引擎、密钥管理、安全启动、可信执行环境、安全存储、固件管理、量产注入、生命周期管理、抗物理攻击和硬件漏洞免疫等[7]。

传统安全处理器设计通常采用可信与安全相结合的思路,实现安全启动、安全隔离和安全防护技术。安全计算机系统通常采用处理器加板载TCM/TPM芯片结合的方式来实现。这种方式实现的安全系统存在一定的不足。处理器与作为安全原点的TCM/TPM芯片处于松耦合状态,性能与安全性均存在一定的问题。随着技术的不断发展,越来越多的处理器设计厂商直接在处理器内部实现TCM/TPM的功能。比如海思麒麟970处理器集成inSE(integrated Secure Element)安全子系统,ARM 提供了CryptoIsland安全IP(Intellectual Property)。

本文研究处理器内安全子系统的安全增强技术,首先研究安全子系统体系架构及其与功能处理器的关系;然后针对安全子系统,从多角度展开研究,提升子系统的安全性;最后设计实现一款安全子系统,并对性能、面积和安全性进行评测。

2 安全处理器体系结构

图1所示为一种采用安全子系统进行安全增强的微处理器结构示意图。该处理器包含一个功能处理器系统与一个安全子系统。功能处理器系统实现传统处理器的功能,包括处理器核、互连网络、存储器控制器接口、PCIe与串口等高速及低速外设等。安全子系统则提供一个更高级别的安全执行环境,作为整个处理器的安全原点。

功能处理器中可以实现可信执行环境与密码模块,为应用程序提供相对独立的安全执行环境。以ARM处理器为例,功能处理器中实现了TrustZone。处理器核具有安全执行态与非安全执行态;互连网络需要同时支持安全事务及非安全事务的传输;存储管理模块将内存空间分割成多个不同的空间,并进行访问权限控制。

Figure 1 Architecture of secure processor with security subsystem图1 采用安全子系统的安全处理器体系结构

安全子系统从结构组成看,包括嵌入式微控制器核、互连网络、存储单元、密码模块、真随机数模块、一次可编程OPT(One Time Programming)模块和QSPI(Quad Serial Peripheral Interface)等。由于嵌入式微控制器核对性能要求不高,互连网络通常可以采用AHB(Advanced High performance Bus)等低速网络实现。密码模块不仅完成启动程序验签工作,还为应用程序提供密码运算加速,其性能要求相对较高。

功能处理器系统与安全子系统之间通过特殊的命令通道进行交互。功能处理器系统请求安全子系统为其提供安全服务,同时保证安全系统中的密钥等敏感信息的安全性。

3 安全子系统体系结构及其安全增强

一个安全处理器系统必须提供安全启动、密钥管理和生命周期管理等功能,这些功能都需要在安全子系统中实现。安全子系统中存储了密钥及敏感数据等信息,因此安全子系统需要具备抗物理攻击能力,防止敏感信息被窃取。本节对安全子系统各组成部件进行介绍,并阐述其相应的安全增强技术。

Figure 2 Architecture of RISC processor core with security enhancement technologies图2 采用安全增强技术的RISC处理器核结构示意

3.1 处理器核增强

鉴于面积、性能要求,安全子系统处理器核通常采用相对简单的32位RISC指令集系统,比如ARM-M、RISC-V和MIPS等。图2所示为采用安全增强技术的一种RISC处理器核结构示意。图2中给出了3种安全增强技术,分别为随机产生时钟停顿、随机清空指令缓存和随机数据极性。

上述3种方法的基本思想是在保证功能相同的前提下,随机改变程序的执行行为,进而提升抗物理攻击的能力。即使针对相同的程序与相同的数据,每一次执行的行为都是不同的,其功耗等信息也不相同。随机产生时钟停顿与随机清空指令缓存能够在程序中随机插入随机延迟。随机数据极性则是为流水线中的数据都生成一个极性标签,极性标签随数据一起传输。极性标签与传输数据进行简单运算后能够恢复出原始数据,在保证正确性的同时获得随机的运算功耗,提升抗功耗攻击能力。

3.2 互连网络

为抵抗物理攻击,互连网络同样采用插入随机延时与随机极性的方法,其基本思想与处理器核的安全增强思想相似。图3所示为采用安全增强技术的互连网络结构,具体实现与网络的具体协议相关。

以AHB协议为例,可以采用下面几种方法增加数据传输的随机性:

(2)增加一个专门进行无效访问的主设备,随机发送访问请求;

(3)对于从设备,随机增加读写操作的响应时间。

为支持极性传输,网络报文需要扩宽1位,专门用于传输报文的极性,如图3中虚线所示。对于主设备与从设备,如果本身支持极性的传输,则互连网络的极性信号与设备的极性信号直接连接;如果设备不支持极性传输,则需要进行极性生成与极性恢复。数据进入互连网络的时候,根据随机数随机生成极性,并根据生成的极性修改传输数据;数据从互连网络进入外设时,根据极性与传输数据恢复成有效数据。随机延迟与随机极性可以采用线性移位反馈寄存器LFSR(Linear Feedback Shift Register)生成的伪随机数来计算。

Figure 3 Security enhancement technologies of interconnection network图3 互连网络安全增强示意

3.3 存储模块

安全子系统中的存储模块分为ROM、RAM、OTP、eFlash和外部存储器等。ROM存储最初的启动程序,完成外部程序的第1级验签。OTP存储密钥等一次可编程信息,eFlash则存储多次可编程的用户敏感信息。片外存储器存储系统启动程序等,由ROM程序验签后使用。

图4给出了OTP结构示意。存储体中存储了密钥、生命周期和芯片ID等信息。在处理器加电复位以后,硬件自动读取存储体中的信息,放入寄存器中使用。生命周期控制存储体的烧录权限及系统的调测试接口权限。在不同的生命周期状态下,用户只能对存储体中部分空间进行读写。密钥寄存器不能由程序直接读取,但是可以被密码模块及密钥派生模块使用。OTP中还可以存储程序版本号,用于防护回滚攻击。

Figure 4 Architecture of OTP图4 OTP结构示意

3.4 密钥管理

密钥是安全芯片的重要敏感信息,涉及到安全芯片的使用流程及其它敏感信息的安全。密钥大体可以分为3类:芯片厂商密钥、设备厂商密钥和用户密钥。不同的密钥有各自的生成、存储、访问和使用等权限,且需要与芯片的生命周期相结合。芯片厂商密钥由芯片厂商注入并由底层启动程序使用,设备厂商密钥由整机厂商注入并使用,用户密钥由用户注入并使用。芯片厂商密钥和设备厂商密钥存储在片内专用的非易失存储区域内,且不得出片;用户密钥由用户程序决定存储位置。不同种类的密钥在不同的生命周期状态下,具有不同的访问权限,只有该密钥的授权方才能在对应的生命周期状态下对该密钥进行读写访问。

3.5 密码模块

密码技术是保护信息安全的根基,已经成为信息系统必不可少的重要组成部分。现行的密码算法主要包括对称密码算法、非对称密码算法和杂凑算法等,提供鉴别、完整性和抗抵赖等服务。随机数在密码学中应用非常广泛,在密码体制中,对称加密算法中的密钥、非对称加密算法中的素数及其密钥的产生都需要随机数。密码算法可以通过软件与硬件2种方式实现。图5为基于硬件的密码模块实现示意图。

Figure 5 Implementation of cipher module based on hardware图5 基于硬件的密码模块实现示意

3.6 生命周期管理

生命周期管理是指芯片从生产到交付整机厂商,进而由整机厂商将其作为整机的一部分交付最终客户的全生命周期过程的管理。在不同的生命周期状态下,需要控制芯片中的密钥及调测试接口的访问使用权限,以此保证芯片不同阶段的所有者,具有相应的安全资源访问权限。芯片的生命周期转换是单向的,不能反向转换,且只能逐级进入。图6所示为一种生命周期管理示意。

Figure 6 Life-cycle management of security processor图6 生命周期管理示意

芯片刚生产出来时,处于芯片厂商状态。此时,所有的调测试端口都是使能的,芯片厂商能够访问芯片内的所有敏感信息。当芯片交给设备厂商后,芯片是设备厂商状态。设备厂商状态需要保留一定的调测试能力,但是全芯片内部的扫描功能需要关闭。当芯片到达用户手中后,芯片进入用户状态。用户可以使用芯片的各种安全功能,但是不能使用调测试功能,以保护各种密钥的安全性。同时,启动的时候必须采用安全启动。在设备厂商返厂状态,芯片的部分调测试功能都被打开。在芯片返厂状态,所有的debug及测试功能都将打开。

2018年3月31日调查发现,小麦播后7 d 47% 异隆·丙·氯吡可湿性粉剂 3 000 g/hm2处理,小麦的株高、茎蘖数均显著高于空白对照,而与人工除草相比无显著差异(表5);在小麦3叶1心时,47%异隆·丙·氯吡可湿性粉剂与3%甲基二磺隆油悬浮剂或15%炔草酯可湿性粉剂混用,小麦的株高、茎蘖数均显著高于空白对照,与人工除草相比无显著差异(表5)。

3.7 安全启动

现在几乎所有的安全芯片都要支持安全启动,安全启动是其它安全机制的基础,如果系统软件在系统启动之前就已经被篡改,且系统软件拥有很高的权限,那么运行在该系统上的敏感数据将不再安全,相关的安全防护措施形同虚设,起不到安全防护作用。

安全启动原理是把可信根存放在片内ROM,从片内的可信根开始逐级认证验签,保证启动中的每一个阶段的内容是安全的,即采取可信链的形式,一级验签一级,一级信任一级,将信任逐渐传递,最终形成一个可信链。

图7所示为处理器安全启动流程示意。首先安全子系统的ROM程序验签外部的基础固件;然后基础固件再验签第三方固件。基础固件的执行、第三方固件验签与执行在功能处理器中完成。第三方固件按照逐级验签的模式,依次加载、验签和执行后续模块,进而引导操作系统。

Figure 7 Flow chart of secure boot 图7 安全启动流程

3.8 抗物理攻击

物理攻击是指攻击者针对芯片实体所做的破坏或者非破坏性攻击,包括错误注入攻击、侧信道攻击与侵入式攻击等。错误注入攻击是指通过抖动电源与抖动时钟等手段,使电路产生错误操作,影响个别指令或某个电路的执行。侧信道攻击是指通过测量分析芯片的功耗、电磁等信息,获取芯片内部的敏感信息。侵入式攻击是指通过打开芯片的封装,使用探针检测并修改电路或获取内部存储器信息进行攻击。

处理器核与互连网络的增强技术能够影响程序执行的行为,提升抗物理攻击的能力。通过加密存储、顶层金属覆盖防护技术,提升侵入式攻击的难度。最后,在安全子系统中实现传感器模块,检测电压及时钟异常,如果发现异常则立即对系统进行复位。

4 实验与结果分析

本文设计实现了一个安全子系统,该安全子系统集成了处理器核、互连网络、ROM、SRAM、DMA控制器、指令Cache、OTP、密码模块、传感器模块、UART和SPI等外设接口,能够很好地实现安全启动、抗物理攻击、密钥管理和生命周期管理等安全功能。其中密码模块需要为功能处理器提供密码服务,因此对性能要求较高,包括商用密码算法和真随机数生成器。

安全子系统的整体工作频率为100 MHz,而密码模块的频率为600 MHz。安全子系统的整体面积为0.513 mm2,其中密码模块的面积为0.185 mm2。

对安全子系统及密码模块的性能进行测试的结果,如表1所示。

Table 1 Performance test results on security subsystem 表1 安全子系统性能测试结果

安全子系统Dhrystone的测试性能为1.56 DMIPS/MHz,Coremark测试性能为2.375 iterations/s/MHz,能够满足系统需要。本文对随机产生时钟停顿、随机清空指令缓存和随机数据极性进行了测试,其中随机产生时钟停顿与随机清空指令缓存概率越高,性能越低,与停顿及清空概率成反比关系。随机数据极性基本不影响程序性能,但是能够获得更随机的功耗。

最后,对安全子系统的安全特性进行了测试,测试内容包括安全启动、密钥测试、DFT(Design for Test)测试、Debug测试、生命周期测试、顶层金属覆盖防护测试、传感器测试、密码模块测试和真随机数测试等。安全启动、密钥测试、DFT测试和Debug测试需要与生命周期测试组合进行,因为在不同生命周期状态下,启动流程、调测试权限和密钥使用权限有所不同。对安全启动测试需要进行正向测试与反向测试,正向测试是指在条件满足的情况下测试启动流程是否正常进行,而反向测试是指在各种不满足条件的情况下测试启动流程是否按期望进行报错。调测试同样需要正向测试与反向测试。真随机数测试在后仿环境下进行,并对产生的随机数的随机性进行验证。顶层金属覆盖防护测试与传感器测试需要在仿真过程中注入错误,检测电路是否报错。在芯片流片以后,请第三方测试机构在实际芯片上进行了多种安全测试,部分测试结果如表2所示,验证了本文设计的有效性。

5 结束语

本文针对计算机系统的安全原点向处理器中转移的需求,对微处理器内安全子系统的体系结构进行研究,提出了一套系统安全解决方案,从系统结构和微架构不同层次对处理器安全进行增强,并且对安全子系统进行了设计、 实现与评估。采用了本文提出的安全增强技术的桌面处理器目前在安全领域得到了很好的应用,证明了本文所述安全技术的有效性。

Table 2 Functional test results on security subsystem表2 安全子系统功能测试结果

猜你喜欢
极性生命周期密钥
全生命周期下呼吸机质量控制
密码系统中密钥的状态与保护*
从生命周期视角看并购保险
跟踪导练(四)
民用飞机全生命周期KPI的研究与应用
TPM 2.0密钥迁移协议研究
企业生命周期及其管理
一种对称密钥的密钥管理方法及系统
表用无极性RS485应用技术探讨
一种新型的双极性脉冲电流源