CN112035152B - 一种SoC芯片固件升级的安全处理系统及方法 - Google Patents

一种SoC芯片固件升级的安全处理系统及方法 Download PDF

Info

Publication number
CN112035152B
CN112035152B CN202010860122.3A CN202010860122A CN112035152B CN 112035152 B CN112035152 B CN 112035152B CN 202010860122 A CN202010860122 A CN 202010860122A CN 112035152 B CN112035152 B CN 112035152B
Authority
CN
China
Prior art keywords
area
bin file
soc chip
data
file
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.)
Active
Application number
CN202010860122.3A
Other languages
English (en)
Other versions
CN112035152A (zh
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.)
Chengdu 30javee Microelectronics Co ltd
Original Assignee
Chengdu 30javee Microelectronics 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 Chengdu 30javee Microelectronics Co ltd filed Critical Chengdu 30javee Microelectronics Co ltd
Priority to CN202010860122.3A priority Critical patent/CN112035152B/zh
Publication of CN112035152A publication Critical patent/CN112035152A/zh
Application granted granted Critical
Publication of CN112035152B publication Critical patent/CN112035152B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种SoC芯片固件升级的安全处理系统及方法,所述系统包括:安全访问控制模块,用于实现特殊存储区访问权限的获取,以及用于主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制;防出错防篡改检测模块,用于在使用BootLoader进行SoC芯片固件升级时,对用户固件程序的BIN文件进行正确性检测和版本号比对;身份合法性验证单元,用于对BIN文件进行身份合法性验证;数据传输加解密模块,用于对BIN文件在空中传输地过程中进行加解密处理;文件数据完整性验证单元,用于对BIN文件进行数据完整性验证。本发明解决了SoC芯片固件升级过程中各个阶段的数据安全问题。

Description

一种SoC芯片固件升级的安全处理系统及方法
技术领域
本发明涉及SoC(System on Chip)芯片固件升级技术、安全存储访问控制技术、数据传输加解密技术,尤其是一种SoC芯片固件升级过程中的防文件出错、防数据篡改技术和文件数据安全检测技术等安全处理机制及方法。
背景技术
嵌入式系统中BootLoader是在用户程序运行之前执行的一段程序。通过这段程序,可以初始化硬件设备、建立内存映射,从而将系统的软硬件环境带入到一个合适的状态。BootLoader的主要作用分为两种,一是加载和引导用户程序运行,此过程需要拷贝用户程序和相关数据到RAM中,使系统进入到用户工作状态,然后跳转到某个固定地址上引导执行用户程序;二是下载用户固件代码完成用户程序的升级,此过程需要SoC芯片通过某个硬件接口与主机端上位机进行通信和命令交互,并下载用户固件数据到用户指定的FLASH地址中,实现升级功能。
目前很多嵌入式产品投入市场应用并进行部署后,后续功能扩展或变更时会涉及到在应用现场进行程序的升级。一般情况下,出厂前SoC芯片的用户程序升级方案是使用仿真器直接烧录程序,或者通过短接某个引脚重新上电进行烧录。但是针对应用现场,一般SoC芯片嵌入在某个产品中不方便拆缷,或者关闭了仿真器调试功能,或者没有引出烧录引脚,加上出厂后产品部署现场分散,不利于规模化升级,大部分会采用在线升级方式。在设计BootLoader实现SoC芯片固件在线升级的过程中,BootLoader程序、用户固件程序的数据安全是重中之重,一套良好的数据安全保护处理机制可以有效防止出现BootLoader程序被异常修改、破坏、用户固件文件掉包、文件数据被篡改、内容泄露、用户固件文件下载不完整、出现芯片无法正常启动、宕机等问题。
在具备密码算法功能的安全SoC芯片的各个应用领域中,由于应用环境的特殊性,固件升级时数据安全处理机制尤为重要。
发明内容
本发明所要解决的技术问题是:针对上述存在的问题,提供一种SoC芯片固件升级的安全处理系统及方法。
本发明采用的一种SoC芯片固件升级的安全处理系统,包括:基于芯片FLASH存储器的安全访问控制模块、防出错防篡改检测模块、数据传输加解密模块和文件数据安全检测模块;所述文件数据安全检测模块包括身份合法性验证单元和文件数据完整性验证单元;
所述FLASH存储器包括主存储区和特殊存储区;
所述安全访问控制模块,用于实现特殊存储区访问权限的获取,以及用于主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制;
所述防出错防篡改检测模块,用于在使用BootLoader进行SoC芯片固件升级时,对用户固件程序的BIN文件进行正确性检测和版本号比对;
所述身份合法性验证单元,用于对用户固件程序的BIN文件进行身份合法性验证;
所述数据传输加解密模块,用于对用户固件程序的BIN文件在空中传输的过程中进行加解密处理;
所述文件数据完整性验证单元,用于对用户固件程序的BIN文件进行数据完整性验证。
进一步的,所述FLASH存储器中:
主存储区,即MAR区,划分为BOOT区、COS区和USR区;用户对主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制这些操作均受特殊存储区中的访问权限控制;
特殊存储区,也即SPB区,其中存储了SoC芯片的出厂配置数据和对主存储区进行安全控制的表项信息;所述表项信息包括JTAG开关控制信息、各个区域的边界、各个区域的访问密码、各个区域的访问控制开关、各个区域的当前密码匹配失败的次数、各个区域允许的最大密码匹配失败的次数。
进一步的,所述安全访问控制模块具有两级安全访问控制,包括:
第一级为获取SPB区中各个区域进行安全控制的表项信息的访问权限;FLASH存储器的寄存器中映射了一份SPB区的安全控制表项信息,即专门为SPB区设计的一组非易失性寄存器组,同时寄存器中还针对BOOT区、COS区和USR区各提供了一个易失性寄存器,作为各个区域的访问密码;当SPB区中各个区域的访问密码与FLASH存储器的寄存器中各个区域对应的易失性寄存器中的访问密码相同时,才能获得读写SPB区安全控制表项信息的权限;
第二级为配置各个区域的边界,配置各个区域的访问控制开关和密码失败次数;当SPB区中对应的某个区域的访问控制开关开启时,允许读写和擦除MAR区中对应区域的地址空间;当访问控制开关关闭时,则锁定MAR区中的对应区域,禁止擦除和写操作。
进一步的,所述防出错防篡改检测模块对用户固件程序的BIN文件进行正确性检测和版本比对,包括:
在FLASH存储器中的某个地址处固化一块特定区域,修改用于SoC芯片启动初始化的汇编文件和链接文件,使得该特定区域地址可以以独立字段的形式编译进SoC芯片的用户固件程序的BIN文件中,然后在该特定区域中写入用户自定义的一组特殊标记和当前SoC芯片的用户固件程序的版本号;同时,修改BootLoader代码中引导启动时的用户固件程序跳转入口地址,使得SoC芯片的用户固件程序在运行时跳过这段特定区域地址;
在使用BootLoader进行SoC芯片固件升级时,上位机首先读取用来升级的BIN文件中特定区域的特殊标记,如果与提供该BIN文件的来源处告知的编译时写入的特殊标记不同,则表明当前用来升级的BIN文件出错,上位机退出升级流程;若特殊标记验证相同后,则读取BIN文件中的版本号,上位机通过命令传递到SoC芯片并与SoC芯片当前运行的用户固件程序版本号进行比对,只有用来升级的BIN文件中的版本号大于SoC芯片当前运行的用户固件程序版本号时,才继续升级流程。
进一步的,所述身份合法性验证单元对用户固件程序的BIN文件进行身份合法性验证,包括:
首先对用户固件程序的BIN文件进行分包处理,并使用国密SM3杂凑算法分段式计算整个BIN文件的HASH值;
然后上位机使用公钥密钥对中的私钥对该HASH值和BIN文件的发布者的ID值进行签名处理,并将公钥密钥对中的公钥传递给SoC芯片中进行验签,验签通过则表明该BIN文件的身份合法有效,否则表明身份验证未通过,升级流程结束。
进一步的,所述数据传输加解密模块对用户固件程序的BIN文件进行加解密处理,包括:上位机对用户固件程序的BIN文件进行分包处理,并使用国密SM4分组算法对分包的明文数据进行加密处理得到密文数据,然后通过硬件接口将密文数据发送到SoC芯片;SoC芯片接收到密文数据后进行解密后进行存储,固化在FLASH存储器中的COS区。
进一步的,所述文件数据完整性验证单元对用户固件程序的BIN文件进行数据完整性验证,包括:
上位机计算整个用户固件程序的BIN文件的HASH值,并传递给SoC芯片;SoC芯片接收和处理完BIN文件所有的升级包后,在本地分包读取存储在FLASH存储器中的BIN文件数据,并使用国密SM3杂凑算法分段式计算整个接收到的BIN文件的HASH值,然后与上位机计算的HASH值结果进行对比;如果二者相同,则表明SoC芯片接收到的BIN文件数据正确完整,该升级后的用户程序可以正常运行;否则,表明该BIN文件的文件数据内容有误,或是所有数据尚未接收完成、或是传输过程有数据包丢失、或是传输过程有数据内容被修改。
本发明还提供一种SoC芯片固件升级的安全处理方法,包括如下步骤:
S1,启动BOOT程序烧录;
S2,对SPB区进行安全访问控制,对BOOT区禁止写和擦除操作,并关闭SPB区中的JTAG控制开关;
S3,切换为BOOT升级模式;
S4,进入SoC芯片固件升级流程;
S5,读取BIN文件的特定区域中的特殊标记并判断是否正确,若正确则执行S6,否则退出固件升级流程;
S6,读取BIN文件的特定区域中的版本号并判断是否大于SoC芯片当前运行的用户固件程序版本号,若是则执行S7,否则退出固件升级流程;
S7,上位机计算整个用户固件程序BIN文件的HASH值,并使用公钥密钥对中的私钥对该HASH值和BIN文件的发布者的ID值进行签名处理,并将公钥密钥对中的公钥传递给SoC芯片中进行验签,若验签通过则执行S8,否则退出固件升级流程;
S8,上位机对用户固件程序的BIN文件进行分包处理,并使用国密SM4分组算法对分包的明文数据进行加密处理得到密文数据,然后将密文数据发送到SoC芯片;
S9,SoC芯片接收到密文数据后进行解密后进行存储;
S10,上位机将计算得到的用户固件程序BIN文件的HASH值传递给SoC芯片;SoC芯片接收和处理完BIN文件所有的升级包后,在本地分包读取存储在FLASH存储器中的BIN文件数据,并使用国密SM3杂凑算法分段式计算整个接收到的BIN文件的HASH值,然后与上位机计算的HASH值结果进行对比;如果二者相同,则表明SoC芯片接收到的BIN文件数据正确完整,该升级后的用户程序可以正常运行;否则,表明该BIN文件的文件数据内容有误,或是所有数据尚未接收完成、或是传输过程有数据包丢失、或是传输过程有数据内容被修改。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明的SoC芯片固件升级的安全处理系统提出并实现了固件升级过程涉及到的代码区域锁定保护、防止文件出错、文件身份合法性验证、防止文件数据内容泄露和文件内容完整性验证等各种安全问题的解决方案。
2、本发明通过安全访问控制模块保证了FLASH存储器上的BOOT区地址范围内数据对未授权用户不可读写,严格保护了BOOT区的程序数据安全,防止芯片出厂后BOOT区代码被人为或异常破坏而导致芯片宕机、无法启动、无法使用BootLoader进行用户固件升级。
3、本发明通过防出错防篡改检测模块把该特殊标记和版本号编译进了SoC芯片的用户固件程序BIN文件的某个特定区域地址,且不影响烧写到FLASH存储器后用户固件程序的运行,使得在固件升级之前可以读取BIN文件中的特殊标记和版本号,可以有效防止在升级过程BIN文件被弄混出错和在传递过程中数据被篡改,保证了数据来源的安全可靠性。
4、本发明通过数据传输加解密模块,实现固件数据内容在空中传输过程中不被泄露,保证了升级文件的安全性。
5、本发明通过文件数据安全检测模块实现了BIN文件的身份合法性验证和数据完整性验证,保证了用来升级的BIN文件的有效性和完整性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明的SoC芯片固件升级的安全处理系统的系统模块框图。
图2为本发明的SoC芯片固件升级的安全处理系统的流程框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合实施例对本发明的特征和性能作进一步的详细描述。
如图1所示,一种SoC芯片固件升级的安全处理系统,包括:基于芯片FLASH存储器的安全访问控制模块、防出错防篡改检测模块、数据传输加解密模块和文件数据安全检测模块;所述文件数据安全检测模块包括身份合法性验证单元和文件数据完整性验证单元;
所述FLASH存储器包括主存储区和特殊存储区;
所述安全访问控制模块,用于实现特殊存储区访问权限的获取,以及用于主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制;
所述防出错防篡改检测模块,用于在使用BootLoader进行SoC芯片固件升级时,对用户固件程序的BIN(Binary)文件进行正确性检测和版本号比对;
所述身份合法性验证单元,用于对用户固件程序的BIN文件进行身份合法性验证;
所述数据传输加解密模块,用于对用户固件程序的BIN文件在空中传输的过程中进行加解密处理;
所述文件数据完整性验证单元,用于对用户固件程序的BIN文件进行数据完整性验证。
1、FLASH存储器
所述FLASH存储器包括主存储区和特殊存储区;所述FLASH存储器中:
(1)主存储区,即MAR区(Main Array),可以划分为BOOT区(BootLoader代码区)、COS区(固件代码区)和USR区(用户数据区);用户对主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制这些操作均受特殊存储区中的访问权限控制;本实施例设置主存储区大小为512K字节;
(2)特殊存储区,也即SPB区(Special Block),其中存储了SoC芯片的出厂配置数据和对主存储区进行安全控制的表项信息;所述表项信息包括JTAG开关控制信息、各个区域的边界、各个区域的访问密码、各个区域的访问控制开关、各个区域的当前密码匹配失败的次数、各个区域允许的最大密码匹配失败的次数。
2、安全访问控制模块
所述安全访问控制模块,用于实现特殊存储区访问权限的获取,以及用于主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制。
所述安全访问控制模块具有两级安全访问控制,包括:
第一级为获取SPB区中各个区域进行安全控制的表项信息的访问权限;FLASH存储器的寄存器中映射了一份SPB区的安全控制表项信息,即专门为SPB区设计的一组非易失性寄存器组,同时寄存器中还针对BOOT区、COS区和USR区各提供了一个易失性寄存器,作为各个区域的访问密码;当SPB区中各个区域的访问密码与FLASH存储器的寄存器中各个区域对应的易失性寄存器中的访问密码相同时,才能获得读写SPB区安全控制表项信息的权限;
第二级为配置各个区域的边界,配置各个区域的访问控制开关和密码失败次数;当SPB区中对应的某个区域的访问控制开关开启时,允许读写和擦除MAR区中对应区域的地址空间;当访问控制开关关闭时,则锁定MAR区中的对应区域,禁止擦除和写操作。
以下示例描述安全访问控制模块的工作过程:
首先,获取SPB区中各个区域的访问密码,并修改寄存器中的访问密码与之相同,从而取得SPB区读写访问的权限。需要说明的是,如何获取SPB区中各个区域的访问密码是非常关键的;初始状态下,一般SoC芯片出厂前会擦除SPB区,此时初始访问密码为全FF;其它情况下,需要牢记之前设置过的访问密码,如若忘记密码则会被锁定无法访问;确认SPB区中的访问密码后,只需设置易失性寄存器中的访问密码与之相同,即可获得SPB区的访问权限。
然后根据各个区域的空间大小来计算各个区域的边界值,一般BOOT区的空间大小控制在64KB以内,COS区和USR区的空间大小根据用户固件程序的大小和自身的业务数据大小来进行配置;确定各个的区域空间大小后,再依据相关公式规则计算出两个边界值,并写入SPB区中的非易失性边界寄存器,完成各个区域边界的设定。
其次,设置各个区域密码,SoC芯片固件升级过程只需要对BOOT区数据进行保护,因此配置SPB区中BOOT区对应的非易失性访问密码寄存器(设置一个只有用户知晓的密码值)、当前密码匹配失败的次数寄存器、允许的最大密码匹配失败的次数寄存器即可,同时需要配置易失性寄存器中的访问密码与SPB区中的访问密码相同。
最后,设定BOOT区的访问控制功能,可以在BOOT程序烧录前打开BOOT区的访问控制开关,允许读写擦除操作;BOOT程序烧录成功并固化后,关闭BOOT区的访问控制开关,禁止用户对MAR区中的BOOT区进行写和擦除操作,关闭SPB区中的JTAG控制开关,禁止用户进行仿真调试、编程和片擦操作。同时修改易失性寄存器中的访问密码,与用户设定的SPB区中BOOT区的访问密码不同,通过此操作来关闭SPB区中BOOT区相关寄存器的访问权限,后续重新访问受密码控制。
通过上述过程可以看出,所述安全访问控制模块保证了FLASH存储器上的BOOT区地址范围内数据对未授权用户不可读写,严格保护了BOOT区的程序数据安全,防止芯片出厂后BOOT区代码被人为或异常破坏而导致芯片宕机、无法启动、无法使用BootLoader进行用户固件升级。
3、防出错防篡改检测模块
所述防出错防篡改检测模块是针对用户在SoC芯片固件升级过程容易出现BIN文件被弄混弄错、掉包、BIN文件数据被篡改等问题而设计的一种安全防护措施。所述防出错防篡改检测模块在使用BootLoader进行SoC芯片固件升级时,对用户固件程序的BIN文件进行正确性检测和版本号比对,包括:
在FLASH存储器中的某个地址处固化一块特定区域,修改用于SoC芯片启动初始化的汇编文件和链接文件,使得该特定区域地址可以以独立字段的形式编译进SoC芯片的用户固件程序的BIN文件中,然后在该特定区域中写入用户自定义的一组特殊标记和当前SoC芯片的用户固件程序的版本号;同时,修改BootLoader代码中引导启动时的用户固件程序跳转入口地址,使得SoC芯片的用户固件程序在运行时跳过这段特定区域地址。如此便成功把该特殊标记和版本号编译进了SoC芯片的用户固件程序BIN文件的某个特定区域地址,且不影响烧写到FLASH存储器后用户固件程序的运行。
在使用BootLoader进行SoC芯片固件升级时,上位机首先读取用来升级的BIN文件中特定区域的特殊标记,如果与提供该BIN文件的来源处告知的编译时写入的特殊标记不同,则表明当前用来升级的BIN文件出错,上位机退出升级流程;若特殊标记验证相同后,则读取BIN文件中的版本号,上位机通过命令传递到SoC芯片并与SoC芯片当前运行的用户固件程序版本号进行比对,只有用来升级的BIN文件中的版本号大于SoC芯片当前运行的用户固件程序版本号时,才继续升级流程。如此,通过该防出错防篡改检测模块可以有效防止在升级过程BIN文件被弄混出错和在传递过程中数据被篡改,保证了数据来源的安全可靠性。
4、身份合法性验证单元
所述身份合法性验证单元对用户固件程序的BIN文件进行身份合法性验证,包括:
首先对用户固件程序的BIN文件进行分包处理,并使用国密SM3杂凑算法分段式计算整个BIN文件的HASH值;
然后上位机使用公钥密钥对中的私钥对该HASH值和BIN文件的发布者的ID值进行签名处理,并将公钥密钥对中的公钥传递给SoC芯片中进行验签,验签通过则表明该BIN文件的身份合法有效,否则表明身份验证未通过,升级流程结束。
5、数据传输加解密模块
所述数据传输加解密模块是针对用户固件BIN文件数据在进行远程在线升级时使用硬件接口传输过程采取的一种保护措施。所述数据传输加解密模块对用户固件程序的BIN文件进行加解密处理,包括:上位机对用户固件程序的BIN文件进行分包处理,并使用国密SM4分组算法对分包的明文数据进行加密处理得到密文数据,然后将密文数据发送到SoC芯片;SoC芯片接收到密文数据后进行解密,得到BIN文件明文数据并进行存储,固化在FLASH存储器中的COS区,如此完成SoC芯片固件升级的主要操作。该数据传输加解密模块的主要作用是保护固件数据在空中传输过程的安全性,防止固件数据内容泄露和损坏。对于一些需要保密的文件数据,这也是一种有效的预防泄密的手段。
6、文件数据完整性验证单元
所述文件数据完整性验证单元是用于SoC芯片固件升级过程中保障数据内容完整性的安全措施。所述文件数据完整性验证单元对用户固件程序的BIN文件进行数据完整性验证,包括:
上位机计算整个用户固件程序的BIN文件的HASH值,并传递给SoC芯片;SoC芯片接收和处理完BIN文件所有的升级包后,在本地分包读取存储在FLASH存储器中的BIN文件数据,并使用国密SM3杂凑算法分段式计算整个接收到的BIN文件的HASH值,然后与上位机计算的HASH值结果进行对比;如果二者相同,则表明SoC芯片接收到的BIN文件数据正确完整,该升级后的用户程序可以正常运行;否则,表明该BIN文件的文件数据内容有误,或是所有数据尚未接收完成、或是传输过程有数据包丢失、或是传输过程有数据内容被修改。
如图2所示,基于上述SoC芯片固件升级的安全处理系统的安全处理方法如下:
S1,启动BOOT程序烧录;
S2,对SPB区进行安全访问控制,对BOOT区禁止写和擦除操作,并关闭SPB区中的JTAG控制开关;
S3,切换为BOOT升级模式;
S4,进入SoC芯片固件升级流程;
S5,读取BIN文件的特定区域中的特殊标记并判断是否正确,若正确则执行S6,否则退出固件升级流程;
S6,读取BIN文件的特定区域中的版本号并判断是否大于SoC芯片当前运行的用户固件程序版本号,若是则执行S7,否则退出固件升级流程;
S7,上位机计算整个用户固件程序BIN文件的HASH值,并使用公钥密钥对中的私钥对该HASH值和BIN文件的发布者的ID值进行签名处理,并将公钥密钥对中的公钥传递给SoC芯片中进行验签,若验签通过则执行S8,否则退出固件升级流程;
S8,上位机对用户固件程序的BIN文件进行分包处理,并使用国密SM4分组算法对分包的明文数据进行加密处理得到密文数据,然后将密文数据发送到SoC芯片;
S9,SoC芯片接收到密文数据后进行解密后进行存储;
S10,上位机将计算得到的用户固件程序BIN文件的HASH值传递给SoC芯片;SoC芯片接收和处理完BIN文件所有的升级包后,在本地分包读取存储在FLASH存储器中的BIN文件数据,并使用国密SM3杂凑算法分段式计算整个接收到的BIN文件的HASH值,然后与上位机计算的HASH值结果进行对比;如果二者相同,则表明SoC芯片接收到的BIN文件数据正确完整,该升级后的用户程序可以正常运行;否则,表明该BIN文件的文件数据内容有误,或是所有数据尚未接收完成、或是传输过程有数据包丢失、或是传输过程有数据内容被修改。
通过上述内容可知,本发明的SoC芯片固件升级的安全处理系统提出并实现了固件升级过程涉及到的代码区域锁定保护、防止文件出错、文件身份合法性验证、防止文件数据内容泄露和文件内容完整性验证等各种安全问题的解决方案,具体有极大借鉴意义。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种SoC芯片固件升级的安全处理系统,其特征在于,包括:基于芯片FLASH存储器的安全访问控制模块、防出错防篡改检测模块、数据传输加解密模块和文件数据安全检测模块;所述文件数据安全检测模块包括身份合法性验证单元和文件数据完整性验证单元;
所述FLASH存储器包括主存储区和特殊存储区;
所述安全访问控制模块,用于实现特殊存储区访问权限的获取,以及用于主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制;
所述防出错防篡改检测模块,用于在使用BootLoader进行SoC芯片固件升级时,对用户固件程序的BIN文件进行正确性检测和版本号比对;
所述身份合法性验证单元,用于对用户固件程序的BIN文件进行身份合法性验证;
所述数据传输加解密模块,用于对用户固件程序的BIN文件在空中传输的过程中进行加解密处理;
所述文件数据完整性验证单元,用于对用户固件程序的BIN文件进行数据完整性验证;
所述FLASH存储器中:
主存储区,即MAR区,划分为BOOT区、COS区和USR区;用户对主存储区中各个区域的划分和边界的配置,各个区域访问密码的设置、各个区域的读写、擦除操作的控制和JTAG的开关控制这些操作均受特殊存储区中的访问权限控制;
特殊存储区,也即SPB区,其中存储了SoC芯片的出厂配置数据和对主存储区进行安全控制的表项信息;所述表项信息包括JTAG开关控制信息、各个区域的边界、各个区域的访问密码、各个区域的访问控制开关、各个区域的当前密码匹配失败的次数、各个区域允许的最大密码匹配失败的次数。
2.根据权利要求1所述的SoC芯片固件升级的安全处理系统,其特征在于,所述安全访问控制模块具有两级安全访问控制,包括:
第一级为获取SPB区中各个区域进行安全控制的表项信息的访问权限;FLASH存储器的寄存器中映射了一份SPB区的安全控制表项信息,即专门为SPB区设计的一组非易失性寄存器组,同时寄存器中还针对BOOT区、COS区和USR区各提供了一个易失性寄存器,作为各个区域的访问密码;当SPB区中各个区域的访问密码与FLASH存储器的寄存器中各个区域对应的易失性寄存器中的访问密码相同时,才能获得读写SPB区安全控制表项信息的权限;
第二级为配置各个区域的边界,配置各个区域的访问控制开关和密码失败次数;当SPB区中对应的某个区域的访问控制开关开启时,允许读写和擦除MAR区中对应区域的地址空间;当访问控制开关关闭时,则锁定MAR区中的对应区域,禁止擦除和写操作。
3.根据权利要求2所述的SoC芯片固件升级的安全处理系统,其特征在于,所述防出错防篡改检测模块对用户固件程序的BIN文件进行正确性检测和版本比对,包括:
在FLASH存储器中的某个地址处固化一块特定区域,修改用于SoC芯片启动初始化的汇编文件和链接文件,使得特定区域的地址以独立字段的形式编译进SoC芯片的用户固件程序的BIN文件中,然后在特定区域中写入用户自定义的一组特殊标记和当前SoC芯片的用户固件程序的版本号;同时,修改BootLoader代码中引导启动时的用户固件程序跳转入口地址,使得SoC芯片的用户固件程序在运行时跳过这段特定区域地址;
在使用BootLoader进行SoC芯片固件升级时,上位机首先读取用来升级的BIN文件中特定区域的特殊标记,如果与提供该BIN文件的来源处告知的编译时写入的特殊标记不同,则表明当前用来升级的BIN文件出错,上位机退出升级流程;若特殊标记验证相同后,则读取BIN文件中的版本号,上位机通过命令传递到SoC芯片并与SoC芯片当前运行的用户固件程序版本号进行比对,只有用来升级的BIN文件中的版本号大于SoC芯片当前运行的用户固件程序版本号时,才继续升级流程。
4.根据权利要求3所述的SoC芯片固件升级的安全处理系统,其特征在于,所述身份合法性验证单元对用户固件程序的BIN文件进行身份合法性验证,包括:
首先对用户固件程序的BIN文件进行分包处理,并使用国密SM3杂凑算法分段式计算整个BIN文件的HASH值;
然后上位机使用公钥密钥对中的私钥对该HASH值和BIN文件的发布者的ID值进行签名处理,并将公钥密钥对中的公钥传递给SoC芯片中进行验签,验签通过则表明该BIN文件的身份合法有效,否则表明身份验证未通过,升级流程结束。
5.根据权利要求4所述的SoC芯片固件升级的安全处理系统,其特征在于,所述数据传输加解密模块对用户固件程序的BIN文件进行加解密处理,包括:上位机对用户固件程序的BIN文件进行分包处理,并使用国密SM4分组算法对分包的明文数据进行加密处理得到密文数据,然后通过硬件接口将密文数据发送到SoC芯片;SoC芯片接收到密文数据后进行解密后还原出BIN文件并进行存储,固化在FLASH存储器中的COS区。
6.根据权利要求5所述的SoC芯片固件升级的安全处理系统,其特征在于,所述文件数据完整性验证单元对用户固件程序的BIN文件进行数据完整性验证,包括:
上位机计算整个用户固件程序的BIN文件的HASH值,并传递给SoC芯片;SoC芯片接收和处理完BIN文件所有的升级包后,在本地分包读取存储在FLASH存储器中的BIN文件数据,并使用国密SM3杂凑算法分段式计算整个接收到的BIN文件的HASH值,然后与上位机计算的HASH值结果进行对比;如果二者相同,则表明SoC芯片接收到的BIN文件数据正确完整,升级后的用户程序能够正常运行;否则,表明该BIN文件的文件数据内容有误,或是所有数据尚未接收完成、或是传输过程有数据包丢失、或是传输过程有数据内容被修改。
7.一种SoC芯片固件升级的安全处理方法,其特征在于,包括如下步骤:
S1,启动BOOT程序烧录;
S2,对SPB区进行安全访问控制,对BOOT区禁止写和擦除操作,并关闭SPB区中的JTAG控制开关;
S3,切换为BOOT升级模式;
S4,进入SoC芯片固件升级流程;
S5,读取BIN文件的特定区域中的特殊标记并判断是否正确,若正确则执行S6,否则退出固件升级流程;
S6,读取BIN文件的特定区域中的版本号并判断是否大于SoC芯片当前运行的用户固件程序版本号,若是则执行S7,否则退出固件升级流程;
S7,上位机计算整个用户固件程序BIN文件的HASH值,并使用公钥密钥对中的私钥对该HASH值和BIN文件的发布者的ID值进行签名处理,并将公钥密钥对中的公钥传递给SoC芯片中进行验签,若验签通过则执行S8,否则退出固件升级流程;
S8,上位机对用户固件程序的BIN文件进行分包处理,并使用国密SM4分组算法对分包的明文数据进行加密处理得到密文数据,然后将密文数据发送到SoC芯片;
S9,SoC芯片接收到密文数据后进行解密后进行存储;
S10,上位机将计算得到的用户固件程序BIN文件的HASH值传递给SoC芯片;SoC芯片接收和处理完BIN文件所有的升级包后,在本地分包读取存储在FLASH存储器中的BIN文件数据,并使用国密SM3杂凑算法分段式计算整个接收到的BIN文件的HASH值,然后与上位机计算的HASH值结果进行对比;如果二者相同,则表明SoC芯片接收到的BIN文件数据正确完整,升级后的用户程序能够正常运行;否则,表明该BIN文件的文件数据内容有误,或是所有数据尚未接收完成、或是传输过程有数据包丢失、或是传输过程有数据内容被修改。
CN202010860122.3A 2020-08-24 2020-08-24 一种SoC芯片固件升级的安全处理系统及方法 Active CN112035152B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010860122.3A CN112035152B (zh) 2020-08-24 2020-08-24 一种SoC芯片固件升级的安全处理系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010860122.3A CN112035152B (zh) 2020-08-24 2020-08-24 一种SoC芯片固件升级的安全处理系统及方法

