APP下载

基于Linux系统的嵌入式终端可信安全方案

2018-09-12李俊彦董增寿

现代电子技术 2018年18期

李俊彦 董增寿

摘 要: 针对嵌入式平台的安全问题,提出一种基于Linux系统的嵌入式终端可信安全方案。可信计算的协议层和应用层不涉及硬件部分,因此首先设计一种可信计算仿真试验环境,接着采用Atmel公司的可信平台模块(TPM),将其可移动的启动存储介质作为核心可信度量根,简化并移植PC平台上的可信软件协议栈(TSS),从而实现了嵌入式终端可信环境的建立。实验结果表明,在ARM平台上可以实现可信启动,建立可信环境,因此可基本上保证终端的安全性。

关键词: 可信计算; 嵌入式终端; 可信平台模块; AT97SC3205T; 安全方案; Linux

中图分类号: TN915.08?34; TP309 文献标识码: A 文章编号: 1004?373X(2018)18?0067?05

Trusted security solution based on Linux system for embedded terminals

LI Junyan, DONG Zengshou

(School of Electronic Information Engineering, Taiyuan University of Science and Technology, Taiyuan 030024, China)

Abstract: In allusion to the safety problem of the embedded platform, a trusted security solution based on Linux system is proposed for embedded terminals. As the hardware part is not involved in the protocol layer and application layer of trusted computing, a simulation test environment is designed for trusted computing. The trusted platform module (TPM) of Atmel Corporation is adopted, its removable startup storage medium is taken as the core root of trust measurement, and the TCG software stack (TSS) is simplified and transplanted on the PC platform, so as to realize establishment of trusted environment for embedded terminals. The experimental results show that the trusted startup can be implemented on the ARM platform, and the trusted environment can be built, which can basically guarantee the security of terminals.

Keywords: trusted computing; embedded terminal; trusted platform module; AT97SC3205T; security solution; Linux

0 引 言

随着互联网技术及物联网技术的广泛应用,以及中国制造2025概念的提出,嵌入式产品已经覆盖了人类生活的各方面,并紧紧相连着。不可避免地,嵌入式产品的用户数量也在大幅增加,嵌入式产品的安全性开始逐渐受到人们的重视。目前的嵌入式产品的安全性解决方案大多是在软件上采取措施,如安装防火墙或杀毒软件等,然而软件本身就存在被篡改或被攻击的问题,因此单纯的采取软件防护措施很难确保嵌入式产品的安全性。

可信计算[1]的概念是由可信计算组织 TCG( Trusted Computing Group) 提出的,并首先在PC计算平台上得到应用。近年来,越来越多的国内外学者提出将可信计算技术引入嵌入式平台,这可以有效提高其安全性,但是由于嵌入式平台相比PC平台有功耗低、体积小、集成度高、资源少等特性,使得传统PC平台的可信平台模块(Trusted Platform Module,TPM)无法直接应用到嵌入式平台上。本文提出一种基于Linux系统的嵌入式可信安全环境的设计方案,本方案在TCG相关规范的基础上,利用TPM仿真器在PC环境下实现可信环境的仿真。并在ARM平臺上,利用Atmel公司以TCG v1.2版本为规范的专为嵌入式系统设计的TPM模块与嵌入式 CPU 进行通信[2]。TPM 的硬件级加密功能、完整性度量功能和认证功能都可以用来实现所需功能,从而搭建硬件级别的安全环境,实现可信环境的搭建。本方案在ARM系列开发平台上的实现,可推广应用于当前的嵌入式安全领域,有一定的商业价值。

1 可信计算及TPM构造

根据TCG组织的定义,可信计算的基本思想是先建立一个可信根,然后以此为基础建立一条信任链,由硬件平台,到启动引导程序,到操作系统,直到最上层的应用程序,由前一级度量后一级,一级信任一级,将信任关系延伸到整个计算机系统。本方案中的TPM模块就是硬件级别的可信根。

