北极星

搜索历史清空

  • 水处理
您的位置:电力输配电电力通信技术正文

数据加密在嵌入式系统升级中的应用

2014-06-19 10:04来源:e-works关键词:MCUISP电力通信收藏点赞

投稿

我要投稿

4、加解密在升级中的应用

“在线升级”实际上是Flash数据存储的一个特例。完成这样的功能首先要求芯片提供的EEPROM的地址与程序空间是连续的,一致的,在用户应用程序中可以对另外一部分程序区进行擦除写入操作;再者芯片内部Flash程序存储器容量必须足够大,使之可以分为几个区域相互独立。第一部分是用户的boot程序,完成上电初始化和解密,并将接收的数据写入指定地址。第二部分是程序标识区,标记当前用户程序的运行地址。第三部分是应用程序区1和应用程序区2,当程序运行在程序区1时可以对程序区2进行升级,反之亦然。这两个区域的大小必须不小于用户的目标代码。

在用户程序区可以存放几组密钥信息,与PC下传的随机数按照一定的规则生成解密所需的密钥以保证每次加解密的密钥信息有差异,只要保证每次密钥是唯一的,数据的安全性是可以保证的。需要升级芯片中的程序时,PC机按照通信协议的格式下传指令,用户boot程序接收到指令后初始化各个变量和寄存器,关闭不需要的中断,下传的数据包交叉使用两种加密算法,包号是奇数时用TEA算法加密并同时下传两组随机数共16个字节,一组是本次解密所用,另一组是下一包解密所用,下传的数据包号是偶数时用AES算法加密。为提高运算速度,对AES算法的字节替换过程采用查表的方法。只要保证每次下传的有效数据长度相同,足以达到欺骗性,即使所有数据被截获,由于芯片内部的密钥无法读出,截获者也无法得到正确的明文。同时考虑到程序中数据容易处理,每次下传的有效字节数选择16的整数倍。boot程序将数据正确写入存储器后应向上位机返回正确状态,否则应返回出错信息以便处理。程序升级完成后上位机发出结束命令并下传校验字符,boot程序核对正确后擦除程序标志区并重新写入标识。

图1 流程图

用户程序升级成功之后,可以通过函数指针的方式调用该程序。函数在编译时都会被分配一个入口地址,该地址就是函数的指针。只要用一个指针变量指向这个函数的入口地址,就可以通过指针变量调用这个函数。函数指针的本质是指针变量,只不过该指针变量指向函数,读出程序标志区的运行地址就可以通过指针变量调用新写入的程序。

5、结束语

为应对网络安全,有效保护知识产权,本文提出了固件升级的数据加密方案,对于具有IAP功能的芯片具有普遍意义,不仅适用于网络远程升级,同样适用于本地升级。至于加密算法可以根据MCU的能力进行灵活选择。

原标题:数据加密在嵌入式系统升级中的应用
投稿与新闻线索:陈女士 微信/手机:13693626116 邮箱:chenchen#bjxmail.com(请将#改成@)

特别声明:北极星转载其他网站内容,出于传递更多信息而非盈利之目的,同时并不代表赞成其观点或证实其描述,内容仅供参考。版权归原作者所有,若有侵权,请联系我们删除。

凡来源注明北极星*网的内容为北极星原创,转载需获授权。