可重构嵌入式系统安全启动流程设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 硬件设计与实现
保障软件可重构下载的安全性,主要硬件基础是存储区 管理逻辑和相关密码运算单元。存储区管理逻辑使得系统可 以通过软件指令,对各个程序存储区进行选择下载及运行, 以及对不同数据存储区进行地址与数据通路配置。同时,管 理逻辑还强行规定了存储区的选择规则,来实现上层代码不 能对低层的存储资源进行访问;密码运算单元则用于下载代 码的来源合法性验证及完整性度量,配合存储区管理逻辑, 实现软件的安全下载与可信运行。 2.1 存储区管理逻辑的原理与设计实现
level0
cos
level1
appli
level2 cpuramx asisramx
大小/KB 16 256 1
16
1
16
1 4 4
区域类型
程序区
数据区 程序区 数据区 程序区 数据区
数据区
图 1 存储区划分
层次 0
1 2 3 层重用
在图 1 中,数据区被划分为 level0,level1,level2,cpuramx, asisramx 5 个存储区。其中,level0,level1,level2 分别为各层 专用秘密存储区,仅允许本层执行代码进行操作;cpuramx 与 asisramx 在系统运行于不同层次时,作为该层次执行代码 的文件系统区与协处理器专用数据处理区。程序区被划分为 bootloader0,download,cos,appli 4 个存储区,其中,bootloader0 为系统 0 层启动代码存储区,该启动代码负责对将要下载的 操作系统或应用程序进行来源认证以及协处理器的自检等工 作;download 也属于系统的 0 层程序区,是专门负责向芯片 内部下载代码的可执行代码存储区;cos 为一层操作系统下 载区。系统在 0 层时由启动代码对下载代码来源进行认证, 由 download 程序完成操作系统下载;appli 为应用程序下载 区,可以在操作系统内部通过调用下载专用程序进行下载。
基金项目:现代通信国家重点实验室基金资助项目(9140C1106030806) 作者简介:温圣军(1983-),男,硕士研究生,主研方向:密码学与 密码工程;张鲁国,副教授 收稿日期:2009-04-30 E-mail:xilli1984@
对存储区的配置主要通过数据配置、地址配置及控制配 置模块来完成。其设计原理为:以 MCU 中 2 个特殊功能寄 存器 0ADH(chipchoose), 9BH(ramxchoose)为控制信号寄存 器,根据软件配置的控制信号,数据、地址配置模块分别将 地址与数据映射到相应的输出端口。同时,控制配置模块置 当前操作存储区的时钟使能有效,并根据系统运行层次,配 置读/写使能,关闭其余存储区的时钟使能,实现软件指令对 不同存储区的选取操作。
5 测试与仿真
根据上述设计原理,采用 VHDL 硬件描述语言进行功能 描述,在 Quartus II 5.0 下对设计进行编译综合与功能仿真测 试,程序存储区管理逻辑与数据存储区管理逻辑仿真波形如 图 5、图 6 所示。
图 5 程序存储区管理逻辑仿真
信号以及运行层次对应关系,可知存储区管理逻辑设计是正 确的。
除进行硬件功能仿真外,本文还对其进行 FPGA 下载测 试。选用 Altera 公司的 Cyclone II 系列 EP2C35F672C6 器件 作为测试载体,在 KEIL 2.0 中采用 8051 汇编语言进行代码 编译,芯片通过 RS232 串口与主机进行数据交互。在测试过 程中,编写一个恶意程序,其目的为下载后以 0 地址开始, 对 0 层专属存储区 level0 连续写入 20 个 FFH。为验证设计正 确性,代码同时向 level1 写入连续 20 个 FFH。图 7 为恶意代 码执行后,通过 Quartus II 的 In-System Memory Content Editor 观察到的 FPGA 内部存储区实时数据。
验证下载代码来源需要相应的密码算法支持。密码算法 的实现有软硬件两种实现形式,为提高芯片执行速度及运算 安全性,本文采取硬件协处理器方式,将密码算法集成于嵌 入式系统内部。分析嵌入式系统的安全功能需求,结合当前 芯片需要提供多种密码功能发展趋势,设计集成了 RSA, TDES, SHA1 3 种密码算法 IP 核。另外,芯片内置基于组合 逻辑反馈环路的真随机数发生器,作为内部密钥生成乱数种 子及交互协议的现时生成。功能区结构如图 3 所示。
存储区管理逻辑是实现系统安全启动流程的硬件基础, 对其设计原理进行阐述,可分为存储区划分、存储区配置、 存储区层次控制 3 个方面。
为满足代码可下载设计要求,限制下载代码的片内资源
—134—
操作权限,实现系统分级启动,设计将芯片的程序及数据存 储区进行区域和层次划分如图 1 所示。
名称 bootloader0 download
温圣军,张鲁国
(解放军信息工程大学电子技术学院,郑州 450004)
摘 要:针对嵌入式系统的软件可重构下载中存在的安全性问题,设计一种可重构嵌入式系统的安全启动流程,研究硬件存储区管理模式, 对密码协处理器进行集成,并加以实现。仿真实验结果表明,该流程能够使系统对下载软件的合法性进行验证,当下载代码合法但为恶意 时,可以保证芯片自身安全性。 关键词:嵌入式系统;安全性;灵活性;启动流程
在更具体的启动流程中,启动分初始启动与正常启动 2 类。初始启动与正常启动的不同在于正常启动要对所下载 代码的完整性进行验证,验证方式为调用 SHA1,收集下载 代码摘要,与初次下载收集的数据摘要进行比较。完整性验 证的失败会导致系统重启,此时系统认为代码被篡改,需要 重新下载更新。
—135—
向 2 层的应用程序下载流程与向 1 层的操作系统下载流 程基本相同,不同点在于操作系统中应用程序下载命令需与 操作系统的接口规范一致。在本文具体实现中,操作系统接 口完全符合 7816-4,因而相应地设计了下载命令的命令编码。
【Abstract】Aiming at security problems in software restructural download of embedded system, a secure start-up flow for restructural embedded system is designed. The management mode of hardware storage is researched. The code co-processor is integrated and implemented. Simulation experimental results show this flow can identify the validity of system download software, and when the code is legitimate but malice, it can guarantee the chip security. 【Key words】embedded system; security; flexibility; start-up flow
存储区控制由硬件分层锁(LOCK)及控制模块共同完成, LOCK 根据 MCU 中 chipchoose 寄存值,判断当前运行层次, 以及执行程序要求转入哪一层次。若当前层次高于命令要求 的转入层次,则保持原输出,否则进行层次转换,输出转入 层次的控制参数。控制模块以硬件分层锁的输出作为输入, 对各存储区的读/写使能、时钟使能信号进行选择配置,实现 存储区的信任域划分。图 2 给出了存储区控制信号与运行层 次的对应情况。
1 概述
随着信息社会的发展,嵌入式系统设计趋向于满足使用 灵活性与功能多样化的要求。可重构嵌入式系统允许芯片在 出厂后,用户自行配置操作系统或重复下载应用程序,从而 实现单一硬件平台能够支持多应用的要求[1]。
允许代码下载设计特性使得嵌入式系统的安全性受到较 大程度的威胁。恶意代码下载到嵌入式系统内部,可以将芯 片内部的厂家敏感信息读出或者破坏芯片内部功能[2]。分析 代码的下载及运行过程,安全威胁的原因可归结为:(1)未验 证下载代码来源合法性;(2)未限制下载代码运行时的片内资 源操作权限。基于以上原因,本文设计并实现一种单向三级 启动流程,通过验证下载代码来源合法性以及限制下载代码 的片内资源操作权限,使得芯片在具备应用灵活性的同时, 也具有较高安全性。
图 3 功能区结构
从图 3 可以看出,整个功能区由 RSA、TDES、SHA1、 协处理器 IP 桥以及 IP 专用数据处理区 asisramx 组成。各 IP 核输入、输出数据位宽均为 32 bit,运行频率 50 MHz,具体 运行时,系统软件通过对 MCU 中的 FUNCCHOOSE 进行赋
图 4 cos 下载与运行流程
值,由 IP 桥进行选择。IP 桥根据 FUNCCHOOSE 的数值, 配置数据与命令到相应协处理器,将协处理器与 asisramx 连 接,实现数据处理。asisramx 为双端口寄存器,数据宽度对 应于系统数据位宽与协处理器数据位宽,分别为 8 bit 与 32 bit。
3 软件流程
基于上述硬件设计,可以设计相应的可执行代码,通过 软硬件协同,实现可重构嵌入式系统的安全启动流程。系统 在每次启动时,都遵循同样的启动流程,起点为 0 层 bootloader0,终点为 2 层应用程序 appli。图 4 是芯片在初始 下载软件时的流程。
第 35 卷 第 20 期 Vol.35 No.20 ·安全技术·
计算机工程 Computer Engineering
文章编号:1000—3428(2009)20—0134—03
文献标识码:A
2009 年 10 月 October 2009
中图分类号:TP311.52
可重构嵌入式系统安全启动流程设计与实现
层 LOCK 输出
名称
次 输出 控制 bootloader0 download level0 cos level1 appli level2 cpuramx asisramx
clken
1
0 00
r/w
r
1
110
0
0
1
1
r
r/w r/w — — —
r/w
r/w
clken
0
1 01
r/w
—
1
011
1—
1
1
r
r/w r r/w r/w —
r/w
r/w
clken
0
2 10 r/w
—
1
000
1
1
1
1r———来自r r/wr/w
r/w
图 2 存储区控制信号与运行层次对应关系
从图 2 可以看出,在进入高层次运行时,低层的专用秘 密存储区不属于高层代码的可操作范围内。因此,即使下载 代码有恶意企图,也不会对低层的秘密信息构成安全威胁。 2.2 密码运算单元设计与实现
Design and Implementation of Secure Start-up Flow for Restructural Embedded System
WEN Sheng-jun, ZHANG Lu-guo
(Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004)
4 安全性分析
假设嵌入式系统在下载操作系统或者应用程序时,操作 系统/应用程序是有特定目的的可执行代码。基于上述设计方 法,对嵌入式系统的安全性进行简要分析。由于在下载代码 之前,必须进行代码来源合法性认证,因此先可以保证无授 权主体不能够完成代码下载。其次,代码来源合法性认证通 过后,如果代码是恶意的,也可以根据通过验证时使用的密 钥,找出代码下载的执行主体,从而追查到事件负责人。最 后,由硬件存储区管理设计方案可知,恶意代码被硬件逻辑 强行分配一个自属信任域,其操作权限被局限于被分配的操 作区域中,对低层或者其他非属信任域的存储资源不能进行 任何操作。对存储区的受限操作权限,可以保证低层敏感信 息既不会被窃取,也不会被修改,从而实现安全性要求中的 机密性与完整性要求。上述分析表明,通过软硬件协同,本 文提出的设计方法可以较好地解决由代码可下载带来的安全 威胁。
从图 4 可以看出,系统首先在 bootloader0 的控制下,对 协处理器进行功能自检。自检采取内部随机数发生器生成一 组乱数,利用 levle0 中密钥分别进行加减密操作,以能够正 确对乱数进行加减密操作为判断,实现功能自检。SHA1 协 处理器则是以 download 为处理数据,提取其数据摘要,与片 内预存数值进行比较来验证。功能自检失败会导致整个启动 流程的失败。在自检正确的前提下,系统进入命令等待状态。 代码下载命令的执行需要代码下载命令的发起者输入身份密 钥,进而确认代码来源的合法性,仅当身份验证通过,才可 以进行代码下载。
保障软件可重构下载的安全性,主要硬件基础是存储区 管理逻辑和相关密码运算单元。存储区管理逻辑使得系统可 以通过软件指令,对各个程序存储区进行选择下载及运行, 以及对不同数据存储区进行地址与数据通路配置。同时,管 理逻辑还强行规定了存储区的选择规则,来实现上层代码不 能对低层的存储资源进行访问;密码运算单元则用于下载代 码的来源合法性验证及完整性度量,配合存储区管理逻辑, 实现软件的安全下载与可信运行。 2.1 存储区管理逻辑的原理与设计实现
level0
cos
level1
appli
level2 cpuramx asisramx
大小/KB 16 256 1
16
1
16
1 4 4
区域类型
程序区
数据区 程序区 数据区 程序区 数据区
数据区
图 1 存储区划分
层次 0
1 2 3 层重用
在图 1 中,数据区被划分为 level0,level1,level2,cpuramx, asisramx 5 个存储区。其中,level0,level1,level2 分别为各层 专用秘密存储区,仅允许本层执行代码进行操作;cpuramx 与 asisramx 在系统运行于不同层次时,作为该层次执行代码 的文件系统区与协处理器专用数据处理区。程序区被划分为 bootloader0,download,cos,appli 4 个存储区,其中,bootloader0 为系统 0 层启动代码存储区,该启动代码负责对将要下载的 操作系统或应用程序进行来源认证以及协处理器的自检等工 作;download 也属于系统的 0 层程序区,是专门负责向芯片 内部下载代码的可执行代码存储区;cos 为一层操作系统下 载区。系统在 0 层时由启动代码对下载代码来源进行认证, 由 download 程序完成操作系统下载;appli 为应用程序下载 区,可以在操作系统内部通过调用下载专用程序进行下载。
基金项目:现代通信国家重点实验室基金资助项目(9140C1106030806) 作者简介:温圣军(1983-),男,硕士研究生,主研方向:密码学与 密码工程;张鲁国,副教授 收稿日期:2009-04-30 E-mail:xilli1984@
对存储区的配置主要通过数据配置、地址配置及控制配 置模块来完成。其设计原理为:以 MCU 中 2 个特殊功能寄 存器 0ADH(chipchoose), 9BH(ramxchoose)为控制信号寄存 器,根据软件配置的控制信号,数据、地址配置模块分别将 地址与数据映射到相应的输出端口。同时,控制配置模块置 当前操作存储区的时钟使能有效,并根据系统运行层次,配 置读/写使能,关闭其余存储区的时钟使能,实现软件指令对 不同存储区的选取操作。
5 测试与仿真
根据上述设计原理,采用 VHDL 硬件描述语言进行功能 描述,在 Quartus II 5.0 下对设计进行编译综合与功能仿真测 试,程序存储区管理逻辑与数据存储区管理逻辑仿真波形如 图 5、图 6 所示。
图 5 程序存储区管理逻辑仿真
信号以及运行层次对应关系,可知存储区管理逻辑设计是正 确的。
除进行硬件功能仿真外,本文还对其进行 FPGA 下载测 试。选用 Altera 公司的 Cyclone II 系列 EP2C35F672C6 器件 作为测试载体,在 KEIL 2.0 中采用 8051 汇编语言进行代码 编译,芯片通过 RS232 串口与主机进行数据交互。在测试过 程中,编写一个恶意程序,其目的为下载后以 0 地址开始, 对 0 层专属存储区 level0 连续写入 20 个 FFH。为验证设计正 确性,代码同时向 level1 写入连续 20 个 FFH。图 7 为恶意代 码执行后,通过 Quartus II 的 In-System Memory Content Editor 观察到的 FPGA 内部存储区实时数据。
验证下载代码来源需要相应的密码算法支持。密码算法 的实现有软硬件两种实现形式,为提高芯片执行速度及运算 安全性,本文采取硬件协处理器方式,将密码算法集成于嵌 入式系统内部。分析嵌入式系统的安全功能需求,结合当前 芯片需要提供多种密码功能发展趋势,设计集成了 RSA, TDES, SHA1 3 种密码算法 IP 核。另外,芯片内置基于组合 逻辑反馈环路的真随机数发生器,作为内部密钥生成乱数种 子及交互协议的现时生成。功能区结构如图 3 所示。
存储区管理逻辑是实现系统安全启动流程的硬件基础, 对其设计原理进行阐述,可分为存储区划分、存储区配置、 存储区层次控制 3 个方面。
为满足代码可下载设计要求,限制下载代码的片内资源
—134—
操作权限,实现系统分级启动,设计将芯片的程序及数据存 储区进行区域和层次划分如图 1 所示。
名称 bootloader0 download
温圣军,张鲁国
(解放军信息工程大学电子技术学院,郑州 450004)
摘 要:针对嵌入式系统的软件可重构下载中存在的安全性问题,设计一种可重构嵌入式系统的安全启动流程,研究硬件存储区管理模式, 对密码协处理器进行集成,并加以实现。仿真实验结果表明,该流程能够使系统对下载软件的合法性进行验证,当下载代码合法但为恶意 时,可以保证芯片自身安全性。 关键词:嵌入式系统;安全性;灵活性;启动流程
在更具体的启动流程中,启动分初始启动与正常启动 2 类。初始启动与正常启动的不同在于正常启动要对所下载 代码的完整性进行验证,验证方式为调用 SHA1,收集下载 代码摘要,与初次下载收集的数据摘要进行比较。完整性验 证的失败会导致系统重启,此时系统认为代码被篡改,需要 重新下载更新。
—135—
向 2 层的应用程序下载流程与向 1 层的操作系统下载流 程基本相同,不同点在于操作系统中应用程序下载命令需与 操作系统的接口规范一致。在本文具体实现中,操作系统接 口完全符合 7816-4,因而相应地设计了下载命令的命令编码。
【Abstract】Aiming at security problems in software restructural download of embedded system, a secure start-up flow for restructural embedded system is designed. The management mode of hardware storage is researched. The code co-processor is integrated and implemented. Simulation experimental results show this flow can identify the validity of system download software, and when the code is legitimate but malice, it can guarantee the chip security. 【Key words】embedded system; security; flexibility; start-up flow
存储区控制由硬件分层锁(LOCK)及控制模块共同完成, LOCK 根据 MCU 中 chipchoose 寄存值,判断当前运行层次, 以及执行程序要求转入哪一层次。若当前层次高于命令要求 的转入层次,则保持原输出,否则进行层次转换,输出转入 层次的控制参数。控制模块以硬件分层锁的输出作为输入, 对各存储区的读/写使能、时钟使能信号进行选择配置,实现 存储区的信任域划分。图 2 给出了存储区控制信号与运行层 次的对应情况。
1 概述
随着信息社会的发展,嵌入式系统设计趋向于满足使用 灵活性与功能多样化的要求。可重构嵌入式系统允许芯片在 出厂后,用户自行配置操作系统或重复下载应用程序,从而 实现单一硬件平台能够支持多应用的要求[1]。
允许代码下载设计特性使得嵌入式系统的安全性受到较 大程度的威胁。恶意代码下载到嵌入式系统内部,可以将芯 片内部的厂家敏感信息读出或者破坏芯片内部功能[2]。分析 代码的下载及运行过程,安全威胁的原因可归结为:(1)未验 证下载代码来源合法性;(2)未限制下载代码运行时的片内资 源操作权限。基于以上原因,本文设计并实现一种单向三级 启动流程,通过验证下载代码来源合法性以及限制下载代码 的片内资源操作权限,使得芯片在具备应用灵活性的同时, 也具有较高安全性。
图 3 功能区结构
从图 3 可以看出,整个功能区由 RSA、TDES、SHA1、 协处理器 IP 桥以及 IP 专用数据处理区 asisramx 组成。各 IP 核输入、输出数据位宽均为 32 bit,运行频率 50 MHz,具体 运行时,系统软件通过对 MCU 中的 FUNCCHOOSE 进行赋
图 4 cos 下载与运行流程
值,由 IP 桥进行选择。IP 桥根据 FUNCCHOOSE 的数值, 配置数据与命令到相应协处理器,将协处理器与 asisramx 连 接,实现数据处理。asisramx 为双端口寄存器,数据宽度对 应于系统数据位宽与协处理器数据位宽,分别为 8 bit 与 32 bit。
3 软件流程
基于上述硬件设计,可以设计相应的可执行代码,通过 软硬件协同,实现可重构嵌入式系统的安全启动流程。系统 在每次启动时,都遵循同样的启动流程,起点为 0 层 bootloader0,终点为 2 层应用程序 appli。图 4 是芯片在初始 下载软件时的流程。
第 35 卷 第 20 期 Vol.35 No.20 ·安全技术·
计算机工程 Computer Engineering
文章编号:1000—3428(2009)20—0134—03
文献标识码:A
2009 年 10 月 October 2009
中图分类号:TP311.52
可重构嵌入式系统安全启动流程设计与实现
层 LOCK 输出
名称
次 输出 控制 bootloader0 download level0 cos level1 appli level2 cpuramx asisramx
clken
1
0 00
r/w
r
1
110
0
0
1
1
r
r/w r/w — — —
r/w
r/w
clken
0
1 01
r/w
—
1
011
1—
1
1
r
r/w r r/w r/w —
r/w
r/w
clken
0
2 10 r/w
—
1
000
1
1
1
1r———来自r r/wr/w
r/w
图 2 存储区控制信号与运行层次对应关系
从图 2 可以看出,在进入高层次运行时,低层的专用秘 密存储区不属于高层代码的可操作范围内。因此,即使下载 代码有恶意企图,也不会对低层的秘密信息构成安全威胁。 2.2 密码运算单元设计与实现
Design and Implementation of Secure Start-up Flow for Restructural Embedded System
WEN Sheng-jun, ZHANG Lu-guo
(Institute of Electronic Technology, PLA Information Engineering University, Zhengzhou 450004)
4 安全性分析
假设嵌入式系统在下载操作系统或者应用程序时,操作 系统/应用程序是有特定目的的可执行代码。基于上述设计方 法,对嵌入式系统的安全性进行简要分析。由于在下载代码 之前,必须进行代码来源合法性认证,因此先可以保证无授 权主体不能够完成代码下载。其次,代码来源合法性认证通 过后,如果代码是恶意的,也可以根据通过验证时使用的密 钥,找出代码下载的执行主体,从而追查到事件负责人。最 后,由硬件存储区管理设计方案可知,恶意代码被硬件逻辑 强行分配一个自属信任域,其操作权限被局限于被分配的操 作区域中,对低层或者其他非属信任域的存储资源不能进行 任何操作。对存储区的受限操作权限,可以保证低层敏感信 息既不会被窃取,也不会被修改,从而实现安全性要求中的 机密性与完整性要求。上述分析表明,通过软硬件协同,本 文提出的设计方法可以较好地解决由代码可下载带来的安全 威胁。
从图 4 可以看出,系统首先在 bootloader0 的控制下,对 协处理器进行功能自检。自检采取内部随机数发生器生成一 组乱数,利用 levle0 中密钥分别进行加减密操作,以能够正 确对乱数进行加减密操作为判断,实现功能自检。SHA1 协 处理器则是以 download 为处理数据,提取其数据摘要,与片 内预存数值进行比较来验证。功能自检失败会导致整个启动 流程的失败。在自检正确的前提下,系统进入命令等待状态。 代码下载命令的执行需要代码下载命令的发起者输入身份密 钥,进而确认代码来源的合法性,仅当身份验证通过,才可 以进行代码下载。