CN111819561B - 集成电路数据保护 - Google Patents

集成电路数据保护 Download PDF

Info

Publication number
CN111819561B
CN111819561B CN201980017155.7A CN201980017155A CN111819561B CN 111819561 B CN111819561 B CN 111819561B CN 201980017155 A CN201980017155 A CN 201980017155A CN 111819561 B CN111819561 B CN 111819561B
Authority
CN
China
Prior art keywords
time programmable
bits
software
programmable memory
firmware
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.)
Active
Application number
CN201980017155.7A
Other languages
English (en)
Other versions
CN111819561A (zh
Inventor
V·P·勒罗伊
B·穆图库马兰
D·塔马尼奥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN111819561A publication Critical patent/CN111819561A/zh
Application granted granted Critical
Publication of CN111819561B publication Critical patent/CN111819561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/73Protecting 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 by creating or determining hardware identification, e.g. serial numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

提供了用于在集成电路中提供数据保护的技术。根据这些技术的一种示例方法包括:确定已经对与集成电路相关联的软件或固件进行了未经授权的更新;以及响应于确定已经对软件或固件进行了未经授权的更新,来破坏防重放计数器(ARC)值,所述ARC值是在集成电路的一次性可编程存储器中维护的并且由集成电路用于保护非易失性存储器的内容。

Description

集成电路数据保护
背景技术
计算设备通常将用户或企业所拥有的敏感数据与固件或操作系统软件一起存储在计算设备或安全模块制造商所拥有的计算设备上。固件或软件所有者可能将软件加载到计算设备上,该软件改变安全措施(security measure),例如,移除暴力(brute force)攻击缓解措施,禁用安全启动/信任启动,和/或在计算设备上加载其它固件或软件。
发明内容
根据本公开内容的一种用于在集成电路中提供数据保护的示例方法包括:确定已经对与集成电路相关联的软件或固件进行了未经授权的更新;以及响应于确定已经对软件或固件进行了未经授权的更新,来破坏防重放计数器(ARC)值,所述ARC值是在集成电路的一次性可编程存储器中维护的并且由集成电路用于保护非易失性存储器的内容。
这样的方法的实现方式可以包括以下特征中的一个或多个特征。确定已经对与集成电路相关联的软件或固件进行了未经授权的更新包括:检测对集成电路上的软件的改变;响应于检测到对集成电路上的软件的改变,来认证用户和软件中的至少一者;以及响应于用户和软件中的至少一者未被认证,来确定对集成电路上的软件的改变是未经授权的。对用户的认证包括:确定用户是否已经被认证;以及响应于用户尚未被认证,执行至少一个认证过程来认证用户。对软件的认证包括:通过使用从与集成电路相关联的硬件唯一密钥(HUK)推导出的密钥,将基于密码的消息认证码(CMAC)算法应用于软件,来确定用于软件的消息认证码(MAC);以及将MAC与先前确定的MAC进行比较,以确定MAC是否与先前确定的MAC匹配。对ARC值的破坏还包括:利用在易失性存储器中维护的当前ARC值来更新被存储在一次性可编程存储器中的ARC值。对ARC值的破坏包括:确定存储ARC值的一次性可编程存储器的要被设置的第一比特数量;确定一次性可编程存储器的包括第一比特数量的第一比特集合的位置;以及通过设置一次性可编程存储器的第一比特集合来更新被存储在一次性可编程存储器中的ARC值。确定一次性可编程存储器的要设置的第一比特数量还包括:基于已经在一次性可编程存储器中设置的第二比特数量,来确定一次性可编程存储器的要设置的第一比特数量。对一次性可编程存储器的要被设置的第一比特数量的确定还包括:从在一次性可编程存储器中尚未被设置的第二比特集合中随机地选择一次性可编程存储器的第一比特集合。
根据本公开内容的一种示例集成电路包括:用于确定已经对与集成电路相关联的软件或固件进行了未经授权的更新的单元;以及用于响应于确定已经对软件或固件进行了未经授权的更新,来破坏防重放计数器(ARC)值的单元,所述ARC值是在集成电路的一次性可编程存储器中维护的并且由集成电路用于保护非易失性存储器的内容。
这样的集成电路的实现方式可以包括以下特征中的一个或多个特征。用于确定已经对软件或固件进行了未经授权的更新的单元包括:用于检测对集成电路上的软件的改变的单元;用于响应于检测到对集成电路上的软件的改变,来认证用户和软件中的至少一者的单元;以及用于响应于用户和软件中的至少一者未被认证,来确定对集成电路上的软件的改变是未经授权的单元。用于认证用户或的单元包括:用于确定用户是否已经被认证的单元;以及用于响应于用户尚未被认证,执行至少一个认证过程来认证用户的单元。用于认证软件的单元包括:用于通过使用从与集成电路相关联的硬件唯一密钥(HUK)推导出的密钥,将基于密码的消息认证码(CMAC)算法应用于软件,来确定用于软件的消息认证码(MAC)的单元;以及用于将MAC与先前确定的MAC进行比较,以确定MAC是否与先前确定的MAC匹配的单元。用于破坏ARC值的单元还包括:用于利用在集成电路的易失性存储器中维护的第二ARC值更新被存储在一次性可编程存储器中的第一ARC值的单元。集成电路还包括:用于确定一次性可编程存储器的要被设置的第一比特数量的单元;用于确定一次性可编程存储器的包括第一比特数量的第一比特集合的位置的单元;以及用于通过设置一次性可编程存储器的第一比特集合来更新被存储在一次性可编程存储器中的ARC值的单元。用于确定一次性可编程存储器的要设置的第一比特数量的单元包括:用于基于已经在一次性可编程存储器中设置的第二比特数量,来确定一次性可编程存储器的要设置的第一比特数量的单元。用于确定要设置一次性可编程存储器的哪些比特的单元包括:用于从在一次性可编程存储器中尚未被设置的第二比特集合中随机地选择一次性可编程存储器的第一比特集合的单元。
根据本公开内容的一种示例集成电路包括:一次性可编程存储器;以及耦合到一次性可编程存储器的处理器。处理器配置为:确定已经对与集成电路相关联的软件或固件进行了未经授权的更新;以及响应于确定已经对软件或固件进行了未经授权的更新,来破坏防重放计数器(ARC)值,所述ARC值是在集成电路的一次性可编程存储器中维护的并且由集成电路用于保护非易失性存储器的内容。
这样的集成电路的实现方式可以包括以下特征中的一个或多个特征。被配置为确定已经对软件或固件进行了未经授权的更新的处理器还被配置为:检测对集成电路上的软件的改变;响应于检测到对集成电路上的软件的改变,来认证用户和软件中的至少一者;以及响应于用户和软件中的至少一者未被认证,来确定对集成电路上的软件的改变是未经授权的。被配置为认证用户的处理器还被配置为:确定用户是否已经被认证;以及响应于用户尚未被认证,执行至少一个认证过程来认证用户。被配置为认证软件的处理器还被配置为:通过使用从与集成电路相关联的硬件唯一密钥(HUK)推导出的密钥,将基于密码的消息认证码(CMAC)算法应用于软件,来确定用于软件的消息认证码(MAC);以及将MAC与先前确定的MAC进行比较,以确定MAC是否与先前确定的MAC匹配。被配置为破坏ARC值的处理器还被配置为:利用在集成电路的易失性存储器中维护的第二ARC值来更新被存储在一次性可编程存储器中的第一ARC值。处理器还被配置为:确定存储ARC值的一次性可编程存储器的要被设置的第一比特数量;确定一次性可编程存储器的包括第一比特数量的第一比特集合的位置;以及通过设置一次性可编程存储器的第一比特集合来更新被存储在一次性可编程存储器中的ARC值。被配置为确定一次性可编程存储器的要设置的第一比特数量的处理器还被配置为:基于已经在一次性可编程存储器中设置的第二比特数量,来确定一次性可编程存储器的要设置的第一比特数量。被配置为确定要设置一次性可编程存储器的哪些比特的处理器还被配置为:从在一次性可编程存储器中尚未被设置的第二比特集合中随机地选择一次性可编程存储器的第一比特集合。
根据本公开内容的一种示例非暂时性计算机可读介质,其具有具有存储在其上的用于在集成电路中提供数据保护的计算机可读指令,所述计算机可读指令包括被配置为使得计算机进行以下操作的指令:确定已经对与集成电路相关联的软件或固件进行了未经授权的更新;以及响应于确定已经对软件或固件进行了未经授权的更新,来破坏防重放计数器(ARC)值,所述ARC值是在集成电路的一次性可编程存储器中维护的并且由集成电路用于保护非易失性存储器的内容。
这样的非暂时性计算机可读介质的实现方式可以包括以下特征中的一个或多个特征。被配置为使得计算机确定已经对软件或固件进行了未经授权的更新的指令包括被配置为使得计算机进行以下操作的指令:检测对集成电路上的软件的改变;响应于检测到对集成电路上的软件的改变,来认证用户和软件中的至少一者;以及响应于用户和软件中的至少一者未被认证,来确定对集成电路上的软件的改变是未经授权的。被配置为使得计算机破坏ARC值的指令包括被配置为使得计算机进行以下操作的指令:利用在集成电路的易失性存储器中维护的第二ARC值来更新被存储在一次性可编程存储器中的第一ARC值。非暂时性计算机可读介质包括被配置为使得计算机进行以下操作的指令:确定存储ARC值的一次性可编程存储器的要被设置的第一比特数量;确定一次性可编程存储器的包括第一比特数量的第一比特集合的位置;以及通过设置一次性可编程存储器的第一比特集合来更新被存储在一次性可编程存储器中的ARC值。被配置为使得计算机确定一次性可编程存储器的要设置的第一比特数量的指令包括被配置为使得计算进行以下操作的指令:基于已经在一次性可编程存储器中设置的第二比特数量,来确定一次性可编程存储器的要设置的第一比特数量。被配置为使得计算机确定要设置一次性可编程存储器的哪些比特的指令包括被配置为使得计算机进行以下操作的指令:从在一次性可编程存储器中尚未被设置的第二比特集合中随机地选择一次性可编程存储器的第一比特集合。
附图说明
图1是示例计算机系统的功能框图。
图2是在图1中示出的示例计算机系统的替代实现方式的功能框图。
图3是可以用于实现在图1和2中示出的计算机系统的示例计算机系统的框图。
图4是示出用于维护防重放计数器的基于随机数的技术的图。
图5是示出用于维护防重放计数器的另一种技术的图。
图6是示出用于维护防重放计数器的另一种技术的图。
图7是用于安全地擦除受保护的(secured)非易失性存储器的内容的示例过程的流程图。
图8是用于破坏防重放计数器的示例过程的流程图。
图9是示出用于破坏防重放计数器的技术的图。
图10是示出用于破坏防重放计数器的技术的图。
图11是示出用于破坏防重放计数器的技术的图。
图12是示出示例集成电路的图。
具体实施方式
本文公开了用于防止对针对计算设备上的敏感数据的数据保护的未经授权的规避的技术。这些技术可以减轻固件或软件所有者通过替换计算设备上的固件和/或软件来规避这些数据保护的尝试。具有对计算设备的物理访问的未经授权的用户可能尝试生成看上去合法的(legitimate)签名固件镜像(image),并且该固件镜像在被执行时可以访问被存储在计算设备上的敏感数据。本文公开的技术可以用于检测对与计算设备相关联的软件和/或固件的未经授权的更新,并且可以使敏感数据不可恢复,以防止未经授权的软件或固件获得敏感数据。
计算设备可以包括集成电路(例如,片上系统(SoC))、以及由集成电路使用的敏感数据可以被存储在其中的非易失性存储器(NVM)(在本文中也被称为“外部NVM”)。可以对NVM的内容进行加密,以防止对NVM的内容的未经授权的访问。具有对计算设备的物理访问的攻击者可能尝试生成看上去合法的签名固件镜像,并且该固件镜像在被执行时可以访问被存储在NVM中的敏感数据。本文公开的技术可以用于检测对计算设备的软件和/或固件的未经授权的更新,并且可以使NVM的内容不可恢复,以防止未经授权的软件和/或固件获得NVM的内容。
NVM的内容可以通过防重放机制来保护。防重放机制可以是基于熔丝(fuse)的防重放机制,其中,计算设备的集成电路的一次性可编程存储器的熔丝用于维护防重放计数器(ARC),所述防重放计数器可以用于防止对被存储在非易失性存储器(NVM)中的数据的重放攻击。通过使用消息认证或其它方式,ARC可以用于提供针对NVM的内容的数据完整性。当与硬件唯一密钥(HUK)或秘密信息一起使用以产生可以用于对NVM的内容进行加密的加密密钥时,ARC可以用于提供NVM的内容(在本文中也被称为“有效载荷”数据)的数据机密性。安全处理子系统使用ARC来恢复有效载荷在被加密并且被存储在NVM中之前的值。
可以在集成电路的一次性可编程存储器中维护ARC,该一次性可编程存储器可能被由攻击者向设备引入的未经授权的软件和/或固件更新访问。本文公开的技术可以用于检测这种未经授权的更新并且破坏一次性可编程存储器中的ARC,使得攻击者将无法恢复被存储在NVM中的内容。攻击者能够从NVM中获得有效载荷。但是,用作加密密钥的ARC值将已变得不可恢复,从而防止攻击者恢复有效载荷的未经加密的内容。虽然本文公开的示例被称为“基于熔丝的”防重放机制,但是本文公开的技术不限于使用熔丝的一次性可编程存储器的实现方式。其它实现方式可以使用反熔丝或其它组件而不包括熔丝,该反熔丝或其它组件能够被设置一次并且能够用于表示数据的比特。
图1是示例计算设备100的功能框图。计算设备100包括安全处理子系统(SPSS)110以及在安全处理子系统110外部的外部非易失性存储器(NVM)150,NVM 150可以由安全处理子系统110用来存储数据。安全处理子系统110可以被实现为片上系统(SoC)或其它类似的设备,其包括在集成电路上实现的处理器元件和存储器。安全处理子系统110可以在集成电路上实现,并且NVM 150可以被实现为芯片外存储器或者不是在与安全处理子系统110相同的集成电路上实现的外部存储器。安全处理子系统110可以与NVM 150可通信地耦合(直接地或者间接地连接),并且被配置为将数据存储在NVM 150中并且从NVM 150中访问数据。
安全处理子系统的处理器190可以实现本文中关于安全处理子系统110讨论的各种功能和功能元素。例如,以下功能元素可以由安全处理子系统110的处理器190来实现:(散列消息认证码)HMAC块130、HMAC块135和/或匹配块145。下文将更加详细地描述HMAC块130、HMAC块135和匹配块145的功能。在图1中所示的示例实现方式包括这些功能块,所述功能块用于使用与有效载荷155一起被写入NVM 150的消息认证码(MAC)160来验证被存储在NVM 150中的有效载荷155的完整性。然而,其它实现方式可以利用不同的技术来验证被存储在NVM 150中的有效载荷155的完整性。此外,安全处理子系统110可以被配置为生成要被写入外部NVM 150的数据的至少一部分的加密签名或者该数据的摘要(digest)。例如,安全处理子系统110的处理器190可以被配置为生成数据的至少一部分的散列结果(hash)或者数据的摘要,并且对数据的散列结果或摘要进行加密。代替MAC 160或者除了MAC 160之外,经加密的散列结果可以与数据一起被存储在外部NVM 150中。
安全处理子系统还可以由诸如计算设备100的处理器190之类的通用处理器来实现,该安全处理子系统可以被配置为将安全处理资源和存储器与用于非安全应用的通用处理资源和存储器分开。安全处理子系统110可以为处理器可执行的程序代码和安全数据存储提供安全执行环境,该安全执行环境可以防止对被存储在其中的数据的未经授权的访问和/或防止由安全处理子系统110的处理器对处理器可执行程序指令的未经授权的执行。安全处理子系统110可以实现包括处理器190的安全区域的受信执行环境(TEE)。TEE可以为TEE内的程序代码和数据提供隔离的操作环境,该隔离的操作环境为TEE内的程序代码和数据提供了机密性和完整性。计算设备100可以包括非安全处理子系统(未示出),在非安全处理子系统中,可能执行不受信程序代码并且可以存储非敏感数据。处理器190可以提供该非安全处理子系统,或者计算设备100可以包括一个或多个额外的处理器(未示出),该额外的处理器提供与安全处理子系统110分开的非安全处理环境。
安全处理子系统110可以包括易失性存储器120和非易失性存储器(例如,一次性可编程存储器125)。易失性存储器120可以包括被配置为在向易失性存储器120提供电力时维持被存储在其中的数据的存储器。如果失去被提供给安全处理子系统110的电力,则易失性存储器120的内容将失去。一次性可编程存储器125包括持久性存储器,即使失去到安全处理子系统110的电力,该持久性存储器也保留被存储在其中的数据。一次性可编程存储器125可以包括多个熔丝,每个熔丝表示数据的比特,并且可以通过熔断(blow)对应的熔丝来设置特定比特的值。熔丝的值在被设置后无法改变。熔丝处于其原始状态的值可以用于表示为零的比特值(“0”),并且在被熔断时,熔丝的值可以用于表示为一的比特值(“1”)。在其它实施例中,熔丝处于其原始状态的值可以用于表示为一的比特值(“1”),并且在被熔断时,熔丝的值可以用于表示为一的比特值(“0”)。此外,可以使用其它类型的一次性可编程存储器125。一次性可编程存储器125可以包括反熔丝或者其它组件而不包括熔丝,该反熔丝或者其它组件能够被设置一次并且能够用来表示数据的比特。一次性可编程存储器125的一次性可编程性质意味着一次性可编程存储器125可能最终被耗尽。本文公开的技术降低了在一次性可编程存储器125中需要递增ARC的频率,从而降低了一次性可编程存储器125被消耗的速率。
安全处理子系统110可以包括内部电源195。内部电源可以用作辅助电源,该辅助电源可以在失去来自外部电源185的电力的情况下向安全处理子系统提供电力。内部电源195可以包括电容器、电池、或其它设备,其可以存储电功率,该电功率可以在失去来自外部电源185的电力的情况下在至少短时间段内为安全处理子系统110供电。内部电源195可以被配置为向安全处理子系统110提供足够的电力,以允许安全处理子系统110将被存储在易失性存储器120中的当前防重放计数器(ARC)140写到被存储在一次性可编程存储器125中的ARC 165,使得不会由于计算设备失去电力而失去ARC。
外部电源185是与安全处理子系统110分开的电源,并且可以从计算设备100上移除。外部电源185可以包括电池或者可以向计算设备100的组件提供电功率的其它设备。计算设备100可以包括传感器(在图1中未示出),该传感器可以响应于传感器检测到计算设备的物理入侵,来向安全处理子系统110提供信号。外部电源185可以是可移除的,使得外部电源185可以被移除并且被替换为另一外部电源185。计算设备100的用户可以将外部电源185调换为另一外部电源185,例如,如果电源耗尽或者该设备的用户希望强制计算设备100重新启动。
安全处理子系统110可以被配置为响应于电力失去事件,来将防重放计数器(ARC)值(被称为ARC 165)存储在一次性可编程存储器125中。如本文所使用的术语“电力失去”指示外部电源185不再向安全处理子系统110提供电功率,提供不足以使安全处理子系统110能够操作的电功率水平,或者外部电源185的剩余功率电平已经达到门限(其中,针对安全处理子系统的电力失去即将发生)。电力失去可能是由于从计算设备100移除外部电源185而导致的,其中外部电源185包括电池或其它可移除电源。在这种情况下的电力失去事件可以通过以下方式来检测:外部电源185不再向安全处理子系统110提供电力,外部电源185不再提供用于使安全处理器子系统110能够操作的足够电平的电功率,外部电源185达到预先确定的电平,基于来自物理入侵传感器的用于指示计算设备100的电池室或壳体已经被打开的信号,或者这些因素中的两个或更多个因素的组合。
一个或多个其它事件也可以触发安全处理子系统110的处理器190将来自非易失性存储器的ARC 140作为ARC 165存储在一次性可编程存储器125中。这些触发事件可以包括但不限于:(1)安全处理子系统110确定外部电源185的剩余功率水平已经达到预先确定的门限,该预先确定的门限指示来自外部电源185的电力可能很快失去和/或可能不再能够提供足以使安全处理子系统110能够操作的电功率水平;(2)计算设备100正在被关闭或重新启动,并且如果不将来自非易失性存储器的ARC 140作为ARC165写入一次性可编程存储器125,则该ARC 140将失去:以及(3)安全处理子系统110从计算设备100的传感器接收用于指示电池或其它外部电源可能被从计算设备100移除的信号。
计算设备100的安全处理子系统110可以使用ARC 140来防止重放攻击,在重放攻击中,攻击者尝试将过期但以在其它方面有效的数据放置在外部NVM 150中,以尝试获取对安全处理子系统110的访问或者使安全处理子系统110执行一些未经授权的动作。为了避免重放攻击,安全处理子系统110依赖于ARC 140来确保被存储在NVM 150中的数据在没有被检测的情况下不会被操纵。安全处理子系统可以在安全处理子系统110的易失性存储器120中生成数据,该数据在本文中被称为有效载荷数据115。然而,可用作集成电路的片上存储器的非易失性存储器的量通常受到大小和成本约束的限制,并且安全处理子系统110可能需要将有效载荷数据115卸载到外部NVM 150,以释放存储器以用于其它处理任务。安全处理子系统110可以将有效载荷数据115卸载到外部NVM 150,该有效载荷数据115可能是稍后需要的并且可以被写入外部NVM 150以进行持久存储,因为一次性可编程存储器125的大小通常受到限制,并且一次性可编程存储器125的每个比特仅能够被写入一次。
安全处理子系统110的处理器190可以(例如,在计算设备100通电时)从一次性可编程存储器125取得ARC 165,并且将ARC 140存储在易失性存储器120中。ARC 140可以被维护在易失性存储器120中,直到发生触发事件为止,该触发事件使得安全处理子系统110的处理器190将一次性可编程存储器中的ARC 165更新为被存储在易失性存储器120中的ARC140的当前值。触发事件是指示以下各项的事件:到安全处理子系统110的外部电源可能失去或者已经失去,或者不再能够向安全处理子系统110提供用于使安全处理子系统110能够操作的足够水平的能量水平,并且因此,除非进行备份,否则易失性存储器120中的内容将失去。在易失性存储器120中维护ARC 140直到发生这样的触发事件为止,这允许安全处理子系统110显著地减少原本将用于在一次性可编程存储器125中维护ARC 165的熔丝的数量。每当将数据写入外部NVM 150时,都对ARC 140进行更新。如果在一次性可编程存储器125中维护ARC 165,则每当发生到NVM的写事件时,都会熔断一次性可编程存储器125的至少一个熔丝。由于对于制造在其上实现安全处理子系统110的集成电路的大小和成本考虑,包括一次性可编程存储器125的熔丝的数量通常是相对小的。一次性可编程存储器125的熔丝可能很快耗尽,使安全处理子系统110不具有用于将ARC安全地存储在持久性存储器中的片上存储,在持久性存储器中,该ARC在计算设备100掉电或重新启动时将不会失去。
安全处理子系统110可以使用ARC 140来生成消息认证码(MAC)160,该消息认证码(MAC)160可以与要被存储在外部NVM 150中的有效载荷155一起写入外部NVM 150。MAC 160可以用于向有效载荷155提供完整性保护。当存取有效载荷155时,处理器190可以重新计算MAC。如果有效载荷155被修改,则与有效载荷155一起存储的MAC 160将与所重新计算出的MAC值不匹配。
HMAC块130可以被配置为通过对被存储在易失性存储器120中的要写入外部NVM150中的有效载荷数据115应用密钥HMAC算法,来生成MAC 160。HMAC块130可以使用ARC 140的至少一部分作为用于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的当前值,并且基于当前ARC 140来重新计算针对有效载荷155的MAC。匹配块145可以将新计算出的MAC值与MAC 160进行比较。如果MAC 160与新计算出的MAC值匹配,则有效载荷155尚未被修改,也不存在重放攻击,在所述重放攻击中,过期的有效载荷数据和过期的MAC被插入到外部NVM 150中。如果MAC 160与新计算出的MAC值不匹配,则有效载荷155已经被修改或损坏,或者存在重放攻击,在该重放攻击中,过期的有效载荷数据和/或过期的MAC被插入到外部NVM 150中。与过期的有效载荷数据相关联的MAC 160将与由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执行的处理器可执行程序代码。HMAC块130、HMAC块135和匹配块145的功能还可以被实现为处理器可执行程序代码和硬件的组合。
如图1所示,安全处理子系统110的处理器190被配置为计算针对要被写入外部NVM150的有效载荷155的MAC 160。可以使用密钥散列消息认证码(HMAC)来生成MAC 160。HMAC算法被配置为接收要针对其生成MAC值的数据和用于根据数据生成MAC值的秘密密钥。图1示出了安全处理子系统110的示例,其包括用于接收被存储在安全处理子系统110的易失性存储器120中的有效载荷数据和ARC 140的HMAC块130。HMAC块130可以选择ARC 140的至少一部分以用于生成针对将被写入外部NVM 150的数据(其在图1中被称为有效载荷155)的MAC 160。被存储在易失性存储器120中的ARC 140的值可以在MAC 160被递增之前相应地被递增为新值,以防止重放攻击。可以使用各种技术来将ARC 140的值递增,在这些技术中,可以使用随机算法或组合算法来选择ARC 140的至少一部分。下面讨论的图4-6示出了其中使用各种技术来将ARC的值递增的示例过程。
在图1中示出的示例计算设备100还可以适于考虑大小变化的有效载荷数据115。例如,有效载荷大小可以包括包含全部的外部NVM 150的数据、与存储器页(page)相对应的数据、或者已经被标记为敏感的任何大小的数据。可以将未被标记为敏感的数据存储在外部NVM 150中,而不具有MAC 160或者针对有效载荷155可以提供的其它这种相关联的保护。
示例计算设备100可以包括内部非易失性存储器127。在一些方面中,内部非易失性存储器127可以被实现为安全处理子系统110的组件。例如,安全处理子系统110可以被实现为片上系统,并且内部非易失性存储器127可以位于安全处理子系统110的内部。相反,可以将外部NVM 150与安全处理子系统110分开实现。类似于外部NVM 150,内部NVM 127是持久性存储器,其被配置为在失去到该存储器的电力的情况下保留该存储器的内容,这与易失性存储器120形成对比,如果到存储器的电力失去或者下降到用于使该存储器120能够操作所需要的电平以下,则所述易失性存储器120将失去被存储在其中的内容。与其中每个比特仅能够被写入一次的一次性可编程存储器125相比,内部NVM 127和外部NVM 150可以包括可以被多次写入的闪存和/或其它类型的持久性存储器。内部NVM 127可以存储可以由处理器190执行的可执行程序代码,例如在图1中所示的可执行程序代码(EXP)129。外部NVM150也可以用于存储可以由处理器190执行的可执行程序代码,例如在图1中所示的EXP128。
计算设备100可以包括与计算设备相关联的硬件唯一密钥(HUK)199。HUK 199可以包括比特串,该比特串被存储在一次性可编程存储器125中,和/或被存储在计算设备100的另一安全存储器位置中,该另一安全存储器位置是由处理器190可访问的、但是由计算设备100的某些受信组件可访问的、但是对不受信程序代码不可访问的。HUK 199可以由计算设备100的原始设备制造商(OEM)生成并且被编程到一次性可编程存储器125中。OEM可以将HUK 199提供给受信实体,该受信实体可以向计算设备100提供用于对与计算设备100相关联的软件和/或固件进行更新的软件和/或固件更新,以便计算设备100可以认证这些更新。对术语“与……相关联”在该上下文中的使用指代被安装在内部NVM 127中的软件和/或固件(例如,EXP 129)、和/或被安装在外部NVM中的软件和/或固件(例如,EXP 128)。软件和/或固件可以被加载到易失性存储器120中,以用于由计算设备100的处理器190执行。
对软件和/或固件的更新可以包括镜像文件,该镜像文件包括已经使用基于密码的消息认证码(CMAC)算法来计算出的MAC值。镜像文件可以经由网络连接被下载到计算设备100中,从诸如闪存驱动器之类的可移动介质被复制到该设备,和/或经由其它方式被提供给计算设备100。如果固件和/或软件更新是可信的(authentic),则被包括在镜像文件中的MAC应该是使用与计算设备100相关联的HUK 199来计算出的。处理器190可以基于包括固件和/或软件更新的镜像文件的至少一部分并且通过向CMAC算法提供基于HUK 199的密钥,来计算MAC。基于HUK 199的密钥可以是使用由处理器190执行的密钥推导算法来从HUK 199推导出来的。处理器190可以被配置为:如果被包括在镜像文件中的MAC与由处理器190所计算出的MAC不匹配,则确定该更新是未经授权的。处理器190可以被配置为:响应于这种未经授权的更新,来破坏ARC 165并且从易失性存储器中清除ARC 140。在一些实现方式中,处理器190可以将针对EXP 129计算的MAC 126存储在内部NVM 127中,并且因为已经计算出MAC126,所以可以使用MAC 126来确定EXP 129是否已经被修改。类似地,处理器190可以将针对EXP 128计算的MAC 124存储在外部NVM 150中,并且因为已经计算出MAC 124,所以可以使用MAC 124来确定EXP 129是否已经被修改。
镜像文件可以包括二进制目标代码和/或中间代码。二进制目标代码通常包括可重定位(relocatable)格式的机器代码,直到二进制目标代码被链接以形成可执行文件或库文件为止,可重定位格式的机器代码可能不是由处理器190直接可执行的。二进制目标代码可以包括机器语言,或者可以包括中间语言,例如寄存器传输语言(RTL)。二进制目标代码可以以各种格式来分布,例如但不限于公共目标文件格式(COFF)以及可执行和可链接格式(ELF)。中间代码可以包括字节代码。字节代码也可以被称为可移植代码,因为与二进制目标代码不同,字节代码通常与平台无关。中间代码通常由在计算设备100上执行的解释器(或具有提前编译器或即时编译器的运行时环境)来执行。解释器可以直接执行字节代码,而无需字节代码被编译成机器代码。在一些实现方式中,字节代码可以由计算设备100上的编译器(未示出)编译为二进制目标代码。
计算设备100的安全处理子系统110可以包括被存储在只读存储器(ROM)105中的安全启动加载程序(bootloader)119,该安全启动加载程序119被配置为使用各种安全启动机制技术来对一个或多个固件镜像文件和/或用于计算设备100的一个或多个重要软件组件的镜像文件进行认证。安全启动加载程序还可以被配置为在允许计算设备100被启动之前计算EXP 129和/或EXP 128的CMAC。如果由启动加载程序计算出的CMAC值与先前计算并且与要由启动加载程序进行认证的可执行程序代码(例如,EXP 128和/或EXP 129)相关联的预期CMAC值(例如,MAC 126和/或MAC 124)不匹配,则安全启动加载程序可以确定针对EXP 128和/或EXP 129已经发生了对软件和/或固件的未经授权的更新。
图2是示出计算设备200的功能框图,计算设备200是在图1中示出的示例计算设备100的替代实现方式。在图1中示出的计算设备100的示例实现方式被配置为将有效载荷155和MAC 160的单个实例存储在外部NVM 150中。图2示出了替代实现方式,其中,计算设备200可以在NVM 150中存储多个有效载荷(例如,有效载荷155a-155n),其中每个有效载荷具有相关联的MAC(例如,MAC 160a-160n),其中,a-n表示从0到整数n的整数值范围。如果在NVM150中没有存储使用本文公开的技术保护的数据,则n的下限可以为零,并且n的值的上限可以通过包括易失性存储器120的存储器的量、NVM 150的大小和/或其它因素来限制。
图2中的计算设备100的示例实现方式所采用的技术与在图1中的计算设备100的示例实现方式中所利用的技术略有不同,以便促进在NVM 150中存储多个有效载荷(例如,有效载荷155a-155n)和多个MAC(例如,MAC 160a-160n)。在图1和图2中示出的示例实现方式之间不同的一个方面在于ARC如何被存储在安全处理子系统110的易失性存储器120中(相比于以上关于图1所描述的方式)。关于在图1中示出的示例实现方式,包括静态基准(baseline)分量和瞬态(transient)分量的单个ARC 140可以被存储在易失性存储器120中。相比而言,在图2中示出的实现方式中,可以针对被存储在NVM 150中的多个有效载荷(例如,有效载荷155a-155n)维护多个ARC值。每个有效载荷155可以与不同的瞬态分量值相关联。ARC的静态基准分量280在被确定后就保持不变,直到计算设备100被再次通电、重新启动或者经历导致静态基准分量被递增的另一事件为止。相比而言,在图1示出的实现方式中的ARC的瞬态分量在每当将有效载荷155写入NVM 150时,都可以被更新。在图2中所示的实现方式中,分别的瞬态分量与被写入NVM 150的每个有效载荷155a-155n相关联。每当新的有效载荷被写入NVM 150或者现有的有效载荷中的一个有效载荷被更新时,都可以将瞬态分量递增。以下讨论的图4-6示出了可以用于将由计算设备100维护的ARC值的瞬态分量递增的各种技术。
在图1中示出的实现方式和在图2中示出的实现方式两者中,在易失性存储器120中维护与有效载荷相关联的瞬态分量的值,使得处理器190能够恢复被存储在NVM中的有效载荷155的内容。例如,安全处理子系统110可以被配置为维护查找表,该查找表将被存储在NVM 150中的有效载荷155a-155n中的每个有效载荷的瞬态分量270a-270n中的相应的瞬态分量进行关联。查找表可以将被存储在NVM 150中的相应的有效载荷155a-155n的地址与用于保护该有效载荷155a-155n的ARC(包括瞬态分量270a-270n中的瞬态分量以及静态基准分量280)进行关联。安全处理子系统110可以将查找表存储在易失性存储器120中。安全处理子系统110可以防止不受信的软件访问查找表和被存储在其中的ARC信息。
在图2中示出的实现方式中,与多个有效载荷中的每个有效载荷相关联的ARC可以共享相同的静态基准分量280。然而,针对被存储在NVM 150中的多个有效载荷155a-155n中的每个有效载荷而言,针对相应有效载荷的瞬态分量270(通过图2中的瞬态分量270a-270n表示)可以是不同的。安全处理子系统110可以将多个瞬态分量(例如,瞬态分量270a-270n)连同静态基准分量280一起存储在易失性存储器120中。有效载荷数据可以在被写入NVM150之前最初被存储在易失性存储器120中。如果尚未计算出静态基准分量280,则安全处理子系统110的处理器190可以被配置为基于被存储在一次性可编程存储器125中的ARC 165来确定静态基准分量280。
在图1和图2中示出的实现方式以略有不同的方式来存储和利用静态基准值。在图1中示出的示例中,静态基准分量用于建立被存储在易失性存储器120中的ARC 140的初始值。相比而言,在图2中示出的示例实现方式中,静态基准分量被初始化为易失性存储器120中的静态基准分量280。处理器190将静态基准分量280与瞬态分量270a-270n中的相应的瞬态分量进行组合,以确定与被存储在NVM 150中的相应有效载荷155a-155n相关联的相应ARC。
用于在图1或图2中示出的任一实现方式的静态基准值可以是从被存储在一次性可编程存储器125中的ARC 165来推导的。可以在计算设备100被重新启动或通电时并且在执行任何其它固件或软件程序之前,确定静态基准值。当静态基准值被确定时,更改ARC165。在从计算设备100或200移除电池或其它外部电源的情况下,该方法可以通过尝试重置由安全处理子系统110使用的计数器值,来阻止发生重放攻击。该方法还可以防止未经授权的软件执行和获得对NVM 150中的敏感内容的访问,所述敏感内容是先前使用被存储在一次性可编程存储器125中的ARC的先前值来加密或以其它方式保护的。对静态基准值的确定可以由在处理器190的只读存储器(ROM)中实现的启动加载程序来执行,该启动加载程序无法被固件或软件更新改变。在下面详细讨论的图4-6中示出的示例提供了关于可以如何计算静态基准以及在静态基准已经被更新时可以如何将ARC递增的示例。每当发生用于触发确定新的静态基准值的事件时,安全处理子系统110的处理器190选择尚未被设置在一次性可编程存储器125中的至少一个比特。所述至少一个比特可以是随机地选择的,或者可以使用组合算法来选择。处理器190通过熔断适当的熔丝、反熔丝或其它组件以设置在一次性可编程存储器125中的所选择的至少一个比特的值,从而将被存储在一次性可编程存储器125中的ARC 165递增。
可以在NVM 150中维护静态基准分量280,直到发生至少一个触发事件为止,该至少一个触发事件使得安全处理子系统110的处理器190更新一次性可编程存储器125中的ARC 165。这些触发事件可以类似于以上关于图1讨论的那些触发事件。在一些实现方式中,安全处理子系统110可以将静态基准分量280作为ARC 165写入一次性可编程存储器125。处理器190可以被配置为将瞬态分量270与静态基准分量280进行组合(例如,如图4-6中所示),以生成要作为被存储在一次性可编程存储器125中的ARC 165来写入的ARC。处理器190可以被配置为选择瞬态分量270的最新确定的值,来生成要被写为存储在一次性可编程存储器125中的ARC 165的ARC,或者可以选择易失性存储器120中的瞬态分量270a-270n中的一个瞬态分量的值。
在图2中示出的安全处理子系统110的实现方式中,处理器190可以针对每个有效载荷(例如,155a-155n)计算MAC值(例如,MAC 160a-160n)。瞬态分量(例如,瞬态分量275a-275n)还可以与有效载荷和MAC一起存储。安全处理子系统110可以被配置为可选地将瞬态分量270a-270n作为瞬态分量275a-275n,连同有效载荷155a-155n和MAC 160a-160n一起写入NVM 150。安全处理子系统110可以被配置为在易失性存储器120中维护瞬态分量270a-270n的副本,并且在NVM 150中存储瞬态分量275a-275n。用于有效载荷155a-155n中的相应有效载荷的MAC 160a-160n可以是使用与该有效载荷155a-155n相关联的ARC来计算的,该ARC包括静态基准分量280和与有效载荷155a-155n相关联的瞬态分量270a-270n中的相应瞬态分量的比特的并集。可以使用如以上关于图1所讨论的HMAC算法,使用与有效载荷相关联的ARC的至少一部分,来计算MAC。处理器190可以使用与用于计算被存储在NVM 150中的MAC的相同技术,来重新计算针对有效载荷中的相应有效载荷的MAC,并且将所计算出的MAC值与被存储在NVM 150中的值进行比较,以确定自从有效载荷被写入NVM 150以来,有效载荷是否已经被损坏或操纵。
图3是示例计算设备300的简化框图,所述示例计算设备300可以用于实现在图1和图2中示出的计算设备100和200。图3是示出示例计算设备300的各种组件的示意图,所述示例计算设备300可以与在图1和2中描绘的计算设备100和200类似或相同。如箭头所示,在图3的示意方框中示出的各种特征/组件/功能可以操作地耦合在一起,即,直接地或间接地(例如,经由一个或多个中间组件)连接。计算设备300的组件可以经由一个或多个总线(未示出)可通信地彼此连接。可以提供其它连接、机制、特征、功能等,并且在必要时将其适配为操作地耦合和配置便携式无线设备。此外,在图3的示例中示出的特征或功能中的一个或多个特征或功能可以被进一步细分,或者在图3中示出的特征或功能中的两个或更多个特征或功能可以被组合。另外,可以不包括在图3中示出的特征或功能中的一个或多个特征或功能。
如图所示,计算设备300可以包括可以连接到一个或多个天线302的一个或多个局域网收发机306。一个或多个局域网收发机306包括适当的设备、电路、硬件和/或软件,以用于与无线局域网(WLAN)接入点中的一个或多个接入点进行通信和/或检测去往/来自该一个或多个接入点的信号、和/或直接与网络内的其它无线设备进行通信。局域网收发机306可以包括适于与一个或多个无线接入点进行通信的WiFi(802.11x)通信收发机。此外或者替代地,局域网收发机306可以被配置为与其它类型的局域网、个域网(例如,无线技术网络)等进行通信。另外或替代地,可以使用一种或多种其它类型的短距离无线联网技术,例如,超宽带、ZigBee、无线USB等。
计算设备300可以包括可以连接到一个或多个天线302的一个或多个广域网收发机304。广域网收发机304可以包括用于与例如WWAN接入点中的一个或多个接入点进行通信和/或检测来自该一个或多个接入点的信号、和/或直接地与网络内的其它无线设备进行通信的适当的设备、电路、硬件和/或软件。广域网收发机304可以包括适于与无线基站的CDMA网络进行通信的CDMA通信系统。此外或替代地,无线通信系统可以包括其它类型的蜂窝电话网络,比如例如,TDMA、GSM、WCDMA、LTE等。另外或替代地,可以使用一种或多种其它类型的无线联网技术,例如WiMax(802.16)等。
在一些实施例中,卫星定位系统(SPS)接收机(也被称为全球导航卫星系统(GNSS)接收机)308还可以与计算设备300包括在一起。SPS接收机308可以连接到用于接收卫星信号的一个或多个天线302。SPS接收机308可以包括用于接收和处理SPS信号的任何适当的硬件和/或软件。SPS接收机308可以在适当的情况下从其它系统请求信息,并且可以部分地使用通过任何适当的SPS过程获得的测量结果来执行用于确定计算设备300的位置所必要的计算。
外部电源385可以包括可以向计算设备300的组件提供电功率的电池或其它设备。外部电源385可以是从计算设备可移除的。外部电源385可以包括可移除电池或其它电源,该可移除电池或其它电源可以由计算设备300的用户移除并且调换为另一外部电源385。例如,当外部电源385耗尽或者计算设备300的用户可能希望强制计算设备300重新启动时,该设备的用户可以将该外部电源调换为另一外部电源385。
计算设备300可以包括内部电源395。内部电源395可以用作辅助电源,在失去来自外部电源385的电力或者由外部电源385提供的功率电平下降到将使处理器310能够操作的电平以下的情况下,该辅助电源可以为处理器310提供电力,或者至少为处理器310的组件(例如,TEE 390和/或一次性可编程存储器325)、易失性存储器392和存储器314提供电力。内部电源395可以包括电容器、电池或其它设备,其可以存储在失去来自外部电源385的电力的情况下,可以在至少短时间段内为处理器310和存储器314供电的电功率。内部电源395可以被配置为向处理器310提供足够的功率,以将被存储在易失性存储器392中的当前防重放计数器(ARC)值(例如,ARC 140、瞬态分量270a-270n和/或静态基准分量280)写入一次性可编程存储器325,使得不会由于计算设备300失去电力而失去ARC值。
如图3进一步所示,示例计算设备300包括耦合到控制器/处理器310的一个或多个传感器312a-312g。例如,传感器312a-312g可以包括用于提供相对移动和/或取向信息(其是与根据被广域网收发机304、局域网收发机306和/或SPS接收机308接收的信号来推导出的运动数据无关的)的运动传感器。作为举例而非限制的方式,运动传感器可以包括加速度计312a、陀螺仪312b和地磁(磁力计)传感器312c(例如,指南针),它们中的任何一者都可以基于微机电系统(MEMS)或基于某种其它技术来实现。一个或多个传感器312a-312g还可以包括物理侵入传感器312d、温度计(例如,热敏电阻)312e、音频传感器312f(例如,麦克风)和/或其它传感器。可以将一个或多个传感器312a-312g的输出作为(经由广域网收发机304和/或局域网收发机306、或者经由计算设备300的某个网络端口或接口)被发送给远程设备或服务器的数据的一部分(连同用于与计算设备300进行通信的节点的天线信息和/或诸如位置数据之类的数据)来提供,以用于存储或进一步处理(例如,用于与计算设备300进行通信的AP的天线信息可以是通过将由移动设备的传感器测量的传感器数据与在服务器处维护的记录进行匹配来推断的,所述记录包括用于各种无线节点的天线信息以及由一个或多个无线设备先前获得的相关联的传感器数据)。如图3进一步所示,在一些实施例中,一个或多个传感器312a-312g还可以包括相机312g(例如,电荷耦合器件(CCD)型相机、基于CMOS的图像传感器等),其可以产生静止图像或运动图像(例如,视频序列),这些图像可以被显示在用户接口设备(例如,显示器或屏幕)上,并且可以进一步用于确定照明的环境水平和/或与以及与UV和/或红外照明的色彩和存在和水平有关的信息。
物理入侵传感器可以被配置为响应于检测到对计算设备300的物理干预而输出信号。对计算设备100的物理干预可以指示计算设备300的用户正在尝试移除电池或计算设备300的其它外部电源,以及可能即将发生针对安全处理系统的电力失去。处理器310可以被配置为监测来自物理入侵传感器312d的信号,并且响应于来自物理入侵传感器312d的这种信号,将来自易失性存储器392的ARC写入一次性可编程存储器。在安全处理子系统不包括用于在从计算设备300移除外部电源的情况下提供电力的辅助内部电源(例如,内部电源195)的情况下,可以包括物理入侵传感器。
物理入侵传感器312d可以包括机械开关,该机械开关在计算设备300的外壳(case)被打开或者在计算设备300中设置外部电源185的隔室被打开的情况下被触发,并且被配置为响应于外壳或隔室已经被打开来生成信号。物理入侵传感器312d还可以包括光传感器,该光传感器可以在计算设备300的外壳被打开或者在计算设备300中设置外部电源185的隔室被打开的情况下检测进入计算设备300的光,并且可以生成用于指示光线水平的变化的信号。物理入侵传感器312d还可以包括电容传感器,该电容传感器被配置为响应于计算设备300的用户触摸物理入侵传感器312d或者接近传感器位置(这可以指示用户可能从计算设备300中移除外部电源185)来生成信号。其它类型的传感器也可以用于响应于可以指示计算设备300的外部电源185可能被移除的事件来生成信号。
处理器(也被称为控制器)310可以连接到局域网收发机306、广域网收发机304、SPS接收机308以及一个或多个传感器312。处理器可以包括用于提供处理功能以及其它计算和控制功能的一个或多个微处理器、微控制器和/或数字信号处理器。处理器310可以耦合到用于存储数据和用于在移动设备内执行编程功能的软件指令的非暂时性计算机可读存储介质(例如,存储器314)。存储器314可以板载在处理器310上(例如,在同一IC封装内),和/或该存储器可以是对处理器的外部存储器,并且在功能上通过数据总线耦合。存储器314可以包括可以由处理器310用来存储可执行程序代码的非易失性计算机可读介质,其可以用于实现在图1和2示出的计算设备的NVM 150。处理器310还可以耦合到易失性存储器392,其可以用于实现在图1和2中示出的计算设备的易失性存储器120。易失性存储器392包括计算机可读存储器,当失去针对该存储器的电力时,该存储器将失去被存储在其中的内容。处理器310还可以包括非易失性存储器(未示出),其可以用于实现在图1和2中示出的计算设备的NVM 127,并且可以用于存储可执行程序代码(例如,EXP 129)。
多个软件单元和数据表可以位于存储器314中,并且可以被处理器310使用以便管理与远程设备/节点的通信,执行定位确定功能和/或执行设备控制功能。如图3所示,在一些实施例中,存储器314可以包括用户认证单元316和软件认证单元318。单元的功能和/或数据结构可以按照不同的方式组合、分开和/或构造,这取决于计算设备300的实现方式。例如,用户认证单元316和/或软件认证单元318可以各自至少部分地被实现为基于硬件的实现方式。存储器314还可以包括可执行程序代码(EXP)320,其可以用于在计算设备300上实现一个或多个应用、服务、程序等。EXP 320可以由处理器310执行并且可以用于实现被存储在图1和2中示出的计算设备的NVM 150中的EXP 128。
用户认证单元316和/或软件认证单元318可以是在计算设备300的处理器310上运行的进程。用户认证单元316可以被配置为使用各种手段来认证计算设备300的用户。用户认证单元316可以被配置为通过要求用户输入密码、PIN、滑动图案、或者应当仅为计算设备的授权用户所知的其它这种输入来认证用户。用户认证单元316可以被配置为使用从传感器312中的一者或多者获得的生物计量数据来认证用户。计算设备300可以包括被配置为扫描计算设备300的用户的一个或多个物理特征的传感器,例如,被配置为捕获用户的虹膜和/或视网膜、面部特征和/或可以用于认证计算设备300的用户的其它解剖学(anatomical)信息的图像的传感器。移动设备的传感器312a-312g还可以包括被配置为收集针对用户的语音数据的传感器,该语音数据可以由处理器190进行分析,以确定计算设备300的当前用户的语音的特性是否与移动设备的授权用户的语音的特性匹配。如果确定计算设备300的用户不是计算设备300的授权用户,则用户认证单元316可以被配置为向处理器310提供关于计算设备的用户不是计算设备300的授权用户的指示。处理器310可以被配置为响应于这种指示来破坏被存储在一次性可编程存储器325中的ARC,并且清除被存储在易失性存储器392中的任何ARC分量。
软件认证单元318可以被配置为认证对计算设备300的固件和/或软件的更新。如关于图1所讨论的,软件和/或固件更新可以作为一个或多个镜像文件被接收。可以从各种源接收对固件和/或软件的更新。固件和/或软件的合法源可以包括但不限于:原始设备制造商(OEM)、操作系统和/或设备驱动程序提供方、网络提供方和/或已经资助设备和/或对设备的处置和/或配置施加控制的企业提供方。恶意方可能通过尝试在计算设备300上安装恶意固件和/或软件更新或者通过欺骗该设备的用户在该设备上安装恶意固件和/或软件更新,来获得对该设备的控制。
软件认证单元318可以被配置为认证对与计算设备300相关联的固件和/或软件的更新。在该上下文中对术语“与……相关联”的使用指代如下的软件和/或固件:该软件和/或固件被安装在计算设备300的非易失性存储器中,并且可以被加载到易失性存储器392中以由计算设备300的处理器310执行。软件和/或固件可以是可以由TEE 380执行的受信固件或软件。
软件认证单元318可以被配置为使用HUK(例如,以上关于图1和2讨论的HUK 199),来计算与正被更新的软件相关联的MAC值,并且将该值与同包括固件和/或软件更新的镜像文件包括在一起的MAC值进行比较。如果所计算出的MAC值和来自镜像文件的值不匹配,则软件认证单元318可以被配置为生成对处理器310的关于更新未被认证的指示。处理器310可以被配置为响应于这种指示来破坏被存储在一次性可编程存储器325中的ARC,并且清除被存储在易失性存储器392中的任何ARC分量。
处理器310可以包括受信执行环境(TEE)380,和/或计算设备300可以包括安全元件390。受信执行环境380和/或安全元件390可以用于实现在图1中示出的安全处理子系统110,并且外部NVM 150可以由存储器314或计算设备300的另一存储器(未示出)来实现。
处理器310还可以包括受信执行环境380。受信执行环境380可以被实现为处理器310的可以用于在与富执行环境隔离的环境中处理和存储敏感数据的安全区域,在所述富执行环境中可以执行操作系统和/或应用(例如,软件认证单元318的那些应用)。受信执行环境380可以被配置为通过对被存储在其中的敏感数据实施机密性、完整性和保护,来执行用于为敏感数据提供端到端安全性的受信应用。受信执行环境380可以用于存储加密密钥、防重放计数器数据和/或其它敏感数据。处理器310还可以包括一次性可编程存储器,其可以用于实现在图1和2中示出的计算设备100的一次性可编程存储器125。
处理器310还可以包括一次性可编程存储器325,其可以实现在图1和2中示出的计算设备100和200的一次性可编程存储器125。一次性可编程存储器325包括持久性存储器,其中即使失去针对该存储器的电力,该存储器也保留被存储在其中的数据。一次性可编程存储器325可以包括多个熔丝,每个熔丝表示数据的比特,并且可以通过熔断对应的熔丝来设置特定比特的值。熔丝的值在被设置后无法改变。此外,可以使用其它类型的一次性可编程存储器325。代替熔丝,一次性可编程存储器325可以包括反熔丝或可以被设置一次并且可以用于表示数据的比特的其它组件。
计算设备300可以包括安全元件390(在本文中也被称为受信组件)。除了受信执行环境380之外或代替受信执行环境380,计算设备300可以包括安全元件390。安全元件390可以包括可以用于执行安全应用以及与这种应用相关联的机密数据的自主的并且防篡改的硬件。安全元件390可以用于存储加密密钥、防重放计数器数据和/或其它敏感数据。安全元件390还可以包括一次性可编程存储器,其可以用于实现在图1和2中示出的计算设备的一次性可编程存储器125。安全元件390可以包括近场通信(NFC)标签、用户身份模块(SIM)卡、或者可以用于安全地存储数据的其它类型的硬件设备。安全元件390可以以永久或半永久的方式与计算设备300的硬件集成,或者在一些实现方式中,其可以是计算设备300的可移除组件,该可移除组件可以用于安全地存储数据和/或为应用提供安全的执行环境。
计算设备300还可以包括提供适当的接口系统(例如,允许用户与计算设备300交互的麦克风/扬声器352、小键盘354和显示器356)的用户接口350。麦克风/扬声器352(其可以与音频传感器312f相同或不同)提供语音通信服务(例如,使用广域网收发机304和/或局域网收发机306)。小键盘354可以包括用于用户输入的适当的按钮。显示器356可以包括适当的显示器(例如,背光液晶显示器(LCD)),并且还可以包括用于额外的用户输入模式的触摸屏显示器。
在图1和2中示出的计算设备的处理器190或者计算设备300的处理器310提供以下各项:用于确定已经对与集成电路相关联的软件或固件进行了未经授权的更新的单元;以及用于响应于确定已经对软件或固件进行了未经授权的更新,来破坏防重放计数器(ARC)值的单元,该ARC值是在集成电路的一次性可编程存储器中维护的并且由集成电路用来保护非易失性存储器的内容,如上面关于图1-3所讨论的。
处理器190或310提供了用于确定已经对软件或固件进行了未经授权的更新的单元,其包括:用于检测对集成电路上的软件的改变的单元;用于响应于检测到对集成电路上的软件的改变来确定用户或软件中的至少一者是否是可信的单元;以及用于响应于用户或软件中的至少一者不是可信的,来确定对集成电路上的软件的改变是未经授权的单元。用户认证单元316和/或软件认证单元318还提供用于响应于检测到对集成电路上的软件的改变,来确定用户或软件中的至少一者是否可信的单元。处理器190和处理器310还提供以下各项:用于确定用户是否已经被认证的单元;以及用于响应于用户尚未被认证来执行至少一个认证过程以认证用户的单元。用户认证单元316还可以提供以下各项:用于确定用户是否已经被认证的单元;以及用于响应于用户尚未被认证来执行至少一个认证过程以认证用户的单元。
处理器190或处理器310提供了用于认证软件的单元,其包括:用于通过使用从与集成电路相关联的硬件唯一密钥(HUK)推导出的密钥来将基于密码的消息认证码(CMAC)算法应用于软件,来确定用于该软件的消息认证码(MAC)的单元;以及用于将MAC与先前确定的MAC进行比较以确定MAC是否与先前确定的MAC匹配的单元。用户认证单元316还可以提供以下各项:用于通过使用从与集成电路相关联的硬件唯一密钥(HUK)推导出的密钥来将基于密码的消息认证码(CMAC)算法应用于软件,来确定用于该软件的消息认证码(MAC)的单元;以及用于将MAC与先前确定的MAC进行比较以确定MAC是否与先前确定的MAC匹配的单元。
处理器190或处理器310提供用于破坏ARC值的单元,其包括:用于利用在集成电路的易失性存储器中维护的第二ARC值来更新被存储在一次性可编程存储器中的第一ARC值的单元。处理器190或310还提供以下各项:用于确定一次性可编程存储器的要被设置的第一比特数量的单元;用于确定包括第一比特数量的一次性可编程存储器的第一比特集合的位置的单元;以及用于通过设置一次性可编程存储器的第一比特集合来更新被存储在一次性可编程存储器中的ARC值的单元。处理器190或处理器310还提供用于确定一次性可编程存储器的第一比特数量的单元,其包括:用于基于已经在一次性可编程存储器中设置的第二比特数量来确定一次性可编程存储器的要设置的第一比特数量的单元。处理器190或处理器310还提供用于确定一次性可编程存储器的哪些比特的单元,其包括:用于从在一次性可编程存储器中尚未被设置的第二比特集合中随机地选择一次性可编程存储器的第一比特集合的单元。
图4-6示出了可以用于表示ARC的示例熔丝图405、410、415、420、425、430,该ARC可以包括被存储在易失性存储器120中的、图1中的ARC 140或者图2中的瞬态分量270a-270n和静态基准分量280。在图1中示出的示例实现方式中,单个ARC 140被存储在易失性存储器120中。相比而言,在图2中示出的示例实现方式中,针对被存储在NVM 150中的有效载荷155a-155n中的每一者,在易失性存储器中存储包括瞬态分量和静态基准分量的多个ARC。每个ARC由被所有的ARC共享的静态基准分量280、以及特定于NVM 150中的特定有效载荷155a-155n的瞬态分量270a-270n构成。
每个熔丝图最初表示比特值阵列,其表示在一次性可编程存储器125中与该比特相关联的特定熔丝、反熔丝或其它组件是否已经被熔断。熔丝图可以使用一维或多维阵列来表示,此处,熔丝图405、410、415、420、425、430是二维阵列。熔丝图可以被存储在易失性存储器120中,并且处理器190可以被配置为:每当要将数据写入外部NVM 150时,访问易失性存储器120,并且将被存储在易失性存储器120中的ARC递增。经更新的ARC的至少一部分可以用于确定MAC 160,所述MAC 160可以用于确定自从数据被写入外部NVM 150以来有效载荷155(被写入外部NVM 150的数据)尚未被修改。在图2中示出的实现方式中,每个有效载荷155a-155n与其本身相应的MAC 160a-160n和瞬态分量275a-275n相关联。可以将相应的瞬态分量275a-275n与静态基准分量280进行组合,以确定针对相应的瞬态分量275a-275n与之相关联的相应有效载荷155a-155n的MAC 160a-160n。
由于ARC用于生成MAC,因此这些技术可以用于防止重放攻击。如果攻击者要将旧的MAC和有效载荷155的副本引入外部NVM 150中,则安全处理子系统110将识别出有效载荷155已经被修改或损坏,因为与有效载荷155一起存储的MAC 160将与针对该有效载荷计算的MAC的期望值不匹配。安全处理子系统110可以使用当前ARC来计算有效载荷155的MAC,并且将该MAC值与MAC 160进行比较。如果两个MAC不匹配,则外部NVM 150中的数据已经被损坏或改变。
图4是示出根据本文公开的技术的针对用于维护防重放计数器(ARC)的基于随机数的技术的熔丝图的图。在图4中示出的技术可以由在图1和2中示出的计算设备100和200来实现。在图4中示出的技术是使用一系列熔丝图来示出的:熔丝图405、熔丝图410、熔丝图415、熔丝图420、熔丝图425和熔丝图430,它们表示安全处理子系统110的一次性可编程存储器125中的熔丝阵列。熔丝图中的每个正方形表示一个熔丝或反熔丝,其可以被熔断以设置对应的比特值。在该正方形中,已经被设置的比特值由数字“1”来表示。然而,在其它实现方式中,比特值可以由为零的比特值来表示。正方形的阴影表示如何设置该特定比特。在图4中示出的示例中,具有纯阴影背景的正方形指示该比特被设置为与(ARC)相关联的静态基准值的一部分,具有用棋盘图案来加阴影的背景的正方形指示该比特被设置为对静态基准的、已经被选择为防止回滚攻击的添加项,以及具有用菱形图案来加阴影的背景的正方形指示该比特被设置为随机选择的一部分。
在图4中示出的技术可以减少用于在一次性可编程存储器125中维护ARC的熔丝的数量。如上所讨论的,在计算设备100正在接收来自电池或其它电源的电力时,可以将ARC维护在安全处理子系统110的易失性存储器120中。每当将数据写入外部NVM 150时,可以将被存储在易失性存储器120中的ARC递增。当电源已经耗尽时和/或当物理入侵传感器312d检测到对计算设备100的物理入侵(其可以指示可能从计算设备100移除电池或其它电源)时,可以将在易失性存储器120中维护的ARC写入安全处理子系统110的一次性可编程存储器125。安全处理子系统110的一次性可编程存储器125的存储容量通常在大小上受到限制并且是有限的。由于在其上实现安全处理子系统110的集成电路的成本和大小限制,所以被包括在安全处理子系统110的一次性可编程存储器125中的熔丝的数量可能受到限制。此外,一次性可编程存储器125仅能够被编程一次,并且因此,无法像可以在计算设备中使用的其它类型的存储器那样被重用。
当计算设备100通电时,可以开始在图4中示出的过程。在计算设备100掉电时,用于ARC的基准值可能已经被写入一次性可编程存储器125的熔丝中。安全处理子系统110的处理器190可以被配置为在计算设备100通电时,访问一次性可编程存储器125并且读取被存储在其中的ARC 165。熔丝图405表示包括先前已经被写入一次性可编程存储器125的ARC基准值的6x 6熔丝阵列。在图4的示例中示出的熔丝图的大小和配置旨在说明本文中所公开的过程,而并非旨在将这些过程限于具有特定大小或配置的熔丝图。可以使用熔丝图的其它大小和/或配置(例如,不同数量的行和/或列)。在安全处理子系统110的一次性可编程存储器125中包括的熔丝或反熔丝的数量可以与在图4中示出的示例不同(例如,更大或更小)。在图4-6中示出的技术提供了将ARC存储在一次性可编程存储器125中可用的有限数量的熔丝中的方式,使得有限的熔丝供应不会在少量的电力循环或物理侵入事件(其触发将ARC写入一次性可编程存储器125)中耗尽。
示例熔丝图405具有先前被设置为静态基准值的4个比特。静态基准值可能已经使用在图4-6中示出的技术之一来确定,或者可能已经是被选择的最初用作ARC的种子值。一次性可编程存储器125中的用于存储ARC的部分最初可能是空白的,没有熔丝或反熔丝被熔断,并且在熔丝图405中示出的存储的静态基准值可以表示从易失性存储器120写入一次性可编程存储器125的ARC的先前值。安全处理子系统110的处理器可以访问一次性可编程存储器125,从一次性可编程存储器125读取熔丝图值,并且在安全处理子系统110的易失性存储器120中存储对熔丝图的表示。
在从一次性可编程存储器125加载先前基准值之后,安全处理子系统110的处理器190可以选择与熔丝图405相比,要添加到先前基准的至少一个比特,如熔丝图410所示。处理器190可以被配置为从熔丝图的尚未被设置的比特中随机地选择至少一个比特。处理器可以被配置为熔断与在一次性可编程存储器125中已经选择的一个或多个比特相关联的熔丝,以建立新的静态基准值。新的基准值防止重放攻击,在所述重放攻击中,攻击者尝试将旧数据放入外部NVM 150中,并且使安全处理子系统110处理旧数据。参照在图1中示出的示例,被存储在外部NVM 150中的数据包括有效载荷155和MAC 160。可以使用被存储在易失性存储器120中的当前ARC,针对有效载荷155重新计算MAC 160。如果将旧数据被放入外部NVM150中,则重新计算出的MAC和MAC 160的值将不再匹配,这是因为每当将数据被写入外部NVM 150时,都将在易失性存储器120中维护的ARC递增。
熔丝图410还示出了该过程的另一方面。处理器190选择至少一个额外比特作为ARC的随机选择分量。从被存储在易失性存储器120中的熔丝图中的尚未被设置的熔丝中选择至少一个比特。在图4中示出的示例中,随机分量包括三个比特,但是随机分量可以包括更多或更少数量的比特。每当将数据写入外部NVM 150时,都再次选择随机选择。ARC的随机选择部分不被写入一次性可编程存储器125的熔丝中。仅在被存储在易失性存储器120中的对熔丝图的表示中维护随机选择部分。
熔丝图415示出了响应于将数据写入外部NVM 150而已经更新易失性存储器120中的熔丝图405的示例。经更新的静态基准值包括被添加到从一次性可编程存储器125取得的静态基准的至少一个比特。但是,ARC的随机选择的部分被一个或多个比特的新的随机选择所代替。在熔丝图415中示出的示例中,从熔丝图的不是经更新的静态基准的一部分的比特中随机选择三个比特。每当在将数据写入外部NVM 150时重新确定ARC的随机分量时,可以从不是经更新的静态基准的一部分的可用比特中选择更多或更少的比特。
熔丝图420示出了响应于将数据写入外部NVM 150而已经更新易失性存储器120中的熔丝图415的示例。再次,从熔丝图中对新的随机选择的比特是从不是经更新的静态基准的一部分的比特中选择的。在熔丝图420中示出的示例中,每次在数据被写入外部NVM 150时重新确定ARC的随机分量时,可以从不是经更新的静态基准的一部分的可用比特中选择四个比特,但是可以选择更多或更少的比特。
处理器190确定电源已经耗尽和/或确定物理入侵传感器312d已经检测到对计算设备100的物理入侵。然后,处理器访问易失性存储器120中的当前熔丝图并且将那些值作为新的静态基准值写到一次性可编程存储器125的熔丝中。在图4的示例中,易失性存储器120中的熔丝图处于由熔丝图420所示的状态下。在该图中设置的熔丝将变为由处理器写入一次性可编程存储器125的新的静态基准值,如由熔丝图425表示的。
熔丝图430示出了在易失性存储器120中的示例性熔丝图,其中熔丝图425中示出的静态基准已经被更新为包括额外比特。处理器190可以将额外比特写入一次性可编程存储器125的熔丝中。处理器还可以选择一组一个或多个随机选择的比特,其包括来自非易失性存储器中的熔丝图中的不是经更新的静态基准的一部分的比特。每当将数据写入外部NVM 150时,可以发生选择对ARC的新的随机分量的该过程,并且该过程可以继续进行,直到事件触发处理器将当前的熔丝图从易失性存储器120写入包括一次性可编程存储器125的熔丝中为止。
图5是示出根据本文公开的技术的用于维护防重放计数器的另一技术的图。该技术类似于在图4中示出的技术,但是使用部分随机化方法,在该部分随机化方法中,当使用组合方法来确定ARC的瞬态分量时,可以随机地选择ARC的被添加到静态基准分量的部分。在图5中示出的技术是使用一系列熔丝图来示出的:熔丝图505、熔丝图510、熔丝图515、熔丝图520和熔丝图525,它们表示安全处理子系统110的一次性可编程存储器125中的熔丝阵列。在图5中示出的示例中,具有纯阴影背景的正方形指示该比特被设置为与(ARC)相关联的静态基准值的一部分,具有用棋盘图案加阴影的背景的正方形指示该比特被设置为对静态基准的、已经被选择为防止回滚攻击的添加项,并且具有用菱形图案加阴影的背景的正方形指示该比特被设置为ARC的瞬态分量的组合选择分量的一部分。
像以上讨论的图4的过程一样,当计算设备100通电时,可以开始在图5中示出的过程。在计算设备100掉电时,用于ARC的基准值可能已经被写入一次性可编程存储器125的熔丝中。安全处理子系统110的处理器可以访问一次性可编程存储器125,从一次性可编程存储器125读取熔丝图值,并且将对熔丝图的表示存储在安全处理子系统110的易失性存储器120中以生成熔丝图505。熔丝图505与以上讨论的熔丝图1005相同,但是该过程可以以不同的静态基准值开始或者在根本没有静态基准值的情况下开始,如上面关于图4所讨论的。
如以上关于图4所讨论的,还可以确定新的静态基准值。安全处理子系统110的处理器可以选择要添加到先前基准中的至少一个比特,如熔丝图510中示出的。处理器可以被配置为从熔丝图的尚未被设置的比特中随机地选择至少一个比特。处理器可以被配置为熔断在一次性可编程存储器125中的与已经被选择的一个或多个比特相关联的熔丝,以建立新的静态基准值。被存储在一次性可编程存储器125中的静态基准值可以最初在没有设置任何比特的情况下开始。
熔丝图510还示出了该过程的另一方面。选择至少一个额外的比特作为ARC的组合选择分量。在图5中示出的ARC的组合选择分量不同于在图4中示出的ARC的随机选择分量。组合选择分量不是随机选择的比特集合。相反,在位图中选择起点。起点可以是熔丝图当中的尚未被选择的任何比特。例如,在示例熔丝图510中已经选择了熔丝图的右下角的比特,但是可以选择尚未被设置的任何比特。
在图5中示出的技术使得每当在将数据写入外部NVM 150之前递增ARC时,被选择用于ARC的组合选择分量的比特数量最小化。例如,在图5中示出的过程可以遍历其中组合选择分量包括1比特的可能组合中的每个组合。在已经用尽1比特的选项时,该过程就可以遍历2比特的选项中的每个选项,直到已经用尽2比特的选项为止。该过程可以继续进行,当各系列n比特的选项中的每个选项用尽时都增加另一比特,直到用尽所有可能的组合为止,或者直到将ARC写入一次性可编程存储器125为止。ARC的单调选择部分不被写入一次性可编程存储器125的熔丝中,直到事件触发处理器将来自易失性存储器120的当前熔丝图写入包括一次性可编程存储器125的熔丝中为止。仅在被存储在易失性存储器120中的对熔丝图的表示中维护单调(monotonic)选择部分,直到发生这样的写事件为止。
熔丝图515示出了如下的示例:其示出了在数据已经被写入外部NVM 150八次之后,熔丝图510可以如何改变。ARC的组合选择分量已经递增了8个比特。所有的1比特的选项尚未用尽。在图5的示例中,虽然ARC从左到右并且从下到上递增,但是可以使用其它算法来确定访问组合选择分量的各种排列的次序。
熔丝图520示出了如下的示例:其示出了在数据已经被写入外部NVM 150三十二次之后,熔丝图515可以如何改变。ARC的组合选择分量递增了32个比特。所有的1比特的选项已经用尽,并且该过程以ARC的2比特的组合选择分量继续进行。在图5的示例中,虽然ARC从左到右并且从下到上递增,但是可以使用其它算法来确定访问组合选择分量的各种排列的次序。
然后,处理器确定电源已经耗尽和/或确定物理入侵传感器312d已经检测到对计算设备100的物理入侵。然后,处理器访问易失性存储器120中的当前熔丝图并且将那些值作为新的静态基准值写入一次性可编程存储器125的熔丝中。在图5的示例中,易失性存储器120中的熔丝图处于由熔丝图520示出的状态下。在该图中设置的熔丝将变为由处理器写入一次性可编程存储器125的新的静态基准值,如由熔丝图525所表示的。
图6是示出根据本文公开的技术的用于维护防重放计数器的另一技术的图。该技术类似于在图4和5中示出的技术,但是使用确定性组合方法来确定ARC的被添加到静态基准分量的部分以及ARC的瞬态分量。在图6中示出的技术是使用一系列熔丝图来示出的:熔丝图605、熔丝图610、熔丝图615、熔丝图620、熔丝图625和熔丝图630,它们表示安全处理子系统110的一次性可编程存储器125中的熔丝阵列。在图6示出的示例中,具有纯阴影背景的正方形指示该比特被设置为与(ARC)相关联的静态基准值的一部分,具有用棋盘图案加阴影的背景的正方形指示该比特被设置为对静态基准的、已经被选择为防止回滚攻击的添加项,并且具有用菱形图案加阴影的背景的正方形指示该比特被设置为ARC的组合分量的一部分。
在图6中示出的技术使用组合方法来确定被添加到ARC的静态基准分量的、ARC的组合分量。被包括在组合分量中的比特数量可以根据设备可能被断电的频率而变化。当与图4和5中示出的技术相比时,在图6中示出的技术可以减少一次性可编程存储器125的针对每个掉电循环被写入的熔丝的数量。该技术类似于图5的技术,但是在图6中示出的技术中对熔丝图的更新中的每个更新是确定性的,并且在图6的技术中没有进行对比特的随机选择。
在图6中示出的技术使用组合方法来确定被添加到ARC的静态基准分量的、ARC的组合分量。被包括在组合分量中的比特数量可以根据设备可能被断电的频率而变化。当与图4和5中示出的技术相比时,在图6中示出的技术可以减少一次性可编程存储器125的针对每个掉电循环被写入的熔丝的数量。该技术类似于图5的技术,但是在图6中示出的技术中对熔丝图的更新中的每个更新是确定性的,并且在图6的技术中没有进行对比特的随机选择。
ARC的组合分量是在一次性可编程存储器125的尚未被设置为静态基准的一部分的可用比特当中对X个比特的确定性选择。针对向外部NVM 150的每次数据写入来确定ARC的组合分量。可以使用以下等式来确定可以被包括在组合分量中的可用比特以及可用比特的总数:
可用比特=最大比特–静态基准中的比特,其中,最大比特数量表示包括一次性可编程存储器125的由熔丝图表示的一部分的总比特数量,并且其中,静态基准中的比特表示在经更新的静态基准值中已经被熔断的熔丝(其中,至少一个额外的比特已经被熔断(如在熔丝图610中示出的))。因此,可用比特是尚未被设置并且可以被包括在ARC的组合分量中的那些比特。可用比特数量=最大比特数量–静态基准中的比特数量,其中,最大比特数量表示包括一次性可编程存储器125的由熔丝图表示的一部分的总比特数量,并且其中,静态基准中的比特数量表示在经更新的静态基准值中已经被熔断的熔丝的数量(其中,至少一个额外的比特已经被熔断(如在熔丝图610中示出的))。因此,可用比特数量是尚未被设置的那些比特以及可以被包括在ARC的组合分量中的比特总数。
像以上讨论的图4和5的过程一样,当计算设备100通电时,可以开始在图6中示出的过程。在计算设备100掉电时,用于ARC的基准值可以已经被写入一次性可编程存储器125的熔丝中。安全处理子系统110的处理器可以访问一次性可编程存储器125,从一次性可编程存储器125读取熔丝图值,并且将对熔丝图的表示存储在安全处理子系统110的易失性存储器120中以生成熔丝图605。该过程可以以不同的静态基准值开始或者在根本没有静态基准值的情况下开始,这取决于本文讨论的技术是否已经用于生成和维护ARC。
如以上关于图4和5所讨论的,还可以确定新的静态基准值。安全处理子系统110的处理器可以选择要添加到先前基准中的至少一个比特,如熔丝图610中示出的。处理器可以使用确定性方法(与在图4和5中示出的方法相比而言,在图4和5中示出的方法中,被添加到静态基准值中的至少一个比特可以是随机地选择的)来从熔丝图的可用比特中选择至少一个比特。处理器可以被配置为熔断在一次性可编程存储器125中与已经选择的一个或多个比特相关联的熔丝,以建立新的静态基准值。被存储在一次性可编程存储器125中的静态基准值可以最初在没有设置任何比特的情况下开始。
熔丝图615示出了如下的示例:其示出了在确定经更新的静态基准之后,将数据写入外部NVM 150一次之后,熔丝图610可以如何改变。在熔丝图615中示出的示例中,ARC的组合部分在该阶段包括一个额外的比特。ARC的组合部分的大小(“X”)以1比特的增量来增长(在包括X个比特的所有的比特组合已经用尽时)。在图6中示出的示例中,虽然确定性组合算法从左到右并且从下到上递增,但是确定性组合算法的其它实现方式可以被配置为以与图6所示的次序不同的次序,通过X比特组合的各种排列来递增。例如,在图6中示出的过程可以遍历其中组合选择分量包括1比特的可能组合中的每个组合。在已经用尽1比特的选项时,该过程可以遍历2比特的选项中的每个选项,直到已经用尽2比特的选项为止。该过程可以继续进行,当各系列n比特的选项中的每个选项用尽时都增加另一比特,直到用尽所有可能的组合为止,或者直到将ARC写入一次性可编程存储器125为止。ARC的组合选择部分没有被写入一次性可编程存储器125的熔丝中,直到事件触发处理器将来自易失性存储器120的当前熔丝图写入包括一次性可编程存储器125的熔丝中为止。仅在被存储在易失性存储器120中的对熔丝图的表示中维护单调选择部分,直到发生这样的写事件为止。
熔丝图620示出了如下的示例:其示出了在熔丝图615中示出的熔丝图的状态之后,在数据已经被写入外部NVM 150多次之后,熔丝图610可以如何改变。在熔丝图625中示出的示例中,已经用尽针对ARC的组合部分的所有的1比特的选项,并且组合算法现在正在遍历2比特的选项,其将用于每当数据被写入外部NVM 150时确定ARC的组合部分。将探索2比特的选项,直到用尽为止。
熔丝图625示出了如下的示例:其示出了在熔丝图620中示出的熔丝图的状态之后,在数据已经被写入外部NVM 150多次之后,熔丝图610可以如何改变。在熔丝图625中示出的示例中,已经用尽针对ARC的组合部分的所有的1比特的和2比特的选项,并且组合算法现在正在遍历3比特的选项,其将用于每当数据被写入外部NVM 150时确定ARC的组合部分。将探索3比特的选项,直到用尽为止。
然后,处理器确定电源已经耗尽和/或确定物理入侵传感器312d已经检测到对计算设备100的物理入侵。然后,处理器访问易失性存储器120中的当前熔丝图并且将那些值作为新的静态基准值写入一次性可编程存储器125的熔丝中。在图6的示例中,易失性存储器120中的熔丝图处于由熔丝图625示出的状态下。在该图中设置的熔丝将变为由处理器写入一次性可编程存储器125的新的静态基准值,如由熔丝图630所表示的。
图7是用于在集成电路中提供数据保护的示例过程700的流程图。过程700可以用于通过破坏用于保护NVM 150的内容的ARC来有效地擦除NVM 150的内容。有效载荷155可能被安装在计算设备100上的未经授权的固件或软件获得。但是,在没有与被存储在NVM 150中的数据的有效载荷相关联的正确的ARC值的情况下,将无法解密有效载荷的内容。在图7中示出的过程可以用于防止对计算设备的固件和/或软件组件的未经授权的更新对被存储在NVM 150中的敏感数据进行访问。在图7中示出的过程可以由在图1和2中示出的计算设备100的安全处理子系统110的处理器190来实现。在可以执行被包括在对软件或固件的未经授权的更新中的任何软件或固件之前,由计算设备执行过程700,该未经授权的更新可能至少具有对被存储在计算设备100的一次性可编程存储器125和易失性存储器120中的ARC的读访问。
可以进行关于已经对与集成电路相关联的软件或固件进行了未经授权的更新的确定(阶段705)。处理器190确定是否已经对计算设备100的固件和/或软件进行了未经授权的更新。处理器190监测被存储在计算设备的安全处理子系统的存储器和/或外部NVM中的固件和/或软件。
用于确定是否已经发生对软件和/或固件的未经授权的更新的一种方法是监测对计算设备100的固件和/或其它关键软件组件的改变,并且要求在固件和/或其它关键软件组件被更新之前或者响应于在计算设备100上的固件被更新,来认证计算设备100的用户。计算设备的授权用户可以批准对可以访问在计算设备上的用户或企业拥有的数据的固件和/或软件组件的更新,该更新可以访问被存储在其中的敏感用户数据或企业数据。在计算设备100与企业相关联的情况下,可能需要认证系统管理员、网络管理员或企业授权的其它用户,以便更新固件和/或软件组件。计算设备100的一般企业用户可能不具有对针对计算设备100上的固件和/或软件组件的安装和/或更新的完全控制。
处理器190可以执行认证过程,以确定计算设备的用户是否已经尝试更新计算设备100的固件和/或其它关键软件组件。处理器可以针对计算设备100的固件和/或其它关键软件组件执行用户认证,这些关键软件组件是可以访问被存储在易失性存储器120中的ARC140、瞬态分量270a-n和/或静态基准分量280或者被存储在一次性可编程存储器125中的ARC 165的受信软件组件。如果用户认证失败,则处理器190可以进行关于计算设备100的固件和/或其它关键软件组件是未经授权的确定,并且禁止对固件和/或其它关键软件组件的存储和/或使用。
处理器190可以使用各种认证技术来认证用户,并且本文中公开的用于安全地擦除受保护的非易失性存储器的内容的技术不限于特定类型的认证技术。可以要求用户输入密码、PIN、滑动图案、或者应当仅为计算设备的授权用户所知的其它这样的输入。计算设备300可以包括用户可以通过其提供输入的小键盘、键盘和/或触摸屏用户界面。处理器190可以将输入与由计算设备300存储在计算设备300的安全存储器位置中的授权信息进行比较。
处理器190还可以使用生物计量数据来认证用户。计算设备300的传感器312a-312g可以包括一个或多个传感器,其被配置为从计算设备300的用户收集生物计量数据。例如,计算设备300可以包括用于捕获来自计算设备300的用户的一个或多个指纹的指纹传感器。计算设备300可以包括被配置为扫描计算设备300的用户的一个或多个物理特征的传感器,例如,被配置为捕获用户的虹膜和/或视网膜、面部特征和/或其它解剖学信息的图像的传感器,该图像可以用于认证计算设备300的用户。移动设备的传感器312a-312g还可以包括被配置为收集针对用户的语音数据的传感器,该语音数据可以由处理器190进行分析,以确定计算设备300的当前用户的语音特性是否与移动设备的授权用户的语音的特性匹配。
认证可以由受信执行环境(例如,在计算设备300的示例实现方式中示出的TEE380)执行,以防止攻击者尝试规避认证过程。用于计算设备100的授权用户的认证信息可以被存储在计算设备的持久性存储器中,并且可以被加密或以其它方式被保护,以防止对由受信执行环境和/或计算设备100的其它组件对认证信息的未经授权的访问和/或修改,以执行用户认证。计算设备100的处理器190还可以维护要求用户认证的固件和/或关键软件组件的列表,以便更新计算设备100的这些元件。
除了或代替要求在任何软件更新之前认证授权用户,可以使用的另一种方法是认证对计算设备100的固件和/或关键软件组件的更新的程序代码。可以认证软件更新的一种方式是通过处理器190确定用于更新的消息认证码(MAC)。处理器190可以通过将基于密码的消息认证码(CMAC)算法应用于更新的镜像文件和/或其一个或多个组件,来计算MAC。可以向CMAC算法提供从与计算设备相关联的硬件唯一密钥(HUK)199推导出的密钥。HUK 199可以包括被存储在一次性可编程存储器125和/或计算设备100的另一安全存储器位置中的比特串。HUK 199是处理器190可访问的,并且可以是计算设备100的某些受信组件可访问的。HUK 199是不受信程序代码(例如但不限于在TEE外部操作的程序代码)不可访问的。HUK199可以由计算设备100的制造商生成并且编程到一次性可编程存储器125中。
计算设备100的处理器190使用CMAC来确定与和计算设备100相关联的固件和/或软件的关键组件相关联的一个或多个软件镜像文件是否已经被计算设备100的未经授权的用户改动。处理器190可以被配置为在基于HUK 199生成CMAC之前要求认证计算设备100的用户。处理器190可以被配置为执行如上所讨论的认证过程,以便认证计算设备100的用户。如果认证失败,则处理器190可以被配置为进行关于软件更新是未经授权的确定。替代地,如果认证失败,则处理器190可以生成不是基于HUK 199的错误的CMAC值。错误的CMAC值将与先前生成的并且与计算设备100的固件和/或关键组件相关联的预期CMAC值不匹配,并且处理器190可以进行关于该更新是未经授权的确定。然而,如果用户已经被正确地认证,并且由处理器190生成的CMAC值与预期CMAC值匹配,则可以确定软件更新是被授权的。
计算设备100的安全处理子系统110可以包括被存储在只读存储器(ROM)105中的安全启动加载程序119,所述安全启动加载程序119被配置为使用各种安全启动机制技术来认证一个或多个固件镜像文件和/或针对计算设备100的一个或多个关键软件组件的镜像文件。安全启动加载程序也可以被配置为在允许设备被启动之前计算CMAC镜像。如果由启动加载程序计算出的CMAC值与先前计算的并且与要被安全启动加载程序进行认证的组件相关联的预期的CMAC镜像值不匹配,则安全启动加载程序可以确定该软件更新是未经授权的。
可以响应于确定已经对软件或固件进行了未经授权的更新,来破坏在集成电路的一次性可编程存储器125中维护并且由集成电路用来保护非易失性存储器的内容的防重放计数器(ARC)值165(阶段710)。非易失性存储器可以与集成电路110(例如,NVM 150)分开,或者可以是集成电路的一部分(例如,在一些方面中,NVM 127)。响应于处理器190检测到对软件和/或固件的未经授权的更新,处理器190破坏被存储在计算设备100的一次性可编程存储器125中的ARC 165。处理器190可以清除被存储在易失性存储器120中的ARC 140、瞬态分量270a-n和/或静态基准分量280。破坏ARC 165并且从易失性存储器120中清除ARC分量防止被包括在未经授权的更新中的软件和/或固件能够恢复被存储在NVM 150中的未经加密的有效载荷内容。
对软件和/或固件的未经授权的更新的检测可以用作以下操作的触发事件:处理器基于被存储在易失性存储器120中的在易失性存储器120中维护的ARC 140、瞬态分量270a-n和/或静态基准分量280,来更新被存储在一次性可编程存储器125中的ARC 165。处理器将被存储在易失性存储器120中的ARC 140作为ARC 165写入一次性可编程存储器125。处理器190将静态基准分量280作为ARC 165写入一次性可编程存储器125。处理器190可以将瞬态分量270与静态基准分量280(例如,如在图4-6和9-11中示出的)进行组合,以生成要被写为被存储在一次性可编程存储器125中的ARC 165的ARC。安全处理子系统110还可以被配置为选择瞬态分量270的最新确定的值来生成要被写为被存储在一次性可编程存储器125中的ARC 165的ARC,或者可以选择易失性存储器120中的瞬态分量270中的一个瞬态分量。在ARC已经被存储在一次性可编程存储器中时,可以删除被存储在易失性存储器120中的ARC 140、瞬态分量270a-n和/或静态基准分量280,并且可以通过设置用于存储ARC 165的一次性可编程存储器125的额外比特来破坏被存储在一次性可编程存储器125中的ARC165。
在图8中示出的过程提供了一种可以用于破坏ARC 165的这样的方法的示例,并且图9-11示出了将这样的破坏技术应用于来自先前示例的熔丝图的示例。计算设备的安全处理子系统的处理器可以被配置为响应于对软件和/或固件的未经授权的更新来破坏ARC165,以防止攻击者能够访问被存储在NVM中的敏感数据。可以破坏被存储在计算设备100的一次性可编程存储器125中的ARC 165,并且可以在执行被包括在对软件和/或固件的未经授权的更新中的软件中的任何软件之前,清除被存储在计算设备100的易失性存储器120中的ARC 140、瞬态分量270a-n和/或静态基准分量280。
图8是用于根据本文公开的技术来破坏防重放计数器的示例过程800的流程图。在图8中示出的过程可以由在图1和2中示出的计算设备100和200的安全处理子系统110的处理器来实现。此外,在图8中示出的过程可以用于至少部分地实现在图7中示出的过程的阶段710。在图8中示出的过程可以用于改动ARC 165以防止攻击者访问被存储在NVM 150中的敏感数据。被存储在计算设备100的一次性可编程存储器125中的ARC 165将不再与在对被存储在NVM 150中的有效载荷155进行加密时使用的ARC匹配。即使攻击者能够在计算设备上安装能够访问被存储在其中的ARC 165的新固件和/或软件组件,ARC也将已经是被破坏的。该方法有效地擦除了计算设备的NVM 150的受保护内容,因为对于解密和认证被存储在NVM 150中的有效载荷的内容所需要的ARC将不再存在于计算设备100的存储器中。
可以确定用于存储ARC值的一次性可编程存储器的要被设置的第一比特数量(阶段805)。计算设备的安全处理子系统110的处理器190可以被配置为确定要被添加到ARC165中以使ARC 165无效的比特数量。安全处理子系统110可以被配置为确定被存储在一次性可编程存储器125中的ARC 165是否包括已经被设置的门限比特数量。
可以基于关于对ARC 165的破坏所期望的熵(entropy)水平来选择门限比特数量。较高的期望熵水平与一次性可编程存储器125的较大比特数量相关联,而较低的期望熵水平与一次性可编程存储器125的被设置的较少比特相关联。一次性可编程存储器125中的设置的更多的比特使得攻击者更加难以尝试推断出ARC 165在被破坏之前应当是什么值。安全处理子系统110可以被配置为进行这样的确定,以确保对额外比特的设置将足够量的熵引入到ARC 165中,使得猜测哪些比特是ARC 165的一部分并且哪些比特已经被添加以破坏ARC 165将是极其计算密集型的。
在一种示例实现方式中,安全处理子系统110被配置为响应于已经在一次性可编程存储器125中设置的当前比特数量小于或等于预先确定门限,来确定将在一次性可编程存储器125中设置第一比特数量。在该示例实现方式中,安全处理子系统110被配置为响应于已经在一次性可编程存储器125中设置的当前比特数量超过预先确定门限,来确定将在一次性可编程存储器125中设置第二比特数量。第一比特数量大于第二比特数量。第一比特数量是针对如下情形来选择的:一次性可编程存储器具有当前被设置为使得在ARC被有意破坏之前确定ARC更加计算密集型的较少比特数量。此外,第一比特数量和第二比特数量可以被定义为比特范围,并且安全处理子系统110可以被配置为选择要被设置的落入适当的比特范围内的比特数量。
为了利用第一示例来说明该概念,假设门限比特数量为64个比特,第一比特数量包括128个比特,第二比特数量包括64个比特,并且被存储在一次性可编程存储器125中的ARC 165当前包括40个比特。在该示例中,在一次性可编程存储器125的ARC 165中设置的当前比特数量是40个比特,其小于64个比特的门限。因此,安全处理子系统110将第一比特数量(在该示例中为128个比特)添加到ARC 165的当前值中。
为了利用第二示例来说明该概念,假设门限比特数量为64个比特,第一比特数量包括128个比特,并且第二比特数量包括64个比特,并且被存储在一次性可编程存储器125中的ARC 165当前包括100个比特。在该示例中,在一次性可编程存储器的ARC 165中设置的当前比特数量为100个比特,其超过64个比特的门限。因此,安全处理子系统将第二比特数量(在该示例中为64个比特)添加到ARC 165的当前值中。
要被添加到一次性可编程存储器125中的ARC 165的比特以及在这些示例中使用的门限值旨在说明本文所公开的概念,而并非旨在将这些技术限于这些特定值。所公开的技术可以被配置为向一次性可编程存储器125中的ARC 165添加不同的比特数量。此外,可以使用不同的门限和/或多个门限来确定要将多少比特添加到一次性可编程存储器中的ARC中,从而实现这些技术。这些技术还可以被实现为利用一个或多个比特值范围,并且安全处理子系统110可以被配置为随机地选择落入与当前被设置在一次性可编程存储器125的ARC 165中的比特数量相关联的特定范围内的比特数量。
可以确定一次性可编程存储器的包括第一比特数量的第一比特集合的位置(阶段810)。阶段805包括确定要设置包括ARC的一次性可编程存储器的多少比特。阶段810包括确定要选择一次性可编程存储器125的哪些比特来设置,以便破坏被存储在一次性可编程存储器125中的ARC 165。处理器190确定要被被设置的比特的位置。处理器190可以使用随机或伪随机算法,来选择包括ARC 165的一次性可编程存储器125的尚未被设置的比特。然后,攻击者将不仅需要确定在一次性可编程存储器中设置了多少比特,而且需要确定设置了哪些比特,以便确定在ARC 165的值被故意破坏之前ARC 165是何值。
可以通过设置一次性可编程存储器的第一比特集合来更新被存储在一次性可编程存储器125中的ARC(阶段815)。处理器190可以设置一次性可编程存储器125的第一比特集合的值。可以通过将值写入在阶段810中选择的比特来破坏被存储在一次性可编程存储器125中的ARC 165。处理器190可以通过熔断一次性可编程存储器125的用于表示数据的各个比特的熔丝、反熔丝或其它组件,来设置在阶段810中选择的比特。在图8中示出的过程可以是响应于检测到对软件和/或固件的未经授权的更新并且在执行软件之前执行的。结果,攻击者将无法访问有效的ARC 165,并且将无法解密被存储在NVM 150中的数据。该方法通过使内容由于对ARC的破坏而不可恢复,从而有效地擦除NVM 150的内容。
图9-11提供了基于在以上讨论的图4-6中示出的示例的用于破坏防重放计数器的技术的示例。图9将在图4中示出的示例修改为包括:检测到对软件和/或固件的未经授权的更新;以及破坏被存储在一次性可编程存储器中的ARC。熔丝图905、910、915和920反映了在图4中示出的熔丝图405、410、415和420。然而,在引起对在熔丝图920中示出的ARC的确定的NVM更新之后,检测到对软件和/或固件的未经授权的更新,并且触发了安全擦除。熔丝图925示出除了在熔丝图920中表示的比特值之外还选择了两个新比特。在这一阶段,处理器190可以从用于表示其中存储ARC的一次性可编程存储器的熔丝的位图中,在随机位置处选择固定数量或随机数量的比特。在该示例中,为了清楚起见,仅选择了两个比特,但是本文公开的技术不限于添加三个新比特。所选择的更大的比特数量使得确定添加了多少比特以及哪些比特添加到先前的ARC中更加困难。然后,处理器190将基于最新的ARC和用于使ARC模糊的额外比特的新的静态基准值(熔丝图930)写入一次性可编程存储器。被存储在NVM中的依赖于旧ARC的任何数据由于ARC被递增并且被存储在易失性存储器120中的ARC被移除而将变得不可恢复。被存储在NVM 150中的任何瞬态分量275a-275n也可以从NVM 150中被删除和/或被处理器190破坏。下次设备通电时,在熔丝图930中表示的新的静态基准值将用作用于对NVM内容的后续更新的基础(参见熔丝图935)。攻击者将不可恢复被存储在NVM中的任何敏感数据。此外,还可以删除被存储在计算设备的易失性存储器中的任何ARC数据,以使攻击者更加难以确定ARC的先前状态。
图10通过将在图5中示出的示例修改为包括以下各项来进一步说明这些概念:检测到对软件和/或固件的未经授权的更新;以及破坏被存储在一次性可编程存储器125中的ARC。熔丝图1005、1010、1015和1020反映了在图5中示出的熔丝图505、510、515和520。然而,在用于引起对在熔丝图1020中示出的ARC的确定的NVM更新之后,处理器190检测到对软件和/或固件的未经授权的更新,并且处理器190触发安全擦除。熔丝图1025示出除了在熔丝图1020中表示的比特值之外还选择了三个新比特。在该示例中,为了清楚起见,仅选择了三个比特,但是本文公开的技术不限于添加三个新比特。然后,处理器190将基于最新的ARC和用于使ARC模糊的额外比特的新的静态基准值(熔丝图1030)写入一次性可编程存储器125。被存储在NVM中的依赖于旧ARC的任何数据将变得不可被攻击者恢复。此外,还可以删除和/或破坏被存储在计算设备的易失性存储器120和/或NVM 150中的任何ARC数据,以使攻击者更加难以确定ARC的先前状态。
图11通过将在图6中示出的示例修改为包括以下各项来进一步说明这些概念:检测到对软件和/或固件的未经授权的更新;以及破坏被存储在一次性可编程存储器125中的ARC。熔丝图1105、1110、1115、1120和1125反映了在图6中示出的熔丝图605、610、615、620和625。然而,在用于引起对在熔丝图1125中示出的ARC的确定的NVM更新之后,检测到未经授权的更新,并且触发安全擦除。熔丝图1130示出:除了在熔丝图1125中表示的比特值之外,处理器190还已经选择了三个新比特。在该示例中,为了清楚起见,仅选择了三个比特,但是本文公开的技术不限于添加三个新比特。然后,处理器190将基于最新的ARC和用于使ARC模糊的额外比特的新的静态基准值(熔丝图1135)写入一次性可编程存储器125。被存储在NVM中的依赖于旧ARC的任何数据将变得不可被攻击者恢复。此外,还可以删除和/或破坏被存储在计算设备的易失性存储器120和/或NVM 150中的任何ARC数据,以使攻击者更加难以确定ARC的先前状态。
先前图9-11的示例旨在说明用于防止攻击者在计算设备上安装未经授权的软件以便获得对被存储在NVM 150中的敏感数据的访问的概念。被添加到ARC的特定比特数量以及所选择的特定比特旨在说明这些概念,而不是将本文公开的技术限于这些特定的示例实现方式。
图12是示例集成电路1200的框图。该集成电路包括处理器1290和一次性可编程存储器1225。一次性可编程存储器1225可以与处理器1290可通信地耦合。在一些实现方式中,一次性可编程存储器1225可以被实现为处理器1290的一部分,并且可以被视为处理器1290的内部存储器。处理器1290可以被配置为确定已经对与集成电路相关联的软件或固件进行了未经授权的更新。该软件可以被存储在集成电路1200内部或集成电路外部的计算机可读存储器中,例如非易失性存储器1250。处理器1290可以被配置为破坏防重放计数器(ARC)值(例如,ARC 1265),该ARC值是在集成电路1200的一次性可编程存储器1225中维护的,并且被集成电路1200用于保护非易失性存储器1250的内容。处理器1290可以被配置为响应于确定已经对软件或固件进行了未经授权的更新来破坏ARC 1265。
集成电路1200可以类似于在以上讨论的图1和2中示出的安全处理子系统110,其可以在包括但不限于SoC的集成电路上实现。集成电路1200可以由在图3中示出的计算设备300来实现。处理器1290可以类似于在图1和2中示出的处理器190,或者可以类似于在图3中示出的处理器310。一次性可编程存储器1225可以类似于一次性可编程存储器125或在图3中示出的一次性可编程存储器325。ARC 1265可以被表示为一次性可编程存储器125的一维或二维比特阵列,类似于以上讨论的ARC 165。
可以通过各种手段来实现本文描述的方法,这取决于应用。例如,这些方法可以用硬件、固件、软件或其任何组合来实现。对于硬件实现方式,处理单元可以在以下各项内实现:一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、电子设备、被设计为执行本文描述的功能的其它电子单元、或其组合。
对于固件和/或软件实现方式,所述方法可以利用执行本文描述的功能的模块(例如,过程、功能等)来实现。有形地体现指令的任何机器可读介质都可以用于实现本文描述的方法。例如,软件代码可以被存储在存储器中并且由处理器单元执行。存储器可以在处理器单元内或者在处理器单元外部实现。如本文所使用的,术语“存储器”指代任何类型的长期、短期、易失性、非易失性或其它存储器,并且不限于任何特定类型的存储器或任何特定数量的存储器或任何特定类型的介质。有形介质包括机器可读介质的一种或多种物理制品,例如,随机存取存储器、磁存储、光存储介质等。
如果用固件和/或软件来实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质上。示例包括利用数据结构来编码的计算机可读介质以及利用计算机程序来编码的计算机可读介质。计算机可读介质包括物理计算机存储介质。存储介质可以是能够由计算机访问的任何可用介质。通过举例而非限制的方式,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或者能够用于以指令或数据结构的形式存储期望的程序代码并且能够由计算机访问的任何其它介质;如在本文中使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上文的组合应当被包括在计算机可读介质的范围内。这样的介质还提供了非暂时性介质的示例,其可以是机器可读的,并且其中计算机是可以从这样的非暂时性介质读取的机器的示例。
此外,以上讨论的方法、系统和设备是示例。各种配置可以适当地省略、替代或添加各种过程或组件。例如,在替代配置中,可以以与所描述的次序不同的次序来执行方法,并且可以添加、省略或组合各种步骤。此外,可以在各种其它配置中组合关于某些配置所描述的特征。可以以类似的方式来组合这些配置的不同方面和元素。此外,技术在发展,并且因此元素中的许多元素是示例,并且可以使用其它元素(包括将来开发的元素)。
本文讨论的通用原理可以应用于其它实现方式。

Claims (30)

1.一种用于在集成电路中提供数据保护的方法,所述方法包括:
确定已经对与所述集成电路相关联的软件或固件进行了未经授权的更新;以及
响应于确定已经对所述软件或所述固件进行了所述未经授权的更新,来破坏防重放计数器ARC值,所述ARC值是在所述集成电路的一次性可编程存储器中维护的并且由所述集成电路用于与硬件唯一密钥HUK或秘密信息一起产生用于对非易失性存储器的内容进行加密的加密密钥。
2.根据权利要求1所述的方法,其中,确定已经对与所述集成电路相关联的所述软件或所述固件进行了所述未经授权的更新包括:
检测对所述软件或所述固件的改变;
响应于检测到对所述软件或所述固件的所述改变,来确定用户或所述软件或所述固件中的至少一者是否是可信的;以及
响应于所述用户或所述软件中的所述至少一者不是可信的,来确定对所述软件或所述固件的所述改变是未经授权的。
3.根据权利要求2所述的方法,其中,所述方法包括认证所述用户,并且认证所述用户包括:
确定所述用户是否已经被认证;以及
响应于所述用户尚未被认证,执行至少一个认证过程来认证所述用户。
4.根据权利要求2所述的方法,其中,所述方法包括认证所述软件或所述固件,并且认证所述软件或所述固件包括:
通过使用从与所述集成电路相关联的所述HUK推导出的密钥,将基于密码的消息认证码CMAC算法应用于所述软件或所述固件,来确定用于所述软件或所述固件的消息认证码MAC;以及
将所述MAC与先前确定的MAC进行比较,以确定所述MAC是否与所述先前确定的MAC匹配。
5.根据权利要求1所述的方法,其中,破坏所述ARC值包括:
利用在易失性存储器中维护的当前ARC值来更新被存储在所述一次性可编程存储器中的ARC值。
6.根据权利要求5所述的方法,还包括:
确定存储所述ARC值的所述一次性可编程存储器的要被设置的第一比特数量;
确定所述一次性可编程存储器的包括所述第一比特数量的第一比特集合的位置;以及
通过设置所述一次性可编程存储器的所述第一比特集合来更新被存储在所述一次性可编程存储器中的所述ARC值。
7.根据权利要求6所述的方法,其中,确定所述一次性可编程存储器的要设置的所述第一比特数量包括:
基于已经在所述一次性可编程存储器中设置的第二比特数量,来确定所述一次性可编程存储器的要设置的所述第一比特数量。
8.根据权利要求6所述的方法,其中,确定所述一次性可编程存储器的要被设置的所述第一比特数量包括:
从在所述一次性可编程存储器中尚未被设置的第二比特集合中随机地选择所述一次性可编程存储器的所述第一比特集合。
9.一种提供数据保护的集成电路,所述集成电路包括:
用于确定已经对与所述集成电路相关联的软件或固件进行了未经授权的更新的单元;以及
用于响应于确定已经对所述软件或所述固件进行了所述未经授权的更新,来破坏防重放计数器ARC值的单元,所述ARC值是在所述集成电路的一次性可编程存储器中维护的并且由所述集成电路用于与硬件唯一密钥HUK或秘密信息一起产生用于对非易失性存储器的内容进行加密的加密密钥。
10.根据权利要求9所述的集成电路,其中,用于确定已经对所述软件或所述固件进行了所述未经授权的更新的所述单元包括:
用于检测对所述软件或所述固件的改变的单元;
用于响应于检测到对所述软件或所述固件的所述改变,来确定用户或所述软件或所述固件中的至少一者是否是可信的单元;以及
用于响应于所述用户或所述软件或所述固件中的所述至少一者不是可信的,来确定对所述软件或所述固件的所述改变是未经授权的单元。
11.根据权利要求10所述的集成电路,其中,用于确定用户或所述软件或所述固件中的至少一者是否是可信的所述单元包括:
用于确定所述用户是否已经被认证的单元;以及
用于响应于所述用户尚未被认证,执行至少一个认证过程来认证所述用户的单元。
12.根据权利要求10所述的集成电路,其中,用于确定用户或所述软件或所述固件中的至少一者是否是可信的所述单元包括:
用于通过使用从与所述集成电路相关联的所述HUK推导出的密钥,将基于密码的消息认证码CMAC算法应用于所述软件或所述固件,来确定用于所述软件或所述固件的消息认证码MAC的单元;以及
用于将所述MAC与先前确定的MAC进行比较,以确定所述MAC是否与所述先前确定的MAC匹配的单元。
13.根据权利要求9所述的集成电路,其中,用于破坏所述ARC值的所述单元还包括:
用于利用在所述集成电路的易失性存储器中维护的第二ARC值来更新被存储在所述一次性可编程存储器中的第一ARC值的单元。
14.根据权利要求13所述的集成电路,还包括:
用于确定所述一次性可编程存储器的要被设置的第一比特数量的单元;
用于确定所述一次性可编程存储器的包括所述第一比特数量的第一比特集合的位置的单元;以及
用于通过设置所述一次性可编程存储器的所述第一比特集合来更新被存储在所述一次性可编程存储器中的所述ARC值的单元。
15.根据权利要求14所述的集成电路,其中,用于确定所述一次性可编程存储器的要设置的所述第一比特数量的所述单元还包括:
用于基于已经在所述一次性可编程存储器中设置的第二比特数量,来确定所述一次性可编程存储器的要设置的所述第一比特数量的单元。
16.根据权利要求14所述的集成电路,其中,用于确定要设置所述一次性可编程存储器的哪些比特的所述单元还包括:
用于从在所述一次性可编程存储器中尚未被设置的第二比特集合中随机地选择所述一次性可编程存储器的所述第一比特集合的单元。
17.一种提供数据保护的集成电路,所述集成电路包括:
一次性可编程存储器;
耦合到所述一次性可编程存储器的处理器,所述处理器配置为:
确定已经对与所述集成电路相关联的软件或固件进行了未经授权的更新;以及
响应于确定已经对所述软件或所述固件进行了所述未经授权的更新,来破坏防重放计数器ARC值,所述ARC值是在所述集成电路的所述一次性可编程存储器中维护的并且由所述集成电路用于与硬件唯一密钥HUK或秘密信息一起产生用于对非易失性存储器的内容进行加密的加密密钥。
18.根据权利要求17所述的集成电路,其中,所述处理器通过被配置为进行以下操作而被配置为确定已经对所述软件或所述固件进行了所述未经授权的更新:
检测对所述软件或所述固件的改变;
响应于检测到对所述软件或所述固件的所述改变,来认证用户以及所述软件或所述固件中的至少一者;以及
响应于所述用户和所述软件中的所述至少一者未被认证,来确定对所述软件或所述固件的所述改变是未经授权的。
19.根据权利要求18所述的集成电路,其中,所述处理器通过被配置为进行以下操作而被配置为认证所述用户:
确定所述用户是否已经被认证;以及
响应于所述用户尚未被认证,执行至少一个认证过程来认证所述用户。
20.根据权利要求18所述的集成电路,其中,所述处理器通过被配置为进行以下操作而被配置为认证所述软件:
通过使用从与所述集成电路相关联的所述HUK推导出的密钥,将基于密码的消息认证码CMAC算法应用于所述软件,来确定用于所述软件的消息认证码MAC;以及
将所述MAC与先前确定的MAC进行比较,以确定所述MAC是否与所述先前确定的MAC匹配。
21.根据权利要求17所述的集成电路,其中,被配置为破坏所述ARC值的所述处理器还被配置为:
利用在所述集成电路的易失性存储器中维护的第二ARC值来更新被存储在所述一次性可编程存储器中的第一ARC值。
22.根据权利要求21所述的集成电路,其中,所述处理器还被配置为:
确定存储所述ARC值的所述一次性可编程存储器的要被设置的第一比特数量;
确定所述一次性可编程存储器的包括所述第一比特数量的第一比特集合的位置;以及
通过设置所述一次性可编程存储器的所述第一比特集合来更新被存储在所述一次性可编程存储器中的所述ARC值。
23.根据权利要求22所述的集成电路,其中,被配置为确定所述一次性可编程存储器的要设置的所述第一比特数量的所述处理器还被配置为:
基于已经在所述一次性可编程存储器中设置的第二比特数量,来确定所述一次性可编程存储器的要设置的所述第一比特数量。
24.根据权利要求22所述的集成电路,其中,被配置为确定要设置所述一次性可编程存储器的哪些比特的所述处理器还被配置为:
从在所述一次性可编程存储器中尚未被设置的第二比特集合中随机地选择所述一次性可编程存储器的所述第一比特集合。
25.一种非暂时性计算机可读介质,其具有存储在其上的用于在集成电路中提供数据保护的计算机可读指令,所述计算机可读指令包括被配置为使得计算机进行以下操作的指令:
确定已经对与所述集成电路相关联的软件或固件进行了未经授权的更新;以及
响应于确定已经对所述软件或所述固件进行了所述未经授权的更新,来破坏防重放计数器ARC值,所述ARC值是在所述集成电路的一次性可编程存储器中维护的并且由所述集成电路用于与硬件唯一密钥HUK或秘密信息一起产生用于对非易失性存储器的内容进行加密的加密密钥。
26.根据权利要求25所述的非暂时性计算机可读介质,其中,被配置为使得所述计算机确定已经对所述软件或所述固件进行了所述未经授权的更新的所述指令还包括被配置为使得所述计算机进行以下操作的指令:
检测对所述软件或所述固件的改变;
响应于检测到对所述软件或所述固件的所述改变,来认证用户以及所述软件或所述固件中的至少一者;以及
响应于所述用户以及所述软件或所述固件中的所述至少一者未被认证,来确定对所述软件或所述固件的所述改变是未经授权的。
27.根据权利要求25所述的非暂时性计算机可读介质,其中,被配置为使得所述计算机破坏所述ARC值的所述指令还包括被配置为使得所述计算机进行以下操作的指令:
利用在所述集成电路的易失性存储器中维护的第二ARC值来更新被存储在所述一次性可编程存储器中的第一ARC值。
28.根据权利要求27所述的非暂时性计算机可读介质,还包括被配置为使得所述计算机进行以下操作的指令:
确定存储所述ARC值的所述一次性可编程存储器的要被设置的第一比特数量;
确定所述一次性可编程存储器的包括所述第一比特数量的第一比特集合的位置;以及
通过设置所述一次性可编程存储器的所述第一比特集合来更新被存储在所述一次性可编程存储器中的所述ARC值。
29.根据权利要求28所述的非暂时性计算机可读介质,其中,被配置为使得所述计算机确定所述一次性可编程存储器的要设置的所述第一比特数量的所述指令还包括被配置为使得所述计算机进行以下操作的指令:
基于已经在所述一次性可编程存储器中设置的第二比特数量,来确定所述一次性可编程存储器的要设置的所述第一比特数量。
30.根据权利要求29所述的非暂时性计算机可读介质,其中,被配置为使得所述计算机确定要设置所述一次性可编程存储器的哪些比特的所述指令还包括被配置为使得所述计算机进行以下操作的指令:
从在所述一次性可编程存储器中尚未被设置的第二比特集合中随机地选择所述一次性可编程存储器的所述第一比特集合。
CN201980017155.7A 2018-03-09 2019-03-08 集成电路数据保护 Active CN111819561B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862640942P 2018-03-09 2018-03-09
US62/640,942 2018-03-09
US16/296,066 US11321466B2 (en) 2018-03-09 2019-03-07 Integrated circuit data protection
US16/296,066 2019-03-07
PCT/US2019/021275 WO2019173670A1 (en) 2018-03-09 2019-03-08 Integrated circuit data protection

Publications (2)

Publication Number Publication Date
CN111819561A CN111819561A (zh) 2020-10-23
CN111819561B true CN111819561B (zh) 2023-11-03

Family

ID=67844072

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980017155.7A Active CN111819561B (zh) 2018-03-09 2019-03-08 集成电路数据保护

Country Status (8)

Country Link
US (1) US11321466B2 (zh)
EP (1) EP3762852A1 (zh)
KR (1) KR20200129103A (zh)
CN (1) CN111819561B (zh)
BR (1) BR112020018229A2 (zh)
SG (1) SG11202007282YA (zh)
TW (1) TW201941065A (zh)
WO (1) WO2019173670A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2831787B1 (en) * 2012-03-30 2020-07-08 Irdeto B.V. Method and system for preventing and detecting security threats
US10853309B2 (en) 2018-08-13 2020-12-01 Micron Technology, Inc. Fuseload architecture for system-on-chip reconfiguration and repurposing
US11210238B2 (en) * 2018-10-30 2021-12-28 Cypress Semiconductor Corporation Securing data logs in memory devices
US20220156411A1 (en) * 2019-08-29 2022-05-19 Google Llc Securing External Data Storage for a Secure Element Integrated on a System-on-Chip
FR3100905B1 (fr) * 2019-09-16 2022-03-04 Idemia Identity & Security France Système sur puce et procédé garantissant la fraicheur des données stockées dans une mémoire extérieure
US11681536B2 (en) * 2019-12-06 2023-06-20 Lattice Semiconductor Corporation Fast boot systems and methods for programmable logic devices
US20230109011A1 (en) * 2021-10-04 2023-04-06 Hewlett-Packard Development Company, L.P. Placing a device in secure mode
EP4312136A1 (en) * 2022-07-25 2024-01-31 Nxp B.V. Apparatuses and methods for verification of updated data-set
WO2024049141A1 (ko) * 2022-09-02 2024-03-07 삼성전자주식회사 암호화된 데이터를 비휘발성 메모리 내에 저장하기 위한 전자 장치 및 그 방법

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427343A (zh) * 2001-12-18 2003-07-02 阳庆电子股份有限公司 防止设备及软件内的设定被非授权人员使用或更改的装置
CN1598781A (zh) * 2003-09-15 2005-03-23 英业达股份有限公司 软件保护方法及系统
CN1839375A (zh) * 2003-07-07 2006-09-27 密码研究公司 用于控制盗版和启用交互式内容的可重编程的安全性
CN101192200A (zh) * 2006-11-27 2008-06-04 联发科技股份有限公司 保障一存储器中的固件安全的方法及系统
JP2010063110A (ja) * 2002-06-06 2010-03-18 Nvidia Corp Iscsiおよびipsecプロトコルをサポートするギガビットイーサネットアダプタ
JP2010244191A (ja) * 2009-04-02 2010-10-28 Dainippon Printing Co Ltd 認証装置、認証プログラム、認証システム、パスワード生成装置、携帯型セキュリティデバイス、およびパスワード生成プログラム
CN103544413A (zh) * 2013-10-31 2014-01-29 宇龙计算机通信科技(深圳)有限公司 一种在智能终端中校验软件版权的方法及装置
CN105308925A (zh) * 2013-02-01 2016-02-03 微软技术许可有限责任公司 保护计算设备配件
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
WO2017173136A1 (en) * 2016-03-30 2017-10-05 The Athena Group, Inc. Key update for masker keys

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030233562A1 (en) * 2002-06-12 2003-12-18 Sachin Chheda Data-protection circuit and method
US20060143600A1 (en) * 2004-12-29 2006-06-29 Andrew Cottrell Secure firmware update
IL171963A0 (en) 2005-11-14 2006-04-10 Nds Ltd Secure read-write storage device
US7886150B2 (en) * 2007-05-11 2011-02-08 Mips Technologies, Inc. System debug and trace system and method, and applications thereof
US20090193261A1 (en) * 2008-01-25 2009-07-30 Mediatek Inc. Apparatus and method for authenticating a flash program
US8677144B2 (en) * 2008-02-25 2014-03-18 Cavium, Inc. Secure software and hardware association technique
US9479509B2 (en) * 2009-11-06 2016-10-25 Red Hat, Inc. Unified system for authentication and authorization
EP3518128B1 (en) * 2011-03-30 2021-04-28 Irdeto B.V. Enabling a software application to be executed on a hardware device
US20140075522A1 (en) * 2012-09-07 2014-03-13 Red Hat, Inc. Reliable verification of hypervisor integrity
US9690922B2 (en) * 2014-07-28 2017-06-27 Avago Technologies General Ip (Singapore) Pte. Ltd. System, apparatus, and method for anti-replay protection of data stored in a non-volatile memory device
US9830479B2 (en) * 2014-09-16 2017-11-28 Nxp Usa, Inc. Key storage and revocation in a secure memory system
CN106458112B (zh) * 2014-11-12 2019-08-13 松下电器(美国)知识产权公司 更新管理方法、更新管理系统以及计算机可读取的记录介质
US10353638B2 (en) * 2014-11-18 2019-07-16 Microsemi SoC Corporation Security method and apparatus to prevent replay of external memory data to integrated circuits having only one-time programmable non-volatile memory
US9563765B2 (en) * 2015-02-10 2017-02-07 Apple Inc. Baseband secure boot with remote storage
US9697359B2 (en) 2015-04-15 2017-07-04 Qualcomm Incorporated Secure software authentication and verification
US9729330B2 (en) * 2015-08-21 2017-08-08 Samsung Electronics Co., Ltd. Secure pairing of eHealth devices and authentication of data using a gateway device having secured area
US9953167B2 (en) * 2015-10-12 2018-04-24 Microsoft Technology Licensing, Llc Trusted platforms using minimal hardware resources
US9917687B2 (en) * 2015-10-12 2018-03-13 Microsoft Technology Licensing, Llc Migrating secrets using hardware roots of trust for devices
US10127405B2 (en) 2016-05-10 2018-11-13 Qualcomm Incorporated Techniques for determining an anti-replay counter for preventing replay attacks
US9916452B2 (en) * 2016-05-18 2018-03-13 Microsoft Technology Licensing, Llc Self-contained cryptographic boot policy validation
US10924277B2 (en) * 2018-01-25 2021-02-16 Micron Technology, Inc. Certifying authenticity of stored code and code updates

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427343A (zh) * 2001-12-18 2003-07-02 阳庆电子股份有限公司 防止设备及软件内的设定被非授权人员使用或更改的装置
JP2010063110A (ja) * 2002-06-06 2010-03-18 Nvidia Corp Iscsiおよびipsecプロトコルをサポートするギガビットイーサネットアダプタ
CN1839375A (zh) * 2003-07-07 2006-09-27 密码研究公司 用于控制盗版和启用交互式内容的可重编程的安全性
CN1598781A (zh) * 2003-09-15 2005-03-23 英业达股份有限公司 软件保护方法及系统
CN101192200A (zh) * 2006-11-27 2008-06-04 联发科技股份有限公司 保障一存储器中的固件安全的方法及系统
JP2010244191A (ja) * 2009-04-02 2010-10-28 Dainippon Printing Co Ltd 認証装置、認証プログラム、認証システム、パスワード生成装置、携帯型セキュリティデバイス、およびパスワード生成プログラム
CN105308925A (zh) * 2013-02-01 2016-02-03 微软技术许可有限责任公司 保护计算设备配件
CN103544413A (zh) * 2013-10-31 2014-01-29 宇龙计算机通信科技(深圳)有限公司 一种在智能终端中校验软件版权的方法及装置
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
WO2017173136A1 (en) * 2016-03-30 2017-10-05 The Athena Group, Inc. Key update for masker keys

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
IC卡的安全技术及可靠性;于宏军,赵冬艳;今日电子(第Z1期);76-79 *
于宏军,赵冬艳.IC卡的安全技术及可靠性.今日电子.1996,(第Z1期),76-79. *
基于PCI扩展槽数据密码卡的安全性设计;郭晓军;刘舒;;中国人民公安大学学报(自然科学版)(第02期);80-82 *
基于高性能消息管理机制的物联网中间件设计方法;王冰;陈庭贵;;计算机工程与应用(第16期);89-97+186 *
王冰 ; 陈庭贵 ; .基于高性能消息管理机制的物联网中间件设计方法.计算机工程与应用.2017,(第16期),89-97+186. *
郭晓军 ; 刘舒 ; .基于PCI扩展槽数据密码卡的安全性设计.中国人民公安大学学报(自然科学版).2007,(第02期),80-82. *
郭栋 ; .面向PCI安全标准的Java POS应用方案设计.福建电脑.2008,(第11期),126-127+157. *
面向PCI安全标准的Java POS应用方案设计;郭栋;;福建电脑(第11期);126-127+157 *

Also Published As

Publication number Publication date
EP3762852A1 (en) 2021-01-13
US20190278914A1 (en) 2019-09-12
WO2019173670A1 (en) 2019-09-12
US11321466B2 (en) 2022-05-03
BR112020018229A2 (pt) 2020-12-29
KR20200129103A (ko) 2020-11-17
CN111819561A (zh) 2020-10-23
TW201941065A (zh) 2019-10-16
SG11202007282YA (en) 2020-09-29

Similar Documents

Publication Publication Date Title
CN111819561B (zh) 集成电路数据保护
JP4912879B2 (ja) プロセッサの保護された資源へのアクセスに対するセキュリティ保護方法
ES2904501T3 (es) Implementación de un almacenamiento seguro con protección de integridad
US8281115B2 (en) Security method using self-generated encryption key, and security apparatus using the same
EP3455779B1 (en) Techniques for determining an anti-replay counter for preventing replay attacks
US7043636B2 (en) Data integrity mechanisms for static and dynamic data
US8347114B2 (en) Method and apparatus for enforcing a predetermined memory mapping
US10126960B2 (en) Fuse-based anti-replay mechanism
CN107004083B (zh) 设备密钥保护
US20090193211A1 (en) Software authentication for computer systems
US20120066515A1 (en) Electronic device, key generation program, recording medium, and key generation method
US20080148001A1 (en) Virtual Secure On-Chip One Time Programming
US10680814B2 (en) Device key security
US20080010686A1 (en) Confidential Information Processing Device
KR20080100674A (ko) 펌웨어의 무결성 검사 방법 및 장치
EP1967977A2 (en) Method and apparatus for protecting flash memory
CN103370718A (zh) 使用分布式安全密钥的数据保护
US10601592B2 (en) System and method trusted workspace in commercial mobile devices
CN111357003A (zh) 预操作系统环境中的数据保护
KR101781970B1 (ko) 자가 대응 전자문서 불법 유출 방지 장치 및 방법
Altuwaijri et al. Computer and Information Sciences
CN117610083A (zh) 文件校验方法、装置、电子设备及计算机存储介质

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
GR01 Patent grant
GR01 Patent grant