CN113434853B - 一种将固件烧录至存储设备的方法及控制器 - Google Patents
一种将固件烧录至存储设备的方法及控制器 Download PDFInfo
- Publication number
- CN113434853B CN113434853B CN202110744692.0A CN202110744692A CN113434853B CN 113434853 B CN113434853 B CN 113434853B CN 202110744692 A CN202110744692 A CN 202110744692A CN 113434853 B CN113434853 B CN 113434853B
- Authority
- CN
- China
- Prior art keywords
- firmware
- random number
- storage device
- signature
- otp
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本申请涉及一种将固件烧录至存储设备的方法及控制器,其中该方法包括加载并运行所述启动程序,获取待烧录的固件;访问已被写入第一数的第一OTP器件,得到所述第一数;通过所述第一数对所述启动程序中的公钥进行验证;若验证成功,根据所述公钥对待烧录的固件进行验签;若验签成功,计算所述固件的摘要;生成第一随机数,并将第一随机数写入第二OTP器件,根据第一随机数对所述摘要和所述固件进行加密以得到密文;将所述密文存储到所述NVM中。本申请的方案解决了存储设备量产过程中的安全性问题。
Description
技术领域
本申请一般地涉及信息安全领域。更具体地,本申请涉及一种将固件烧录至存储设备的方法及控制器。
背景技术
固件(Firmware)是存储设备中最核心的软件程序之一。通过固件可以控制存储设备的运行以及工作。因此,固件决定着硬件设备的功能及性能。固件一般存储在设备中的可擦写可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)或FLASH芯片中,并可以通过特定的刷新程序进行升级操作。将设计好的固件烧录至芯片的存储器中,即将工程编写好的程序执行文件烧录到芯片中,可以使芯片按照设计的功能执行操作。
目前的商业模式之下,固件由开发者(固件开发方)开发,然后交付给存储设备生产方(代工厂),由存储设备生产方将固件烧录到大批量的芯片中,芯片与其他组件形成相应的电子产品,具备相应的功能,从而实现了芯片的量产。例如SSD(Solid State Disk或Solid State Drive,固态存储器)的生产过程便如上所述,固件开发者将固件交由代工厂,代工厂使用芯片烧录器将固件烧录到SSD控制芯片中,最终将SSD控制芯片与NVM芯片等组成的SSD投放市场。在SSD量产过程中,一方面,固件开发方需将固件提供给存储设备生产方,以便其能根据该固件生产出固件开发方所需的存储设备,故固件信息可能会泄露;另一方面,代工厂有可能会使用固件开发者所提供的固件非法生产存储设备。也就是说,固件开发者将固件交付给另一方后,另一方有可能实施侵害固件开发者权益的行为,不仅降低了存储设备生产过程中固件的安全性,还导致固件开发者的权益受损,不仅损害了开发者经济利益,更长远地看,也会破坏创新环境。
基于此,为了提高存储设备生产过程中固件的安全性、保护开发者权益,希望采用相应的技术手段,避免未授权方自行将固件进行提取、篡改、复制到其他设备等行为。
发明内容
为了至少解决上述技术问题,本申请的方案提供了一种将固件烧录至存储设备的方法及控制器。
根据本申请的第一方面,提供了根据本申请第一方面的将固件烧录至存储设备的第一方法,所述存储设备包括控制器与NVM,其中所述控制部件包括第一OTP器件与第二OTP器件;对多个存储设备的每个执行所述方法中,使用相同的启动程序,以及获取相同的固件;所述启动程序中包括用于验证所述固件的公钥;所述方法包括:加载并运行所述启动程序,获取待烧录的固件;访问已被写入第一数的所述第一OTP器件,得到所述第一数;通过所述第一数对所述启动程序中的公钥进行验证;若验证成功,根据所述公钥对待烧录的固件进行验签;若验签成功,计算所述固件的摘要;生成第一随机数,并将第一随机数写入所述第二OTP器件,根据所述第一随机数对所述摘要和所述固件进行加密以得到密文;以及将所述密文存储到所述NVM中。
根据本申请的第一方面的将固件烧录至存储设备的第一方法,提供了根据本申请第一方面的将固件烧录至存储设备的第二方法,所述第一OTP器件记录的所述第一数与所述公钥唯一对应;以及所述公钥同所述固件的指定版本对应。
根据本申请的第一方面的将固件烧录至存储设备的第二方法,提供了根据本申请第一方面的将固件烧录至存储设备的第三方法,若验证失败,则不进行验签。
根据本申请的第一方面的将固件烧录至存储设备的第三方法,提供了根据本申请第一方面的将固件烧录至存储设备的第四方法,若验签失败,则拒绝将所述固件写入所述NVM。
根据本申请的第一方面的将固件烧录至存储设备的第二方法,提供了根据本申请第一方面的将固件烧录至存储设备的第五方法,生成第一随机数并将第一随机数写入所述第二OTP器件的步骤包括:通过运行所述启动程序调用随机数生成器生成所述第一随机数;以及将所述第一随机数存储于所述第二OTP器件中。
根据本申请的第一方面的将固件烧录至存储设备的第五方法,提供了根据本申请第一方面的将固件烧录至存储设备的第六方法,根据所述第一随机数将所述摘要和所述固件进行加密以得到密文的步骤包括:根据所述第一随机数生成密钥;基于所述密钥,利用SM4算法将所述摘要和所述固件进行加密,以获得所述密文。
根据本申请的第一方面的将固件烧录至存储设备的第六方法,提供了根据本申请第一方面的将固件烧录至存储设备的第七方法,根据所述第一随机数生成密钥的步骤包括:利用SM3算法对所述第一随机数进行转换,以产生第一哈希值;以及根据所述第一哈希值产生所述密钥。
根据本申请的第一方面的将固件烧录至存储设备的第四方法,提供了根据本申请第一方面的将固件烧录至存储设备的第八方法,获取待烧录固件的步骤包括:通过主机接口获取所述固件和所述固件的第一签名。
根据本申请的第一方面的将固件烧录至存储设备的第八方法,提供了根据本申请第一方面的将固件烧录至存储设备的第九方法,根据所述公钥对待烧录的固件进行验签的步骤包括:运行所述启动程序中的签名算法对所述固件进行签名,以得到第二签名;判断所述第二签名与所述第一签名是否一致;以及如一致,则验签成功;如不一致,则验签失败。
根据本申请的第一方面的将固件烧录至存储设备的第一至第九任一方法,提供了根据本申请第一方面的将固件烧录至存储设备的第十方法,计算所述固件的摘要是基于SM3算法。
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备的控制器,包括处理单元和存储单元,所述存储单元存储有计算机程序,所述计算机程序由所述处理器运行时,执行前述第一方面中的方法。
根据本申请的第三方面,提供了根据本申请第三方面的第一计算机可读存储介质,其上存储有计算机程序,所述计算机程序被运行时,执行前述第一方面中的方法。
本申请的方案中,利用启动程序访问存储设备中的第一OTP器件,并将第一OTP器件中的第一数取出,利用该第一数对启动程序中的公钥进行验证,并根据该公钥对待烧录的固件进行验签。通过第一数进行公钥验证,未包含第一OTP器件的存储设备无法通过验证,从而保证所要烧录的存储设备是合法的。进一步地,通过验签的方式,保证了所要烧录的固件是合法固件。将生成的第一随机数存储于第二OTP器件中,并利用该第一随机数对固件和摘要进行加密得到密文,将摘要和固件一起加密,有效地提高了固件的安全性,避免固件被篡改;采用第二OTP器件存储第一随机数,可以方便存储设备加载该固件时进行调用,从而保证了固件在该存储设备中有效运行。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示意性示出其中应用本申请的将固件烧录至芯片的方案的示例性场景的示意图;
图2是示意性示出根据本申请实施例的将固件烧录至芯片的方法的流程图;
图3是示意性示出根据本申请实施例的根据公钥对待烧录的固件进行验签的方法的流程图;
图4是示意性示出根据本申请实施例的生成第一随机数并对摘要和固件进行加密以得到密文的方法的流程图;以及
图5是示意性示出根据本申请实施例的根据第一随机数据生成密钥的方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。应当理解,本申请的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本申请的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本申请。如在本申请说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本申请说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
下面结合附图来详细描述本申请的具体实施方式。
图1是示意性示出应用本申请的将固件烧录至芯片的方案的示例性场景10的示意图。例如,存储设备在生产线上制备加工过程中,适用如图1所示的应用场景。
本申请的应用场景10包括烧录设备11与存储设备12,用户通过烧录设备11,将固件烧录至存储设备12中。前述的应用场景10可以包括存储设备生产方(代工厂)生产存储设备时向该存储设备烧录固件的过程。基于此,可以理解的是图1仅为了示例性的目的而将该场景示出为存储设备的生产过程。
如图1所示,烧录设备11是一种程序下载设备,主要用于单片机(含嵌入式)/存储器(含BIOS)之类的芯片的烧录(或称刷写)。可以利用计算机通过串联、并联或USB等方式建立连接并搭配特定的工具将程序写入存储类、单片机类的元器件中。例如烧录设备11可以是万用型烧录器、量产型烧录器或专用型烧录器。存储设备12用于提供相应的存储介质。烧录设备11和存储设备12互相连接,其连接方式包括但不限于通过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,高速外围组件互联)等。
存储设备12包括接口121、控制器122、NVM阵列123及DRAM(Dynamic RandomAccess Memory,动态随机访问存储器)124。
接口121用以与烧录设备11进行耦合,基于前述的连接方式,可适配为SATA接口、IDE接口、USB接口、PCIE接口等。
控制器122用于协调接口121、NVM阵列123及DRAM 124之间的数据传输任务,可通过软件、硬件、固件或其组合的多种方式来实现。也就是说,对于控制器122而言,其作用一是合理调配数据在各个闪存芯片上的负荷,二则是承担了整个数据中转,连接闪存芯片和外部SATA接口。以硬件为例,控制器122可以是FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)、CPU或者其组合的形式。
NVM阵列123是存储设备12中用来存储用户数据的存储装置,通常会采用非易失性存储器,即使关闭电源也不会丢失已保存的数据。NVM阵列123一般包括一个、多个或大量的NVM芯片,每个NVM芯片可以是NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)、XPoint存储器等。
DRAM 124用以缓存烧录设备11发送来的输入/输出命令,供控制器122取出处理,或者存储加载的待烧录的固件,以便后续将待烧录的固件加密后烧录至NVM芯片。
利用上述烧录设备11将固件烧录至存储设备之前,需要初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态。因此,前述的存储设备12的控制器122需要首先从烧录设备11获取合适的启动程序(bootloader),该启动程序可以由固件开发方提供。然后在接下来的烧录过程中,运行启动程序(bootloader),将固件等信息加载到存储设备中。
对于利用前述的烧录设备11将固件烧录至存储设备中,固件开发方需将固件提供给存储设备生产方,为了提高固件的安全性,避免固件信息泄露或者被篡改,本申请的方案中,存储设备12的控制部件,即前述控制器122会包括两个OTP器件,分别为第一OTP(OneTime Programmable,一次可编程)器件和第二OTP器件,其中,第一OTP器件是由固件开发方提供给存储设备生产方的,并且在提供给存储设备生产方之前,已经通过一次可编程方法往第一OTP器件中写入了数据(第一数),例如该第一数可以是用于验证的随机数;另外,固件开发方一次所提供的第一OTP器件的数目与其要求存储设备生产方所生产的存储设备的数目相同。例如,固件开发方要求存储设备生产方生成1万个存储设备,则固件开发方会给存储设备生产方仅提供1万个第一OTP器件,其中,这1万个第一OTP器件所写入的第一数是相同的。并且,控制部件执行固件烧录方法时所采用的启动程序也是由固件开发方提供给存储设备生产方,且在启动程序中包括用于验证该待烧录的固件的公钥,即该启动程序、公钥和OTP均与该固件版本相绑定。在存储设备获取该启动程序后,即可按照本申请的方案将固件安全地写入。可以理解的是,本申请的方案中,多个存储设备(如SSD)的每个执行本申请的将固件烧录至存储设备12的方法中,均可以使用相同的启动程序并且获取相同的固件。
以上结合图1对本申请的应用场景进行了描述,可以理解的是上面的描述仅仅是示例性的而非限制性的,本领域技术人员根据本申请的教导可以对图1中所示场景进行改变而不脱离本申请的精神和实质。
图2是示意性示出根据本申请实施例的将固件烧录至芯片的方法的流程图。可以理解的是图2中所示出的方法流程可以在图1中所示出的示例性场景10中实施,因此关于图1所描述内容(例如关于控制器)也同样适用于图2。
如图2所示,首先,执行步骤S100,加载并运行启动程序(bootloader),获取待烧录的固件。其中对于批量的存储设备(例如10000个SSD)执行本申请的方法时,都可以使用相同的启动程序,并获取相同的固件。启动程序和待烧录的固件由固件开发者提供,在固件烧录过程种,存储设备可以通过其主机接口接收固件开发者提供的启动程序和待烧录的固件,然后存储设备加载并运行该启动程序,以实现将固件加载到存储设备。
然后,执行步骤S200,利用前述启动程序访问存储设备中已被写入数据的第一OTP器件,以得到存储于该第一OTP中的第一数。其中,前述的第一OTP记录的第一数与启动程序中的公钥存在唯一对应的关系,该公钥又与该待烧录的固件的指定版本对应。接着,执行步骤S300,利用该第一数验证该启动程序中的公钥,并执行步骤S400时判断验证是否成功,如果验证成功,待烧录的固件是指定版本的固件,则可以进一步执行烧录固件的后续步骤,例如步骤S500中对固件进行验签。如果验证不成功,则进入步骤S510,不进行后续验签过程,结束将该待烧录的固件烧录至存储设备中。
前述的验证过程的关键是该存储设备中的第一OTP器件中存储有“一次性口令(随机数)”或“一次性随机数字组合”(即上述第一数)。该第一OTP器件可以由固件开发者提供,存储设备生产方无法获知第一OTP器件内的数据;另外,启动程序也是由固件开发方提供,固件开发方预先在启动程序中设置有查询第一OTP器件的相关代码或方法,存储设备生产方无法获取该方法或代码,并且存储设备生产方或其他人无法获知该第一OTP器件的位置,故存储设备生产方或其他人在没有第一OTP器件的前提下无法使用固件生产方所提供的固件非法生产存储设备,进而提高了存储设备生产过程中的安全性。
利用前述的第一OTP器件中提前写入的第一数与启动程序中公钥的对应关系,可以对待烧录的固件进行验证,以确保待烧录的固件的版本为正确版本。因此,在前述生产存储设备的代工厂里,利用本申请的方案,该固件在烧录至存储设备的过程中,代工厂需要至少获取具有绑定关系的启动程序、多个第一OTP器件和公钥(可以集成在启动程序中),才能实现完整的固件烧录过程,因此可以保证通过该固件批量生成多个存储设备时,只能生产固件开发方所需数量的存储设备,无法利用固件开发方提供的固件非法生产其他存储设备,从而提高了固件烧录过程的安全性。
例如,固件开发者指定了需要生产的10000个SSD,那么固件开发者可以将这10000个SSD授权由一个代工厂A完成,也可以授权由两个代工厂A和B共同完成。为此,固件开发者会向代工厂提供启动程序(包含公钥)和固件。例如,代工厂A得到了固件和启动程序(包括公钥),即使代工厂A希望将固件应用于这10000个SSD之外未授权的其他SSD或者设备,那么代工厂A实际上也根本无法将固件写入这10000个SSD之外的存储设备中。原因在于,其他存储设备中不具备第一OTP器件,也就无法通过验证,即不能验证公钥。而固件开发者授权的这10000个SSD均带有第一OTP器件,该第一OTP器件中被写入了第一数,在进行烧录时,固件开发者向该代工厂提供的启动程序中的公钥与该第一OTP器件中的第一数是绑定的,利用该第一OTP器件中的第一数才能实现启动程序中公钥的验证。也就是说,即使该代工厂A能够获取到固件、也能够获取到启动程序中的公钥,但是却无法获取、获知对应的SSD中的第一OTP中的第一数,也就不能够完成公钥的验证过程,则该SSD将会被认为是不合法的。因此,通过本申请的方法,可以避免泄露的固件被代工厂安装到其他的SSD中,保障了固件开发者的利益。
回到本申请的方案,在前述验证成功后,本申请的方法进行到步骤S500,根据前述的公钥对该待烧录的固件进行验签。即该启动程序调用相应的签名算法,验证该固件的签名,并执行步骤S600,判断验签是否成功。如果验签成功,则执行步骤S700-S900,以对该待烧录的固件进行加密,包括:执行步骤S700,计算待烧录固件的摘要,接着执行步骤S800,根据第一随机数对摘要和固件进行加密以得到密文,最后执行步骤S900,将密文存储到NVM中,从而完成烧录过程。如果验签不成功,则执行步骤S710,拒绝将固件写入NVM中。
在一个实现场景中,前述根据公钥对该待烧录的固件进行验签可以基于非对称加密技术。固件通过合法的方式形成摘要,即固件开发者使用授权工具对该固件进行签名。该授权工具利用该私钥对固件进行签名(加密)。存储设备获取该固件的明文和签名后,利用前述的公钥对该待烧录的固件进行验签,即利用前述的公钥进行验签。作为举例,前述的非对称加密算法可以采用非对称加密的SM2算法,即验签过程中运行启动程序中的签名算法对固件进行签名时可以采用SM2算法,其利用的是ECC(Error Checking and Correction)椭圆曲线密码机制,SM2算法标准包括4个部分,第1部分是总则,其包括素数域和二元扩域两种算法描述;第2部分是数字签名算法;第3部分是密钥交换协议;第4部分是公钥加密算法,使用ECC公钥进行加密和ECC私钥进行加密算法。
图3是示意性示出根据本申请实施例的根据公钥对待烧录的固件进行验签的方法S500的流程图。可以理解的是图3中所示出的方法流程可以在图1中所示出的示例性场景中实施,因此关于图1所描述内容也同样适用于图3。
如图3所示,本申请将固件烧录至该存储设备还包括通过启动程序加载相应的固件验签程序。在烧录时该存储设备需要通过自身的主机接口获取固件和该固件的第一签名,以便于执行本方案中对该固件的验签。在一个实现场景中,本申请根据公钥对待烧录的固件进行验签的步骤包括:执行步骤S501,通过主机接口获取所述固件和所述固件的第一签名。执行步骤S502,运行启动程序中的签名算法(例如前述的SM2算法)对固件进行签名,得到第二签名,并执行步骤S503,对第二签名与第一签名进行匹配,以判断该第二签名与第一签名是否一致。如一致,判断验签成功,以便于执行后续计算固件的摘要的步骤,即进入图2的步骤S700,前述启动程序可以调用相应的哈希算法计算该固件的摘要。如不一致,则判断验签失败,则拒绝将所述固件写入NVM。
通过上述验签过程保证了固件的合法性,例如,在烧录设备与SSD之间的数据传输过程中该固件损坏(丢包、错误),或者人为故意传输非法的固件,或者对合法固件的篡改,都可以通过上述验签过程进行判定,从而保证写入该存储设备中的固件是合法的。因此,通过上述验签过程,对于合法的存储设备来说,非法的固件无法写入,杜绝了以篡改的、错误的固件运行于合法存储设备的可能性。
以上说明了对固件进行验签的过程,在验签成功后,则进入固件烧录至该存储设备中的过程,接下来将详细描述将固件加密后写入存储设备中的方法。本申请中,在进行固件烧录过程中,启动程序控制随机数生成器生成第一随机数,并将生成的第一随机数存储在第二OTP器件中,并利用该第一随机数对该固件及该固件的摘要进行加密。因此,该过程可以包括:执行步骤S700,计算得到该固件及其摘要。作为举例,前述验签成功后,计算所述固件的摘要可以基于SM3算法。具体地,该SM3算法是一种密码散列函数(Cryptographichash function),也被译为加密散列函数、密码散列函数、加密散列函数,是散列函数的一种。这种散列函数的输入数据,通常被称为消息(message),而它的输出结果,经常被称为消息摘要(message digest)或摘要(digest)。因此,可以利用该SM3算法计算该固件的摘要。执行步骤S800,利用该启动程序控制随机数生成器生成第一随机数,并将该第一随机数写入第二OTP器件中,并且根据该第一随机数,将前述计算得到的摘要和该待烧录的固件进行加密以得到密文,从而实现了对固件的加密。
图4和图5进一步示出步骤S800的细部操作,其中图4是示意性示出根据本申请实施例的生成第一随机数并对摘要和固件进行加密以得到密文的方法S800的流程图,图5是示意性示出根据本申请实施例的根据第一随机数据生成密钥的方法S803的流程图。可以理解的是图4和图5中所示出的方法流程可以在图1中所示出的示例性场景中实施,因此关于图1所描述内容也同样适用于图4和图5。
如图4所示,首先,执行步骤S801,通过运行前述启动程序调用随机数生成器生成第一随机数。然后执行步骤S802,将该第一随机数存储于第二OTP器件中,以便在对固件进行加密时调用。
利用以上方法可以将第一随机数存储于第二OTP器件中,同时,还可以利用该第一随机数生成密钥,以对前述待烧录的固件及其摘要进行加密。接着,执行步骤S803,根据第一随机数据生成密钥。最后,执行步骤S804,基于该生成的密钥,利用SM4算法将前述计算得到的摘要和待烧录的固件进行加密,以获得密文。具体地,SM4算法是一种加密算法,其密钥长度和分组长度均为128。SM4算法的加密解密过程中使用的算法是相同的,不同之处在于该算法解密密钥是由加密密钥进行逆序变换后得到的。本实施例中,将明文(即固件)分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。例如,选择该固件的前128位,或后128位,通过一个密钥加密之后得到一个密文,这个密文可以通过相同的密钥解密得出和原来相同的明文。因此,在该存储设备运行该固件时,可以通过调用该第二OTP器件中的第一随机数对该密文进行解密,从而合法运行该固件。通过本申请的这一方法,可以保证固件运行过程中的安全性,避免固件泄露的风险。
其中,本申请利用密钥对固件及其摘要均进行加密,并将该密文存储至NVM中。相比于仅加密固件,安全性更高。原因在于:若仅加密固件,则在固件被烧录到存储设备后,通过非法手段对固件的篡改无法被发现和识别。而将固件和摘要一起加密,存储设备的使用方在启动存储设备时,可根据存储设备中烧录的固件重新计算其对应的摘要,将重新计算的摘要与和固件一起加密的摘要进行对比,若相同,则说明固件未被篡改;若不相同,则说明在固件被烧录到存储设备发生了变化,从而识别出固件被篡改。
以上说明了利用该第一随机数对固件及其摘要进行加密的方式,接下来将阐述产生该用于加密的密钥的方法。如图5所示,首先,执行步骤S820,利用SM3算法对前述的第一随机数进行转换,以产生第一哈希值。然后,执行步骤S821,根据该生成的第一哈希值产生密钥。其中,所采用的SM3算法是公布的hash(哈希)算法的商用标准,能应用于数字签名与验证、消息认证码的生成以及伪随机数的生成。因此,除了在对该第一随机数进行转换生成对应的第一哈希值之外,本申请中还可以利用该SM3算法进行固件的数字摘要的计算,该计算过程已在上述内容中说明,此处不再赘述。
前述利用该生成的第一随机数将固件和其摘要一起加密,然后将密文存储到存储设备的NVM中,可以在此步骤实现对每个存储设备中的固件的加密,这样生产出来的每个存储设备中的固件均是不同的密钥加密后的固件(由于每个存储设备中生成的第一随机数是不同的)。基于此,该存储设备正常运行过程中,当需要用到该固件时,可以从该第二OTP器件中获取该用于加密的随机数以进行解密。同时,由于该固件利用该第一随机数进行了加密,即使该存储设备中的固件被泄露,并应用于其他的存储设备中,由于无法对该固件进行解密,也就不能够正常运行,从而有效保障了该存储设备的固件的安全性。
在本申请的另一个方面,还提供了一种存储设备的控制器,包括处理单元(如图1所示的控制器122)和存储单元(如图1所述的NVM阵列123),控制器能够加载并运行存储于存储单元的计算机程序,执行前述多个应用场景中的方法,例如执行图2-图5的流程。
在本申请的又一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被运行时,执行前述多个应用场景中的方法,用于:通过存储设备中的第一OTP器件中的第一数对公钥进行验证,保证了未授权的存储设备无法烧录固件;通过对固件进行验签的过程以及利用生成的第一随机数对固件和摘要进行加密的方式,有效地提高了固件的安全性,避免固件被篡改。
需要说明的是,为了简明的目的,本申请将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本申请的方案并不受所描述的动作的顺序限制。因此,依据本申请的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本申请所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本申请某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本申请对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本申请某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本申请的公开和教导,本领域技术人员可以理解本申请所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种将固件烧录至存储设备的方法,所述存储设备包括控制器与NVM,其中所述控制器包括第一OTP器件与第二OTP器件;对多个存储设备的每个执行所述方法中,使用相同的启动程序,以及获取相同的固件;所述启动程序中包括用于验证所述固件的公钥;其中,所述第一OTP器件是由固件开发方提供给存储设备生产方的、且固件开发方一次所提供的第一OTP器件的数目与其要求存储设备生产方所生产的存储设备的数目相同,其特征在于,所述方法包括:
加载并运行所述启动程序,获取待烧录的固件;
访问已被写入第一数的所述第一OTP器件,得到所述第一数;
通过所述第一数对所述启动程序中的公钥进行验证,其中,在提供给所述存储设备生产方之前提前写入所述第一OTP器件的第一数与所述启动程序中的公钥存在唯一对应的关系;
若验证成功,根据所述公钥对待烧录的固件进行验签;
若验签成功,计算所述固件的摘要;
生成第一随机数,并将第一随机数写入所述第二OTP器件,根据所述第一随机数对所述摘要和所述固件进行加密以得到密文;以及
将所述密文存储到所述NVM中。
2.根据权利要求1所述的方法,其特征在于,
所述第一OTP器件记录的所述第一数与所述公钥唯一对应;以及
所述公钥同所述固件的指定版本对应。
3.根据权利要求1或2所述的方法,其特征在于,
若验证失败,则不进行验签。
4.根据权利要求1所述的方法,其特征在于,
若验签失败,则拒绝将所述固件写入所述NVM。
5.根据权利要求1所述的方法,其特征在于,生成第一随机数并将第一随机数写入所述第二OTP器件的步骤包括:
通过运行所述启动程序调用随机数生成器生成所述第一随机数;以及
将所述第一随机数存储于所述第二OTP器件中。
6.根据权利要求5所述的方法,其特征在于,根据所述第一随机数将所述摘要和所述固件进行加密以得到密文的步骤包括:
根据所述第一随机数生成密钥;
基于所述密钥,利用SM4算法将所述摘要和所述固件进行加密,以获得所述密文。
7.根据权利要求6所述的方法,其特征在于,根据所述第一随机数生成密钥的步骤包括:
利用SM3算法对所述第一随机数进行转换以产生第一哈希值;以及
根据所述第一哈希值产生所述密钥。
8.根据权利要求1所述的方法,其特征在于,获取待烧录固件的步骤包括:
通过主机接口获取所述固件和所述固件的第一签名。
9.根据权利要求8所述的方法,其特征在于,根据所述公钥对待烧录的固件进行验签的步骤包括:
运行启动程序中的签名算法对所述固件进行签名,以得到第二签名;
判断所述第二签名与所述第一签名是否一致;以及
如一致,则验签成功;如不一致,则验签失败。
10.一种存储设备的控制器,其特征在于,包括处理单元和存储单元,所述存储单元存储有计算机程序,所述计算机程序由所述处理单元运行时,执行权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110744692.0A CN113434853B (zh) | 2021-07-01 | 2021-07-01 | 一种将固件烧录至存储设备的方法及控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110744692.0A CN113434853B (zh) | 2021-07-01 | 2021-07-01 | 一种将固件烧录至存储设备的方法及控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434853A CN113434853A (zh) | 2021-09-24 |
CN113434853B true CN113434853B (zh) | 2023-01-24 |
Family
ID=77758425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110744692.0A Active CN113434853B (zh) | 2021-07-01 | 2021-07-01 | 一种将固件烧录至存储设备的方法及控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434853B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590209B (zh) * | 2021-09-29 | 2022-03-01 | 翱捷科技(深圳)有限公司 | 芯片启动控制方法、芯片及电子设备 |
CN114626868B (zh) * | 2022-03-22 | 2024-10-15 | 歌尔股份有限公司 | 智能门铃防盗版方法、系统、智能门铃及可读存储介质 |
CN114510753B (zh) * | 2022-04-20 | 2023-04-07 | 浙江地芯引力科技有限公司 | 存储器数据保护方法、装置、电子设备及存储介质 |
TWI822001B (zh) * | 2022-04-20 | 2023-11-11 | 凌通科技股份有限公司 | 演算法量產授權方法以及演算法加密方法、使用其之量產燒錄工具以及使用其之演算法裝置 |
CN116149688B (zh) * | 2023-04-18 | 2023-06-23 | 深圳市启明智显科技有限公司 | 一种应用于工厂的烧录方法及烧录系统 |
CN117828561B (zh) * | 2024-03-05 | 2024-05-31 | 九音科技(南京)有限公司 | 芯片固件数据的安全烧录方法、设备、系统及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2869745A1 (fr) * | 2004-04-28 | 2005-11-04 | France Telecom | Systeme et procede d'acces securise de terminaux visiteurs a un reseau de type ip |
US20090024784A1 (en) * | 2007-07-20 | 2009-01-22 | Wang Liang-Yun | Method for writing data into storage on chip and system thereof |
CN109842488A (zh) * | 2017-11-28 | 2019-06-04 | 中天安泰(北京)信息技术有限公司 | 用于物理芯片内的密钥生成组件 |
CN109388961B (zh) * | 2018-10-24 | 2021-05-18 | 湖南国科微电子股份有限公司 | 存储设备的安全控制方法及存储设备 |
CN111177693B (zh) * | 2019-12-11 | 2022-08-16 | 福建魔方电子科技有限公司 | 一种验证终端根证书的方法、装置、设备和介质 |
-
2021
- 2021-07-01 CN CN202110744692.0A patent/CN113434853B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113434853A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434853B (zh) | 一种将固件烧录至存储设备的方法及控制器 | |
EP3458999B1 (en) | Self-contained cryptographic boot policy validation | |
US9887841B2 (en) | Authenticator, authenticatee and authentication method | |
KR101657613B1 (ko) | 보안 저장 장치에 저장된 디지털 컨텐츠의 백업 | |
US8966580B2 (en) | System and method for copying protected data from one secured storage device to another via a third party | |
JP4616345B2 (ja) | 配布cdを用いて直接証明秘密鍵を装置に配布する方法 | |
US20090276474A1 (en) | Method for copying protected data from one secured storage device to another via a third party | |
TW202036347A (zh) | 資料儲存、驗證方法及裝置 | |
WO2022192046A1 (en) | In-memory signing of messages with a personal identifier | |
WO2022093542A1 (en) | Endpoint authentication based on boot-time binding of multiple components | |
KR20210089486A (ko) | 키를 안전하게 관리하기 위한 장치 및 방법 | |
JP2022527163A (ja) | 暗号ハッシュを用いたメモリに格納されたデータの正当性確認 | |
CN118302990A (zh) | 用于基于设备所有者来生成密钥的sram物理不可克隆功能(puf)存储器 | |
CN115391844A (zh) | 安全密钥存储装置 | |
WO2023212178A1 (en) | Sram physically unclonable function (puf) memory for generating keys based on device owner | |
JP4965512B2 (ja) | 認証システム、情報処理装置、記憶装置、認証方法及びそのプログラム | |
JP2009080772A (ja) | ソフトウェア起動システム、ソフトウェア起動方法、及びソフトウェア起動プログラム | |
CN116561734A (zh) | 一种验证方法、装置、计算机及计算机配置系统 | |
CN115688120A (zh) | 安全芯片固件导入方法、安全芯片及计算机可读存储介质 | |
CN114995918A (zh) | 基板管理控制器的启动方法、配置方法、装置及电子设备 | |
CN110210189A (zh) | 软件验证方法、软硬件绑定方法及其可编程器件 | |
TWI818221B (zh) | 可認證晶片外部除錯功能韌體程式與除錯使用者的晶片與方法 | |
US11677560B2 (en) | Utilization of a memory device as security token | |
JP5539024B2 (ja) | データ暗号化装置およびその制御方法 | |
TWI763294B (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 |