CN117997544A - 存储控制器和提供固件映像的方法 - Google Patents

存储控制器和提供固件映像的方法 Download PDF

Info

Publication number
CN117997544A
CN117997544A CN202311459110.XA CN202311459110A CN117997544A CN 117997544 A CN117997544 A CN 117997544A CN 202311459110 A CN202311459110 A CN 202311459110A CN 117997544 A CN117997544 A CN 117997544A
Authority
CN
China
Prior art keywords
public key
signature
firmware image
memory
firmware
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
CN202311459110.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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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
Priority claimed from KR1020230015881A external-priority patent/KR20240064493A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN117997544A publication Critical patent/CN117997544A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

提供了存储控制器和提供固件映像的方法。所述存储控制器被配置为控制非易失性存储器并且包括:OTP存储器,所述OTP存储器被配置为存储第一公钥,所述OTP存储器即一次性可编程存储器;以及处理器,所述处理器被配置为,基于被添加到包括主机认证公钥的固件映像的第一签名使用所述第一公钥被验证,来:接收包括至少一个第二公钥和用于所述至少一个第二公钥的第一主机认证签名的存储命令,并且基于所述第一主机认证签名使用所述主机认证公钥被验证,将所述至少一个第二公钥存储在所述OTP存储器中。

Description

存储控制器和提供固件映像的方法
相关申请的交叉引用
本申请基于于2023年2月7日在韩国知识产权局提交的韩国专利申请No.10-2023-0015881和于2022年11月4日在韩国知识产权局提交的韩国专利申请No.10-2022-0146292并且要求其优先权,上述韩国专利申请的公开内容通过引用整体地并入本文。
技术领域
本公开的示例实施例涉及存储控制器和提供固件映像的方法。
背景技术
固件可以指控制硬件的程序。固件可以在硬件被制造时被提供到硬件内的存储空间中。可以以各种方式尝试对包括固件和硬件的系统进行攻击。攻击者可以通过改变系统的固件的至少一部分来使系统执行攻击者所意图的操作。为了针对改变固件的攻击提供安全性,系统可以在运行固件之前对固件执行认证,并且可以在从外部实体下载更新后的固件时对更新后的固件执行认证。
本背景技术部分中公开的信息在实现本申请的实施例的过程之前或期间已经为发明人所知道或者由发明人导出,或者是在实现实施例的过程中获取的技术信息。因此,它可以包含不形成为公众已经知道的现有技术的信息。
发明内容
一个或更多个示例实施例提供了一种存储控制器,其可以在没有固件厂商的干预的情况下输入用于对被添加有主机的签名的固件映像进行认证的主机公钥。
一个或更多个示例实施例提供了一种存储控制器,其通过使用由有效主机输入的主机公钥来认证被添加有主机的签名的固件映像而具有改进的安全性。
一个或更多个示例实施例提供了一种存储控制器,其可以通过在发货时仅验证固件映像中的固件厂商的单签名、并且响应于主机公钥的输入来切换以验证固件映像中的固件厂商和主机的双签名而具有改进的通用性和安全性。
一个或更多个示例实施例提供了一种用于提供固件映像的方法,通过所述方法,主机可以生成可由存储控制器在没有固件厂商的干预的情况下验证的双签名固件,并且可以将所生成的固件提供给存储装置。
额外方面将在下面的描述中被部分地阐述,并且部分地,将从描述中清楚,或者可以通过对所呈现的实施例的实践来学习。
根据示例实施例的一个方面,一种被配置为控制非易失性存储器的存储控制器可以包括:OTP存储器,所述OTP存储器被配置为存储第一公钥,所述OTP存储器即一次性可编程存储器;以及处理器,所述处理器被配置为,基于被添加到包括主机认证公钥的固件映像的第一签名使用所述第一公钥被验证,来:接收包括至少一个第二公钥和用于所述至少一个第二公钥的第一主机认证签名的存储命令,并且基于所述第一主机认证签名使用所述主机认证公钥被验证,将所述至少一个第二公钥存储在所述OTP存储器中。
根据示例实施例的一个方面,一种被配置为控制非易失性存储器的存储控制器可以包括:一次性可编程存储器(OTP)存储器,所述OTP存储器被配置为存储第一公钥和第二公钥;缓冲存储器,所述缓冲存储器被配置为缓冲从主机接收到的更新固件映像;以及处理器,所述处理器被配置为:使用所述第一公钥和所述第二公钥来对所述更新固件映像进行认证,并且基于所述认证完成,控制所述非易失性存储器存储所述更新固件映像,其中,所述第二公钥使用现有固件映像中所包括的主机认证公钥被认证,并且所述现有固件映像包括使用至少所述第一公钥认证了的固件映像。
根据示例实施例的一个方面,一种向存储装置提供双签名固件映像的方法可以包括:生成包括用于客户认证的第一公钥和用于客户认证的第一私钥的第一密钥对;向固件厂商提供所述用于客户认证的第一公钥;生成包括客户公钥和客户私钥的第二密钥对;使用所述用于客户认证的第一私钥来为所述客户公钥生成客户认证签名;向所述存储装置提供包括所述客户公钥和所述客户认证签名的存储命令;获得第一固件映像,所述第一固件映像包括用于客户认证的第二公钥和由所述固件厂商添加到所述第一固件映像的厂商签名;使用所述客户私钥来向所述第一固件映像添加第一客户签名;以及向所述存储装置提供被添加有所述厂商签名和所述第一客户签名的所述第一固件映像。
根据示例实施例的一个方面,一种被配置为控制非易失性存储器的存储控制器可以包括:一次性可编程(OTP)存储器,所述OTP存储器被配置为存储第一公钥;处理器,所述处理器被配置为,基于被添加到包括主机认证公钥的固件映像的第一签名使用所述第一公钥被验证,来:接收包括第二公钥和用于所述第二公钥的主机认证签名的存储命令,并且基于所述主机认证签名使用所述主机认证公钥被验证,将所述第二公钥的第一摘要存储在所述OTP存储器中;以及缓冲存储器,所述缓冲存储器被配置为缓冲被添加有第二签名、第三签名和所述第二公钥的更新固件映像,其中,所述处理器可以还被配置为:使用所述第一公钥来验证所述第二签名;生成被添加到所述更新固件映像的所述第二公钥的第二摘要;基于通过将所述第二摘要与存储在所述OTP存储器中的所述第一摘要进行比较而认证了的被添加到所述更新固件映像的所述第二公钥,使用所述第二公钥来验证所述第三签名;以及基于对所述第二签名的验证和对所述第三签名的验证完成,控制所述非易失性存储器存储所述更新固件映像。
附图说明
根据结合附图进行的以下描述,本公开的某些示例实施例的上述及其他方面、特征和优点将是更清楚的,在附图中:
图1是图示了根据本公开的示例实施例的存储系统的图;
图2是图示了根据本公开的示例实施例的映像签名系统的图;
图3是图示了根据本公开的示例实施例的验证签名的方法的图;
图4A和图4B是图示了根据本公开的示例实施例的生成签名固件映像的方法的图;
图5是图示了根据本公开的示例实施例的存储装置的图;
图6A是图示了根据本公开的示例实施例的签名验证状态的表;
图6B是图示了根据本公开的示例实施例的签名验证状态的图;
图7A是图示了根据本公开的示例实施例的输入存储装置的第二公钥的方法的流程图;
图7B是图示了根据本公开的示例实施例的输入存储装置的第二公钥的方法的图;
图8A是图示了根据本公开的示例实施例的删除存储装置的第二公钥的方法的流程图;
图8B是图示了根据本公开的示例实施例的删除存储装置的第二公钥的方法的图;
图9A是图示了根据本公开的示例实施例的在双签名验证就绪状态下更新存储装置的固件的方法的流程图;
图9B和图9C是图示了根据本公开的示例实施例的在双签名验证就绪状态下更新存储装置的固件的方法的图;
图10A是图示了根据本公开的示例实施例的在双签名验证就绪状态下运行存储装置的固件的方法的流程图;
图10B是图示了根据本公开的示例实施例的在双签名验证就绪状态下运行存储装置的固件的方法的图;
图11是图示了根据本公开的示例实施例的在双签名验证状态下更新存储装置的固件的方法的流程图;以及
图12是图示了根据本公开的示例实施例的在双签名验证状态下运行存储装置的固件的方法的流程图。
具体实施方式
在下文中,将参考附图详细地描述本公开的示例实施例。在附图中相同的附图标记用于相同的组件,并且将省略它们的冗余描述。本文描述的实施例是示例实施例,因此,本公开不限于此并且可以被以各种其他形式实现。
如本文所使用的,诸如“中的至少一者”的表述当在元素的列表之前时,修饰元素的整个列表,而不修饰列表的各个元素。例如,表述“a、b和c中的至少一者”应当被理解为包括仅a、仅b、仅c、a和b两者、a和c两者、b和c两者、或a、b和c中的全部。
图1是图示了根据本公开的示例实施例的存储系统的图。
存储系统1可以包括主机10和存储装置20。存储装置20可以包括存储控制器21和非易失性存储器22(被示出为NVM 22)。
主机10可以包括用于处理命令(例如,运行指令)的至少一个核。例如,主机10可以包括应用处理器、微处理器、中央处理单元(CPU)、处理器核、多核处理器、多处理器、专用集成电路(ASIC)和现场可编程门阵列(FPGA)。
存储装置20可以包括用于响应于主机10的请求来存储数据的存储介质。例如,存储装置20可以包括固态硬盘(SSD)、嵌入式存储器和可移动外部存储器中的至少一者。当存储装置20被实现为SSD、嵌入式存储器或外部存储器时,存储装置20可以进一步包括非易失性存储器件。当存储装置20被实现为SSD时,存储装置20可以是符合快速非易失性存储器(NVMe)标准的装置。当存储装置20被实现为嵌入式存储器或外部存储器时,存储装置20可以是符合通用闪存(UFS)或嵌入式多媒体卡(eMMC)标准的装置。主机10和存储装置20中的每一者可以根据采用的标准协议来生成和传送分组。
存储控制器21可以控制存储装置20的整体操作。例如,存储控制器21可以响应于来自主机10的请求来将数据存储在非易失性存储器22中,并且响应于来自主机10的请求来将存储在非易失性存储器22中的数据传送到主机10。
当存储装置20的非易失性存储器22包括闪存时,该闪存可以包括二维(2D)NAND存储器阵列或三维(3D)(或垂直)NAND(VNAND)存储器阵列。作为另一示例,存储装置20可以包括其他各种类型的非易失性存储器。例如,作为存储装置20,可以应用磁性随机存取存储器(RAM)(MRAM)、自旋转移矩(MRAM)、导电桥接RAM(CBRAM)、铁电RAM(FeRAM)、相变RAM(PRAM)、电阻式RAM和其他各种类型的存储器。
存储控制器21可以运行固件。固件可以指控制存储装置20的软件。例如,存储装置20的固件可以包括主机接口层(HIL)、闪存转换层(FTL)和闪存接口层(FIL)。HIL可以管理主机10与存储控制器21之间的数据传输,FTL可以将从主机10接收到的逻辑地址转换成非易失性存储器22的物理地址,并且FIL可以管理存储控制器21与非易失性存储器22之间的数据传送。
为了针对改变固件的攻击提供安全性,固件厂商(vendor)可以向固件映像FW添加第一签名SIGN_V。例如,固件厂商可以是存储装置20的制造商、存储系统1的制造商或固件的供应商。存储控制器21可以使用用于验证第一签名SIGN_V的第一公钥PKEY_V来对固件映像FW进行认证,并且可以仅更新或运行认证后的固件映像FW。第一公钥PKEY_V可以被存储在存储装置20中的一次性可编程(OTP)存储器中,使得存储控制器21可以验证第一签名SIGN_V。被添加有第一签名SIGN_V的固件映像FW可以被称为单签名固件映像FW_SS。
主机10可以从固件厂商获得单签名固件映像FW_SS,并且可以将该单签名固件映像FW_SS传送到存储装置20以更新固件。主机10可以是从存储装置20的制造商接收存储装置20并且直接使用存储装置20或者将存储装置20出售给第三方的客户。
主机10可以通过针对由固件厂商分发的单签名固件映像FW_SS的安全性审查过程来验证单签名固件映像FW_SS,并且可以希望存储装置20仅运行安全性验证后的固件映像FW。例如,主机10可以向安全性已经被验证的单签名固件映像FW_SS添加第二签名。主机10可以希望存储装置20通过验证第一签名SIGN_V以及第二签名来验证固件映像FW,并且仅更新或运行验证后的固件映像FW。被添加有第一签名SIGN_V和第二签名的固件映像可以被称为双签名固件映像。
为了让存储装置20验证第二签名,可能需要将由主机10生成的第二公钥预先存储在内部OTP存储器中。在存储装置20的制造商在制造存储装置20期间的时间直接将客户的第二公钥输入到OTP存储器中的情况下,可能难以将存储装置20供应给另一客户。也就是说,存储装置20的通用性可能劣化。因此,存储装置20可以被制造为仅验证固件厂商的单签名,并且在发货之后,可以根据主机10的选择来改变存储装置20的状态以验证固件厂商和主机10的双签名。
在不可能验证输入到存储装置20中的第二公钥是否是从有效主机10输入的情况下,攻击者可以通过将他们的公钥输入到存储装置20中并且更新被添加有他们的签名的固件来尝试改变固件的攻击。
在示例实施例中,主机10可以将用于主机认证的公钥PKEY_AUTH(即,主机认证公钥)传送到固件厂商,使得存储在存储装置20中的固件映像FW可以包括用于主机认证的公钥PKEY_AUTH。由于第一签名SIGN_V被添加到固件映像FW(或者包括在固件映像FW中),所以固件映像FW中所包括的用于主机认证的公钥PKEY_AUTH可以是由固件厂商批准的有效客户的公钥。在该示例实施例中,用于主机认证的公钥PKEY_AUTH也可以被称为用于客户认证的公钥。
主机10可以向存储装置20提供被添加了(或者被包括在其中)的用于主机认证的签名SIGN_AUTH(即,主机认证签名)的存储命令SAVE_CMD以输入第二公钥PKEY_C。存储控制器21可以通过使用现有固件映像FW中所包括的用于主机认证的公钥PKEY_AUTH来验证用于主机认证的签名SIGN_AUTH来对命令SAVE_CMD进行认证。认证后的命令SAVE_CMD中所包括的第二公钥PKEY_C可以被存储在OTP存储器中。
为了更新固件,主机10可以向要被更新的固件映像添加第一签名SIGN_V,并且还可以添加可以用第二公钥PKEY_C验证的第二签名,从而创建双签名固件映像。存储装置20可以用第二公钥PKEY_C来对双签名固件映像进行认证,并且可以仅更新认证后的固件映像。
在示例实施例中,存储装置20可以使用从固件厂商认证的固件映像FW中所包括的用于主机认证的公钥PKEY_AUTH来对从主机10接收到的第二公钥PKEY_C进行认证。因此,仅从由固件厂商批准的有效客户接收到的第二公钥PKEY_C可以被存储在存储装置20中。因此,可以改进存储装置20对于双签名固件映像的安全性。
主机10可以向存储装置20提供由主机10本身生成的存储命令SAVE_CMD,而不用请求固件厂商将第二公钥PKEY_C输入到存储装置20中。因此,可以改进主机10输入第二公钥PKEY_C的方便性。
存储在存储装置20中的固件映像FW中所包括的特定客户的用于主机认证的公钥PKEY_AUTH可以在固件厂商提供更新固件映像时用另一客户的用于主机认证的公钥来修改。因此,可以改进存储装置20的通用性。
在下文中,将参考图2描述向固件映像添加签名的方法的示例,并且参考图3描述验证被添加到固件映像(或者包括在固件映像中)的签名的方法的示例。
图2是图示了根据本公开的示例实施例的映像签名系统的图。
图2中的映像签名系统30可以被包括在参考图1描述的固件厂商中。当映像签名系统30被包括在固件厂商中时,映像签名系统30可以接收固件映像FW,并且生成被传送到主机10的单签名固件映像FW_SS。映像签名系统30可以被包括在参考图1描述的主机10中。当映像签名系统30被包括在主机10中时,映像签名系统30可以接收单签名固件映像并且生成双签名固件映像。在下文中,将基于映像签名系统30被包括在固件厂商中的示例来描述生成签名的方法。
可以在任意计算系统中实现映像签名系统30。例如,映像签名系统30的每一个组件可以包括通过逻辑综合而设计的硬件模块、由至少一个核运行的软件模块、包括至少一个核和软件模块的处理单元以及它们的组合。映像签名系统30可以接收被传送到主机10的固件。如图2所图示的,映像签名系统30可以包括密钥生成器31、散列电路32、签名生成器33和签名映像生成器34。
密钥生成器31可以生成包括第一私钥SKEY_V和第一公钥PKEY_V的密钥对。例如,密钥生成器31可以包括随机数生成器并且可以基于随机数生成密钥对。在示例实施例中,可以省略密钥生成器31,并且映像签名系统30可以从外部实体接收密钥对中的至少一个密钥对。
散列电路32可以接收固件映像FW并且可以为固件映像FW生成摘要DIG。摘要DIG可以指基于诸如安全散列算法(SHA)的散列算法而生成的散列值。
签名生成器33可以从密钥生成器31接收第一私钥SKEY_V,并且可以基于第一私钥SKEY_V针对摘要DIG生成第一签名SIGN_V。第一签名SIGN_V可以是基于任意签名算法而生成的,例如,可以是基于椭圆曲线数字签名算法(ECDSA)从第一私钥SKEY_V生成的。在示例实施例中,如图2所图示的,签名生成器33可以接收第一公钥PKEY_V,并且可以基于第一私钥SKEY_V和第一公钥PKEY_V生成第一签名SIGN_V。
签名映像生成器34可以接收固件映像FW和第一签名SIGN_V,并且可以生成单签名固件映像FW_SS。也就是说,单签名固件映像FW_SS可以包括固件映像FW和第一签名SIGN_V。在示例实施例中,签名映像生成器34可以以数字信封的形式生成单签名固件映像FW_SS和第一公钥PKEY_V,并且可以将所生成的数字信封传送到主机10。
已经基于映像签名系统30为固件映像FW生成第一签名SIGN_V的示例描述了生成签名的方法,但是映像签名系统30可以为任意固件、程序、软件或数据生成签名。在该示例实施例中,为其生成了签名的数据可以被称为消息MSG。
图3是图示了根据本公开的示例实施例的验证签名的方法的图。
参考图3,存储控制器21可以接收消息MSG和用于该消息的签名SIG,并且可以基于公钥(PKEY)验证签名SIG,从而确定消息MSG是由可信人员创建的。在示例实施例中,消息MSG可以是单签名固件映像或双签名固件映像。
存储控制器21可以包括散列电路41、解密电路42和比较器电路43。散列电路41可以基于散列算法生成消息MSG的摘要DIG。解密电路42可以通过基于公钥(PKEY)对签名SIG进行解码来生成比较目标摘要DIG'。比较器电路43可以通过将摘要DIG与比较目标摘要DIG'进行比较来生成有效性信息VLD。有效性信息VLD可以指示消息MSG是由可信人员创建的。
例如,基于存储控制器21对其中客户的签名被添加到单签名固件映像FW_SS(或者包括在单签名固件映像FW_SS中)的双签名固件映像进行了认证,散列电路41可以生成单签名固件映像FW_SS的摘要DIG。解密电路42可以使用客户的公钥PKEY_C来生成客户的签名的比较目标摘要DIG'。比较器电路43可以将摘要DIG与比较目标摘要DIG'进行比较,并且可以基于比较结果输出有效性信息VLD。有效性信息VLD可以指示单签名固件映像FW_SS是由有效客户传送的固件。
基于验证了单签名固件映像FW_SS是由有效客户传送的固件映像,存储控制器21可以使用固件映像FW、第一签名SIGN_V和第一公钥PKEY_V来对单签名固件映像进行认证。散列电路41可以生成固件映像FW的摘要DIG。解密电路42可以通过使用第一公钥PKEY_V来对第一签名SIGN_V进行解码来生成比较目标摘要DIG'。比较器电路43可以将摘要DIG与比较目标摘要DIG'进行比较,并且可以基于比较结果输出有效性信息VLD。有效性信息VLD可以指示固件映像FW是由有效人员即固件厂商生成的。
图4A和图4B是图示了根据本公开的示例实施例的生成签名固件映像的方法的图。具体地,图4A图示了生成单签名固件映像的方法,并且图4B图示了生成双签名固件映像的方法。
图4A图示了厂商系统300和主机100。主机100可以对应于参考图1描述的主机10。厂商系统300可以包括第一服务器310和第一硬件安全模块(HSM)320(HSM1)。主机100可以包括第二服务器110和第二HSM 120(HSM2)。
第一服务器310和第二服务器110中的每一者可以包括用于处理命令的至少一个核。在示例实施例中,第一服务器310和第二服务器110包括应用处理器、微处理器、中央处理单元(CPU)、处理器核、多核处理器、多处理器、专用集成电路(ASIC)和现场可编程门阵列(FPGA),但是其示例实施例不限于此。
第一HSM 320和第二HSM 120可以生成包括公钥和私钥的密钥对,并且可以安全地存储该密钥对。例如,第一HSM 320和第二HSM 120可以包括参考图2描述的映像签名系统30。第一HSM 320和第二HSM 120可以从外部实体接收消息,可以使用私钥来为消息生成签名,并且可以输出该签名。第一HSM 320和第二HSM 120可以输出公钥,但是可以不泄漏私钥。私钥也可以被称为秘密密钥。
第一HSM 320可以生成包括第一公钥PKEY_V和第一私钥SKEY_V的密钥对。另外,第二HSM 120可以生成包括第二公钥PKEY_C和第二私钥SKEY_C的密钥对。在示例实施例中,第二HSM 120可以进一步生成包括用于主机认证的公钥PKEY_AUTH和用于主机认证的私钥SKEY_AUTH的密钥对。
在操作S11中,第二服务器110可以从第二HSM 120获得用于主机认证的公钥PKEY_AUTH,并且可以将用于主机认证的公钥PKEY_AUTH传送到第一服务器310。
在操作S12中,第一服务器310可以将用于主机认证的公钥PKEY_AUTH包括在固件映像FW中。例如,第一服务器310可以使得用于主机认证的公钥PKEY_AUTH能够被包括在最初存储在存储装置200中的固件映像中,并且还可以使得用于主机认证的公钥PKEY_AUTH能够被包括在要被更新的固件映像中。基于从第二服务器110接收到改变后的用于主机认证的公钥,第一服务器310可以使得改变后的用于主机认证的公钥能够被包括在固件映像FW中。
在操作S13中,第一服务器310可以向第一HSM 320提供被添加了用于主机认证的公钥PKEY_AUTH(或者用于主机认证的公钥PKEY_AUTH被包括在其中)的固件映像FW。第一HSM 320可以使用第一私钥SKEY_V来为固件映像FW生成第一签名SIGN_V,并且在操作S14中,可以输出第一签名SIGN_V。
第一服务器310可以通过向固件映像FW添加第一签名SIGN_V来生成单签名固件映像FW_SS。在操作S15中,第一服务器310可以将单签名固件映像FW_SS直接存储在存储装置200中。在操作S16中,第一服务器310可以通过将单签名固件映像FW_SS提供给第二服务器110来支持第二服务器110更新存储装置200的固件。可以选择性地执行操作S15和操作S16。
图4B中的厂商系统300和主机100可以对应于图4A中图示的厂商系统300和主机100。
参考图4B,厂商系统300和主机100可以通过执行操作S21至操作S28来生成双签名固件映像FW_DS,并且可以将双签名固件映像FW_DS提供给存储装置200。操作S21至操作S24可以分别与图4A中的操作S11和操作S14相同。
在操作S25中,第一服务器310可以将单签名固件映像FW_SS提供给第二服务器110。第二服务器110可以对单签名固件映像FW_SS执行安全性审查。基于安全性审查完成,在操作S26中,第二服务器110可以将单签名固件映像FW_SS提供给第二HSM 120。第二HSM120可以使用第二私钥SKEY_C来为单签名固件映像FW_SS生成第二签名SIGN_C,并且在操作S27中,可以输出第二签名SIGN_C。
第二服务器110可以通过将第二签名SIGN_C添加到单签名固件映像FW_SS来生成双签名固件映像FW_DS。在操作S28中,第二服务器110可以将双签名固件映像FW_DS提供给存储装置200,并且可以请求存储装置200更新固件。
在图4B中,已经基于第二服务器110将第二签名SIGN_C添加到整个单签名固件映像FW_SS的示例描述了示例实施例,但是其示例实施例不限于此。例如,第二服务器110可以通过仅将固件映像FW提供给第二HSM 120来获得固件映像FW的第二签名SIGN_C,并且可以将第二签名SIGN_C添加到单签名固件映像FW_SS。
第二服务器110可以使用被添加有用于主机认证的签名的命令来将第二公钥PKEY_C传送到存储装置200。具体地,第二服务器110可以从第二HSM 120获得第二公钥PKEY_C,并且可以请求第二HSM 120使用用于主机认证的私钥SKEY_AUTH来针对第二公钥PKEY_C生成用于主机认证的签名。第二服务器110可以从第二HSM 120获得用于主机认证的签名,并且可以向存储装置200提供包括用于主机认证的签名和第二公钥PKEY_C的命令。
存储装置200可以使用固件映像FW中所包括的用于主机认证的公钥PKEY_AUTH来验证命令是否是从有效客户传送的,并且可以根据验证结果来存储第二公钥PKEY_C。
攻击者可能尝试改变存储装置200,使得即使在存储装置200存储第二公钥PKEY_C之后,存储装置200也在仅从固件映像中验证了单签名时运行固件。
在示例实施例中,存储装置200可以在首次存储第二公钥PKEY_C时改变签名验证状态以验证固件映像中的供应商签名和客户签名两者。基于使用第二公钥PKEY_C认证了的双签名固件映像被首次运行,存储装置200可以改变签名验证状态,使得不可以运行单签名固件映像。存储装置200可以通过将改变后的签名验证状态存储在OTP存储器中来保护存储装置200的签名验证状态免于被攻击者改变。因此,可以改进存储装置200的安全性。
在下文中,将参考图5至图12更详细地描述根据示例实施例的存储控制器、存储装置及其操作方法。
图5是图示了根据本公开的示例实施例的存储装置的图。
存储装置200可以包括存储控制器210和非易失性存储器220(被示出为NVM 220)。图5中的存储装置200、存储控制器210和非易失性存储器220可以分别对应于参考图1描述的存储装置20、存储控制器21和非易失性存储器22。
存储控制器210可以包括主机接口211、存储器接口212、处理器213、工作存储器214、OTP存储器215和缓冲存储器216。
主机接口211可以向主机100发送分组并且可以从主机100接收分组。从主机100传送到主机接口211的分组可以包括命令、要写入到非易失性存储器220的数据、或要写入到存储控制器210中的存储空间(例如,OTP存储器215)的数据,而从主机接口211传送到主机100的分组可以包括对命令的响应或从非易失性存储器220读取的数据。
存储器接口212可以向非易失性存储器220传送将写入非易失性存储器220中的数据,或者可以接收从非易失性存储器220读取的数据。存储器接口212可以被实现为符合诸如Toggle或ONFI的标准协议。
处理器213还可以包括被设计为以高速度执行预定义操作的硬件加速器,以及提供与处理器213的外部组件的通信信道的输入/输出(I/O)接口。在示例实施例中,处理器213的组件可以被集成在单个芯片或单个裸片上,并且处理器213可以被称为片上系统(SoC)。在示例实施例中,处理器213的组件可以被集成到封装件中所包括的两个或更多个芯片中,并且处理器213可以被称为系统级封装(SiP)。处理器213也可以被称为微控制单元(MCU)。
工作存储器214可以临时存储由处理器213使用的数据。例如,存储在非易失性存储器220中的固件映像FW中所包括的指令的至少一部分可以被复制到工作存储器214,处理器213可以运行所复制的指令。在示例实施例中,工作存储器214可以包括易失性存储器,诸如提供相对高的工作速度的易失性存储器,诸如静态随机存取存储器(SRAM)。
OTP存储器215可以以非易失性方式存储存储控制器210的唯一数据。例如,OTP存储器215可以存储用于对固件映像进行认证的第一公钥PKEY_V和第二公钥PKEY_C。在示例实施例中,OTP存储器215还可以存储存储控制器210的签名验证状态值。
缓冲存储器216可以临时存储要存储在非易失性存储器220中的数据或从非易失性存储器220输出的数据。例如,缓冲存储器216可以临时存储从主机100下载的固件映像或从非易失性存储器220加载的固件映像。在示例实施例中,缓冲存储器216可以包括诸如动态随机存取存储器(DRAM)的易失性存储器。
如上所述,存储装置200可以基于第二公钥PKEY_C被首次存储在OTP存储器215中并且基于双签名固件映像被首次运行来改变签名验证状态,并且存储装置200可以将状态值存储在OTP存储器215中,使得可以实现免于返回到先前签名验证状态的保护。
图6A是图示了根据本公开的示例实施例的签名验证状态的表。图6B是图示了根据本公开的示例实施例的签名验证状态的图。图6A是图示了存储控制器的多个状态的图,并且图6B图示了存储控制器的有限状态机。
一起参考图6A和图6B,存储控制器的第一状态ST1可以是单签名验证状态,第二状态ST2可以是双签名验证就绪状态,并且第三状态ST3可以是双签名验证状态。
存储装置可以在被制造时(或者在被实现之前)具有单签名验证状态ST1。在单签名验证状态ST1下,存储装置可以仅验证被添加到固件映像(或者包括在固件映像中)的第一签名SIGN_V以对固件映像进行认证。另外,存储装置可以允许运行单签名固件映像(即,仅被添加有第一签名SIGN_V的固件映像)。
在单签名验证状态ST1下,存储装置可以不禁止更新或运行双签名固件映像。例如,基于存储装置在单签名验证状态下从主机接收到双签名固件映像,存储装置可以仅基于双签名固件映像中所包括的第一签名SIGN_V和第二签名SIGN_C中的第一签名SIGN_V被验证来完成对双签名固件映像的认证,并且存储装置可以更新或运行固件映像。
存储装置可以维持单签名验证状态ST1,直到存储装置由存储装置的制造商发货并且被传送到主机。在示例实施例中,客户可以通过向存储装置提供包括第二公钥PKEY_C和用于主机认证的签名的命令来将第二公钥PKEY_C输入到存储装置中。
处于单签名验证状态ST1的存储装置可以基于第二公钥PKEY_C被成功地输入来将签名验证状态从单签名验证状态ST1改变为双签名验证就绪状态ST2。在双签名验证就绪状态ST2下,存储装置可以验证被添加到固件映像(或者包括在固件映像中)的第一签名SIGN_V和第二签名SIGN_C两者以对固件映像进行认证。
在双签名验证就绪状态ST2下,存储装置可以不禁止更新或运行单签名固件映像。例如,即使在存储装置存储第二公钥PKEY_C之后,也可以允许运行现有单签名固件映像,直到双签名固件映像被更新和运行,并且也可以允许更新单签名固件映像。然而,当存储装置未能验证双签名固件映像的第二签名SIGN_C时,存储装置可以禁止更新或运行双签名固件映像。
当对双签名固件映像的更新完成并且固件映像被运行时,存储装置可以将签名验证状态从双签名验证就绪状态ST2改变为双签名验证状态ST3。在双签名验证状态ST3下,存储装置可以验证被添加到固件映像(或者包括在固件映像中)的第一签名SIGN_V和第二签名SIGN_C两者以对固件映像进行认证。
在双签名验证状态ST3下,存储装置可以禁止运行单签名固件映像。存储装置不可以从双签名验证状态ST3返回到双签名验证就绪状态ST2或单签名验证状态ST1。因此,一旦从有效客户获得的双签名固件映像被运行,存储装置就可以禁止运行不包括有效客户的签名的单签名固件映像。因此,可以改进存储装置的安全性。
图7A是图示了根据本公开的示例实施例的输入存储装置的第二公钥的方法的流程图。图7B是图示了根据本公开的示例实施例的输入存储装置的第二公钥的方法的图。
参考图7A,在操作S31中,存储控制器210可以从主机接收包括第二公钥PKEY_C和用于主机认证的签名SIGN_AUTH的存储命令SAVE_CMD。用于主机认证的签名SIGN_AUTH可以是用于第二公钥PKEY_C的签名,该签名可以是使用与在存储控制器210中运行的固件映像中所包括的用于主机认证的公钥PKEY_AUTH相对应的用于主机认证的私钥SKEY_AUTH来生成的。
存储控制器210可以在操作S32中用运行的固件映像中所包括的用于主机认证的公钥PKEY_AUTH来验证用于主机认证的签名SIGN_AUTH,并且可以在操作S33中确定用于主机认证的公钥PKEY_AUTH是否被成功地验证。
基于对用于主机认证的签名SIGN_AUTH的验证失败(在操作S33中为“否”),存储控制器210可以在操作S34中向主机100提供错误消息。例如,可以将错误消息作为对命令的响应来提供。
基于对用于主机认证的签名的验证成功(在操作S33中为“是”),存储控制器210可以在操作S35中将命令中所包括的第二公钥PKEY_C存储在OTP存储器215中。
在操作S36中,存储控制器210可以确定当前签名验证状态是否是单签名验证状态(例如,图6B的ST1)。在当前签名验证状态是单签名验证状态(在操作S36中为“是”)的情况下,存储控制器210可以在操作S37中将单签名验证状态切换到双签名就绪状态(例如,图6B的ST2)。在当前签名验证状态不是单签名验证状态(在操作S36中为“否”)的情况下,存储控制器210可以完成第二公钥PKEY_C的输入。
图7B图示了参考图5描述的存储控制器210中所包括的工作存储器214和OTP存储器215。
工作存储器214可以加载由存储控制器210运行的固件映像的至少一部分。加载到工作存储器214中的固件映像可以包括用于主机认证的公钥PKEY_AUTH。
OTP存储器215可以包括状态值区域2151、第一公钥区域2152、第二公钥区域2153和丢弃公钥区域2154。状态值区域2151可以存储参考图6A和图6B描述的存储装置200的状态值。第一公钥区域2152可以存储用于验证固件映像的第一签名的第一公钥PKEY_V。可以在存储装置200被制造时或者在被实现之前的时间存储第一公钥PKEY_V。第二公钥区域2153可以存储从主机输入的一个或更多个第二公钥PKEY_C1和PKEY_C2。第二公钥区域2153还可以存储每个第二公钥的索引Index1和Index2。丢弃公钥区域2154可以指示存储在第二公钥区域2153中的第二公钥当中的丢弃公钥。
从主机提供的存储命令SAVE_CMD可以包括一个或更多个第二公钥PKEY_C1和PKEY_C2以及一个或更多个客户公钥的用于主机认证的签名SIGN_AUTH。存储命令SAVE_CMD还可以包括关于要被存储的第二公钥的数目的信息。
如图7A中描述的,可以在操作S32中使用用于主机认证的公钥PKEY_AUTH来验证用于主机认证的签名SIGN_AUTH。基于通过签名验证完成了对存储命令SAVE_CMD的验证,在操作S35中,存储控制器210可以将包括在存储命令SAVE_CMD中的一个或更多个第二公钥PKEY_C1和PKEY_C2存储在OTP存储器215的第二公钥区域2153中。基于存储在状态值区域2151中的状态值指示单签名验证状态(例如,图6B的ST1),存储控制器210可以将状态值改变为双签名验证就绪状态(例如,图6B的ST2)。
图7B图示了存储控制器210在OTP存储器215中以明文存储第二公钥PKEY_C1和PKEY_C2的示例,但是其示例实施例不限于此。例如,存储控制器210可以通过对一个或更多个第二公钥PKEY_C1和PKEY_C2中的每一者执行散列运算来生成一个或更多个摘要,并且将该一个或更多个摘要存储在OTP存储器215中。当存储控制器210存储第二公钥的摘要而不是第二公钥PKEY_C1和PKEY_C2时,可以节约OTP存储器215的存储容量。将稍后参考图9C描述当存储控制器210存储第二公钥的摘要时验证双签名固件映像的第二签名的方法。
在示例实施例中,存储控制器210可以通过使用由有效厂商生成的固件映像中所包括的用于主机认证的公钥PKEY_AUTH来对第二公钥PKEY_C进行认证,来仅将从有效客户接收到的第二公钥PKEY_C存储在OTP存储器215中。因此,存储控制器210可以防止攻击者输入他们自己的公钥,并且因此可以防止运行由攻击者改变的固件映像。
存储控制器210可以进一步提供丢弃存储在OTP存储器215中的第二公钥PKEY_C的方法。
图8A是图示了根据本公开的示例实施例的删除存储装置的第二公钥的方法的流程图。图8B是图示了根据本公开的示例实施例的删除存储装置的第二公钥的方法的图。
参考图8A,存储控制器210可以在操作S41中从主机接收包括要丢弃的第二公钥PKEY_C和用于主机认证的签名SIGN_AUTH的撤销命令REVOKE_CMD。
存储控制器210可以在操作S42中使用运行的固件映像中所包括的用于主机认证的公钥PKEY_AUTH来验证用于主机认证的签名SIGN_AUTH,并且可以在操作S43中确定验证是否成功。
基于对用于主机认证的签名SIGN_AUTH的验证失败(在操作S43中为“否”),存储控制器210可以在操作S44中向主机100提供错误消息。例如,可以将错误消息作为对撤销命令REVOKE_CMD的响应来提供。
基于用于主机认证的签名SIGN_AUTH验证成功(在操作S43中为“是”),存储控制器210可以在操作S45中丢弃撤销命令中所包括的第二公钥PKEY_C。
图8B图示了存储控制器210中所包括的工作存储器214和OTP存储器215。工作存储器214和OTP存储器215可以对应于参考图7B描述的示例。
由主机提供的撤销命令REVOKE_CMD可以包括要丢弃的第二公钥PKEY_C以及用于要丢弃的第二公钥PKEY_C的用于主机认证的签名SIGN_AUTH。
如图8A中描述的,在操作S42中,可以使用用于主机认证的公钥PKEY_AUTH来验证撤销命令REVOKE_CMD中所包括的用于主机认证的签名SIGN_AUTH。
基于通过签名验证完成了对撤销命令REVOKE_CMD的验证,在操作S45中,存储控制器210可以丢弃存储在OTP存储器215的第二公钥区域2153中的第二公钥PKEY_C1和PKEY_C2当中的、撤销命令REVOKE_CMD中所包括的第二公钥PKEY_C1。
存储控制器210可以通过在OTP存储器215的丢弃公钥区域2154中记录要丢弃的第二公钥PKEY_C的标识符(例如,索引值)来指示第二公钥PKEY_C1已经被丢弃。存储控制器210可以维持存储在第二公钥区域2153中的第二公钥PKEY_C1,并且可以通过用诸如“1”的虚设值覆写存储有第二公钥PKEY_C1的区域的位值的全体来以物理方式丢弃第二公钥PKEY_C1。
在示例实施例中,存储控制器210可以通过仅运行使用用于主机认证的公钥PKEY_AUTH认证了的撤销命令REVOKE_CMD来防止攻击者任意地丢弃第二公钥PKEY_C。
存储控制器210可以使用响应于来自主机的存储命令SAVE_CMD而输入的第二公钥PKEY_C来对双签名固件映像进行认证,并且只有当固件映像被认证时才可以更新或运行固件。在下文中,将参考图9A至图12描述根据示例实施例的更新固件的方法和运行固件的方法。具体地,图9A至图10B描述了当存储装置处于双签名验证就绪状态(例如,图6B的ST2)时的更新固件的方法和运行固件的方法,并且图11和图12图示了当存储装置处于双签名验证状态(例如,图6B的ST3)时的更新固件的方法和运行固件的方法。
图9A是图示了根据本公开的示例实施例的在双签名验证就绪状态下更新存储装置的固件的方法的流程图。图9B和图9C是图示了根据本公开的示例实施例的在双签名验证就绪状态下更新存储装置的固件的方法的图。
参考图9A,在操作S51中,存储控制器210可以从主机100下载固件。例如,主机100可以向存储控制器210提供包括单签名固件映像或双签名固件映像的固件下载命令。存储控制器210可以在缓冲存储器216中缓冲固件下载命令中所包括的固件映像。
在操作S52中,存储控制器210可以从主机100接收固件更新命令。固件更新命令也可以被称为固件提交命令(firmware commit command)。
存储控制器210可以在操作S53中使用第一公钥PKEY_V来验证被添加到在缓冲存储器216中加载的固件映像的第一签名SIGN_V,并且可以在操作S54中确定验证是否成功。
基于对第一签名SIGN_V的验证失败(在操作S54中为“否”),存储控制器210可以在操作S55中向主机100提供错误消息。例如,可以将错误消息作为对固件更新命令的响应来提供。
基于对第一签名SIGN_V的验证成功(在操作S54中为“是”),存储控制器210可以在操作S56中确定第二签名是否被添加到固件映像(或者包括在固件映像中)。
当第二签名未被添加到固件映像(或者未包括在固件映像中)(在操作S56中为“否”)时,固件映像可以是单签名固件映像。在双签名验证准备的操作中,存储控制器210可以完成对成功地验证了第一签名SIGN_V的单签名固件映像的认证,并且可以执行操作S59。在操作S59中,存储控制器210可以通过将在缓冲存储器216中加载的固件映像存储在非易失性存储器220中来完成固件更新。另外,存储控制器210可以触发存储装置200的复位。
基于第二签名被添加到固件映像(或者包括在固件映像中)(在操作S56中为“是”),存储控制器210可以在操作S57中使用第二公钥PKEY_C来验证被添加到固件(或者包括在固件中)的第二签名SIGN_C,并且可以在操作S58中确定验证是否成功。第二公钥PKEY_C可以是响应于参考图7A描述的存储命令SAVE_CMD而存储在OTP存储器215中的公钥,并且可以是从有效客户获得的公钥。
基于对第二签名的验证失败(在操作S58中为“否”),存储控制器210可以执行操作S55。也就是说,在双签名验证就绪状态(例如,图6B的ST2)下,存储控制器210可以允许基于不包括第二签名的固件映像进行固件更新,但是可以禁止基于包括不正确的第二签名的固件映像进行固件更新。
在对第二签名的验证成功(在操作S58中为“是”)的情况下,存储控制器210可以完成对固件映像的认证并且可以执行操作S59。
图9B图示了如参考图5所描述的存储控制器210和非易失性存储器220。图9B中图示的工作存储器214、OTP存储器215和缓冲存储器216可以对应于参考图5描述的示例。
工作存储器214中的固件映像FW可以指示当前正在存储控制器210中运行的固件的映像。存储控制器210可以通过运行与固件映像FW相对应的固件来执行固件下载和固件更新。
如参考图9A所描述的,在操作S51中,缓冲存储器216可以缓冲响应于固件下载命令从主机100接收到的更新固件映像FW_NEW。存储控制器210可以在操作S52中接收固件更新命令UPDATE_CMD,并且可以在操作S53中使用存储在OTP存储器215中的第一公钥PKEY_V来验证被添加到更新固件映像FW_NEW(或者包括在更新固件映像FW_NEW中)的第一签名SIGN_V。
基于第二签名SIGN_C被进一步添加到更新固件映像FW_NEW(或者包括在更新固件映像FW_NEW中),存储控制器210可以在操作S57中使用对应的第二公钥PKEY_C2来验证第二签名SIGN_C。第二签名SIGN_C还可以包括诸如索引Index2的标识符以指示第二签名SIGN_C对应于哪个第二公钥。基于对第二签名SIGN_C的验证完成,存储控制器210可以将更新固件映像FW_NEW、第一签名SIGN_V和第二签名SIGN_C存储在非易失性存储器220中。
如参考图7B所描述的,存储控制器210可以在OTP存储器215中存储第二公钥的摘要而不是以明文存储第二公钥。由于第二公钥的摘要可以是使用散列函数获得的,所以可能难以使用摘要来恢复第二公钥。图9C图示了当第二公钥的摘要被存储在OTP存储器215中时由存储控制器210对被添加到固件映像(或者包括在固件映像中)的第二签名进行认证的方法。
图9C中图示的存储控制器210和非易失性存储器220可以对应于参考图9B描述的示例。在下文中,将集中于与图9B中的示例的不同之处来描述图9C中的示例。
参考图9C,OTP存储器215的第二公钥区域2153可以存储第二公钥的摘要DIG_PKEY_C2。缓冲存储器216可以缓冲被添加有第一签名SIGN_V、第二签名SIGN_C、以及用于验证第二签名SIGN_C的第二公钥PKEY_C2的更新固件映像FW_NEW。
存储控制器210可以生成被添加到更新固件映像FW_NEW(或者包括在更新固件映像FW_NEW中)的第二公钥PKEY_C2的摘要,并且可以将所生成的摘要与存储在OTP存储器215中的摘要进行比较,从而确定第二公钥PKEY_C2是否是由有效客户添加的公钥。
基于第二公钥PKEY_C2是从有效客户添加的公钥,存储控制器210可以通过用第二公钥PKEY_C2验证第二签名SIGN_C来对更新固件映像FW_NEW进行认证。基于对更新固件映像FW_NEW的认证完成,存储控制器210可以将更新固件映像FW_NEW存储在非易失性存储器220中。
如参考图9A所描述的,存储控制器210可以将更新固件映像FW_NEW存储在非易失性存储器220中,并且可以触发存储装置200的复位。可以响应于复位触发来重新启动存储装置200,并且存储控制器210可以运行更新后的固件。
图10A是图示了根据本公开的示例实施例的在双签名验证就绪状态下运行存储装置的固件的方法的流程图。图10B是图示了根据本公开的示例实施例的在双签名验证就绪状态下运行存储装置的固件的方法的图。
参考图10A,可以响应于存储装置200的复位来开始根据示例实施例的运行固件的方法。例如,可以响应于通电复位(POR)来发起运行固件的方法,或者可以响应于参考图9A描述的复位触发来开始运行固件的方法。
在操作S61中,存储控制器210可以将存储在非易失性存储器220中的固件映像加载到缓冲存储器216中。例如,固件映像可以包括响应于固件更新命令而存储在非易失性存储器件(例如,存储装置200)中的固件映像。
存储控制器210可以在操作S62中用存储在OTP存储器215中的第一公钥PKEY_V来验证被添加到固件映像(或者包括在固件映像中)的第一签名SIGN_V,并且可以在操作S63中确定验证是否成功。
基于对第一签名SIGN_V的验证失败(在操作S63中为“否”),存储控制器210可以在操作S64中向主机提供错误消息。错误消息可以是指示存储装置200的启动失败的消息。
在对第一签名SIGN_V的验证成功(在操作S63中为“是”)的情况下,存储控制器210可以在操作S65中确定第二签名是否被添加到固件映像(或者包括在固件映像中)。
当第二签名未被添加到固件映像(或者未包括在固件映像中)(在操作S65中为“否”)时,固件映像可以是单签名固件映像。在双签名验证就绪状态(例如,图6B的ST2)下,存储控制器210可以允许在操作S71中运行与单签名固件映像相对应的固件。
基于第二签名被添加到固件映像(或者包括在固件映像中)(在操作S65中为“是”),存储控制器210可以在操作S66中确定第二签名是否是与丢弃的第二公钥相关的签名。例如,固件映像可以包括指示与第二签名相对应的第二公钥的标识符,并且存储控制器210可以通过在丢弃公钥区域2154中查找标识符来确定第二签名是否是与丢弃的第二公钥相关的签名。
基于第二签名是与丢弃的第二公钥相关的签名(在操作S66中为“是”),存储控制器210可以执行操作S64。在第二签名不是与丢弃的第二公钥相关的签名(在操作S66中为“否”)的情况下,存储控制器210可以在操作S67中使用第二公钥来验证被添加到固件映像(或者包括在固件映像中)的第二签名,并且可以在操作S68中确定验证是否成功。
基于对第二签名的验证失败(在操作S68中为“否”),存储控制器210可以执行操作S64。在对第二签名的验证成功(在操作S68中为“是”)的情况下,存储控制器210可以在操作S69中将固件映像的至少一部分加载到工作存储器214中,并且可以运行与固件映像相对应的固件。
基于对第二签名的验证成功,加载到缓冲存储器216中的固件映像可以是双签名固件映像。当在操作S69中运行双签名固件时,存储控制器210可以在操作S70中将双签名验证就绪状态(例如,图6B的ST2)改变为双签名验证状态(例如,图6B的ST3)。
图10B示出了参考图5描述的存储控制器210和非易失性存储器220。存储控制器210可以包括工作存储器214、OTP存储器215和缓冲存储器216。
如参考图10A所描述的,可以在操作S61中将存储在非易失性存储器220中的固件映像FW_NEW加载到缓冲存储器216中。例如,存储控制器210可以通过运行存储在存储控制器210中所包括的启动只读存储器(ROM)中的启动加载程序来加载固件映像FW_NEW。
在操作S62中,可以使用存储在OTP存储器215中的第一公钥PKEY_V来验证被添加到在缓冲存储器216中加载的固件映像FW_NEW(或者包括在缓冲存储器216中加载的固件映像FW_NEW中)的第一签名SIGN_V。基于与未丢弃的第二公钥PKEY_C2相关的第二签名SIGN_C被添加到固件映像FW_NEW(或者包括在固件映像FW_NEW中),可以在操作S67中通过第二公钥PKEY_C2来验证第二签名SIGN_C。
基于被添加到固件映像FW_NEW(或者包括在固件映像FW_NEW中)的第一签名SIGN_V和第二签名SIGN_C都被验证,存储控制器210可以将固件映像FW_NEW的至少一部分加载到工作存储器214中并且可以运行固件。存储控制器210可以通过将存储在OTP存储器215的状态值区域2151中的状态值从第二状态改变为第三状态,来将双签名验证就绪状态(例如,图6B的ST2)改变为双签名验证状态(例如,图6B的ST3)。
在示例实施例中,存储控制器210可以通过一旦与双签名固件映像相对应的固件被运行就将双签名验证就绪状态(例如,图6B的ST2)改变为双签名验证状态(例如,图6B的ST3)来防止运行单签名固件映像。因此,可以改进存储控制器210的安全性。
在双签名验证状态(例如,图6B的ST3)下的更新固件的方法和运行固件的方法可以类似于在双签名验证就绪状态(例如,图6B的ST2)下的更新固件的方法和运行固件的方法,但是可能存在不同之处的原因在于对单签名固件映像的认证是不被允许的。在下文中,将参考图11和图12集中于上述不同之处来描述存储装置200在双签名验证状态(例如,图6B的ST3)下的更新固件的方法和运行固件的方法。
图11是图示了根据本公开的示例实施例的在双签名验证状态下更新存储装置的固件的方法的流程图。
操作S81至操作S85可以类似于参考图9A描述的操作S51至操作S55,并且可以省略重复描述。
在操作S86中,存储控制器210可以确定第二签名是否被添加到供应商签名被验证了的固件映像(或者包括在供应商签名被验证了的固件映像中)。当第二签名未被添加到固件映像(或者未包括在固件映像中)(在操作S86中为“否”)时,存储控制器210可以在操作S85中向主机100提供错误消息。也就是说,在双签名验证状态(例如,图6B的ST3)下,存储控制器210可以禁止更新与单签名固件映像相对应的固件。
基于第二签名被添加到固件映像(或者包括在固件映像中)(在操作S86中为“是”),存储控制器210可以执行操作S87至操作S89。操作S87至操作S89可以类似于参考图9A描述的操作S57至操作S59。
图12是图示了根据本公开的示例实施例的在双签名验证状态下运行存储装置的固件的方法的流程图。
操作S91至操作S94可以类似于参考图10A描述的操作S61至操作S64,并且可以省略重复描述。
在操作S95中,存储控制器210可以确定第二签名是否被添加到供应商签名被验证了的固件映像(或者包括在供应商签名被验证了的固件映像中)。当第二签名未被添加到固件映像(或者未包括在固件映像中)(在操作S95中为“否”)时,存储控制器210可以在操作S94中向主机100提供错误消息。也就是说,在双签名验证状态(例如,图6B的ST3)下,存储控制器210可以禁止运行与单签名固件映像相对应的固件。
基于第二签名被添加到固件映像(或者包括在固件映像中)(在操作S95中为“是”),存储控制器210可以执行操作S96至操作S99。操作S96至操作S99可以类似于参考图10A描述的操作S66至操作S69。
在示例实施例中,存储装置200可以在单签名验证状态(例如,图6B的ST1)下被发货,并且存储装置200可以响应于使用利用厂商公钥认证的固件映像中所包括的用于客户认证的公钥而认证的命令来将客户公钥存储在OTP存储器中。存储装置200可以在最初将客户公钥存储在OTP中之后,将单签名验证状态(例如,图6B的ST1)切换到双签名验证就绪状态(例如,图6B的ST2),并且可以响应于固件更新命令来尝试固件映像的双签名验证。存储装置200可以在首次运行双签名固件之后,将双签名验证就绪状态(例如,图6B的ST2)切换到双签名验证状态(例如,图6B的ST3)。在示例实施例中,可以改进存储装置200的通用性和安全性,并且可以改进主机100将客户公钥输入到存储装置200中的方便性。
根据示例实施例,存储控制器可以支持主机在没有固件厂商的干预的情况下输入用于对被添加有主机签名的固件映像进行认证的主机公钥。
存储控制器可以使用由有效主机输入的主机公钥来认证被添加有主机签名的固件映像,使得可以改进安全性。
存储控制器可以在发货时仅验证固件映像中的固件厂商的单签名,并且可以响应于输入了主机公钥来切换以验证固件映像中的固件厂商和主机的双签名,从而改进通用性和安全性。
在提供固件映像的方法中,主机可以生成可以由存储控制器在没有固件厂商的干预的情况下验证的双签名固件,并且可以将所生成的固件提供给存储装置。
如本领域中传统的那样,可以按执行一个或多个描述的功能的块来描述和图示实施例。在本文中可以被称为单元或模块等的这些块由诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等的模拟电路和/或数字电路以物理方式实现,并且可以可选地由固件和/或软件驱动。例如,电路可以被实现在一个或更多个半导体芯片中,或者可以被实现在诸如印刷电路板等的基板支撑件上。构成块的电路可以由专用硬件来实现,或者可以由处理器(例如,一个或更多个编程微处理器和相关电路)来实现,或者可以由用于执行块的一些功能的专用硬件和用于执行块的其他功能的处理器的组合来实现。在不背离本公开的范围的情况下,实施例的每个块可以被以物理方式分成两个或更多个相互作用的且分立的块。同样地,在不背离本公开的范围的情况下,实施例的块可以被以物理方式组合成更复杂的块。可以通过存储在非暂时性存储介质中并且由处理器运行的指令来实现实施例的一个方面。
不排除上述描述中提供的每一个实施例与本文另外提供的或本文未提供的但与本公开一致的另一示例或另一实施例的一个或更多个特征相关联。
虽然已经参考本公开的实施例具体示出和描述了本公开,但是将理解,在不背离所附权利要求的精神和范围的情况下,可以在其中做出形式和细节上的各种改变。

Claims (20)

1.一种存储控制器,所述存储控制器被配置为控制非易失性存储器并且包括:
OTP存储器,所述OTP存储器被配置为存储第一公钥,所述OTP存储器即一次性可编程存储器;以及
处理器,所述处理器被配置为,基于被添加到包括主机认证公钥的固件映像的第一签名使用所述第一公钥被验证,来:
接收包括至少一个第二公钥和用于所述至少一个第二公钥的第一主机认证签名的存储命令,并且
基于所述第一主机认证签名使用所述主机认证公钥被验证,将所述至少一个第二公钥存储在所述OTP存储器中。
2.根据权利要求1所述的存储控制器,其中,所述处理器还被配置为:在将所述至少一个第二公钥存储在所述OTP存储器中之后,将指示双签名验证就绪状态的状态值存储在所述OTP存储器中。
3.根据权利要求2所述的存储控制器,其中,所述处理器还被配置为:在所述双签名验证就绪状态下,基于被添加到更新固件映像的所述第一签名使用所述第一公钥被验证,在第二签名未被添加到所述更新固件映像的情况下允许更新或运行与所述更新固件映像相对应的固件。
4.根据权利要求2所述的存储控制器,其中,所述处理器还被配置为:在所述双签名验证就绪状态下,基于对被添加到更新固件映像的第二签名的验证失败,禁止更新或运行与所述更新固件映像相对应的固件。
5.根据权利要求1所述的存储控制器,所述存储控制器还包括缓冲存储器,所述缓冲存储器被配置为缓冲从主机接收到的更新固件映像,
其中,所述处理器还被配置为:
使用所述第一公钥来验证被添加到所述更新固件映像的所述第一签名,
使用所述至少一个第二公钥中的一个第二公钥来验证被添加到所述更新固件映像的第二签名,以及
基于对所述第一签名的验证和对所述第二签名的验证完成,控制所述非易失性存储器存储所述更新固件映像。
6.根据权利要求5所述的存储控制器,其中,所述处理器还被配置为:
基于所述更新固件映像被存储在所述非易失性存储器中,触发所述存储控制器的复位,
响应于触发所述复位,将所述更新固件映像从所述非易失性存储器加载到所述缓冲存储器中,
基于对被添加到加载到所述缓冲存储器中的所述更新固件映像的所述第一签名的验证和所述第二签名的验证完成,运行与所述更新固件映像相对应的固件,以及
将指示双签名验证状态的状态值存储在所述OTP存储器中。
7.根据权利要求6所述的存储控制器,其中,所述处理器还被配置为:在所述双签名验证状态下,基于被添加到所述更新固件映像的所述第一签名使用所述第一公钥被验证而所述第二签名未被添加到所述更新固件映像,禁止更新或运行与所述更新固件映像相对应的固件。
8.根据权利要求1所述的存储控制器,其中,所述处理器还被配置为:
接收包括要丢弃的第三公钥和用于所述要丢弃的第三公钥的第二主机认证签名的撤销命令,所述至少一个第二公钥包括所述第三公钥,并且
基于所述第二主机认证签名使用所述主机认证公钥被验证,丢弃所述第三公钥。
9.根据权利要求8所述的存储控制器,其中,所述处理器还被配置为:将所丢弃的第三公钥的标识符存储在所述OTP存储器中。
10.根据权利要求9所述的存储控制器,其中,所述处理器进一步被配置为:通过在所述OTP存储器的用于存储所述要丢弃的第三公钥的区域中覆写虚设数据,来丢弃所述要丢弃的第三公钥。
11.根据权利要求1所述的存储控制器,其中,所述第一公钥包括由固件厂商生成的公钥。
12.一种存储控制器,所述存储控制器被配置为控制非易失性存储器并且包括:
OTP存储器,所述OTP存储器被配置为存储第一公钥和第二公钥,所述OTP存储器即一次性可编程存储器;
缓冲存储器,所述缓冲存储器被配置为缓冲从主机接收到的更新固件映像;以及
处理器,所述处理器被配置为:
使用所述第一公钥和所述第二公钥来对所述更新固件映像进行认证,以及
基于所述认证完成,控制所述非易失性存储器存储所述更新固件映像,
其中,所述第二公钥使用现有固件映像中所包括的主机认证公钥被认证,并且
其中,所述现有固件映像包括使用至少所述第一公钥认证了的固件映像。
13.根据权利要求12所述的存储控制器,其中,当所述存储控制器被制造时,所述第一公钥被存储在所述OTP存储器中。
14.根据权利要求12所述的存储控制器,其中,所述处理器还被配置为:响应于包括所述第二公钥和用于所述第二公钥的主机认证签名的存储命令,将所述第二公钥存储在所述OTP存储器中。
15.根据权利要求12所述的存储控制器,其中,所述OTP存储器包括被配置为存储签名验证状态值的区域,并且
其中,所述处理器还被配置为:响应于使用所述第一公钥和所述第二公钥认证了的所述更新固件映像的首次运行,更新所述签名验证状态值。
16.一种向存储装置提供双签名固件映像的方法,所述方法包括:
生成包括用于客户认证的第一公钥和用于客户认证的第一私钥的第一密钥对;
向固件厂商提供所述用于客户认证的第一公钥;
生成包括客户公钥和客户私钥的第二密钥对;
使用所述用于客户认证的第一私钥来为所述客户公钥生成客户认证签名;
向所述存储装置提供包括所述客户公钥和所述客户认证签名的存储命令;
获得第一固件映像,所述第一固件映像包括用于客户认证的第二公钥和由所述固件厂商添加到所述第一固件映像的厂商签名;
使用所述客户私钥来向所述第一固件映像添加第一客户签名;以及
向所述存储装置提供被添加有所述厂商签名和所述第一客户签名的所述第一固件映像。
17.根据权利要求16所述的方法,其中,向所述第一固件映像添加所述第一客户签名包括:
为所述第一固件映像生成摘要;以及
使用所述客户私钥来针对所述摘要生成所述第一客户签名。
18.根据权利要求16所述的方法,其中,向所述第一固件映像添加所述第一客户签名包括:
为所述第一固件映像和所述厂商签名生成摘要;以及
使用所述客户私钥来针对所述摘要生成所述第一客户签名。
19.根据权利要求16所述的方法,其中,使用所述客户私钥来向所述第一固件映像添加所述第一客户签名包括:通过对从所述固件厂商获得的第二固件映像执行安全性审查来验证所述第一固件映像。
20.根据权利要求16所述的方法,其中,在硬件安全模块中执行以下操作:生成包括所述用于客户认证的第一公钥和所述用于客户认证的第一私钥的所述第一密钥对,以及生成包括所述客户公钥和所述客户私钥的所述第二密钥对。
CN202311459110.XA 2022-11-04 2023-11-03 存储控制器和提供固件映像的方法 Pending CN117997544A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2022-0146292 2022-11-04
KR10-2023-0015881 2023-02-07
KR1020230015881A KR20240064493A (ko) 2022-11-04 2023-02-07 스토리지 컨트롤러 및 펌웨어 이미지 제공 방법

Publications (1)

Publication Number Publication Date
CN117997544A true CN117997544A (zh) 2024-05-07

Family

ID=90890100

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311459110.XA Pending CN117997544A (zh) 2022-11-04 2023-11-03 存储控制器和提供固件映像的方法

Country Status (1)

Country Link
CN (1) CN117997544A (zh)

Similar Documents

Publication Publication Date Title
CN111030822B (zh) 用于保护固件的方法和系统,以及计算机可读介质
CN109445705B (zh) 固件认证方法及固态硬盘
US11783044B2 (en) Endpoint authentication based on boot-time binding of multiple components
US20240146525A1 (en) Batch Transfer of Control of Memory Devices over Computer Networks
US20220021544A1 (en) Secure Serial Peripheral Interface (SPI) Flash
US20230273977A1 (en) Managing ownership of an electronic device
US10461926B2 (en) Cryptographic evidence of persisted capabilities
WO2023212178A1 (en) Sram physically unclonable function (puf) memory for generating keys based on device owner
US20240152284A1 (en) Storage controller and method of providing firmware image
CN117997544A (zh) 存储控制器和提供固件映像的方法
US20220231858A1 (en) Control of Memory Devices over Computer Networks
US20220231838A1 (en) Server System to Control Memory Devices over Computer Networks
JP2024507531A (ja) デジタルデバイスのためのトラステッドコンピューティング
JP2023525896A (ja) デジタル情報をセキュアに処理するためのセキュアエレメント
KR20240064493A (ko) 스토리지 컨트롤러 및 펌웨어 이미지 제공 방법
US20230222219A1 (en) Storage controller, storage system, and method of operating storage device
US20240152620A1 (en) Owner revocation emulation container
US20230351056A1 (en) Sram physically unclonable function (puf) memory for generating keys based on device owner
US20240078316A1 (en) Secure booting system and operation method thereof
WO2023164227A1 (en) Managing ownership of an electronic device
US11677560B2 (en) Utilization of a memory device as security token
WO2024097428A1 (en) Owner revocation emulation container
US20240078315A1 (en) Secure booting system and operation method thereof
CN116244754A (zh) 计算机目标对象验证方法、装置、存储介质和相关装置
CN118020071A (zh) 管理电子设备的所有权

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication