加密的群编程

文档序号:144453 发布日期:2021-10-22 浏览:39次 >En<

阅读说明:本技术 加密的群编程 (Encrypted group programming ) 是由 克里福德·齐特洛 马库斯·翁泽尔德 桑迪普·克莉丝涅戈达 中田大辅 冈田伸介 斯蒂芬·罗斯 于 2020-02-07 设计创作,主要内容包括:公开了一种用于对多个非易失性存储器(NVM)设备进行编程的装置和方法。每个NVM设备自生成并存储唯一加密密钥。每个NVM设备从与所有NVM设备通信地耦接的多设备编程系统同时接收图像。每个NVM设备使用这样的NVM设备的唯一加密密钥对所接收到的图像进行加密,以针对每个NVM设备产生唯一的加密图像。每个NVM设备将其唯一的加密图像存储在这样的NVM设备的非易失性存储器内。然后可以将唯一加密密钥安全地传输至主机设备,以对从NVM设备之一访问的图像进行解密。(An apparatus and method for programming a plurality of non-volatile memory (NVM) devices is disclosed. Each NVM device self-generates and stores a unique encryption key. Each NVM device receives images simultaneously from a multi-device programming system communicatively coupled to all NVM devices. Each NVM device encrypts the received image using the unique encryption key of such NVM device to produce a unique encrypted image for each NVM device. Each NVM device stores its unique encrypted image in non-volatile memory of such NVM device. The unique encryption key may then be securely transmitted to the host device to decrypt an image accessed from one of the NVM devices.)

加密的群编程

相关申请的交叉引用

本申请是于2019年12月13日提交的美国非临时申请第16/714,274号的国际申请,该美国非临时申请要求于2019年3月4日提交的美国临时申请第62/813,657号的优先权和权益,所有这些申请的全部内容在此通过引用并入本文。

技术领域

本发明总体上涉及使用群系统对非易失性存储器件进行编程的领域。更特别地,本发明涉及将加密数据群编程到非易失性存储器设备中,以及对被编程到非易失性存储器设备中的这种加密数据的使用和访问。

背景技术

通常,将图像编程到非易失性存储器设备例如NOR闪存设备中对于原始装备制造商(OEM)而言可能是耗时且昂贵的活动。如果可能,OEM优选使用群编程器将图像的大部分(或全部)编程到设备中。当将相同的图像编程到多个设备中时,群编程器使得能够高生产力和低成本。当需要针对每个设备唯一地加密图像时,群编程方法是有问题的。

因此,对于使用群编程系统或其他类型的多设备编程器将唯一加密的图像编程到多个非易失性存储器设备中的改进的系统和技术存在持续需求。

发明内容

以下呈现了本公开内容的简化概要,以提供对本发明的某些实施方式的基本理解。该概述不是对本公开内容的广泛概述,并且其没有标识本发明的关键/重要元素或描绘本发明的范围。其唯一目的是以简化形式呈现本文公开的一些概念作为稍后呈现的更详细描述的序言。

在一个实施方式中,公开了一种对多个非易失性存储器(NVM)设备进行编程的方法。在每个NVM设备中,自生成并存储唯一加密密钥。在每个NVM设备中,还从与所有NVM设备通信地耦接的多设备编程系统同时接收图像。每个NVM设备使用这样的NVM设备的唯一自生成的加密密钥来对接收到的图像进行加密,以针对每个NVM设备产生唯一的加密图像。每个NVM设备将其唯一的加密图像存储在这样的NVM设备的非易失性存储器内。

在具体实现方式中,在每个NVM设备中对唯一加密密钥的自生成是由真随机数生成器、物理不可克隆函数(PUF)执行的,物理不可克隆函数(PUF)应用于在每个NVM设备中具有唯一响应的微结构。在其他示例中,密钥是基于存储在每个NVM设备中的唯一标识符以及/或者在每个NVM设备中配置的一个或更多个加密密钥参数自生成的。

在另一实施方式中,以块的形式接收图像,并且该方法还包括由每个NVM设备收集对应于每个NVM设备的页面大小的多个接收到的块并且在将收集的块加密到存储在非易失性存储器阵列中的加密的块集合中之前存储对应于每个NVM设备的页面大小的多个所接收到的块。在另一特征中,该方法包括验证图像是否被准确地编程、加密和存储在每个NVM设备中,并且此后在通过验证的每个NVM设备中停用这样的验证操作。

在另一实施方式中,在NVM设备中的第一NVM设备已经完成将其唯一的加密图像存储在第一NVM设备的非易失性存储器内之后,将第一NVM设备安装在包括主机设备的印刷电路板上。将唯一加密密钥从第一NVM设备传输至主机设备。在唯一加密密钥被传输之后,第一NVM设备可以销毁其存储在第一NVM设备中的唯一加密密钥,并且主机设备可以通过从第一NVM设备访问加密图像的一个或更多个部分并且使用被传输的加密密钥对所访问的加密图像的一个或更多个部分进行解密来执行现场操作。在另外的实施方式中,通过使用与私钥配对的公钥使用安全信道来传输来自第一NVM设备的唯一加密密钥,以用于(i)第一NVM设备利用私钥对唯一加密密钥进行加密以及(ii)主机设备利用与私钥配对的公钥对唯一加密密钥进行解密。

在另外的实现方式中,由每个NVM设备接收的图像是基于第二加密密钥的加密形式,并且该方法还包括:(i)在NVM设备中,以基于与公共加密密钥相关联的私有加密密钥的加密形式接收第二加密密钥;(ii)向每个NVM设备提供公共加密密钥;(iii)在加密和存储接收到的图像之前,每个NVM设备使用公共加密密钥对第二加密密钥进行解密;以及(iv)在对接收到的图像进行加密并且存储之前,每个NVM设备使用经解密的第二加密密钥对加密图像进行解密。

在替选实施方式中,本发明涉及一种NVM设备,该NVM设备包括:用于存储数据的NVM阵列以及用于生成并存储唯一加密密钥的密钥生成器。该设备包括可操作用于执行上述操作的任意组合的控制器。在系统实施方式中,NVM设备安装在印刷电路板上,该印刷电路板还包括与NVM设备通信地耦接的主机设备。NVM设备的控制器还被配置成用于(i)将唯一加密密钥传输至主机设备,以及(ii)在唯一加密密钥被传输之后,销毁存储在NVM设备的NVM阵列中的唯一加密密钥。在这方面,主机设备还被配置成用于在唯一加密密钥被传输之后通过从NVM设备的NVM阵列访问加密图像的一个或更多个部分并且使用所传输的加密密钥对所访问的加密图像的一个或更多个部分进行解密来执行现场操作。

下面参照附图进一步描述本发明的这些和其他方面。

附图说明

图1是用于对多个NVM设备进行并行编程的群编程环境的图形表示。

图2是根据本发明的一个实施方式的用于对自加密NVM设备进行编程的群编程器环境的图形表示。

图3是示出根据本发明的具体实现方式的自加密过程的流程图。

图4是根据本发明的一个实施方式的具有经历提供的自加密NVM设备的印刷电路板的图形表示。

图5A是示出根据本发明的具体实现方式的用于配对和提供自加密NVM设备的过程的流程图。

图5B是示出根据本发明的具体实现方式的安全加密密钥传输过程的流程图。

图6表示根据本发明的

具体实施方式

的在提供自加密NVM设备之后的图4的PCB。

图7是示出根据本发明的替选实施方式的安全编程过程的流程图。

图8图示了根据一些实施方式实现的包括NVM设备的处理系统的框图。

图9是根据本发明的一个实施方式的加密电路的图形表示。

具体实施方式

在以下描述中,阐述了许多具体细节以提供对本发明的透彻理解。可以在没有一些或这些具体细节的情况下实践本发明。在其他情况下,没有详细描述公知的处理操作,以免不必要地模糊本发明。虽然将结合具体实施方式来描述本发明,但是应当理解,本发明并不旨在受限于这些实施方式。

非易失性存储器(NVM)设备通常包括集成电路设备,该集成电路设备包括至少一个非易失性存储器模块,例如可编程存储器阵列。NVM设备可以包括以下设备类型:PROM(可编程只读存储器)、EPROM(可擦除PROM)、EEPROM(电可擦除PROM)、闪存(例如,加利福尼亚州圣何塞市的赛普拉斯半导体公司的Semper Secure NOR闪存设备)、eMMC(嵌入式多媒体卡)、MRAM(磁阻随机存取存储器)、FeRAM(铁电RAM)、NVRAM(非易失性RAM)和MCU(微控制器单元)。NVM设备通常在与其他集成电路设备一起布置、路由和封装以形成系统或产品之前或之后被编程。注意,术语非易失性可编程设备和非易失性存储器设备在此可互换使用。例如,一个或更多个NVM设备和其他设备类型可以被布置、接合、路由和封装在封装系统设备中的印刷电路板上。

通常期望将唯一加密的图像编程到由原始设备装备制造商(OEM)制造的每个NVM设备中,以用于系统或产品中。一种方法是在板上单独地对每个NVM设备进行唯一编程,这种方法非常耗时,并且因此在对包含这种NVM设备的系统的生产中会造成显著重大瓶颈。

另一种方法是实现用于将加密图像同时编程到多个存储器设备上的群编程系统。除了群编程器例如仅用于某些电路类型的专用编程器例如FPGA、微控制器和EEPROM编程器之外,还可以实现其他多设备编程器。然而,这种方法通常限于将相同的加密图像编程到多个NVM设备上。

图1是用于将同一图像104并行编程到多个NVM设备例如108a至108c(例如,NVM 1、NVM 2、……、和NVM n)的群编程环境100的图形表示。如所示出的,群编程器106能够例如经由网络102从任何合适类型的服务设备或数据库系统访问图像数据104。图像104可以是任何合适的形式,例如明文或加密明文。然而,群编程器仅可以访问单个图像104以编程到多个NVM设备(例如,108a至108c)中。也就是说,将同一图像104编程到NVM设备中的每一个中。尽管群编程系统可以一次有效地将图像编程到多个NVM设备中,但是群编程系统当前不具有将唯一的加密图像同时编程到NVM设备中的每一个的能力。

鉴于以上,提供有助于在群编程系统环境(或用于NVM的其他类型的并行编程环境)中进行唯一加密的NVM设备将是有益的。在某些实施方式中,非易失性可编程设备可以被配置成集成若干密码功能,包括执行加密和密钥生成的能力。内置于非易失性(NVM)存储器设备中的加密功能可以允许群编程环境中的设备中的每一个在向设备提供相同的未加密图像时执行自加密。加密密钥稍后可以以安全的方式传输至微控制器单元(MCU)(或任何其他主机或主处理器/控制器单元),然后该微控制器单元可以在现场操作期间访问NVM设备的数据。

图2是根据本发明的一个实施方式的用于对自加密NVM设备(例如,208a、208b、……、和208c)进行编程的群编程器环境200的图形表示。图3是示出根据本发明的具体实现方式的自加密过程300的流程图。将在图2的示例环境200的上下文中并且根据多个实施方式来描述该过程300。每个自加密NVM设备可以包括任何合适的自加密功能,其通常可以在如下面进一步描述的硬件和软件的任何合适的组合中来实现。

如所示出的,群编程器206与每个NVM设备(例如,208a至208c)通信地耦接。例如,编程器可以包括多个插槽,NVM设备插入至所述多个插槽中用于编程。这些插槽可以内置于编程器设备本体中或者附接至与编程器本体耦接的线缆(但是这种配置主要用于板上编程)。根据NVM设备的引脚配置和用于数据写入的通信协议,编程器可以包括用于对多个设备进行编程的任何合适类型和数目的插槽。作为示例,群编程器可以包括4个、8个、16个或100个插槽。

编程器还可以利用任何合适的通信协议用于对关于多个NVM设备的图像进行编程(和验证)。对于闪存/EEPROM/MCU存储器,串行外围接口(SPI)协议可以用于通过与NVM设备中的每一个耦接的SPI总线推送(或接收)数据。在更具体的示例中,编程器的SPI总线可以使用四路IO配置,该四路IO配置针对每个NVM设备包括以下信号/引脚:1个用于启用每个设备的芯片选择引脚(CS)、4个用于串行数据/地址/命令输入和输出的半双工串行输入/输出引脚(IO0、IO1、IO2、IO3)、以及1个时钟引脚(CK)。CK信号可以用于基于极性值和相位值的四种不同组合来指定关于IO信号(命令、程序、读取等)的四种不同模式。也可以在IO信号的特定周期中指定不同的模式。当然,编程器可以使用其他引脚配置,例如3线或4线配置,但不如四路IO配置那样有效。每个NVM设备可以共享IO信号和CLK信号。然而,每个NVM设备可以接收其自己的CS信号以验证来自不同NVM设备的数据。

每个NVM设备可以包括用于生成唯一加密密钥的密钥生成器(例如,214a、214b和214c),该唯一加密密钥被接收并存储在其相应的加密密钥存储寄存器(例如,210a、210b和210c)内。每个NVM设备还可以包括加密引擎(例如,212a、212b和212c),加密引擎用于从群编程器206接收图像204,对这样接收到的图像进行加密,并且将所得到的加密图像(例如,216a、216b和216c)存储在例如NVM设备的非易失性存储器阵列(未显示)中。

如图3所示,在操作302中,最初可以将多个NVM设备加载到多设备编程器(例如,群编程器206)的对应插槽中。例如,将多个NVM(NVM 1、NVM 2、……、NVM n)加载到群编程器206的多个插槽中。根据NVM设备类型或状态,每个经加载的NVM设备可能包含没有被编程的图像数据或者包含将被部分或完全覆写的已编程的图像数据。

在操作304中,每个NVM还生成并存储唯一加密密钥。例如,NVM 208a的密钥生成器214a生成唯一加密密钥,然后将唯一加密密钥存储在加密密钥存储装置210a中。密钥生成器可以在写入过程之前的任意时间或与写入过程同时生成唯一加密密钥。可以以任何合适的方式触发密钥生成过程。例如,可以在编程之前由主机设备或由群编程器制造NVM之后启动密钥生成程序。例如,可以对群编程器进行编程以启动预定义命令,该预定义命令针对在编程之前加载到编程器中的每个NVM设备启动密钥生成。替选地,NVM可以被配置成当其接收到在IO总线信号中指定的“程序启动”指示时以及在接收到第一图像部分之前/之后并且在加密这样的图像部分之前生成其唯一加密密钥。

可以使用任何合适的密钥生成技术来生成唯一加密密钥。作为示例,密钥生成器可以采用真随机数生成器(TRNG)或物理不可克隆函数(PUF)的形式,或者使用本领域已知的其他随机数算法的生成器。PUF是物理上限定的“数字指纹”,其用作用于在NVM中制造的半导体微结构的唯一标识符,例如基于在半导体制造期间自然发生的唯一物理变化。PUF是体现在物理结构中的物理实体。在PUF实现方式中,密钥生成器可操作以将物理刺激应用于选定的物理微结构,该选定的物理微结构由于刺激与设备的物理微结构的复杂交互以及用于形成唯一密钥的响应而以不可预测的方式反应。例如,密钥生成器可以使用模糊提取器或密钥提取器从物理微结构中提取唯一的强加密密钥。在另一密钥生成示例中,唯一密钥可以基于非随机数例如与NVM相关联的唯一标识符(例如,序列号),或者被配置成生成可能是唯一(例如,具有高于预定义阈值的似然值)的密钥的任何合适的熵源。密钥生成器可以以硬件和软件的任何合适的组合来实现。

密钥生成可以使用静态算法或者是动态可配置的。在一个示例中,例如通过将与所选参数对应的预定义值写入一个或更多个寄存器例如用于NVM 208a的加密参数寄存器220a,可以在NVM上配置一个或更多个加密密钥参数。当然,所有的NVM都可能具有这样的特征。也就是说,每个NVM可以被预先配置或设置成指定用于在编程之前要如何执行加密的一个或更多个加密参数。示例设置加密参数包括加密算法选择、密钥长度、初始值等。

在操作306中,编程器(例如,206)可以将第一图像部分推送至所有NVM设备中。如上所述,群编程器206以任何合适的方式——例如经由网络202从也与这样的编程器206通信地耦接的另一个服务器/存储设备——获得图像204。另外,图像可以从计算机可读介质下载到编程器中。编程过程可以利用任何合适的协议。在四路IO接口示例中,每个NVM以16字节块接收图像。当然,根据引脚的特定配置,可以接收其他块大小。图像数据本身可以是任何合适的格式,其可以是加密或者是未加密的图像例如明文等。

在操作307中,每个NVM还使用其唯一加密密钥对其接收到的图像部分进行加密。在操作308中,每个NVM还将每个经加密的图像部分存储在其目标存储器地址中。例如,NVM208a的加密引擎212a对图像204的每个接收到的图像部分进行加密。在加密之前,加密引擎也可以等待,直到收集到足够的图像部分来填充NVM的存储器阵列的对应目标页面。例如,如果编程器一次向NVM 208a推送16字节的图像204(经由4个IO引脚),则加密引擎212a可以被配置成:等待,直到接收和收集到16个具有16字节图像部分的块,然后从目标阵列地址开始对所有256字节的图像数据一起加密并存储。NVM的存储器阵列的一部分可以用于存储多个接收到的图像块,直到接收到的图像块的大小对应于目标地址或页面大小。替选地,每个图像块被临时存储、加密,并且然后临时存储,直到收集到足够的加密块然后被写入目标地址。如果存在足够的存储器,则可以分别收集整个图像或加密图像,然后再分别对整个图像或加密图像进行加密或存储。

然后在操作310中,可以确定编程是否继续。也就是说,确定编程器是否用信号通知编程过程完成。针对每个接收到的图像部分继续重复自加密过程,直到编程结束为止。

在操作312中,还可以可选地验证写入用于每个NVM设备的目标阵列地址的加密图像。在将每个加密图像部分写入NVM 208a的阵列之后,每个NVM设备的加密引擎还可以被配置成对每个图像部分进行解密和比较。可以针对这样的图像部分(例如,通过加密引擎212a)更新写入状态218a并且可以由编程器读取和检查该寄存器以确定图像部分是否被成功加密并写入阵列。替选地,每个NVM设备可以被配置成对经加密的图像数据的所有(或每个块)进行解密,并且将经解密的数据传输至编程器或主机处理器,用于出于验证的目的与原始图像进行比较(或经由校验和比较),但是该验证过程不太安全。如果加密图像未通过验证,则在操作314中,可以将图像(或图像部分)重写入NVM或将NVM作为有缺陷丢弃。

在对NVM进行编程(和验证)之后,然后在操作316中,可以停用针对NVM的编程过程。例如,可以经由NVM寄存器禁用在验证期间使用的读取验证操作。

在利用加密图像对NVM进行编程之后,然后可以将其安装至印刷电路板上。图4是根据本发明的一个实施方式的具有经历由主机设备提供的自加密NVM的印刷电路板的图形表示。图5A是示出根据本发明的具体实现方式的用于配对和提供自加密NVM的过程(500)的流程图。

最初,在将一个或更多个NVM安装至目标PCB上之后,可以提供每个NVM设备(例如,208a)并且将每个NVM设备(例如,208a)与主机主设备例如MCU设备配对,该主机主设备也可以包括NVM。如图5A所示,在操作502中,在提供期间,可以使用主机主设备与自加密NVM从设备之间的安全信道将加密密钥从NVM从设备传输至主机主设备。在图4中,在主机主设备404与NVM从设备208a之间建立安全信道410,使得可以将加密密钥从NVM从设备208a的加密密钥存储装置210a安全地传输至主机主设备404的加密密钥存储装置406。主机主设备404可以被配置有NVM总线控制器408,以例如使用如本文进一步描述的公钥-私钥配对来实现该安全传输。

另外,主机设备和从设备将被配置/编程有用于实现该安全密钥传输的命令序列。例如,命令序列可以包括密钥传输请求,其中NVM设备利用非对称密钥对的公钥对自生成的加密密钥进行加密。可以在较早的步骤中在NVM设备中提供公钥。然后可以将经加密的自生成加密密钥传输至主机以使用来自非对称密钥对的私钥进行解密。可以在前面的步骤中在主机中提供私钥。

被配置成自生成加密密钥并且对传入图像数据进行加密的NVM设备将极大地减少在制造过程中使用NVM设备组装和提供系统所需的总时间。也就是说,该编程和自加密过程可以以联动方式执行,而不是在线执行。以联动方式执行编程还将减少在在线编程步骤之前组装整个PCB的要求。

在加密密钥被(安全地或不安全地)传输至主控主机之后,然后在操作504中,NVM从设备可以销毁其加密密钥。在操作506中,NVM从设备的密钥生成器和加密引擎也可以可选地被停用或禁用。图6表示根据本发明的具体实施方式的在提供自加密NVM从设备之后的图4的PCB。如所示出的,从NVM从设备208a的加密密钥存储装置210a中擦除密钥。NVM从设备208a的密钥生成器214a和加密引擎212a也都被禁用。

在主机主设备已经提供了NVM从设备之后,然后在操作508中,主机主设备可以在NVM总线事务期间使用所获得的加密密钥(例如,经由图6的存储器总线610)用于加密数据。也就是说,主机主设备404然后可以读取NVM从设备中的加密图像216a,并且然后可以由主机主设备404的解密引擎412基于从加密密钥存储装置406获得的加密密钥对所检索的加密图像进行解密。主机主设备和NVM从设备也可以执行非加密事务。

可以以任何合适的方式建立安全信道,以促进加密密钥的安全传输,而不允许除了提供主机主设备之外的NVM从设备外部的任何实体访问加密密钥。例如,私钥-公钥过程可以用于密钥交换。

图5B是示出根据本发明的具体实现方式的安全加密密钥处理过程的流程图。该过程可以在每个NVM设备上实现。如所示出的,在操作552中,NVM从设备最初可以被提供有公共传输密钥并且主机主设备被提供有私有传输密钥。例如,主机主设备可以访问另一安全设备上的私钥或者被配置有由NVM从设备提供商或与NVM从设备提供商合作的第三方提供的这种私钥。在一个示例中,NVM从设备可以带有包含私钥的软件,该软件可以上传至主机主设备或者可由这样的设备从任何形式的计算机可读介质访问。

然后,在操作554中,NVM从设备可以在将这样的自生成的加密密钥发送至主机主设备之前利用公共传输密钥对其自生成的加密密钥进行加密。然后,在操作556中,主机主设备可以使用其私有传输密钥对经加密的自生成加密密钥进行解密并存储。然后,在操作558中,主机主设备可以删除其私有传输密钥,并且NVM从设备删除其公共传输密钥。在一个实施方式中,只有公钥持有者可以对加密密钥进行加密,而只有私钥持有者可以对加密密钥进行解密。公钥和私钥两者都优选地被安全地维护(例如,保密)。

安全信道对于加密密钥传输是可选的。也就是说,加密密钥可以在没有被公钥加密的情况下或者没有针对密钥实现任何类型的安全性的情况下被传输。然而,用于加密密钥传输的安全信道对于还保持经加密的图像数据的完整性是优选的。

某些实施方式允许主机主设备从NVM从设备安全地访问加密密钥和经加密的图像数据,而无需将加密密钥暴露于NVM从设备或主机主设备外部。首先,加密密钥可以从NVM设备安全地传输至主机设备,之后加密密钥被删除并且不再暴露于任何设备。其次,主机主设备然后可以安全地访问来自NVM从设备的经加密的图像数据,而无需将基础图像数据暴露于从设备或主设备外部。

可以另外实现其他安全措施以在NVM设备的编程期间保护图像。图7是示出根据本发明的替选实施方式的安全编程过程700的流程图。尽管安全编程可以在将对同一图像进行编程的所有NVM设备上实现,但是出于说明的目的,关于单个NVM描述了安全编程过程700。

在对每个NVM设备进行编程之前,在操作702中,可以最初利用第一图像加密密钥对图像进行对称加密。该第一图像加密密钥是保持机密的,并且在编程过程期间不会暴露于潜在的攻击者。为了实现该第一图像加密密钥的机密性,在操作703中,还可以利用与私钥相关联的公钥对该第一图像加密密钥进行非对称加密。该非对称加密可以由NVM设备制造商和所有者的某些可信实体安全地执行。第一图像加密密钥和非对称公钥也可能仅被可信实体例如NVM制造商或所有者的代理知道,并且不会暴露于程序员或外部攻击者的实体。例如,对应私钥可以仅被编程到NVM设备中,使得该对应私钥不会暴露于程序员或外部攻击者的实体。

然后,在操作704中,可以将经对称加密的图像和利用公钥加密的经加密的第一图像加密密钥提供给编程器。因此,图像和第一图像加密密钥可以在向编程器传输图像和第一图像加密密钥期间保持机密和不暴露。

然后,在操作706中,编程器可以将利用公钥加密的经加密的第一图像加密密钥推送至NVM设备。然后,在操作707中,NVM使用存储在NVM设备上并且与公钥相关联的相关联私钥对第一图像加密密钥进行解密并存储。

然后,在操作708中,NVM设备可以使用所存储的经解密的第一图像加密密钥来对从编程器接收到的任何加密的图像部分进行解密。编程过程可以继续,在操作710中,NVM设备使用其自生成的第二图像加密密钥对经解密的图像部分进行重新加密,例如,如上面在图3中所描述的。

使用加密图像和私钥-公钥对图像加密密钥对进行加密的安全编程过程可以通过对所有要编程的NVM设备使用相同的私钥-公钥对来跨所有NVM设备实现。否则,不同的第一图像加密密钥和私钥-公钥对可以用于不同的NVM。

在替选实施方式中,用于NVM编程的加密密钥可以在群编程之前由第三方生成并编程到NVM设备中,而不是自生成的。在另一示例中,加密密钥数据库可以在群编程步骤期间使用,并且然后在存储器与PCB上的主机MCU配对时“重新关联”。例如,主机设备可以访问与针对对应NVM设备的唯一标识符相关联的加密密钥数据库。也就是说,由特定公司要使用的针对一组特定NVM设备的一组密钥可以仅被提供给这样的公司。在特定NVM设备的提供期间,主机设备然后可以从数据库而不是NVM设备中检索与NVM设备相关联的加密密钥。在其他实施方式中,加密密钥可以基于非随机数,例如NVM设备的唯一标识符,例如序列号。

图8示出了根据一些实施方式实现的包括NVM设备的处理系统的框图。处理系统800通常包括经由地址总线806、数据总线808和控制总线810以常规方式耦接至处理器804的非易失性存储器802。本领域技术人员将理解,图8的处理系统800出于说明本发明的目的已经被简化并且不旨在是完整的描述。

在各种实施方式中,处理系统800可以包括处理器804,处理器804可以是通用或专用处理设备的类型。例如,在一个实施方式中,处理器可以是可编程系统或控制器中的处理器,所述可编程系统或控制器还包括非易失性存储器,所述可编程系统或控制器例如可以从加利福尼亚州圣何塞的赛普拉斯半导体公司商购获得的可编程片上系统或PSoCTM控制器。

非易失性存储器802可以包括存储器阵列852。因此,存储器阵列852可以被组织为非易失性存储器单元(该图中未示出)的行和列。在实施方式中,非易失性存储单元可以包括但不限于闪存单元、F-RAM单元、M-RAM单元、R-RAM单元、EEPROM单元、SONOS单元。存储器阵列852经由多个选择线和读取线816(针对存储器阵列的每一行的至少一个选择线和一个读取线)耦接至行解码器860。存储器阵列852经由多个位线820还耦接至列多路复用器854。应当理解,公共源极线可以被实现为线820或线816的一部分。存储器阵列852可以耦接至多个感测放大器858以从中读取多位字。

NVM 802还可以包括附加存储装置853,例如SRAM,用于在编程到阵列中之前临时存储图像块、加密图像块或片段等。

非易失性存储器802还包括命令和控制电路824,该命令和控制电路824用于控制行解码器860、列多路复用器854和感测放大器858,并且从感测放大器858接收读取数据,以及生成存储器阵列852的操作所需的电压,该电压可以被路由至行解码器860和列多路复用器854。

在各种实施方式中,控制电路824可以包括可以被配置成实现先前描述的技术的一个或更多个处理器和专用存储器。以这种方式,系统800可具有专用处理单元,例如控制电路824,其可以被配置成实现先前描述的过程。此外,在一些实施方式中,控制电路824可以在专用集成电路(ASIC)中实现,或者可以在现场可编程门阵列的可再编程逻辑中实现。

命令和控制电路824还可以包括用于基于如上所述的自生成加密密钥对接收到的图像执行加密的加密(和解密)和密钥生成电路826。因此,加密和密钥生成电路可以包括控制逻辑,例如控制逻辑830。

在各种实施方式中,命令和控制电路824还可以被配置成控制行解码器860以通过向第一行中的第一选择线施加电压来选择存储器阵列852的第一行用于编程操作,并且通过向第二行中的第二选择线施加另一电压来去选择存储器阵列的第二行。命令和控制电路824还可以被配置成控制列多路复用器854以通过向第一列中的第一位线施加电压来选择第一行中的存储单元进行编程,并且通过向第二列中的第二位线施加另一电压来禁止第一行中的未选择的存储单元进行编程。行解码器860或列多路复用器854还可以被配置成向一个或更多个公共源极线施加电压,该公共源极线可以耦接至包括在存储器阵列852中的存储器单元。

在各种实施方式中,通信接口811可以被配置成向其他系统部件发送数据并且接收数据,或者可以被配置成通过网络发送并接收数据包或数据段。例如,通信接口811可以经由总线或通信网络通信地耦接至用户接口设备。通信接口811可以被配置成从可以包括在数据处理系统或计算机系统804中的用户接口设备接收数据。在各种实施方式中,这样的数据可以包括识别来自用户的损耗均衡参数的输入。在各种实施方式中,通信接口811可以是支持以太网接口、帧中继接口、电缆接口和DSL接口的设备。另外,可以提供各种超高速接口,例如快速以太网接口、千兆位以太网接口、HSSI接口、POS接口、FDDI接口等。通常,这些接口可以包括适于与适当介质进行通信的端口。在一些情况下,它们还可以包括独立的处理器,并且在一些情况下,还包括易失性的例如某种类型的RAM。

加密(和解密)电路可以以硬件和/或软件的任何合适的组合来实现。图9是根据本发明的一个实施方式的加密电路902的图形表示。如所示出的,加密电路可以包括用于基于接收到的加密密钥908对4个地址线904上串行接收的图像部分执行一个或更多个加密算法的高级加密标准(AES)块906。在该示例中,实现了流密码以使延迟最小化,但是也可以使用其他类型。图像数据可以以16字节块的形式输入在所选地址线904上。当然,NVM设备802的任何合适的输入引脚都可以用于输入要加密的图像数据。在该示例中,密钥的长度为128位,但是也可以使用其他长度。在该实现方式中,块在16字节边界上传输。例如,对1个字节的数据进行编程可能需要16个字节的存储空间,而不允许增量编程或覆写。

加密数据可以经由数据输出线910以16字节块对应地输出至例如NVM阵列。加密电路902还可以包括多位异或门916a和916b,当数据要以未加密方式传输时,所述多位异或门916a和916b可以由AES块906用0来驱动。

尽管出于清楚理解的目的已经对前述发明进行了一些详细的描述,但是将明显的是,在所附权利要求的范围内可以实施某些改变和修改。应当注意,存在许多实现本发明的过程、系统和装置的替选方式。因此,本实施方式被认为是说明性的而非限制性的,并且本发明不限于本文给出的细节。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:安全接口控件高级页管理

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类