1.本发明总体上涉及计算机系统,尤其涉及用于处理计算机非易失性存储器中的数据存储的方法和系统。
背景技术:
2.计算机系统通常包括非易失性存储器(nvm),例如用于数据存储的闪存。在以相对较低的成本提供大存储区域时,闪存具有固有的局限性,包括以块为单位进行擦除、有限的擦除/编程周期和易受安全攻击的脆弱性。
3.pct国际公开wo 2014/123372描述了一种闪存转换层(ftl)设计框架,其具有用于数据、映射和检查点的日志,支持错误恢复,包括用于处理数据的第一日志;用于处理映射信息的第二日志;用于处理检查点信息的第三日志,其中第一日志和第二日志可以通过使用检查点信息恢复错误。
4.美国专利8,589,700描述了用于对存储在非易失性存储器中的数据进行白化、加密和管理的系统和方法,包括片上系统(soc)和非易失性存储器,其中soc包括soc控制电路和存储器接口,其充当soc控制电路和非易失性存储器之间的接口;soc还可以包括加密模块;存储器接口可以指示加密模块在存储到非易失性存储器之前对所有类型的数据进行白化,包括敏感数据、非敏感数据和存储器管理数据。
技术实现要素:
5.本发明将通过以下对其实施方式的详细描述并结合附图而得到更全面的理解,其中:
附图说明
6.图1a是示意性地示出了根据本发明实施方式的安全闪存控制器的框图;
7.图1b是示意性地示出了根据本发明另一实施方式的安全闪存控制器的框图;
8.图2是示意性地示出了根据本发明实施方式的类型长度值(tlv)记录的结构的图;
9.图3是示意性地示出了根据本发明实施方式的在ram中构建tlv描述符表的方法的流程图;以及
10.图4是示意性地示出了根据本发明实施方式的读取、编程和使闪存中的tlv记录无效的方法的流程图。
具体实施方式
11.概述
12.将也被称为计算设备的计算机系统通常包括处理器(例如,中央处理单元(cpu)、图形处理单元(gpu)或微控制器计算机(mcu))、主存储器(例如,随机存取存储器(ram)),并且通常是非易失性存储器(nvm)二级存储器,通常用于存储程序代码(例如,固件)和数据记
录。以相对较低的成本提供大的非易失性存储区域的流行的nvm类型是闪存。然而,闪存在访问、老化和易受安全攻击方面存在一些固有的局限性。
13.处理器(例如,中央处理单元(cpu)或闪存控制器)对闪存的访问在读取与写入方面是非对称的,并且在写入方面,在写入逻辑0与写入逻辑1方面是串行的并且相对较快,但写入(称为编程和擦除)要慢得多。在典型的闪存设备中,虽然任何位都可以单独编程为第一二进制值(例如,逻辑0),但必须在更大的存储器块上完成对第二二进制值(例如,逻辑1)的编程,这被称为作为页面(使用第二二进制值编程页面称为擦除页面)。因此,要在闪存中编程页面,处理器通常首先擦除页面,然后编程所需的数据。
14.要更改闪存中页面的一部分,处理器通常将页面复制到随机存取存储器(ram),修改要编程的部分,擦除页面,然后从ram中重新编程擦除的页面。
15.老化(也称为“磨损”)通常定义为
–
闪存单元可以可靠地编程/擦除的次数(“p/e周期”)。典型的限制可能是100,000次p/e周期。如果同一页被重复编程和擦除,尽管其他页的p/e周期计数可能很低,但该页的生命周期可能会终止(因此,闪存设备被视为不起作用)。当一个或多个闪存页面接近p/e周期限制时,闪存设备的可靠性会严重下降。
16.易受安全攻击。一旦电源中断,ram通常会失去存储空间,因此不易受到安全攻击;相反,闪存可以在系统关闭时读取和/或写入;特别是,计算机系统外部的闪存(例如,通过通用串行总线(usb)连接器插入计算机系统的闪存设备)必须受到加密技术的保护,其可能包括加密和/或身份验证。
17.为了减轻访问和老化的限制,闪存数据可以存储在类型长度值(tlv)记录中,其中类型通常包括tlv状态指示字段和数据类型,长度是tlv记录的长度,并且值是tlv数据(“数据值”)。指示字段允许添加多个新记录以及使用编程操作使过时记录无效,从而最小化擦除周期的数量。
18.为了提供安全性,处理器可以在编程之前加密tlv记录。但是,当tlv记录被加密时,上述机制可能会失效,因为数据加密会增加加密数据的熵,并且可能会改变所有位。
19.根据本发明的实施方式提供了方法和系统,其中数据在存储在闪存中时被安全地加密,并且仍然保持tlv记录结构,减少擦除周期的数量,并因此延长闪存设备的寿命和可靠性。
20.在所公开的实施方式中,每个tlv记录包括一个或多个加密字段和一个或多个非加密字段。在实施方式中,tlv记录的敏感字段可以被加密,而不敏感字段可以不加密存储(将被称为“明文字段”;非加密的数据将被称为“明文”,存储在“明文字段”中)。在实施方式中,加密字段包括数据值和数据类型,而明文字段包括指示字段、长度以及有时包括一些属性。
21.特别是,处理器通常不加密指示tlv记录是有效还是无效的位。使用这种格式时,处理器能够使过时的tlv记录无效,并验证tlv记录的有效性,使用传统的闪存操作并且无需解密信息。更一般地,在将元数据保持为明文时加密数据有助于简化处理器的管理任务。
22.因此,所公开的技术通过减少擦除周期的数量来延长闪存设备的寿命,同时保持关键数据保护。由于执行加密和解密操作较少,因此可以提高存储吞吐量和延迟,并降低功耗。
23.系统描述
24.图1a是示意性地示出了根据本发明实施方式的安全闪存控制器100的框图。有时被称为计算设备的闪存控制器100包括处理器102(例如,cpu、gpu或mcu);随机存取存储器(ram)104,其被配置为临时存储数据和/或程序代码;以及闪存接口108。闪存接口108被配置为与诸如闪存的非易失性存储器106通信,该非易失性存储器106存储数据记录。
25.根据图1a所示的示例实施方式,处理器102通过闪存接口电路108与闪存106通信;在一些实施方式中,闪存106仅支持原子操作,并且闪存接口108可用于将闪存擦除、编程和读取操作转换为原子闪存操作(例如,处理器闪存编程操作可由闪存控制电路转换为对处理器透明的一系列程序和验证操作)。
26.图右手侧的闪存存储映射114示出了闪存106中tlv记录的结构。每个tlv记录116包括一个或多个非加密的明文字段118,以及一个或多个加密数据字段120。使用例如高级加密标准(aes)256,加密数据字段在写入时被加密,在读取时被解密。在实施方式中,明文字段存储不敏感数据,而加密字段存储敏感数据。
27.为了快速和安全的加密和/或解密,闪存控制器100还可以包括加密/解密电路130;处理器向加密/解密电路发送明文数据和密钥,加密/解密电路对明文数据进行加密并将加密后的数据发送回处理器;为了解密,处理器发送加密数据和密钥,并接收明文数据。
28.图1b是示意性地示出了根据本发明另一实施方式的安全闪存控制器100b的框图。图1b所示的示例实施方式类似于图1a所示的示例实施方式,不同之处在于加密/解密电路放置在处理器和闪存接口之间;在闪存控制器100b中,加密/解密仅在加密和明文数据之间进行转换。
29.因此,根据图1所示的示例实施方式,闪存中的tlv记录的敏感字段被加密保护,而非敏感字段,包括指示字段,以明文形式保留,允许减少擦除周期的数量,从而提高可靠性。
30.应当理解,闪存控制器100及其组件的配置以及图1中所示的tlv记录116是纯粹为了概念清楚而示出的示例配置。在替代实施方式中可以使用任何其他合适的配置。例如,在一些替代实施方式中,可以使用多个处理器和/或多个ram;在实施方式中,处理器102使用软件加密和/或解密,减少加密/解密电路130的功能,或者完全消除加密/解密电路。
31.在实施方式中,加密/解密电路130、ram 104和闪存接口108之间的数据传输可以使用例如直接存储器访问(dma)或任何其他协议直接通过共享总线完成。
32.在其他实施方式中,数据加密/解密包括认证,其可以使用附加电路、使用加密/解密电路或使用软件来执行。
33.包括其所有组件的闪存控制器100的不同元件可以使用合适的硬件来实现,例如在专用集成电路(asic)或现场可编程门阵列(fpga)中,使用软件,或使用硬件和软件元件的组合。
34.在一些实施方式中,处理器102包括通用可编程处理器,其在软件中编程以执行本文所述的功能。软件可以通过例如网络以电子形式下载到处理器,或者它可以替代地或附加地被提供和/或存储在非暂时性有形介质上,例如磁、光或电子存储器。
35.图2是根据本发明的实施方式示意性地示出tlv记录116的结构的图。tlv记录(116,图1)包括明文字段118和加密字段120。根据图2所示的示例实施方式,非加密的明文字段118包括无效指示字段200、编程指示字段202(无效指示字段200和编程指示字段202通常均包括一位)、可用于存储记录属性的杂项属性字段204和指示tlv记录长度的长度字段
206(例如,以32位字)。(在一些实施方式中,明文字段被最小化,并且不使用杂项属性字段204。)
36.加密字段120包括可用于定义数据类型(例如,代码、表等)的类型字段208和包括tlv记录的数据内容的数据结构字段210。
37.当擦除闪存页面时,所有位都设置为初始值(例如,逻辑1),因此,可能已存储在页面中的任何tlv记录都将被擦除。擦除编程和无效指示符具有逻辑值1,因此,分别被解释为未编程和非无效。
38.当处理器检查tlv记录是否有效时,处理器可以首先验证是否设置编程指示,并且未设置无效指示。当处理器写入tlv记录时,处理器可以首先验证未设置tlv记录的编程指示。当处理器写入替换现有记录的新tlv记录时,处理器对现有记录的无效字段进行编程。(下面将参考图3和图4介绍执行上述读取和写入操作的方法。)
39.可以理解,图2中所示的tlv记录116的结构,包括其各个字段,是示例,其仅出于概念清晰的目的而示出。在替代实施方式中可以使用任何其他合适的配置。例如,在一些实施方式中,可以使用额外的加密和/或非加密字段;在其他实施方式中,部分(或全部)杂项属性可以被加密。
40.在一些实施方式中,不需要编程指示。当页面被擦除时,长度字段将被设置为零(在实施方式中,擦除操作将所有位设置为逻辑1,因此,长度字段使用负逻辑)。每当对页面进行编程时,长度字段都会设置为非零值。因此,可以使用非零长度字段来指示页面被编程。
41.根据本发明的实施方式,我们现在将描述管理闪存106中的tlv记录116的方法。在实施方式中,为了更快的操作,处理器102在ram 104(图1)中保留tlv描述符表。对于每个tlv记录116,该表可以包括闪存中tlv位置的指针、编程和无效指示的镜像(在一些实施方式中,描述符表还可以包括例如杂项属性字段的镜像、和类型字段的明文版本)。假设tlv记录连续存储在闪存中。
42.图3是示意性地示出了根据本发明的实施方式的用于在ram中构建tlv描述符表的方法的流程图300。该流程图通常在加电或其他类型的硬复位之后由处理器102(图1)执行。
43.流程开始于设置指针步骤302,其中处理器设置指针以指向第一tlv记录。例如,此位置通常固定在闪存地址空间的开始。接下来,在检查编程步骤304处,处理器读取tlv记录的编程指示。如果未设置编程指示符,则当前记录是存储在闪存中的最后的tlv(如上所述,根据图3所示的示例实施方式,闪存中的tlv记录是连续的,并且未编程的tlv的第一指示意味着前一个tlv是最后编程的tlv)。如果设置了编程指示符,则处理器在读取tlv步骤306中读取tlv记录的明文字段并进入检查有效步骤308,其中处理器检查是否未设置无效指示符(指示有效的tlv)。如果是,处理器将进入存储步骤310,其中处理器在tlv描述符表中存储tlv的明文,包括指针和可选的一些其他明文字段(但不包括无效指示符)。然后处理器将进入添加长度步骤312。
44.如果在步骤308中处理器识别出tlv被标记为无效,则处理器将跳过步骤310并直接进入步骤312。
45.在步骤312中,处理器将长度字段添加到指针,指针现在将指向下一个tlv记录。在步骤312之后,处理器重新进入步骤304以检查下一个tlv记录。如果在步骤304中,编程位没
有设置(因此,闪存中不再有编程的tlv),则流程结束。
46.图4是示意性地示出了根据本发明的实施方式的读取、编程和使闪存106中的tlv记录116无效的方法的流程图400。该流程可以由处理器102(图1)执行。
47.该流程开始于检查操作步骤402,其中处理器检查应该执行三个tlv操作中的哪一个。如果操作是读取tlv记录,则处理器进入设置指针步骤404并将指针设置为指向闪存中第n个tlv记录的位置的(该位置存储在tlv描述符表中的ram 104中)。然后,处理器将在读取tlv步骤406处,从闪存中读取tlv记录;在解密步骤408中解密加密字段,并结束流程。
48.如果在步骤402中操作是使第n个tlv记录无效,则处理器进入设置指针步骤410并将指针设置为指向闪存中的第n个tlv记录的位置(从tlv描述符表中读取)。处理器接下来将在设置无效步骤412中对tlv记录的无效指示符进行编程以指示该记录无效,并且在修改描述符步骤414中修改描述符表以指示第n个tlv记录无效。然后处理器将结束流程。
49.如果在步骤402中操作是对新tlv记录的编程,则处理器进入设置指针步骤416并将指针设置到第一未编程的tlv记录的位置。处理器然后在加密步骤418中对加密字段加密,并且在设置编程步骤420中设置编程指示符以指示当前tlv记录被编程。接下来,在编程-tlv步骤422中,处理器对tlv记录进行编程,包括所有加密和明文字段。最后,在添加描述符步骤424处,处理器在tlv描述符表中添加条目,该条目包括指向新添加的tlv记录的指针,并且流程结束。
50.总之,本文参考图3和图4描述的方法促进基于闪存的tlv记录的安全且可靠的使用,包括维护闪存tlv记录的描述符表(图3);以及包括tlv记录的读取、编程和失效(图4)。
51.应当理解,上面参考图4和图5描述的流程图300和400中所示的方法以示例的方式被引用。根据所公开技术的方法和流程图不限于上文的描述。在替代实施方式中,例如,操作的顺序可以改变,一些步骤可以并行执行并且一些步骤可以嵌入其他步骤中。在一些实施方式中,流程图的一些或所有步骤可以由闪存控制/接口108(图1)或由其他电路来执行。
52.在一些实施方式中,描述符表的结构可以变化。在实施方式中,不存在tlv描述符表,处理器通过对连续tlv记录的长度进行串行读取和求和来计算指向tlv记录的指针。
53.应当理解,上述实施方式是通过示例的方式引用的,并且本发明不限于已经在上文中具体示出和描述的内容。相反,本发明的范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读前述描述后会想到的并且未在现有技术中公开的变化和修改。以引用方式并入本专利申请中的文件应被视为本技术的组成部分,除非在这些并入文件中以与本说明书中明确或隐含的定义相冲突的方式定义的任何术语,仅应考虑本说明书中的定义。
54.尽管这里描述的实施方式主要针对安全闪存,但是这里描述的方法和系统也可以用在其他应用中,包括(但不限于)任何其他合适类型的可编程存储器(例如,基于prom和efuse的存储器)。
55.因此应理解,上述实施方式是作为示例引用的,并且本发明不限于上文具体示出和描述的内容。相反,本发明的范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读前述描述后会想到的并且未在现有技术中公开的变化和修改。以引用方式并入本专利申请中的文件应被视为本技术的组成部分,除非在这些并入文件中以与本说明书中明确或隐含的定义相冲突的方式定义的任何术语,仅应考虑本说明书中的定义。
技术特征:
1.一种计算设备,包括:非易失性存储器(nvm)接口,所述nvm接口被配置为与nvm通信;和处理器,所述处理器被配置为:在所述nvm类型长度值(tlv)记录中存储每个tlv记录,其包括一个或多个加密字段和一个或多个非加密字段,所述非加密字段至少包括所述tlv记录的各自有效性指示符;从所述nvm中读取包括所述加密字段和所述非加密字段的所述tlv记录;以及通过修改存储在所述非加密字段中的所选tlv记录的所述各自有效性指示符,使所选tlv记录无效。2.根据权利要求1所述的计算设备,其中所述处理器被配置为在不解密任何所述加密字段的情况下使所选tlv记录无效。3.根据权利要求1所述的计算设备,其中所述nvm包括闪存。4.根据权利要求1所述的计算设备,其中在给定的tlv记录中,所述非加密字段包括tlv已被编程的一个或多个指示,以及编程的tlv无效的一个或多个指示。5.根据权利要求1所述的计算设备,其中对于给定的tlv记录,所述处理器被配置为仅从所述nvm中读取所述非加密字段,并且当所述非加密字段指示所述给定的tlv记录已经被无效时避免读取或解密所述加密字段。6.根据权利要求1所述的计算设备,其中所述加密字段包括所述tlv记录的数据字段。7.根据权利要求1所述的计算设备,其中所述加密字段包括所述tlv记录的类型字段。8.根据权利要求1所述的计算设备,其中所述非加密字段包括所述tlv记录的长度字段。9.根据权利要求1所述的计算设备,其中所述处理器被配置为对存储在所述nvm中的明文数据进行加密,以创建在所述加密字段中保存所述加密明文数据的一个或多个tlv记录,以及在所述nvm中存储所述一个或多个tlv记录。10.根据权利要求1所述的计算设备,其中所述处理器被配置为从所述nvm中读取一个或多个tlv记录,并且通过解密所述加密字段中的至少一些来从所述一个或多个tlv记录中提取明文数据。11.一种方法,包括:在非易失性存储器(nvm)中存储类型长度值(tlv)记录,每个tlv记录包括一个或多个加密字段和一个或多个非加密字段,所述非加密字段至少包括所述tlv记录的各自有效性指示符;从所述nvm中读取包括所述加密字段和所述非加密字段的所述tlv记录;以及通过修改存储在所述非加密字段中的所选tlv记录的所述各自有效性指示符,使所选tlv记录无效。12.根据权利要求11所述的方法,其中在不解密任何所述加密字段的情况下使所选tlv记录无效。13.根据权利要求11所述的方法,其中所述nvm包括闪存。14.根据权利要求11所述的方法,其中在给定的tlv记录中,所述非加密字段包括tlv已被编程的一个或多个指示,以及编程的tlv无效的一个或多个指示。15.根据权利要求11所述的方法,其中读取给定tlv记录包括仅从所述nvm中读取所述
给定tlv记录的所述非加密字段,并且当所述非加密字段指示所述给定tlv记录已经被无效时避免读取或解密所述加密字段。16.根据权利要求11所述的方法,其中所述加密字段包括所述tlv记录的数据字段。17.根据权利要求11所述的方法,其中所述加密字段包括所述tlv记录的类型字段。18.根据权利要求11所述的方法,其中所述非加密字段包括所述tlv记录的长度字段。19.根据权利要求11所述的方法,其中存储所述tlv记录包括对存储在所述nvm中的明文数据进行加密,以创建在所述加密字段中保存所述加密明文数据的一个或多个tlv记录,以及在所述nvm中存储所述一个或多个tlv记录。20.根据权利要求11所述的方法,其中读取所述tlv记录包括从所述nvm中读取一个或多个tlv记录,并且通过解密所述加密字段中的至少一些来从所述一个或多个tlv记录中提取明文数据。
技术总结
一种计算设备包括非易失性存储器(NVM)接口和处理器。NVM接口被配置为与NVM通信。处理器被配置为在NVM类型长度值(TLV)记录中存储包括一个或多个加密字段和一个或多个非加密字段的每个TLV记录,非加密字段至少包括TLV记录的各自有效性指示符,以从NVM中读取包含加密字段和非加密字段的TLV记录,并通过修改存储在非加密字段中的所选TLV记录的各自有效性指示符来使所选TLV记录无效。指示符来使所选TLV记录无效。指示符来使所选TLV记录无效。
技术研发人员:尤瓦尔
受保护的技术使用者:迈络思科技有限公司
技术研发日:2021.09.02
技术公布日:2022/3/8