没有合适的资源?快使用搜索试试~ 我知道了~
针对STM32系统固件升级时使用同一个文件易被非法复制使用的缺陷,提出并实现了一种一个STM32芯片使用一个唯一升级文件的固件升级方案。升级固件时,由服务器为不同的STM32芯片生成不同的bin文件,该bin文件是以STM32的CPUID为密钥,应用AES算法加密原始bin文件得到的。升级时STM32以自身的CPUID作为密钥对文件解密,如果作为解密密钥的CPUID和作为加密密钥的CPUID不同,则解密出的bin文件不能运行。解密后,再应用IAP技术把新的bin文件写入Flash。实际测试证明,提出的方法可以实现“一片一密”,有效防止了升级程序的非法使用。
资源推荐
资源详情
资源评论
一种基于一种基于CPUID和和AES算法的算法的STM32固件升级方案固件升级方案
针对STM32系统固件升级时使用同一个文件易被非法复制使用的缺陷,提出并实现了一种一个STM32芯片使用
一个唯一升级文件的固件升级方案。升级固件时,由服务器为不同的STM32芯片生成不同的bin文件,该bin文件
是以STM32的CPUID为密钥,应用AES算法加密原始bin文件得到的。升级时STM32以自身的CPUID作为密钥
对文件解密,如果作为解密密钥的CPUID和作为加密密钥的CPUID不同,则解密出的bin文件不能运行。解密
后,再应用IAP技术把新的bin文件写入Flash。实际测试证明,提出的方法可以实现“一片一密”,有效防止了升
级程序的非法使用。
0 引言引言
为了防止固件被盗版,文献[3]提出了一种使用硬件狗对单片机程序进行加密的方法,程序在运行过程中不断对硬件狗进
行访问和读写,通过硬件狗的唯一性来保证加密后的固件不被非法访问和复制。文献[4]利用一种专用加密芯片AT88SA102S
把单片机中的固件程序和加密芯片进行绑定,从而实现了对单片机程序的保护。文献[5]使用一种1-Wire安全器件,采用安全
散列算法SHA-1对固件程序进行认证,防止对固件的非法拷贝。文献[6]提出了应用芯片唯一身份识别码、RC振荡器频率和上
电标志进行软件加密的方法。
上述方法虽然能有效地保护单片机的应用程序,但是采用硬件器件加密的方法需要额外的硬件单元,提高了电路的复杂性
和产品的成本;采用软件加密的方法,则需要对每一个芯片单独编译烧写加密后的应用程序,增加了产品批量生产时的工作
量。
针对上述固件升级以及硬件和软件加密方案的不足,本文在分析了STM32系列微控制器结构特点的基础上,把STM32内
部的全球唯一
1 CPUID和和AES算法算法
1.1 STM32的CPUID
每一个STM32微控制器内部都有一个96位的全球唯一序列号,存储在地址0x1fff7a10-0x1fff7a18处,称为CPUID。这个
CPUID是STM32芯片的身份标识[7],只能读出不能写入,任何两片STM32微控制器的CPUID都是不相同的,并且同一批次的
STM32芯片的CPUID也毫无规律性,所以CPUID可以用来判断芯片的合法性以决定是否执行固件程序。
1.2 AES算法
AES(Advanced Encryption Standard)是NIST(美国国家标准技术研究所)用来代替DES算法的新一代数据加密标准。NIST
要求AES 候选算法需满足以下基本要求:AES在体制上应是对称分组密码;密钥的长度可以是128 bit、 192 bit或 256 bit;数
据分组的长度可以是128 bit、192 bit或256 bit;AES算法应容易在各种硬件平台和软件平台上实现。经过几轮筛选,最终由
Joan Daemen和Vincent Rijmen设计的Rijndael算法在2000年10月成为AES标准的最终算法[8]。
AES算法是一种对称加密算法,加密和解密使用相同的密钥。AES算法的输入是固定长度的分组,输出分组的长度和输入
分组相同,每一个分组和密钥的长度可以是128 bit、192 bit或256 bit,对应的加密轮数分别是10、12或14轮。取分组长度和
密钥同为128 bit,给出AES算法加密和解密的流程如图1和图2所示[9]。
2 IAP技术技术
IAP(In Application Programing)[10]的意思是“在应用编程”,指CPU执行程序时,通过正在执行的程序完成对片内Flash
的改写。利用IAP,可以在程序正常执行时向Flash写入新的数据或程序,克服了以往改写Flash需要停止程序运行的缺点。
通过IAP更新固件,新的固件可以来自串行口、USB、以太网等数据接口,也可以来自外接的TF卡。STM32在执行IAP操
作时,首先对片内Flash解锁,接着擦除需要重新编程的Flash区域,最后把新的固件代码写入。使用IAP功能,需要有两个可
执行程序,一个称为Bootloader,另一个称为App。Bootloader和App分别存储在Flash的不同区域,存储空间不能重合。
Bootloader是启动引导程序,负责应用IAP改写App固件并跳转到App执行。App是正常工作时系统完成具体功能的应用程序。
资源评论
weixin_38636671
- 粉丝: 6
- 资源: 929
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功