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

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

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

2.1 AES算法


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


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


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


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


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


2.2 FS8826功能实现


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



2.3 Vxworks启动、运行


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


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



3 实现结果及分析


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


继承事业,薪火相传
返回列表