首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

在系统安全启动后,加载的明文映像开始运行,同时,隐藏在映像中认证程序也将开始运行,并定时与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要快。

需要注意的是,在启动过程中只开启了指令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之间的总线通信已经过加密,能够防止黑客从总线窃取。该方案成本低,效果好,其成果具有一定的推广性。
返回列表