CN109445705B - 固件认证方法及固态硬盘 - Google Patents

固件认证方法及固态硬盘 Download PDF

Info

Publication number
CN109445705B
CN109445705B CN201811267268.6A CN201811267268A CN109445705B CN 109445705 B CN109445705 B CN 109445705B CN 201811267268 A CN201811267268 A CN 201811267268A CN 109445705 B CN109445705 B CN 109445705B
Authority
CN
China
Prior art keywords
firmware
signature
mass production
product
solid state
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
CN201811267268.6A
Other languages
English (en)
Other versions
CN109445705A (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.)
Hunan Goke Microelectronics Co Ltd
Original Assignee
Hunan Goke 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 Hunan Goke Microelectronics Co Ltd filed Critical Hunan Goke Microelectronics Co Ltd
Priority to CN201811267268.6A priority Critical patent/CN109445705B/zh
Publication of CN109445705A publication Critical patent/CN109445705A/zh
Application granted granted Critical
Publication of CN109445705B publication Critical patent/CN109445705B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

本发明涉及固态硬盘技术领域,提供一种固件认证方法及固态硬盘,所述方法包括:接收量产工具下发的签名量产固件并将签名量产固件暂存至第一缓存区,其中,签名量产固件包括量产固件签名及量产固件;采用预设算法对量产固件签名进行认证;当量产固件签名认证通过时,将量产固件拷贝至第二缓存区并启动量产固件以对固态硬盘进行量产。本发明通过设置第一缓存区及第二缓存区,将认证前的签名量产固件暂存第一缓存区并采用预设算法进行认证,认证通过后再将量产固件拷贝至第二缓存区进行执行,以增强量产固件的安全性,达到保护固态硬盘的量产安全的目的。

Description

