1.核心主题
本文提出了一种基于GD32F450为代表的ARM Cortex-M系列处理器上的软保护的安全性探究,核心是将用户程序预先以加密的方式存储在片内FLASH中,运行时再解密至RAM。因为RAM的掉电易丢失,实现程序的保护。 2.背景瞎扯
软件的保护通常分为软保护和硬保护两种,软保护从程序着手,通过加密变化等方式,确保使用者的合法性,实现源代码的反拷贝、反静态分析、防动态追踪。硬保护则需要额外的硬件加密手段,软件通过访问特定的外围硬件,完成预先的数据交换,确认用户合法后,才会执行。硬保护拥有独立的硬件,所以相较于软保护更加安全,但是也会导致成本过高、占用部分硬件空间等问题。
硬保护引入安全器件的同时,加大了硬件成本。而软保护一般会引入芯片唯一身份识别码作为密钥,这就导致不得不对每个芯片进行单独编译烧写程序,软件加密加大了算法的复杂性、增加了程序的存储占用空间,还增加了批量生产时的难度。总的说来,软保护和硬保护各有利弊。
IAP
IAP(In-Application Programming),在应用程序中编程,指的是芯片通过已有的程序,利用串口、以太网、SD卡等外设接口,接收新的程序文件,覆盖旧有的程序,实现升级更新,也就是可以用程序来改变程序。
3.方案设计
[1].利用IAP代码将加密好的程序bin文件,通过UART写入FLASH中
[2].复位后,IAP程序先将FLASH中的加密bin文件,解密至指定区域的RAM位置
[3].解密完成后,校验加密程序初始入口地址范围是否正确(密钥不对,数据不对)
[4].如果校验正确,IAP程序执行CPU寄存器指针跳转代码,跳转至加密程序初始入口,执行被加密代码。
[5].如果校验错误,清除加密区域FLASH代码
[6].GD32提供的芯片FLASH保护使能
|