CN106503494A - 一种带有片上闪存微控制器的固件保护单元及保护方法 - Google Patents

一种带有片上闪存微控制器的固件保护单元及保护方法 Download PDF

Info

Publication number
CN106503494A
CN106503494A CN201610971108.4A CN201610971108A CN106503494A CN 106503494 A CN106503494 A CN 106503494A CN 201610971108 A CN201610971108 A CN 201610971108A CN 106503494 A CN106503494 A CN 106503494A
Authority
CN
China
Prior art keywords
firmware
encryption
bootloader
flash memory
piece
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610971108.4A
Other languages
English (en)
Inventor
杜清海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
FUJIAN BEIFENG TELECOM TECHNOLOGY Co Ltd
Original Assignee
FUJIAN BEIFENG TELECOM TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FUJIAN BEIFENG TELECOM TECHNOLOGY Co Ltd filed Critical FUJIAN BEIFENG TELECOM TECHNOLOGY Co Ltd
Priority to CN201610971108.4A priority Critical patent/CN106503494A/zh
Publication of CN106503494A publication Critical patent/CN106503494A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种微控制器的固件保护单元,包括公开发布的固件包和Bootloader;公开的固件包由加密指导区块和加密后的固件组成;所述加密指导区块包括固件的加密局部区域的信息,其包括偏移量和长度,用于解密时定位出密文区域;还包括一个16字节的随机数,用于产生实际的工作密钥;其固件保护具体如下:首先通过对固件局部进行加密,每次加密使用不同的密钥加密,而后启动加载程序Bootloader,实行一机一识别码启动、升级解密固件、将固件存储在安全存储区域完成。本发明的带有片上闪存微控制器的固件保护单元及保护方法,允许公开固件的二进制文件,与合法用户保持互动,且软件资源消耗小、盗版克隆难度高,可有效保护原创方的利益。

Description

一种带有片上闪存微控制器的固件保护单元及保护方法
技术领域
本发明涉及通讯设备技术,尤其涉及一种带有片上闪存微控制器的固件保护单元及保护方法。
背景技术
当一款通讯设备成功研发上市、热销,此时往往存在一个隐患:不法商家直接抄袭硬件设计,并盗用已发布的固件,迅速推出盗版克隆仿造产品,从而导致研发此设备的公司的利益受到损害;尤其对于核心技术是软件的产品,其硬件的仿造难度不高,盗版方只要获取了固件的二进制文件,就可快速大范围的仿造,因此,必须对固件进行管控,一般管控通过下述两方向进行:第一,无法从公开渠道获得固件的二进制文件,第二,无法从设备直接读取还原固件的二进制文件;但是,在移动互联网普及盛行的时代,软件开发的迭代周期大大缩短、用户互动参与反馈的习惯已经养成,因而,用户经常会通过刷新固件,来获取、体验增值服务,但上述的管控措施,无法对合法用户开放固件获取渠道,导致用户体验的下降。
发明内容
为解决上述问题,本发明提出了一种带有片上闪存微控制器的固件保护单元及保护方法,允许公开固件的二进制文件,与合法用户保持互动,且软件资源消耗小、盗版克隆难度高,可有效保护原创方的利益。
本发明的微控制器的固件保护单元,包括公开发布的固件包和Bootloader;公开的固件包由加密指导区块和加密后的固件组成;所述加密指导区块包括固件的加密局部区域的信息,其包括偏移量和长度,用于解密时定位出密文区域;还包括一个16字节的随机数,用于产生实际的工作密钥;所述工作密钥加密算法采用AES128,工作密钥的计算方法为:用主密钥对16字节的随机数进行AES128-ECB模式加密运算,密文结果为实际使用的工作密钥。
进一步地,所述加密局部区域为敏感的关键代码区域。
一种微控制器的固件保护方法,所述方法具体如下:
首先通过对固件局部进行加密,每次加密使用不同的密钥加密,而后启动加载程序Bootloader,实行一机一识别码启动、升级解密固件、将固件存储在安全存储区域完成。
进一步地,所述对固件局部进行加密具体如下:
将固件加密主密钥存储在安全存储区域内,对于带有片上闪存的MCU,禁止掉调试口的访问片上闪存的通道,使片上闪存成为安全存储区域,然后将主密钥存储在片上闪存内;固件加密时,采用局部区域加密,可指定任意区域;固件加密时,采用工作密钥加密,每次加密使用不同的密钥加密,另外,即使固件不变,每次发布时,固件加密结果仍会不一致;而公开发布的固件包,不包括Bootloader,但需要包括一个加密指导区块,用于告知加密的局部区域,以及辅助产生实际的工作密钥。
进一步地,所述启动加载程序Bootloader具体如下:
Bootloader存储于安全存储区域内,即片上闪存内,此时引入MCU的芯片唯一识别码UID检测机制,实现一机一识别码启动;工厂烧录Bootloader时,Bootloader将会读取实际MCU的UID,写入Bootloader内部指定的存储地址,此时存储后的UID成为Bootloader自身的一部分;开机启动时,Bootloader从指定的存储地址,读取出UID,与实际MCU的UID进行比较,一致则继续启动,不一致则锁死Bootloader;而当升级时,Bootloader根据加密指导区块,即可产生实际的工作密钥,正确解密局部区域,从而将固件完整还原,存储在安全存储区域内。
本发明与现有技术相比较,本发明的带有片上闪存微控制器的固件保护单元及保护方法,可指定任意区域的局部加密,有效降低加解密的软件资源开销;一次一密的加密,可有效保护主密钥,每次加密的密钥均不一样,提高破解的难度;固件和Bootloader本身存储在安全存储区,具备一定的破解难度,而Bootloader的一机一码启动,又提高破解的难度,假如片上闪存被暴力破解,从而被读取出完整的二进制文件,但此时该二进制文件内的Bootloader,会因为UID检测不通过,仍无法直接运行在仿造的设备上;相应的,盗版方无法轻易获取密钥,无法解密固件,因此,固件允许被公开发布,可与用户保持良好的互动。
附图说明
图1是本发明的整体结构示意图。
具体实施方式
如图1所示,本发明的微控制器的固件保护单元,包括公开发布的固件包和Bootloader;公开的固件包由加密指导区块和加密后的固件组成;所述加密指导区块包括固件的加密局部区域的信息,其包括偏移量和长度,用于解密时定位出密文区域;还包括一个16字节的随机数,用于产生实际的工作密钥。
进一步地,所述固件其加密算法采用AES128,工作密钥的计算方法为:用主密钥对16字节的随机数进行AES128-ECB模式加密运算,密文结果为实际使用的工作密钥。
进一步地,所述加密局部区域为敏感的关键代码区域;使得如果没有解密,程序就无法正确启动、运行,对于RTOS***而言,可选择操作***的时间基准处理函数入手,例如,对于新一代的ARM Cortex-M系列平台产品而言,优选地,只需将前面64字节加密掉,这部分包括ARM Cortex-M最核心、关键的部分,其中就有RTOS的时间基准处理函数SysTick_Handler的入口地址。
一种微控制器的固件保护方法,所述方法具体如下:
首先通过对固件局部进行加密,每次加密使用不同的密钥加密,而后启动加载程序Bootloader,实行一机一识别码启动、升级解密固件、将固件存储在安全存储区域完成。
实施例1:
首先,将固件加密主密钥存储在安全存储区域内,对于带有片上闪存的MCU,禁止掉调试口的访问片上闪存的通道,使片上闪存成为安全存储区域,然后将主密钥存储在片上闪存内;固件加密时,采用局部区域加密,可指定任意区域;固件加密时,采用工作密钥加密,每次加密使用不同的密钥加密,另外,即使固件不变,每次发布时,固件加密结果仍会不一致;而公开发布的固件包,不包括Bootloader,但需要包括一个加密指导区块,用于告知加密的局部区域,以及辅助产生实际的工作密钥。
其次,Bootloader存储于安全存储区域内,即片上闪存内,此时引入MCU的芯片唯一识别码UID检测机制,实现一机一识别码启动;工厂烧录Bootloader时,Bootloader将会读取实际MCU的UID,写入Bootloader内部指定的存储地址,此时存储后的UID成为Bootloader自身的一部分;开机启动时,Bootloader从指定的存储地址,读取出UID,与实际MCU的UID进行比较,一致则继续启动,不一致则锁死Bootloader;而当升级时,Bootloader根据加密指导区块,即可产生实际的工作密钥,正确解密局部区域,从而将固件完整还原,存储在安全存储区域内。
当设备的一个软件开发周期完成时,用工作密钥,对加密局部区域执行AES128的加密,实现一次一密、局部加密,而后打包固件、公开发布到外部环境;公开发布的固件包的安全环境完成搭建。
将上述主密钥和UID存储在Bootloader内部,在工厂生产阶段,主密钥随Bootloader一块被烧录到MCU的片上闪存,UID则在MCU第一次上电时,自动读取而后写入;同时工厂烧录Bootloader时,将MCU的硬件安全等级提高,禁止掉任何外部接口的访问片上闪存的通道,例如调试口,使得无法从外部轻易读取到片上闪存的数据;后续开机启动时,Bootloader都会执行一机一码的检测,如果MCU的UID,与Bootloader所存储的UID不一致的话,则锁死MCU,不再继续往下执行;升级刷机(刷新固件)时,Bootloader首先获取加密指导区块,获得加密的区域信息,以及随机数,并计算出实际的AES128工作密钥;其次接收后续的固件程序,并实时根据加密区域信息做出响应,当固件程序落在这一区域内,则需要进行AES128-ECB模式的解密还原;最终将整个固件程序完整还原,存储在片上闪存。
本发明与现有技术相比较,本发明的微控制器的固件保护方法,可指定任意区域的局部加密,有效降低加解密的软件资源开销;一次一密的加密,可有效保护主密钥,每次加密的密钥均不一样,提高破解的难度;固件和Bootloader本身存储在安全存储区,具备一定的破解难度,而Bootloader的一机一码启动,又提高破解的难度,假如片上闪存被暴力破解,从而被读取出完整的二进制文件,但此时该二进制文件内的Bootloader,会因为UID检测不通过,仍无法直接运行在仿造的设备上;相应的,盗版方无法轻易获取密钥,无法解密固件,因此,固件允许被公开发布,可与用户保持良好的互动。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。