固件认证方法及固态硬盘
技术领域
本发明涉及固态硬盘技术领域,具体而言,涉及一种固件认证方法及固态硬盘。
背景技术
作为数据存储的载体,固态硬盘的存储安全越来越受到固态硬盘控制器芯片解决方案开发者的重视,固态硬盘的量产固件在缓存中执行,而恶意用户往往可以通过专门的量产工具将非法固件下载至缓存区,影响固态硬盘的量产安全。
发明内容
本发明实施例的目的在于提供一种固件认证方法及固态硬盘,通过设置第一缓存区及第二缓存区,将认证前的量产固件暂存第一缓存区进行认证,认证通过后的量产固件拷贝至第二缓存区进行执行,以增强量产固件的安全性,达到保护固态硬盘的量产安全的目的。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种固件认证方法,所述固件认证方法应用于固态硬盘,固态硬盘包括存在第一缓存区及第二缓存区的内部缓存,所述固件包括签名量产固件,所述方法包括:接收量产工具下发的签名量产固件并将签名量产固件暂存至第一缓存区,其中,签名量产固件包括量产固件签名及量产固件;采用预设算法对量产固件签名进行认证;当量产固件签名认证通过时,将量产固件拷贝至第二缓存区并启动量产固件以对固态硬盘进行量产。
第二方面,本发明实施例还提供了一种固态硬盘,所述固态硬盘包括主控芯片及闪存,主控芯片与闪存电连接,主控芯片包括存在第一缓存区及第二缓存区的内部缓存,主控芯片用于接收量产工具下发的签名量产固件并将签名量产固件暂存至第一缓存区,其中,签名量产固件包括量产固件签名及量产固件;主控芯片用于采用预设算法对量产固件签名进行认证、以及当量产固件签名认证通过时,将量产固件拷贝至第二缓存区并启动量产固件以对固态硬盘进行量产。
相对现有技术,本发明实施例提供的一种固件认证方法及固态硬盘,首先,用户通过量产工具将签名量产固件下发至固态硬盘的主控芯片中的内部缓存的第一缓存区暂存,其中,签名量产固件包括量产固件签名及量产固件;然后,主控芯片采用预设算法对该签名量产固件中的量产固件签名进行认证,最后,当量产固件签名认证通过时,将量产固件拷贝至第二缓存区并启动该量产固件以对固态硬盘进行量产。与现有技术相比,本发明实施例通过设置第一缓存区及第二缓存区,将认证前的签名量产固件暂存第一缓存区并采用预设算法进行认证,认证通过后再将量产固件拷贝至第二缓存区进行执行,以增强量产固件的安全性,达到保护固态硬盘的量产安全的目的。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的固态硬盘的方框示意图。
图2示出了本发明实施例提供的固件认证方法流程图。
图3示出了本发明实施例提供的签名产品固件的认证方法流程图。
图4示出了本发明实施例提供的签名加载固件的认证方法流程图。
图5示出了本发明实例提供的签名升级固件的认证方法流程图。
图6示出了本发明实例提供的固态硬盘上电过程中固件认证方法流程图。
图标:100-固态硬盘;110-主控芯片;111-内部缓存;112-处理器;113-只读存储器;120-闪存。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1示出了本发明实施例提供的固态硬盘100的方框示意图。固态硬盘100包括主控芯片110及闪存120,主控芯片110与闪存120电连接,主控芯片110包括内部缓存111、处理器112、只读存储器113,内部缓存111、处理器112、只读存储器113相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
内部缓存111可以是随机存取存储器(Random Access Memory,RAM),是一种易失性存储器,一旦断电,其中的数据就会丢失,内部缓存111可以包括多个RAM芯片。固态硬盘100的闪存120中存储的签名产品固件及签名加载固件需要先存储至内部缓存111中,然后才能被处理器112执行。
处理器112可以是一种集成电路芯片,具有信号处理能力。上述的处理器112可以是通用处理器,包括中央处理器(Central Processing Unit,CPU);还可以是数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器112也可以是任何常规的处理器等。
只读存储器113也称为ROM(Read Only Memory)存储器,其中存储的数据一旦写入就不能更改,写入后只能读取其中的数据。
闪存120可以包括多个闪存颗粒,是一种非易失性存储器,在断电的情况下依旧可以保存已经写入的数据。
第一实施例
请参照图2,图2示出了本发明实施例提供的固件认证方法流程图。处理方法包括以下步骤:
步骤S101,接收量产工具下发的签名量产固件并将签名量产固件暂存至第一缓存区,其中,签名量产固件包括量产固件签名及量产固件。
在本发明实施例中,量产工具是运行在主机上的一个工具软件,主机与固态硬盘100通信连接,通过在主机上运行量产工具,可以将签名量产固件下发至固态硬盘100中的内部缓存111中暂存。在本发明实施例中,量产固件是用于对固态硬盘100进行量产的软件,由于未经过量产的固态硬盘100中只有只读存储器113中存储的ROM固件,此时的固态硬盘100也称为ROM盘,ROM盘需要通过执行量产固件按照一定生产配置将固态硬盘100进行盘片格式化并将加载固件和产品固件保存至固态硬盘100的闪存120后,才可成为进行数据存储的固态硬盘。为了防止恶意用户将量产固件进行恶意篡改,本发明实施例将量产固件预先采用预设算法进行加密后生成量产固件签名,其中,预设算法可以、但不限于是国密SM2、SM3、SM4算法,例如,预设算法也可以是RSA等加密算法,然后将量产固件签名和量产固件打包成签名量产固件,只有量产固件签名认证通过时,才运行量产固件,以此防止被恶意篡改的量产固件对固态硬盘100进行量产,另一方面,为了防止恶意用户将恶意篡改的量产固件或者恶意数据直接写入量产固件的运行区,影响量产固件的正常执行,本发明实施例在内部缓存111中设置第一缓存区和第二缓存区,其中,第一缓存区是外部数据进入固态硬盘100的入口,用于接收量产工具下发的签名量产固件,并对签名量产固件进行认证,第二缓存区是运行量产固件的区域,只有当量产固件签名认证通过时,签名量产固件中的量产固件才能从第一缓存区拷贝至第二缓存区中进行运行,即第一缓存区与量产工具进行数据读写交互,量产工具可以下发的外部数据至第一缓存区并在第一缓存区中进行认证,也可以读取第一缓存区中暂存的数据,在第一缓存区中认证通过后的安全的数据才能进入第二缓存区中运行,第二缓存区可以将其中的数据存储至内部缓存111和闪存120中,也可以读取内部缓存111和闪存120中存储的数据,但是,第二缓存区不与量产工具进行读写交互,量产工具不能将外部数据直接下发至第二缓存区,也不能直接读取第二缓存区中暂存的数据,以此保证运行的量产固件是安全的,从而保证固态硬盘100的安全量产。
需要说明的是,第一缓存区和第二缓存区均即可以是内部缓存111中独立的RAM芯片,也可以是内部缓存111中一个RAM芯片中不互相重叠的地址空间。
步骤S102,采用预设算法对量产固件签名进行认证。
在本发明实施例中,量产固件签名的生成过程可以是:首先,按照预设规则生成量产固件的数字摘要,其次,采用预设算法生成公钥和私钥,其中,私钥用于加密量产固件的数字摘要,公钥预先写入固态硬盘100的主控芯片110中的OTP(One Time Program,一次编程)区,最后,使用该私钥对该数字摘要进行加密后得到量产固件签名。上电后的ROM盘上运行有ROM固件,采用预设算法对量产固件签名进行认证是通过ROM固件实现的,认证过程可以是:首先,读取OTP区中的公钥,使用该公钥对签名量产固件中的量产固件签名进行解密得到解密后的数字摘要,然后,根据预设规则生成签名量产固件中的量产固件的数字摘要,将生成的摘要与解密后的数字摘要进行对比,如果两者一致,则量产固件签名认证通过,即签名量产固件中的量产固件是可信的,否则,量产固件签名认证未通过,即签名量产固件中的量产固件可能被篡改过或者被破坏,是不可信、不安全的。
步骤S103,当量产固件签名认证通过时,将量产固件拷贝至第二缓存区并启动量产固件以对固态硬盘进行量产。
在本发明实施例中,当签名量产固件中量产固件签名认证通过时,可以认为该签名量产固件中的量产固件是可信的,此时,可以将可信的量产固件拷贝至第二缓存区中运行,以对固态硬盘100进行量产,对固态硬盘100量产包括、但不限于对固态硬盘100进行生产配置、闪存坏块扫描及格式化等。
步骤S104,当量产固件签名认证未通过时,丢弃量产固件并终止量产。
在本发明实施例中,当签名量产固件中量产固件签名认证未通过时,可以认为该签名量产固件中的量产固件是不可信的,此时,为了避免固态硬盘100进行不安全量产,需要丢弃该不可信的量产固件并立即终止当前的量产流程。
在本发明实施例中,和量产固件一样,产品固件及加载固件同样存在被恶意篡改的风险,因此,产品固件及加载固件也预先经过预设算法生成对应的产品固件签名及加载固件签名,将产品固件及产品固件签名打包成签名产品固件,将加载固件及加载固件签名打包成签名加载固件,在通过量产工具将签名产品固件及签名加载固件下发至第一缓存区暂存后,同样需要采用预设算法先对签名产品固件及签名加载固件进行认证,然后再将其存储至固态硬盘100的闪存120中,由于对固态硬盘100量产包括不同的量产操作,对于签名产品固件及签名加载固件进行认证的步骤可以在对固态硬盘100进行生产配置、闪存坏块扫描及格式化等量产操作之后进行。因此,本发明实施例还包括步骤S201-S206,其中,步骤S201-步骤S203是通过可信的量产固件对签名量产固件进行认证的流程,步骤S204-步骤S206是通过可信的量产固件对加载固件进行认证的流程。图3示出了本发明实施例提供的签名产品固件的认证方法流程图,图4示出了本发明实施例提供的签名加载固件的认证方法流程图。
请参照图3,签名产品固件的认证方法包括如下步骤:
步骤S201,通过量产固件接收量产工具下发的签名产品固件、并将签名产品固件暂存至第一缓存区,其中,签名产品固件包括产品固件签名及产品固件。
在本发明实施例中,产品固件签名是预先采用预设算法对产品固件的摘要进行加密得到的,签名产品固件是将产品固件签名及产品固件打包后得到的。
步骤S202,通过量产固件采用预设算法对产品固件签名进行认证。
在本发明实施例中,对签名产品固件进行认证即对签名产品固件中的产品固件签名进行认证,认证过程与量产固件的认证过程类似,此处不再赘述。
步骤S203,当产品固件签名认证通过时,将签名产品固件存储至闪存中。
在本发明实施例中,当签名产品固件中产品固件签名认证通过时,可以认为签名产品固件中的产品固件是可信的,签名产品固件也是可信的,将可信的签名产品固件存储至闪存120中,之所以将可信的签名产品固件存储至闪存120中,为了使固态硬盘100在上电加载产品固件时,再次对签名产品固件进行认证,避免签名产品固件中的产品固件被破坏导致固态硬盘100不可用。
请参照图4,签名加载固件的认证方法包括如下步骤:
步骤S204,通过量产固件接收量产工具下发的签名加载固件、并将签名加载固件暂存至第一缓存区,其中,加载固件包括加载固件签名。
在本发明实施例中,加载固件签名是预先采用预设算法对加载固件的摘要进行加密得到的,签名加载固件是将加载固件签名及加载固件打包后得到的。
步骤S205,通过量产固件采用预设算法对加载固件签名进行认证。
在本发明实施例中,对签名加载固件进行认证即对签名加载固件中的加载固件签名进行认证,认证过程与量产固件的认证过程类似,此处不再赘述。
步骤S206,当加载固件签名认证通过时,将签名加载固件存储至闪存中。
在本发明实施例中,当签名加载固件中的加载固件签名认证通过时,可以认为签名加载固件中的加载固件是可信的,且该签名加载固件也是可信的,将可信的签名加载固件存储至闪存120中,之所以将可信的签名加载固件存储至闪存120中,为了使固态硬盘100在上电时对加载固件加载时,再次对签名加载固件进行认证,避免签名加载固件中的加载固件被破坏导致固态硬盘100不可用。
需要指出的是,由于固态硬盘100的内部缓存111空间受限,因此,对签名产品固件的认证及签名加载固件的认证可以分步进行,但是二者的认证顺序不受限制,可以先对签名产品固件进行认证,再对签名加载固件进行认证,也可以先对签名加载固件进行认证,再对签名产品固件进行认证,即步骤S103之后可以先执行步骤S201-步骤S203,然后再执行步骤S204-步骤S206,也可以先执行步骤S204-步骤S206,再执行步骤S201-步骤S203,但是S201-步骤S203或者步骤S204-步骤S206中任意一个认证失败时都会终止当前的量产流程。
在本发明实施例中,完成对签名产品固件及签名加载固件进行认证及将其保存至固态硬盘100的闪存120中之后,整个量产流程的主要步骤已经完成,量产后的固态硬盘100在正常上电后,可信的产品固件正常运行,保证固态硬盘100可以快速地响应来自主机的数据读写命令,管理固态硬盘100的数据读写、垃圾回收、均衡处理等,达到合理利用闪存120的空间的同时,又能保证闪存120中存储的数据的安全可靠,延长固态硬盘100寿命的目的。但是,当固态硬盘100中的产品固件存在缺陷、或者需要优化、或者需要更新功能时,需要对当前固态硬盘100中的产品固件进行升级,因此本发明实施例还包括步骤S301-步骤S305。
请参照图5,图5示出了本发明实例提供的签名升级固件的认证方法流程图,签名升级固件的认证方法包括以下步骤:
步骤S301,通过运行的当前产品固件接收升级工具下发的签名升级固件并将签名升级固件暂存至内部缓存,其中,签名升级固件包括升级固件签名。
在本发明实施例中,升级工具是运行在主机上的一个工具软件,通过在主机上运行升级工具,可以将签名升级固件下发至固态硬盘100中的内部缓存111中暂存。升级固件签名是预先采用预设算法对升级固件的摘要进行加密得到,升级固件实际上是产品固件,只不过是修复了原有产品固件中的缺陷、或者优化了原有产品固件的性能、或者在原有产品固件的基础上增加了新功能的产品固件,签名升级固件是将升级固件签名及升级固件打包后得到的。对固态硬盘100的产品固件进行升级,实际上是将闪存120中存储的产品固件用签名升级固件替换,使得固态硬盘100重新上电后可以运行签名升级固件中的升级固件,从而获得该升级固件中的最新功能。
步骤S302,通过运行的当前产品固件采用预设算法对升级固件签名进行第一次认证。
在本发明实施例中,由于是对量产后的固态硬盘100进行升级,量产后的固态硬盘100在上电后运行有当前产品固件,因此,可以通过当前产品固件对签名升级固件中的升级固件签名进行认证,为了避免恶意用户在固态硬盘100的升级过程中对运行中的当前产品固件进行恶意破坏,影响当前产品固件对升级固件签名的认证,因此,本发明实施例采取对升级固件进行两次认证的方法,第一次认证及第二次认证的认证方法与前文所述的量产固件签名的认证方法类似,此处不再赘述。
步骤S303,经过随机时间间隔后采用预设算法对升级固件签名进行第二次认证。
在本发明实施例中,如果两次认证的时间间隔固定,恶意用户很容易发现两次认证的时间规律,从而针对性地避开认证,达到破坏目的,本发明实施例为了避免此种情况的发生,在第一次认证后,经过随机时间间隔后再对升级固件签名进行第二次认证,同时,第二次认证还可以实现升级过程中防呆、防止错误插入攻击等效果,由此,加强了签名升级固件的安全性。
步骤S304,当两次认证均通过时,将签名升级固件存储至闪存中,以替换闪存中存储的当前产品固件。
在本发明实施例中,当两次认证均通过时,可以认为签名升级固件中的升级固件是可信的,签名升级固件也是可信的,将可信的签名升级固件存储至闪存120中,固态硬盘100在重新上电加载产品固件时,就可以找到闪存120中的替换了原有产品固件的签名升级固件,再次对签名升级固件进行认证,避免签名升级固件中的升级固件被破坏导致固态硬盘100不可用。
需要说明的是,签名量产固件、签名产品固件及签名加载固件除了可以采用预设算法进行一次认证,也可以采用预设算法进行与签名升级固件类似的二次认证,当然,实际实现时,为了提高安全性,升级固件、签名量产固件、签名产品固件及签名加载固件均可以采用预设算法进行多次认证。
步骤S305,当两次认证中任意一次认证未通过时,丢弃签名升级固件并返回升级失败。
在本发明实施例中,当两次认证中任意一次认证未通过时,可以认为该签名升级固件中的升级固件是不可信的,此时,为了避免固态硬盘100进行不安全的升级,需要丢弃签名升级固件,终止当前升级流程,返回升级失败。
在本发明实施例中,无论是量产流程中将签名产品固件保存至固态硬盘100中,还是升级流程中将签名升级固件保存至固态硬盘100中,都需要对固态硬盘100重新上电,才能使签名产品固件中的产品固件或者签名升级固件中的升级固件运行起来,实现对固态硬盘100的管理。因此,本发明实施例还包括步骤S401-步骤S402。
在本发明实施例中,量产流程中只是将签名加载固件存储至闪存120中,实际运行签名加载固件中的加载固件时需要先将加载固件拷贝至内部缓存111中才能运行,因此,内部缓存111中包括第一运行区和第二运行区,第一运行区是用于运行闪存120中的签名加载固件中的加载固件的,第二运行区是用于运行只读存储器113中的ROM固件及闪存120中的签名产品固件中的产品固件的。固态硬盘100重新上电时,首先,将只读存储器113中的ROM固件拷贝至第二运行区中运行,通过运行ROM固件可以找到闪存120中的签名加载固件,将认证通过后的签名加载固件中的可信的加载固件拷贝至第一运行区中运行,通过运行可信的加载固件找到闪存120中的签名产品固件,将认证通过后的签名产品固件中的产品固件拷贝至第二运行区中运行,最终完成固态硬盘100的固件加载流程。
请参照图6,图6示出了本发明实例提供的固态硬盘100上电过程中固件认证方法流程图,固态硬盘100上电过程中固件认证方法包括如下步骤:
步骤S401,当固态硬盘重新上电时,采用预设算法对签名加载固件进行认证并将认证通过后的签名加载固件中的加载固件拷贝至第一运行区中运行。
在本发明实施例中,对签名加载固件进行认证是通过对签名加载固件中的加载固件签名进行认证实现的。在本发明实施例中,内部缓存111可以包括多个RAM芯片,第一运行区可以是内部缓存111中一片独立的RAM芯片,也可以是内部缓存111中RAM芯片中的一段指定存储空间,当然为了保证加载固件的运行速度,通常将其放入独立的RAM芯片中。作为一种实施方式,对签名加载固件进行认证并将认证通过后的签名加载固件中的加载固件拷贝至第一运行区的方式可以是:
首先,将存储于闪存中的签名加载固件暂存至内部缓存。
在本发明实施例中,运行的ROM固件将存储于闪存120中的签名加载固件拷贝至内部缓存111暂存,在内部缓存111中对签名加载固件的加载固件签名进行认证。
其次,采用预设算法对内部缓存暂存的签名加载固件中的加载固件签名进行认证。
在本发明实施例中,固态硬盘100在上电流程中对加载固件签名进行认证的认证方法与在量产流程中对加载固件签名进行认证的认证方法类似,此处不再赘述。
最后,当加载固件签名认证通过时,将加载固件拷贝至第一运行区。
在本发明实施例中,当签名加载固件中的加载固件签名认证通过时,可以认为该签名加载固件中的加载固件是可信的,然后再将签名加载固件中可信的加载固件拷贝至第一运行区。
步骤S402,通过加载固件采用预设算法对签名产品固件进行认证、并将认证通过后的签名产品固件中的产品固件拷贝至第二运行区中运行。
在本发明实施例中,第二运行区可以是内部缓存111中一片独立的RAM芯片,也可以是内部缓存111中RAM芯片中的一段指定存储空间,当然为了保证其中产品固件或者ROM固件的运行速度,通常将其放入独立的RAM芯片中。第二运行区中运行ROM固件在找到加载固件并将加载固件运行起来后,第二运行区中的ROM固件已经完成了其使命,此时,第二运行区可以用来运行签名产品固件中的产品固件。
在本发明实施例中,步骤S402的处理过程与步骤S401中描述的类似,此处只简要描述一种实施方式中的主要相关步骤,不再对每一个步骤详细赘述。
作为一种实施方式,对签名产品固件进行认证、并将认证通过后的签名产品固件中的产品固件拷贝至第二运行区的方法可以是:
首先,将存储于闪存中的签名产品固件暂存至内部缓存。
其次,采用预设算法对内部缓存暂存的签名产品固件中的产品固件签名进行认证。
最后,当产品固件签名认证通过时,将产品固件拷贝至第二运行区。
需要说明的是,固态硬盘100在升级时,将可信的签名升级固件(即签名升级固件中的升级固件签名认证通过的签名升级固件)保存至闪存120中,实际上是用可信的签名升级固件替换了闪存120中的签名产品固件,因此,当升级后的固态硬盘100重新上电后,实际上是对替换后的签名升级固件中的升级固件签名进行认证,认证通过后,将该签名升级固件的升级固件拷贝至第二运行区。
还需要指出的是,由于产品固件通常比较大,因此,运行产品固件的第二运行区也相应比较大,因此,第二运行区还可以是外挂在主控芯片110上的动态随机存取存储器(Dynamic Random Access Memory,DRAM)或者双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random Access Memory,DDR SDRAM)等RAM存储器。
需要说明的是,在本发明实施例中涉及到的预设算法均可以、但不限于是SM2、SM3、SM4等国密算法,也可以是RSA等加密算法,当预设算法为SM2国密算法时,由于SM2算法是一种基于椭圆曲线的非对称密码算法,使用私钥加密后的密文只能用对应公钥进行解密,反之使用公钥加密的密文也只能用对应的私钥进行解密,通过对私钥进行椭圆曲线运算可以生成公钥,而由于椭圆曲线的特点,知道公钥却很难去反推出私钥,因此,本发明实施例采用SM2算法对固态硬盘100的固件进行认证,可以进一步提高固态硬盘100的固件的安全性。关于固件签名验签的公私密钥对管理,私钥用于固件签名生成,由受信的固件厂商保存。公钥则写入固态硬盘100的控制器芯片的一次性可编程(One-Time Programmable,OTP)区,在量产或升级时,通过芯片ROM固件或产品固件读出,用来对导入的固件数据进行验签,确认导入固件是否来自于受信固件厂商。在本发明实施例中,国密算法包括主算法及附加算法,其中,主算法可以是国密算法中的算法框架及主要功能的部分,附加算法可以是国密算法中涉及到的各种运算的部分,例如加减法、乘法等,在具体实现时,主算法可以通过编程方式采用软件实现,而附加算法可以通过控制逻辑硬件实现,以保证执行效率。
在本发明实施例中,通过设置第一缓存区及第二缓存区,将认证前的量产固件暂存第一缓存区进行认证,认证通过后的量产固件拷贝至第二缓存区进行执行,以增强量产固件的安全性,达到保护固态硬盘100的量产安全的目的,在量产固件运行后,通过量产固件采用预设算法依次对签名产品固件中的产品固件签名及签名加载固件中的加载固件签名进行认证,另外,在对产品固件进行升级时,采用预设算法将签名升级固件进行两次认证,与现有技术相比,具有以下有益效果:
第一,将内部缓存111分为第一缓存区及第二缓存区,第一缓存区暂存认证前的量产固件,第二缓存区运行认证后的量产固件,保证了运行的量产固件的可信性和安全性,从而使得量产固件对签名产品固件及签名加载固件的认证也比较可靠。
第二,对签名升级固件进行两次认证,并且第二次认证和第一次认证之间的时间间隔采用随机值确定,避免了恶意用户在固态硬盘100升级过程中对产品固件进行攻击或破坏,导致固态硬盘100无法正常使用。
第三,量产过程中,所有外部数据均不允许对运行量产固件的第二缓存区进行访问,避免恶意用户在固态硬盘100量产阶段对运行量产固件的攻击或破坏,进一步保证了量产固件的安全性。
综上所述,本发明提供的一种固件认证方法及固态硬盘,所述固件认证方法应用于固态硬盘,固态硬盘包括存在第一缓存区及第二缓存区的内部缓存,所述固件包括签名量产固件,所述方法包括:接收量产工具下发的签名量产固件并将签名量产固件暂存至第一缓存区,其中,签名量产固件包括量产固件签名及量产固件;采用预设算法对量产固件签名进行认证;当量产固件签名认证通过时,将量产固件拷贝至第二缓存区并启动量产固件以对固态硬盘进行量产。与现有技术相比,本发明通过设置第一缓存区及第二缓存区,将认证前的量产固件暂存第一缓存区进行认证,认证通过后的量产固件拷贝至第二缓存区进行执行,以增强量产固件的安全性,达到保护固态硬盘的量产安全的目的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

Claims (12)

1.一种固件认证方法,其特征在于,应用于固态硬盘,所述固态硬盘包括存在第一缓存区及第二缓存区的内部缓存,所述固件包括签名量产固件,所述方法包括:
接收量产工具下发的签名量产固件并将所述签名量产固件暂存至所述第一缓存区,其中,所述签名量产固件包括量产固件签名及量产固件;
采用预设算法对所述量产固件签名进行认证;
当所述量产固件签名认证通过时,将所述量产固件拷贝至所述第二缓存区并启动所述量产固件以对所述固态硬盘进行量产,所述第二缓存区不与所述量产工具进行数据读写交互。
2.如权利要求1所述的固件认证方法,其特征在于,所述固件还包括签名产品固件,所述固态硬盘还包括闪存,所述方法还包括:
通过所述量产固件接收所述量产工具下发的签名产品固件、并将所述签名产品固件暂存至所述第一缓存区,其中,所述签名产品固件包括产品固件签名;
通过所述量产固件采用预设算法对所述产品固件签名进行认证;
当所述产品固件签名认证通过时,将所述签名产品固件存储至所述闪存中。
3.如权利要求1所述的固件认证方法,其特征在于,所述固件还包括签名加载固件,所述固态硬盘还包括闪存,所述方法还包括:
通过所述量产固件接收所述量产工具下发的签名加载固件、并将所述签名加载固件暂存至所述第一缓存区,其中,所述加载固件包括加载固件签名;
通过所述量产固件采用预设算法对所述加载固件签名进行认证;
当所述加载固件签名认证通过时,将所述签名加载固件存储至所述闪存中。
4.如权利要求1所述的固件认证方法,其特征在于,所述固件还包括签名升级固件,所述固态硬盘还包括存储有当前产品固件的闪存,所述固态硬盘上运行有当前产品固件,所述方法还包括:
通过运行的所述当前产品固件接收升级工具下发的签名升级固件并将所述签名升级固件暂存至所述内部缓存,其中,所述签名升级固件包括升级固件签名;
通过运行的所述当前产品固件采用预设算法对所述升级固件签名进行第一次认证;
经过随机时间间隔后采用预设算法对所述升级固件签名进行第二次认证;
当两次认证均通过时,将所述签名升级固件存储至所述闪存中,以替换所述闪存中存储的所述当前产品固件。
5.如权利要求4所述的固件认证方法,其特征在于,所述方法还包括:
当所述两次认证中任意一次认证未通过时,丢弃所述签名升级固件并返回升级失败。
6.如权利要求1所述的固件认证方法,其特征在于,所述方法还包括:
当所述量产固件签名认证未通过时,丢弃所述签名量产固件并终止量产。
7.如权利要求1所述的固件认证方法,其特征在于,所述第一缓存区用于与所述量产工具进行数据读写交互。
8.如权利要求1所述的固件认证方法,其特征在于,所述固态硬盘存储签名加载固件及签名产品固件,所述签名加载固件包括加载固件及加载固件签名,所述签名产品固件包括产品固件及产品固件签名,所述固态硬盘包括第一运行区及第二运行区,所述方法还包括:
当所述固态硬盘重新上电时,采用预设算法对所述签名加载固件进行认证并将认证通过后的所述签名加载固件中的加载固件拷贝至所述第一运行区中运行;
通过加载固件采用预设算法对所述签名产品固件进行认证、并将认证通过后的所述签名产品固件中的产品固件拷贝至所述第二运行区中运行。
9.如权利要求8所述的固件认证方法,其特征在于,所述固态硬盘包括闪存,所述签名加载固件包括加载固件签名,所述采用预设算法对所述签名加载固件进行认证并将认证通过后的所述签名加载固件中加载固件拷贝至所述第一运行区中的步骤包括:
将存储于所述闪存中的所述签名加载固件暂存至所述内部缓存;
采用预设算法对所述内部缓存暂存的签名加载固件中的加载固件签名进行认证;
当所述加载固件签名认证通过时,将所述加载固件拷贝至第一运行区。
10.如权利要求8所述的固件认证方法,其特征在于,所述固态硬盘包括闪存,所述签名产品固件包括产品固件及产品固件签名,所述通过加载固件采用预设算法对所述签名产品固件进行认证并将认证通过后的所述签名产品固件中的产品固件拷贝至所述第二运行区中的步骤包括:
将存储于所述闪存中的所述签名产品固件暂存至所述内部缓存;
采用预设算法对所述内部缓存暂存的所述签名产品固件中的产品固件签名进行认证;
当所述产品固件签名认证通过时,将所述产品固件拷贝至第二运行区。
11.如权利要求1-10任一项所述的固件认证方法,其特征在于,所述预设算法为国密算法,其中,所述国密算法包括主算法及附加算法,所述主算法通过软件实现,所述附加算法通过控制逻辑硬件实现。
12.一种固态硬盘,其特征在于,所述固态硬盘包括主控芯片及闪存,所述主控芯片与闪存电连接,所述主控芯片包括存在第一缓存区及第二缓存区的内部缓存,其中:
所述主控芯片用于接收量产工具下发的签名量产固件并将所述签名量产固件暂存至所述第一缓存区,其中,所述签名量产固件包括量产固件签名及量产固件;
所述主控芯片用于采用预设算法对所述量产固件签名进行认证、以及当所述量产固件签名认证通过时,将所述量产固件拷贝至所述第二缓存区并启动所述量产固件以对所述固态硬盘进行量产,所述第二缓存区不与所述量产工具进行数据读写交互。
CN201811267268.6A 2018-10-29 2018-10-29 固件认证方法及固态硬盘 Active CN109445705B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811267268.6A CN109445705B (zh) 2018-10-29 2018-10-29 固件认证方法及固态硬盘

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811267268.6A CN109445705B (zh) 2018-10-29 2018-10-29 固件认证方法及固态硬盘

Publications (2)

Publication Number Publication Date
CN109445705A CN109445705A (zh) 2019-03-08
CN109445705B true CN109445705B (zh) 2022-03-22

Family

ID=65549100

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811267268.6A Active CN109445705B (zh) 2018-10-29 2018-10-29 固件认证方法及固态硬盘

Country Status (1)

Country Link
CN (1) CN109445705B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI756631B (zh) * 2020-02-12 2022-03-01 瑞昱半導體股份有限公司 具有韌體驗證機制的電腦系統及其韌體驗證方法
CN113568560A (zh) * 2020-04-29 2021-10-29 瑞昱半导体股份有限公司 存取一次性可编程记忆体的方法及相关的电路
CN112084472B (zh) * 2020-08-13 2022-05-03 杭州电子科技大学 一种多用户安全存储的实时动态认证方法
CN112165396A (zh) * 2020-09-14 2021-01-01 北京中电华大电子设计有限责任公司 一种安全固件更新的方法
CN112582014A (zh) * 2020-12-24 2021-03-30 江苏国科微电子有限公司 一种固态硬盘批量生产方法、装置、设备及介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103326863A (zh) * 2013-06-24 2013-09-25 飞天诚信科技股份有限公司 一种电子签名工具的签名方法
CN104468497A (zh) * 2014-08-19 2015-03-25 北京绿叶丰谷科技发展有限公司 监控系统的数据隔离方法及装置
CN107634859A (zh) * 2017-09-30 2018-01-26 飞天诚信科技股份有限公司 一种固件升级方法及装置
CN107665097A (zh) * 2017-08-22 2018-02-06 深圳市硅格半导体股份有限公司 一种固态硬盘分区的方法、装置及计算机可读存储介质
CN107688536A (zh) * 2017-08-23 2018-02-13 上海与德科技有限公司 一种获取终端系统日志的方法及装置
CN107688497A (zh) * 2017-07-25 2018-02-13 努比亚技术有限公司 一种内存调控方法、设备及计算机可读存储介质
CN108121915A (zh) * 2016-11-30 2018-06-05 北京忆芯科技有限公司 电子设备生产的方法、启动的方法及系统
CN108153540A (zh) * 2018-01-15 2018-06-12 北京小米移动软件有限公司 系统升级的方法、装置、终端及存储介质
CN108153536A (zh) * 2017-12-20 2018-06-12 北京华航无线电测量研究所 一种动态调整ram空间的dsp在线升级方法
CN108347332A (zh) * 2017-06-06 2018-07-31 清华大学 验证固件签名的方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150099269A (ko) * 2014-02-21 2015-08-31 삼성전자주식회사 펌웨어를 갱신하기 위한 전자 장치 및 방법
CN106462707B (zh) * 2014-04-28 2019-06-14 英特尔公司 安全引导计算设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103326863A (zh) * 2013-06-24 2013-09-25 飞天诚信科技股份有限公司 一种电子签名工具的签名方法
CN104468497A (zh) * 2014-08-19 2015-03-25 北京绿叶丰谷科技发展有限公司 监控系统的数据隔离方法及装置
CN108121915A (zh) * 2016-11-30 2018-06-05 北京忆芯科技有限公司 电子设备生产的方法、启动的方法及系统
CN108347332A (zh) * 2017-06-06 2018-07-31 清华大学 验证固件签名的方法及装置
CN107688497A (zh) * 2017-07-25 2018-02-13 努比亚技术有限公司 一种内存调控方法、设备及计算机可读存储介质
CN107665097A (zh) * 2017-08-22 2018-02-06 深圳市硅格半导体股份有限公司 一种固态硬盘分区的方法、装置及计算机可读存储介质
CN107688536A (zh) * 2017-08-23 2018-02-13 上海与德科技有限公司 一种获取终端系统日志的方法及装置
CN107634859A (zh) * 2017-09-30 2018-01-26 飞天诚信科技股份有限公司 一种固件升级方法及装置
CN108153536A (zh) * 2017-12-20 2018-06-12 北京华航无线电测量研究所 一种动态调整ram空间的dsp在线升级方法
CN108153540A (zh) * 2018-01-15 2018-06-12 北京小米移动软件有限公司 系统升级的方法、装置、终端及存储介质

Also Published As

Publication number Publication date
CN109445705A (zh) 2019-03-08

Similar Documents

Publication Publication Date Title
CN109445705B (zh) 固件认证方法及固态硬盘
KR101393307B1 (ko) 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
US8250373B2 (en) Authenticating and verifying an authenticable and verifiable module
FI114416B (fi) Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
WO2020192406A1 (zh) 数据存储、验证方法及装置
KR100746012B1 (ko) 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치
US9563774B1 (en) Apparatus and method for securely logging boot-tampering actions
US20120066515A1 (en) Electronic device, key generation program, recording medium, and key generation method
US20150095652A1 (en) Encryption and decryption processing method, apparatus, and device
US11803366B2 (en) Firmware updating system and method
TW201500960A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術
US20210367781A1 (en) Method and system for accelerating verification procedure for image file
JP2022527163A (ja) 暗号ハッシュを用いたメモリに格納されたデータの正当性確認
CN109814934B (zh) 数据处理方法、装置、可读介质和系统
US20140173294A1 (en) Techniques for emulating an eeprom device
US20200233676A1 (en) Bios management device, bios management system, bios management method, and bios management program-stored recording medium
US20230273977A1 (en) Managing ownership of an electronic device
CN113094720A (zh) 安全地管理密钥的设备和方法
JP2022527904A (ja) 無線更新の有効性確認
CN114995918A (zh) 基板管理控制器的启动方法、配置方法、装置及电子设备
JP2024507531A (ja) デジタルデバイスのためのトラステッドコンピューティング
US20150113243A1 (en) Method for backing up data outside a secure microcircuit
CN115599407B (zh) 固件烧录方法、固件烧录系统及存储器存储装置
CN116431189B (zh) 基于pcie链路的板卡升级方法、装置、设备及存储介质
US20220342996A1 (en) Information processing apparatus, method of controlling the same, and storage medium

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