CN109074459A - 用于确定防止重放攻击的防重放计数器的技术 - Google Patents
用于确定防止重放攻击的防重放计数器的技术 Download PDFInfo
- Publication number
- CN109074459A CN109074459A CN201780028008.0A CN201780028008A CN109074459A CN 109074459 A CN109074459 A CN 109074459A CN 201780028008 A CN201780028008 A CN 201780028008A CN 109074459 A CN109074459 A CN 109074459A
- Authority
- CN
- China
- Prior art keywords
- value
- memory
- arc
- integrated circuit
- programmable read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
本文提供维持用于在集成电路中提供数据保护的防重放计数器ARC的技术。一种根据所述技术的方法包含:基于存储在所述集成电路的可编程只读存储器中的ARC值确定静态基线值,基于所述静态基线值及瞬态分量确定所述ARC值,及将所述ARC值存储在所述集成电路的易失性存储器中。
Description
背景技术
数据安全是许多计算装置的关键问题。计算装置可包含安全处理子系统或可包含单独的处理器及可用于存储数据的存储器,所述安全处理子系统可实施为计算装置的处理器的安全区域。安全处理子系统可实施为系统芯片(SoC)或包含实施于集成电路上的处理器元件及存储器的其它类似装置。然而,集成电路上可用的存储器的量可为有限的且外部非易失性存储器(NVM)可用于存储供安全处理子系统使用的数据。可通过使用加密来确保NVM中存储的数据的机密性,且可通过使用数字签名确保NVM中存储的数据的完整性。然而,攻击者可在被称作回退或重放攻击的攻击中试图将数据的旧复本恢复到通过安全处理系统合法签署和/或加密的NVM。因此,存储在NVM中的数据需要额外保护。
发明内容
根据本发明的一种在集成电路中提供数据保护的实例方法包含:基于存储在所述集成电路的可编程只读存储器中的防重放计数器(anti-replay counter;ARC)值确定静态基线值,基于所述静态基线值及瞬态分量确定ARC值,及将所述ARC值存储在集成电路的易失性存储器中。
这类方法的实施方案可包含以下特征中的一或多者。每当数据将由所述集成电路写入到芯片外非易失性存储器时,重新确定所述瞬态分量。响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值。所述电力丢失事件包括从外部电源到所述集成电路的电力丢失或来自传感器的指示可去除或即将去除所述外部电源的信号。基于存储在所述可编程只读存储器中的所述ARC值确定所述静态基线值包含:存取存储在所述可编程只读存储器中的所述ARC值,所述ARC值以位模式的形式存储在所述可编程只读存储器中;从所述可编程只读存储器选择未包含在所述位模式中的至少一个位;设定在所述可编程只读存储器中选定的所述至少一个位的值;以及基于存储在所述可编程只读存储器中的所述ARC值及选定的所述至少一个位确定所述静态基线值。从所述可编程只读存储器选择未包含在所述位模式中的所述至少一个位包含随机选择所述至少一个位。确定所述瞬态分量,其中确定所述瞬态分量包含从所述可编程只读存储器随机选择未包含在所述静态基线值中的至少一个位,及设定随机选定的所述至少一个位的值。确定所述瞬态分量,其中确定所述瞬态分量包含:从所述可编程只读存储器选择未包含在所述静态基线值中且先前并未选定为所述瞬态分量的位的集合,使得包括所述位集合的位的数目为可选择的位的最小数目;及设定选定的所述至少一个位的值。使用所述ARC值的至少部分计算消息认证码(MAC)或至少关于待写入所述芯片外非易失性存储器的所述数据或所述数据的摘要的密码签名;及将所述数据及所述MAC或所述密码签名写入到所述芯片外非易失性存储器。
根据本发明的一种实例集成电路包含:用于基于存储在所述集成电路的可编程只读存储器中的防重放计数器(ARC)值确定静态基线值的装置,用于基于所述静态基线值及瞬态分量确定ARC值的装置,及用于将所述ARC值存储在所述集成电路的易失性存储器中的装置。
这种集成电路的实施方案可包含以下特征中的一或多者。用于每当数据将由所述集成电路写入到芯片外非易失性存储器时重新确定所述瞬态分量的装置。用于响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值的装置。所述电力丢失事件包括从外部电源到所述集成电路的电力丢失或来自传感器的指示可去除或即将去除所述外部电源的信号。用于基于存储在所述可编程只读存储器中的所述ARC值确定所述静态基线值的装置包含:用于存取存储在所述可编程只读存储器中的所述ARC值的装置,所述ARC值以位模式的形式存储在所述可编程只读存储器中;用于从所述可编程只读存储器选择未包含在所述位模式中的至少一个位的装置;用于设定在所述可编程只读存储器中选定的所述至少一个位的值的装置;以及用于基于存储在所述可编程只读存储器中的所述ARC值及选定的所述至少一个位确定所述静态基线值的装置。用于从所述可编程只读存储器选择未包含在所述位模式中的所述至少一个位的装置包括用于随机选择所述至少一个位的装置。用于确定瞬态分量的装置,其中所述用于确定所述瞬态分量的装置包含用于从所述可编程只读存储器随机选择未包含在所述静态基线值中的至少一个位的装置及用于设定随机选定的所述至少一个位的值的装置。用于确定所述瞬态分量的装置,其中所述用于确定所述瞬态分量的装置包含:用于从所述可编程只读存储器选择未包含在所述静态基线值中且先前并未选定为所述瞬态分量的位的集合,使得包括所述位集合的位的数目为可选择的位的最小数目的装置;以及用于设定选定的所述至少一个位的值的装置。用于使用所述ARC值的至少部分计算消息认证码(MAC)或至少关于待写入所述芯片外非易失性存储器的所述数据或所述数据的摘要的密码签名的装置;及用于将所述数据及所述MAC或所述密码签名写入到所述芯片外非易失性存储器的装置。
根据本发明的一种实例集成电路包含易失性存储器、可编程只读存储器以及耦合到所述易失性只读存储器及所述可编程只读存储器的处理器。所述处理器经配置以基于存储在所述集成电路的所述可编程只读存储器中的防重放计数器(ARC)值确定静态基线值,基于所述静态基线值及瞬态分量确定所述ARC值,及将所述ARC值存储在所述集成电路的所述易失性存储器中。
这种集成电路的实施方案可包含以下特征中的一或多者。所述处理器经配置以每当数据将由所述集成电路写入到芯片外非易失性存储器时重新确定所述瞬态分量。所述处理器经进一步配置以响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值。所述电力丢失事件包括从外部电源到所述集成电路的电力丢失或来自传感器的指示可去除或即将去除所述外部电源的信号。经配置以基于存储在所述可编程只读存储器中的所述ARC值确定所述静态基线值的所述处理器经进一步配置以:存取存储在所述可编程只读存储器中的所述ARC值,所述ARC值以位模式的形式存储在所述可编程只读存储器中;从所述可编程只读存储器选择未包含在所述位模式中的至少一个位;设定在所述可编程只读存储器中选定的所述至少一个位的值;以及基于存储在所述可编程只读存储器中的所述ARC值及选定的所述至少一个位确定所述静态基线值。经配置以从所述可编程只读存储器选择未包含在所述位模式中的所述至少一个位的所述处理器经配置以随机选择所述至少一个位。所述处理器经进一步配置以确定所述瞬态分量,其中所述处理器经配置以:从所述可编程只读存储器随机选择未包含在所述静态基线值中的至少一个位,及设定随机选定的所述至少一个位的值。所述处理器经进一步配置以确定所述瞬态分量,且其中所述处理器经配置以:从所述可编程只读存储器选择未包含在所述静态基线值中且先前并未选定为所述瞬态分量的位的集合,使得包括所述位集合的位的数目为可选择的位的最小数目;及设定选定的所述至少一个位的值。所述处理器经进一步配置以:使用所述ARC值的至少部分计算消息认证码(MAC)或至少关于待写入所述芯片外非易失性存储器的所述数据或所述数据的摘要的密码签名;及将所述数据及所述MAC或所述密码签名写入到所述芯片外非易失性存储器。
一种实例非暂时性计算机可读媒体,其上存储有用于在集成电路中提供数据保护的计算机可读指令。所述指令经配置以使得计算机基于存储在所述集成电路的可编程只读存储器中的防重放计数器(ARC)值确定静态基线值、基于所述静态基线值及瞬态分量确定所述ARC值及将所述ARC值存储在所述集成电路的易失性存储器中。
这种非暂时性计算机可读媒体的实施方案可包括以下特征中的一或多者。经配置以使得所述计算机每当数据将由所述集成电路写入到芯片外非易失性存储器时重新确定所述瞬态分量的指令。经配置以使得所述计算机响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值的指令。所述电力丢失事件包括从外部电源到所述集成电路的电力丢失或来自传感器的指示可去除或即将去除所述外部电源的信号。经配置以使得所述计算机基于存储在所述可编程只读存储器中的所述ARC值确定所述静态基线值的指令进一步包括经配置以使得所述计算机进行以下操作的指令:存取存储在所述可编程只读存储器中的所述ARC值,所述ARC值以位模式的形式存储在所述可编程只读存储器中;从所述可编程只读存储器选择未包含在所述位模式中的至少一个位;设定在所述可编程只读存储器中选定的所述至少一个位的值;以及基于存储在所述可编程只读存储器中的所述ARC值及选定的所述至少一个位确定所述静态基线值。经配置以使得所述计算机从所述可编程只读存储器选择未包含在所述位模式中的所述至少一个位的指令包含经配置以使得所述计算机随机选择所述至少一个位的指令。经配置以使得所述计算机确定瞬态分量的指令,所述指令包含经配置以使得所述计算机进行以下操作的指令:从所述可编程只读存储器随机选择未包含在所述静态基线值中的至少一个位;及设定随机选定的所述至少一个位的值。经配置以使得所述计算机确定所述瞬态分量的指令,所述指令包含经配置以使得所述计算机进行以下操作的指令:从所述可编程只读存储器选择未包含在所述静态基线值中且先前并未选定为所述瞬态分量的位集合,使得包括所述位集合的位的数目为可选择的位的最小数目;及设定选定的所述至少一个位的值。经配置以使得所述计算机进行以下步骤的指令:使用所述ARC值的至少部分计算消息认证码(MAC)或至少关于待写入所述芯片外非易失性存储器的所述数据或所述数据的摘要的密码签名;及将所述数据及所述MAC或所述密码签名写入到所述芯片外非易失性存储器。
附图说明
图1为一实例计算机系统的功能框图,其说明本文中所揭示的技术。
图2为一实例计算机系统的功能框图,所述实例计算机系统可用于实施图1中所说明的计算机系统。
图3为根据本文中所揭示的技术的用于在集成电路中提供数据保护的实例过程的流程图。
图4为根据本文中所揭示的技术的用于维持防重放计数器的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。
图5为根据本文中所揭示的技术的用于维持防重放计数器的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。
图6为根据本文中所揭示的技术的用于确定防重放计数器的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。
图7为根据本文中所揭示的技术的用于将数据存储在非易失性存储器中的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。
图8为根据本文中所揭示的技术的用于确定防重放计数器的静态基线值的实例过程的流程图,所述实例过程可用于至少部分地实施图6中所说明的过程。
图9为说明根据本文中所揭示的技术的用于维持防重放计数器的基于随机数的技术的图式。
图10为说明根据本文中所揭示的技术的用于维持防重放计数器的另一技术的图式。
图11为说明根据本文中所揭示的技术的用于维持防重放计数器的另一技术的图式。
图12为根据本文中所揭示的技术的用于确定防重放计数器的瞬态分量的实例过程的流程图。
图13为根据本文中所揭示的技术的用于确定防重放计数器的瞬态分量的实例过程的流程图。
图14为一实例计算机系统的功能框图,其说明本文中所揭示的技术。
具体实施方式
本文中所揭示的技术经配置以提供基于熔丝的防重放机制。本文中所揭示的基于熔丝的防重放技术可用于维持防重放计数器(ARC),所述防重放计数器可用于防止对通过集成电路(例如系统芯片(SoC))存储在芯片外非易失性存储器中的数据的重放攻击。ARC值可维持在集成电路的易失性存储器中,但响应于指示从安置为离开集成电路的外部电源提供的电力已丢失或所述电力丢失即将发生的事件,ARC值可写入集成电路的一次性可编程存储器的熔丝。到集成电路的电力丢失可致使芯片外非易失性存储器对于集成电路来说不可存取。将ARC存储在一次性可编程存储器中确保了ARC值维持原本会丢失的到集成电路的易失性存储器的电力。本文中所揭示的技术提供一种用于维持ARC值的机制,所述机制并不要求通过将ARC存储在一次性可编程存储器中来将ARC值的全部或一部分存储在芯片外非易失性存储器中。本文中所揭示的技术可用于通过加密或其它手段提供数据机密性,且通过使用消息认证或其它手段提供数据完整性。以下实例实施例说明了这些概念。
图1为一实例计算装置100的功能框图,其说明本文中所揭示的技术。计算装置100包括安全处理子系统110及在安全处理子系统110外部的可由安全处理子系统110用于存储数据的非易失性存储器(NVM)150。安全处理子系统110可实施于集成电路上,且外部NVM150可实施为并不实施于集成电路上的芯片外存储器,安全处理子系统110。安全处理子系统110可为处理器可执行程序代码及安全数据存储提供安全执行环境,所述安全执行环境可防止对存储于其中的数据的未授权存取和/或防止通过安全处理子系统110的处理器对处理器可执行程序指令的未授权执行。
安全处理子系统110可包含处理器190,所述处理器可实施本文中关于安全处理子系统110所论述的各种功能及功能元件。举例来说,以下功能元件可由安全处理子系统110的处理器190实施:HMAC块130、HMAC块135和/或匹配块145。安全处理子系统还可由计算装置100的通用处理器实施,所述通用处理器可经配置以使安全处理资源及存储器与用于非安全应用程序的通用处理资源及存储器分开。此外,安全处理子系统110可经配置以产生关于待写入所述外部NVM 150的数据的至少一部分或数据的摘要的密码签名。举例来说,安全处理子系统110的处理器190可经配置以产生数据的至少部分的散列或数据的摘要且对数据的散列或摘要进行加密。替代MAC 160或除MAC 160之外,加密的散列可与数据一起存储在外部NVM 150中。
安全处理子系统110可包含易失性存储器120及非易失性存储器,例如一次性可编程存储器125。易失性存储器120可包括经配置以在电力提供到易失性存储器120时维持存储于其中的数据的存储器。如果安全处理子系统110的电源丢失,那么易失性存储器120的内容将丢失。一次性可编程存储器125包括即使到安全处理子系统110的电力丢失也保留存储于其中的数据的持久性存储器。一次性可编程存储器125可包括多个熔丝,其各自表示数据的位,且特定位的值可通过使对应熔丝熔断而设定。一旦设定,熔丝的值无法改变。处于其原始状态的熔丝的值可用于表示位值零(‘0’),且熔断后熔丝的值可用于表示位值一(‘1’)。在其它实施例中,处于其原始状态的熔丝的值可用于表示位值一(‘1’),且熔断后熔丝的值可用于表示位值一(‘0’)。此外,可使用其它类型的一次性可编程存储器125。举例来说,一次性可编程存储器125可包括反熔丝而非熔丝。
安全处理子系统110可包含内部电源195。在来自外部电源185的电力丢失的情况下,内部电源可用作可向安全处理子系统提供电力的辅助电源。内部电源195可包括电容器、电池或可存储电力的其它装置,其在来自外部电源185的电力丢失的情况下可在至少较短时间内为安全处理子系统110供电。内部电源195可经配置以向安全处理子系统110提供充足电力以允许安全处理子系统110将存储在易失性存储器120中的当前防重放计数器(ARC)值140写入一次性可编程存储器125,使得ARC值并不由于装置丢失电力而丢失。
外部电源185可包括电池或可将电力提供到计算装置100的组件的其它装置。外部电源185与安全处理子系统110分离且可从计算装置移动。计算装置100可包含传感器(图1中未示出),所述传感器可响应于传感器检测到计算装置的物理入侵而将信号提供到安全处理子系统110。外部电源185可包括可拆卸电池或可通过计算装置100的用户去除且与另一外部电源185调换的其它电源。举例来说,计算装置100的用户可在电源耗竭或装置的用户可能希望强制重启计算装置100时将外部电源185与另一外部电源185调换。
安全处理子系统可经配置以响应于来自外部电源的电力丢失或外部电源185达到预定阈值而将被称作防重放计数器(ARC)值165的ARC值存储在一次性可编程存储器125中。其它事件也可触发安全处理子系统的处理器190将来自非易失性存储器的ARC值140作为ARC值165存储在一次性可编程存储器125中。这些事件包含但不限于:(1)安全处理子系统做出外部电源185的剩余电力水平已达到指示来自外部电源185的电力可能很快丢失的预定阈值的确定,(2)计算装置100正关闭或重启且来自非易失性存储器的ARC值140如果不作为ARC值165写入一次性可编程存储器125就将丢失,或(3)安全处理子系统110从计算装置100的传感器接收可能指示电池或其它外部电源可能从计算装置100去除的信号。
计算装置100的安全处理子系统110可使用ARC值来防止重放攻击,在所述重放攻击中攻击者试图将过期但原本有效的数据放置在外部NVM 150中以图接入安全处理子系统110或使安全处理子系统执行某一未授权动作。为了避免重放攻击,安全处理子系统依赖于ARC。在安全处理子系统110的易失性存储器120中,安全处理子系统可产生在本文中被称作有效负载数据115的数据。然而,如集成电路的芯片上存储器的非易失性存储器可用的量通常受限于大小及成本约束,且安全处理子系统110可能需要将有效负载数据115卸载到外部NVM 150以释放空间以用于额外处理任务。安全处理子系统110可将有效负载数据115卸载到外部NVM 150,所述有效负载数据可为稍后所要的且可写入外部NVM 150以供永久性存储,这是因为一次性可编程存储器125的大小通常有限且一次性可编程存储器125的每一位可仅写入一次。
在计算装置100通电时,安全处理子系统110的处理器190可从一次性可编程存储器125检索ARC值165并将ARC值140存储在易失性存储器120中。ARC值140可维持在易失性存储器120中直到使得安全处理子系统110的处理器190用存储在易失性存储器120中的ARC值140的当前值来更新一次性可编程存储器中的ARC值165的触发事件发生。触发事件为指示到安全处理子系统110的外部电源可能或已经丢失,且因此除非备份否则易失性存储器120的内容将丢失的事件。维持易失性存储器120中的ARC值直到这种触发事件发生使得安全处理子系统110明显地减少维持ARC计数器将需要的熔丝的数目。每当数据写入外部NVM 150时ARC值140经更新。如果ARC计数器维持在一次性可编程存储器125中,那么每当到NVM的写入事件出现时将需要熔断至少一个熔丝。归因于针对制造在其上实施安全处理子系统110的集成电路的大小及成本考虑因素,包括一次性可编程存储器125的熔丝的数目通常相对较小。一次性可编程存储器125的熔丝将迅速耗尽,使不具有芯片上存储装置的安全处理子系统110用于将在计算装置100断电或重启时将并非丢失的ARC值安全地存储在持久性存储器中。
ARC值140可由安全处理子系统110使用以产生可与将存储在所述外部NVM中的有效负载数据155一起写入外部NVM 150的消息认证码(MAC)160,所述消息认证码可用于确定有效负载数据155是否由于MAC 160已经计算而已经修改。HMAC块130可经配置以将带密钥的散列消息认证码(hash message authentication code;HMAC)算法应用于存储在易失性存储器120中的将写入外部NVM 150的有效负载数据115。HMAC块130可将ARC值的至少一部分用作HMAC算法的关键参数。在计算MAC 160之前,安全处理子系统110可能已加密或以其它方式处理有效负载数据115。安全处理子系统110可经配置以将MAC 160及有效负载数据155写入外部NVM 150。安全处理子系统110可经配置以经由总线或计算装置100的其它通信路径与外部NVM 150通信。安全处理子系统110可经配置以稍后从外部NVM 150检索有效负载数据155及MAC 160。HMAC块135可从易失性存储器120接收有效负载数据155及ARC值140的当前值且基于当前防重放计数器值重新计算有效负载数据155的MAC。匹配块145接着可比较新计算的MAC值与MAC 160。如果MAC 160匹配新计算的MAC值,那么有效负载数据155尚未修改,也不存在将过期有效负载数据及过期MAC插入外部NVM 150中的重放攻击。如果MAC160并不匹配新计算的MAC值,那么有效负载数据155已经修改或损坏或存在将过期有效负载数据和/或过期MAC插入外部NVM 150中的重放攻击。与过期有效负载数据相关联的MAC160将并不匹配由HMAC块135重新计算的MAC,这是因为每当数据写入外部NVM 150时存储在易失性存储器120中的ARC值140经更新。由于针对有效负载数据155确定MAC 160,ARC值140应已递增一或多次,因此基于ARC值140的当前值的新确定的MAC将并不匹配MAC 160。
HMAC块130、HMAC块135及匹配块145的功能性可实施于安全处理子系统的硬件中,或可实施为通过安全处理子系统110的处理器190执行的处理器可执行码。
如图1中所说明,当数据将写入外部NVM 150时,安全处理子系统110的处理器190可经配置以计算待写入外部NVM 150的有效负载数据155的MAC 160。MAC 160可使用带密钥的散列消息认证码(hash message authentication code;HMAC)产生。HMAC算法经配置以接收MAC值将因其而得以产生的数据及用于从数据产生MAC值的私密密钥。图1说明包含HMAC块130的安全处理子系统110的实例,所述HMAC块接收有效负载数据及存储在安全处理子系统110的易失性存储器120中的ARC值。ARC值的至少一部分可由HMAC块130选择以用于产生将写入外部NVM 150的数据的MAC160,所述数据在图1中被称作有效负载数据155。存储在易失性存储器120中的ARC值140的值可在MAC 160递增之前递增到新值以防止重放攻击。ARC值140的值可使用各种技术实施,其中ARC值140的至少一部分可使用随机算法或组合算法来选择。图9到11说明其中ARC的值使用各种技术递增的实例过程。
图1中说明的实例计算装置100还可经调试以考虑具有变化大小的有效负载数据115。举例来说,有效负载大小可包括:包括外部NVM 150的全部的数据,对应于存储器页的数据,或已标记为敏感的任何大小的数据(未标记为敏感的数据可存储在外部NVM 150中而不需要MAC 160或可为有效负载数据155提供的其它这类相关保护)。
图14为实例计算装置1400的功能框图,其说明本文中所揭示的技术的变体。图1中说明的实例说明了如下实例:其中存在有效负载数据155及MAC 160存储在外部NVM 150中的单一情况。图14的实例计算装置1400可经配置以将多个有效负载(例如,有效负载1455a到1455n)存储在NVM 1450中,每一有效负载具有相关MAC 160a-n,其中a-n表示从0到整数值n的整数值范围。如果没有数据存储在使用本文中所揭示的技术获得安全的NVM 1450中,那么n的下限可为零,且n的值的上限可受包括易失性存储器1420的存储器的量、NVM 1450的大小和/或其它因素限制。
计算装置1400类似于图14中说明的计算装置100。计算装置1400包含类似于图1中说明的安全处理子系统110及外部NVM 150操作的安全处理子系统1410及NVM1450。计算装置1400还可包含类似于图1的外部电源185及内部电源195运作的外部电源1485及内部电源1495。计算装置1400包含类似于计算装置100的易失性存储器120的易失性存储器1420。计算装置1400还可包含类似于处理器190的处理器1490、类似于HMAC块130的HMAC块1430、类似于HMAC块135的HMAC块1435和/或类似于匹配块145的匹配块1445。计算装置1400还可包含类似于一次性可编程存储器125的一次性可编程存储器1425。
计算装置1400采用的技术稍微不同于计算装置100的技术,以使得计算装置1400支持将多个有效负载(例如,有效负载1450a-n)及多个MAC(例如,MAC 1460a-n)存储在NVM1450中。图4中说明的实例实施方案及图1的实例实施方案之间不同的一个方面在于:将ARC值存储在安全处理子系统1410的易失性存储器1420中的方式与上文关于图1描述的方式的对比。在图1中论述的技术中,包括静态基线分量及瞬态分量的单个ARC值可存储在易失性存储器120中。相比之下,在图4中说明的实施方案中,由于多个有效负载(例如,有效负载1455a-g)可存储在NVM 1450中,所以可维持多个ARC值。每一有效负载1455可与不同ARC值相关联。安全处理子系统1410可经配置以记录用于每一有效负载1455的ARC。弧值可各自共享静态基线分量1440,ARC值的瞬态分量1470针对每一有效负载1455可不同。安全处理子系统1410可将多个瞬态分量(例如,瞬态分量1470a至1470n)连同静态基线分量1440一起存储在易失性存储器1420中。有效负载数据可先存储在易失性存储器1420中,之后写入NVM1450。如果尚未计算静态基线分量1440,那么安全处理子系统1410的处理器1490可经配置以使用图8中说明的过程基于存储在一次性可编程存储器1425中的ARC值1465确定静态基线分量1440。静态基线分量1440可维持在NVM 1450中直到触发事件发生,所述触发事件引起安全处理子系统1410的处理器1490更新一次性可编程存储器1425中的ARC值1465。所述触发事件可类似于上文关于图1所论述的事件。在一些实施方案中,安全处理子系统1410可将静态基线分量1440写入一次性可编程存储器1425以作为ARC值1465。安全处理子系统1410还可经配置以组合瞬态分量1470与静态基线分量1440(例如,如图9到11中所说明)以产生待写入存储在一次性可编程存储器1425中的ARC值1465的ARC值。安全处理子系统1410还可经配置以选择瞬态分量1470的最新确定的值以用于产生待写入存储在一次性可编程存储器1425中的ARC值1465的ARC值或可选择易失性存储器120中的瞬态分量1470值中的一者。
安全处理子系统1410的处理器1490可经配置以确定被写入NVM 1450的用于每一有效负载1455的ARC的瞬态分量1470。安全处理子系统1410可经配置以使用图9到13中说明的过程中的一者确定用于特定有效负载1455的ARC的瞬态分量1470。
安全处理子系统1410可经配置以基于包括静态基线分量1440及瞬态分量1470的用于有效负载的ARC值(例如,包括静态基线分量1440及瞬态分量1470a的用于有效负载1455a的ARC值)来确定用于有效负载1455的MAC 1460。安全处理子系统1410的处理器1490可经配置以将有效负载1455及MAC 1460写入NVM 1450。安全处理子系统1410还可经配置以视情况将瞬态分量1470连同有效负载1455及MAC 1460一起写入NVM 1450以作为瞬态分量1475。在一些实施方案中,安全处理子系统1410可经配置以将用于有效负载的瞬态分量1475存储在外部NVM 150中且不存储易失性存储器1420中的对应复本。安全处理子系统1410还可经配置以维持易失性存储器1420中的瞬态分量1470的复本且将瞬态分量1475存储在NVM 1450中。安全处理子系统1410可经配置以比较瞬态分量1470的值与瞬态分量1475的值,其为验证NVM 1450的内容是否可能已被篡改或已被损毁的过程中的一个步骤。用于有效负载1455的MAC可通过组合瞬态分量1470或瞬态分量1475与静态基线分量1440来计算,且与存储在NVM 1450中的MAC 1460进行比较。如果MAC的计算值不匹配与特定有效负载1455相关联的MAC 1460,那么NVM 1450的内容可能已被篡改或损毁。
图2为可用于实施图1中所说明的计算装置100或图14中所说明的计算装置1400的实例计算装置200的功能框图。图2为说明实例计算装置200的各种组件的示意图,所述实例计算装置可能与图1中所描绘的计算装置100或图14中所描绘的计算装置1400类似或相同。为简单起见,图2的示意性方框中所说明的各种特征/组件/功能使用共同总线连接在一起以表示这些各种特征/组件/功能以可操作方式耦合在一起。可提供其它连接、机制、特征、功能等等且在必要时对其进行调适而以可操作方式耦合并配置便携式无线装置。此外,图2的实例中所说明的特征或功能中的一或多者可进一步细分,或图2中所说明的特征或功能中的两者或多于两者可组合。另外,可排除图2中所说明的特征或功能中的一或多者。
如所示出,计算装置200可包含可连接到一或多个天线202的一或多个局域网收发器206。所述一或多个局域网收发器206包括用于与图1中所描绘的WLAN接入点106a到106e中的一或多者通信和/或检测去往/来自所述一或多者的信号,和/或直接与网络内的其它无线装置通信的合适的装置、电路、硬件和/或软件。在一些实施例中,局域网收发器206可包括适用于与一或多个无线接入点通信的WiFi(802.11x)通信收发器;然而,在一些实施例中,局域网收发器206可经配置以与其它类型的局域网、个人局域网(例如蓝牙(无线技术网络))等通信。另外,可使用任何其它类型的无线联网技术,例如超宽带、紫蜂、无线USB等。
在一些实施方案中,计算装置200还可包含可连接到一或多个天线202的一或多个广域网收发器204。广域网收发器204可包括用于与例如WWAN接入点中的一或多者通信和/或检测来自所述一或多者的信号,和/或直接与网络内的其它无线装置通信的合适的装置、电路、硬件、和/或软件。在一些实施方案中,广域网收发器204可包括适用于与无线基站的CDMA网络通信的CDMA通信系统。在一些实施方案中,无线通信系统可包括其它类型的蜂窝式电话网络,例如TDMA、GSM、WCDMA、LTE等。另外,可使用任何其它类型的无线联网技术,包含例如WiMax(802.16)等。
在一些实施例中,SPS接收器(还被称作全球导航卫星系统(GNSS)接收器)208还可与计算装置200包含在一起。SPS接收器208可以连接到一或多个天线202以用于接收卫星信号。SPS接收器208可以包括用于接收并处理SPS信号的任何合适硬件和/或软件。SPS接收器208可在适当时从其它系统请求信息,且可部分地使用由任何合适的SPS程序获得的测量值而执行确定计算装置200的位置所必需的计算。
图2中进一步说明,实例计算装置200包含耦合到控制器/处理器210的一或多个传感器212。举例来说,传感器212可包含用以提供相对移动和/或定向信息(其独立于从由广域网收发器204、局域网收发器206和/或SPS接收器208接收的信号导出的运动数据)的运动传感器。借助实例但非限制,运动传感器可包含加速计212a、陀螺仪212b以及地磁(磁力计)传感器212c(例如,指南针),其中任一者可基于微机电系统(MEMS)或基于某种其它技术而实施。一或多个传感器212可进一步包含物理入侵传感器212d、温度计(例如热敏电阻器)212e、音频传感器212f(例如麦克风)和/或其它传感器。一或多个传感器212的输出可作为发射到远程装置或服务器(经由广域网收发器204和/或局域网收发器206,或经由计算装置200的某一网口或接口)以供存储或进一步处理(例如可通过匹配由移动装置的传感器测量的传感器数据与维持在服务器处且包含各种无线节点的天线信息的记录以及先前由一或多个无线装置获得的相关联传感器数据来推断与计算装置200通信的AP的天线信息)的数据(以及与计算装置200通信的节点的天线信息和/或如位置数据的这类数据)的部分而提供。如图2中进一步展示,在一些实施例中,一或多个传感器212还可包含相机212g(例如电荷耦合装置(CCD)型相机、基于CMOS的图像传感器等),所述相机可产生静止或移动图像(例如视频序列),所述静止或移动图像可在用户接口装置(例如显示器或屏幕)上显示,且可进一步用于确定环境照明水平和/或有关颜色的信息以及UV和/或红外照明的存在及水平。
物理入侵传感器212d可经配置以产生指示事件存在的信号,所述信号可指示计算装置的外部电源185可经去除。物理入侵传感器212d可包括机械开关,所述机械开关在计算装置200的外壳打开或其中安置有外部电源185的隔室打开的情况下被触发,且经配置以响应于外壳或隔室已打开而产生信号。物理入侵传感器212d还可包括光传感器,所述光传感器在计算装置200的外壳打开或其中安置有外部电源185的隔室打开的情况下可检测进入计算装置200的光,且可产生指示光级的变化的信号。物理入侵传感器212d还可包括电容性传感器,所述电容性传感器经配置以响应于计算装置200的用户触摸物理入侵传感器212d或靠近传感器位置而产生信号,所述信号可指示用户可从计算装置200去除外部电源185。其它类型的传感器也可用于响应于事件产生可指示计算装置200的外部电源185可经去除的信号。
处理器(还被称作控制器)210可连接到局域网收发器206、广域网收发器204、SPS接收器208及一或多个传感器212。所述处理器可包含提供处理功能以及其它计算和控制功能性的一或多个微处理器、微控制器和/或数字信号处理器。处理器210可耦合到存储媒体(例如存储器)214以用于存储数据及软件指令从而执行移动装置内的经编程功能性。存储器214可装载于处理器210上(例如,在同一IC封装内),和/或所述存储器可为处理器外部的存储器且功能上经由数据总线耦合。
多个软件模块和数据表可驻留在存储器214中且可由处理器210利用以便管理两者与远程装置/节点的通信,执行定位确定功能性和/或执行装置控制功能性。如图2中所说明,在一些实施例中,存储器214可包含定位模块216及应用程序模块218、接收信号强度指示符(RSSI)模块220,和/或往返时间(RTT)模块222。应注意,取决于计算装置200的实施方案,模块和/或数据结构的功能性可经组合、分离和/或以不同方式构造。举例来说,模块220和/或模块222可各自至少部分地实现为基于硬件的实施方案,且可因此包含这类装置或电路作为专用天线(例如专用RTT和/或RSSI天线)、专用处理单元来处理及分析经由天线接收和/或发射的信号(例如确定接收到的信号的信号强度、确定相对于RTT周期的定时信息等)。
应用模块218可为在计算装置200的处理器210上运行的过程,其可从定位模块216请求位置信息或从计算装置200的其它模块请求其它数据。应用程序通常在软件架构的上部层内运行且可在计算装置200的丰富的执行环境中实施,且可包含室内导航应用程序、购物应用程序、位置感知服务应用程序等等。定位模块216可例如基于由RSSI模块和/或RTT模块执行的测量,使用从计算装置200的各种接收器和模块导出的信息导出计算装置200的位置。定位及应用程序模块还可部分地基于与发射器相关联的测距信息执行各种过程(例如确定位置估计,执行导航操作),所述发射器与移动装置通信(如下文更详细地论述)。
处理器210可包含受信任执行环境280,和/或计算装置200可包含安全元件290。受信任执行环境280和/或安全元件290可用于实施图1中所说明的安全处理子系统110,且外部NVM 150可由存储器214或计算装置200的另一存储器(未示出)实施。
处理器210还可包含受信任执行环境280。受信任执行环境280可实施为处理器210的安全区域,所述处理器可用于在与可执行操作系统和/或应用程序(例如应用程序模块218的应用程序)的丰富执行环境分离的环境下处理和存储敏感数据。受信任执行环境280可经配置以执行受信任应用程序,其通过加强存储于其中的敏感数据的机密性、完整性和保护而为敏感数据提供端到端安全性。受信任执行环境280可用于存储加密密钥、防重放计数器数据和/或其它敏感数据。处理器210还可包括可用于实施图1的一次性可编程存储器125的一次性可编程存储器。
计算装置200可包含安全元件290(在本文中还被称作受信任组件)。计算装置200可包含除受信任执行环境280以外或代替受信任执行环境280的安全元件290。安全元件290可包括可用于执行安全应用程序及与这类应用程序相关的机密数据的自主及防篡改硬件。安全元件290可用于存储加密密钥、防重放计数器数据和/或其它敏感数据。安全元件290还可包括可用于实施图1的一次性可编程存储器125的一次性可编程存储器。安全元件290可包括近场通信(NFC)标签、用户识别模块(SIM)卡或可用于安全地存储数据的其它类型的硬件装置。安全元件290可以永久性或半永久性方式与计算装置200的硬件集成或在一些实施方案中可为计算装置200的可拆卸组件,其可用于安全地存储数据和/或为应用程序提供安全执行环境。
计算装置200可进一步包含提供合适接口系统的用户接口250,例如允许用户与计算装置200交互的麦克风/扬声器252、小键盘254和显示器256。麦克风/扬声器252(其可与音频传感器212f相同或不同)提供语音通信服务(例如使用广域网收发器204和/或局域网收发器206)。小键盘254可包括用于用户输入的合适的按钮。显示器256可包含例如背光式LCD显示器等合适显示器,且可以进一步包含用于额外用户输入模式的触摸屏显示器。
图3为根据本文中所揭示的技术的用于在集成电路中提供数据保护的实例过程的流程图。图3中所说明的过程可通过图1和2中所说明的计算装置100的安全处理子系统110的处理器实施。图3中所说明的过程可用于根据上文关于图1所论述的技术产生及维持ARC计数器。图3中所说明的过程还可经修改以支持如关于图14所论述的多个有效负载,其中每一有效负载与ARC值相关联。
防重放计数器值可能维持在集成电路的易失性存储器中(阶段305)。集成电路可包括安全处理子系统110,例如图1中所说明的安全处理子系统或计算装置的另一处理组件,其可提供安全执行环境及安全数据存储,安全数据存储可防止对存储于其中的数据的未授权存取和/或防止通过安全处理子系统110的处理器或其它这类处理组件对处理器可执行程序指令的未授权执行。防重放计数器值可能与存储在芯片外非易失性存储器(例如图1中所说明的外部NVM 150)中的数据相关联,集成电路经配置以将数据存储在芯片外非易失性存储器中。集成电路的易失性存储器包括只要电力供应到存储器即维持存储于其中的数据的存储器。图1中所说明的安全处理子系统110包含易失性存储器120。
可监测到集成电路的外部电源(阶段310)。只要电力供应到集成电路的易失性存储器,ARC可存储在易失性存储器中。举例来说,只要到安全处理子系统110的电源保持可用,安全处理子系统110的易失性存储器120可用于维持ARC值。外部电源可包括为计算装置100供电的电池。来自外部电源的电力的丢失可由电池完全或几乎完全放电且不能够提供充足电输出以为计算装置100供电引起。安全处理子系统的处理器还可经配置以监测剩余电池电力以确定剩余电池电力是否已低于可指示来自外部电源的电力可能很快丢失的预定阈值。
响应于从外部电源到集成电路的电力丢失将防重放计数器值写入集成电路的可编程只读存储器(阶段315)。如本文中所使用的术语“电力丢失”可理解为指示外部电源不再为安全处理子系统110提供电力或外部电源的剩余电力水平已达到安全处理子系统的电力丢失即将发生的阈值。处理器可采用存储在易失性存储器120中的ARC的当前值且将ARC的当前值写入安全处理子系统110的一次性可编程存储器125。包括ARC的值的位可通过使一次性可编程存储器125中对应ARC值的熔丝的适当集合熔断而存储在一次性可编程存储器125中。
安全处理子系统110可包含辅助内部电源,例如电容器。辅助内部电源可经配置以存储少量电能,所述少量电能可用于响应于来自外部电源的电力的丢失将ARC值从易失性存储器120写入一次性可编程存储器125。在安全处理子系统110不包含这种辅助电源的情况下,安全处理子系统110可经配置以监测外部电源的剩余电力水平,且可经配置以响应于外部电源的剩余电力水平低于预定阈值将ARC值从易失性存储器120写入一次性可编程存储器125。
安全处理子系统110还可包含物理入侵传感器或经配置以从计算装置100的物理入侵传感器接收信号,所述物理入侵传感器如图2中所说明的计算装置的实例实施方案中所说明的物理入侵传感器212d。物理入侵传感器可经配置以响应于检测到计算装置100的物理篡改(physical tampering)输出信号,所述信号可指示计算装置100的用户试图去除电池或计算装置100的其它外部电源。安全处理子系统110的处理器可经配置以监测来自物理入侵传感器的信号且响应于来自物理入侵传感器的信号将ARC值从易失性存储器120写入一次性可编程存储器125。在从计算装置100去除外部电源的情况下,当安全处理子系统110不包含用以提供电力的辅助内部电源时可能包含物理入侵传感器。
图4为根据本文中所揭示的技术的用于维持防重放计数器的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。举例来说,图4中所说明的过程可用于至少部分地实施图3中所说明的过程的阶段310。图4中所说明的过程可通过图1和2中所说明的计算装置100的安全处理子系统110的处理器实施。图4中所说明的过程可用于根据上文关于图1所论述的技术维持ARC计数器。
可监测与其中安置有集成电路的计算装置相关联的传感器(阶段405)。安全处理子系统110还可包含传感器或经配置以从计算装置100的传感器接收信号,所述传感器例如图2中所说明的计算装置的实例实施方案中所说明的物理入侵传感器212d。传感器可经配置以在检测到可指示计算装置100的物理篡改的活动之后输出信号。这类篡改可指示计算装置100的用户试图去除电池或计算装置100的其它外部电源,且其可触发安全处理子系统110存储ARC值140。
图5为根据本文中所揭示的技术的用于维持防重放计数器的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。举例来说,图4中所说明的过程可用于至少部分地实施图3中所说明的过程的阶段315。图4中所说明的过程可通过图1和2中所说明的计算装置100的安全处理子系统110的处理器实施。图4中所说明的过程可用于根据上文关于图1所论述的技术维持ARC计数器。
响应于到集成电路的电力丢失,防重放计数器可写入集成电路的可编程只读存储器(阶段505)。安全处理子系统110的处理器可经配置以监测来自物理入侵传感器的信号且响应于来自物理入侵传感器的信号将ARC值从易失性存储器120写入一次性可编程存储器125。在从计算装置100去除外部电源的情况下,当安全处理子系统110不包含用以提供电力的辅助内部电源时可能包含物理入侵传感器。
图6为根据本文中所揭示的技术的用于确定防重放计数器的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。举例来说,图6中所说明的过程可用于至少部分地实施图3中所说明的过程的阶段305。图6中所说明的过程还可为可用于确定ARC值且可用于在集成电路中提供数据保护的独立过程。图6中所说明的过程可通过图1和2中所说明的计算装置100的安全处理子系统110的处理器实施。图6中所说明的过程可用于根据上文关于图1所论述的技术产生及维持ARC计数器。
静态基线值可基于存储在一次性可编程存储器125中的防重放计数器值确定(阶段605)。ARC可包括静态基线分量及写入特定分量。静态基线分量为存储在安全处理子系统110的一次性可编程存储器125中的值。每当计算装置100通电或重启,ARC的静态基线分量可经修改以便防止重放攻击。ARC的静态基线分量在一段时期内可保持相同,而每当数据将写入外部NVM 150时ARC的写入特定分量可能重新确定。ARC的静态基线分量可针对到NVM的多个写入保持无变化且在引起安全处理子系统110的处理器将ARC值从易失性存储器120写入一次性可编程存储器125的触发事件发生时可用当前ARC值更新。在下文详细论述的图9到11说明用于产生及维持ARC值的过程的实例且提供可如何确定ARC的静态基线值的实例。
防重放计数器值可基于静态基线值及瞬态分量确定(阶段610)。瞬态分量(在本文中也被称作ARC的写入特定分量)可在每当数据待由集成电路写入外部NVM 150时重新确定或可基于需要ARC值的某一其它事件重新确定。可使用各种技术确定ARC的瞬态分量。可通过选择在外部NVM 150的部分中尚未被设定的一或多个位产生ARC,充当ARC的静态基线分量的ARC值存储在所述部分中。可使用随机选择技术、部分随机选择技术或组合选择技术通过安全处理子系统110的处理器选择所述位。图9到11提供可用于产生ARC的瞬态分量的技术的一些实例。其它随机或组合技术也可用于确定ARC的瞬态分量。
防重放计数器值可存储在易失性存储器120中(阶段620)。安全处理子系统110的处理器可经配置以存储在先前阶段中在易失性存储器120中确定的ARC值。图9到11说明可用于表示易失性存储器120中的ARC值的某一实例熔丝图。处理器可经配置以每当数据将写入外部NVM 150时存取易失性存储器120且递增存储在易失性存储器120中的ARC值。经更新的ARC值的至少一部分可用于确定MAC 160,所述MAC 160可用于确定有效负载数据155(写入外部NVM 150的数据)尚未被修改,这是因为数据写入外部NVM 150。此外,这种方法还防止重放攻击,这是因为ARC值用于产生MAC。如果攻击者将旧的MAC及有效负载数据155的复本引入到外部NVM 150中,那么安全处理子系统110将认识到数据过时,这是因为MAC 160已用旧的ARC值计算。安全处理子系统110可使用当前ARC计算有效负载数据155的MAC且比较所述MAC值与MAC160。如果两个MAC并不匹配,那么外部NVM 150中的数据已经损坏或修改。
图7为根据本文中所揭示的技术的用于将数据存储在非易失性存储器中的实例过程的流程图,所述实例过程可用于至少部分地实施图3中所说明的过程。举例来说,图7中所说明的过程可用于至少部分地实施图3中所说明的过程的阶段310。图7的过程还可沿循图6中所说明的过程,其中图6中所说明的过程为并非图3中所说明的过程的部分的独立过程。图7中所说明的过程可通过图1和2中所说明的计算装置100的安全处理子系统110的处理器实施。图7中所说明的过程可使用根据上文所论述的过程产生的ARC来产生待存储在外部NVM 150中的数据的MAC。
可使用ARC值的至少部分计算消息认证码(MAC)或至少关于待写入芯片外非易失性存储器的数据或数据的摘要的密码签名(阶段705)。如图1中所说明,当数据将写入外部NVM 150时,安全处理子系统110的处理器可经配置以计算将写入外部NVM 150的有效负载数据155的MAC 160。MAC 160可使用带密钥的散列消息认证码(HMAC)产生。HMAC算法经配置以接收MAC值将因其而得以产生的数据及用于从数据产生MAC值的私密密钥。图1说明包含HMAC块130的安全处理子系统110的实例,所述HMAC块接收有效负载数据及存储在安全处理子系统110的易失性存储器120中的ARC值。ARC值的至少一部分可由HMAC块130选择以用于产生将写入外部NVM 150的数据的MAC 160,所述数据在图1中被称作有效负载数据155。存储在易失性存储器120中的ARC值140的值可在MAC 160递增之前递增到新值以防止重放攻击。可使用各种技术实施ARC值140的值,其中ARC值140的至少一部分可使用随机算法、部分随机算法或组合算法选择。图9到11说明其中ARC的值使用各种技术递增的实例过程。
安全处理子系统110的处理器可经配置以产生关于待写入所述外部NVM 150的数据的至少一部分或数据的摘要的密码签名。举例来说,安全处理子系统110的处理器可经配置以产生数据的至少部分的散列或数据的摘要且对数据的散列或摘要进行加密。替代MAC160或除MAC 160之外,加密的散列可与数据一起存储在外部NVM 150中。
数据及MAC或密码签名可写入外部NVM 150(阶段710)。通过HMAC块130产生的MAC160及有效负载数据155(MAC 160得以产生的数据)可通过安全处理子系统110的处理器写入外部NVM 150。替代MAC 160或除MAC 160之外,有效负载数据155的加密特征可产生并存储在外部NVM 150中。可删除存储在易失性存储器120中的有效负载数据115的复本以释放非易失性存储器的空间以用于其它数据。
图8为根据本文中所揭示的技术的用于确定防重放计数器的静态基线值的实例过程的流程图,所述实例过程可用于至少部分地实施图6中所说明的过程。举例来说,图8中所说明的过程可用于至少部分地实施图6中所说明的过程的阶段605。图8中所说明的过程可通过图1和2中所说明的计算装置100的安全处理子系统110的处理器实施。图8中所说明的过程可用于产生ARC的静态基线值。图9到11中所说明的实例过程可使用图8的过程来产生其中使用的静态基线值。
可存取存储在可编程只读存储器中的防重放计数器值(阶段805)。如上文所论述,ARC值165可以位模式的形式存储在一次性可编程存储器125中。静态基线值可响应于触发事件通过安全处理子系统110的处理器写入一次性可编程存储器125,所述触发事件例如来自物理入侵传感器的信号、来自外部电源的剩余电力低于预定阈值、外部电源不提供电力,或其组合。存储在一次性可编程存储器125中的防重放计数器值可在计算装置100通电或重启时得以存取且可用于建立当前ARC值。防重放计数器值从一次性可编程存储器125读取且复制到安全处理子系统110的易失性存储器120。ARC值140可作为位值阵列(如本文中所提到的,作为“熔丝图”)存储在易失性存储器120中,所述位值阵列表示与所述位相关联的特定熔丝在一次性可编程存储器125中是否已经熔断。熔丝图可使用一维或多维阵列表示。在图9到11中说明这一些实例,其中防重放计数器由指示将一次性可编程存储器125中的哪些位设定为基线值的熔丝图表示。
可从可编程只读存储器选择包含在位模式中且尚未设定的至少一个位(阶段810)。安全处理子系统110的处理器可经配置以在一次性可编程存储器125中选择尚未设定的至少一个位。可随机选择或可使用组合算法选择所述至少一个位。图9到11中所说明的实例过程论述可如何选择所述至少一个位的实例技术。可在表示存储在易失性存储器120中的ARC值140的熔丝图中设定一或多个选定位的值。
可在可编程只读存储器中设定选定的至少一个位的值(阶段815)。安全处理子系统110的处理器可经配置以通过使一次性可编程存储器125中的适当熔丝熔断来设定对应于在阶段815中选定的所述至少一个位的至少一个位。熔断熔丝使存储在一次性可编程存储器125中的ARC值165递增。存储在一次性可编程存储器125中的ARC值165在利用ARC值之前递增以确定用于数据的MAC值存储在外部NVM 150中。这种方法可阻止重放攻击阶段化,在所述攻击中蓄电池或其它外部电源从计算装置100被去除以试图重设供安全处理子系统使用的计数器值。在下次计算装置100通电或重启时,ARC值165的经更新值将充当静态基线值,且在可能发生到外部NVM 150的任何写入之前,所述静态基线值将再次递增。如果攻击者试图将旧MAC及旧有效负载数据插入到外部NVM 150中,那么安全处理子系统110将从外部NVM 150存取有效负载数据155,且安全处理子系统110将辨别存储在外部NVM 150的MAC160因ARC值已递增而不匹配重新计算的MAC值。
可基于存储在可编程只读存储器中的防重放计数器值及选定的至少一个位确定ARC的静态基线分量(阶段825)。可在表示存储在易失性存储器120中的ARC值140的熔丝图中设定来自阶段810的一或多个选定位的值,以产生存储在易失性存储器120中的ARC值140的静态基线分量。每当数据待写入外部NVM 150时,也可确定ARC的写入特定分量。ARC的写入特定分量可包括来自包括ARC值140的熔丝图的尚未设定的一或多个位。可使用随机、部分随机或组合方法选择用于ARC值140的写入特定分量的位。说明写入特定分量如何的一些实例可见于图9到11中所说明的实例中。
图9为说明根据本文中所揭示的技术的用于维持防重放计数器(ARC)的基于随机数的技术的图式。图9中说明的技术可由图1及2中说明的计算装置100实施。使用一系列熔丝图来说明图9中说明的技术:表示安全处理子系统110的一次性可编程存储器125中的熔丝阵列的熔丝图905、熔丝图910、熔丝图915、熔丝图920、熔丝图925及熔丝图930。熔丝图中的每一方块表示可熔断以设定对应位值的一个熔丝。已设定的位值由所述方块中的数字“1”表示。方块的阴影表示如何设定所述特定位。在图9中说明的实例中,具有实心阴影背景的方块指示所述位经设定为与(ARC)相关联的静态基线值的部分,具有用棋盘图案加阴影的背景的方块指示所述位经设定补充已选择的静态基线以便防止回退攻击,且具有用菱形图案加阴影的背景的方块指示所述位经设定为随机选择的部分。
图9中说明的技术可减少将ARC维持于一次性可编程存储器125中所需的熔丝数目。如上文所论述,当计算装置100正从蓄电池或其它这种电源接收电力时,ARC可维持在安全处理子系统110的易失性存储器120中。每当数据待写入外部NVM 150时,存储在易失性存储器120中的ARC值可递增。当电源已耗尽时和/或当物理入侵传感器212d检测到对计算装置100的物理入侵(其可指示蓄电池或其它电源可能已从计算装置100去除)时,维持在易失性存储器120中的ARC值可写入安全处理子系统110的一次性可编程存储器125。安全处理子系统110的一次性可编程存储器125的存储容量通常有限。包含在安全处理子系统110的一次性可编程存储器125中的熔丝的数目可因集成电路的成本及大小限制而受限,安全处理子系统110实施在所述集成电路上。
当计算装置100通电时,可开始图9中说明的过程。在计算装置100断电时,ARC的基线值可能已写入一次性可编程存储器125的熔丝。安全处理子系统110的处理器可经配置以在计算装置100通电时存取一次性可编程存储器125且读取其中所存储的ARC值。熔丝图905表示包括先前已写入一次性可编程存储器125的ARC基线值的熔丝的6×6阵列。图9的实例中所说明的熔丝图的大小及配置旨在说明本文中所揭示的过程且并非旨在将所述过程限制于具有特定大小或配置的熔丝图。包含在安全处理子系统110的一次性可编程存储器125中的熔丝的数目可大于图9中说明的实例。图9到11中所说明的技术提供将ARC值存储在一次性可编程存储器125中可用的有限数目个熔丝,以使得有限熔丝供应不会在少数电力循环或物理入侵事件中耗竭,所述物理入侵事件触发将ARC写入一次性可编程存储器125。
实例熔丝图905具有先前设定为静态基线值的4个位。所述静态基线值可能已使用图9到11中所说明的技术中的一者确定或可为最初用作ARC值的选定种子值。一次性可编程存储器125用于存储ARC的部分最初可能为空白的,最初无熔丝熔断,且熔丝图905中说明的所存储的静态基线值可表示从易失性存储器120写入一次性可编程存储器125的ARC的先前值。安全处理子系统110的处理器可存取一次性可编程存储器125,从一次性可编程存储器125读取熔丝图值,且将熔丝图的表示存储在安全处理子系统110的易失性存储器120中。
在从一次性可编程存储器125加载先前基线值之后,安全处理子系统110的处理器可经配置以选择至少一个位以添加到如熔丝图910中所说明的先前基线。所述处理器可经配置以从熔丝图的位随机选择尚未设定的至少一个位。所述处理器可经配置以熔断与已在一次性可编程存储器125中选定的一或多个位相关联的熔丝,以建立新静态基线值。新基线值阻止重放攻击,其中攻击者试图将旧数据放入外部NVM 150并所安全处理子系统110处理所述旧数据。参考图1中说明的实例,存储在外部NVM 150中的数据包含有效负载数据155及MAC 160。可使用存储在易失性存储器120中的当前ARC值针对有效负载数据155重新计算MAC 160。如果将旧数据放入外部NVM 150中,那么重新计算的MAC及MAC 160的值将不再匹配,因为每当将数据写入外部NVM 150时,维持在易失性存储器120中的ARC递增。
熔丝图910还说明所述过程的另一方面。至少一个额外的位经选择作为ARC的随机选择分量。所述至少一个位选自存储在易失性存储器120中的熔丝图中尚未设定的熔丝。在图9中所说明的实例中,随机分量包含三个位,但所述随机分量可包含更多或更少数目的位。每当将数据写入外部NVM 150时,再次选择随机选择。ARC的随机选择部分未写入一次性可编程存储器125的熔丝。随机选择部分仅维持在存储在易失性存储器120中的熔丝图的表示中。
熔丝图915说明易失性存储器120中的响应于将数据写入外部NVM 150而更新的熔丝图905的实例。经更新静态基线值包含添加到从一次性可编程存储器125检索的静态基线的至少一个位。但是,ARC的随机选定部分替换为一或多个位的新随机选择。在熔丝图915中说明的实例中,从所述熔丝图的位中随机选择并非经更新静态基线的部分的三个位。每当在将数据写入外部NVM 150时重新确定ARC的随机分量时,可从可用的位选择并非经更新静态基线的部分的更多或更少数目的位。
熔丝图920说明易失性存储器120中的响应于将数据写入外部NVM 150而更新的熔丝图915的实例。再次,来自熔丝图的位的新随机选择是选自并非经更新静态基线的部分的位。在熔丝图920中说明的实例中,每当在将数据写入外部NVM 150时重新确定ARC的随机分量时,从可用的位选择并非经更新静态基线的部分的四个位,但可从可用的位选择更多或更少数目的位。
所述处理器随后确定电源已耗尽和/或确定物理入侵传感器212d已检测到对计算装置100的物理入侵。所述处理器随后存取易失性存储器120中的当前熔丝图并将所述值写入一次性可编程存储器125的熔丝以作为新静态基线值。在图9的实例中,易失性存储器120中的熔丝图处于熔丝图920所说明的状态。这个图中设定的熔丝将变成新静态基线值,所述新静态基线值如熔丝图925所表示通过处理器写入一次性可编程存储器125。
熔丝图930说明易失性存储器120中的实例熔丝图,其中熔丝图925中说明的静态基线已经更新以包含额外位。安全处理子系统110的处理器可将所述额外位写入一次性可编程存储器125的熔丝。所述处理器还可选择一或多个随机选定位的集合,所述集合包含并非经更新静态基线的部分的来自非易失性存储器中的熔丝图的位。每当将数据写入外部NVM 150时,可发生选择ARC的新随机分量的这个过程,并且这个过程可持续到事件触发处理器将来自易失性存储器120的当前熔丝图写入包括一次性可编程存储器125的熔丝中为止。
图10为说明根据本文中所揭示的技术的用于维持防重放计数器的另一技术的图式。所述技术类似于图9中说明的技术,但使用部分随机化方法,其中在使用组合方法确定ARC的瞬态分量时,可随机选择添加到静态基线分量的ARC的部分。使用一系列熔丝图来说明图10中说明的技术:表示安全处理子系统110的一次性可编程存储器125中的熔丝阵列的熔丝图1005、熔丝图1010、熔丝图1015、熔丝图1020及熔丝图1025。在图10中说明的实例中,具有实心阴影背景的方块指示所述位经设定为与(ARC)相关联的静态基线值的部分,具有用棋盘图案加阴影的背景的方块指示所述位经设定补充已选择的静态基线以便防止回退攻击,且具有用菱形图案加阴影的背景的方块指示所述位经设定为ARC的瞬态分量的组合选择分量的部分。
如同上文所论述的图9的过程一般,当计算装置100通电时,可开始图10中说明的过程。在计算装置100断电时,ARC的基线值可能已写入一次性可编程存储器125的熔丝。安全处理子系统110的处理器可存取一次性可编程存储器125,从一次性可编程存储器125读取熔丝图值,及将熔丝图的表示存储在安全处理子系统110的易失性存储器120中以产生熔丝图1005。熔丝图1005与上文论述的熔丝图905相同,但所述过程可能以不同静态基线开始或根本不以静态基线值开始,如上文关于图9所论述。
还可如上文关于图9所论述来确定新静态基线值。安全处理子系统110的处理器可选择至少一个位以添加到如熔丝图1010中所说明的先前基线。所述处理器可经配置以从熔丝图的位中随机选择尚未设定的至少一个位。所述处理器可经配置以熔断与已在一次性可编程存储器125中选定的一或多个位相关联的熔丝,以建立新静态基线值。存储在一次性可编程存储器125中的静态基线值最初可能以不设定位开始。
熔丝图1010还说明所述过程的另一方面。至少一个额外的位经选择作为ARC的组合选择分量。图10中说明的ARC的组合选择分量不同于图9中说明的ARC的随机选择分量。组合选择分量并非随机选定的位集合。替代地,在位图中选择起始点。起始点可以是来自熔丝图的尚未选定的任何位。举例来说,在实例熔丝图1010中已选择熔丝图的底部右侧边角中的位,但可选择尚未设定的任何位。
图10中说明的技术将位数目降至最低,每当将数据写入外部NVM 150之前使ARC值递增时,所述位经选择用于ARC的组合选择分量。举例来说,图10中说明的过程可迭代每个可能组合,其中组合选择分量包括1位。一旦1位选项经排除,所述过程就可迭代每个2位选项直到2位选项经排除为止。这个过程可继续在一系列n位选项中的每一者经排除时添加另一位,直到全部可能组合经排除或直到ARC值写入一次性可编程存储器125为止。ARC的单调选择部分直到事件触发处理器将来自易失性存储器120的当前熔丝图写入包括一次性可编程存储器125的熔丝之前不会写入一次性可编程存储器125的熔丝。单调选择部分仅维持在存储在易失性存储器120中的熔丝图的表示中,直到所述写入事件发生为止。
熔丝图1015说明示出在已将数据写入外部NVM 150八次之后熔丝图1010可如何变化的实例。ARC的组合选择分量递增八个位。尚未排除全部1位选项。在图10的实例中,ARC从左到右且从下到上递增,但其它算法可用以确定访问组合选择分量的各种排列的次序。
熔丝图1020说明示出在已将数据写入外部NVM 150三十二次之后熔丝图1015可如何变化的实例。ARC的组合选择分量递增三十二个位。全部1位选项已排除,且关于ARC的2位组合选择分量,过程继续。在图10的实例中,ARC从左到右且从下到上递增,但其它算法可用以确定访问组合选择分量的各种排列的次序。
所述处理器随后确定电源已耗尽和/或确定物理入侵传感器212d已检测到对计算装置100的物理入侵。所述处理器随后存取易失性存储器120中的当前熔丝图并将所述值写入一次性可编程存储器125的熔丝以作为新静态基线值。在图10的实例中,易失性存储器120中的熔丝图处于熔丝图1020所说明的状态。这个图中设定的熔丝将变成新静态基线值,所述新静态基线值如熔丝图1025所表示通过处理器写入一次性可编程存储器125。
图11为说明根据本文中所揭示的技术的用于维持防重放计数器的另一技术的图式。所述技术类似于图9及10中说明的技术,但使用确定性组合方法以确定添加到ARC的静态基线分量以及瞬态分量的ARC的部分。使用一系列熔丝图来说明图11中说明的技术:表示安全处理子系统110的一次性可编程存储器125中的熔丝阵列的熔丝图1105、熔丝图1110、熔丝图1115、熔丝图1120、熔丝图1125及熔丝图1130。在图11中说明的实例中,具有实心阴影背景的方块指示所述位经设定为与(ARC)相关联的静态基线值的部分,具有用棋盘图案加阴影的背景的方块指示所述位经设定补充已选择的静态基线以便防止回退攻击,且具有用菱形图案加阴影的背景的方块指示所述位经设定为ARC的组合分量的部分。
图11中说明的技术使用组合方法以确定添加到ARC的静态基线分量的ARC的组合分量。包含在组合分量中的位数目可根据装置可能关闭的频率而不同。图11中说明的技术相比图9及10中说明的技术可减少针对每一断电循环写入的一次性可编程存储器125的熔丝的数目。所述技术类似于图10的技术,但图11中说明的技术中对熔丝图的每一次更新为确定性的,且图11的技术中不进行位的随机选择。
ARC的组合分量为一次性可编程存储器125的可用位之中未经设定为静态基线的部分的X个位的确定性选择。针对到外部NVM 150的每一次数据写入确定ARC的组合分量。可包含在组合分量中的可用位及可用位的总数目可使用以下方程式来确定:
可用位=最大位数目-静态基线中的位,其中最大位数目表示包括由熔丝图表示的一次性可编程存储器125的部分的位的总数目,且其中静态基线中的位表示经更新静态基线值中已熔断的熔丝,其中至少一个额外位已熔断(如熔丝图1110中所说明)。因此,可用位为尚未设定且可包含在ARC的组合分量中的所述位。
可用位数目=最大位数目-静态基线中的位数目,其中最大位数目表示包括由熔丝图表示的一次性可编程存储器125的部分的位的总数目,且其中静态基线中的位数目表示经更新静态基线值中已熔断的熔丝,其中至少一个额外位已熔断(如熔丝图1110中所说明)。因此,可用位数目为尚未设定的所述位及可包含在ARC的组合分量中的位的总数目。
如同上文所论述的图9及10的过程一般,当计算装置100通电时,可开始图11中说明的过程。在计算装置100断电时,ARC的基线值可能已写入一次性可编程存储器125的熔丝。安全处理子系统110的处理器可存取一次性可编程存储器125,从一次性可编程存储器125读取熔丝图值,及将熔丝图的表示存储在安全处理子系统110的易失性存储器120中以产生熔丝图1105。所述过程可根据是否已使用本文中论述的技术来产生及维持ARC而定以不同静态基线开始或根本不以静态基线值开始。
还可如上文关于图9及10所论述来确定新静态基线值。安全处理子系统110的处理器可选择至少一个位以添加到如熔丝图1110中所说明的先前基线。所述处理器可使用确定性方法(与图9及10中说明的其中可随机选择添加到静态基线值的至少一个位的方法对比)从熔丝图的可用位中选择至少一个位。所述处理器可经配置以熔断与已在一次性可编程存储器125中选定的一或多个位相关联的熔丝,以建立新静态基线值。存储在一次性可编程存储器125中的静态基线值最初可能以不设定位开始。
熔丝图1115说明示出在已根据正确定的经更新静态基线将数据写入外部NVM 150一次之后熔丝图1110可如何变化的实例。在熔丝图1115中说明的实例中,ARC的组合部分在这个阶段包括一个额外位。一旦包括X个位大全部位组合经排除,ARC的组合部分的大小(‘X’)以1位增量增长。在图11中说明的实例中,确定性组合算法从左到右且从下到上递增,但确定性组合算法的其它实施方案可经配置以按与图11中说明的次序不同的次序在X位组合的各种排列中递增。举例来说,图11中说明的过程可迭代每个可能组合,其中组合选择分量包括1位。一旦1位选项经排除,所述过程就可迭代每个2位选项直到2位选项经排除为止。这个过程可继续在一系列n位选项中的每一者经排除时添加另一位,直到全部可能组合经排除或直到ARC值写入一次性可编程存储器125为止。ARC的组合选择部分直到事件触发处理器将来自易失性存储器120的当前熔丝图写入包括一次性可编程存储器125的熔丝之前不会写入一次性可编程存储器125的熔丝。单调选择部分仅维持在存储在易失性存储器120中的熔丝图的表示中,直到所述写入事件发生为止。
熔丝图1120说明示出在已根据熔丝图1115中说明的熔丝图的状态将数据写入外部NVM 150多次之后熔丝图1110可如何变化的实例。在熔丝图1125中说明的实例中,用于ARC的组合部分的全部1位选项经排除,且组合算法现在正在迭代2位选项,所述2位选项将用于在每当将数据写入外部NVM 150时确定ARC的组合部分。将探索2位选项直到经排除为止。
熔丝图1125说明示出在已根据熔丝图1120中说明的熔丝图的状态将数据写入外部NVM 150多次之后熔丝图1110可如何变化的实例。在熔丝图1125中说明的实例中,用于ARC的组合部分的全部1位选项及2位选项经排除,且组合算法现在正在迭代3位选项,所述3位选项将用于在每当将数据写入外部NVM 150时确定ARC的组合部分。将探索3位选项直到经排除为止。
所述处理器随后确定电源已耗尽和/或确定物理入侵传感器212d已检测到对计算装置100的物理入侵。所述处理器随后存取易失性存储器120中的当前熔丝图并将所述值写入一次性可编程存储器125的熔丝以作为新静态基线值。在图11的实例中,易失性存储器120中的熔丝图处于熔丝图1125所说明的状态。这个图中设定的熔丝将变成新静态基线值,所述新静态基线值如熔丝图1130所表示通过处理器写入一次性可编程存储器125。
图12为根据本文中所揭示的技术的一种用于确定防重放计数器的静态基线值的实例过程的流程图,所述实例过程可用于至少部分地实施图6中所说明的过程。举例来说,图12中所说明的过程可用于至少部分地实施图6中所说明的过程的阶段610。图12中所说明的过程可通过图1及2中所说明的计算装置100的安全处理子系统110的处理器实施。图12中所说明的过程可用于产生ARC的瞬态基线值。图9中所说明的实例过程可使用图12的过程来产生其中使用的静态基线值。
可随机选定未包含在静态基线值中的可编程只读存储器的至少一个位(阶段1205)。存储在易失性存储器120中第ARC值140的瞬态分量可为来自熔丝图的一或多个随机选定位的集合,所述熔丝图表示包括一次性可编程存储器125的熔丝的熔丝阵列,所述一次性可编程存储器125可用于在安全处理子系统110响应于触发事件(例如上文关于图1所论述的所述事件)时存储ARC值。安全处理子系统110可包括随机数产生器(random numbergenerator;RNG),所述随机数产生器可用于产生可用于确定选择哪些位的值。
可设定随机选定的所述至少一个位的值(阶段1210)。可能以存储在易失性存储器120中的ARC值140设定指示随机选定的至少一个位的值。举例来说,选定的位可设定为值‘1’以指示其已经选定。
图12中所说明的过程可执行多次。图9中说明的实例用以下实例熔丝图来说明所述概念:熔丝图910、熔丝图915、熔丝图920及熔丝图930,其中由具有用菱形图案加阴影的背景的方块表示的ARC的新瞬态分量指示所述位经设定为随机选择的部分。图9的实例并非旨在将图12的过程限于选定的特定位或选择其的次序。图12的过程可重复直到发生事件,所述事件触发安全处理子系统110将存储在易失性存储器120中的ARC值140的当前值写入存储在一次性可编程存储器125中的ARC值165。在阶段1205处选定的位数目可在每次迭代中变化,但在阶段1205处选择至少一个位。
图13为根据本文中所揭示的技术的一种用于确定防重放计数器的静态基线值的实例过程的流程图,所述实例过程可用于至少部分地实施图6中所说明的过程。举例来说,图13中所说明的过程可用于至少部分地实施图6中所说明的过程的阶段610。图13中所说明的过程可通过图1及2中所说明的计算装置100的安全处理子系统110的处理器实施。图13中所说明的过程可用于产生ARC的瞬态基线值。图10到11中所说明的实例过程可使用图12的过程来产生其中使用的静态基线值。
可从可编程只读存储器选择未包含在静态基线值中且先前并未选定为瞬态分量的位的集合,使得包括位集合的位的数目为可选择的位的最小数目(阶段1305)。图10及11中说明的技术使用组合方法来将位数目降至最低,每当ARC值响应于触发事件(例如上文关于图1所论述的事件)递增时,所述位经选择用于ARC的瞬态分量。安全处理子系统110的处理器可经配置以迭代可能组合中的每一者,其中ARC的瞬态分量包括1位。一旦1位选项经排除,所述处理器就可迭代每个2位选项直到2位选项经排除为止。这个过程可继续在一系列n位选项中的每一者经排除时添加另一位,直到全部可能组合经排除或直到ARC值写入一次性可编程存储器125为止。
可设定随机选定的所述至少一个位的值(阶段1310)。可能以存储在易失性存储器120中的ARC值140设定指示在阶段1305中选定的至少一个位的值。举例来说,选定的位可设定为值‘1’以指示其已经选定。
图13中所说明的过程可执行多次。图10中说明的实例用以下实例熔丝图来说明所述概念:熔丝图1010、熔丝图1015及熔丝图1020,且图11用以下实例熔丝图说明所述概念:熔丝图1110、熔丝图1115、熔丝图1120及熔丝图1125,其中由具有用菱形图案加阴影的背景的方块表示的ARC的新瞬态分量指示所述位经设定为ARC的瞬态分量的部分。图10及11的实例并非旨在将图12的过程限于选定的特定位或选择其的次序。图13的过程可重复直到发生事件,所述事件触发安全处理子系统110将存储在易失性存储器120中的ARC值140的当前值写入存储在一次性可编程存储器125中的ARC值165。在阶段1305处选定的位的数目可随着n位选项中的每一者经排除及n+1位选项经选定而随时间推移增大。
根据应用而定,可通过各种手段实施本文中所描述的方法。举例来说,可在硬件、固件、软件或其任何组合中实施这些方法。对于硬件实施方案,处理单元可实施于一或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、电子装置、经设计以执行本文中所描述功能的其它电子单元,或其组合内。
对于固件和/或软件实施方案,可用执行本文中所描述的功能的模块(例如,程序、函数等等)来实施所述方法。在实施本文中所描述的方法时中,可使用任何有形地体现指令的机器可读媒体。举例来说,软件代码可存储在存储器中,并且由处理器单元执行。存储器可实施在处理器单元内或处理器单元外部。如本文中所使用,术语“存储器”指代任何类型的长期、短期、易失性、非易失性或其它存储器,且并不限于任何特定类型的存储器或特定数量的存储器或特定类型的媒体。有形媒体包含机器可读媒体的一或多个物理制品,例如随机存取存储器、磁性存储装置、光学存储媒体等等。
如果在固件和/或软件中实施,那么可将所述功能作为一或多个指令或代码存储在计算机可读媒体上。实例包含编码有数据结构的计算机可读媒体及编码有计算机程序的计算机可读媒体。计算机可读媒体包含物理计算机存储媒体。存储媒体可为可由计算机存取的任何可用媒体。借助于实例而非限制,这类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或任何其它可用于存储呈指令或数据结构形式的所需程序代码且可由计算机存取的媒体;如本文所用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各者的组合也应包含于计算机可读媒体的范围内。这类媒体还提供可为机器可读的非暂时性媒体的实例,且其中计算机为可从这类非暂时性媒体读取的机器的实例。
在不脱离本发明或权利要求书的精神或范围的情况下,本文中所论述的一般原理可应用于其它实施方案。
Claims (30)
1.一种用于在集成电路中提供数据保护的方法,所述方法包括:
基于存储在所述集成电路的可编程只读存储器中的防重放计数器ARC值确定静态基线值;
基于所述静态基线值及瞬态分量确定所述ARC值;以及
将所述ARC值存储在所述集成电路的易失性存储器中。
2.根据权利要求1所述的方法,其进一步包括:
每当数据将由所述集成电路写入到芯片外非易失性存储器时,重新确定所述瞬态分量。
3.根据权利要求1所述的方法,其进一步包括:
响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值。
4.根据权利要求3所述的方法,其中所述电力丢失事件包括从外部电源到所述集成电路的电力丢失或来自传感器的指示可去除或即将去除所述外部电源的信号。
5.根据权利要求1所述的方法,其中基于存储在所述可编程只读存储器中的所述ARC值确定所述静态基线值包括:
存取存储在所述可编程只读存储器中的所述ARC值,所述ARC值以位模式的形式存储在所述可编程只读存储器中;
从所述可编程只读存储器选择未包含在所述位模式中的至少一个位;
设定在所述可编程只读存储器中选定的所述至少一个位的值;以及
基于存储在所述可编程只读存储器中的所述ARC值及选定的所述至少一个位确定所述静态基线值。
6.根据权利要求5所述的方法,其中从所述可编程只读存储器选择未包含在所述位模式中的所述至少一个位包括随机选择所述至少一个位。
7.根据权利要求5所述的方法,其进一步包括确定所述瞬态分量,其中确定所述瞬态分量包括:
从所述可编程只读存储器随机选择未包含在所述静态基线值中的至少一个位;以及
设定随机选定的所述至少一个位的值。
8.根据权利要求5所述的方法,其进一步包括确定所述瞬态分量,其中确定所述瞬态分量包括:
从所述可编程只读存储器选择未包含在所述静态基线值中且先前并未选定为所述瞬态分量的位的集合,使得包括所述位集合的位的数目为可选择的位的最小数目;以及
设定选定的所述至少一个位的值。
9.根据权利要求1所述的方法,其进一步包括:
使用所述ARC值的至少部分计算消息认证码MAC或至少关于待写入芯片外非易失性存储器的所述数据或所述数据的摘要的密码签名;以及
将所述数据及所述MAC或所述密码签名写入到所述芯片外非易失性存储器。
10.一种集成电路,其包括:
用于基于存储在所述集成电路的可编程只读存储器中的防重放计数器ARC值确定静态基线值的装置;
用于基于所述静态基线值及瞬态分量确定所述ARC值的装置;以及
用于将所述ARC值存储在所述集成电路的易失性存储器中的装置。
11.根据权利要求10所述的集成电路,其进一步包括:
用于每当数据将由所述集成电路写入到芯片外非易失性存储器时重新确定所述瞬态分量的装置。
12.根据权利要求10所述的集成电路,其进一步包括:
用于响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值的装置。
13.根据权利要求12所述的集成电路,其中所述电力丢失事件包括从外部电源到所述集成电路的电力丢失或来自传感器的指示可去除或即将去除所述外部电源的信号。
14.根据权利要求10所述的集成电路,其中所述用于基于存储在所述可编程只读存储器中的所述ARC值确定所述静态基线值的装置包括:
用于存取存储在所述可编程只读存储器中的所述ARC值的装置,所述ARC值以位模式的形式存储在所述可编程只读存储器中;
用于从所述可编程只读存储器选择未包含在所述位模式中的至少一个位的装置;
用于设定在所述可编程只读存储器中选定的所述至少一个位的值的装置;以及
用于基于存储在所述可编程只读存储器中的所述ARC值及选定的所述至少一个位确定所述静态基线值的装置。
15.根据权利要求14所述的集成电路,其中所述用于从所述可编程只读存储器选择未包含在所述位模式中的所述至少一个位的装置包括用于随机选择所述至少一个位的装置。
16.根据权利要求14所述的集成电路,其进一步包括用于确定所述瞬态分量的装置,其中所述用于确定所述瞬态分量的装置包括:
用于从所述可编程只读存储器随机选择未包含在所述静态基线值中的至少一个位的装置;以及
用于设定随机选定的所述至少一个位的值的装置。
17.根据权利要求14所述的集成电路,其进一步包括用于确定所述瞬态分量的装置,其中所述用于确定所述瞬态分量的装置包括:
用于从所述可编程只读存储器选择未包含在所述静态基线值中且先前并未选定为所述瞬态分量的位的集合,使得包括所述位集合的位的数目为可选择的位的最小数目的装置;以及
用于设定选定的所述至少一个位的值的装置。
18.根据权利要求10所述的集成电路,其进一步包括:
用于使用所述ARC值的至少部分计算消息认证码MAC或至少关于待写入芯片外非易失性存储器的所述数据或所述数据的摘要的密码签名的装置;以及
用于将所述数据及所述MAC或所述密码签名写入到所述芯片外非易失性存储器的装置。
19.一种集成电路,其包括:
易失性存储器;
可编程只读存储器;
处理器,其耦合到所述易失性存储器及所述可编程只读存储器,所述处理器经配置以:
基于存储在所述集成电路的所述可编程只读存储器中的防重放计数器ARC值确定静态基线值;
基于所述静态基线值及瞬态分量确定所述ARC值;以及
将所述ARC值存储在所述集成电路的所述易失性存储器中。
20.根据权利要求19所述的集成电路,其中所述处理器经配置以每当数据将由所述集成电路写入到芯片外非易失性存储器时重新确定所述瞬态分量。
21.根据权利要求19所述的集成电路,其中所述处理器经进一步配置以:
响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值。
22.根据权利要求21所述的集成电路,其中所述电力丢失事件包括从外部电源到所述集成电路的电力丢失或来自传感器的指示可去除或即将去除所述外部电源的信号。
23.根据权利要求19所述的集成电路,其中经配置以基于存储在所述可编程只读存储器中的所述ARC值确定所述静态基线值的所述处理器经进一步配置以:
存取存储在所述可编程只读存储器中的所述ARC值,所述ARC值以位模式的形式存储在所述可编程只读存储器中;
从所述可编程只读存储器选择未包含在所述位模式中的至少一个位;
设定在所述可编程只读存储器中选定的所述至少一个位的值;以及
基于存储在所述可编程只读存储器中的所述ARC值及选定的所述至少一个位确定所述静态基线值。
24.根据权利要求23所述的集成电路,其中经配置以从所述可编程只读存储器选择未包含在所述位模式中的所述至少一个位的所述处理器经配置以随机选择所述至少一个位。
25.根据权利要求23所述的集成电路,其中所述处理器经进一步配置以确定所述瞬态分量,其中所述处理器经配置以:
从所述可编程只读存储器随机选择未包含在所述静态基线值中的至少一个位;以及
设定随机选定的所述至少一个位的值。
26.根据权利要求23所述的集成电路,其中所述处理器经进一步配置以确定所述瞬态分量,其中所述处理器经配置以:
从所述可编程只读存储器选择未包含在所述静态基线值中且先前并未选定为所述瞬态分量的位的集合,使得包括所述位集合的位的数目为可选择的位的最小数目;以及
设定选定的所述至少一个位的值。
27.根据权利要求19所述的集成电路,其中所述处理器经进一步配置以:
使用所述ARC值的至少部分计算消息认证码MAC或至少关于待写入芯片外非易失性存储器的所述数据或所述数据的摘要的密码签名;以及
将所述数据及所述MAC或所述密码签名写入到所述芯片外非易失性存储器。
28.一种非暂时性计算机可读媒体,其上存储有用于在集成电路中提供数据保护的计算机可读指令,所述指令包括经配置以使得计算机进行以下操作的指令:
基于存储在所述集成电路的可编程只读存储器中的防重放计数器ARC值确定静态基线值;
基于所述静态基线值及瞬态分量确定所述ARC值;以及
将所述ARC值存储在所述集成电路的易失性存储器中。
29.根据权利要求28所述的非暂时性计算机可读媒体,其进一步包括经配置以使得所述计算机进行以下操作的指令:
每当数据将由所述集成电路写入到芯片外非易失性存储器时,重新确定所述瞬态分量。
30.根据权利要求28所述的非暂时性计算机可读媒体,其进一步包括经配置以使得所述计算机进行以下操作的指令:
响应于电力丢失事件基于所述易失性存储器中的所述ARC值更新存储在所述可编程只读存储器中的所述ARC值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662334325P | 2016-05-10 | 2016-05-10 | |
US62/334,325 | 2016-05-10 | ||
US15/180,948 | 2016-06-13 | ||
US15/180,948 US10127405B2 (en) | 2016-05-10 | 2016-06-13 | Techniques for determining an anti-replay counter for preventing replay attacks |
PCT/US2017/021292 WO2017196441A1 (en) | 2016-05-10 | 2017-03-08 | Techniques for determining an anti-replay counter for preventing replay attacks |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109074459A true CN109074459A (zh) | 2018-12-21 |
Family
ID=58410457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780028008.0A Pending CN109074459A (zh) | 2016-05-10 | 2017-03-08 | 用于确定防止重放攻击的防重放计数器的技术 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10127405B2 (zh) |
EP (1) | EP3455779B1 (zh) |
CN (1) | CN109074459A (zh) |
WO (1) | WO2017196441A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11321466B2 (en) | 2018-03-09 | 2022-05-03 | Qualcomm Incorporated | Integrated circuit data protection |
EP3663957A1 (en) * | 2018-12-03 | 2020-06-10 | Nagravision S.A. | Remote enforcement of device memory |
EP3667533A1 (en) * | 2018-12-10 | 2020-06-17 | Thales Dis France SA | Method for securing a system in case of an undesired power-loss |
KR20200129776A (ko) | 2019-05-10 | 2020-11-18 | 삼성전자주식회사 | 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템 |
US20220021544A1 (en) * | 2020-07-15 | 2022-01-20 | Micron Technology, Inc. | Secure Serial Peripheral Interface (SPI) Flash |
US20220382868A1 (en) * | 2021-06-01 | 2022-12-01 | Mellanox Technologies Ltd. | Unidirectional counter |
EP4246353A1 (en) | 2022-03-14 | 2023-09-20 | Nagravision Sarl | Method to prevent anti-replay attack |
US20230401340A1 (en) * | 2022-06-14 | 2023-12-14 | Hewlett-Packard Development Company, L.P. | Application-specific integrated circuit (asic) with one-time programmable (otp) bits |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320263A1 (en) * | 2007-06-20 | 2008-12-25 | Daniel Nemiroff | Method, system, and apparatus for encrypting, integrity, and anti-replay protecting data in non-volatile memory in a fault tolerant manner |
US20100313056A1 (en) * | 2009-06-03 | 2010-12-09 | Freescale Semiconductor, Inc. | Secure Computing Device with Monotonic Counter and Method Therefor |
US20110154059A1 (en) * | 2009-12-23 | 2011-06-23 | David Durham | Cumulative integrity check value (icv) processor based memory content protection |
US20130136145A1 (en) * | 2010-07-26 | 2013-05-30 | Huawei Technologies Co., Ltd. | Time message processing method, apparatus and system |
CN104468503A (zh) * | 2013-09-13 | 2015-03-25 | 通用汽车环球科技运作有限责任公司 | 在基于车辆的数据通信系统中安全通信的方法和设备 |
US20160026783A1 (en) * | 2014-07-28 | 2016-01-28 | Broadcom Corporation | System, apparatus, and method for anti-replay protection of data stored in a non-volatile memory device |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925523B2 (en) | 2003-03-03 | 2005-08-02 | Agilent Technologies, Inc. | Managing monotonically increasing counter values to minimize impact on non-volatile storage |
US20080189554A1 (en) * | 2007-02-05 | 2008-08-07 | Asad Ali | Method and system for securing communication between a host computer and a secure portable device |
US7526059B1 (en) | 2007-12-27 | 2009-04-28 | Sandisk Il Ltd. | Balanced Grey code utilization to increase NVM endurance |
EP2461613A1 (en) * | 2010-12-06 | 2012-06-06 | Gemalto SA | Methods and system for handling UICC data |
US20140068722A1 (en) * | 2011-03-11 | 2014-03-06 | CallSign, Inc. | Personal identity control |
US10789371B2 (en) * | 2016-06-20 | 2020-09-29 | Intel Corporation | Technologies for trusted I/O with a channel identifier filter and processor-based cryptographic engine |
-
2016
- 2016-06-13 US US15/180,948 patent/US10127405B2/en not_active Expired - Fee Related
-
2017
- 2017-03-08 EP EP17713521.7A patent/EP3455779B1/en active Active
- 2017-03-08 CN CN201780028008.0A patent/CN109074459A/zh active Pending
- 2017-03-08 WO PCT/US2017/021292 patent/WO2017196441A1/en active Search and Examination
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080320263A1 (en) * | 2007-06-20 | 2008-12-25 | Daniel Nemiroff | Method, system, and apparatus for encrypting, integrity, and anti-replay protecting data in non-volatile memory in a fault tolerant manner |
US20100313056A1 (en) * | 2009-06-03 | 2010-12-09 | Freescale Semiconductor, Inc. | Secure Computing Device with Monotonic Counter and Method Therefor |
US20110154059A1 (en) * | 2009-12-23 | 2011-06-23 | David Durham | Cumulative integrity check value (icv) processor based memory content protection |
US20130136145A1 (en) * | 2010-07-26 | 2013-05-30 | Huawei Technologies Co., Ltd. | Time message processing method, apparatus and system |
CN104468503A (zh) * | 2013-09-13 | 2015-03-25 | 通用汽车环球科技运作有限责任公司 | 在基于车辆的数据通信系统中安全通信的方法和设备 |
US20160026783A1 (en) * | 2014-07-28 | 2016-01-28 | Broadcom Corporation | System, apparatus, and method for anti-replay protection of data stored in a non-volatile memory device |
Also Published As
Publication number | Publication date |
---|---|
EP3455779B1 (en) | 2020-04-15 |
EP3455779A1 (en) | 2019-03-20 |
US10127405B2 (en) | 2018-11-13 |
US20170329994A1 (en) | 2017-11-16 |
WO2017196441A1 (en) | 2017-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109074459A (zh) | 用于确定防止重放攻击的防重放计数器的技术 | |
CN109074446A (zh) | 熔丝防重放机制 | |
CN111819561B (zh) | 集成电路数据保护 | |
US10193587B2 (en) | Mobile phone and communication method thereof | |
EP1958114B1 (en) | Secure and replay protected memory storage | |
EP2115655B1 (en) | Virtual secure on-chip one time programming | |
CN105391838A (zh) | 用于检测和处理丢失的电子设备的方法和装置 | |
US9292680B2 (en) | Mobile terminal detection method and mobile terminal | |
EP2521034A1 (en) | Managing method, device and terminal for application program | |
CN104025500A (zh) | 使用在物理上不可克隆的函数的安全密钥存储 | |
CN107408081A (zh) | 提供对存储器的加强重放保护 | |
EP1862937A1 (en) | Secure processing device and secure processing system | |
CA2745975C (en) | Utilization of a microcode interpreter built in to a processor | |
ES2632559T3 (es) | Método de cifrado de teléfono celular y método de descifrado | |
JP5099646B2 (ja) | 無線lanアクセスポイント、無線lan端末、無線lan不正防止システム、方法及びプログラム | |
CN107209837A (zh) | 选择性基于块的完整性保护技术 | |
CN107341389B (zh) | 防止设备复用的方法及装置 | |
US20210021990A1 (en) | Detection and communication of locking configuration information modification | |
WO2014198118A1 (en) | Method and device for protecting privacy information with browser | |
KR20140082542A (ko) | 보안부팅을 위한 인증수단의 변경을 지원하는 방법 및 장치 | |
CN107085900A (zh) | 数据处理方法、装置、系统及pos终端 | |
US20180109552A1 (en) | Techniques for mitigating non-cross domain code execution vulnerabilities in cellular baseband | |
US20220360439A1 (en) | Systems and methods for backing up a hardware key | |
CN106452787A (zh) | 数据验证方法及装置 | |
JP2014182467A (ja) | 情報記憶媒体、データ選択処理プログラム、及びデータ選択処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181221 |