Claims (6)

1.一种微控制器的固件保护单元,其特征在于:包括公开发布的固件包和Bootloader;公开的固件包由加密指导区块和加密后的固件组成;所述加密指导区块包括固件的加密局部区域的信息,其包括偏移量和长度,用于解密时定位出密文区域;还包括一个16字节的随机数,用于产生实际的工作密钥。
2.根据权利要求1所述的微控制器的固件保护单元,其特征在于:所述固件其加密算法采用AES128,工作密钥的计算方法为:用主密钥对16字节的随机数进行AES128-ECB模式加密运算,密文结果为实际使用的工作密钥。
3.根据权利要求1所述的微控制器的固件保护单元,其特征在于:所述加密局部区域为敏感的关键代码区域。
4.一种微控制器的固件保护方法,其特征在于:所述方法具体如下:
首先通过对固件局部进行加密,每次加密使用不同的密钥加密,而后启动加载程序Bootloader,实行一机一识别码启动、升级解密固件、将固件存储在安全存储区域完成。
5.根据权利要求4所述的微控制器的固件保护方法,其特征在于:所述对固件局部进行加密具体如下:
将固件加密主密钥存储在安全存储区域内,对于带有片上闪存的MCU,禁止掉调试口的访问片上闪存的通道,使片上闪存成为安全存储区域,然后将主密钥存储在片上闪存内;固件加密时,采用局部区域加密,可指定任意区域;固件加密时,采用工作密钥加密,每次加密使用不同的密钥加密,另外,即使固件不变,每次发布时,固件加密结果仍会不一致;而公开发布的固件包,不包括Bootloader,但需要包括一个加密指导区块,用于告知加密的局部区域,以及辅助产生实际的工作密钥。
6.根据权利要求4所述的微控制器的固件保护方法,其特征在于:所述启动加载程序Bootloader具体如下:
Bootloader存储于安全存储区域内,即片上闪存内,此时引入MCU的芯片唯一识别码UID检测机制,实现一机一识别码启动;工厂烧录Bootloader时,Bootloader将会读取实际MCU的UID,写入Bootloader内部指定的存储地址,此时存储后的UID成为Bootloader自身的一部分;开机启动时,Bootloader从指定的存储地址,读取出UID,与实际MCU的UID进行比较,一致则继续启动,不一致则锁死Bootloader;而当升级时,Bootloader根据加密指导区块,即可产生实际的工作密钥,正确解密局部区域,从而将固件完整还原,存储在安全存储区域内。
CN201610971108.4A 2016-11-05 2016-11-05 一种带有片上闪存微控制器的固件保护单元及保护方法 Pending CN106503494A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610971108.4A CN106503494A (zh) 2016-11-05 2016-11-05 一种带有片上闪存微控制器的固件保护单元及保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610971108.4A CN106503494A (zh) 2016-11-05 2016-11-05 一种带有片上闪存微控制器的固件保护单元及保护方法

Publications (1)

Publication Number Publication Date
CN106503494A true CN106503494A (zh) 2017-03-15

Family

ID=58323077

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610971108.4A Pending CN106503494A (zh) 2016-11-05 2016-11-05 一种带有片上闪存微控制器的固件保护单元及保护方法

Country Status (1)

Country Link
CN (1) CN106503494A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108632024A (zh) * 2017-03-21 2018-10-09 中兴通讯股份有限公司 一种运行引导程序的方法及装置
CN108681459A (zh) * 2018-03-26 2018-10-19 深圳前海有电物联科技有限公司 一种智能硬件设备的固件更新方法、装置及***
CN109462477A (zh) * 2018-12-28 2019-03-12 芯海科技(深圳)股份有限公司 基于物联网嵌入式设备的白盒加密方法
CN109495527A (zh) * 2017-09-12 2019-03-19 北京普源精电科技有限公司 一种示波器的升级方法及示波器
CN109598105A (zh) * 2018-12-03 2019-04-09 深圳忆联信息***有限公司 一种微控制器安全加载固件的方法、装置、计算机设备及存储介质
CN109828763A (zh) * 2018-12-24 2019-05-31 惠州市蓝微电子有限公司 一种闭环烧录校准的方法
CN109889333A (zh) * 2019-01-24 2019-06-14 深圳忆联信息***有限公司 固件数据加密方法、装置、计算机设备和存储介质
CN109934024A (zh) * 2019-03-12 2019-06-25 深圳忆联信息***有限公司 一种闪存数据加解密优化方法及其***
CN110008724A (zh) * 2019-03-29 2019-07-12 记忆科技(深圳)有限公司 固态硬盘控制器安全加载方法、装置及存储介质
CN110545175A (zh) * 2019-08-23 2019-12-06 国网湖北省电力有限公司电力科学研究院 一种针对充电桩与电动汽车通信协议的安全认证方法
CN112100624A (zh) * 2020-08-24 2020-12-18 泰斗微电子科技有限公司 一种固件保护方法、装置及终端设备
CN113326512A (zh) * 2021-05-21 2021-08-31 深圳矽递科技股份有限公司 电子设备及其mcu固件保护方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043641A (zh) * 2009-10-22 2011-05-04 盛大计算机(上海)有限公司 电子设备的固件升级方法
CN103577765A (zh) * 2012-08-08 2014-02-12 解放日报报业集团 针对流式文档的加密和解密方法及其装置
CN105574441A (zh) * 2015-11-09 2016-05-11 北京中电华大电子设计有限责任公司 一种嵌入式固件保护的方法和装置
CN105808978A (zh) * 2016-03-02 2016-07-27 上海斐讯数据通信技术有限公司 一种基于单片机固件的硬件防盗版方法及***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043641A (zh) * 2009-10-22 2011-05-04 盛大计算机(上海)有限公司 电子设备的固件升级方法
CN103577765A (zh) * 2012-08-08 2014-02-12 解放日报报业集团 针对流式文档的加密和解密方法及其装置
CN105574441A (zh) * 2015-11-09 2016-05-11 北京中电华大电子设计有限责任公司 一种嵌入式固件保护的方法和装置
CN105808978A (zh) * 2016-03-02 2016-07-27 上海斐讯数据通信技术有限公司 一种基于单片机固件的硬件防盗版方法及***

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108632024A (zh) * 2017-03-21 2018-10-09 中兴通讯股份有限公司 一种运行引导程序的方法及装置
CN109495527A (zh) * 2017-09-12 2019-03-19 北京普源精电科技有限公司 一种示波器的升级方法及示波器
CN109495527B (zh) * 2017-09-12 2021-11-02 北京普源精电科技有限公司 一种示波器的升级方法及示波器
CN108681459A (zh) * 2018-03-26 2018-10-19 深圳前海有电物联科技有限公司 一种智能硬件设备的固件更新方法、装置及***
CN109598105A (zh) * 2018-12-03 2019-04-09 深圳忆联信息***有限公司 一种微控制器安全加载固件的方法、装置、计算机设备及存储介质
CN109828763A (zh) * 2018-12-24 2019-05-31 惠州市蓝微电子有限公司 一种闭环烧录校准的方法
CN109462477B (zh) * 2018-12-28 2021-05-25 芯海科技(深圳)股份有限公司 基于物联网嵌入式设备的白盒加密方法
CN109462477A (zh) * 2018-12-28 2019-03-12 芯海科技(深圳)股份有限公司 基于物联网嵌入式设备的白盒加密方法
CN109889333A (zh) * 2019-01-24 2019-06-14 深圳忆联信息***有限公司 固件数据加密方法、装置、计算机设备和存储介质
CN109889333B (zh) * 2019-01-24 2022-03-29 深圳忆联信息***有限公司 固件数据加密方法、装置、计算机设备和存储介质
CN109934024A (zh) * 2019-03-12 2019-06-25 深圳忆联信息***有限公司 一种闪存数据加解密优化方法及其***
CN110008724A (zh) * 2019-03-29 2019-07-12 记忆科技(深圳)有限公司 固态硬盘控制器安全加载方法、装置及存储介质
CN110008724B (zh) * 2019-03-29 2023-03-21 记忆科技(深圳)有限公司 固态硬盘控制器安全加载方法、装置及存储介质
CN110545175A (zh) * 2019-08-23 2019-12-06 国网湖北省电力有限公司电力科学研究院 一种针对充电桩与电动汽车通信协议的安全认证方法
CN110545175B (zh) * 2019-08-23 2022-08-26 国网湖北省电力有限公司电力科学研究院 一种针对充电桩与电动汽车通信协议的安全认证方法
CN112100624A (zh) * 2020-08-24 2020-12-18 泰斗微电子科技有限公司 一种固件保护方法、装置及终端设备
CN113326512A (zh) * 2021-05-21 2021-08-31 深圳矽递科技股份有限公司 电子设备及其mcu固件保护方法

Similar Documents

Publication Publication Date Title
CN106503494A (zh) 一种带有片上闪存微控制器的固件保护单元及保护方法
CN103210396B (zh) 包括用于保护敏感代码和数据的架构的方法和装置
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
CN100354786C (zh) 开放型通用抗攻击cpu及其应用***
RU2541196C2 (ru) Способ обеспечения целостности программного обеспечения
CN106599629B (zh) 一种安卓应用程序加固方法及装置
CN104794388B (zh) 应用程序存取保护方法及应用程序存取保护装置
CN101872404B (zh) 一种保护Java软件程序的方法
JPH11509023A (ja) 無許可使用に対するソフトウェアの保護
CN101241533A (zh) 有加密部分或外部接口的半导体器件及内容再生方法
CA2925733A1 (en) Encryption and decryption processing method, apparatus, and device
CN105612715A (zh) 具有可配置访问控制的安全处理单元
CN101419557A (zh) 一种程序下载控制方法
CN104486355A (zh) 防止代码被恶意篡改的方法和装置
CN109446757B (zh) 一种用于通用mcu程序保护的方法
WO2023240866A1 (zh) 密码卡及其根密钥保护方法、计算机可读存储介质
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
US8479014B1 (en) Symmetric key based secure microprocessor and its applications
CN105574441A (zh) 一种嵌入式固件保护的方法和装置
CN105184119B (zh) 一种软件的安全保护方法
CN112241523A (zh) 一种嵌入式计算机开机身份认证方法
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及***
CN108268781A (zh) 电子装置的电子元件、启动电子装置的方法及加密方法
CN106372464A (zh) 一种嵌入式***中静态库文件的防盗版加密方法
CN102937907A (zh) 利用sd卡片进行授权软体安装更新使用的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170315