单图像存储器的擦除编码的制作方法

文档序号:23067948发布日期:2020-11-25 17:55阅读:117来源:国知局
单图像存储器的擦除编码的制作方法



背景技术:

物联网(“iot”)通常是指能够通过网络进行通信的设备系统。这些设备可以包括日常物品,诸如烤面包机、咖啡机、恒温器系统、洗衣机、干衣机、灯、汽车等。网络通信可以用于设备自动化、数据捕获、提供警报、设置个性化以及很多其他应用。



技术实现要素:

提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

简要地说,所公开的技术总体上涉及数据保护。在该技术的一个示例中,如下生成针对数据的擦除码:计算擦除码块的大小和字节,计算针对擦除码的条带的数目,并且生成针对擦除码的每个块的每个条带,使得条带以图案交替,并且保存数据的每个块的哈希值。在一些示例中,如下修复数据的部分:对于该数据的该部分的每个块,计算该块的条带,针对该块的所保存的哈希值检查数据的该部分的每个块的哈希值,将每个如下哈希值标识为坏块,针对该哈希值,数据的该部分的块的哈希值与该块的所保存的哈希值不匹配,以及对于每个所标识的坏块,基于该块的条带和数据在针对该数据的擦除码中的对应块,生成针对坏块的修复块,例如,如果在条带中存在少于或等于由所选择的容错所定义的数目的坏块。

在阅读和理解附图和说明书之后,将能够理解所公开的技术的其他方面和应用。

附图说明

参考附图描述本公开的非限制性和非穷举性示例。在附图中,除非另有说明,否则相同的附图标记在各个附图中指代相同的部件。这些附图不一定按比例绘制。

为了更好地理解本公开,将参考应当结合附图来阅读的以下“具体实施方式”,在附图中:

图1是示出可以采用本技术的各方面的合适环境的一个示例的框图;

图2是示出根据所公开的技术的各方面的合适计算设备的一个示例的框图;

图3是示出用于数据安全性的系统的示例的框图;

图4是示出图3的设备控制器的示例的框图;

图5是用于生成数据的擦除码的过程的示例数据流;

图6是用于修复数据的至少部分的过程的示例数据流;以及

图7是根据本公开的各方面的用于响应于数据的改变来更新擦除码的过程的示例数据流。

具体实施方式

以下描述提供用于彻底理解和实现该技术的各种示例的描述的具体细节。本领域技术人员将理解,可以在没有很多这些细节的情况下实现该技术。在一些情况下,没有详细示出或描述公知的结构和功能,以避免不必要地模糊对技术的示例的描述。本公开中使用的术语旨在以其最广泛的合理方式解释,即使其与该技术的一些示例的详细描述一起使用。尽管下面可以强调某些术语,但是旨在以任何受限制的方式解释的任何术语将在“具体实施方式”部分中明确地和具体地定义。在整个说明书和权利要求书中,除非上下文另有指示,否则以下术语至少采用本文中明确相关的含义。下面确定的含义不一定限制术语,而仅仅提供术语的说明性示例。例如,术语“基于(basedon)”和“基于(basedupon)”中的每个不是排他性的,并且等同于术语“至少部分地基于(based,atleastinpart,on)”,并且包括基于其他因素的选项,其中的一些因素可能在本文中没有描述。作为另一示例,术语“经由”不是排他性的,并且等同于术语“至少部分经由”,并且包括经由附加因素的选择,其中的一些因素可能在本文中没有描述。“在……中(in)”的含义包括“在……中(in)”和“在……上(on)”。本文中使用的短语“在一个实施例中”或“在一个示例中”尽管可以但是不一定是指相同的实施例或示例。特殊的文本数字指示符的使用并不表示存在较低值的数字指示符。例如,陈述“从包括第三foo和第四bar的组中选择的小部件”本身并不表示存在至少三个foo,也不表示存在至少四个bar元素。除非明确排除多个引用,否则单数引用仅仅是为了阅读的清楚并且包括复数引用。除非另有明确说明,否则术语“或”是包含性的“或”运算符。例如,短语“a或b”表示“a、b或a和b”。如本文中使用的,术语“组件”和“系统”旨在包含硬件、软件或硬件和软件的各种组合。因此,例如,系统或组件可以是过程、在计算设备上执行的过程、计算设备或其部分。

简要地说,所公开的技术总体上涉及数据保护。在该技术的一个示例中,如下生成针对数据的擦除码:计算擦除码块的大小和字节,计算针对擦除码的条带的数目,并且生成针对擦除码的每个块的每个条带,使得条带以图案交替,并且保存数据的每个块的哈希值。在一些示例中,如下修复数据的部分:对于该数据的该部分的每个块,计算该块的条带,针对该块的所保存的哈希值检查数据的该部分的每个块的哈希值,将每个如下哈希值标识为坏块,针对该哈希值,数据的该部分的块的哈希值与该块的所保存的哈希值不匹配,以及对于每个所标识的坏块,基于该块的条带和数据在针对该数据的擦除码中的对应块,生成针对坏块的修复块,例如,如果在条带中存在少于或等于由所选择的容错所定义的数目的坏块。

擦除编码方案可以用于生成擦除编码块,该擦除编码块可以用于从大量的连续损坏中复原(restore)闪存。在一些示例中,存储器的区(area)(区域(region))被选择以擦除代码。在这些示例之一中,单个擦除码条带由数据块的集合和一个或多个擦除码块组成,这些擦除码块被用于恢复擦除码条带中的丢失或损坏的数据块。在一些示例中,条带被连续地布置。在其他示例中,条带在该区域内呈“棋盘状”图案以擦除码。在一些示例中,每个区域由一定数目的条带保护,通过在分配任何条带的第二块之前将每个条带的第一块分配给该区域,然后在分配任何条带的第三块之前分配每个条带的第二块,从而每个条带与其他条带交织。因此,在该示例中,单个条带中的任何块与所有其他条带被单个块分开。以这种方式,可以生成擦除编码块,该擦除编码块可以用于在发生损坏的情况下进行恢复。

说明性设备/操作环境

图1是可以实现本技术的各方面的环境100的图。如图所示,环境100包括经由网络130被连接的计算设备110以及网络节点120。即使图1中示出了环境100的特殊组件,但是在其他示例中,环境100还可以包括附加的和/或不同的组件。例如,在某些示例中,环境100还可以包括网络存储设备、维护管理器和/或其他合适的组件(未示出)。图1所示的计算设备110可以处于各种位置,包括在室内、在云中等。例如,计算机设备110可以在客户端侧、服务器侧等。

如图1所示,网络130可以包括一个或多个网络节点120,一个或多个网络节点120互连多个计算设备110并且将计算设备110连接到外部网络140(例如,互联网或内联网)。例如,网络节点120可以包括交换机、路由器、中枢、网络控制器或其他网络元件。在某些示例中,计算设备110可以被组织成机架、动作带区(zone)、组、集合或其他合适的划分。例如,在所示示例中,计算设备110被分组为三个主机组,该三个主机组分别被标识为第一、第二和第三主机组112a-112c。在所示示例中,主机组112a-112c中的每个主机组分别可操作地被耦合到相应的网络节点120a-120c,这些网络节点通常称为“架顶”或“tor”网络节点。然后,tor网络节点120a-120c可以可操作地被耦合到附加的网络节点120,以形成允许计算设备110与外部网络140之间的通信的分层、平面、网状或其他合适类型的拓扑的计算机网络。在其他示例中,多个主机组112a-112c可以共享单个网络节点120。计算设备110实际上可以是任何类型的通用或专用计算设备。例如,这些计算设备可以是用户设备,诸如台式计算机、膝上型计算机、平板计算机、显示设备、相机、打印机、或智能电话。然而,在数据中心环境中,这些计算设备可以是服务器设备,诸如应用服务器计算机、虚拟计算主机计算机或文件服务器计算机。此外,计算设备110可以单独配置,以提供计算、存储和/或其他合适的计算服务。

在一些示例中,计算设备110中的一个或多个计算设备110是iot设备、包括iot支持服务的部分或全部的设备、包括应用后端的部分或全部的设备等,如下面更详细地讨论的。

说明性计算设备

图2是示出其中可以实现本技术的各方面的计算设备200的一个示例的图。计算设备200实际上可以是任何类型的通用或专用计算设备。例如,计算设备200可以是用户设备,诸如台式计算机、膝上型计算机、平板计算机、显示设备、相机、打印机或智能电话。同样地,计算设备200也可以是服务器设备,诸如应用服务器计算机、虚拟计算主计算机或文件服务器计算机,例如,计算设备200可以是图1的计算设备110或网络节点120的示例。计算设备200也可以是连接到网络以接收iot服务的iot设备。同样地,计算机设备200可以是图3-5中示出或参考的任何设备的示例,如下面更详细地讨论的。如图2所示,计算设备200包括处理电路210、操作存储器220、存储控制器230、数据存储存储器250、输入接口260、输出接口270和网络适配器280。计算设备200的这些前面列出的组件中的每个组件包括至少一个硬件元件。

计算设备200包括被配置为执行指令的至少一个处理电路210,诸如用于实现本文中描述的工作负载、过程或技术的指令。处理电路210可以包括微处理器、微控制器、图形处理器、协处理器、现场可编程门阵列、可编程逻辑器件、信号处理器或适合于处理数据的任何其他电路。处理电路210是内核的示例。上述指令以及其他数据(例如,数据集、元数据、操作系统指令等)可以在计算设备200的运行时期间存储在操作存储器220中。操作存储器220还可以包括多种数据存储设备/组件中的任何一种,诸如易失性存储器、半易失性存储器、随机存取存储器、静态存储器、高速缓存、缓冲器或用于存储运行时信息的其他介质。在一个示例中,当计算设备200断电时,操作存储器220不保留信息。相反,作为引导(boot)或其他加载过程的部分,计算设备200可以被配置为将指令从非易失性数据存储组件(例如,数据存储组件250)传输到操作存储器220。在一些示例中,可以采用其他形式执行,诸如直接从数据存储组件250执行,例如,现场执行(xip)。

操作存储器220可以包括第四代双倍数据速率(ddr4)存储器、第三代双倍数据速率(ddr3)存储器、其他动态随机存取存储器(dram)、高带宽存储器(hbm)、混合存储器立方体存储器、3d堆叠存储器、静态随机存取存储器(sram)、磁阻随机存取存储器(mram)、伪静态随机存取存储器(psram)或其他存储器,并且这种存储器可以包括一个或多个存储器电路,该一个或多个存储器电路被集成到dimm、simm、sodimm、已知合格晶片(kgd)或其他其他封装(packaging)上。这样的操作存储模块或设备可以根据通道、等级和库来被组织。例如,操作存储设备可以经由通道中的存储控制器230被耦合到处理电路210。计算设备200的一个示例可以每个通道包括一个或两个dimm,每个通道具有一个或两个等级。等级内的操作存储器可以与共享时钟、共享地址和命令总线一起操作。而且,操作存储设备可以被组织成几个内存库(bank),内存库可以被认为是由行和列寻址的阵列。基于这种操作存储器的组织,操作存储器内的物理地址可以由通道、等级、内存库、行和列的元组来引用。

