使用内部和外部非易失性存储器的可信单调计数器的制作方法

文档序号:18554262发布日期:2019-08-30 22:22阅读:180来源:国知局
使用内部和外部非易失性存储器的可信单调计数器的制作方法

本文中所公开的各种示例性实施例大体上涉及一种方法和设备,其涉及使用内部和外部非易失性存储器的可信单调计数器。



背景技术:

已建立使用单调计数器的各种安全协议。此类单调计数器可用于检验当前消息以及数据和软件版本以及防止重放攻击。



技术实现要素:

各种示例性实施例的简要概述在下文呈现。在以下概述中可做出一些简化和省略,其意在突出和介绍各种示例性实施例的一些方面,但不限制本发明的范畴。足以允许本领域的一般技术人员做出和使用发明性概念的示例性实施例的详细描述将在稍后章节呈现。

各种实施例涉及一种装置,其包括:不安全非易失性存储器;安全装置,所述安全装置包括:处理器;和安全非易失性存储器;其中所述安全装置被配置成:根据偏移值和基准值计算可信单调计数器(tmc)值;将tmc版本值存储在安全非易失性存储器和不安全非易失性存储器中,其中当tmc值在安全装置上电之后第一次递增时更新所述tmc版本值;将基准值存储在不安全非易失性存储器中;当安全装置在系统断电状态下时将偏移值存储在不安全非易失性存储器中;当安全装置在救援状态下时将偏移值存储在安全非易失性存储器中;和将tmc链接值存储在不安全存储器中,其中tmc链接值是基于存储在不安全存储器中的基准值和tmc版本值的。

描述各种实施例,其另外包括:救援寄存器;和救援电源,其中所述救援寄存器和救援电源用于当安全装置在救援状态下时将偏移值存储在安全非易失性存储器中。

描述各种实施例,其中安全装置被另外配置成将存储在安全非易失性存储器中的tmc版本值与存储在不安全非易失性存储器中的tmc版本值进行比较。

描述各种实施例,其中安全装置被另外配置成基于存储在不安全非易失性存储器中的基准值和tmc值检验tmc链接值。

描述各种实施例,其中安全装置被另外配置成在上电状态期间从当检验tmc链接值时存储在不安全非易失性存储器中的基准值和存储在不安全非易失性存储器中的偏移值恢复tmc基准值。

描述各种实施例,其中安全装置被另外配置成在上电状态期间从当检验tmc链接值时存储在不安全存储器中的基准值和存储在安全非易失性存储器中的偏移值恢复tmc基准值。

描述各种实施例,其中安全装置被另外配置成通过递增偏移值更新tmc值。

描述各种实施例,其中安全装置被另外配置成在系统断电状态期间更新tmc链接值。

描述各种实施例,其中偏移值中的位数小于tmc计数器值的位数。

描述各种实施例,其中偏移值中的位数小于或等于tmc计数器值的位数的一半。

描述各种实施例,其中tmc链接值是存储在不安全存储器中的基准值和tmc版本值的散列。

描述各种实施例,其中tmc链接值是存储在不安全存储器中的基准值和tmc版本值的副本。

其它各种实施例涉及一种装置,其包括:不安全非易失性存储器;安全装置,所述安全装置包括:处理器;和安全非易失性存储器;其中所述安全装置被配置成:根据偏移值和基准值计算可信单调计数器(tmc)值;将tmc版本值存储在安全非易失性存储器和不安全非易失性存储器中,其中当tmc值在安全装置上电之后第一次递增时更新所述tmc版本值;将基准值存储在不安全存储器中;和将偏移值存储在安全非易失性存储器中。

描述各种实施例,其另外包括:救援寄存器;和救援电源,其中所述救援寄存器和救援电源用于当安全装置在救援状态下时将偏移值存储在安全非易失性存储器中。

描述各种实施例,其中安全装置被另外配置成将存储在安全非易失性存储器中的tmc版本值与存储在不安全非易失性存储器中的tmc版本值进行比较。

描述各种实施例,其中安全装置被另外配置成在上电状态期间从存储在不安全存储器中的基准值和存储在不安全非易失性存储器中的偏移值恢复tmc基准值。

描述各种实施例,其中偏移值中的位数小于tmc计数器值的位数。

描述各种实施例,其中偏移值中的位数小于或等于tmc计数器值的位数的一半。

描述各种实施例,其中安全装置被另外配置成通过递增偏移值更新tmc值。

描述各种实施例,其中当安全装置在断电状态下时将偏移值存储在安全非易失性存储器中。

附图说明

为了更好地理解各种示例性实施例,参考附图,其中:

图1示出实施tmc的soc;

图2示出tmc系统的图;

图3示出tmc系统的状态图;

图4示出tmc系统的操作时间线;

图5示出当存在电源故障时tmc系统的操作时间线;

图6示出tmc系统的另一实施例的图;

图7示出替代tmc系统的操作时间线;

图8示出当存在电源故障时替代tmc系统的操作时间线;且

图9是示出各种tmc系统的最大功率循环和最大计数器值的表。

为了便于理解,相同的附图标号已用于指代具有大体上相同或类似结构和/或大体上相同或类似功能的元件。

具体实施方式

描述和图式示出本发明的原理。将了解,本领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或示出所述布置,但其体现本发明的原理且包括于本发明的范畴内。此外,本文中所述的所有例子主要明确地意在用于教学目的以辅助读者理解本发明的原理和由发明人所提供的概念,从而深化本领域,且所有例子不应解释为限于此类特定所述例子和条件。另外,除非另外指明(例如,“否则”或“或在替代方案中”),否则如本文中所使用的术语“或”指代非排他性或(即,和/或)。而且,本文中所描述的各种实施例不一定相互排斥,因为一些实施例可与一个或多个其它实施例组合从而形成新的实施例。

电子装置通常配备有集成电路以向用户提供增强产品功能性。集成电路可为片上系统(soc)半导体产品,其具有一个或多个处理器、集成可写和可重写存储器、例如用以连接到外部存储器或其它源的各种外围设备和接口。

在那些系统上载入和运行的大量应用程序具有以下要求:只有最新的软件将可在系统上执行。而且,应用程序将仅处理未过期的有效数据。举例来说,在系统上执行的具有安全漏洞的旧有软件代码而非最新版本的打补丁的代码可能会准许敌手攻击系统。另一例子在于,对于支付交易,攻击者有可能使用旧有交易金额而非当前交易金额,从而允许敌手偷钱或操纵电子钱包。

为了辨别不同版本的软件代码和数据(贯穿以下描述,数据将进一步用作例子),软件代码或数据可用唯一数字签名。此签名操作的结果,被称为散列值,与数据一起被存储。此唯一散列值由系统提供。当数据被读取时,检验数据的“新鲜度”,其中使用系统中的当前唯一数字计算实际散列值且将其与所存储散列值进行比较。这防止攻击者回滚数据。单调计数器可用于生成唯一数字,其中具有以下要求:所生成值必须从不重复。

对于具有有限内部非易失性存储器的soc,将所有唯一数字存储在内部具有挑战性,因为在整个产品生命周期内所需的唯一数字的数目可为高。举例来说,先进制造过程技术通常恰好能够以有限写入循环实施装置自身上的一定量的非易失性存储器,例如,一次可编程(otp)或多次可编程(mtp)单元。如果使用这种制造技术实施的soc配备有64-kbitotp阵列,那么假设每个值使用1位,最大65535个唯一数字可被存储在otp中。

为了克服内部存储器的限制,soc可配备有允许soc连接到外部存储器(例如,flash、eeprom、ssd、emmc)的接口。然而,这会引入安全问题,因为敌手可能会容易地存取或操纵外部存储器中的数据。举例来说,数据可在外部存储器接口处被探测到或整个外部存储器可被另一个外部存储器替换。因此,不得不保护存储在外部存储器中的数据的完整性、保密性和可靠性方面。当将单调计数器值(即,唯一数字)存储到外部存储器时这将同样适用。因此,将需要额外保护以防止外部数据和对应单调计数器值被替换而不被检测到。

可信单调计数器系统(tmc)将在下文所描述,与恰好将每个唯一数字存储在soc的内部存储器中的途径相比,其高效地使用有限内部存储器和外部存储器以生成相当大数目的唯一数字。因此,tmc系统实现数据回滚保护。

存在不同途径可供soc基于可信单调计数器形成回滚保护:例如,使用外部智能卡(参见第2014/0013015号美国专利公开)或使用远程装置以经由云系统进行固件更新(参见第8588756号美国专利)。所有这些途径具有一些限制,例如,其仅对特殊应用程序有效且仅在特殊情形下才可能会更新。本文中所描述的tmc系统允许用于soc的具有高计数值的可信单调计数器使用内部和外部非易失性存储器且离线工作。

下文描述具有含有限片上非易失性存储器(例如,otp或mtp)和与至少一个外部可重写存储器的soc的tmc系统,其具有以下特征:高最大计数器值;和高效使用内部(即,片上)非易失性存储器以提高计数器寿命。这些特征可通过减少待存储位数和仅当实际需要时,例如在电源被移除时将位存储到otp来实现。此外,tmc系统可不得不适应功率循环以及功率的突然丢失(例如,恰好当进行版本号更新时被攻击者移除电源)。

图1示出实施tmc的soc,如下文所描述。soc100可包括cpu110、rom120、ram130、总线140、救援域150和外部存储器接口180。cpu110提供soc100的处理能力且可为提供实行soc100的处理任务的任何类型的处理器。rom120是提供软件代码和数据以用于soc100的操作的只读存储器。ram130是由cpu110用于处理soc100的功能的随机存取存储器。总线140使soc100的各种组件之间的通信互连且有助于所述通信。外部存储器接口180提供与外部存储器190的通信和物理接口。外部存储器可为任何类型的非易失性存储器,例如固态磁盘(ssd)、闪存存储器、嵌入式多媒体卡(emmc)等。而且,外部存储器接口可建立一种将soc连接到云存储装置的方式。

救援域160可包括tmc170和otp160。otp160是soc100中的内部非易失性存储器。其在大小和可能的写入循环数目方面受到限制(即,otp单元可仅被写入一次)。虽然otp150用作在救援域150中使用的非易失性存储器的例子,但是otp可被任何类型的内部非易失性存储器替换,且其也还可能够重写,例如,mtp。tmc170可包括:救援组件,例如救援寄存器和额外应急电源,其在主电源断开时可用;以及用以实行tmc功能的其它组件。

如下文将描述,救援域150用于例如在主电源受到攻击的情况下安全处理偏移值且将其安全存储在soc中。

tmc170可按需求(例如,根据os或经授权应用程序)生成唯一数字,通过递增/递减所述唯一数字的实际值,所述唯一数字将不再重复。可实施多个tmc例如以服务不同应用程序。

图2示出tmc系统的图。全宽tmc值205可为例如32位数字(但取决于应用程序,其它大小也是可能的)。tmc值205被分成两个部分-基准值tmc_base210和偏移值tmc_offset215,且tmc值205被计算为tmc_base210和tmc_offset215的总和。

基准值tmc_base210可为任意位数。如果tmc值205在系统启动225之后第一次更新,那么所述基准值tmc_base210被存储在外部存储器190中。存储在外部存储器中的基准值可表示为tmc_base_ref。

偏移值tmc_offset215是递增以生成新的tmc值205的值。当soc100断电时且当电源故障时230,tmc_offset215被存储在otp160中。虽然递增在本文中的实施例中被描述,但是应注意,递增通过递增负值,例如-1而涵盖递减。otp中的偏移值可表示为tmc_offset_otp。为了节省otp存储器,所编程偏移值tmc_offset_otp的宽度可小于全宽tmc值205。

外部存储器中的基准值tmc_base_ref需要回滚保护,因为攻击者能够对其进行相对容易的存取(例如,经由外部存储器接口)。出于此目的,引入版本号tmc_version220。当tmc_base210被存储在外部存储器225中时,tmc_version220的下一值(例如,tmc_version+1)也被存储240在外部存储器225中。对应值表示为tmc_version_ref。如果基准值和版本号的存储操作成功,那么tmc_version220递增到其下一值且被存储在otp235中。为了节省otp空间,tmc_version220可被编码为灰色计数器。

偏移值tmc_offset215和负责将其写入otp230和otp160自身中的逻辑定位在救援域150中。这确保当正常电源不可用(例如,由于当攻击者将其移除时的功率攻击)时偏移值将被存储在otp160中。其它tmc组件可驻留在正常功率域中。

一般来说,使用此实施例,有限otp存储器用于存储偏移值tmc_offset215和版本号tmc_verson220,其比将全宽tmc值205存储在otp160中更高效,例如,16位tmc_offset215,加上1位为tmc_version220,而非32位全宽tmc值。tmc_offset值215中的位数将小于tmc值205中的位数以便节省otp160中的储存空间。tmc_offset值215中的位数可小于或等于tmc值205中的位数的一半或四分之一或任何其它分数。

图3示出tmc系统的状态图。tmc系统包括以下状态:tmc系统断电305;tmc系统断开310;tmc系统接通315;tmc系统断电320;和tmc系统救援325。

在tmc系统断开状态305中,无功率可用。tmc_base_ref值被存储在外部存储器190中。tmc_offset_otp值和tmc_version220被存储在otp160中。

在tmc系统上电状态310中,tmc系统上电。从外部存储器190读取tmc_base_ref值且通过将tmc_version_ref与来自otp160的tmc_version220进行比较而检查新鲜度。基准值tmc_base_ref接着与tmc_offset_otp一起用于恢复上一tmc值205,所述上一tmc值205现在变成用于当前会话的新的tmc_base值210。用于当前会话的tmc_offset值215被设定成0。

在tmc系统接通状态315中,tmc值205可由应用程序使用。tmc值205被计算为基准值tmc_base210和偏移值tmc_offset215的总和。tmc系统接通状态315具有两个子状态:tmc不更新状态330;和tmc更新状态335。tmc不更新状态330是tmc值205尚未改变而仅已使用tmc值205的子状态。tmc更新状态335是tmc值205已改变的子状态。在tmc系统上电状态310之后的第一次更新之前,当前tmc值205和下一版本号tmc_version220被存储在外部存储器190中作为新的tmc_base_ref和tmc_version_ref。如果此存储操作成功,那么otp160中的版本号tmc_version220递增。为了递增tmc值205,tmc_offset215值被递增。如果tmc_baseref和tmc_version_ref的存储操作不成功,那么将使用其相同值再次重复所述存储操作。这将防止攻击者收集tmc_base_ref和tmc_version_ref的不同值以重复使用来进行回滚攻击。如果存储在若干试验之后不成功,那么tmc将启动恢复过程(参见下文)。

在tmc值205已改变且电源断电或偏移计数器已达到其最大值时355触发tmc系统断电状态320。在此情况下,当前tmc_offset215值被存储在otp160中以供用于下一会话。

在tmc_offset值215已改变且电源故障时360(例如,由于攻击)达到tmc系统救援状态325。在此情况下,使用应急电源(例如,由电容器、电池或隔离保护电源提供)将当前tmc_offset值215存储在otp160中。

图4示出tmc系统的操作时间线。时间从时间t0推移到t10,如所示出。还展现存储在soc100和外部存储器190中的各种所存储值。示出了soc100中的tmc_value205、tmc_offset215、tmc_base210、tmc_offset_otp415和tmc_version220的值。还示出了外部存储器190中的tmc_base_ref410和tmc_version_ref420的值。沿着左侧,示出了tmc系统在各种时间的各种状态。

在时间t0处,tmc系统在系统断开状态305中。tmc_offset_otp和tmc_version被存储在otp160中且tmc_base_ref和tmc_version_ref被存储在外部存储器190中,且在此例子中这些值分别等于5、1、4和1。

在时间t1处,tmc系统进入系统上电状态310,在所述系统上电状态310中tmc系统启动。tmc系统读取和认证参考表ref_tab430,所述参考表ref_tab430是存储在外部存储器190中的包括值tmc_base_ref和tmc_version_ref的表。接下来,tmc系统检验tmc_version==tmc_version_ref。如果不是这样,那么指示误差状况且可停止系统或开始恢复过程,否则tmc系统继续运行。这种恢复过程可包括清除外部存储器中的所有数据。接着,tmc系统计算新的tmc基准值=tmc_version*tmc_offset最大值,其表示过去可能最高的tmc值。tmc系统接着将此tmc_base值写入外部存储器作为新的tmc_base_ref且重新启动系统。

在时间t2处,tmc系统设定tmc_offset=0。在时间t3处,tmc系统通过计算tmc_base=tmc_base_ref+tmc_offset_otp而恢复tmc_base值210,在此例子中是4+5=9。

接下来,tmc在时间t4处转变成系统接通状态315。在时间t4处,现在允许tmc系统根据tmc_value=tmc_base+tmc_offset计算tmc_value205,在此例子中是9+0=9。

在时间t5处,tmc系统需要在系统上电状态310之后第一次的新的tmc_value205。但在tmc_offset递增之前,外部存储器190中的ref_tab430不得不更新,因此tmc系统将所恢复tmc_base210保存为新的tmc_base_ref410且将所递增tmc_version_ref写入外部存储器190,新的otp版本将变为所述值。

在时间t6处,tmc系统检验ref_tab430已被正确地写入。如果所写入tmc_base_ref值410被检验,那么otp160中的tmc_version值220递增。

现在将描述tmc系统用于另外tmc_value更新的一般操作。在时间t7处,tmc_offset值215递增。因此,在此例子中,新的tmc_value可被计算为1+9=10。在时间t8处,tmc_offset215发生额外递增,使得tmc_value在此例子中现在为15。

在时间t9处,tmc系统转变成系统断电状态320。此时,tmc系统将tmc_offset存储到tmc_offset_otp。因此,上一tmc_offset值被保存在otp160中。接着在时间t10处,tmc系统转变成系统断开状态305。

图5示出当存在电源故障时tmc系统的操作时间线。在图5中,tmc系统进行到如上文在图4中所描述的时间t8。接着,在时间t9处发生电源故障,且tmc系统进入系统救援状态325。当电源故障时,应急电源允许tmc系统将tmcoffset值215写入到otp160中以更新tmc_offset_otp415值。在时间t10处,tmc系统接着进行到系统断开状态305。

仅在正常电源已发生故障且tmc_value205已改变时触发系统救援状态325,即,在tmc_value205改变时在系统接通状态315中或在系统断电状态320中以完成将tmc_offset值215存储在otp160中。

可关于另外减少有限otp存储器160的使用而另外优化tmc系统。图6示出tmc系统的另一实施例的图。图6的替代tmc系统与图2中的相同,除了偏移值tmc_offset215仅当电源故障时被存储在otp160中,且在正常断电的情况下tmc_offset215被存储在外部存储器190中。

存储在外部存储器中的偏移值tmc_offset215表示为tmc_offset_dn715(参见图7)。此值tmc_offset_dn715同样需要回滚保护。因此,tmc_offset_dn735通过值tmc_link_dn735与外部存储器190中的基准值tmc_base_ref410和版本号tmc_version_ref420相关。在tmc系统上电状态310期间,在tmc_offset_dn715对应于tmc_base_ref410和tmc_version_ref420时使用tmc_link_dn735确定所述相关。tmc_link_dn735可简单地为这些值的副本、可被检查以进行检验的散列或tmc_version加断电的指示位。tmc_offset_dn值715和tmc_link_dn值735是表ref_tab_dn730的部分。

现在将描述所优化tmc系统的各种状态。在替代tmc系统的tmc系统断开状态305中,无功率可用。tmc_base_ref410、tmc_offset_dn715、tmc_version_ref420和tmc_link_dn735值被存储在外部存储器190中。tmc_version值220被存储在otp160中。

在替代tmc系统的tmc系统上电状态310中,从外部存储器190读取tmc_base_ref值410且通过将来自外部存储器190的tmc_version_ref值420与来自otp160的tmc_version值220进行比较来检查新鲜度。如果值匹配,那么tmc_base_ref410和tmc_version_ref220用于检查tmc_offset_dn值715。如果tmc_offset_dn值715被检验,那么tmc_base_ref410和tmc_offset_dn715用于恢复上一tmc值205。如果tmc_offset_dn值715未被检验,那么tmc_offset_otp值415用作偏移值。所恢复上一tmc值205接着变成新的tmc_base值210以用于当前会话。用于当前会话的tmc_offset值215同样被设定成0。

在替代tmc系统的tmc系统接通状态315中,tmc值205可由应用程序使用。tmc值205被计算为基准值tmc_base210和偏移值tmc_offset215的总和。tmc系统接通状态具有两个子状态:tmc不更新状态330;和tmc更新状态335。tmc不更新状态330是tmc值205尚未改变而仅已使用tmc值205的子状态。tmc更新状态335是tmc值205已改变的子状态。在tmc系统上电状态310之后的第一次更新之前,当前tmc值205和下一版本号tmc_version220被存储在外部存储器190中作为新的tmc_base_ref和tmc_version_ref。如果此存储操作成功,那么otp160中的版本号tmc_version205递增。为了递增tmc值205,tmc_offset215值被递增。

tmc系统断电状态320在tmc值205已改变且电源断电或偏移计数器已达到其最大值时355触发。在此情况下,当前tmc_offset215值被存储在外部存储器190中作为tmc_offset_dn715以供用于下一会话。tmc_offset_dn值715还使用链接值tmc_link_dn735与外部存储器190中的tmc_base_ref值410和tmc_version_ref值420相关。

在tmc_offset值215已改变且电源故障时360(例如,由于攻击)达到tmc系统救援状态325。在此情况下,使用应急电源(例如,由电容器提供)将当前tmc_offset值315存储在otp160中。

图7示出替代tmc系统的操作时间线。图7中的时间线非常类似于图4中的时间线。时间从时间t0推移到t10,如所示出。如图4中还展现存储在soc100和外部存储器190中的各种所存储值。在替代tmc系统中,偏移值tmc_offset_dn715被存储在外部存储器190中。此外,第二值tmc_link_dn735被存储在外部存储器190中,所述第二值tmc_link_dn735与tmc_base_ref值410和tmc_version_ref值420相关。

在时间t0处,替代tmc系统在系统断开状态305中。tmc_version被存储在otp160中且tmc_base_ref、tmc_version_ref和tmc_offset_dn被存储在外部存储器190中,且在此例子中这些值分别等于1、4、1和5。而且,tmc_link_dn735被存储在外部存储器190中,其值为1(4,1)。

在时间t1处,替代tmc系统进入系统上电状态310,在所述系统上电状态310中替代tmc系统启动。替代tmc系统读取和认证参考表ref_tab430。接下来,替代tmc系统检验tmc_version==tmc_version_ref。如果不是这样,那么指示误差状况且可停止系统或开始恢复过程,否则替代tmc系统继续运行。这种恢复过程可包括清除外部存储器中的所有数据。接着,tmc系统计算新的tmc基准值=tmc_version*tmc_offset最大值,其表示过去可能最高的tmc值。tmc系统接着将此tmc_base值写入外部存储器作为新的tmc_base_ref且重新启动系统。

在时间t2处,替代tmc系统检验ref_tab_dn730。对照tmc_base_ref值410和tmc_version_ref值420检查tmc_link_dn值735。如果检查成功,那么tmc_offset_dn715被用作存储为偏移值,且如果检查失败,那么使用tmc_offset_otp。

在时间t3,替代tmc系统设定tmc_offset=0。在时间t4处,替代tmc系统通过计算tmc_base=tmc_base_ref+tmc_offset_dn而恢复tmc_base值210,在此例子中是4+5=9。

接下来,替代tmc系统在时间t5处转变成系统接通状态315。在时间t5处,现在允许替代tmc系统根据tmc_value=tmc_base+tmc_offset计算tmc_value205,在此例子中是9+0=9。

在时间t6到t8处的步骤类似于在图4中的时间t5到t7处的步骤。

在时间t9处,在此例子中,tmc_offset215发生额外递增,使得tmc_value现在为15。

在时间t10处,替代tmc系统转变成系统断电状态320。此时,替代tmc系统将tmc_offset215存储到外部存储器作为tmc_offset_dn715。而且,基于当前tmc_base_ref值410和tmc_version_ref值420更新tmc_link_dn值735。因此,上一tmc_offset值215被保存在外部存储器190中。接着在时间t11处,替代tmc系统转变成系统断开状态305。

图8示出当存在电源故障时替代tmc系统的操作时间线。在图8中,替代tmc系统进行到如上文在图7中所描述的时间t9。接着在时间t10处存在电源故障,且tmc系统进入系统救援状态325。在时间t10处,当电源故障时,应急电源允许tmc系统将tmc_offset值215写入到otp160中以更新tmc_offset_otp415值。在时间t11处,tmc系统接着进行到系统断开状态350。应注意,tmc_offset_dn值715和tmc_link_dn值735在此情况下不更新且因此仍含有先前值。

接着在时间t12处,替代tmc系统进入系统上电状态310且检验如在时间t1处的tmc_verson。接下来,在时间t13处,替代tmc系统检验如在时间t2处的ref_tab_dn730。在此情形下检验失败,因为tmc_link_dn值735并不对应于当前tmc_base_ref值410和当前tmc_version_ref值420。

在时间t15处,替代tmc系统使用tmc_offset_otp值415而非如在时间t4处进行的tmc_offset_dn值715恢复tmc_base值210。

在时间t16处,替代tmc系统通过将tmc_offset值215加入tmc_base值210而恢复tmc_value205。

因此,替代tmc系统仅当电源故障时将tmc_offset值215存储到otp160,否则在正常断电期间,替代tmc系统将tmc_offset值215存储到外部存储器190。这减少了otp160被填充的速率且允许tmc_value215增加到最大值,这可由替代tmc系统实现。

在上文所描述的实施例中,论述单个偏移值。实施例也可扩展到包括多于一个偏移。此类偏移可例如经由相乘或相加而组合以产生所计算偏移,所述所计算偏移接着用于计算tmc值。

本文中所描述的实施例提供优于现有技术方案的各种益处。要考虑的一个度量是最大功率循环,即,在tmc达到其寿命末期之前可能的系统循环的数目。另一度量是确定最大交易数的最大计数器值。

图9是示出各种tmc系统的最大功率循环和最大计数器值的表。表的结果假设无电源故障,这意味着仅3位tmc_version被以功率循环写入otp。3位包括所存储tmc_version值的可靠和安全读取所需的冗余。在上述例子中,仅使用1位。otp的存储容量为128kbit。第一例子tmc系统使用笔直向前的32位全宽计数器,其中在otp中具有6位ecc。在正常系统循环中,计数器被存储在otp中。这产生3449最大功率循环且产生232=4.29x109最大计数器值。在第二tmc系统中,使用具有16位偏移和5位ecc的tmc系统的替代实施例。在正常系统循环中,tmc_offset值被存储在外部存储器中且tmc_version是存储在otp中的3位值。这产生43690最大功率循环和43690*216=2.86x109最大计数器值。在第三tmc系统中,使用具有24位偏移和5位ecc的tmc系统的替代实施例。在正常系统循环中,tmc_offset值被存储在外部存储器中且tmc_version是存储在otp中的3位值。这产生43690最大功率循环和43690*224=7.33x1011最大计数器值。

因此,与全宽tmc相比,需要更少otp单元来存储偏移和大量最大功率循环是可能的。这还意味着需要更少功率用于应急写入且可能会导致更小应急电源。对于需要大量交易的系统,偏移的宽度可被调节以在最大交易数目与所需应急电源之间实现更好平衡。而且,具体配置可由根据系统要求确定偏移宽度的软件设定。这允许单个soc以具有各种要求的各种设定使用。

本文中所描述的实施例表示安全交易和数据交换技术的改进,其中tmc用于防止回放攻击。如上文所示出,本文中所描述的实施例可使用tmc和有限存储器在系统中提供各种益处和灵活性。

上文所描述的方法可在软件中实施,所述软件包括存储在非暂时性机器可读存储媒体上的用于由处理器执行的指令。处理器可包括存储器,所述存储器存储用于由处理器执行的指令。

在处理器上运行以实施本发明的实施例的具体软件的任何组合构成特定专门机器。

如本文中所使用,术语“非暂时性机器可读存储媒体”应理解为排除暂时传播的信号但包括所有形式的易失性和非易失性存储器。此外,如本文中所使用,术语“处理器”应理解为涵盖多种装置,例如微处理器、现场可编程门阵列(fpga)、专用集成电路(asic)和其它类似处理装置。当软件在处理器上实施时,所述组合变为单一具体机器。

本领域的技术人员应了解,本文中的任何框图表示体现本发明的原理的说明性电路的概念视图。

尽管已特定参考各种示例性实施例的特定示例性方面详细地描述各种示例性实施例,但应理解,本发明能够容许其它实施例,且能够容许在各种显而易见的方面修改本发明的细节。如本领域的技术人员显而易见,可实现变化和修改同时保持在本发明的精神和范畴内。因此,前述公开内容、描述和图仅出于说明性目的且不以任何方式限制本发明,本发明仅由权利要求书限定。

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