向一次性编程数据提供安全性的系统和方法与流程

文档序号:16370226发布日期:2018-12-22 08:40阅读:233来源:国知局
向一次性编程数据提供安全性的系统和方法与流程

本申请要求于2016年4月18日提交的美国非临时申请no.15/132,026的优先权和权益,其通过引用整体并入本文,如同整体完全阐述在下面并且用于所有可适用的目的。

本申请涉及一次性编程(otp)数据并且更具体地涉及向otp数据提供安全性。

背景技术

诸如智能电话的移动计算设备包含多处理器芯片以提供计算能力。多处理器芯片具有存储在其上的、在一次性编程(otp)存储器中的安全数据。otp存储器的示例包括可以通过选择性地熔断阵列中的熔丝中的一些熔丝而被编程一次的电子熔丝的阵列。例如,熔断的熔丝可以表示二进制一,并且未熔断的熔丝可以表示二进制零。这些熔丝可以被熔断仅仅一次并且在被熔断之后不可以被修复,使得通过熔断熔丝存储的数据在编程之后被认为是只读的。

继续该示例,在芯片的上电或启动期间读取安全数据。可以被存储的安全数据的示例包括硬件密钥、启动只读存储器(rom)补丁、芯片配置信息以及原始设备制造者(oem)信息。安全数据与芯片的期望功能直接相关,并且认为不期望使数据被篡改。篡改数据的方式的示例包括黑客操纵芯片上的电压,以改变数据读出或者操纵到otp存储器的控制信号。

一个示例传统otp存储器模块包括多个行和多个列。最上面的行包含二进制0和1的预编程的校验模式。在预编程的校验模式下面的行是具有安全数据的行。固件处理在上电期间读取校验模式行以确定是否存在攻击,其中,假设包括在芯片处的较低电压的攻击将导致校验模式行被不正确地读出。以这种方式,固件处理可以将其读出的内容与校验模式的已知值进行比较,并且如果存在不匹配,则固件处理可以确定已经存在对otp模块的攻击。然而,该方法可能仅仅在上电期间有效,并且一旦芯片运行并且当安全数据被实时读出时,就不能阻挡攻击。

目前存在对保护安全otp免受各种攻击的更健壮的技术的需求,各种攻击包括在启动之后发生的攻击。



技术实现要素:

各种实施例包括通过将otp数据存储在还包括校验模式位的字中来保护安全otp数据免受攻击的系统和方法。读取安全otp数据的操作还读取校验模式位。

在一个实施例中,一种系统包括:处理芯片,其具有:一次性编程(otp)存储器部分,otp存储器部分存储安全数据和校验模式,安全数据和校验模式被存储在多个字内,其中,每个字包括安全数据位和校验模式位;以及多个感测放大器,感测放大器中的每个感测放大器对应于otp存储器部分的相应列,并且字中的每个字对应于otp存储器部分的相应行。

在另一实施例中,一种方法包括:从处理芯片的一次性编程(otp)存储器读取多个字,其中,字中的每个字包括用于芯片的安全数据和对应于校验模式的位;将对应于校验模式的位与预编程的校验模式进行比较;基于将对应于校验模式的位与预编程的校验模式进行比较,来检测错误;以及响应于检测到错误,由处理芯片执行动作。

在另一实施例中,一种处理芯片包括:用于将安全数据和校验模式存储在一次性编程(otp)存储器元件的阵列中的部件,安全数据和校验模式被存储在otp存储器元件的阵列中作为多个字,其中,每个字包括安全数据位和校验模式位;以及用于从otp存储器部分读出字的部件;以及用于通过将所读出的字的校验模式位与预编程的模式进行比较来验证安全数据的部件。

在又一实施例中,一种方法包括:在处理芯片的成功启动之后,从处理芯片的一次性编程(otp)存储器模块读取芯片配置数据,其中,读取芯片配置数据包括从otp存储器模块读取多个字,其中,字中的每个字包括对应于配置数据的位和对应于校验模式的位;确定对应于校验模式的位与预编程的模式一致;以及响应于该确定而应用芯片配置数据。

附图说明

图1是根据各种实施例的示例otp模块的图示。

图2是根据一个实施例的图1的otp模块的示例物理架构的图示。

图3是根据一个实施例的读取裕量调整的图示。

图4是根据一个实施例适配的对读取裕量进行调整的示例电路的图示。

图5是根据一个实施例的从otp模块读取数据的示例方法的流程图的图示。

具体实施方式

各种实施例提供了安全地存储和访问otp模块中的数据的系统和方法。图1示出了具有被编写为otp模块中的列的1和0的预编程的校验模式的示例实施例。固件处理在逐行的基础上从otp模块读出数据,并且一次读取完整行。在该示例中,行也被称为字。因此,当固件处理访问行中的安全数据时,其还访问在行的开头处的已知校验模式的位和在行的结尾处的校验模式的位。

或者,换句话说,校验模式被嵌入在安全熔丝数据内,使得安全熔丝数据的读取包括校验模式的位。一些示例实施例确保对安全数据的访问还包括校验模式的位,无论访问是在启动时还是在芯片开始运行之后发生的。

各种实施例另外包括读出数据的方式,使得如果otp模块中的位失败,则校验模式的位应当首先失败。这在一些实施例中可以是有利的,因为其防止攻击者能够在otp模块处应用不期望的电压时成功地读出数据。在图1中图示了示例otp模块的物理布局。

继续该示例,使用用于访问安全数据的相同的控制信号和电源,来访问校验模式位。当读取信号进来时,其在字线(wl)解码器处被解码,字线(wl)解码器应用电压以选择字线(行)。在短时间量之后,全局控制逻辑激发感测放大器使能信号以读取在列中的每列处的值。当读取整行时,控制逻辑激发从第一列到最后一列的感测放大器中的每个感测放大器,从而捕获触发器中的读出的数据,每位一个触发器。

感测放大器中的每个感测放大器包括数据输入和参考输入,并且用作比较器,从而在电压高于参考的情况下输出二进制1并且在电压低于参考的情况下输出二进制0。这便是示例otp模块中的数据如何被读取的,并且一个优点在于:一般将期望影响控制信号的攻击以类似的方式影响位中的每个位,由此使得难以在不影响校验模式位的情况下影响安全数据位。图2更详细地图示了该概念。

各种实施例通过在读取校验模式位时收紧裕量,来使校验模式位的读取失败比安全数据位的读取失败更有可能。这样的实施例可以包括允许在感测放大器处的可选择电阻的电路,其中电阻基于当前正被读取的行的地址来选择。控制块检查正被读取的行的地址,并且响应于该地址,选择收紧读取校验模式中的一或零的裕量的电阻。这样的实施例的优点在于:读取失败更有可能被检测到,因为其一般被预期为影响校验模式位,然而对比之下,影响安全数据但是不影响校验模式位的读取失败可能不会被检测到并且引起设备的不太理想的操作。

图1是图示各种实施例可以被实现于其中的示例otp模块100的简化图。otp模块100在图1中被单独示出,但是应理解,其可以被包括在处理设备中,处理设备诸如为中央处理单元(cpu)、数字信号处理器(dsp)、具有多个片上处理核心的片上系统(soc)、包括多个芯片的封装等。

根据本文中的示例,otp模块100被实现于其中的处理设备可以包括平板电脑、智能电话或其他合适的设备。然而,实施例的范围不限于智能电话或平板电脑,因为其他实施例可以包括膝上型计算机或其他合适的设备。实际上,实施例的范围包括任何特定计算设备,无论移动与否。

otp模块100被示出为具有以行和列布置的存储器元件的阵列。为便于图示,列被指出为子集,其中子集102和103包括校验模式,并且子集104和105包括安全数据。每行是可以在控制块112的指引下从otp模块100读出的字。

安全数据的示例可以包括但不限于用于处理设备的配置信息、用于处理设备的硬件密钥、启动rom补丁、oem制造者信息等。安全数据一般是由处理设备的制造者或者处理设备被实现到其中的计算机的制造者所包括的数据,并且安全数据通常仅仅由处理设备内的底层处理读取,并且不旨在可由终端用户访问。安全数据可以被加密或者不被加密。

校验模式本身在该示例中被示出为一和零的重复模式,并且每行中的模式与其相邻行偏移。具体地,在列103中,给定行可以具有跟随有二进制一的二进制零,并且与其相邻的并在其下面的行具有跟随有二进制零的二进制一。这产生具有逐行偏移的交替模式。当然,实施例的范围不限于图1中示出的具体模式,因为在各种实施例中可以应用任何合适的模式。一般有利的是:具有包括二进制一和二进制零两者的模式,以更全面地检测攻击。

安全数据和校验模式使用熔丝被保存在otp模块100中。例如,熔断的熔丝产生高电阻,并且可以被读取为二进制一,而未熔断的熔丝可以具有低电阻,并且被读取为二进制零。然而,实施例的范围可以包括如下系统,其中熔断的熔丝被读取为二进制零,并且未熔断的熔丝被读取为二进制一。另外,实施例的范围不限于熔丝,因为可以使用其他合适的存储器元件。其他示例包括反熔丝和非易失性ram。

在图1中要特别指出的是,校验模式的位被包括在与安全数据相同的字中。因此,从otp模块100读取字的操作将必定读取校验模式的四个位以及安全数据的位。尽管以概念性和高级方式示出了图1,但是图1的结构指示各种实施例的物理结构——存储器元件的行和列,每个存储器元件存储数据的位,其中,数据被按行(字)读出。

如下面更详细地所解释的,otp模块100还包括感测放大器110,其操作用于读取存储在存储器元件中的数据。如下面更详细地所解释的,otp模块100包括触发器和驱动器111以捕获被读出的数据。

如下面更详细地所解释的,控制块112包括固件逻辑以对读取请求进行解码,向字线、位线、感测放大器以及触发器应用控制信号。验证逻辑120包括固件和/或软件逻辑,其在从otp模块100读出字时接收字,将校验模式的位与预编程的模式的位进行比较,并且基于比较来指示错误或者不指示错误。例如,在验证逻辑120处校验模式的位与预编程的模式的位之间的不匹配可以指示攻击,并且验证逻辑可以因此指示错误。另一方面,如果在验证逻辑120处校验模式的位与预编程的模式的位匹配,则验证逻辑120可以根据正常操作来验证otp模块100的内容。在一些实施例中,验证逻辑120将信号发送给控制块112以请求由otp模块100存储的特定字。

一些传统otp模块仅仅在启动时操作。然而,图1中的otp模块100特别适合于在启动期间或者在任何其他合适的时间期间使用,因为无论何时安全数据被读出时,校验模式的位都被读出。因此,甚至在成功启动之后对安全熔丝数据的请求将也读取校验模式的位。

图2是根据一个实施例的图1的otp模块100的更详细图示。存储器元件阵列210被示出为包括用作存储器元件的熔丝(例如,熔丝211),并且阵列210以列和行来布置。图2旨在为说明性的,并且其为了便于图示而省略了一些特征。例如,各种实施例可以包括任何合数数量的列,诸如三十二列或六十四列,但是图2为了便于图示而省略了许多列。另外,各种实施例可以包括任何合数数量的行,而图2为了便于图示示出了四行。

阵列210中的存储器元件的列对应于图1中的数据的列,尽管图2示出了更少的列。类似地,阵列210中的存储器元件的行对应于图1中的数据的行。每列与感测放大器相关联,其中图2示出了两个感测放大器110。图2为了便于图示而省略了许多感测放大器。感测放大器110共享共同使能信号(samp1_en),共同使能信号由为控制块112的一部分的全局控制逻辑提供。

通过从相应列接收在特定电压水平处的信号,感测放大器110用作比较器。给定感测放大器包括从其相应列接收信号的输入以及接收参考电压的输入。感测放大器将来自列的信号与参考电压进行比较,并且响应于此,输出高电压值或低电压值。例如,如果从列接收的电压信号低于参考电压,则感测放大器可以输出低电压。另一方面,如果从列接收的电压信号高于参考电压,则感测放大器可以输出高电压。给定感测放大器在其接收使能信号(samp1_en)时执行比较。

触发器和驱动器111也在每列的基础上被实现,使得每列对应于感测放大器、驱动器和触发器。图2为了便于图示而示出了每个触发器和驱动器中的两个触发器和驱动器。给定感测放大器的输出由驱动器接收,驱动器将增益应用到从其相应感测放大器接收到的信号,使得高信号(在读取二进制一的情况下)足够高以被相应触发器读取。驱动器共享共同使能信号(samp2_en)。触发器捕获数据并且根据时钟(data_clk)来输出数据。输出(读取数据)包括从最高有效位(<msb>)到最低有效位(<0>)的二进制位的字符串。

在该示例中,列被称为位线,并且行被称为字线。位线中的每个位线与共同电源(未示出)相关联。

控制块112接收包括时钟(clk)和行地址信号(addr)的控制信号。控制块112可以将时钟信号以未修改的形式或某种修改的形式传递到触发器作为data_clk。控制块112使用行地址信号以访问特定数据字。

在当前示例中,otp模块100的操作通常通过接收行地址信号来开始。作为响应,字线解码器从阵列210选择合适的字。字线解码器将电压应用到由行地址信号指示的特定字线(wlx)。通常存在某个延迟量,以允许在来自列的感测放大器输入处的电压升高到信号能够被可靠地捕获的水平。感测放大器中的每个感测放大器接收与在其相应列中选择的特定存储器单元对应的电压。例如,如以上所提到的,熔断的熔丝可以引发高电压,并且未熔断的熔丝可以引发低电压。

在延迟之后,控制块112激发使能信号samp1_en和samp2_en,以使得比较器确定一和零,并且使得驱动器放大比较器的输出。触发器捕获来自驱动器的数据。在该实施例中,感测放大器和驱动器中的每个感测放大器和驱动器被同时使能,由此一次性读取整个字。系统可以通过选择不同的地址来读取随后的字。

在图2的实施例中要指出的是,位线接收相同电压,并且感测放大器使能信号samp1_en是应用到感测放大器中的每个感测放大器的共同使能信号。因此,通过修改电压的瞄准otp模块100的攻击将影响存储校验模式的列以及存储安全数据的列中的电压。预期到,这样的操纵将导致当通过验证逻辑120来比较校验模式时校验模式的不匹配。这同样适用于驱动器使能信号samp2_en。另外,触发器共享共同时钟,使得时钟的操纵将影响捕获校验模式的位的触发器以及捕获安全数据的位的触发器。图2的otp模块100使用用于位线的全局控制信号(data_clk、samp1_en、samp2_en)和共同电源,使得电源或控制的操纵影响校验模式位以及安全数据位。之后,验证逻辑120可以在其将校验模式的读出位与其预编程的模式进行比较时检测错误。

一般期望的是,阵列210中的熔丝可以经历处理、温度、电压(pvt)变化,由此在某种程度上偏离理想情况。还一般认为期望的是,pvt变化在其将导致安全数据位的错读之前,将导致校验模式位的错读。这样的特征允许系统拒绝错误。本文中的各种实施例动态地调整读取校验模式位的感测放大器的参考电压,以便使读取裕量变窄。

图3提供了根据一个实施例的图示读取裕量的图表和用于使读取裕量变窄的处理。在图3的图表中,熔断的熔丝与二进制一(高电压)相关联,并且未熔断的熔丝与二进制零(低电压)相关联。图3的x轴是时间,并且y轴是如由感测放大器看见的位线电压。图3图示了存在用于使电压升高到高电压水平的某个延迟量。这在上文参考图2和在使能感测放大器和驱动器之前的延迟进行了解释。

在熔断的熔丝的高电压曲线302与未熔断的熔丝的低电压曲线310之间,存在三条曲线304-308,这三条曲线304-308与可以被应用到图2的感测放大器110的参考电压相关联。当读取安全数据的位时,参考电压可以被设置在高电压与低电压之间的一半处。感测放大器用作比较器,并且在输入电压高于参考电压的情况下输出高电压,或者在输入电压低于参考电压的情况下输出低电压。

感测放大器中的每个感测放大器具有在其参考输入处应用的电阻,其中,电阻确定在该感测放大器处的参考电压。在该示例中,参考电压曲线304-308中的每条参考电压曲线与特定电阻——600欧姆、500欧姆或400欧姆——相关联。曲线306与500欧姆相关联。在参考输入处应用的较高电阻将稍微升高参考电压,并且在参考输入处应用的较低电阻将稍微降低参考电压。为了该示例的目的,500欧姆的电阻被假设为产生在中间的曲线306,从而得到用于二进制零和二进制一两者的大约相等的读取裕量。将在参考输入处应用的电阻增大到600欧姆将稍微增大参考电压,由此减小用于读取二进制一的裕量并增大用于读取二进制零的裕量。类似地,将在参考输入处应用的电阻减小到400欧姆将减小用于读取二进制零的裕量并增大用于读取二进制一的裕量。用于读取二进制1的裕量被示出为项321,并且用于读取二进制零的裕量被示出为项322。

当然,实施例的范围不限于在感测放大器110的参考电压输入处应用的任何具体电阻或参考电压。实际上,在各种实施例中,在感测放大器110的参考输入处的合适的电阻可以在设计阶段期间基于各种因素来确定,各种因素包括从未熔断的熔丝或熔断的熔丝预期的电阻的量以及位线的电源的电压水平。

各种实施例可以基于正被读取的地址来选择性地改变在参考输入处的电阻,以便减小用于校验模式的位的读取裕量。在图1中,校验模式在二进制一与二进制零之间交替,并且逐行偏移。因此,给定感测放大器可以用于测量二进制一或二进制零,这取决于正被读取的字的地址。

图4是根据一个实施例的用于在图2的架构中使用的示例感测放大器410的图示。图4的实施例包括三个晶体管——402、404、406。晶体管402与400欧姆电阻器相关联;晶体管404与500欧姆电阻器相关联;并且晶体管406与600欧姆电阻器相关联。晶体管402-406中的每个晶体管接收相应栅极控制电压ref_sel_0、ref_sel_d或ref_sel_1。通过生成用于栅极控制电压中的一个栅极控制电压的高信号并保持其他晶体管的栅极处于低电压,控制块112在感测放大器410的参考输入处应用电阻。例如,通过在栅极控制电压ref_sel_0处应用高电压并且在其他两个栅极处应用低电压,控制块112可以在感测放大器410的参考输入处应用400欧姆电阻。类似地,控制块112可以通过在栅极控制电压ref_sel_d处应用高电压来在参考输入处应用500欧姆电阻,并且控制块112可以通过在栅极控制电压ref_sel_1处应用高电压来应用600欧姆电阻。

在一个特定示例中,给定行可以包括0101作为其校验模式位。另外,在该示例中,假设感测放大器410是读取校验模式位的四个感测放大器之一,并且感测放大器410读取第一位(针对该行为0)。当控制块112接收选择该给定行的地址信号(addr)时,控制块112可以使用地址信号的最低有效位来获知该行是具有0101还是1010作为其校验模式位。因此,控制块112读取地址信号的最低有效位,并且获知感测放大器410被预期为读取二进制零。因此,控制块112向晶体管402的栅极应用高电压,以减小二进制零的读取裕量。

相邻行将具有1010作为其校验模式位,并且控制块112将读取地址信号的最低有效位,以在之后获知感测放大器410将被预期为读取二进制一。因此,控制块112将向晶体管406的栅极应用高电压,以减小二进制一的读取裕量。因此,控制块112可以使用诸如此类的技术,以基于正被读取的地址来减小校验模式的位的读取裕量。感测放大器410可以被体现为相对简单的运算放大器(opamp),其中参考电阻与其“-”输入连通并且相应位线与其“+”输入连通。然而,实施例的范围不限于任何特定感测放大器结构。

图4的感测放大器410被示出为具有三个晶体管402、404、406,并且因此可以在参考输入处提供三个可选择的电阻。以上示例使用可选择的电阻中的仅仅两个电阻。然而,各种实施例可以包括校准以考虑变化。具体地,熔断的熔丝的电阻值可以有所变化,并且本实施例可以应用校准,以使可选择电阻与在熔断熔丝电阻与未熔断熔丝电阻之间的已知变化匹配。如果在熔断熔丝电阻与未熔断熔丝电阻之间存在较大差异,则校准步骤可以确定:最好在晶体管404和406之间切换,而不是在晶体管402和406之间切换。各种实施例也可以使用类似的结构来读取安全数据,从而使用校准来确定用于参考输入的合适的电阻值。

各种实施例可以提供超越传统技术的一个或多个优点。上文参考图1和图2描述的示例通过确保otp模块100的字线的读取也包括校验模式的位,来向系统提供额外的安全性水平。如果数据被读取并且之后被输出给验证电路(诸如验证逻辑120),则验证电路可以之后抓住错误并且不允许操纵安全数据。另外,图3和图4的实施例可以收紧校验模式的位的读取裕量,以便使得在安全数据位将失败之前校验模式位将更有可能失败,由此减小操纵的安全数据将在任何时候被读取的可能性。

在图5中图示了从otp存储器读取安全数据的示例方法500的流程图。在一个示例中,方法500由图1的控制块112和验证逻辑120执行。方法500可以在处理设备启动时、在处理设备的成功启动之后、或者任何其他时间被执行。换言之,方法500不限于在设备启动时被执行。

在动作510处,验证逻辑从处理设备的otp存储器读取多个字。在图1处示出了示例,其中,验证逻辑120从otp模块100读取字。另外在动作510处,字中的每个字包括用于处理设备的安全数据和对应于校验模式的位。在图1处示出了示例,其中,otp模块100的每行包括校验模式的四列。两列在行的开头处,并且另外两列在行的结尾处,由此确保任何字的读取导致读取校验模式的位。

从otp存储器读取多个字也可以包括另外的动作。如关于图2所示的,控制块112对地址信号进行解码,感测放大器共享共同使能信号,并且触发器共享共同时钟信号。如上文参考图3和图4进一步所解释的,动作510还可以包括选择在读取校验模式位的感测放大器处的参考电压。

在动作520处,验证逻辑将对应于校验模式的位与预编程的模式进行比较。例如,验证逻辑可以将模式存储在它自己的存储器中,验证逻辑将所读出的校验模式位与模式进行比较。

在动作530处,验证逻辑确定对应于校验模式的位与预编程的模式一致或不一致。如果位不匹配,则那可以是错误或攻击的指示。另一方面,如果位匹配,则那可以是不存在攻击或不存在错误的指示。

在动作540处,系统基于在步骤530处的确定的结果来采取合适的动作。例如,如果在动作530处位不匹配,则验证逻辑可以针对潜在错误而标记数据,向处理器设备发出中断,暂停硬件,防止启动或者其他处理,或者其他合适的动作。实际上,实施例的范围不限于响应于检测到可能的错误的任何特定动作。

另一方面,如果在动作530处位匹配,则验证逻辑可以允许操作无中断地或正常地继续进行。

实施例的范围不限于图5中示出的具体方法。其他实施例可以添加、省略、重新布置、或修改一个或多个动作。例如,方法500可以从处理设备的启动开始被执行多次,并且之后在处理设备的操作期间被执行随后的次数。

如本领域技术人员现在将认识到的,并且取决于手边的特定应用,可以在本公开的设备的使用的材料、装置、配置和方法中并且对其进行许多修改、替代和变化,而不脱离本公开的精神和范围。鉴于此,因为特定实施例仅仅是举本公开的一些示例,本公开的范围不应当限于本文中图示和描述的特定实施例的范围,而是相反,本公开的范围应当与后面随附的权利要求及它们的功能等效方案的范围完全相当。

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