1.1 可信信任链

可信信任链的建立[3]是对嵌入式终端改造的重要步骤,可信信任链在启动过程中的建立过程如图1所示。

在Linux系统开始启动时,BIOS根模块作为可信度量根CRTM(Core Root of Trust Measurement),同时作为信任链的起点。把BIOS的平台配置寄存器(Platform Configuration Register, PCR)信息写入度量日志,通过对比校验值验证其代码的完整和安全性。下一阶段,BIOS对引导扇区进行度量,并移交控制,直到确保整个Linux操作系统可信启动。

1.2 TPM

通常在PC平台上,TPM芯片会集成在主板上[4],通过LPC总线协议与南桥芯片进行通信,但是一般的嵌入式平台并不会扩展LPC接口。本方案采用Atmel公司推出的一款TPM芯片:AT97SC3205T。它是专为嵌入式系统设计的,使用I2C总线作为通信接口。

图2即为AT97SC3205T开发套件[5],它是专门为嵌入式系统设计的高集成度的安全模块,遵循TPM1.2规范。

图3为AT97SC3205T芯片的内部构成图[6]。可以看出,整个TPM实际上是以8位AVR处理器为核心的单片机系统,单片机控制I2C总线接收和返回TPM数据流。常用的密码学算法包括HMAC,AES,SHA,RSA算法都通过硬件电路实现,加上其高質量的随机数产生器都通过了FIPS?140?2标准认证。TPM的各种密钥、平台配置寄存器等关键信息保存在内部的数据E2PROM中 。TPM自身运行的固件程序有一部分保存在程序E2PROM中,可以更新和升级。

2 软件系统仿真设计

本文软件仿真平台是在Windows下利用VMware Workstation 12.1.1软件搭建的。VMware Workstation是一款功能强大的桌面虚拟计算机软件,可以让用户在单一的桌面上同时运行不同操作系统,在此基础上用户可以进行开发、测试和部署新的应用程序,与市面上其他的虚拟计算机软件相比,其灵活性与先进性明显胜出。

2.1 仿真环境编译

仿真环境涉及到的软件和函数库较多,图4所示为本文仿真环境所依赖的主要软件和库文件[7]。其中,M4是一个通用的宏处理器,为其他仿真软件库提供支持。

GMP(The GNU MP Bignum Library)是一个开源的数学运算库,它的数学运算能力极强,可用于包括有符号整数、有理数和浮点数等任意精度。它的运算精度只受限于机器的硬件情况。安装GMP需要M4的支持。

Cmake(Cross platform make)是一个跨平台的安装(编译)工具,能够通过相对简单的语句来描述所有平台的安装(编译过程),也能够输出各类makefile或project文件,类似于Unix系统下的automake工具,本文用来编译tpm_emulator工程。

qmake是Qt附带的工具之一,主要用来协助和简化跨平台应用程序的开发构建过程。Qt是奇趣科技公司于1991年开发的一个跨平台的C++图形工具,它能够为程序开发者提供建立用户图形界面所需的所有功能。

tpm_emulator是由德国人MARIO Strasser开发的广泛使用的TPM仿真器。其能够模拟TPM硬件的功能,提供常用的密码学算法,例如生成EK密钥,RSA密钥,随机数等。tpm_emulator具备与TCG兼容的指令流,并且可以通过unix socket直接进行接口访问。

TrouSerS是基于TSS(TCG软件栈)规范的开源软件,由IBM研发维护。其包括了可信计算的核心进程:守护进程tcsd,tcsd作为TPM设备驱动程序的唯一入口,同时管理着TPM资源和用于处理TSP(TSS Service Provider)本地及远程的访问请求。

tpm?tools和tpmmanager是TrouSerS常用的两个应用层工具。tpm?tools可以让平台管理员用命令来管理和检测一个平台上的TPM。它是通过TSP接口中的libtspi.so库进入TSS。tpmmanager的目的是为开源的TPM管理软件提供一个易于使用的图形用户界面,可以用来查看TPM的状态,更改TPM的设置。

2.2 TPM仿真环境测试

本文仿真采用Ubuntu 14.04.1作为实验环境[8],经编译、测试,此仿真实验环境依赖的软件、库较多,缺乏库文件会导致编译不成功。

测试通过后,启动tpm_emulator程序,在终端输入命令:# tpmd clear?d?f。其中:clear参数表示TPM模块的启动方式;?d参数表示启用调试模式;?f参数表示强制应用程序在前台运行。

如图5所示,tpmd进程成功启动,tpmd.c:310:Debug: waiting for connections…表示等待来自Socket接口的命令。启动TCS(TSS核心服务),在终端输入命令:

# tcsd ?e?f。其中:?e参数表示尝试通过Socket接口与TPM进行通信;?f参数表示强制应用程序在前台运行。

如图6所示,TCSD成功启动,并显示TCSD up and running字符。此时可信计算仿真环境搭建完成。

图7所示的TPM Manager窗口可用来查看TPM当前状态及PCR寄存器状态。通过TPM Manager还可以修改密钥,进行其他设置。

3 硬件方案实现

本方案设计的可信嵌入式终端总体框架如图8所示。

从图8中可以看出,可信嵌入式终端总体框架分为嵌入式应用层、嵌入式系统层和S5PV210硬件层3部分,在应用层和系统层添加了可信软件栈TSS,以及TPM的外围驱动和管理工具,在硬件层主要添加了TPM嵌入式模块。

经上述对嵌入式终端的可信改造后,S5PV210硬件层主要有CPU、外围设备以及负责可信环节的核心芯片TPM;系统层由嵌入式操作系统内核及外围驱动程序构成;应用层由可信计算所依赖的软件和TPM管理工具构成,并通过调用TSS提供的接口与系统进行通信,提高可信度。

3.1 可信安全终端硬件实现

本文设计的可信安全终端硬件架构中的核心板Tiny210,是一款以SAMSUNG公司推出的S5PV210芯片作为主处理器的Cortex?A8嵌入式核心板。S5PV210采用ARM CortexTM?A8内核,ARM v7指令集,主频可达1 GHz,64/32位内部总线结构,数据/指令一级缓存为32/32 kB,二级缓存为512 kB,其高性能的运算能力可以实现2 000 DMIPS(每秒运算2亿条指令集)的计算。

底板使用的是Friendly ARM公司开发的Tiny210 SDK底板,其资源丰富,满足本次开发需求[9]。TPM模块使用的是Atmel公司的AT97SC3205T开发套件,这是目前Atmel公司最新的可信平台模块。TPM模块通过I2C总线接口与ARM处理器进行通信,外接模块与终端底板连接实物图如图9所示。

3.2 设计验证与结果分析

本方案使用的内核版本为Linux 2.6.38,BootLoader采用U?boot,设计实验的难点在于使用I2C总线接口扩展TPM模块和驱动程序编写,以及可信计算软件栈的移植。Linux内核2.6.12版本及以上,提供了对TPM芯片的支持,对内核配置文件编译后即可将TPM驱动编入内核。TSS的移植可通过对仿真平台中TrouSerS的交叉编译后,移植到嵌入式终端中。

最终实现了在嵌入式平台的可信启动。验证过程如下:

1) 为了实现可信启动,对U?Boot启动阶段进行修改,加入了子函数tpm_init(),该函数的功能是获取U?Boot度量代码的起始地址、长度,并操作I2C总线与终端进行通信。

系统上电后,TPM进行命令之前,必须先执行TPM_Startup命令,这个命令只能在TPM上电或复位后执行,执行成功后,TPM返回TPM_SUCCESS,返回代码0x00000000,如图10所示。