尽管有上述讨论,但是操作存储器220具体地不包括或不包含通信媒介、任何通信介质或任何信号本身。

存储控制器230被配置为将处理电路210接口到操作存储器220。例如,存储控制器230可以被配置为对操作存储器220与处理电路210之间的命令、地址和数据进行接口。存储控制器230也可以被配置为抽象或以其他方式管理来自或针对处理电路210的存储管理的某些方面。虽然存储控制器230被示出为与处理电路210分开的单个存储控制器,但是在其他示例中,可以采用多个存储控制器,(一个或多个)存储控制器可以与操作存储器220集成,等等。进一步地,(一个或多个)存储控制器可以集成到处理电路210中。这些和其他变型是可能的。

在计算设备200中,数据存储存储器250、输入接口260、输出接口270和网络适配器280通过总线240被接口到处理电路210。虽然图2将总线240示出为单个无源总线,但是其他配置(诸如总线集合、点对点链路的集合、输入/输出控制器、桥接器、其他接口电路或其任何集合)也可以适当地用于将数据存储存储器250、输入接口260、输出接口270或网络适配器280接口到处理电路210。

在计算设备200中,数据存储存储器250被采用用于长期非易失性数据存储。数据存储存储器250可以包括各种非易失性数据存储设备/组件中的任何一种,诸如非易失性存储器、磁盘、磁盘驱动器、硬盘驱动器、固态驱动器或可以用于信息的非易失性存储的任何其他介质。然而,数据存储存储器250具体地不包括或包含通信媒介、任何通信介质或任何信号本身。与操作存储器220相反,数据存储存储器250被计算设备200采用用于非易失性长期数据存储,而不是用于运行时数据存储。在一些示例中,性能计数器475还可以被配置为测量从核心到目标(诸如从mcu462到sram458)的延时。

此外,计算设备200可以包括或被耦合到任何类型的处理器可读介质,诸如处理器可读存储介质(例如,操作存储器220和数据存储存储器250)和通信媒介(例如,通信信号和无线电波)。虽然术语处理器可读存储介质包括操作存储器220和数据存储存储器250,但是在整个说明书和权利要求中的术语“处理器可读存储介质”,无论是以单数还是复数形式使用,在本文中被定义,以使术语“处理器可读存储介质”具体地排除并且不包括通信媒介、任何通信介质或任何信号本身。然而,术语“处理器可读存储介质”确实包含处理器高速缓存、随机存取存储器(ram)、寄存存储器等。

计算设备200还包括输入接口260,输入接口260可以被配置为使计算设备200能够从用户或从其他设备接收输入。另外,计算设备200包括输出接口270,输出接口270可以被配置为从计算设备200提供输出。在一个示例中,输出接口270包括帧缓冲器、图形处理器、图形处理器或加速器,并且被配置为渲染用于在单独的可视显示设备(诸如监测器、投影仪、虚拟计算客户端计算机等)上呈现的显示。在另一示例中,输出接口270包括可视显示设备,并且被配置为渲染和呈现用于观看的显示。在又一示例中,输入接口260和/或输出接口270可以包括通用异步接收器/发射器(“uart”)、串行外围设备接口(“spi”)、内部集成电路(“i2c”)、通用输入/输出(gpio)等。此外,输入接口260和/或输出接口270可以包括或被接口到任何数目或类型的外围设备。

在所示示例中,计算设备200被配置为经由网络适配器280与其他计算设备或实体通信。网络适配器280可以包括有线网络适配器,例如以太网适配器、令牌环适配器或数字用户线(dsl)适配器。网络适配器280还可以包括无线网络适配器,例如wi-fi适配器、蓝牙适配器、紫蜂(zigbee)适配器、长期演进(lte)适配器、sigfox、lora、电力线或5g适配器。

尽管计算设备200被示出为具有以特殊布置而配置的某些组件,但是这些组件和布置仅仅是可以采用该技术的计算设备的一个示例。在其他示例中,数据存储存储器250、输入接口260、输出接口270或网络适配器280可以直接被耦合到处理电路210,或者经由输入/输出控制器、桥接器或其他接口电路被耦合到处理电路210。该技术的其他变型是可能的。

计算设备200的一些示例包括适于存储运行时数据的至少一个存储器(例如,操作存储器220)和适于执行处理器可执行代码的至少一个处理器(例如,处理单元210),在一些示例中,这些处理器可执行代码响应于执行而使计算设备200能够执行动作。

说明性系统

本公开的一些示例被用于在iot设备中包括的、作为针对iot设备的设备控制器而操作的多核微控制器的上下文中。本公开的示例也可以在其他合适的上下文中使用。下面关于图4讨论在iot设备中包括的、作为针对iot设备的设备控制器而操作的多核微控制器的上下文中所使用的本公开的特殊示例。

图3是示出系统(300)的示例的框图。系统300可以包括网络330、以及都被连接到网络330的iot支持服务351、iot设备341和342、以及应用后端313。

术语“iot设备”是指旨在利用iot服务的设备。iot设备实际上可以包括被连接到网络以使用iot服务的任何设备,包括用于遥测收集或任何其他目的。iot设备包括可以被连接到网络以利用iot服务的任何设备。在各种示例中,iot设备可以与云、对等体(peer)或本地系统、或对等体和本地系统和云进行通信,或者以任何其他合适的方式通信。iot设备可以包括日常物品,诸如烤面包机、咖啡机、恒温器系统、洗衣机、干衣机、灯、汽车等。iot设备还可以包括例如“智能”建筑物中的各种设备,包括灯、温度传感器、湿度传感器、占用传感器等。针对iot设备的iot服务可以用于设备自动化、数据捕获、提供警报、设置的个性化、以及很多其他应用。

术语“iot支持服务”是指设备、至少一个设备的部分或多个设备,诸如分布式系统,在一些示例中,iot设备在网络上与其连接以获取iot服务。在一些示例中,iot支持服务是iot中枢。在一些示例中,iot中枢被排除,并且iot设备直接或通过一个或多个中介与应用后端通信,而不包括iot中枢,并且应用后端中的软件组件作为iot支持服务进行操作。iot设备经由与iot支持服务的通信来接收iot服务。在一些示例中,iot支持服务可以嵌入设备内部或本地基础设施中。

应用后端313是指设备或多个设备,诸如分布式系统,其执行动作,这些动作使数据收集、存储和/或动作能够基于iot数据进行,包括用户访问和控制、数据分析、数据显示、数据存储控制、基于iot数据进行的自动操作等。应用后端313也可以是部署在公共或私有云中的一个或多个虚拟机。在一些示例中,由应用后端进行的至少一些动作可以由在应用后端313中运行的应用执行。

iot设备341和342中的每个iot设备和/或包括iot支持服务351的设备和/或应用后端313可以包括图2的计算设备200的示例。术语“iot支持服务”不限于一个特殊类型的iot服务,而是指在供应之后iot设备针对至少一个iot解决方案或iot服务而与之通信的设备。也就是说,在整个说明书和权利要求书中使用的术语“iot支持服务”对于任何iot解决方案是通用的。术语“iot支持服务”是指所供应的iot设备与之通信的iot解决方案/iot服务的部分。在一些示例中,iot设备与一个或多个应用后端之间的通信伴随iot支持服务作为中介发生。图3和说明书中对图3的相应描述示出了用于说明性目的的示例系统,其不限制本公开的范围。

iot设备341和342中的一个或多个iot设备可以包括设备控制器345,设备控制器345可以操作以控制iot设备。每个设备控制器345可以包括多个执行环境。设备控制器345可以是多核微控制器。在一些示例中,设备控制器345是具有多个核心的集成电路,诸如至少一个中央处理单元(cpu)和至少一个微控制器(mcu)。

网络330可以包括一个或多个计算机网络,包括有线和/或无线网络,其中每个网络可以是例如无线网络、局域网(lan)、广域网(wan)和/或诸如互联网等全球网络。在一组互连的lan上,包括基于不同架构和协议的lan,路由器用作lan之间的链路,以使消息能够从一个发送到另一个。此外,lan内的通信链路通常包括双绞线或同轴电缆,而网络之间的通信链路可以利用模拟电话线、包括t1、t2、t3和t4的全部或部分专用数字线、综合业务数字网(isdn)、数字用户线(dsl)、包括卫星链路的无线链路、或本领域技术人员已知的其他通信链路。此外,远程计算机和其他相关电子设备可以经由调制解调器和临时电话链路被远程连接到lan或wan。网络330可以包括各种其他网络,诸如使用本地网络协议(诸如6lowpan、zigbee等)的一个或多个网络。一些iot设备可以经由网络330中与其他iot设备不同的网络被连接到用户设备。本质上,网络330包括信息可以在iot支持服务351、iot设备341和342以及应用后端313之间行进(travel)的任何通信方法。尽管每个设备或服务被示出为被连接到网络330,但是这并不表示每个设备与所示的每个其他设备通信。在一些示例中,所示出的一些设备/服务仅与经由一个或多个中介设备示出的一些其他设备/服务通信。此外,虽然网络330被示出为一个网络,但是在一些示例中,网络330可以改为包括可以彼此连接或可以不彼此连接的多个网络,其中一些设备被示出为通过多个网络中的一个网络彼此通信,而其他设备被示出为利用多个网络中的不同网络彼此通信。

作为一个示例,iot设备341和342是旨在利用由iot支持服务351提供的iot服务的设备。

系统300可以包括比仅以示例方式示出的图3所示的更多或更少的设备。

说明性设备

图4是示出设备控制器445的示例的框图。设备控制器445可以作为图3的设备控制器345的示例被采用。设备控制器445可以包括安全复合体451、cpu453、直接存储器访问(dma)块454、信任区(tz)dma块455、闪存456、无线电块457、安全静态随机访问存储器(sram)458、接口459、mcu461、mcu462、主要高级可扩展接口(axi)总线463、辅助axi总线464、桥接器465和466、每个外围设备467的到高级外围设备总线(apb)桥接器的axi、接口471、gpio472、模数转换器(adc)473、实时时钟(rtc)474和性能计数器475。

在一些示例中,设备控制器445使其中包括设备控制器445的设备能够作为iot设备(诸如图3的iot设备341或342)进行操作。在一些示例中,设备控制器445是多核微控制器。在一些示例中,设备控制器445运行高级别操作系统。在一些示例中,设备控制器445可以具有至少4mb的ram和至少4mb的闪存,并且可以是单个集成电路。在一些示例中,设备控制器445不仅提供网络连接性,而且还提供各种其他功能,包括硬件和软件安全性、受监测的操作系统、密码功能、外围设备控制、遥测等。另外,设备控制器445可以包括:用于允许以安全方式引导设备控制器445的技术,用于允许安全地更新设备控制器445的技术,用于确保适当的软件在设备控制器445上运行的技术,用于允许设备控制器445作为iot设备正确运行的技术等。

在一些示例中,安全复合体451包括核心安全复合体(csc),该csc是设备控制器445中的硬件信任根。在一些示例中,核心安全复合体被直接连接到安全复合体451中的安全mcu。在一些示例中,安全复合体451中的安全mcu具有非常高的可信度,但是不如安全复合体451中的核心安全复合体可信。在一些示例中,安全复合体451在被引导时带动整个系统。

在一些示例中,cpu453运行高级别操作系统。在一些示例中,cpu453具有两个独立的执行环境:“安全世界”执行环境和“正常世界”执行环境。术语“安全世界”被广泛用于指代可信环境,并且不限于特殊安全功能。在某些示例中,cpu453的“安全世界”执行环境也是系统的可信计算库的部分。例如,在一些示例中,cpu453的“安全世界”执行环境可以不受限制地访问重新编程的硬件保护机制,诸如在一些示例中为防火墙。然而,在一些示例中,cpu453的“安全世界”执行环境不具有对安全复合体451的核心安全复合体的内部的访问权,并且依赖于针对特殊的安全敏感操作的安全复合体451的安全mcu。

无线电块457可以提供wi-fi通信。主axi总线463和辅axi总线464可以是连接所示出的组件的总线。在一些示例中,桥接器465、466和467桥接所示出的组件。rtc块474可以作为实时时钟来操作。在一些示例中,设备控制器345中的所有组件可以从rtc块474读取,但是并非所有组件都具有对rtc块474的写入访问权。设备控制器445可以包括各种形式的存储器,包括闪存和sram,诸如闪存456和安全sram458。

在一些示例中,io子系统1461和io子系统2462是用于通用i/o连接性的i/o子系统。在一些示例中,io子系统1461和io子系统2462每个包括mcu。

dma块454可以用于针对cpu453的“正常世界”执行环境管理数据移动。信任区(tz)dma块455可以用于针对cpu453的“安全世界”执行环境管理数据移动。在一些示例中,每个io子系统也都有其自己的dma块。每个dma块可以被配置为支持核心、外围设备、其他组件等之间的数据移动。

每个核心可以具有双向邮箱以支持处理器间通信。性能计数器475可以被配置为对读取请求、写入请求和数据类型请求进行计数以供性能监控。在一些示例中,性能计数器475还可以被配置为测量从核心到目标(诸如从mcu462到sram458)的延时。

在一些示例中,框459处的接口包括两个集成电路间声音(i2s)接口:一个用于音频输入,一个用于音频输出。在其他示例中,可以采用接口的其他配置,并且在各种示例中,框459可以包括任何合适的接口。

在一些示例中,安全复合体451中的mcu具有非常高的可信度,但是不如安全复合体451中的核心安全复合体可信。在这些示例中,安全复合体451中的mcu控制与非常高的可信度相关联的一个或多个功能。在一个示例中,安全复合体451中的mcu针对设备控制器445和/或iot设备控制功率。

在一些示例中,cpu453的“安全世界”执行环境也是系统的可信计算库的部分。例如,在某些示例中,cpu453的“安全世界”运行时(“安全世界”rt)具有不受约束的访问权以对硬件保护机制(诸如在一些示例中为防火墙)重新编程。然而,在一些示例中,“安全世界”rt不具有对安全复合体451的核心安全复合体的内部的访问权,而是依赖于针对特殊安全敏感操作的安全复合体451中的mcu。

cpu453的“正常世界”执行环境可以被配置为具有对诸如存储器的片上资源的有限访问权。在一些示例中,针对在该环境中运行的代码可以强制执行各种安全和质量标准(例如,相对高的标准),但是不如在安全复合体451中的mcu上运行的代码或在cpu453的“安全世界”中运行的代码可信。

在一些示例中,mcu461和462不如安全复合体451中的mcu可信,并且不如cpu453可信。在一些示例中,无线电块457可以包括核心,该核心在一些示例中可以是mcu。无线电块457可以提供wi-fi功能以及到互联网和云服务(诸如iot服务)的连接性。在一些示例中,无线电块457可以经由蓝牙、近场通信(nfc)、zigbee、长期演进(lte)和/或其他连接性技术来提供通信。在一些示例中,无线电块457中的核心不具有对未加密秘密的任何访问权,并且不能够损害cpu453的执行。

在一些示例中,每个独立执行环境由单个软件组件来管理,该单个软件组件在被称为执行环境的“父级”的单独的执行环境中执行。在这样的示例中,一个例外可以是:硬件信任根(在该示例中为安全复合体451的核心安全复合体)没有父级。在一个特殊示例中,每个父级在与其管理的环境至少一样可信的环境中执行。在其他示例中,可以采用其他合适的安全手段。管理操作可以包括:引导和恢复目标环境,监测和处置目标环境中的重置,以及针对目标环境配置访问策略。在一些情况下,某些管理操作由除了父级以外的组件执行。例如,在一些示例中,cpu453的“正常世界”是管理mcu461和462但是从cpu453的“安全世界”接收协助的环境。

例如,在一些示例中,安全复合体451的mcu对cpu453的“安全世界”rt进行管理,cpu453中的“安全世界”rt中的组件对cpu453的“正常世界”os进行管理,cpu453的“正常世界”os中的组件对cpu453的“正常世界”用户模式进行管理,并且cpu453的“正常世界”用户模式服务对mcu461和462以及无线电块457中的核心进行管理。

在一些示例中,不仅独立执行环境由来自更可信的执行环境的软件组件进行管理,而且不同的功能被指派给不同的独立执行环境,其中较敏感的功能被指派给较可信的独立执行环境。在一个特殊示例中,不如所指派给的独立执行环境可信的独立执行环境对该功能的访问权受限。以这种方式,在一些示例中,独立执行环境基于信任的层级来实现纵深防御。

例如,在一些示例中,安全复合体451的核心安全复合体在层级的顶部,并且被指派给秘密(例如,加密密钥),核心安全复合体451中的安全mcu是层级中的下一个并且被指派用于控制功率,cpu453的安全世界rt是层级中的下一个并且被指派用于对实时时钟(rtc)进行存储和写入访问,cpu453的普通世界os是层级中的下一个并且被指派给wi-fi,cpu453的普通世界用户模式应用是层级中的下一个并且被指派给应用,并且mcu461和462在层级的底部并且被指派给外围设备。在其他示例中,功能以不同的方式被指派给独立的执行环境。

在一些示例中,例如,在针对它们处置的软件实现支持的时候,除了层级的底部(即,最不可信)级别之外,信任层级的每个级别通过接受或拒绝来自较不可信级别的请求而具有控制权,并且能够对来自较不可信级别的请求进行速率限制或审核,并且能够对来自较低级别的请求进行验证,以例如确保请求正确且真实。另外,如前所述,在一些示例中,除了顶部(即,最可信)级别之外,层级的每个级别都具有父级,该父级负责管理较低(即,较不可信)级别,包括监测较低级别的软件是否正常运行。

设备控制器455的一些示例可以是多核微处理器,其包括:例如至少一个cpu和至少一个微控制器,以及如前所述的具有多个内存库的闪存。在一些示例中,多核处理器可以是具有多个核心的集成电路。在一些示例中,多核处理器可以用于为所连接的设备提供功能性。在一些示例中,设备控制器455可以提供与所连接的设备的网络连接性,并且还可以提供各种其他功能,诸如硬件和软件安全性、受监测的操作系统、密码功能、外围设备控制、遥测等。另外,设备控制器455可以包括:用于允许以安全方式引导设备控制器455的技术、用于允许安全地更新设备的技术、确保“适当的”软件在设备上运行的技术、用于允许设备作为iot设备正确运行的技术等。安全复合体451可以包括设备控制器455的硬件信任根,作为由设备控制器455提供的安全功能的基础。

在一些示例中,闪存456是外部nor闪存,其包括闪存控制器和并行的双四通道串行公共接口(qspi)nor闪存设备(在该示例中为两个内存库),其中每个闪存内存库是经由单独的通道被访问的单独的集成电路。然而,本公开不限于此,并且可以采用任何合适的存储器配置和/或合适的存储器组。

在正常引导期间,处理器可以以安全复合体开始的安全方式引导,该安全复合体包括用于设备控制器455的硬件信任根。在一些示例中,从rom读取第一引导加载器,并且公钥可以由安全复合体451使用,以验证第一引导加载器已经被适当地数字签名。在一些示例中,验证第一引导加载器的签名是在硬件中执行的加密操作。在一些示例中,直到且除非验证了第一引导加载器的数字签名,否则不会加载第一引导加载器,并且对所有闪存内存库的访问被阻止。在一些示例中,一旦第一引导加载器的签名被验证,就加载第一引导加载器,并且对所有闪存内存库的访问被允许。在一些示例中,除了对第一引导加载器的验证以外,可能还需要进一步的验证,以便授予对所有闪存内存库的访问权。这可以用来防止例如加载具有漏洞的有效较旧代码。

在一些示例中,为了允许访问以允许内存库的验证可以如下进行。安全复合体451可以读入不受限制的内存库之一的部分,诸如在一些示例中的第一内存库。在一些示例中,闪存的该部分可以是16kb、52kb等。然后,安全复合体451中的硬件块可以将非受限闪存内存库的所加载的部分与特殊硬件熔丝进行比较,除非所加载的部分与熔丝匹配,否则验证不成功。在一些示例中,硬件钥还可以用于验证代码是可信代码。利用安全复合体451中的硬件块针对硬件熔丝比较闪存的非受限部分的部分可以用于防止加载先前有效但现在较旧的代码具有漏洞。随着改变闪存的对应的非限制部分,熔丝可以被烧断,以防止这样的较旧的代码随后被验证以及防止访问存储在闪存的安全部分中的机密,其中闪存的对应的非限制部分是针对将要与被更新的熔丝进行匹配的硬件熔丝而将要被检查的部分。

在一些示例中,闪存456是单图像存储器。在一些示例中,闪存456具有一个内存库。在一些示例中,闪存456在存储器中具有两个内存库和/或其他(一个或多个)间隔,但是仍然是其中间隔不可被访问的单图像存储器。

在一些示例中,利用如本文中描述的擦除编码方案的示例来保护闪存456免受损坏。尽管本文中关于闪存456描述擦除编码方案,但是擦除编码方案也可以与任何合适的存储器或数据的集合一起使用。在一些示例中,本文中描述的擦除编码方案对于具有单图像存储器并且没有足够空间存储完整备份的嵌入式设备可能是特别有益的,对于该单图像存储器,希望其防止大量连续损坏、意外覆盖等。在一些示例中,擦除编码方案与闪存一起使用以防止闪存损坏。

在一些示例中,针对每个不同的应用和/或每片块(piece)软件使用不同的擦除编码方案,来对各个应用和/或固件的片块进行动态擦除编码,其灵活性基于每个应用和/或正在编码的固件的片块的大小。

在一些示例中,擦除编码方案可以被使用,其中基于固定大小的连续条带对存储器进行擦除编码,如果存储器大小不能被条带大小均分,则可能留下部分条带。

在一些示例中,擦除编码方案可以被使用,其中基于固定大小的非连续条带对存储器进行擦除编码,如果存储器大小不能被条带大小均分,则可能留下部分条带。例如,在一些示例中,擦除编码方案可以以“棋盘格”或交织的图案使用条带,其中要保护的每个区域除以条带的数目,例如,通过交织条带来剥离数据(即,条带不是数据的连续段,但由来自要保护的区域的不同区(area)的数据的块组成。

以这种方式,在一些示例中,大小为r的区域可以由大小为s的条带组成,这将产生r/s(或n)个条带,其中每个条带由一定数目的大小为d的数据块组成。因此,在这些示例中,区域将由大小为d的n个数据块的第一个(每个数据块是条带的“第一”数据块)以及然后每个条带的第二数据块(以此类推)组成。因此,在这些示例中,条带内的任何块被属于其他条带的n个块隔开。

例如,在一个示例中,具有一个16mb存储器,其中存储器的8mb专用于应用,使用8k数据块,利用64kb条带,应用的8mb可以被进行擦除编码。从而,在该示例中,存在8mb/64kb的条带,即133个条带。

在一些示例中,每个条带的偏移被计算,并且基于所计算的偏移将条带拼接(stitch)在一起,然后将条带输入到擦除编码算法。(在该示例中,该“拼接”不涉及数据本身的移动,而是涉及计算偏移。)以这种方式,在该示例中,存储器可以从多达一个mb的连续损坏恢复。然而,在一些示例中,可以从其恢复的损坏的量取决于所生成的擦除编码块的数目(例如,所选择的容错模型)。同样,在一些示例中,虽然进行了调节以防止存储器的连续部分的损坏,但这并不能防止容忍随机损坏。例如,可以通过所公开的技术来防止随机损坏的一些情况。

在一些示例中,存储被进行擦除编码的每个单个数据块的哈希值或校验和。在一些示例中,校验和或哈希值没有被存储在数据本身中,而是存在单独的块哈希值分区、文件或其他跟踪哈希值数据结构。

可以选择容错,其中较大的容错需要较大的开销(overhead)。例如,在一些示例中,擦除编码算法容许每个条带两个坏块而不是一个,与该算法容许每个条带一个坏块的情况相比,具有较大的开销。在一些示例中,在容错和开销之间进行权衡。

如果存在部分条带,例如,具有少于全部条带的数据的价值(worth)的条带,则该部分条带可以在不同示例中以不同的方式被处置。在一些示例中,可以使用幻像块,其中剩余的块是未实际存储的零。该方案的容错性可能较低,例如,因为部分条带仅能够容忍与所选择的容错机制相关联的量的连续损坏。备选地,针对较大容错,可以保留部分条带的完整备份。

在一些示例中,在擦除码生成中,输入是正在被进行擦除编码的存储器的量、要使用的擦除编码方案、条带大小、块大小、如何处置任何部分条带、以及容错(即,每个条带多少可以从其恢复的坏块)。

在一些示例中,在接收到输入之后,对于所有不存在部分条带的数据,对条带的数目进行计数,并且基于所计算的偏移如上所述生成每个条带,以生成每个条带并且将条带提供给擦除编码算法。如果存储器是可字节寻址的nor闪存,则可以基于所计算的偏移直接使用指针来读取地址。

在一些示例中,还计算哈希值。在一些示例中,从另一机制计算哈希值,并且从另一机制被计算和被存储的哈希值可以利用擦除编码重新使用。

上文讨论了擦除编码生成过程。如果发生损坏,则可以基于擦除编码修复过程使用所生成的擦除码来修复损坏的数据。可以基于在存储器中检测到的损坏来发起修复过程,这在各种示例中可以以各种方式发生。在一些示例中,对于文件或可执行二进制以一些方式检测到损坏(诸如经由哈希值或签名验证),这可能导致发起修复过程。

在一些示例中,在修复过程中,首先通过针对哈希值检查块来确定坏块。在一些示例中,沿着已知损坏的闪存范围,对于闪存范围中的每个块,对该块所在的条带进行计算,找到该条带中的所有地址,并且对于这些块,针对已知的哈希值来检查这些块的哈希值。在一些示例中,对于每个不匹配的哈希值,声明对应的块对该条带不利。

接下来,在一些示例中,将坏块的数目与容错进行比较。如果坏块为零个,则在一些示例中,该过程继续到下一条带。在一些示例中,如果存在一个或多个坏块,并且坏块的数目大于容错,则该条带将无法修复。在一些示例中,如果存在一个或多个坏块,并且坏块的数目小于或等于容错,则修复坏块,例如,通过利用条带数据和擦除编码块来调用所选择的擦除编码方案。

在一些示例中,为了修复坏块,所填充的条带随着哪个块是坏的的指示被传递通过擦除编码算法,并且针对该条带的擦除编码块的指针也被传递给该算法。在一些示例中,该算法然后返回经修复的块。在一些示例中,重新计算修复块的哈希值,并且进行确定该哈希值是否与针对该块的所存储的哈希值相匹配。在一些示例中,如果存在不匹配,则修复失败或所存储的块哈希值是坏的。

在一些示例中,范围中的每个块以这种方式被修复,或被跳过,因为其没有损坏。一旦完成,在一些示例中,可以进行确认该范围是否仍然损坏。例如,在一个示例中,基于不匹配的签名发现范围损坏,可以将该范围发送给最初执行签名检查的实体,然后该实体可以检查以确定范围是否仍然损坏,例如通过重新运行签名检查并且确认现在验证合格。

当由擦除编码保护的存储器的数据内容改变时,擦除码也可以被更新。首先,在一些示例中,输入存储器的被改变的范围。在一些示例中,对于每个块,使用如上述用于擦除码生成的相同过程来重新生成擦除编码数据。在一些示例中,每个生成的擦除编码块利用新块被覆写。

在其他示例中,将范围内的每个块与所存储的块哈希值进行比较。在这些示例中,随着这些块被覆写,仅哈希值不同的块使其擦除编码数据被重新生成。在一些示例中,哈希值匹配的块被跳过,例如,如果条带内的块的数据没有改变,则条带的擦除编码块不被更新。

说明性过程

为了清楚起见,根据由系统的特殊设备或组件以特殊顺序执行的操作来描述本文中描述的过程。然而,应当注意,其他过程不限于所陈述的序列、设备或组件。例如,某些动作可以以不同的顺序执行,并行地执行,被省略,或者可以由附加的动作或特征来补充,无论本文中是否描述了这样的顺序、并行性、动作或特征。同样,可以将本公开中描述的任何技术结合到所描述的过程或其他过程中,而不管该技术是否结合过程进行了具体描述。所公开的过程还可以在其他设备、组件或系统上或由其他设备、组件或系统执行,无论本文中是否描述了这样的设备、组件或系统。这些过程也可以以多种方式实施。例如,它们可以体现在制品上,例如,作为存储在处理器可读存储介质中的处理器可读指令,或作为计算机实现的过程来执行。作为备选示例,这些过程可以被编码为处理器可执行指令,并且经由通信介质进行传输。

图5是用于生成擦除码的过程(570)的示例数据流。

在所示示例中,步骤571首先发生。在步骤571,在一些示例中,计算擦除码的大小和字节。如图所示,步骤572接下来在一些示例中发生。在步骤572,在一些示例中,计算针对擦除码的条带的数目。

如图所示,步骤573接下来在一些示例中发生。在步骤573,在一些示例中,生成针对擦除码的每个块的每个条带,使得这些条带以图案交替。如图所示,步骤574接下来在一些示例中发生。在步骤574,在一些示例中,保存数据的每个块的哈希值。

该过程然后可以进行到返回框,在该处其他处理被恢复。

图6是用于修复数据的至少部分的过程(680)的示例数据流。

在所示示例中,步骤681首先发生。在步骤681,在一些示例中,对于数据的该部分的每个块,计算该块的条带。如图所示,步骤682接下来在一些示例中发生。在步骤682,在一些示例中,针对该块的所保存的哈希值检查该数据的该部分的每个块的哈希值。

如图所示,步骤683接下来在一些示例中发生。在步骤683,在一些示例中,将每个如下哈希值标识为坏块,针对该哈希值,数据的该部分的块的哈希值与该块的所保存的哈希值不匹配。如图所示,步骤684接下来在一些示例中发生。在步骤684,在一些示例中,对于每个标识的坏块,基于数据的块的条带和数据在针对数据的擦除编码中的对应块,生成针对坏块的修复块。

该过程然后可以进行到返回框,在该处其他处理被恢复。

图7是用于响应于数据的改变来更新擦除码的过程(790)的示例数据流。

在所示示例中,步骤791首先发生。在步骤791,在一些示例中,接收数据中的已经改变的范围。如图所示,步骤792接下来在一些示例中发生。在步骤792,在一些示例中,确定数据的该范围内的哪些块已经改变。

如所示,步骤793接下来在一些示例中发生。在步骤793,在一些示例中,重新生成针对数据已经改变的块的擦除码。如图所示,步骤794接下来在一些示例中发生。在步骤794,在一些示例中,保存每个重新生成的块的哈希值。

然后,该过程可以进行到返回框,在该处其他处理被恢复。

结论

虽然以上“具体实施方式”描述了本技术的一些示例,并且描述了预期的最佳模式,但无论在文本中上面如何详细描述,该技术都可以以多种方式实现。细节可以在实现方面变化,同时仍然被包含在本文中描述的技术中。如上所述,在描述本技术的某些特征或方面时使用的特殊术语不应当被视为暗示该术语在本文中被重新定义为限于与该术语相关联的任何特殊特征、特征或方面。通常,以下权利要求中使用的术语不应当被解释为将技术限制于本文中公开的具体示例,除非“具体实施方式”明确地定义了这样的术语。因此,该技术的实际范围不仅包括所公开的示例,而且还包括实践或实现该技术的所有等效方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1