基于ARM平台的嵌入式软件保护方案

发布者:幸福的家园最新更新时间:2009-12-31 来源: 电子技术应用关键字:ARM平台  AES  FS8826安全芯片  Vxworks 手机看文章 扫描二维码
随时随地手机看文章

      近年来,从软件到软硬件联合攻击给嵌入式系统造成严峻的安全威胁。安全性已成为嵌入式系统设计中必不可少的一部分,同时这又是一个折衷的过程,不能单靠软件来保证,而全硬件的解决方式很昂贵且不具有弹性[1]。很多产品开始从设计之初就从系统架构上考虑了安全性,如ARM公司的Trust Zone技术开辟了一片可信代码区,通过一个S比特来区分系统的安全状态,IBM的PowerPC中使用了多核单元宽带引擎(BE)进行安全引导和物理隔离。

  需要注意的是目前使用的很多嵌入式系统都是基于没有特别设计安全机制的硬件平台。本文以原ARM处理器平台为例,通过增加1块安全协处理器,就可以实现低成本、有实效的安全保护,并且能够抵御两类比较宽泛的攻击:一类是在系统的启动过程中的攻击,如果系统启动过程中没有安全保护措施,很可能被非法用户使用非授权的软件。另一类是外部存储器及总线攻击,当程序代码保存在外部非易失存储器上时,可以轻易被黑客拷贝。另外,片外存储器与片上系统(SoC)之间的总线传输也容易受到攻击。

1 硬件结构

  本方案的硬件结构如图1所示。处理器平台采用三星公司的S3C2442,内核为ARM920T,外置1块2 MB的NorFlash用以存放密文数据,ARM通过总线方式对NorFlash进行访问,该硬件结构中最重要的部分是添加了1块安全协处理器:福华公司的嵌入式系统软件保护芯片FS8826。该芯片可通过I2C或SPI总线与SOC连接,这里使用I2C方式。PC机能够对硬件平台中的每个芯片进行编程控制:通过JTAG端口、串口及网口与ARM进行通信,通过专门的烧录器对FS8826的硬件密钥和安全存储区进行写入。

2 软件实现

  软件设计从两个主要方面考虑,一是代码加密,二是版权认证。前者主要通过AES(Advanced Encryptiong Standard)加解密算法实现,其算法密钥的管理以及版权认证将依靠FS8826来实现,最终达到安全启动嵌入式操作系统以及保护运行时的版权目的。安全启动方案基于Bootloader+Image的加载机制,也是ARM处理器通用的引导机制。首先采用AES加解密算法在PC机端将编译完成Image加密,利用FS8826安全存储区存放AES算法密钥,密文存储在片外存储器中,ARM启动时将密文加载入内存。然后在Bootloader启动过程时加入与FS8826的认证操作,认证通过则在该过程中使用AES解密算法解密Image,并用明文将原内存中的密文覆盖,系统正常运行中加入与FS8826的实时通信监测,确保在授权目标机上运行程序。软件实现流程如图2所示,相应的方案实现框图如图3所示。


2.1 AES算法

  AES是美国国家标准和技术研究所(NIST)选定的高级加密标准,是目前对称加密领域内的主流算法。其数据分组固定为128 bit,密钥分组可支持128 bit/192 bit/256 bit。核心过程为数据块矩阵的Nr(10/12/14)次轮操作。每一次轮操作都由S盒代换(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和轮密钥加(AddRoundKey)4个函数组成,第Nr次轮操作不包含MixColumns 函数。密钥扩展为每一轮变换提供轮密钥[2]。本方案中加密在PC机端离线完成,没有时间和运行效率的特别要求,但是解密在ARM9处理器中完成,其运行时间将作为系统启动的一部分,所以下面针对解密部分的算法程序结合其实现平台进行优化设计。

  直接的解密算法是将加密过程的每一步求逆并倒置次序得到,然而这样并不利于优化。算法的创始人提出了一种等价解密过程,在解密的轮变换中交换逆行移位和逆S盒代换,轮密钥加和逆列混淆的顺序,只需要调整密钥的编排方案即可。在实现中等价解密过程可以将解密轮变换中的前3个步骤综合生成1张4 KB的T表用于查询,即可快速准确地完成解密[2]。具体流程如图4所示。

  加解密过程使用电码本模式(ECB)运行,即将消息段逐个分别加解密。实现采用移植性较好的标准C编程。针对ARM处理器的特点,C语言具有以下优化的实现方式[3]:

  (1) 数据类型设置:ARM处理器内部是32 bit寄存器,如果变量长度与ARM内部寄存器长度不一致,将会使得变量的存取都需要附加其他指令[3]。AES算法中密钥及数据都是以字节为单位运算,优化时调整为32 bit,仅在输入输出时进行位数变换,可以带来很大的速度改进。

  (2) 循环展开:ARM处理器中每一次循环最少有4个周期的循环开销[3]。解密轮变换涉及4个子函数调用,循环执行Nr-1次。在等价解密算法融合了3个子函数形成T表查询,于是可以把轮变换展开,在不增加太多代码量的基础上,每一个数据分组解密减少4(Nr-1)个周期。当密钥位长、密文数据量大时节省的循环开销就比较可观。

  (3) 控制变量数:为了高效执行1个函数,应尽量限制函数内部循环所用局部变量的数目,最多不超过12个,确保最重要的和经常用到的变量都被分配在寄存器里[3]。

  (4) 宏定义函数实现:有些简单函数可以通过宏定义的方式实现,如域内乘法等。此种方式可以减少函数调用开销。

2.2 FS8826功能实现

  FS8826芯片自带24 B硬件密钥,具有不可回读、不可在总线上传输的特点,主要用于芯片内部的认证模块运算(HASH&3DES)和安全数据传输。芯片内部开辟了1块安全存储区(96 B EEPROM),读写都受硬件密钥的保护,且具有CRC校验功能。在本方案中该芯片主要实现两方面功能: SoC版权确认和AES密钥管理。前者通过认证实现,具体流程如图5 所示。总线上发送的数据为硬件密钥与用户设置的认证区数据通过HASH运算得出的数组,并加入了8 B随机数,能够有效地防止重放攻击(reply attack)。该项功能能够提供代码完整性验证[4],在一定程度上抵抗反汇编攻击。后者通过将AES密钥烧入FS8826的安全存储区,由其硬件密钥进行保护实现,认证通过后发送加密的读取命令,算法密钥以密文形式在总线上传递[4]。

2.3 Vxworks启动、运行

  以上所述的加解密和认证过程将运行在嵌入式实时操作系统的启动和监测上,实现上以Vxworks为例,该系统为风河系统公司(Wind River System)在业界最早推出的一款嵌入式实时多任务操作系统,开发环境为Tornado。

  VxWorks操作系统的映像包括两大类:VxWorks类型和Boorom类型[5]。本文对RAM中运行的VxWorks映像在PC机端进行AES加密。选择执行格式的未压缩Bootrom映像——bootrom_uncmp作为启动映像,并在其调用的初始化文件(bootConfig.c)中加入与FS8826的安全认证、密钥传输以及解密运算。bootrom_uncmp由仿真器烧入到目标板的norflash中,上电后,bootrom_uncmp把自身拷贝到RAM_HIGH_ADRS地址上运行引导程序。之后,把VxWorks映像装入到起始地址为RAM_LOW_ ADRS的RAM 中,接着跳转到VxWorks映像装入点运行[5]。如果认证通过,引导程序将从FS8826的安全存储区获取AES算法密钥,进行解密,否则在RAM_LOW_ADRS处的VxWorks映像将仍然为密文,无法正常启动。如图6所示。

  在系统安全启动后,加载的明文映像开始运行,同时,隐藏在映像中认证程序也将开始运行,并定时与FS8826通信,确保持有正确硬件密钥的芯片运行正常,以防黑客移植代码非法使用。

3 实现结果及分析

  按照ARM平台下的优化原则,AES解密算法通过直接解密和等价解密2种形式进行实现,并通过ADS的Debugger Internals工具从速度和内存占用量两方面衡量实现效率[2]。如表1所示为在ARM9处理器中2种算法所耗的汇编指令数和指令周期数。表 2为两者占用的内存资源对比。

  从表中结果可以看出,采用查表运算的等价解密过程具有速度上的优势,且随着密钥位的增加其改进越明显。然而,速度与内存占用是相互矛盾的两方面,运行速度越快的算法必然会以占用一部分资源占用为代价。等价解密算法中使用了T表,且将循环展开造成了代码量的增加。所以在实际使用时,对内存资源的要求高于速度要求时建议采用直接解密算法,反之则可采用等价解密算法。这里所用的ARM9有足够的内存空间,所以采用128 bit密钥的等价解密算法,以1 MB的Vxworks密文映像为对象进行启动测试。

  正常启动中先由NorFlash建立文件系统,然后通过NandFlash加载文件。实际测试中对1 MB密文的读取耗时1.4 s。可以对密文读取方式进行优化,将密文烧入片外NorFlash中,系统上电后,内存从NorFlash中获取密文的读取方式,时间为0.03 s。这种差别的原因主要有2点:(1)文件系统访问方式下用fopen和fread函数打开密文,解密后的数据还需写回到文件中重新读取,且会受时钟频率及总线速度的限制。而后者属于内存直接读取,解密后直接从内存启动;(2)NorFlash的读取速度本身就比NandFlash要快。
启动过程各部分时间如表3所示。

  需要注意的是,在启动过程中只开启了指令cache,且没有MMU的支持,所以解密的执行速度较之系统启动后要慢很多。经测试,在系统加载起来后1 MB的密文解密操作只需1.7 s。对启动速度有特殊要求的应用可以对MMU和cache的使用进行进一步的调整设计。

  系统启动后进行的定时认证,可以监测与FS8826的正常通信,保证主映像运行在授权目标机上。认证过程中的运算都在FS8826芯片内进行,不会对主映像的运行速度造成影响,经过测试每次认证耗时0.16 s,如果安全级别要求不是很高,也可以选择采用复位芯片的方式进行监测,每次仅耗时0.01 s。

  本文的主要创新点是基于ARM9处理器平台,针对其软件安全提出了一套可行的解决方案。本方案可以抵御两类攻击:(1)本文构建的安全启动过程,如果脱离了FS8826的支持,将无法获取密钥,无法通过认证。并且可以设置不止一次的认证操作隐藏在启动过程中,将其中的一部分用作FS8826的验证区数据,即使黑客通过反汇编的手段,找到认证代码并予以忽略,也会因为篡改使其他部分的认证无法通过,从而达到防止软件盗版的目的;(2)关键的代码一开始就是以加密状态存放在NorFlash中,密钥则存储在FS8826的安全存储区内,合法用户运行时将获取密钥,把密文解密到内存中,掉电数据丢失。同时,FS8826与SOC之间的总线通信已经过加密,能够防止黑客从总线窃取。该方案成本低,效果好,其成果具有一定的推广性。

关键字:ARM平台  AES  FS8826安全芯片  Vxworks 引用地址:基于ARM平台的嵌入式软件保护方案

上一篇:嵌入式板卡趋势探讨
下一篇:IAR Systems全球推广VLP 计划

推荐阅读最新更新时间:2024-05-02 20:57

VxWorks系统介绍
      VxWorks 是美国 Wind River System 公司( 以下简称风河 公司 ,即 WRS 公司)推出的一个实时操作系统。Tornado 是WRS 公司推出的一套实时操作系统开发环境,类似Microsoft Visual C,但是提供了更丰富的调试、仿真环境和工具。   VxWorks 的组成   VxWorks操作系统有以下部件组成:     内核(wind)    多任务调度(采用基于优先级抢占方式,同时支持同优先级任务间的分时间片调度)    任务间的同步    进程间通信机制    中断处理    定时器和内存管理机制    I/O 系统   VxWo
[嵌入式]
凌华科技 AES-200 集中式计算平台提供“基础通用算力+超强AI算力”
凌华科技 AES-200 集中式计算平台提供“基础通用算力+超强AI算力” 主板基于昇腾系列AI处理器,以更高性能带来极致体验 全球领先的边缘计算解决方案提供商—凌华科技AES-200 集中式计算平台,主板基于昇腾系列(HUAWEI Ascend)AI处理器,提供“基础通用算力+超强AI算力”。主要特色有以下几点:一、基于昇腾系列AI处理器开发的一款 1U 服务器;二、支持国产化系统openEuler;三、AI 算力高达176TOPS;四、视频解码能力128路;五、内置48G RAM,4*3.5寸大容量硬盘+ 1*M.2 NVME,最高可支持64TB存储;六、支持Pcie卡+M.2扩展,可适配GPU卡、RAID卡、视频采集
[工业控制]
凌华科技 <font color='red'>AES</font>-200 集中式计算<font color='red'>平台</font>提供“基础通用算力+超强AI算力”
基于VxWorks的NAND FLASH驱动程序设计
   0 引 言   目前,随着电子技术的不断发展,计算机技术也得到飞速的发展,产生了很多新技术。但就计算机的基本结构来说,还是基本采用了冯·诺依曼结构。然而冯·诺依曼结构的一个中心点就是存储一控制,所以存储器在计算机系统中的作用是非常重要的。嵌入式计算机作为计算机中的一个类别,对执行速度和系统可靠性都有较强的要求,这也决定了嵌入式系统不仅要有实时性很强的操作系统,同时也需要一种安全、快速的存储设备。同时,嵌入式系统经常会涉及到海量数据的存储,这就要求存储设备必须具有可靠性高,功耗低,容量大,掉电数据不丢失等特点,而NAND FLASH芯片正好具有这些优点。   VxWorks是嵌入式领域内公认的最有特色的高性能实时操作系
[嵌入式]
基于VxWorks操作系统的CompactPCI仿真系统
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),该系统以其良好的可靠性和卓越的实时性被广泛地应用在通讯、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上以及1997年4月在火星表面登陆的火星探测器上都使用到了VxWorks。 VxWorks系统在各方面的性能表现卓越,主要表现在以下几方面: (1)良好的实时性和稳定性 · 优先级抢占调度和时间片轮转调度 · 强大市场占有率、国防军事的多种应用 (2)高效的任务管理 · 多任务,0~255的256个优先级 ·
[电源管理]
基于<font color='red'>VxWorks</font>操作系统的CompactPCI仿真系统
VxWorks在AT91RM9200上的BSP设计
   VxWorks是美国Wind River公司开发的嵌入式实时操作系统,具有高性能、可裁减性好等特点,能支持多种微处理器(如PowerPC、X85、ARM、SPARC);自问世以来,以其良好的町靠性和卓越的实时性被广泛地应用于通信、航空、航天等高精尖技术及实时性要求极高的领域中。BSP(Board Support Package,板级支持包)的作用是针对特殊的硬件平台,为操作系统内核提供操作接口,使操作系统能够独立于底层硬件。对上层应用屏蔽具体硬件, VxWorks的高可移植性就是通过BSP实现的。AT91RM9200是Atmel公司生产的一款ARM9核芯片,本文重点介绍将VxWorks移植到该芯片过程中BSP的定制过程。
[嵌入式]
基于ARM的嵌入式虚拟开发平台
摘要:为了解决目前大部份高校缺乏嵌入式开发平台的问题,提出了构建嵌入式虚拟开发平台方案。方案采用μVision4 IDE和Proteus进行整合,在不需要购置嵌入式硬件设备的情况下,通过改造、整合原有实验设备,实现具有嵌入式系统设计、开发等款、硬件同步仿真调试功能的嵌入式虚拟实验室。同时给出了具体的教学模式革新和实施方法。 关键词:嵌入式;虚拟;开发平台;Proteus;ARM 随着嵌入式设备(如智能MP4、数码相机、智能手机、TV机顶盒及PDA等)的普及程度越来越高,嵌入式培训、嵌入式开发成为热门,这些嵌入式设备多采用32位RISC嵌入式处理器作为核心部件,其中基于ARM核的嵌入式处理器独占鳌头,在32位RISC处理器中占
[工业控制]
基于三星S3C44B0芯片实现VxWorks网络接口的软硬件设计
VxWorks操作系统以其高度的可靠性、优秀的实时性、灵活的可裁减性等优势在嵌入式系统中备受关注,广泛应用于许多行业;而随着网络技术的发展,嵌入式技术与网络技术的结合已成必然。VxWorks是最早在其内核中加入TCP/IP协议的嵌入式实时操作系统。如何设计基于VxWorks的网络接口,是摆在嵌入式开发人员面前的首要课题。本设计以三星公司的ARM7(S3C44B0)为核心CPU,开发了VxWorks下的网络接口,包括硬件设计和软件实现两个部分。 1、 硬件设计 核心CPU采用三星公司的S3C44B0。S3C44B0采用ARM7TDMI内核,它通过提供全面的、通用的片上外设,大大减少了系统电路除处理器以外的元器件配置,降低了系统成
[单片机]
基于三星S3C44B0<font color='red'>芯片</font>实现<font color='red'>VxWorks</font>网络接口的软硬件设计
ARM平台交叉编译|MQTT-mosquitto
mosquitto编译方式分为两种:cmake和make。windows、Mac平台使用cmake编译方式,其他平台,包括linux平台,直接使用make进行编译。windows7下编译mosquitto详细介绍了windows7环境下编译mosquitto的步骤。 本文所介绍的内容是关使用于某种ARM平台下的mosquitto的编译步骤。 编译环境 宿主机:Ubuntu 16.04 Host: ARM,Cortex-A55 交叉编译器:aarch64-linux-gnu-gcc, 7.2.1 20171011 (Linaro GCC 7.2-2017.11) 编译步骤 mosquitto官方下载最新的mosquitto源
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved