CN113632084B - 运行时代码执行验证方法、设备及系统 - Google Patents

运行时代码执行验证方法、设备及系统 Download PDF

Info

Publication number
CN113632084B
CN113632084B CN202080023850.7A CN202080023850A CN113632084B CN 113632084 B CN113632084 B CN 113632084B CN 202080023850 A CN202080023850 A CN 202080023850A CN 113632084 B CN113632084 B CN 113632084B
Authority
CN
China
Prior art keywords
executable code
mac
runtime executable
executed
runtime
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
CN202080023850.7A
Other languages
English (en)
Other versions
CN113632084A (zh
Inventor
A·蒙代洛
A·特罗亚
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.)
Micron Technology Inc
Original Assignee
Micron Technology 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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113632084A publication Critical patent/CN113632084A/zh
Application granted granted Critical
Publication of CN113632084B publication Critical patent/CN113632084B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • 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/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
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • 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
    • 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
    • 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/3247Cryptographic 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
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Automation & Control Theory (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Abstract

本公开包含用于运行时代码执行验证的设备、方法和系统。实施例包含存储器及配置成监测存储在存储器装置的安全阵列中的运行时可执行代码并接收所述运行时可执行代码的一部分已执行的指示的电路系统,其中所述指示包含接收到的消息认证码(MAC),所述电路系统还配置成响应于所述运行时可执行代码的所述部分未能执行的所述指示而采取措施。

Description

运行时代码执行验证方法、设备及系统
技术领域
本公开大体上涉及半导体存储器和方法,且更具体地说,涉及存储器命令的运行时代码验证。
背景技术
存储器装置通常提供为计算机或其它电子装置中的内部、半导体集成电路和/或外部可装卸式装置。存在许多不同类型的存储器,包含易失性和非易失性存储器。易失性存储器可能需要电力来维持它的数据,并且可包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)等等。非易失性存储器可通过在没有供电时也能保持所存储的数据来提供永久性数据,并且可包含NAND快闪存储器、 NOR快闪存储器、只读存储器(ROM)和电阻可变存储器,如相变随机存取存储器 (PCRAM)、电阻性随机存取存储器(RRAM)和磁性随机存取存储器(MRAM)等等。
存储器装置可组合到一起形成固态驱动器(SSD)、嵌入式多媒体卡(MMC),和/或通用快闪存储(UFS)装置。SSD、e.MMC和/或UFS装置可包含非易失性存储器(例如,NAND 快闪存储器和/或NOR快闪存储器),和/或可包含易失性存储器(例如,DRAM和/或 SRAM),以及各种其它类型的非易失性和易失性存储器。非易失性存储器可用于广泛范围的电子应用中,例如个人计算机、便携式存储器棒、数码相机、蜂窝式电话、便携式音乐播放器,例如MP3播放器、电影播放器等等。
快闪存储器装置可包含将数据存储在例如浮动栅极的电荷存储结构中的存储器单元。快闪存储器装置通常使用允许高存储器密度、高可靠性及低功耗的单晶体管存储器单元。电阻可变存储器装置可包含可基于存储元件(例如,具有可变电阻的电阻性存储器元件)的电阻状态存储数据的电阻性存储器单元。
存储器单元可布置成阵列,且阵列架构中的存储器单元可经编程为目标(例如,所要) 状态。举例来说,电荷可置于快闪存储器单元的电荷存储结构(例如,浮动栅极)上或从其移除以将所述单元编程到特定数据状态。所述单元的电荷存储结构上的所存储电荷可指示所述单元的阈值电压(Vt)。可通过感测快闪存储器单元的电荷存储结构上的所存储电荷(例如,Vt)来确定所述单元的状态。
许多威胁会影响存储器装置的操作和/或存储在存储器装置的存储器单元中的数据。例如,此类威胁可包含来自黑客或其他恶意用户的威胁,包含中间人(MITM)攻击等等。此类威胁可能造成重大财务损失,和/或可能造成重大安全和/或安保问题。
发明内容
在一个方面,本申请提供一种用于验证运行时代码执行的设备,其包括:存储器装置;以及电路系统,其配置成:监测存储在所述存储器装置的安全阵列中的运行时可执行代码;接收在计算装置的运行时期间执行的所述运行时可执行代码的一部分未能执行的指示,其中所述指示包含接收到的消息认证码(MAC);且响应于所述运行时可执行代码的所述部分未能执行的所述指示,采取措施。
在另一方面,本申请提供一种用于验证运行时代码执行的设备,其包括:存储器装置;以及电路系统,其配置成:监测由主机限定的存储在所述存储器装置的安全阵列中的运行时可执行代码;接收所述运行时可执行代码已执行的指示;基于所述指示确定所述运行时可执行代码的一部分是否未能执行,其中所述指示包括接收到的消息认证码 (MAC)及接收到的表示所述运行时可执行代码已执行的事件数量的发生;以及比较所述接收到的MAC与预期MAC以及所述接收到的发生与预期发生,其中所述接收到的MAC 和所述预期MAC以及所述接收到的发生和所述预期发生的值差指示运行时可执行代码的所述部分未能执行。
在另一方面,本申请提供一种用于验证运行时代码执行的系统,其包括:主机;以及存储器装置,其耦合到所述主机;其中所述主机配置成:在所述存储器上限定运行时可执行代码的开始地址和所述运行时可执行代码的结束地址;响应于在所述存储器上限定的所述运行时可执行代码的执行,接收消息认证码(MAC);比较接收到的MAC与预期MAC,以检查在所述存储器上限定的所述运行时可执行代码的一部分是否被执行;识别表示所述运行时可执行代码的所述部分已执行的事件数量的发生;以及基于所述预期MAC、所述接收到的MAC和所识别的发生的比较,采取措施。
在另一方面,本申请提供一种用于验证运行时代码执行的方法,其包括:监测存储在存储器装置的安全阵列中的运行时可执行代码;接收所述运行时可执行代码已执行的指示;基于所述指示确定所述运行时可执行代码的一部分未能执行,其中所述指示包括接收到的消息认证码(MAC)和接收到的表示所述运行时可执行代码已执行的事件数量的发生中的至少一个;以及响应于确定运行时可执行代码的所述部分未能执行而生成对策。
附图说明
图1示出根据本公开的实施例的具有数个物理块的存储器阵列的一部分的图式。
图2是根据本公开的实施例的包含主机和呈存储器装置形式的设备的计算系统的框图。
图3A、3B和3C示出根据本公开的实施例的运行时代码执行验证的实例流程图。
图4示出根据本公开的实施例的运行时代码执行验证的实例表。
图5示出根据本公开的实施例的运行时代码执行验证的实例流程图。
图6示出根据本公开的实施例的运行时代码执行验证的实例流程图。
图7示出根据本公开的实施例的运行时代码执行验证的实例流程图。
图8是根据本公开的实施例的包含主机和存储器装置的实例系统的框图。
图9是根据本公开的实施例的用于确定数个参数的实例过程的框图。
图10是根据本公开的实施例的用于确定数个参数的实例过程的框图。
图11是根据本公开的实施例的用于验证凭证的实例过程的框图。
图12是根据本公开的实施例的用于验证签名的实例过程的框图。
图13是根据本公开的实施例的实例存储器装置的框图。
具体实施方式
本公开包含用于存储器命令的运行时代码执行验证的设备、方法和系统。实施例包含存储器及配置成接收包含在存储器装置的存储器中的命令并验证要在存储器上执行的命令已执行的电路系统,其中命令包含反重放部分,其用于生成消息认证码(MAC)以验证命令已执行。在验证命令已执行后,提供软件服务。
许多威胁会影响存储器(例如,存储器装置)的操作和/或其中存储的数据(例如,存储于存储器装置的存储器单元中的数据)。例如,黑客或其他恶意用户可能试图执行活动(例如,攻击),例如中间人(MITM)攻击,以出于恶意目的对存储器的操作和/或其中存储的数据进行未经授权的更改。MITM攻击的一个实例是重放攻击,其中有效命令(例如,已有效地发出给存储器装置的命令)被存储器装置欺诈性地重复(例如,重新发出)和/或欺诈性地重新执行(例如,重新使用)多次(例如,许多次)。此类侵入活动可能造成重大财务损失,和/或可能造成重大安全和/或安保问题。
威胁的另一实例是黑客或其他恶意用户可能试图跳过本文中称为例程、编写为检查和/或安全协议的命令的一部分(例如,可执行代码的一部分)来认证所述命令。在这种攻击期间,将跳过例程,但主机可能会接收到已执行例程的指示。换句话说,黑客可能伪造主机接收到的例程已执行的指示。为检查命令真实性而编写的重要例程(认证组件、认证软件版本和/或更新、用户标识等)可设计为在命令运行时执行。黑客可能会更改(例如,屏蔽)外部输入以触发条件,从而跳过为验证命令真实性而编写的例程。此类例程的一个实例可以是在执行软件服务(例如,从自动取款机发行货币和/或传递数据、执行软件等) 之前为检查支付真实性而编写的可执行代码的一部分。其它实例可包含验证软件许可证以在执行前认证软件是否真实(计算机系统更新、软件安装等)的例程,和/或检查系统组件真实性和系统组件配置(例如,加工设备控件、汽车组件)的例程。
因而,为了确保可执行代码(例程)的一部分被执行且未被跳过,可将反重放(例如,新鲜度)机制并入例程中以验证存储器接收的命令未被跳过(例如,错误地指示例程已执行)。为了防止命令作为MITM重放攻击的一部分被跳过、欺诈性地重复和/或欺诈性地重新执行,反重放机制可以用作MAC计算中的组件。先前的代码验证可包含使用黄金散列进行证明的散列,其中黄金散列被计算并存储在不可存取的存储器区域中。在通电时或在用户请求时,可以对数据进行散列(例如,使用SHA-256),并且可以将散列数据与黄金散列进行比较以提供数据证明。然而,这些检查是在静态实例中执行的,在静态实例中,无法确定正确的所存储代码(例如,例程)是否被实际执行,或者此代码是否被跳过,并且提供了错误的执行指示以伪造例程的执行。
相比之下,本公开的实施例可以通过在例程的运行时期间和/或在主机接收到例程已执行的指示之后并入反重放机制来利用加密解决方案进行运行时代码执行验证。这样的解决方案可以确定例程是被实际执行还是被黑客、恶意用户和/或运行时错误跳过。举例来说,主机可接收例程被执行的指示,并且指示可以是接收到的MAC。在例程执行结束时(或在例程执行期间),主机可以使用已知的反重放机制和签名副本(例如,私钥)重新计算MAC。如果接收到的MAC和生成的MAC匹配,则例程被实际执行。如果接收到的MAC和生成的MAC不匹配,则例程被跳过,主机可能会实施对策(例如,报警等)。
如本文中所使用,“一”或“数个”可以指某事物中的一或多个,且“多个”可以指这类事物中的两个或更多个。例如,存储器装置可以指一或多个存储器装置,且多个存储器装置可以指两个或更多个存储器装置。另外,如本文中所使用,具体是关于附图中的参考标号所使用,标示符“R”、“B”、“S”和“N”指示如此标示的数个特定特征可以包含在本公开的数个实施例中。不同标示之间的数目可能相同或不同。
本文中的图遵循编号定则,其中第一一或多个数字对应于图号,且剩余的数字标识图式中的元件或组件。可通过使用类似数字来识别不同图之间的类似元件或组件。例如,101可表示图1中的元件“01”,且相似元件可在图2中表示为201。
图1示出根据本公开的实施例的具有数个物理块的存储器阵列101的一部分的图式。例如,存储器阵列101可以是快闪存储器阵列,例如NAND快闪存储器阵列。作为额外实例,存储器阵列101可以是电阻可变存储器阵列,例如PCRAM、RRAM、MMRAM,或自旋力矩转移(STT)阵列,等等。但是,本公开的实施例不限于特定类型的存储器阵列。此外,存储器阵列101(例如,阵列101的子集或整个阵列101)可以是安全存储器阵列,如本文中将进一步描述。此外,尽管在图1中未示出,但是存储器阵列101可以连同与其操作相关联的各个外围电路一起位于特定的半导体裸片上。
如图1中所示,存储器阵列101具有存储器单元的数个物理块107-0(块0)、107-1(块 1)、……、107-B(块B)。存储器单元可以是单层级单元和/或多层级单元,例如两层级单元、三层级单元(TLC)或四层级单元(QLC)。作为实例,存储器阵列101中物理块的数目可以是128个块、512个块,或1024个块,但是实施例不限于二的特定幂,也不限于存储器阵列101中的任何特定数目个物理块。
数个存储器单元物理块(例如,块107-0、107-1、……、107-B)可以包含在存储器单元平面中,且数个存储器单元平面可以包含在裸片上。举例来说,在图1中所示的实例中,每个物理块107-0、107-1、……、107-B可以是单个裸片的部分。也就是说,图1 中所示出的存储器阵列101的部分可以是存储器单元的裸片。
如图1中所示,每个物理块107-0、107-1、……、107-B包含耦合到存取线(例如,字线)的数个存储器单元物理行(例如,103-0、103-1、……、103-R)。每个物理块中行(例如,字线)的数目可以是32,但是实施例不限于每物理块特定数目个行103-0、103-1、……、 103-R。此外,尽管在图1中未示出,但是存储器单元可以耦合到感测线(例如,数据线和/或数字线)列。
所属领域的普通技术人员将了解,每个行103-0、103-1、……、103-R可包含数个存储器单元页(例如,物理页)。物理页是指编程和/或感测单元(例如,作为功能组一起编程和/或感测的数个存储器单元)。在图1示出的实施例中,每个行103-0、103-1、……、 103-R包括一个存储器单元物理页。但是,本公开的实施例不受如此限制。举例来说,在实施例中,每个行可包括多个存储器单元物理页(例如,耦合到偶数编号的数据线的一或多个存储器单元偶数页,和耦合到奇数编号的数据线的一或多个存储器单元奇数页)。另外,对于包含多层级单元的实施例,存储器单元物理页可存储多个数据页(例如,逻辑页)(例如,数据慢页和数据快页,其中物理页中的每个单元存储朝向数据慢页的一或多个位和朝向数据快页的一或多个位)。
如图1中所示,存储器单元页可包括数个物理扇区105-0、105-1、……、105-S(例如,存储器单元子集)。单元的每个物理扇区105-0、105-1、……、105-S可存储数个数据逻辑扇区。另外,每个数据逻辑扇区可对应于特定数据页的一部分。作为实例,存储在特定物理扇区中的第一数据逻辑扇区可对应于与第一数据页对应的逻辑扇区,并且存储在特定物理扇区中的第二数据逻辑扇区可对应于第二数据页。每个物理扇区105-0、 105-1、……、105-S可存储系统和/或用户数据,和/或可包含开销数据,例如错误校正码(ECC)数据、逻辑块地址(LBA)数据和元数据。
逻辑块寻址是一种可供主机用于识别数据逻辑扇区的方案。例如,每个逻辑扇区可对应于唯一逻辑块地址(LBA)。另外,LBA还可对应于(例如,动态地映射到)物理地址,例如物理块地址(PBA),其可以指示所述数据逻辑扇区在存储器中的物理位置。数据逻辑扇区可以是数个数据字节(例如,256字节、512字节、1,024字节或4,096字节)。但是,实施例不限于这些实例。
应注意,物理块107-0、107-1、……、107-B、行103-0、103-1、……、103-R、扇区105-0、105-1、……、105-S和页的其它配置是可能的。例如,物理块107-0、107-1、……、 107-B的行103-0、103-1、……、103-R可各自存储对应于单个逻辑扇区的数据,所述扇区可包含例如多于或少于512个数据字节。
图2是根据本公开的实施例的包含主机202和呈存储器装置206的形式的设备的计算系统200的框图。如本文中所使用,“设备”可以指但不限于各种结构或结构组合中的任一个,例如电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。此外,在实施例中,计算系统200可包含数个类似于存储器装置206的存储器装置。
在图2所示的实施例中,存储器装置206可包含具有存储器阵列201的存储器216。存储器阵列201可类似于先前结合图1描述的存储器阵列101。此外,在实施例中,存储器阵列201(例如,阵列201的子集或整个阵列201)可以是安全阵列(例如,保持处于控制下的存储器216的区域)。例如,存储在存储器阵列201中的数据可包含敏感(例如,非用户)数据,例如针对敏感应用要执行的主机固件和/或代码。尽管在图2中示出一个存储器阵列201,但是存储器216可包含任何数目个类似于存储器阵列201的存储器阵列。
如图2中所示,主机202可以通过接口204耦合到存储器装置206。主机202和存储器装置206可通过接口204通信(例如,发送命令和/或数据)。主机202和/或存储器装置206可以是计算装置、笔记本电脑、个人计算机、数码相机、数字记录和重放装置、移动电话、PDA、存储卡读卡器、接口集线器或支持物联网(IoT)的装置(例如,支持IoT 的汽车(例如,车辆和/或运输基础设施)装置或支持IoT的医疗(例如,可植入和/或健康监测)装置)、自动取款机(ATM),以及其它主机系统,或者可以是这些装置的部分,并且可包含存储器存取装置(例如,处理器)。所属领域的普通技术人员将了解,“处理器”可意指一或多个处理器,例如并行处理系统、数个协处理器等。
接口204可以呈标准化物理接口的形式。例如,当存储器装置206用于计算系统200中的信息存储时,接口204可以是串行高级技术附件(SATA)物理接口、外围组件互连高速(PCIe)物理接口、通用串行总线(USB)物理接口或小型计算机系统接口(SCSI),以及其它物理连接器和/或接口。但是,一般来说,接口204可提供用于在存储器装置206和具有接口204的兼容接收器的主机(例如,主机202)之间传递控制、地址、信息(例如,数据)和其它信号的接口。
存储器装置206包含控制器208,用于与主机202和存储器216(例如,存储器阵列201)通信。举例来说,控制器208可发送对存储器阵列201执行操作的命令,包含感测(例如,读取)、编程(例如,写入)、移动、和/或擦除数据的操作,以及其它操作。
控制器208可以包含在与存储器216相同的物理装置(例如,相同裸片)上。可替代地,控制器208可以包含在以通信方式耦合到包含存储器216的物理装置的单独物理装置上。在实施例中,控制器208的组件可以分散在多个物理装置中(例如,一些组件在与存储器相同的裸片上,一些组件在不同裸片、模块或板上)作为分布式控制器。
主机202可包含主机控制器(图2未示出),用于与存储器装置206通信。主机控制器可通过接口204向存储器装置206发送命令。主机控制器可与存储器装置206和/或存储器装置206上的控制器208通信,以读取、写入和/或擦除数据,以及其它操作。此外,在实施例中,主机202可以是具有IoT通信能力的支持IoT的装置,如本文中先前所描述。
存储器装置206上的控制器208和/或主机202上的主机控制器可包含控制电路系统和/或逻辑(例如,硬件和固件)。在实施例中,存储器装置206上的控制器208和/或主机202上的主机控制器可以是耦合到包含物理接口的印刷电路板的专用集成电路(ASIC)。并且,存储器装置206和/或主机202可包含易失性和/或非易失性存储器的缓冲器和数个寄存器(例如,寄存器214)。
例如,如图2中所示,存储器装置可包含电路系统210。在图2中所示的实施例中,电路系统210包含在控制器208中。但是,本公开的实施例不受如此限制。举例来说,在实施例中,电路系统210可以包含在存储器216中(例如,与存储器216相同的裸片上)(例如,而不是在控制器208中)。举例来说,电路系统210可包括硬件、固件和/或软件。
计算系统200(例如,主机202和存储器装置206)可使用反重放(例如,新鲜度)机制来利用代码的运行时代码执行验证,以确认可执行代码的一部分被执行。例如,电路系统210可监测存储在存储器装置206的安全阵列中的运行时可执行代码。如本文中所使用,验证代码(和/或例程)可包含和/或指代确保例程先前在存储器216上尚未被执行或跳过(例如,确保命令没有作为例如MITM重放攻击的攻击的一部分被欺诈性地重复、跳过和/或重复使用)。
所监测的运行时可执行代码可包含包括用于检查和/或验证包含在所监测的运行时可执行代码中的指令的真实性的运行时可执行代码的一部分的例程。例如,运行时可执行代码的所述部分可以是验证安全协议是否发生的例程的一部分。此例程可为重要的安全检查,且因此受电路系统210监测。在一些实例中,例程可执行为验证用户标识、计算系统200的组件、主机202的组件、软件许可证等的检查。当运行时可执行代码的所述部分执行时,计算系统200可验证例程是真实的,并且可以提供服务。计算系统200 的安全性可通过验证例程未被跳过而增强。
例如,主机202可生成包含反重放部分的表(结合图4详细论述),所述反重放部分在本文中可以称为新鲜度字段,用于要在存储器216(例如,在存储器阵列201)上执行的命令(例如,与其一起被包含)。表还可包含表示运行时可执行代码已执行的事件数量的发生字段、存储器装置206的安全阵列的开始地址和结束地址。开始地址指示要监测的运行时可执行代码的开始位置,结束地址指示运行时可执行代码的结束位置。表可包含用于MAC的字段,所述MAC可以被接收为所监测的运行时可执行代码已被执行的指示和/或接收到的MAC可以是所监测的运行时代码未能执行的指示(当相对于预期MAC 验证接收到的MAC时)。
例如,电路系统210可接收在计算装置(例如,主机202)的运行时期间执行的运行时可执行代码的一部分未能执行的指示,其中所述指示包含接收到的MAC。在此情况下,电路系统210可比较接收到的MAC与预期MAC,以确定接收到的MAC是欺诈性地生成的。预期MAC可包含来自存储器装置206在安全阵列201的开始地址由主机202 限定时编写的表的新鲜度字段的新鲜度值。响应于此确定,主机202可响应于运行时可执行代码的所述部分未能执行的指示而采取措施。
确切地说,例如,电路系统210可配置成在计算装置(例如,主机202)的运行时期间生成预期MAC;并在计算装置的运行时期间比较预期MAC与接收到的MAC,作为检查接收到的MAC的有效性的操作的部分。在此情况下,接收到的MAC匹配预期MAC 指示例程被实际执行。相反地,接收到的MAC和预期MAC具有不同值指示例程被跳过,主机可采取对策做出响应。例如,主机202可用报警、警告和/或制止提供运行时可执行代码所请求的服务等对策来做出响应。
每个所监测运行时可执行代码的开始地址是主机202使用经认证命令编写(例如,限定)的非易失性主机寄存器。所监测运行时可执行代码的结束地址是使用经认证命令编写的非易失性主机寄存器。电路系统210可配置成作为接收到的MAC的部分,接收安全阵列的开始地址和安全阵列的结束地址,其中运行时可执行代码的在开始地址和结束地址之间的部分是由电路系统210监测和验证的例程。
新鲜度字段可包含存储器216在包含于存储器216中的程序计数器(例如,单调计数器)达到例程的开始地址时编写的新鲜度值。在一些实例中,电路系统配置成接收新鲜度字段作为接收到的MAC的部分。可以包含发生字段,用来解释例程的执行次数。新鲜度字段和发生字段均为主机202只读字段。当例程被执行时,MAC可由存储器216在程序计数器达到结束地址的情况下计算。
如本文中将进一步论述,电路系统210可使用新鲜度值和数字签名副本生成预期MAC,并将所得预期MAC与生成的MAC比较,以确定例程是被实际执行还是被跳过。例如,电路系统210可配置成比较接收到的MAC与生成的MAC,其中当运行时可执行代码未能执行时,接收到的MAC和生成的MAC具有不同值。电路系统210确定运行时可执行代码未能执行可指示恶意用户可能正在进行侵入、攻击、错误和/或操控。类似地,发生字段可与预期发生比较,以确定例程是否被实际执行。
新鲜度字段可在主机202每次执行例程时变化。因此,新鲜度字段可用于验证命令是否被实际执行,因为每次新鲜度字段变化时,MAC会变化。另外,MAC可重新计算以确定预期MAC,其中预期MAC是使用签名副本(例如,秘密密钥的副本)生成的。举例来说,签名可以是使用不对称加密(例如,基于公钥和/或私钥)生成的数字签名,并且举例来说,可包括椭圆形曲线数字签名。作为额外实例,签名可使用对称加密(例如,基于主机202和存储器装置206之间共享的唯一秘密密钥)生成。秘密密钥可通过使用任何不对称协议(例如,迪菲-赫尔曼(Diffie-Hellman)算法协议)交换。在其它实例中,密钥可在安全环境(例如,工厂生产、安全制造,等等)中与主机202共享。结合图8-12进一步论述秘密密钥的生成和验证。与主机202相关联的签名可指示例程被主机202发出(例如,确认主机的标识),并且相应地可在命令的验证期间使用,如本文中将进一步描述。
图3A、3B和3C是根据本公开的实施例的运行时代码执行验证的实例流程图。尽管为了不模糊本公开的实例而在图3A、3B和3C中未示出,但是图3A、3B和3C可包含计算系统(例如,计算系统200)、存储器装置(例如,存储器装置206)、存储器(例如,存储器216)、阵列(例如,阵列201)、控制器(例如,控制器208)、电路系统(例如,电路系统210)、寄存器(例如,寄存器214)和主机(例如,主机202),所述主机经由接口(例如,接口204)连接到存储器装置。
图3A示出呈ATM形式的设备的安全协议的实例流程图。在320-1处,ATM可接收对服务332-1的请求。在320-1处,ATM可通过从实体接收提供服务332-1的请求而启动。因而,在322-1处,ATM可通过限定328-1处的验证所需的ATM反馈326来设置对服务的请求。
例如,328-1处的验证可基于ATM监测存储在存储器装置的安全阵列中的运行时可执行代码309。322-1处的设置包含通过主机限定运行时可执行代码的一部分是标识和支付检查。在此情况下,所监测的运行时可执行代码309是支付服务检查例程,其为验证请求和支付是真实的安全例程。因而,主机可验证所监测的运行时可执行代码309被实际执行且未被跳过,如由333-1处的箭头所指示。
例如,通过包含在ATM中的电路系统接收运行时可执行代码已执行的指示可提示电路系统验证所监测的运行时可执行代码309已被实际执行且未被跳过。在此情况下,所述指示可以是接收到的MAC,指示所监测的运行时可执行代码309已被执行。为了在328-1处验证在标识和支付检查中已考虑到ATM反馈326,电路系统可使用秘密密钥的副本重新计算预期MAC和/或比较预期发生值与接收到的发生值以确定所监测的运行时可执行代码309是否被实际执行。
例如,确定所监测的运行时可执行代码309的一部分未能执行可基于指示,其中所述指示包括接收到的MAC和接收到的表示运行时可执行代码已执行的事件数量的发生中的至少一个。在此情况下,接收到的MAC可能不匹配已使用私钥的副本重新计算的所生成(重新计算)预期MAC。在此情况下,不匹配的MAC指示所监测的运行时可执行代码309被跳过,如333-1处的箭头所示。确定生成的MAC和预期MAC不匹配可指示例程已被跳过,且ATM正被侵入或攻击,以在不验证支付或标识的情况下获得服务 332-1。因而,主机响应于确定所监测的运行时可执行代码309未能执行而生成对策可避免代价高昂的安全性破坏。在一些实例中,对策是响应于确定所监测的运行时可执行代码309的所述部分未能执行而中止运行时可执行代码。
如所提到,主机可基于生成和预期的发生而确定所监测的运行时可执行代码309是否被执行。例如,电路系统可接收发生值作为例程已被执行的指示。接收到的发生可以是指示所监测的运行时可执行代码309已被执行的次数的值。确切地说,发生值可在每次所监测的运行时可执行代码309执行时改变,且本文中所描述的表可进行更新。因而,主机可识别预期发生并将其与接收到的发生比较。预期发生和接收到的发生具有相同值指示所监测的运行时可执行代码309被实际执行,且表的发生字段可进行更新。
例如,可通过由电路系统比较接收到的发生与预期发生并响应于确定预期发生和接收到的发生相同而更新所监测的运行时可执行代码309已执行的事件数量来将表更新成反映代码执行的发生次数。但是,如果预期发生和接收到的发生值不匹配,那么所监测的运行时可执行代码309可能已被跳过,且主机可执行对策以免在欺诈情况下提供服务 332-1。
图3B示出呈计算机装置形式的设备的安全协议的实例流程图。在320-2处,计算装置可接收对服务332-2的请求。在320-2处,计算装置可通过从实体接收提供服务332-2 的请求而启动。因而,在322-2处,计算装置可通过限定328-2处的验证所需的设置322-2 来设置对服务332-2的请求。在由图3B示出的实例中,设置322-2可以是限定所监测的运行时可执行代码309的一部分,其为验证安装在计算装置上的软件是否真实、是否具有适当的许可证、是否来自受信任源等等的安全性例程。例如,主机确定运行时可执行代码的所述部分是软件许可证检查例程可避免安装损坏或恶意的软件。此例程可为避免安装可能会操纵计算装置的操作的软件的重要安全特征。
恶意攻击可能会试图跳过验证328-2,如333-2处的箭头所示。例如,在攻击期间,主机(和/或电路系统)可能会接收到MAC,此MAC似乎表明所监测的运行时可执行代码 309已被执行,并且可以提供服务332-2。如结合图3A所描述,主机和/或电路系统可比较接收到的MAC与生成(重新计算)的MAC,以确认所监测的运行时可执行代码309已被实际执行。类似地,主机和/或电路系统可比较接收到的发生值并将其与预期发生值比较,以确定所监测的运行时可执行代码309已被实际执行。基于这些确定,主机可以中止运行时代码的执行并避免提供服务332-2,或者主机可以确认所监测的运行时可执行代码309已被执行并提供服务332-2。
图3C示出呈装置(例如,车辆)的系统组件形式的设备的安全协议的实例流程图。在 320-3处,车辆可接收对服务332-3的请求。在320-3处,车辆可通过从实体接收提供服务332-3的请求而启动。因而,在322-3处,车辆可通过限定328-3处的验证的要求来设置对服务332-3的请求。在由图3C示出的实例中,验证328-3可以是软件验证,类似于结合图3B所描述的实例。在支持物联网(IoT)的装置和自主车辆的领域中,组件、硬件和软件的验证对于车辆安全来说至关重要。例如,所监测的运行时可执行代码309可包含反重放例程,用于检测运行时可执行代码309的所监测部分是否已执行。因而,重要的是验证安全性例程是否被实际执行,例如,为验证此类车辆中的各种组件是否被允许而编写的所监测运行时可执行代码309。
恶意攻击可能会试图跳过验证328-3,如333-3处的箭头所示。例如,在攻击过程中,主机(和/或电路系统)可能会接收到MAC,此MAC似乎表明所监测的运行时可执行代码309已被执行,并且可以提供服务332-3。如结合图3A和3B所描述,主机和/或电路系统可比较接收到的MAC与生成(重新计算)的MAC,以确认所监测的运行时可执行代码309已被实际执行。类似地,主机和/或电路系统可比较接收到的发生值并将其与预期发生值比较,以确定所监测的运行时可执行代码309已被实际执行。基于这些确定,主机可以中止运行时代码的执行并避免提供服务332-3,或者主机可以确认所监测的运行时可执行代码309已被执行并提供服务332-3。
图4示出根据本公开的实施例的用于运行时代码执行验证的实例表488。图4示出表488,其包含以下列:开始地址434、结束地址435、新鲜度字段437、发生字段439 和MAC字段440。图4所示的表488包含每一个所述字段的实例值,但是应理解,每个字段可包含不同于示出为实例的那些值的值。
图4所示的表488可存在于易失性或非易失性存储器上,并且表可以存储在存储器装置(例如,存储器装置206)上。开始地址434和结束地址435可由主机(例如,主机202) 使用经认证命令生成(例如,编写)。开始地址434和结束地址435可限定例程的运行时可执行代码(例如,所监测的运行时可执行代码309)的开始和结束位置。新鲜度437和发生439可在由开始地址434和结束地址435限定的运行时可执行代码执行时更新。
例如,安全性例程可以多次执行。主机可限定其中编写例程(例如,所监测的运行时可执行代码309)的开始地址434和结束地址435。在每次执行之后生成新的新鲜度437值,使得针对每次执行生成(例如,计算)唯一的MAC 440。在每次执行时,发生439的值也会改变。当例程执行时,生成MAC 440。计算系统(例如,计算系统200)的电路系统(例如,电路系统210)可使用秘密密钥的副本生成预期MAC,以验证代码是否被实际执行。因为MAC是基于与主机共享的秘密密钥,所以预期MAC应该匹配由例程的执行生成的所生成MAC。恶意用户不会存取秘密密钥,因此,如果例程被跳过,那么表 488中可能会生成不匹配由主机生成以验证例程执行的预期MAC的欺诈性MAC。
下面给出了针对为运行时代码执行验证而监测的例程创建的伪代码的实例:
Figure GDA0003848669300000121
Figure GDA0003848669300000131
其中开始地址434S_addr0是1f66,结束地址435E_addr0是1f9c,开始地址 434(S_addr0是1f66)和结束地址435(E_addr0是1f9c)之间的运行时可执行代码是为执行而监测的例程。在一些实例中,运行时可执行代码可具有多个结束点,因此表可包含一个开始地址434与多个结束地址435。
例如,在运行时可执行代码包含多个结束地址的情况下,表488可包含用于反映多个结束地址的多个寄存器。例如,第一开始地址434S_addr0是1f66,对应的结束地址 435E_addr0是1f9c。第二开始地址434S_addr1是1f66,结束地址435E_addr1是1f8c。换句话说,例程可包含具有多个结束地址435和相同开始地址434的运行时可执行代码。
新鲜度437在由图4示出的表中编写为MTC/NONCE/等,新鲜度437字段可以利用随机数生成器更新以产生随机数(NONCE),且MTC可以是程序计数器,例如单原子计数器(MTC)。在例程(例如,所监测运行时可执行代码)的执行期间,新鲜度437更新为在生成MAC440时要串接的唯一值。
在使用用于参考的上述伪代码的实例例程执行期间,程序计数器(例如,单原子计数器)等于表中的开始地址434。当此情况发生时,新鲜度435值可以临时存储在表中。当程序计数器达到结束地址435时,发生439字段更新,针对下一执行生成新的新鲜度,并计算MAC 440。
确切地说,当例程被真实地执行时,生成的(预期)MAC可通过对以下值进行散列来生成:
MAC=HMAC SHA256[秘密密钥,(开始地址|Instr1|结束地址|Instr2|新鲜度|发生]。在此情况下,使用用于参考的上述伪代码,其中开始地址434是1f66,Instr1是8c502,结束地址435是1f9c,Instr2是04000,且新鲜度439是0000000F,发生439是0001,可以如下生成MAC:
MAC=HMAC SHA256[秘密密钥,(1f668c5021f9c040000000000F0001)]。
在恶意实体的错误、攻击和/或操纵期间,接收到的MAC可在图4所示的表488中表示。可将接收到的MAC与预期MAC进行比较,以确定例程是否被实际执行。欺诈生成的MAC将不会被计算,包含秘密密钥、新鲜度或正确的发生中的至少一个。因此,接收到的MAC不匹配预期MAC可指示例程被跳过。类似地,接收到的发生和预期发生具有不同值指示例程被跳过,并且黑客可能正试图欺诈性地接收服务(例如,服务 332-1、332-2、332-3)。
在一些实例中,如表488所示的地址对不一定表示要监测的整个例程的开始和结束,但可以是例程中的代码部分或子集。在一些实例中,运行时代码执行的加密验证与正在验证的例程的复杂程度无关。换句话说,运行时代码执行验证可以继续生成预期MAC,以验证代码的执行,而不管被验证例程的复杂性如何。例如,要验证的例程可能是复杂的,使得此例程可包含例程中可能容易被黑客在攻击期间跳过的代码分支。这样,例程内的代码分支可包含在表488中,其中地址对表示例程内的分支。因而,可以在运行时期间监测分支执行,并且可以验证其执行。
图5示出根据本公开的实施例的运行时代码执行验证的实例流程图。在522处,主机(例如,主机202)可设置存储器装置(例如,存储器装置206)。例如,主机可限定数据和固件内部的程序,限定安全阵列,计算黄金摘要,并限定要监测的例程(或固件部分)。确切地说,在541处,主机可通过将开始地址(例如,开始地址434)和结束地址(例如,结束地址435)写入到表(例如,表488)中来限定安全阵列。编写的开始地址和结束地址指示它们之间的运行时可执行代码要被监测,使得主机和/或电路系统(例如,电路系统 210)可验证代码是否被实际执行。
在543处,代码的执行可在装置(例如,计算系统200)使用时或在每次装置功率循环/重设时开始,在此开始期间,在543处,检查固件的完整性。例如,在544处,将黄金散列与固件比较以确认固件是真实的。如果固件的散列不匹配黄金摘要(545处的“否”),那么在546处,错误或黑客攻击可能正在发生,且主机可在547处采取措施,例如对策(例如,警告、中止代码执行等)。例如,电路系统可配置成响应于确定黄金散列和安全阵列(例如,阵列201)的散列数据不匹配而生成对策。
但是,如果黄金散列和安全阵列的散列数据匹配(548处的“是”),那么主机可在549处执行所监测代码。例如,主机可运行所存储的固件(例如,例程)或所存储的固件的一部分作为子例程或子功能。在执行结束时或在执行运行时期间,主机可验证表的内容,以便检查例程是否被实际执行(例如,发生)及MAC值是否被接收,这些可统称为真实性的凭证。
图6示出根据本公开的实施例的运行时代码执行验证的实例流程图。在649处,主机(例如,主机202)可执行所监测的运行时可执行代码(例如,所监测的运行时可执行代码309)作为子功能,以验证例程是否被实际执行。例如,在650处,电路系统(例如,电路系统210)可检查例程是否被执行。在660处,电路系统可响应于在存储器(例如,存储器216)上限定的运行时可执行代码的执行而接收MAC。例如,在660处,电路系统可通过检查表(例如,表488)中的MAC字段(例如,MAC 440字段)确定接收到的MAC。
在686处,电路系统可确定具有秘密密钥的预期MAC值。例如,电路系统可使用与主机共享的秘密密钥的副本生成(例如,计算)预期MAC值。秘密密钥可以是使用不对称加密生成的数字签名,结合图8-12进一步论述其生成和验证。在另一实例中,预期 MAC可包含结合图13进一步论述的使用对称加密生成的数字签名(例如,秘密密钥)。如结合图4所提到,预期MAC包含运行时可执行代码的开始地址、结束地址和新鲜度。因为MAC是基于秘密密钥并生成有新鲜度,所以如果例程被实际执行,那么接收到的 MAC和预期MAC在比较时应该是相同的值。
例如,电路系统可比较接收到的MAC(来自表)与预期MAC(重新计算),以检查在存储器上限定的运行时可执行代码的一部分是否被执行。因此,在693处,电路系统可确定预期MAC和接收到的MAC是否匹配(具有相同值)。如果预期MAC和接收到的MAC 匹配(648处的“是”),那么在695处,所监测的运行时可执行代码(例如,例程)已被执行。当接收到的MAC和预期MAC不匹配(645处的“否”)时,在646处,电路系统可确定黑客可能已经跳过例程的执行。因而,主机可基于预期MAC和接收到的MAC的比较而采取措施。
例如,在647处,主机可响应于确定运行时可执行代码的所述部分未能执行而采取呈对策形式的措施。换句话说,安全例程被跳过,因此主机可采取中止提供服务(例如,服务332-1、332-2、332-3)的措施。主机所采取的措施可以是响应于确定例程未执行的服务中止警告。
图7示出根据本公开的实施例的运行时代码执行验证的实例流程图。电路系统(例如,电路系统210)可监测由主机(例如,主机202)限定的存储在存储器装置(例如,存储器装置206)的安全阵列(例如,阵列201)中的运行时可执行代码。电路系统可接收运行时可执行代码已执行的指示。响应于接收到的指示,电路系统可验证所监测的运行时可执行代码(例如,所监测的运行时可执行代码309)已被实际执行。
例如,在749处,主机可执行所监测的运行时可执行代码(例如,例程)作为子功能,以验证例程是否被实际执行。例如,在750处,电路系统可检查例程是否已被执行。电路系统可基于指示而确定运行时可执行代码(例程)的一部分是否未能执行。所监测的运行时可执行代码已被执行的指示可以是表(例如,表488)中的发生值。例如,在797处,电路系统可响应于在存储器(例如,存储器216)上限定的运行时可执行代码的执行而确定接收到的发生。例如,在797处,电路系统可通过检查表中的发生字段(例如,发生 439字段)而确定接收到的发生。电路系统还可验证新鲜度值,以避免先前执行结果被用作此当前检查结果的情况。
在799处,电路系统可确定预期发生,其中预期发生是运行时可执行代码已执行的事件数量的表示。在730处,电路系统可确定预期发生和接收到的发生是否匹配。例如,如果预期发生和接收到的发生匹配(748处的“是”),那么在795处,电路系统可验证所监测的运行时可执行代码已被执行且未被跳过。
但是,如果预期发生和接收到的发生不匹配(745处的“否”),那么在746处,电路系统可验证所监测的运行时可执行代码未执行,且例程被跳过。例如,电路系统可比较接收到的发生与预期发生,其中接收到的发生和预期发生的值差指示运行时可执行代码的所述部分未能执行。响应于此确定,电路系统可在747处生成对策。
例如,电路系统配置成响应于比较指示运行时可执行代码的所述部分未能执行而生成对策。在一些实例中,对策可以是配置成响应于确定运行时可执行代码的特定部分未能执行和/或被跳过而生成警告的电路系统。
图8是根据本公开的实施例的包含主机802和存储器装置806的实例系统的框图。例如,主机802和存储器装置806可分别为先前结合图2描述的主机202和存储器装置 206。
计算装置可以使用层分阶段启动,其中每一层认证和负载后续层并在每一层处提供越来越精密的运行时间服务。层可由先前层服务,并服务后续层,由此创建在下部层上构建且服务高阶层的层的互连网络。如图8中所示,层0(“L0”)851和层1(“L1”)853 在主机内。层0 851可向层1 853提供固件衍生秘密(FDS)密钥852。FDS密钥852可描述层1 853的代码的标识和其它安全性相关数据。在实例中,特定协议(例如,稳健物联网(RIOT)核心协议)可使用FDS 852来验证它负载的层1 853的代码。在实例中,特定协议可包含装置标识组合引擎(DICE)和/或RIOT核心协议。作为实例,FDS可包含层1固件图像自身、加密识别经授权层1固件的表示、在安全启动实施方案的背景下经签名固件的固件版本号,和/或装置的安全性关键配置设置。装置秘密858可用于形成FDS 852 并存储在主机802的存储器中。
主机可向存储器装置806传输数据,如箭头854所示。所传输的数据可包含公共的外部标识、凭证(例如,外部标识凭证)和/或外部公钥。存储器装置806的层2(“L2”)855 可接收所传输的数据,并在操作系统(“OS”)857的操作中在第一应用859-1和第二应用859-2上执行所述数据。
在实例操作中,主机802可读取装置秘密858,对层1 853的标识进行散列,并执行计算,包含:
KL1=KDF[Fs(s),散列(“不可变信息”)]
其中KL1是外部公钥,KDF(例如,美国国家标准与技术研究所(NIST)特定公开 800-108中限定的KDF)是密钥导出函数(例如,HMAC-SHA256),且Fs(s)是装置秘密858。可通过执行以下计算确定FDS 852:
FDS=HMAC-SHA256[Fs(s),SHA256(“不可变信息”)]
同样地,存储器装置806可向主机802传输数据,如箭头856所示。
图9是根据本公开的实施例的用于确定数个参数的实例过程的框图。图9是包含外部公共标识、外部凭证和外部公钥的参数的确定的实例,这些参数之后发送到存储器装置(例如,图8中的806)的层2(例如,层2 855),由箭头954指示。图9中的层0(“L0”)951 对应于图8中的层0 851,同样地,FDS 952对应于FDS 852,层1 953对应于层1 853,并且箭头954和956分别对应于箭头854和856。
FDS 952从层0 951发送到层1 953,并且供不对称ID生成器961用于生成公共标识(“IDlk公共”)965和私有标识967。在简称“IDlk公共”中,“lk”指示层k(在此实例中,层1),且“公共”指示标识是开放共享的。公共标识965示出为由延伸到主机的层1 953 的右侧和外部的箭头共享。生成的私有标识967用作加密器973的密钥输入。加密器973 可以是用于对数据进行加密的任何处理器、计算装置等。
主机的层1 953可包含不对称密钥生成器963。在至少一个实例中,随机数生成器(RND)936可任选地向不对称密钥生成器963输入随机数。不对称密钥生成器963可生成与主机(例如图8中的主机802)相关联的公钥(“KLk公共”)969(被称为外部公钥)和私钥 (“KLK私有”)971(被称为外部私钥)。外部公钥969可以是加密器973的输入(作为“数据”。加密器973可使用外部私有标识967和外部公钥969的输入生成结果K'975。外部私钥 971和结果K'975可输入到额外加密器977中,产生输出K”979。输出K”979是传输到层2(图8的855)的外部凭证(“IDL1凭证”)981。外部凭证981可提供验证和/或认证从装置发送的数据的来源的能力。作为实例,通过验证凭证,从主机发送的数据可与主机的标识相关联,如将进一步与图11相关联地描述。此外,外部公钥(“KL1公钥”)983可被传输到层2。因此,主机的公共标识965、凭证981和外部公钥983可被传输到存储器装置的层2。
图10是根据本公开的实施例的用于确定数个参数的实例过程的框图。图10示出存储器装置(例如,图8中的存储器装置806)的层2 1055生成装置标识(“IDL2公共”)1066、装置凭证(“IDL2凭证”)1082和装置公钥(“KL2公钥”)1084。
如图10中所描述,从主机的层1传输到存储器装置的层2 1055的外部公钥(“KL1公钥”)1083供存储器装置的不对称ID生成器1062用于生成存储器装置的公共标识(“IDlk公共”)1066和私有标识1068。在简称“IDlk公共”中,“lk”指示层k(在此实例中,层2),且“公共”指示标识是开放共享的。公共标识1066示出为由延伸到层2 1055的右侧和外部的箭头共享。生成的私有标识1068用作加密器1074的密钥输入。
如图10中所示,外部凭证1081和外部标识1065以及外部公钥1083供凭证验证器1024使用。凭证验证器1024可验证从主机(例如,主机802)接收到的外部凭证1081,并响应于外部凭证1081被验证或未被验证,确定是接受还是舍弃从主机接收到的数据。结合图11描述验证外部凭证1081的其它细节。
存储器装置的层2 1055可包含不对称密钥生成器1064。在至少一个实例中,随机数生成器(RND)1038可任选地向不对称密钥生成器1064输入随机数。不对称密钥生成器1064可生成与存储器装置(例如图8中的存储器装置806)相关联的公钥(“KLk公共”)1070(被称为装置公钥)和私钥(“KLK私有”)1072(被称为装置私钥)。装置公钥1070可以是加密器1074的输入(作为“数据”)。加密器1074可使用装置私有标识1068和装置公钥1070的输入生成结果K'1076。装置私钥1072和结果K'1076可输入到额外加密器 1078中,产生输出K”1080。输出K”1080是传输回到层1(图8的853)的装置凭证(“IDL2凭证”)1082。装置凭证1082可提供验证和/或认证从装置发送的数据的来源的能力。作为实例,通过验证凭证,从存储器装置发送的数据可与存储器装置的标识相关联,如将进一步与图11相关联地描述。此外,装置公钥(“KL2公钥”)1084可被传输到层1。因此,存储器装置的公共标识1066、凭证1082和装置公钥1084可被传输到主机的层1。
在实例中,响应于主机从存储器装置接收到公钥,主机可使用装置公钥对要发送到存储器装置的数据进行加密。反过来,存储器装置可使用外部公钥对要发送到主机的数据进行加密。响应于存储器装置接收到使用装置公钥加密的数据,存储器装置可使用其自身的装置私钥对数据进行解密。同样地,响应于主机接收到使用外部公钥加密的数据,主机可使用其自身的外部私钥对数据进行解密。因为装置私钥不与存储器装置之外的另一装置共享且外部私钥不与主机之外的另一装置共享,所以发送到存储器装置和主机的数据保持安全。
图11是根据本公开的实施例的用于验证凭证的实例过程的框图。在图11所示的实例中,公钥1183、凭证1181和公共标识1165从主机(例如,从图8中的主机802的层1 853)提供。凭证1181和外部公钥1183的数据可用作解密器1185的输入。解密器1185 可以是用于对数据进行解密的任何处理器、计算装置等。凭证1181和外部公钥1183的解密结果以及公共标识可用作次级解密器1187的输入,并产生输出。外部公钥1183和解密器1187的输出可通过比较指示凭证是否被验证,如1189处所示,并产生是或否1191 作为输出。响应于凭证被验证,从经验证装置接收到的数据可以被接受、解密和处理。响应于凭证未被验证,从经验证装置接收到的数据可以被舍弃、移除和/或忽略。通过这种方式,发送违法数据的违法装置可以被检测到并被避开。作为实例,发送待处理数据的黑客可以被识别出并且黑客数据没有被处理。
图12是根据本公开的实施例的用于验证签名的实例过程的框图。在装置正在发送可经验证以免后续抵赖的数据的情况下,可生成签名,并将其与数据一起发送。作为实例,第一装置可以进行第二装置请求,一旦第二装置执行请求,第一装置就可以指示第一装置从未作出此类请求。例如使用签名的反抵赖方法可以避免第一装置的抵赖,并确保第二装置可以在没有后续困难的情况下执行所请求的任务。
主机1202(例如,图2中的主机202)可向存储器装置1206(例如,图2中的存储器装置206)发送数据1290。主机1202可在1294处使用装置私钥1271生成签名1296。签名 1296可被传输到存储器装置1206。存储器装置1206可在1298处使用数据1292和先前接收到的外部公钥1269验证签名。通过这种方式,通过使用私钥对签名进行加密并使用公钥对签名进行解密来进行签名验证。通过这种方式,用于生成唯一签名的私钥可保持为发送签名的装置所私有的,同时允许接收装置能够使用发送装置的公钥对签名进行解密以供验证。这与数据的加密/解密大不相同,其中数据通过发送装置使用接收装置的公钥来加密,并通过接收装置使用接收器的私钥来解密。在至少一个实例中,装置可通过使用内部加密过程(例如,椭圆曲线数字签名(ECDSA)或类似过程来验证数字签名。
图13是根据本公开的实施例的实例存储器装置1306的框图。例如,存储器装置1306 可以是先前结合图2描述的存储器装置206。
如图13中所示,存储器装置1306可包含数个存储器阵列1301-1到1301-7。存储器阵列1301-1到1301-7可以类似于先前结合图1描述的存储器阵列101。此外,在图 13中所示的实例中,存储器阵列1301-3是安全阵列,存储器阵列1301-6的子集1311 包括安全阵列,并且存储器阵列1301-7的子集1313和1315包括安全阵列。举例来说,子集1311、1313和1315可各自包含4千字节的数据。但是,本公开的实施例不限于特定数目的或特定布置的存储器阵列或安全阵列。
如图13中所示,存储器装置1306可包含修复(例如,恢复)块1317。修复块1317 可在可在存储器装置1306的操作期间发生错误(例如,不匹配)的情况下用作数据的来源。修复块1317可在存储器装置1306的可通过主机寻址的区域外部。
如图13中所示,存储器装置1306可包含串行外围接口(SPI)1304和控制器1308。存储器装置1306可使用SPI 1304和控制器1308来与主机和存储器阵列1301-1到1301-7 通信,如本文中先前所描述(例如,结合图2)。
如图13中所示,存储器装置1306可包含用于管理存储器装置1306的安全性的安全寄存器1319。例如,安全寄存器1319可配置给应用程序控制器并在外部与应用程序控制器通信。此外,安全寄存器1319可以通过认证命令来修改。
如图13中所示,存储器装置1306可包含密钥1321。举例来说,存储器装置1306 可包含八个不同槽来存储密钥,例如根密钥、DICE-RIOT密钥和/或其它外部会话密钥。
如图13中所示,存储器装置1306可包含电子可擦除可编程只读存储器 (EEPROM)1323。EEPROM 1323可提供可用于主机的安全非易失性区域,其中可擦除和编程个别字节的数据。
如图13中所示,存储器装置1306可包含计数器(例如,单调计数器)1325。举例来说,存储器装置1306可包含六个不同的单调计数器,其中两个可供存储器装置1306用于经认证命令,并且其中四个可供主机使用。
如图13中所示,存储器装置1306可包含SHA-256加密散列函数1327和/或 HMAC-SHA256加密散列函数1329。SHA-256加密散列函数1327和/或HMAC-SHA256 加密散列函数1329可供存储器装置1306用于生成加密散列,例如,本文先前所描述的命令的加密散列和/或用于验证存储在存储器阵列1301-1到1301-7中的数据的黄金散列。此外,存储器装置1306可支持DICE-RIOT 1331的L0和L1。
尽管已在本文中说明并描述了具体实施例,但所属领域的一般技术人员应了解,经计算以实现相同结果的布置可取代所示的具体实施例。本公开意在涵盖本公开的数个实施例的调适或变化。应理解,以上描述是以说明方式而非限制方式进行的。在查阅以上描述后,以上实施例和本文未具体描述的其它实施例的组合对于所属领域的技术人员来说将是显而易见的。本公开的数个实施例的范围包含其中使用上述结构和方法的其它应用。因此,本公开的数个实施例的范围应当参考所附权利要求书连同此类权利要求有权享有的等效物的完整范围来确定。
在前述具体实施方式中,出于简化本公开的目的而将一些特征一并归到单个实施例中。本公开的这一方法不应被理解为反映本公开的所公开实施例必须使用比每个权利要求中明确陈述的特征更多的特征的意图。相反,如所附权利要求书所反映,本发明主题在于单个所公开实施例的不到全部的特征。因此,所附权利要求书特此并入于具体实施方式中,其中每项权利要求就其自身而言作为单独实施例。

Claims (26)

1.一种设备,其包括:
存储器装置;以及
电路系统,其配置成:
监测存储在所述存储器装置的安全阵列中的包含关联于将被执行的命令的安全性例程的运行时可执行代码;
接收在计算装置的运行时期间执行的所述运行时可执行代码的一部分未能执行的指示,其中所述指示包含接收到的消息认证码(MAC),其包含作为所述接收到的MAC的部分的新鲜度字段和发生字段,其中所述新鲜度字段包含程序计数器达到所述安全性例程的开始地址时编写的新鲜度值,且所述发生字段表示所述运行时可执行代码已执行的事件数量,所述开始地址和结束地址在所述安全性例程的所述安全阵列中,且其中所述新鲜度字段和所述发生字段随所述安全性例程的每个执行而更新;
针对所述运行时可执行代码生成包含关联于将被执行的所述命令的所述安全性例程的预期的重新计算的MAC,每当所述运行时可执行代码被执行时使用经更新的新鲜度字段和发生字段;
比较所述接收到的MAC与所述预期的MAC;且
响应于确定所述运行时可执行代码的所述部分未能执行之后的所述指示,采取措施。
2.根据权利要求1所述的设备,其中所述电路系统进一步配置成比较所述接收到的MAC与所述生成的MAC以检测何时所述接收到的MAC和所述生成的MAC具有不同值,其指示所述运行时可执行代码的所述安全性例程未能执行。
3.根据权利要求1所述的设备,其中所述电路系统进一步配置成响应于确定所述运行时可执行代码的所述部分未能执行而生成警告。
4.根据权利要求1所述的设备,其中所述电路系统进一步配置成:
使用不对称加密来针对所述运行时可执行代码生成包含关联于将被执行的所述命令的所述安全性例程的所述预期的重新计算的MAC。
5.根据权利要求1所述的设备,其中所述电路系统进一步配置成,作为所述接收到的MAC的部分,接收所述安全阵列的开始地址和所述安全阵列的结束地址。
6.根据权利要求1所述的设备,其中所述电路系统进一步配置成:
使用对称加密以及所述存储器装置与使用不对称协议的主机之间共享的唯一秘密密钥来针对所述运行时可执行代码生成包含关联于将被执行的所述命令的所述安全性例程的所述预期的重新计算的MAC。
7.根据权利要求1所述的设备,其中所述电路系统进一步配置成接收表示所述运行时可执行代码已执行的事件数量的发生。
8.根据权利要求1所述的设备,其中所述运行时可执行代码的所述部分是验证安全协议是否发生的例程的部分。
9.根据权利要求1所述的设备,其中所述电路系统进一步配置成生成包括秘密密钥的预期的MAC,其中所述秘密密钥对应于所述运行时可执行代码的所述部分。
10.一种设备,其包括:
存储器装置;以及
电路系统,其配置成:
监测存储在由主机限定的所述存储器装置的安全阵列中的运行时可执行代码;
接收包含关联于命令的安全性例程的所述运行时可执行代码已执行的指示;
通过以下步骤基于所述指示确定所述运行时可执行代码的一部分是否未能执行,其中所述指示包括接收到的消息认证码(MAC)及接收到的表示所述运行时可执行代码已执行的事件数量的发生;
针对所述运行时可执行代码生成包含关联于将被执行的命令的所述安全性例程的预期的重新计算的MAC,每当所述运行时可执行代码被执行时使用经更新的新鲜度字段和发生字段;以及
比较所述接收到的MAC与所述预期的MAC以及所述接收到的发生与预期发生,其中所述预期的MAC包含当程序计数器达到由所述主机限定的所述安全性例程的开始地址时由所述存储器装置编写的新鲜度值以及表示所述运行时可执行代码已执行的所述事件数量的所述接收到的发生字段,所述开始地址和结束地址在所述安全阵列中,且其中所述新鲜度字段和所述发生字段随所述安全性例程的每个执行而更新,且其中所述接收到的MAC和所述预期的MAC以及所述接收到的发生和所述预期发生的值差指示运行时可执行代码的所述部分未能执行。
11.根据权利要求10所述的设备,其中所述电路系统配置成响应于比较指示运行时可执行代码的所述部分未能执行而生成对策。
12.根据权利要求11所述的设备,其中所述对策是响应于确定所述运行时可执行代码的所述部分未能执行而中止所述运行时可执行代码。
13.一种系统,其包括:
主机;以及
存储器装置,其耦合到所述主机;
其中所述主机配置成:
在所述存储器上限定运行时可执行代码的开始地址和包含关联于将被执行的命令的安全性例程的所述运行时可执行代码的结束地址;
响应于在所述存储器上限定的包含关联于将被执行的所述命令的所述安全性例程的所述运行时可执行代码的执行,接收消息认证码(MAC);
针对所述运行时可执行代码生成包含关联于将被执行的所述命令的所述安全性例程的预期的重新计算的MAC,每当所述运行时可执行代码被执行时使用经更新的新鲜度字段和发生字段;
比较接收到的MAC与预期的MAC,以检查在所述存储器上限定的所述运行时可执行代码的一部分是否被执行,其中所述预期的MAC包含具有当程序计数器达到所述安全性例程的经限定的所述开始地址时而编写的新鲜度值的新鲜度字段;
识别表示所述运行时可执行代码的所述部分已执行的事件数量、所述安全性例程的经限定的所述开始地址和结束地址的发生,其中所述新鲜度字段和所述发生字段随所述安全性例程的每个执行而更新;以及
基于所述预期的MAC、所述接收到的MAC和所识别的发生的比较,采取措施。
14.根据权利要求13所述的系统,其中所述措施是响应于确定所述运行时可执行代码的所述部分未能执行的对策。
15.根据权利要求13所述的系统,其中所述措施是响应于确定所述运行时可执行代码的所述部分未能执行的经产生的警告。
16.根据权利要求13所述的系统,其中所述预期的MAC包含使用不对称加密生成的数字签名。
17.根据权利要求13所述的系统,其中使用对称加密生成所述预期的MAC。
18.一种方法,其包括:
监测存储在存储器装置的安全阵列中的包含关联于将被执行的命令的安全性例程的运行时可执行代码;
接收包含关联于将被执行的所述命令的所述安全性例程的所述运行时可执行代码已执行的指示;
基于所述指示确定所述运行时可执行代码的一部分未能执行,其中所述指示包括包含具有当程序计数器达到所述安全性例程的开始地址时而编写的新鲜度值的新鲜度字段的接收到的消息认证码(MAC)以及接收到的表示所述运行时可执行代码已执行的事件数量的发生中的至少一个,所述开始地址和结束地址在所述安全阵列中,且其中所述新鲜度字段和发生字段随所述安全性例程的每个执行而更新;以及
响应于确定运行时可执行代码的所述部分未能执行而生成对策。
19.根据权利要求18所述的方法,其中确定运行时可执行代码的所述部分进一步包括确定所述运行时可执行代码的所述部分是软件许可证检查例程。
20.根据权利要求18所述的方法,其中运行时可执行代码的所述部分进一步包括确定运行时可执行代码的所述部分是支付服务检查例程。
21.根据权利要求18所述的方法,其中确定运行时可执行代码的所述部分进一步包括确定运行时可执行代码的所述部分是检查主机的系统组件是否真实的例程。
22.根据权利要求18所述的方法,其中确定运行时可执行代码的所述部分进一步包括确定运行时可执行代码的所述部分是检测所述运行时可执行代码是否已执行的反重放例程。
23.根据权利要求18所述的方法,其进一步包括:
比较所述接收到的发生与预期发生;以及
响应于确定所述预期发生和所述接收到的发生相同,更新所述运行时可执行代码已执行的所述事件数量。
24.根据权利要求18所述的方法,其进一步包括针对具有椭圆曲线的所述接收到的MAC来生成数字签名。
25.根据权利要求18所述的方法,其进一步包括使用对称加密针对所述接收到的MAC来生成数字签名。
26.根据权利要求18所述的方法,其进一步包括使用迪菲-赫尔曼协议针对所述接收到的MAC来生成数字签名。
CN202080023850.7A 2019-03-25 2020-03-20 运行时代码执行验证方法、设备及系统 Active CN113632084B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/362,741 2019-03-25
US16/362,741 US11263308B2 (en) 2019-03-25 2019-03-25 Run-time code execution validation
PCT/US2020/023843 WO2020198001A1 (en) 2019-03-25 2020-03-20 Run-time code execution validation

Publications (2)

Publication Number Publication Date
CN113632084A CN113632084A (zh) 2021-11-09
CN113632084B true CN113632084B (zh) 2023-01-03

Family

ID=72604261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080023850.7A Active CN113632084B (zh) 2019-03-25 2020-03-20 运行时代码执行验证方法、设备及系统

Country Status (6)

Country Link
US (2) US11263308B2 (zh)
EP (1) EP3948619A4 (zh)
JP (1) JP2022527069A (zh)
KR (1) KR20210132736A (zh)
CN (1) CN113632084B (zh)
WO (1) WO2020198001A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113728320A (zh) * 2019-07-29 2021-11-30 慧与发展有限责任合伙企业 用于产品设备的接口控制器
KR20210145935A (ko) * 2020-05-26 2021-12-03 라인플러스 주식회사 Api 정보 군집화를 통한 후킹 판단 방법 및 그 시스템
US20230129469A1 (en) * 2021-10-22 2023-04-27 Sap Se Replication management system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101978377A (zh) * 2008-02-07 2011-02-16 阿纳洛格装置公司 用于控制受保护操作模式期间的系统访问的方法和装置
CN103583061A (zh) * 2011-06-10 2014-02-12 皇家飞利浦有限公司 网络中的恶意攻击的避免
US20150032951A1 (en) * 2004-04-08 2015-01-29 Texas Instruments Incorporated Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices
US9177153B1 (en) * 2005-10-07 2015-11-03 Carnegie Mellon University Verifying integrity and guaranteeing execution of code on untrusted computer platform
CN107085675A (zh) * 2016-02-16 2017-08-22 爱特梅尔公司 受控安全代码验证

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
EP1076279A1 (en) * 1999-08-13 2001-02-14 Hewlett-Packard Company Computer platforms and their methods of operation
US6915418B2 (en) * 2001-03-16 2005-07-05 Phoenix Technologies Ltd. Interrupt 21h ROM client loader and payload delivery method
US20030120923A1 (en) * 2001-12-21 2003-06-26 Avaya Technology Corp. Secure data authentication apparatus
US7392384B2 (en) 2002-06-28 2008-06-24 Hewlett-Packard Development Company, L.P. Method and system for secure storage, transmission and control of cryptographic keys
US8200961B2 (en) 2006-11-19 2012-06-12 Igware, Inc. Securing a flash memory block in a secure device system and method
US8190878B2 (en) * 2007-03-23 2012-05-29 Microsoft Corporation Implementation of private messaging
JP2009059005A (ja) 2007-08-29 2009-03-19 Panasonic Corp デバッグシステム、デバッグ装置および方法
JP5300294B2 (ja) * 2008-03-25 2013-09-25 パナソニック株式会社 処理装置、難読化装置、プログラムおよび集積回路
US8452984B2 (en) 2008-08-28 2013-05-28 Alcatel Lucent Message authentication code pre-computation with applications to secure memory
JP2010218237A (ja) * 2009-03-17 2010-09-30 Renesas Electronics Corp プログラム検証装置及びその方法
KR101920278B1 (ko) * 2012-06-08 2019-02-08 삼성전자주식회사 디스플레이 장치, 디스플레이 동기화 장치, 디스플레이 동기화 시스템 및 디스플레이 장치의 동기화 방법,
JP6070712B2 (ja) * 2012-10-01 2017-02-01 富士通株式会社 情報処理装置及び性能解析データの収集方法
US9621549B2 (en) 2014-07-25 2017-04-11 Qualcomm Incorporated Integrated circuit for determining whether data stored in external nonvolative memory is valid
US10630481B2 (en) * 2016-11-07 2020-04-21 Ford Global Technologies, Llc Controller area network message authentication
JP6891671B2 (ja) * 2017-06-29 2021-06-18 富士通株式会社 攻撃検知装置および攻撃検知方法
US10540297B2 (en) * 2017-08-03 2020-01-21 Arm Limited Memory organization for security and reliability
US20200216097A1 (en) * 2017-08-10 2020-07-09 Argus Cyber Security Ltd System and method for detecting exploitation of a component connected to an in-vehicle network
US10924277B2 (en) * 2018-01-25 2021-02-16 Micron Technology, Inc. Certifying authenticity of stored code and code updates
JP2019140577A (ja) * 2018-02-13 2019-08-22 株式会社デンソー 電子制御装置及び通信システム
US10719606B2 (en) * 2018-02-23 2020-07-21 Infineon Technologies Ag Security processor for an embedded system
US20200074120A1 (en) * 2018-08-29 2020-03-05 Varex Imaging Corporation Anti-tamper circuitry

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150032951A1 (en) * 2004-04-08 2015-01-29 Texas Instruments Incorporated Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices
US9177153B1 (en) * 2005-10-07 2015-11-03 Carnegie Mellon University Verifying integrity and guaranteeing execution of code on untrusted computer platform
CN101978377A (zh) * 2008-02-07 2011-02-16 阿纳洛格装置公司 用于控制受保护操作模式期间的系统访问的方法和装置
CN103583061A (zh) * 2011-06-10 2014-02-12 皇家飞利浦有限公司 网络中的恶意攻击的避免
CN107085675A (zh) * 2016-02-16 2017-08-22 爱特梅尔公司 受控安全代码验证

Also Published As

Publication number Publication date
EP3948619A4 (en) 2022-12-07
US20220179945A1 (en) 2022-06-09
US20200311254A1 (en) 2020-10-01
US11263308B2 (en) 2022-03-01
EP3948619A1 (en) 2022-02-09
JP2022527069A (ja) 2022-05-30
US11816202B2 (en) 2023-11-14
WO2020198001A1 (en) 2020-10-01
CN113632084A (zh) 2021-11-09
KR20210132736A (ko) 2021-11-04

Similar Documents

Publication Publication Date Title
US11755406B2 (en) Error identification in executed code
US11816202B2 (en) Run-time code execution validation
US11960632B2 (en) Data attestation in memory
US11683155B2 (en) Validating data stored in memory using cryptographic hashes
US11669643B2 (en) Block chain based validation of memory commands
KR20210134053A (ko) 오버-디-에어 업데이트 유효성 확인 방법
US11228443B2 (en) Using memory as a block in a block chain
US20220138114A1 (en) Using memory as a block in a block chain

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