2) 可信信任链建立后,代码度量操作也是通过TPM命令实现的,其原理是通过将数据发送给TPM并由TPM执行散列值操作,涉及到的命令有3个:TPM_SHA1Start,TPM_SHA1Update,TPM_SHA1CompleteExtend。以上三个命令按顺序执行完毕后,度量结果会拓展到对应的平台配置寄存器(PCR)中。图11为对Linux内核的度量结果。

通过上述实验,证明Linux系统可以实现可信启动,移植后的可信计算软件栈工作正常,TPM模块在嵌入式平台运行正常,说明整体方案可行性有效。

4 结 论

嵌入式终端日益发展,应用领域不断扩大,嵌入式平台的安全性必须要采取硬件级别的保护措施,来抵挡目前的安全威胁。本文在国内外学者研究的基础上,针对可信嵌入式终端,在结合虚拟机仿真环境的搭建基础上,移植了PC平台的各个工具库及软件,对ARM平台进行了可信改造,目前TPM可信根启动部分通过实验验证可行。鉴于本方案是在实验室内搭建完成,考虑到在实际应用中可能存在的各种问题,笔者将进行进一步的完善。

注:本文通讯作者为董增寿。

参考文献

[1] Trusted Computing Group. TPM main part 1: design principles (specification version 1.2) [EB/OL]. [2011?03?01]. http://www.doc88.com/p?9965172136692.html.

[2] Trusted Computing Group. TPM main part 2: structures of the TPM (specification version 1.2) [EB/OL]. [2011?03?01]. https://trustedcomputinggroup.org/.

[3] 邹德清,羌卫中,金海.可信计算技术原理与应用[M].北京:科学出版社,2011.

ZOU Deqing, QIANG Weizhong, JIN Hai. Principle and application of trusted computing technology [M]. Beijing: Science Press, 2011.

[4] 王镇道,郑荣浩,张立军,等.一种适用于嵌入式终端的可信安全方案[J].计算机应用与软件,2016,33(1):230?234.

WANG Zhendao, ZHENG Ronghao, ZHANG Lijun, et al. A trusted security solution for embedded terminals [J]. Computer applications and software, 2016, 33(1): 230?234.

[5] FURTAK J, CHUDZIKIEWICZ J. Securing transmissions between nodes of WSN using TPM [J]. Computer science & information systems, 2015: 1059?1068.

[6] Atmel. AT97SC3205T: summary datasheet [EB/OL]. [2014?02?01]. http://101.96.10.63/ww1.microchip.com/downloads/en/DeviceDoc/Atmel?8883S?TPM?AT97SC3205T?Datasheet?Summary.pdf.

[7] 罗洪达,董增寿,杨威.基于TPM仿真器的可信计算实验平台设计[J].太原科技大学学报,2013,34(5):337?341.

LUO Hongda, DONG Zengshou, YANG Wei. Design of trusted computing experimental platform based on TPM emulator [J]. Journal of Taiyuan University of Science and Technology, 2013, 34(5): 337?341.

[8] HENNEBERT C, SANTOS J D. Security protocols and privacy issues into 6LoWPAN stack: a synthesis [J]. IEEE Internet of Things journal, 2014, 1(5): 384?398.

[9] 蔡一新,朱嘉钢.基于Android系统嵌入式移动可信网关设计[J].传感器与微系统,2016,35(10):105?108.

CAI Yixin, ZHU Jiagang. Design of embedded mobile trusted gateway based on Android system [J]. Transducer and microsystem technologies, 2016, 35(10): 105?108.

[10] 刘川,李志伟,沈卫康.基于云计算及SDN的电力数据中心安全问题分析和防护策略[J].电子设计工程,2016,24(9):136?138.

LIU Chuan, LI Zhiwei, SHEN Weikang. Analysis and protection strategy of power data center security based on cloud computing and SDN technology [J]. Electronic design engineering, 2016, 24(9): 136?138.