Publications (2)

Publication Number Publication Date
CN112035152A CN112035152A (zh) 2020-12-04
CN112035152B true CN112035152B (zh) 2023-10-10

Family

ID=73581060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010860122.3A Active CN112035152B (zh) 2020-08-24 2020-08-24 一种SoC芯片固件升级的安全处理系统及方法

Country Status (1)

Country Link
CN (1) CN112035152B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112613030A (zh) * 2020-12-15 2021-04-06 深圳市燃气集团股份有限公司 一种基于物联网燃气表的可信安全启动方法及系统
CN112732308A (zh) * 2020-12-31 2021-04-30 广州万协通信息技术有限公司 一种模块细粒度化的固件升级方法、设备及存储介质
CN112733208B (zh) * 2020-12-31 2021-10-19 宸芯科技有限公司 一种芯片的安全boot方法、装置、安全芯片和计算机设备
CN112904182B (zh) * 2021-01-28 2021-12-07 无锡众星微系统技术有限公司 测试模式进入控制方法
CN113064621A (zh) * 2021-04-14 2021-07-02 艾体威尔电子技术(北京)有限公司 一种智能设备安卓系统对密码键盘系统固件升级的方法
CN113360914A (zh) * 2021-05-14 2021-09-07 山东英信计算机技术有限公司 一种bios更新的方法、系统、设备及介质
CN113448608B (zh) * 2021-07-14 2022-05-20 浙江国利网安科技有限公司 一种基于区域切片技术的fpga增量升级方法及装置
CN113561991B (zh) * 2021-07-28 2023-02-17 浪潮卓数大数据产业发展有限公司 一种基于区块链的危险驾驶行为规避方法及设备、介质
CN113778489B (zh) * 2021-09-14 2024-01-30 上海芯钛信息科技有限公司 一种从硬件层面支持不停车ota的方法及系统
CN114065218B (zh) * 2021-11-19 2024-04-12 山东方寸微电子科技有限公司 一种SoC系统芯片安全启动方法
CN114826785B (zh) * 2022-06-29 2022-09-23 湖北芯擎科技有限公司 一种动态防护方法、系统级芯片、电子设备及介质
CN117632193B (zh) * 2023-12-18 2024-04-30 湖南进芯电子科技有限公司 一种用于处理器芯片的程序烧录系统

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622257A (zh) * 2012-04-25 2012-08-01 钜泉光电科技(上海)股份有限公司 电表在线自更新方法及其装置
CN104680054A (zh) * 2015-02-11 2015-06-03 成都布林特信息技术有限公司 一种rfid数据处理方法
CN105117253A (zh) * 2015-08-27 2015-12-02 常州大学 一种基于BootLoader的UV LED固化系统远程升级方法
DE102015001801A1 (de) * 2015-02-16 2016-08-18 IAD Gesellschaft für Informatik, Automatisierung und Datenverarbeitung mbH Autonom bootendes System mit einer Verschlüsselung des gesamten Datenspeichers und Verfahren hierfür
CN106775716A (zh) * 2016-12-15 2017-05-31 中国科学院沈阳自动化研究所 一种基于度量机制的可信plc启动方法
CN106775488A (zh) * 2016-12-27 2017-05-31 维沃移动通信有限公司 一种文件的存储方法及移动终端
CN108415717A (zh) * 2018-03-22 2018-08-17 南京尤尼泰信息科技有限公司 一种zynqsoc固件升级方法及升级装置
CN209199101U (zh) * 2018-10-29 2019-08-02 广东长实通信科技有限公司 一种高安全性的通讯加密装置及系统
CN110545319A (zh) * 2019-08-23 2019-12-06 武汉久同智能科技有限公司 一种SoC核系统的设计和核间任务通信的实现方法
CN110765438A (zh) * 2019-10-24 2020-02-07 江苏云涌电子科技股份有限公司 一种高性能密码卡及其工作方法
KR20200020626A (ko) * 2018-08-16 2020-02-26 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 펌웨어 업데이트 방법
CN110998578A (zh) * 2017-08-23 2020-04-10 高通股份有限公司 用于在异构存储器环境内进行引导的系统和方法
CN111061499A (zh) * 2019-12-31 2020-04-24 上海赫千电子科技有限公司 一种基于文件系统的ecu更新方法及系统

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622257A (zh) * 2012-04-25 2012-08-01 钜泉光电科技(上海)股份有限公司 电表在线自更新方法及其装置
CN104680054A (zh) * 2015-02-11 2015-06-03 成都布林特信息技术有限公司 一种rfid数据处理方法
DE102015001801A1 (de) * 2015-02-16 2016-08-18 IAD Gesellschaft für Informatik, Automatisierung und Datenverarbeitung mbH Autonom bootendes System mit einer Verschlüsselung des gesamten Datenspeichers und Verfahren hierfür
CN105117253A (zh) * 2015-08-27 2015-12-02 常州大学 一种基于BootLoader的UV LED固化系统远程升级方法
CN106775716A (zh) * 2016-12-15 2017-05-31 中国科学院沈阳自动化研究所 一种基于度量机制的可信plc启动方法
CN106775488A (zh) * 2016-12-27 2017-05-31 维沃移动通信有限公司 一种文件的存储方法及移动终端
CN110998578A (zh) * 2017-08-23 2020-04-10 高通股份有限公司 用于在异构存储器环境内进行引导的系统和方法
CN108415717A (zh) * 2018-03-22 2018-08-17 南京尤尼泰信息科技有限公司 一种zynqsoc固件升级方法及升级装置
KR20200020626A (ko) * 2018-08-16 2020-02-26 경희대학교 산학협력단 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 펌웨어 업데이트 방법
CN209199101U (zh) * 2018-10-29 2019-08-02 广东长实通信科技有限公司 一种高安全性的通讯加密装置及系统
CN110545319A (zh) * 2019-08-23 2019-12-06 武汉久同智能科技有限公司 一种SoC核系统的设计和核间任务通信的实现方法
CN110765438A (zh) * 2019-10-24 2020-02-07 江苏云涌电子科技股份有限公司 一种高性能密码卡及其工作方法
CN111061499A (zh) * 2019-12-31 2020-04-24 上海赫千电子科技有限公司 一种基于文件系统的ecu更新方法及系统

Also Published As

Publication number Publication date
CN112035152A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN112035152B (zh) 一种SoC芯片固件升级的安全处理系统及方法
EP1594030B1 (en) Program update method and server
TWI438686B (zh) 用於使用狀態確認來保護作業系統啟動過程的系統及方法
KR100746012B1 (ko) 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치
US8719595B2 (en) Semiconductor device including encryption section, semiconductor device including external interface, and content reproduction method
US8341751B2 (en) Software license management
CN102063591B (zh) 基于可信平台的平台配置寄存器参考值的更新方法
KR20000022308A (ko) 플래시 메모리를 보호하는 방법 및 장치
TW200832427A (en) Virtual secure on-chip one time programming
KR20100016657A (ko) 전자 디바이스에서 simlock 정보를 보호하는 방법 및 장치
US20090024784A1 (en) Method for writing data into storage on chip and system thereof
US20060200682A1 (en) Apparatus and method for protecting diagnostic ports of secure devices
US20090287917A1 (en) Secure software distribution
CN111984962A (zh) 固件安全验证方法及装置
CA2308755A1 (en) Reconfigurable secure hardware apparatus and method of operation
JP7113115B2 (ja) シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法
Bittner et al. The forgotten threat of voltage glitching: a case study on Nvidia Tegra X2 SoCs
JP6636028B2 (ja) セキュア素子
Menhorn External secure storage using the PUF
CN113032739A (zh) 一种软件代码版权保护方法
CN111695164B (zh) 电子设备及其控制方法
RU57030U1 (ru) Устройство защиты от несанкционированной загрузки программного обеспечения
KR20190118894A (ko) 안전한 usb 장치를 보장하는 부트 방법
CN110023940A (zh) 适合于在受保护的和/或开放的运行状态下运行的设备单元以及所属的方法
CN203054848U (zh) 一种软件加密锁

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant