CN115587370A - 一种固件导入方法、固件导入系统及安全芯片 - Google Patents

一种固件导入方法、固件导入系统及安全芯片 Download PDF

Info

Publication number
CN115587370A
CN115587370A CN202211357649.XA CN202211357649A CN115587370A CN 115587370 A CN115587370 A CN 115587370A CN 202211357649 A CN202211357649 A CN 202211357649A CN 115587370 A CN115587370 A CN 115587370A
Authority
CN
China
Prior art keywords
data
plaintext data
firmware
plaintext
data packet
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
CN202211357649.XA
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.)
Hangzhou Flyslice Technologies Co ltd
Original Assignee
Hangzhou Flyslice Technologies 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 Hangzhou Flyslice Technologies Co ltd filed Critical Hangzhou Flyslice Technologies Co ltd
Priority to CN202211357649.XA priority Critical patent/CN115587370A/zh
Publication of CN115587370A publication Critical patent/CN115587370A/zh
Pending legal-status Critical Current

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/602Providing cryptographic facilities or services
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本申请涉及计算机安全领域,公开了一种固件导入方法,包括:接收包括第一数据包和第二数据包的固件,将第一数据包导入到安全芯片的只读存储器中;从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密,得到第三明文数据;将所述第三明文数据写入到安全芯片的存储模块中。藉此来保护安全芯片在固件导入过程中的安全。

Description

一种固件导入方法、固件导入系统及安全芯片
技术领域
本申请涉及计算机安全领域,尤其是一种固件导入方法、固件导入系统及安全芯片。
背景技术
随着科技的发展进步,安全芯片在人们的生活中的普及程度越来越高。在使用芯片的过程中,需要根据实际需求对芯片进行固件升级操作。在固件升级的操作过程中,一般通过芯片从服务器获取固件文件,并利用该固件文件进行固件升级操作。但是,在实际操作中,一方面,在传输固件文件的过程中,容易发生固件文件的泄漏或者固件文件被盗用的情况,使得固件文件的升级操作存在安全隐患;另一方面,由于无法保障获取到的固件文件本身的安全可控,同样会使得固件升级操作存在安全隐患。
因此,如何提高利用固件文件对芯片进行固件升级操作的安全性,是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的在于提高固件文件从上位机导入到安全芯片中的安全性,具体地,提供一种固件导入方法、固件导入系统及安全芯片。
第一方面,提供了一种固件导入方法,由安全芯片执行,所述安全芯片包括只读存储器和存储模块,所述方法包括:响应于固件导入指令,接收包括第一数据包和第二数据包的固件;将第一数据包导入到安全芯片的只读存储器中;从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密,得到第三明文数据;将所述第三明文数据写入到安全芯片的存储模块中。
优选的,在将第一数据包导入到安全芯片的只读存储器中后,对所述第一数据包的完整性进行验证;响应于所述第一数据包的完整性验证通过,再从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密。
其中,所述第一数据包的完整性验证包括以下步骤:从只读存储器中第一数据包中的预设位置处获取第一摘要值,其中所述第一摘要值由上位机对第一数据包中的除了预设位置外的数据进行第一哈希运算生成;对导入到所述只读存储器中的第一数据包中的除了预设位置外的数据进行第一哈希运算,以生成第二摘要值;对第一摘要值和第二摘要值的一致性进行验证;响应于第一摘要值和第二摘要值的一致性验证通过,判定第一数据包完整性验证通过。
具体地,所述第一数据包包括第一明文数据和第二明文数据,其中,所述第一明文数据包括BOOT程序文件,所述第二明文数据包括算法库文件;所述第二数据包包括第三密文数据,所述第三密文数据由第三明文数据经由第一加密算法使用第一密钥加密运算而成,其中所述第三明文数据为功能固件文件。
优选地,在将所述第一明文数据和第二明文数据导入到安全芯片的只读存储器中后,判断所述BOOT程序是否成功加载;若成功加载,那么从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密,得到第三明文数据;若成功不加载,那么继续执行第一数据包导入到安全芯片的只读存储器中的步骤,直至能够成功加载。
进一步,在将所述第三明文数据写入到安全芯片的存储模块中后,还对所述第三明文数据进行完整性验证;
其中,所述第三明文数据完整性验证包括对第三明文数据的主体部分进行完整性验证和对第三明文数据的数据头进行完整性验证。
优选地,对第三明文数据的数据头进行完整性验证;在对所述第三明文数据的数据头的完整性验证通过后,再对所述第三明文数据的主体部分进行完整性验证。
优选地,响应于所述第三明文数据的主体部分的完整验证通过,再对所述第三明文数据有效性进行验证。
具体地,对所述第三明文数据的数据头的完整性验证包括以下步骤:从所述第三明文数据的数据头的预设位置处获取第三摘要值,其中第三摘要值由上位机对所述第三明文数据的数据头中除了预设位置处的数据进行第二哈希运算生成;对所述存储模块中的所述第三明文数据的数据头中除了预设位置处的数据进行第二哈希运算,以生成第四摘要值;对第三摘要值和第四摘要值的一致性进行验证;响应于第三摘要值和第四摘要值的一致性验证通过,判定第三明文数据的数据头完整。
具体地,所述第三明文数据的主体部分的完整性验证机制包括以下步骤:获取第三明文数据的数据头的预设位置处所存储的第五摘要值,其中第五摘要值由上位机对第三明文数据的主体部分进行第三哈希运算生成;对所述存储模块中的第三明文数据的主体部分进行第三哈希运算,以生成第六摘要值;对第六摘要值和第五摘要值的一致性进行验证;响应于第六摘要值和第五摘要值的一致性验证通过,判定第三明文数据主体部分完整。
具体地,所述第三明文数据有效性验证包括以下步骤:从所述第三明文数据的数据头的预设位置处获取第二密钥,所述第二密钥用于对第三明文数据的主体部分进行解密;验证第二密钥是否可对第三明文数据的主体部分进行解密;响应于解密成功,判定所述第三明文数据有效性地验证通过。
优选地,响应于所述第三明文数据有效性验证通过,则将第三明文数据的数据头写入到存储模块的第一实体单元中,并将第三明文数据的主体部分写入到存储模块的第二实体单元中;其中,第一实体单元的物理地址和第二实体单元的物理地址不同。
优选地,在将所述第三明文数据写入到目标芯片的存储模块的每一实体单元的过程中,对第三明文数据正在写入的所述实体单元执行读保护,使得第三明文数据在写入到所述存储模块的过程中不能够被读取。
优选地,在将所述第三明文数据写入到安全芯片的存储模块中后,对存储有所述第三明文数据的实体单元执行写保护,使得存储有所述第三明文数据的实体单元不能够被用于存储新的数据。
第二方面,本申请实施例还提出一种固件导入系统,包括上位机和安全芯片,其中:所述上位机通过第一加密算法使用第一密钥将第三明文数据加密运算而得到第三密文数据;所述上位机将第一明文数据和第二明文数据打包成第一数据包,以及将所述第三密文数据打包成第二数据包;且所述上位机将所述第一密钥存储在所述第一数据包的预设位置处。
优选地,所述上位机对第一数据包中的除了预设位置外的数据进行第一哈希运算,得到第一摘要值;所述上位机还将所述第一摘要值存储在所述第一数据包中的预设位置处。
优选地,所述上位机对所述第三明文数据的数据头中的除了预设位置处的数据进行第二哈希运算生成,得到第三摘要值;所述上位机对第三明文数据的主体部分进行第三哈希运算生成,得到第五摘要值;所述上位机还通过第二加密算法使用第二密钥对第三明文数据的主体部分进行加密运算;所述上位机将所述第三摘要值、第五摘要值以及第二密钥存储在所述第三明文数据的数据头的预设位置处。
第三方面,本申请实施例还提出一种安全芯片,包括第二处理器和存储模块,所述存储模块存储有计算机程序,所述第二处理器调用并执行所述计算机程序时实现上述任一固件导入方法的步骤。
本申请具有如下有益效果:通过对固件进行了分割设计,使得一部分固件文件(BOOT程序,算法库)存储于只读存储器中,另一部分固件(功能固件)存储于存储模块中,在需要执行功能固件的功能时,第二处理器从存储模块中将其读到缓冲存储器中来执行。从而在不影响安全芯片的功能实现的前提下,可减小对安全芯片中ROM容量空间的要求,进而可降低目标芯片的成本;并且对一部分的固件采取了加解密验证机制,从而能够保护固件从上位机中导入安全芯片的过程中不被外部攻击非法访问、读出、修改或者窃取。进而提高安全芯片的产品可靠性。
附图说明
构成本申请的一部分的附图用于来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例所示出的固件导入系统框架图;
图2是本申请另一实施例所示出的固件文件组成示意图;
图3是本申请另一实施例所示出的固件导入方法的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在一实施例中,提出一种固件导入系统,如图1所示。图1是本申请提供的固件导入系统的框架示意图。固件导入系统包括上位机1和下位机2。具体地,上位机1包括处理器11(也称之为第一处理器)和存储器12。上位机1可为任意型态的计算机系统。例如。上位机1可为笔记本计算机、台式计算机、智能手机、平板计算机、工业计算机、游戏机、数码相机等各式电子系统。上位机中的处理器11和存储器12可采用相关技术中通用的微处理器(centralprocessing unit,CPU)和存储设备(机械硬盘或者固态硬盘等),在此省略说明。
在一实施例中,上位机1可为服务器。当上位机1为服务器的时候,下位机2可为电子设备或者目标芯片。固件导入操作可被理解为固件升级业务,即电子设备或者目标芯片2的固件升级业务需求,基于此业务需求,固件文件从服务器中导入到下位机(可被理解为电子设备或者目标芯片)中。其中,下位机2通过网络与上位机1进行通信,两者之间的通信方式属于本领域的习知技术,在此不再赘述。
当上位机1为烧录器时,本申请实施例中的固件导入可被理解为芯片固件烧录的业务操作,具体地固件文件从烧录器1中烧录至安全芯片2中。
具体地,烧录器1是一种程序下载设备,主要用于单片机(含嵌入式)/存储器(含BIOS)之类的芯片的烧录(或称刷写)。可以利用计算机通过串联、并联或USB等方式建立连接并搭配特定的工具将程序写入存储类、单片机类的元器件中。例如烧录器1可以是万用型烧录器、量产型烧录器或专用型烧录器。烧录器1和目标芯片2互相连接,其连接方式包括但不限于通过SPI(Serial Peripheral In-terface,串行外设接口)、SATA(Serial AdvancedTechnology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(IntegratedDrive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,高速外围组件互联)等。
在一实施例中,安全芯片2包括处理器24、存储模块23、只读存储器21、缓冲存储器22和加解密模块25。
处理器24(也称之为第二处理器)可包括中央处理单元(CPU)、或是其他可编程的一般用途或特殊用途的微处理器、数字信号处理器(Digital Signal Processor,DSP)、可编程控制器、专用集成电路(Application Specific Integrated Circuits,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)或其他类似装置或这些装置的组合。
存储模块122用于存储固件文件。具体地,其存储介质可为Nand Flash或者eFlash等,优选地为eFlash。
缓冲存储器22是电性连接至处理器24并且用于暂存来自于上位机1的数据与指令或来自于存储模块22的数据。
加解密模块25是电性连接至处理器24并且用于响应于处理器24的加解密指令而执行加解密操作。其中加解密模块25可为预设了各类对称、非对称、哈希散列等各种算法电路。在目标芯片2有加解密业务需求时,处理器24将只读存储器21中算法库的相应的程序代码读到缓冲存储器22上运行,程序代码中的程序参数作为加解密模块25的输入,并等待加解密模块25计算后得到输出,重复这一过程,直到完成加解密业务需求,最终输出结果。
在一实施例中,为了提高固件文件在上位机导入到下位机过程中的安全性,固件文件(也可称之为明文数据)在上位机处被加密算法做加密处理,使得传送到下位机中的固件文件是密文数据,进而提高固件文件导入过程中的安全性。
在一实施例中,固件文件为源码编译后得到的二进制文件。如图2所示,图2为固件文件的示意图。固件文件包括第一数据包和第二数据包。其中第一数据包包括第一明文数据和第二明文数据。其中,第一明文数据包括BOOT程序文件,第二明文数据包括算法库文件。以及第二数据包包括第三密文数据,所述第三密文数据由第三明文数据经由第一加密算法使用第一密钥加密运算而成,其中所述第三明文数据为功能固件文件。
在本发明的一个实施例中,第一加密算法为对称加密算法,例如高级加密标准(Advanced Encryption Standard,AES)算法、数据加密标准(Data Encryption Standard,DES)算法、三重数据加密算法(Triple Data Encryption Standard,3DES)算法、国密SM4等。优选地为国密SM4。
进一步,如图2所示,第一明文数据包括第一明文数据的主体部分和第一明文数据的数据头(head);第三明文数据包括第三明文数据的主体部分和第三明文数据的数据头(head)。
具体地,固件文件在上位机1处,上位机1对图2中的固件数据/文件进行一些编辑设置,在设置好之后,再将固件文件导入到安全芯片2中。
具体地,上位机1通过第一加密算法使用第一密钥将第三明文数据加密运算而得到第三密文数据,以及上位机1除了将第一明文数据和第二明文数据用打包工具打包成第一数据包;上位机1还将所述第三密文数据打包成第二数据包。以及上位机1还将所述第一密钥存储在所述第一数据包的预设位置处(亦称之为第一预设位置处)。
在一实施例中,上位机1对第一数据包中的除了预设位置外的数据进行第一哈希运算,得到第一摘要值;上位机1还将所述第一摘要值存储在所述第一数据包中的预设位置处。
在一实施例中,上位机1对所述第三明文数据的数据头中的除了预设位置处(亦称之为第二预设位置处)的数据进行第二哈希运算生成,得到第三摘要值;上位机1将所述第三摘要值存储在所述第三明文数据的数据头的预设位置处。
在一实施例中,上位机1对第三明文数据的主体部分进行第三哈希运算生成,得到第五摘要值;上位机1将所述第五摘要值存储在所述第三明文数据的数据头的预设位置处。
在一实施例中,上位机1还通过第二加密算法使用第二密钥对第三明文数据的主体部分进行加密运算;上位机1将所述第二密钥存储在所述第三明文数据的数据头的预设位置处。
在一实施例中,上文中的第一、第二和第三哈希运算所属的哈希算法可选用相关技术中的任一的摘要算法或者哈希算法。优选地为国密SM3。
基于固件升级或固件烧录的应用场景,在一实施例中,本申请提出一种固件导入方法,如图3所示,包括:
S302、响应于固件导入指令,处理器24接收固件文件,其中,所述固件包括第一数据包和第二数据包;
其中,第一数据包中包括第一明文数据和第二明文数据,上位机中通过一打包工具将第一明文数据和第二明文数据打包处理而得到第一数据包。第二数据包为经过打包工具打包好的第三密文数据,上位机中通过一打包工具将第三密文数据打包处理而得到第二数据包。
其中,第三密文数据由处理器11对第三明文数据经由第一加密算法使用第一密钥加密运算而成,在完成对第三明文数据的加密处理后,将上述第一密钥存储于第一数据包中的预设位置处。具体地,所述第一数据包中的预设位置为第一明文数据的数据头(head)。也就是说上位机1将第一密钥存储于第一明文数据的数据头(head)处。S304、处理器24将第一数据包导入到目标芯片的只读存储器中;
其中,处理器24将第一数据包中的第一明文数据(BOOT程序)、第二明文数据(算法库)通过综合后(转为门级网表)固化在只读存储器21(ROM)区域中,由于只读存储器21(ROM)具备只读且无法写入,下电后不消失的特性,因此每次目标芯片2上电时BOOT程序和算法库都能成功加载。进一步,上述第一密钥随第一明文数据存储于只读存储器21(ROM)处。
S306、处理器24从第一数据包中的预设位置获取第一密钥,并利用第一密钥对第二数据包进行解密,得到第三明文数据;
其中,通过对称加密算法进行加密和解密属于本领域的习知技术,在此不再赘述。当然,上述第一加密算法也可为非对称加密算法,即第三密文数据可由第三明文数据经非对称加密运算而成。
其中,处理器24从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密,得到第三明文数据的步骤中还包括:
加解密模块25响应于处理器24的解密指令,执行用第一密钥对第二数据包进行解密得到第三明文数据的操作。具体地,处理器24将只读存储器21中算法库的第一加密算法的程序代码读取到缓冲存储器22上运行,将第一加密算法程序代码中的程序参数和上述第一密钥作为加解密模块25的输入,然后加解密模块25实现第二数据包进行解密,得到第三明文数据。
详细地,本申请实施例中的第一明文数据、第二明文数据和第三密文数据是在上位机1处用打包工具进行打包处理,形成一个数据包的方式进行固件导入操作的。下位机2或者安全芯片2在接收到固件后,固件无论是导入到只读存储器21(ROM)还是存储模块23中,其还包括一个处理器24进行第一/第二数据包的解压操作的。在完成了第一数据包的解压操作,才将第一和第二明文数据导入到只读存储器21(ROM)中。同理,在完成了第二数据包的解压操作,再对第三密文数据进行解密操作,得到第三明文数据。
进一步,在执行完步骤S306前,还包括:
处理器24通过执行导入到只读存储器21中的BOOT程序,若是能够成功加载,那么执行步骤S308;若是不能,那么需要重新执行步骤S304,直至能够成功加载。
S308、处理器24将第三明文数据写入到存储模块23中。
其中,通过对固件进行了分割设计,使得一部分固件文件(BOOT程序,算法库)存储于只读存储器21中,另一部分固件(功能固件)存储于存储模块23中,在需要执行功能固件的功能时,处理器24从存储模块23中将其读到缓冲存储器22中来执行。从而在不影响目标芯片2的功能实现的前提下,可减小对目标芯片2中ROM容量空间的要求,进而可降低目标芯片2的成本;并且对一部分的固件采取了加解密验证机制,从而能够保护固件从上位机导入到目标芯片2的过程中的安全性。
在一实施例中,还提出一种对第一数据包的完整性验证方法,其中该第一数据包的完整性验证方法包括以下步骤:
从只读存储器中第一数据包中的预设位置处获取第一摘要值,其中所述第一摘要值由上位机1对第一数据包中的除了预设位置外的数据进行第一哈希运算生成;
对导入到所述只读存储器中的第一数据包中的除了预设位置外的数据进行第一哈希运算,以生成第二摘要值;
对第一摘要值和第二摘要值的一致性进行验证;
响应于第一摘要值和第二摘要值的一致性验证通过,判定第一数据包完整性验证通过。
在本申请实施例中,对第一数据包的完整性进行验证的目的是保证第一数据包中的BOOT程序在导入到只读存储器21中的过程中没有被篡改,进而使得BOOT程序在导入到只读存储器21中后可被执行。
进一步,在另一实施例中,若是第一摘要值和第二摘要值不一致,则说明ROM(只读存储器)内的BOOT程序已不完整或已被篡改,此时会给上述固件导入方法所对应的程序一个异常返回值,使程序进入异常处理机制,在异常处理机制中陷入等待循环,使得程序停止执行,安全芯片无法正常启动,进而保证安全芯片的安全性。
进一步,在另一实施例中,还提出了对上述第三明文数据文件从上位机1导入到安全芯片2中的验证机制,其包括三部分:第三明文数据的数据完整性校验机制、第三明文数据的数据有效性校验机制和第三明文数据的导入异常处理机制。
也就是说,在将所述第三明文数据写入到安全芯片的存储模块中后,还对所述第三明文数据进行完整性验证。其中,所述第三明文数据完整性验证包括对第三明文数据的主体部分进行完整性验证和对第三明文数据的数据头进行完整性验证。
进一步,在对所述第三明文数据的数据头的完整性验证通过后,再对所述第三明文数据的主体部分进行完整性验证。
进一步,响应于所述第三明文数据的主体部分的完整验证通过,再对第三明文数据有效性进行验证。
具体地,在一实施例中,对所述第三明文数据的数据头的完整性验证包括以下步骤:
从所述第三明文数据的数据头的预设位置处获取第三摘要值,其中第三摘要值由上位机对所述第三明文数据的数据头中除了预设位置处的数据进行第二哈希运算生成;
对所述存储模块中的所述第三明文数据的数据头中除了预设位置处的数据进行第二哈希运算,以生成第四摘要值;
对第三摘要值和第四摘要值的一致性进行验证;
响应于第三摘要值和第四摘要值的一致性验证通过,判定第三明文数据的数据头完整。
进一步,在另一实施例中,所述第三明文数据的主体部分的完整性验证机制包括以下步骤:
获取第三明文数据的数据头的预设位置处所存储的第五摘要值,其中第五摘要值由上位机对第三明文数据的主体部分进行第三哈希运算生成;
对所述存储模块中的第三明文数据的主体部分进行第三哈希运算,以生成第六摘要值;
对第六摘要值和第五摘要值的一致性进行验证;
响应于第六摘要值和第五摘要值的一致性验证通过,判定第三明文数据主体部分完整。
进一步,在另一实施例中,所述第三明文数据有效性验证包括以下步骤:从所述第三明文数据的数据头的预设位置处获取第二密钥,所述第二密钥用于对第三明文数据的主体部分进行解密;验证第二密钥是否可对第三明文数据的主体部分进行解密;响应于解密成功,判定所述第三明文数据有效性地验证通过。
在一实施例中,上述第二加密算法可为非对称加密算法,优选地为国密SM2。因此,上位机1还通过第二加密算法使用第二密钥对第三明文数据的主体部分进行加密运算时,此处的第二密钥为私钥。上位机1将第二密钥(私钥)对应的公钥存储在所述第三明文数据的数据头的预设位置处,如此才可以在第二密钥对第三明文数据的主体部分进行加密运算后,用第二密钥对其解密。
本申请实施例中,对所述第三明文数据有效性进行验证是指第三明文数据在导入到存储模块23中后,安全芯片的处理器24会对整个第三明文数据进行非对称加密算法的验签,以确保第三明文数据来源有效。在第三明文数据有效性得到验证后,才能进入固件的跳转环节。
具体地,在一实施例中,上述跳转环节可被理解为固件导入这个流程已经结束。此处的跳转环节表示成功导入的固件可被启动来工作。
进一步,在另一实施例中,当固件导入过程出现验证不通过的情况时,固件导入方法所对应的程序则会进入异常处理机制,在异常处理机制中,会打印出Boot地址错误的信息,并重复固件导入过程。
进一步,在另一实施例中,响应于所述第三明文数据有效性地验证通过,则将第三明文数据的数据头写入到存储模块的第一实体单元中,并将第三明文数据的主体部分写入到存储模块的第二实体单元中;其中,第一实体单元的物理地址和第二实体单元的物理地址不同。
具体地,所述第三明文数据写入到存储模块23的过程中,还包括:
处理器24先将第三明文数据先写入到到缓冲存储器22中,然后再从缓冲存储器22中将所述第三明文数据写入到存储模块23中的实体单元中。
具体地,上文中对导入到所述只读存储器中的第一数据包中的除了预设位置外的数据进行第一哈希运算,得到的第二摘要值也是存储在缓冲存储器22中,处理器24在需要对第一摘要值和第二摘要值的一致性进行验证时,再从缓冲存储器22中读取出第二摘要值,以此来进行对第一摘要值和第二摘要值的一致性验证操作。
同理,第四摘要值和第六摘要值也是再完成第二哈希运算和第三哈希运算后存储在缓冲存储器22中的。
示例性地,上述实体单元可被理解为区块(Block)或者页(Page)。即所述第三明文数据的数据头和第三明文数据的主体部分异Block/Page存储。当所述第三明文数据所代表的功能固件文件比较大的时候,将所述第三明文数据的数据头和第三明文数据的主体部分异Block存储。当所述第三明文数据所代表的功能固件文件比较小的时候,为了节省存储模块23的空间,选择将所述第三明文数据的数据头和第三明文数据的主体部分异Page存储。
进一步,在另一实施例中,在将所述第三明文数据写入到目标芯片的存储模块的每一实体单元的过程中,对第三明文数据正在写入的所述实体单元执行读保护,使得第三明文数据在写入到所述存储模块的过程中不能够被读取。这个机制能保证第三明文数据写到存储模块23的过程中,所述第三明文数据不会被非法访问或者读出,进而可保护写入到存储模块23中的第三明文数据安全。
进一步,在另一实施例中,在将所述第三明文数据写入到安全芯片的存储模块中后,对存储有所述第三明文数据的实体单元执行写保护,使得存储有所述第三明文数据的实体单元不能够被用于存储新的数据,此举可保护存储有所述第三明文数据的实体单元的安全,进而可保护写入到存储模块23中的第三明文数据安全。
进一步,在一实施例中,第二加密算法为非对称加密算法。优选地为国密SM2算法。上述第一哈希运算、第二和第三哈希运算为国密SM3算法。
进一步,在一实施例中,上述各个固件导入方法为计算机程序,器存储于存储模块23中,处理器24调用并执行所述计算机程序时实现上述各个实施例中的固件导入方法。
综上所述,本发明提出一种固件导入方法、固件导入系统和安全芯片。其通过上述各个实施例来实现有效地保护固件从上位机1中导入安全芯片2的过程中不被外部攻击非法访问、读出、修改或者窃取。进而提高安全芯片2的产品可靠性。
以上,仅为本申请较佳的具体实施方式;但本申请的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,根据本申请的技术方案及其改进构思加以等同替换或改变,都应涵盖在本申请的保护范围内。

Claims (18)

1.一种固件导入方法,其特征在于,由安全芯片执行,所述安全芯片包括只读存储器和存储模块,所述方法包括:
响应于固件导入指令,接收包括第一数据包和第二数据包的固件;
将第一数据包导入到安全芯片的只读存储器中;
从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密,得到第三明文数据;
将所述第三明文数据写入到安全芯片的存储模块中。
2.根据权利要求1所述的固件导入方法,其特征在于,所述方法还包括:
在将第一数据包导入到安全芯片的只读存储器中后,对所述第一数据包的完整性进行验证;
响应于所述第一数据包的完整性验证通过,再从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密。
3.根据权利要求2所述的固件导入方法,其特征在于,所述第一数据包的完整性验证包括以下步骤:
从只读存储器中第一数据包中的预设位置处获取第一摘要值,其中所述第一摘要值由上位机对第一数据包中的除了预设位置外的数据进行第一哈希运算生成;
对导入到所述只读存储器中的第一数据包中的除了预设位置外的数据进行第一哈希运算,以生成第二摘要值;
对第一摘要值和第二摘要值的一致性进行验证;
响应于第一摘要值和第二摘要值的一致性验证通过,判定第一数据包完整性验证通过。
4.根据权利要求1所述的固件导入方法,其特征在于,所述第一数据包包括第一明文数据和第二明文数据,其中,所述第一明文数据包括BOOT程序文件,所述第二明文数据包括算法库文件;所述第二数据包包括第三密文数据,所述第三密文数据由第三明文数据经由第一加密算法使用第一密钥加密运算而成,其中所述第三明文数据为功能固件文件。
5.根据权利要求4所述的固件导入方法,其特征在于,所述方法还包括:
在将所述第一明文数据和第二明文数据导入到安全芯片的只读存储器中后,判断所述BOOT程序是否成功加载;
若成功加载,那么从第一数据包中的预设位置处获取第一密钥,并利用第一密钥对第二数据包进行解密,得到第三明文数据;
若成功不加载,那么继续执行第一数据包导入到安全芯片的只读存储器中的步骤,直至能够成功加载。
6.根据权利要求4所述的固件导入方法,其特征在于,所述方法还包括:在将所述第三明文数据写入到安全芯片的存储模块中后,还对所述第三明文数据进行完整性验证;
其中,所述第三明文数据完整性验证包括对第三明文数据的主体部分进行完整性验证和对第三明文数据的数据头进行完整性验证。
7.根据权利要求6所述的固件导入方法,其特征在于,所述方法还包括:
对第三明文数据的数据头进行完整性验证;
在对所述第三明文数据的数据头的完整性验证通过后,再对所述第三明文数据的主体部分进行完整性验证。
8.根据权利要求7所述的固件导入方法,其特征在于,所述方法还包括:
响应于所述第三明文数据的主体部分的完整验证通过,再对所述第三明文数据有效性进行验证。
9.根据权利要求6所述的固件导入方法,其特征在于,对所述第三明文数据的数据头的完整性验证包括以下步骤:
从所述第三明文数据的数据头的预设位置处获取第三摘要值,其中第三摘要值由上位机对所述第三明文数据的数据头中除了预设位置处的数据进行第二哈希运算生成;
对所述存储模块中的所述第三明文数据的数据头中除了预设位置处的数据进行第二哈希运算,以生成第四摘要值;
对第三摘要值和第四摘要值的一致性进行验证;
响应于第三摘要值和第四摘要值的一致性验证通过,判定第三明文数据的数据头完整。
10.根据权利要求6所述的固件导入方法,其特征在于,所述第三明文数据的主体部分的完整性验证机制包括以下步骤:
获取第三明文数据的数据头的预设位置处所存储的第五摘要值,其中第五摘要值由上位机对第三明文数据的主体部分进行第三哈希运算生成;
对所述存储模块中的第三明文数据的主体部分进行第三哈希运算,以生成第六摘要值;
对第六摘要值和第五摘要值的一致性进行验证;
响应于第六摘要值和第五摘要值的一致性验证通过,判定第三明文数据主体部分完整。
11.根据权利要求8所述的固件导入方法,其特征在于,所述第三明文数据有效性验证包括以下步骤:
从所述第三明文数据的数据头的预设位置处获取第二密钥,所述第二密钥用于对第三明文数据的主体部分进行解密;
验证第二密钥是否可对第三明文数据的主体部分进行解密;
响应于解密成功,判定所述第三明文数据有效性地验证通过。
12.根据权利要求8所述的固件导入方法,其特征在于,所述方法还包括:
响应于所述第三明文数据有效性验证通过,则将第三明文数据的数据头写入到存储模块的第一实体单元中,并将第三明文数据的主体部分写入到存储模块的第二实体单元中;
其中,第一实体单元的物理地址和第二实体单元的物理地址不同。
13.根据权利要求1所述的固件导入方法,其特征在于,所述方法还包括:
在将所述第三明文数据写入到目标芯片的存储模块的每一实体单元的过程中,对第三明文数据正在写入的所述实体单元执行读保护,使得第三明文数据在写入到所述存储模块的过程中不能够被读取。
14.根据权利要求13所述的固件导入方法,其特征在于,所述方法还包括:
在将所述第三明文数据写入到安全芯片的存储模块中后,对存储有所述第三明文数据的实体单元执行写保护,使得存储有所述第三明文数据的实体单元不能够被用于存储新的数据。
15.一种固件导入系统,其特征在于,包括上位机和安全芯片,其中:
所述上位机通过第一加密算法使用第一密钥将第三明文数据加密运算而得到第三密文数据;
所述上位机将第一明文数据和第二明文数据打包成第一数据包,以及将所述第三密文数据打包成第二数据包;
且所述上位机将所述第一密钥存储在所述第一数据包的预设位置处。
16.根据权利要求15所述的固件导入系统,其特征在于:
所述上位机对第一数据包中的除了预设位置外的数据进行第一哈希运算,得到第一摘要值;
所述上位机还将所述第一摘要值存储在所述第一数据包中的预设位置处。
17.根据权利要求15所述的固件导入系统,其特征在于:
所述上位机对所述第三明文数据的数据头中的除了预设位置处的数据进行第二哈希运算生成,得到第三摘要值;
所述上位机对第三明文数据的主体部分进行第三哈希运算生成,得到第五摘要值;
所述上位机还通过第二加密算法使用第二密钥对第三明文数据的主体部分进行加密运算;
所述上位机将所述第三摘要值、第五摘要值以及第二密钥存储在所述第三明文数据的数据头的预设位置处。
18.一种安全芯片,包括第二处理器和存储模块,所述存储模块存储有计算机程序,其特征在于,所述第二处理器调用并执行所述计算机程序时实现权利要求1至14中任一项所述的方法的步骤。
CN202211357649.XA 2022-11-01 2022-11-01 一种固件导入方法、固件导入系统及安全芯片 Pending CN115587370A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211357649.XA CN115587370A (zh) 2022-11-01 2022-11-01 一种固件导入方法、固件导入系统及安全芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211357649.XA CN115587370A (zh) 2022-11-01 2022-11-01 一种固件导入方法、固件导入系统及安全芯片

Publications (1)

Publication Number Publication Date
CN115587370A true CN115587370A (zh) 2023-01-10

Family

ID=84781828

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211357649.XA Pending CN115587370A (zh) 2022-11-01 2022-11-01 一种固件导入方法、固件导入系统及安全芯片

Country Status (1)

Country Link
CN (1) CN115587370A (zh)

Similar Documents

Publication Publication Date Title
US9135417B2 (en) Apparatus for generating secure key using device and user authentication information
US8560820B2 (en) Single security model in booting a computing device
CN102063591B (zh) 基于可信平台的平台配置寄存器参考值的更新方法
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
CN107832589B (zh) 软件版权保护方法及其系统
JP2004104539A (ja) メモリカード
JP2013545182A (ja) 機密コードおよびデータを保護するためのアーキテクチャを含む方法および装置
KR20060108710A (ko) 신뢰성 있는 이동 플랫폼 구조
CN113434853B (zh) 一种将固件烧录至存储设备的方法及控制器
US20080263542A1 (en) Software-Firmware Transfer System
CN111984962A (zh) 固件安全验证方法及装置
CN109445705B (zh) 固件认证方法及固态硬盘
JP4791250B2 (ja) マイクロコンピュータおよびそのソフトウェア改竄防止方法
TW201530344A (zh) 應用程式存取保護方法及應用程式存取保護裝置
JP2007233426A (ja) アプリケーション実行装置
CN112346759A (zh) 一种固件升级方法、装置及计算机可读存储介质
CN106529271A (zh) 一种终端及其绑定校验方法
CN115688120A (zh) 安全芯片固件导入方法、安全芯片及计算机可读存储介质
CN115587370A (zh) 一种固件导入方法、固件导入系统及安全芯片
WO2022019910A1 (en) Read protection for uefi variables
WO2021102753A1 (zh) 刷机包加密方法、装置、电子设备及计算机存储介质
WO2020088515A1 (zh) Pos用户公钥安全认证方法、装置和终端设备
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及系统
KR20230147993A (ko) Etcs와 관련된 보안 방법
KR20230130413A (ko) Etcs와 관련된 보안 방법

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