CN109891425B - 序列验证 - Google Patents
序列验证 Download PDFInfo
- Publication number
- CN109891425B CN109891425B CN201780061291.7A CN201780061291A CN109891425B CN 109891425 B CN109891425 B CN 109891425B CN 201780061291 A CN201780061291 A CN 201780061291A CN 109891425 B CN109891425 B CN 109891425B
- Authority
- CN
- China
- Prior art keywords
- sequence
- instructions
- processor
- environment
- verification
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
- G06F21/54—Monitoring 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 by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
Abstract
公开了一种在包括指令序列的例如密码操作的操作执行环境中监视执行的方法。监视从主处理器向例如密码处理器的一个或多个辅助处理器以序列发送的用于执行操作的指令,使用验证信息验证指令序列。该方法包括响应于序列验证成功,启动从执行环境输出操作结果,或者响应于序列验证失败,生成验证失败信号。
Description
技术领域
本公开涉及验证从主处理器向一个或多个辅助处理器,特别是但不仅限于针对密码操作实现硬件加速的一个或多个密码处理器发送的指令序列。
背景技术
安全处理环境可以包括多个处理器,通常包括用于处理整体操作的主处理器和实现重复操作的多个辅助处理器,其中的重复操作作为硬件中主要操作的一部分以加速处理。通常,操作可以为密码操作,辅助处理器可以为实现基本密码操作的密码处理器。在硬件中实现一些整体操作不仅提高了处理速度而且提高了安全性,因为硬件比软件更难以篡改。从提高后的安全性获益需要主处理器完全按照预期的序列指示硬件实现的操作。否则,整体操作的结果可能会被篡改。这在由主处理器实现的软件代码是从安全环境外部提供的,例如在启动或运行时从安全处理环境外部的闪存或其他固件存储器加载的配置中特别相关。
附图说明
通过实施例公开特定的实施方式,并参考附图对特定的实施方式进行描述,其中:
图1示出了具有隔离执行环境的计算设备,其包括多个硬件组件:主处理器、辅助处理器和跟踪器模块;
图2示出了由跟踪器模块实现的用于跟踪和验证由主处理器向辅助处理器发送的指令序列的方法;
图3示出了图2中所示方法的变型;
图4示出了如图1所示的计算设备的具体实现方式;
图5示出了指定跟踪器模块的模式,例如图4中所示的实现方式的模式的有限状态机;以及
图6示出了用于准备针对软件代码的验证信息以供跟踪器模块使用的方法。
具体实施方式
总的来说,在本公开的一些方面,提供了一种在包括指令序列的操作执行环境中监视执行的方法。监视从主处理器向例如密码处理器的一个或多个辅助处理器以序列发送的用于执行操作的指令,并且使用验证信息验证指令序列。该方法包括以下中的至少一个或两个:
·响应于序列验证成功,启动操作结果从执行环境的输出;以及
·响应于序列验证失败,生成验证失败信号。
有利地是,通过使得能够在序列验证通过的条件下输出结果,或者通过生成可以由执行环境或设备中的其他地方使用来减轻篡改企图的影响的故障信号,即使在不能对主处理器用于执行操作的代码进行完全控制的情况下,操作安全性也可以得到提高。
在一些实施方式中,该方法包括使用序列中的每个指令来更新状态并使用验证信息来验证状态。验证状态可以包括将状态值或状态值的散列或密码单向函数与验证信息进行比较。更新状态可以包括在从主处理器向一个或多个辅助处理器发送指令时接收指令,并在接收到指令时更新状态,例如将指令的散列添加到状态中。为了增加安全性,可以以加密的形式,优选使用非对称加密将验证信息提供给执行环境。执行环境可以是计算设备的一部分,并且可以将代码与执行环境外的验证信息一起存储在计算设备中。所公开的序列验证方法有助于在安全环境之外存储代码,例如,可以将其作为固件更新的一部分容易地进行更新,同时通过向辅助处理器强制执行预期的指令序列来确保一定程度的完整性。在一些实施方式中,该方法包括接收启动操作结果输出的请求并响应于接收到请求来验证序列。例如可以从主处理器接收该请求,并且该请求可以包括验证信息。例如,启动结果输出可以包括使主处理器能够访问,特别是写入访问能够从环境外部访问的接口存储器,以输出操作结果。因此,该方法可以在执行环境周围实现防火墙的效果,访问是通过控制对于接口存储器的访问来控制的。当然,可选地或除此之外,可以控制从环境外部对于接口存储器的访问,特别是读取访问。该方法可以包括:当启动处理器输出结果时,禁用主处理器与一个或多个辅助处理器之间的通信。通过这种方式,会使篡改更加困难,因为在主处理器可以输出数据的同时不可能进行处理(至少使用辅助处理器)。
在本公开的一些方面,提供了一种包括隔离环境的计算设备。隔离环境包括用于执行操作的主处理器、一个或多个辅助处理器、例如接口缓冲存储器的接口以及跟踪模块。一个或多个辅助处理器,例如密码处理器,用于从主处理器接收指令,执行指令并将相应的响应返回到主处理器。执行操作包括主处理器以序列发送指令并接收相应的响应。接口在隔离环境与计算设备的其余部分之间对接,以从主处理器接收操作结果,并使其能够从隔离环境外部访问。跟踪模块用于监视从主处理器向一个或多个辅助处理器发送的指令并使用验证信息来验证指令序列。响应于验证,跟踪模块进行以下中的至少一个或两个:
·响应于序列验证成功,启动对于接口缓冲器的访问,例如写入访问,以启动结果输出;以及
·响应于序列验证失败,生成验证失败信号。
应当理解的是,上述考虑和优点同样适用于这些方面。计算设备可以具有一个或多个附加的主处理器和/或辅助处理器,实现在隔离环境外部具有共享或相应处理器的富操作系统环境和/或可信执行环境,并且经由接口缓冲器与隔离环境连接。在一些实施方式中,跟踪模块用于实现上述方法。
本公开的其他方面扩展到网表,其可选地存储在一个或多个计算机可读介质上,包括电路元件的规范及其互连以实现上述隔离环境,并扩展到计算设备,其包括用于实现上述方法的装置。所公开的方面适用于许多类型的计算设备,特别是但不仅限于机顶盒或其他内容接收设备,例如智能电视机,并且在需要保证用于保护内容的密码操作安全的数字权限管理和条件访问应用中有特定应用。
在又一方面,提供了一种由主处理器执行用的代码的准备方法,以实现上述方法中的操作。代码的准备方法包括从用于一个或多个辅助处理器的代码中的指令序列导出验证信息,并包含具有代码的验证信息,例如作为输出指令的一部分或作为包含代码的数据,或者作为与代码一起或单独用于后续组合而分配的单独数据项。验证信息可以以加密的形式,例如使用非对称加密与代码包含在一起。
现参考附图通过实施例对一些特定的实施方式进行描述来阐述本公开的内容。
具体地,参考图1,计算设备100包括与计算设备100的其余部分隔离的隔离执行环境110,其可以通过接口120与计算设备100的其余部分通信,接口120例如是提供来自隔离环境110内部的读取和/或写入访问以及来自环境110外部的读取和/或写入访问以允许环境110与设备100的其余部分通信的输入输出缓冲存储器。环境110包括主处理器130和多个辅助处理器140,例如用于密码硬件加速的辅助密码处理器。主处理器130用于执行实现例如密码操作的操作的软件代码。软件代码包括由辅助处理器140执行的指令,并且在执行软件代码时,主处理器130向辅助处理器140发送指令并从辅助处理器140以响应的形式接收中间结果以产生由软件代码实现的操作的总结果。
软件代码例如在设备100启动时或者在软件代码运行时已经加载到环境110中的适合存储器中之后可以存储在环境110内部。可选地,软件代码可以存储在环境110外部,并由主处理器130通过接口120或其他方式读取;或者,主处理器130可以由环境110外部的处理器驱动,通过接口120逐个地或整批地接收指令。
跟踪器模块150监视主处理器130和辅助处理器140之间的通信,例如监视由主处理器130发送给辅助处理器140的指令。例如,主处理器130可以通过公共数据总线(通常与环境110外部隔离)向辅助处理器140发送指令,跟踪器模块150可以监听在数据总线上传播的信号。可选地,跟踪器模块可以提供或控制主处理器130的总线访问模块,并且可以经由总线访问模块将通信从主处理器130路由到辅助处理器140。
跟踪器模块150监视由主处理器130发送给辅助处理器140的指令,并如下详述,例如通过维持表示指令序列的内部状态并将内部阶段与对应于正确序列的验证信息进行比较来验证指令序列。例如,验证信息可以与软件代码一起提供给隔离环境110并因此提供给跟踪器模块150,并且可以例如使用非对称加密进行加密,以增加安全性。通过将内部状态与验证信息进行比较,跟踪器模块150可以确定是否已经执行了正确的指令序列,并且根据验证结果采取诸如启动总结果输出或发出警报等动作。
然后,转向图2,现将对监视序列的方法进行详细描述。在步骤210,跟踪器模块150监视从主处理器130向辅助处理器140发送的消息。在步骤220,跟踪器模块150检查消息是否是辅助处理器140之一执行指令和返回结果的指令,并且如果是,则在步骤230更新内部状态。可以基于当前状态和当前指令或当前指令的摘要、散列或密码单向函数通过计算来更新状态。合适的单向函数例如为SHA族的任何函数。计算可以是将指令或摘要/散列/密码单向函数的值添加到状态中(加法),以将指令或摘要/散列/密码单向函数的值串接到状态等。
随后,在步骤240,跟踪器模块150检查该消息是否是跟踪器模块对于状态进行验证的请求。所讨论的消息可以包含用于辅助处理器140的指令和验证请求,在这种情况下,步骤240跟随步骤230,或者验证请求可以与由主处理器130发送给辅助处理器140的任何指令分开,并且因此直接跟随步骤220。例如,该请求可以是从主处理器130到跟踪器模块150用于启动输出由软件代码实现的操作的总结果的请求,如下详述。
如果消息包括验证请求,则在步骤250,跟踪器模块验证内部状态,否则该过程返回到步骤210并且跟踪器模块继续监视消息。在步骤250验证状态可以包括将状态的值与由验证信息提供的状态的预期值进行比较。例如,根据具体情况,可以将状态或状态函数与验证信息或验证信息的相应函数进行比较。为了确保验证信息不被篡改,其可能已经由准备软件代码和验证信息的实体进行了加密,如下详述。在这种情况下,首先在步骤250或之前解密验证信息。例如,验证信息可能已经被加密为非对称加密算法的私钥,并且在步骤250或之前使用相应的公钥来解密验证信息。验证信息可以用于通过检查状态和验证信息之间的匹配度或状态和验证信息的标识(或状态和/或验证信息的函数)或通过任何其他合适的比较方式来验证状态。
在步骤260,跟踪器模块检查状态是否已被验证。如果状态已被验证,则在步骤270启动输出操作的总结果,并且在步骤280跟踪器模块进行重置以在步骤210继续监视消息。这特别适用于验证请求与输出操作的总结果的请求一起接收的实施方式。应当理解的是,当例如响应于先前已经完成的操作、超时、开机启动(boot-up)等或如下所述,启动先前被禁用的输出总结果时。在其他实施方式中,例如,在验证请求与用于辅助处理器140的指令或每个指令一起接收的情况下,对于肯定验证的动作可以不同,例如使所讨论的处理器能够处理指令或将结果返回到主处理器130。
如果在步骤260确定验证是否定的,则在步骤290引发异常,生成验证失败信号,该信号在设备中的其他地方用作警报信号,例如导致设备关闭或警告第三方。可选地或除此之外,验证失败信号可用于例如通过擦除隔离环境110中的动态存储器中保存的数据,堵塞接口120等防止在隔离环境110中进行进一步处理。有些实施方式既包括步骤270又包括步骤290,而其他实施方式仅实现那些步骤中的一个步骤。
参考图3,在一些实施方式中,向该过程添加附加步骤以进一步提高安全性。上文中已经描述了图3中给出的类似步骤以及与图2中的附图标记相同的附图标记。在上面提到的步骤220之后插入步骤310,检查跟踪器模块150当前是否处于空闲模式,例如,如下详述。在跟踪器模块的空闲模式下,主处理器对接口120的访问并因此输出操作的总结果不被禁用,并且主处理器130可以自由地访问接口120以读取和写入数据。然而,在跟踪器模块140的空闲模式下,主处理器130为执行指令对辅助处理器140访问被禁用,从而确保在没有适当验证的情况下不能执行和输出密码操作。
如果在步骤310确定当接收到包括指令的消息时(参见步骤220),跟踪器模块150空闲,则在步骤320进入不同的模式,使得辅助处理器140能够处理来自主处理器130的指令,并在步骤320,例如通过禁止主处理器直接或间接地对接口120进行写入访问来禁止输出总结果。如果在步骤310确定跟踪器模块不是空闲的,即,已经对代码执行进行了跟踪/已经对指令序列进行了监视,则该过程如上所述在步骤230继续进行。另外,除了添加步骤310和320之外,对重置跟踪器模块150的步骤280进行修改,从而在步骤270一旦启动输出,跟踪器模块150就返回到空闲模式并禁止处理。这样,处理和输出之一在任何时候都是被禁用的,并且在处理过程中只有正确的指令序列才能随后输出结果。
参考图4,在一些实施例中,计算设备100包括可信执行环境(TEE)芯片组410,其包括TEE主处理器420,输入/输出接口430和静态随机存取存储器(SRAM)440。TEE主处理器130与SRAM 440和计算设备100中的芯片组410外部的动态随机存取存储器(DRAM)450通信。芯片组410外部的计算设备100的其余部分通过例如将计算设备100的富操作系统与芯片组410的TEE进行对接的接口430与芯片组410进行通信。隔离环境110设置作为芯片组410的一部分,以实现用于密码操作的密码模块。TEE主处理器420可以通过写入和读取接口120来访问隔离执行环境110,特别是请求执行密码操作并从隔离执行环境110中获取相应的结果。
现描述无论是与TEE芯片组410一起实现还是作为计算设备100的一部分实现的隔离执行环境110的特定实施方式。主处理器130与SRAM460通信从而为隔离执行环境110提供工作存储器。应当理解,可以替代地或另外地使用在隔离执行环境110内部或外部与非易失性存储器组合的任何其他形式的工作存储器。在主处理器130和接口120之间的写入连接中,跟踪器模块150控制输出开关470,使得跟踪器150可以控制主处理器130对于接口120进行写入访问。应当理解,开关470可以采用多种形式并且可以实现逻辑开关功能,而不是物理开关,例如将写入连接短路至地,将低电压或高电压短路以禁止对接口120进行写入访问。在一些实施方式中,开关470可以作为适当连接的晶体管来实现。在一些实施方式中,主处理器130可以对于接口120保持读取访问,而不管是否启动写入访问。
一个或多个辅助处理器140,例如一个或多个密码处理器或密码核心,在一些实施方式中通过数据总线480与主处理器130通信,并且跟踪器模块150耦合到数据总线开关490,可以将数据总线开关490配置为与输出开关470类似。数据总线开关490用于在跟踪器模块150的控制下,控制主处理器130对辅助处理器140进行访问,根据需要启动或禁止访问。在其他实施方式中,跟踪器模块以其他方式控制访问,例如通过提供使主处理器能够通过数据总线480进行通信的总线驱动器,和/或通过使用适当连接的与(AND)门和/或非(NOT)门将接口120的存储器位置设置为零或一的固定值。
参考图5,在一些实施方式中,跟踪器模块150实现如下多种操作模式:
·空闲(IDLE,510):监视数据总线480上的消息;启动主处理器130对于接口120进行写入访问;禁止主处理器130对辅助处理器140进行访问;重置状态。
·命令(CMD,520):监视数据总线480上的消息;禁止主处理器130对接口120进行写入访问;启动主处理器130对辅助处理器140进行访问。
·更新(UPD,530):如上所述通过对一个或多个辅助处理器的当前状态和当前指令进行计算来更新状态。
·检查(CHK,540):如上所述使用验证信息来检查状态。
·警报(ALRM,550):如上所述生成验证失败信号;禁止主处理器130对于接口120进行写入访问;禁止主处理器130对辅助处理器140进行访问。
跟踪器模块150最初处于空闲模式,如果在数据总线280上检测到从主处理器130到辅助处理器140的指令,则转换到CMD模式。跟踪器模块150立即从CMD模式转换到UPD模式以更新状态并在完成更新后转换回CMD模式进行监控以获取进一步的指令。检测每个进一步的指令使跟踪器模块150再次转换到CMD模式。跟踪器模块150响应于例如通过数据总线280接收验证信息(例如与输出请求一起),从CMD模式转换到CHK模式,并使用验证信息验证状态。如果通过验证,则跟踪器模块转换到IDLE模式,使得主处理器130能够输出结果并等待向辅助处理器140发送的进一步指令。如果验证失败,则如上所述跟踪器模块转换到ALRM模式并生成验证失败信号,例如还禁止主处理器130与接口120和辅助处理器140的通信。例如,一旦进入ALRM模式,跟踪器模块150就可以保持在ALRM模式中,直到跟踪器模块进行重置并且/或者设备100重新启动。
在一些实施方式中,隔离执行环境110在硅中实现,例如作为如图4所示的TEE芯片组的一部分来实现。电路元件及其互连,实现隔离执行环境110的各种组件(无论是隔离的组件还是与芯片组的所有组件在一起的组件)在一些实施方式中均编码在网表中,可以将网表存储在一个或多个计算机可读介质上并提供给芯片制造商以通过硅实现隔离环境110/将其与芯片组的其他区域集成在一起。芯片组可以是集成为设备100中的多个集成电路之一的专用集成电路(ASIC)的一部分,也可以是片上系统或片上网络等的一部分。
参考图6,上述用于准备供主处理器执行用的能够进行序列验证的软件代码的方法包括:分析代码以便识别用于辅助处理器的指令序列的步骤610,以及通过上述按照序列逐个地使用识别的指令更新初始状态,来导出预期状态的形式的验证信息的步骤620。当监视代码中提供的序列中的指令时,预期状态(或其函数)对应于跟踪器模块150中的状态。例如可以使用非对称加密在可选步骤630对验证信息进行加密,并且可以在步骤640将验证信息与软件代码包含在一起。例如,验证信息可以和指令一起包含在请求跟踪器模块150启用输出操作结果的代码中或代码的数据部分中或单独的数据文件中。在步骤650,其可以由第三方完成,将软件代码和验证信息分发到设备100,例如在制造过程中或之后,将其包含在设备100的关于制造的静态存储器中或者加载到设备100的例如闪存存储器的永久存储器中,例如作为固件更新的一部分,例如在机顶盒的情况下的空中软件更新。
如果对验证信息进行了加密,则将解密密钥,例如如果加密是不对称情况下的公钥,与软件代码分开分发。例如,可以在隔离执行环境110的网表中对解密密钥进行硬编码,或者也可以在制造时或在第一次启动时将解密密钥安装在其中。在一些实施方式中,还可以存储解密密钥,使其可以时时更新。
阅读了上述对一些特定实施方式的描述,就可以理解以下公开并可以要求保护的实施方式了:
1.一种在包括指令序列的操作的执行环境中监视执行的方法,该方法包括:
监视从主处理器向一个或多个辅助处理器以序列发送的用于执行操作的指令;
使用验证信息验证指令序列;以及
以下中的至少一个:
响应于序列验证成功,启动从执行环境输出操作结果;以及
响应于序列验证失败,生成验证失败信号。
例如,执行环境可以与实现其的设备隔离,并通过一个或多个专用接口与设备的其余部分通信。通过这种方式,特别是如果监视是在硬件中实现的,则可以通过增加安全性来确保计算在隔离执行环境中的完整性。
2.根据条目1所述的方法,包括使用序列中的每个指令来更新状态,其中验证序列包括使用验证信息来验证状态。
更新状态可以包括将指令或指令的散列添加到状态中或者将状态与指令或指令的散列通过任何其它合适的操作附加地或者代替附加地组合在一起。使用验证信息来验证状态可以包括例如通过比较状态和验证信息的各个函数的值,将状态值与验证信息值进行比较。函数之一或两个函数均可以为单位乘法,并且该函数可以相同或不同,只要各个值可以进行比较即可。可能的函数例如有散列函数或密码单向函数。当然,限定和更新状态的其他方式同样是可能的,例如将每个指令或每个指令的散列串接到先前任一指令或散列中,给出状态的大小将随序列的长度而变化的状态。更概括地说,更新状态包括使用当前状态和当前指令或当前指令的散列/摘要/函数进行计算,以计算下一状态。
3.根据条目2所述的方法,其中验证状态包括将状态与验证信息进行比较。
4.根据权利要求2或3所述的方法,其中,验证信息包括在利用序列中的每个指令更新状态之后的预期状态值。
5.根据权利要求3所述的方法,其中将状态进行比较包括将状态的函数与验证信息进行比较,并且验证信息包括在利用序列中的每个指令更新状态之后的预期状态的函数值。
6.根据权利要求2至5中任一项所述的方法,其中更新状态包括在指令从主处理器向一个或多个辅助处理器发送时接收指令,并在接收到指令时更新状态。
更新状态可以包括存储指令并稍后更新和验证状态,例如当接收到输出请求时,或者验证序列可以包括将指令序列或其散列或密码单向函数与验证信息比较。序列可以是实现操作所需的全部指令序列或仅是子集。例如,在接收序列的每个指令直至该指令(具有相应验证信息)之后可以进行验证。在这种情况下,直到序列的最后一条指令验证完,肯定验证才会导致启动输出。
7.根据前述任一项所述的方法,其包括解密加密的验证信息以获得验证信息。
8.根据条目6所述的方法,其中,加密的验证信息已经使用私钥进行了加密,并且解密加密的信息包括使用相应的公钥。
9.根据前述任一项所述的方法,其包括:响应于接收请求,接收启动输出操作结果的请求并验证序列。
10.根据条目9所述的方法,其中从主处理器接收请求。
11.根据条目9或10所述的方法,其中请求包括验证信息。
12.根据前述任一项所述的方法,其中,启动输出结果包括:使主处理器能够访问,以便访问能够从环境外部访问的接口存储器,以输出操作结果。
应当理解的是,在响应于验证成功而启动输出/访问的实施方式中,在启动输出/访问之前,禁止输出/访问。特别是,启动/禁止访问可以通过多种方式实现,例如通过将访问控制信号连接到接口存储器的每个位或者如果接口是双向的,具有相应的与门,则连接到接口存储器的每个输出位,并将访问控制信号设置为ZERO(零)以禁止访问,设置为ONE(一)以启动访问。应当注意的是,主处理器可以尝试在禁止状态下写入接口,但这不会影响接口存储器的位的值。当然,启动或禁止访问也可以通过多种其他方式实现,例如通过驱动开关来打开或关闭主处理器和接口存储器之间的连接。应当理解的是,还可以通过禁止从环境外部访问接口存储器来禁止输出。
验证失败信号可以触发警报,警告实现该方法的设备或者设备的用户验证失败。除此之外或可替代地,验证失败信号可以禁用某些功能,例如在处理过程中未禁止输出的实施方式中禁止输出结果,从存储器中删除结果和/或任何中间结果,防止辅助处理器处理指令等。
13.根据前述任一项所述的方法,所述方法包括:当启动处理器输出结果时,禁止主处理器与一个或多个辅助处理器之间的通信。
应当理解的是,在禁止通信之前,启动通信。可以通过多种方式启动/禁止通信。例如,主处理器可以通过开关连接到辅助处理器,驱动该开关打开和关闭主处理器与一个或多个辅助处理器之间的连接,开关例如为用于将主处理器连接到与一个或多个辅助处理器连接的总线的线路上,用于将总线保持在固定值的门等。可选地,可以将访问控制信号连接到辅助处理器以中断来自辅助处理器的输入和/或输出,例如,利用相应的与门,并将访问控制信号设置为ZERO以禁止访问,设置为ONE以启动访问。应当注意,主处理器可以在禁止状态下尝试读取或写入辅助处理器但不接收任何响应,因此通信实际上是禁止的。
14.根据前述任一项的方法,该方法包括以下两种操作:
响应于序列验证成功,启动从执行环境输出操作结果;以及
响应于序列验证失败,生成验证失败信号。
15.根据前述任一项所述的方法,其中验证信息与主处理器执行操作的执行用代码一起存储。
当然,根据具体情况,验证信息与代码一起以明文或加密的形式存储。
16.根据前述任一项所述的方法,其中执行环境为计算设备的一部分,并且代码与执行环境外部的验证信息一起存储在计算设备中。
17.一种包括隔离环境的计算设备,所述隔离环境包括:
主处理器,其用于执行操作;
一个或多个辅助处理器,其用于从主处理器接收指令,执行指令并将相应的响应返回到主处理器,其中执行操作包括主处理器发送指令并接收相应的响应;
接口,其在隔离环境与计算设备的其余部分之间对接,用于从主处理器接收操作结果,并使其能够从隔离环境外部访问;以及
跟踪模块,其用于:
监视从主处理器向一个或多个辅助处理器发送的指令;
使用验证信息验证指令序列;以及
以下操作中的至少一种:
响应于序列验证成功,启动对于接口缓冲器的访问,以启动输出结果;以及
响应于序列验证失败,生成验证失败信号。
应当理解的是,关于启动访问、验证信号、状态更新等的上述考虑同样适用于设备的实施方式。
此外,应当理解的是,当然,计算设备可以具有一个或多个附加的主处理器和/或辅助处理器,实现在隔离环境外部具有共享或相应处理器的富操作系统环境和/或可信执行环境,并且经由接口与隔离环境对接。接口可以包括接口存储器或缓冲器,对其的访问由跟踪器模块控制,例如如上所述。
18.根据条目17所述的设备,其中,跟踪模块用于实现根据条目2至16中任一项所述的方法。
19.根据条目15至18中任一项所述的设备,其中,计算设备包括代码存储器,用于将由主处理器执行操作的执行用代码与验证信息一起存储,其中代码存储器位于隔离环境外部中。
20.一种网表,其可选地存储在一个或多个计算机可读介质上,所述网表包括根据条目17至19中任一项的隔离环境的电路元件的规范及其互连。
21.一种计算设备,其包括用于实现条目1至16中任一项所述的方法的装置。
22.一种用于准备由主处理器执行以实现权利要求1至16中任一项所述的方法中的操作的代码的方法,所述方法包括从代码中用于一个或多个辅助处理器的指令序列中导出验证信息,并将验证信息与代码包含在一起。
23.根据条目22所述的方法,其中验证信息以加密的形式与代码包含在一起。
上面已经描述了计算设备的实施方式。可以将例如机顶盒或其他媒体消费设备的计算设备连接(例如,联网)到局域网(LAN)、内联网,外联网或因特网中的其他机器。在客户端-服务器网络环境中计算设备可以作为服务器或客户端机器运行,或者在对等(或分布式)网络环境中作为对等机运行。计算设备可以是个人电脑(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或桥、或能够(顺序或以其它方式)执行一组指令的任何机器,其中该组指令指定该机器要采取的动作。此外,虽然仅示出了单个计算设备,但是术语“计算设备”还应被视为包括单独或联合执行一组(或多组)指令以执行本文所讨论的任何一个或多个方法的机器(例如,计算机)的任意集合。
除了所示的组件之外,计算设备还可以具有通过总线相互通信的除了上述那些处理器之外的一个或多个处理器、主存储器(例如,只读存储器(ROM)、闪速存储器、诸如同步动态随机存取存储器(SDRAM)或Rambus DRAM(RDRAM)等动态随机存取存储器(DRAM))、静态存储器(例如,闪速存储器、静态随机存取存储器(SRAM)等)以及次级存储器(例如,数据存储设备XX18)。
计算设备还可以包括网络接口设备。计算设备还可以包括视频显示单元(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备(例如,键盘或触摸屏)、光标控制设备(例如,鼠标或触摸屏)以及音频设备(例如,扬声器)。
上述各种方法可以由计算机程序实现。该计算机程序可以包括计算机代码,该计算机代码用于指示计算机执行上述各种方法中的一个或多个方法的功能。用于执行这些方法的计算机程序和/或代码可以在一个或多个计算机可读介质,或者更一般地说,计算机程序产品上,被提供给诸如计算机的装置。计算机可读介质可以是瞬态的或非瞬态的。一个或多个计算机可读介质例如可以是电子、磁、光、电磁、红外或半导体系统,或用于数据传输的传播介质,例如用于通过因特网下载代码。可替代地,一个或多个计算机可读介质可以采用一个或多个物理计算机可读介质的形式,例如半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘以及光盘,例如CD-ROM、CD-R/W或DVD。
“硬件组件”是能够执行特定操作的有形(例如,非瞬态性)物理组件(例如,一组一个或多个处理器),并且可以以特定的物理方式配置或布置。硬件组件可以包括永久配置为执行特定操作的专用电路或逻辑。硬件组件可以是或包括专用处理器,例如现场可编程门阵列(FPGA)或ASIC。硬件组件还可以包括由软件临时配置以执行特定操作的可编程逻辑或电路。
因此,应当将短语“硬件组件”理解为包含可以物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)以通过特定方式操作或执行本文所描述的特定操作的有形实体。
除非另有特别说明,否则从以下讨论中可清楚看出,应当理解的是,在整个说明书中,利用诸如“接收”、“确定”、“比较”、“启动”、“维持”、“识别”、“计算”、“验证”、“启用”、“防止”等术语的讨论指的是计算机处理器、系统或类似电子计算设备的动作和处理,其操纵在寄存器和存储器内表示为物理(电子)量的数据并将其转换为在存储器或寄存器或其它此类信息存储、传输或显示设备内也类似地表示为物理量的其它数据。
应当理解的是,本公开旨在说明而非限制。在阅读和理解本公开后,许多其他实施方式对于本领域技术人员而言将是清楚的。尽管已经参考特定示例实现方式对本公开进行了描述,但是应当认识到,本公开不受所描述的实现方式的限制,而是可以在所附权利要求书的精神和范围内通过修改和变型来进行实践。因此,应当将说明书和说明书附图视为说明性的而非限制性的。因此,本公开的范围应当参考所附权利要求以及这些权利要求所赋予的等同物的全部范围来确定。
Claims (15)
1.一种在包括指令序列的操作的执行环境中监视执行的方法,该方法包括:
监视从主处理器向一个或多个辅助处理器以序列发送的用于执行所述操作的指令;
使用验证信息验证所述指令序列;以及
以下操作中的至少一个:
响应于序列验证成功,启动从执行环境输出操作结果;以及
响应于序列验证失败,生成验证失败信号。
2.根据权利要求1所述的方法,包括使用序列中的每个指令来更新状态,其中验证序列包括使用所述验证信息来验证所述状态。
3.根据权利要求2所述的方法,其中验证所述状态包括将所述状态与所述验证信息进行比较。
4.根据权利要求2或3所述的方法,其中更新状态包括在指令从所述主处理器向所述一个或多个辅助处理器发送时接收指令,并在接收到指令时更新所述状态。
5.根据前述权利要求中任一项所述的方法,包括接收启动输出操作结果的请求并响应于接收所述请求来验证序列。
6.根据权利要求5所述的方法,其中从所述主处理器接收所述请求。
7.根据权利要求5或6所述的方法,其中所述请求包括所述验证信息。
8.根据前述权利要求中任一项所述的方法,其中启动输出所述结果包括使所述主处理器能够访问,从而访问能够从环境外部访问的接口存储器,以输出所述操作的结果。
9.根据前述权利要求中任一项所述的方法,所述方法包括当启动处理器输出所述结果时,禁止所述主处理器与所述一个或多个辅助处理器之间的通信。
10.根据前述权利要求中任一项所述的方法,其中所述验证信息与所述主处理器执行操作的执行用代码一起存储。
11.一种包括隔离环境的计算设备,所述隔离环境包括:
主处理器,其用于执行操作;
一个或多个辅助处理器,其用于从所述主处理器接收指令,执行所述指令并将相应的响应返回到所述主处理器,其中执行操作包括所述主处理器发送指令并接收相应的响应;
接口,其在隔离环境与计算设备的其余部分之间对接,以便从所述主处理器接收所述操作的结果,并使其能够从隔离环境外部访问;以及
跟踪模块,其用于:
监视从所述主处理器向所述一个或多个辅助处理器发送的指令;
使用验证信息来验证指令序列;以及
以下操作中的至少一个:
响应于序列验证成功,启动对于所述接口的访问,以启动输出所述结果;以及
响应于序列验证失败,生成验证失败信号。
12.根据权利要求11所述的设备,其中所述跟踪模块用于实现根据项2至9中任一项所述的方法。
13.根据权利要求11或12所述的设备,其中所述计算设备包括代码存储器,所述代码存储器用于与验证信息一起存储由主处理器执行操作的执行用代码,其中代码存储器位于隔离环境外部中。
14.一种网表,其可选地存储在一个或多个计算机可读介质上,所述网表包括根据权利要求11至13中任一项所述的隔离环境的电路元件的规范及其互连。
15.一种用于准备由主处理器执行以实现根据权利要求1至10中任一项所述的方法中的操作的代码的方法,所述方法包括从代码中用于一个或多个辅助处理器的指令序列中导出验证信息,并将验证信息与代码包含在一起。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP16182872.8A EP3279826A1 (en) | 2016-08-04 | 2016-08-04 | Sequence verification |
EP16182872.8 | 2016-08-04 | ||
PCT/EP2017/069578 WO2018024797A1 (en) | 2016-08-04 | 2017-08-02 | Sequence verification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109891425A CN109891425A (zh) | 2019-06-14 |
CN109891425B true CN109891425B (zh) | 2022-11-15 |
Family
ID=56681964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780061291.7A Active CN109891425B (zh) | 2016-08-04 | 2017-08-02 | 序列验证 |
Country Status (7)
Country | Link |
---|---|
US (1) | US11314518B2 (zh) |
EP (2) | EP3279826A1 (zh) |
KR (1) | KR102422351B1 (zh) |
CN (1) | CN109891425B (zh) |
DK (1) | DK3494509T3 (zh) |
ES (1) | ES2894890T3 (zh) |
WO (1) | WO2018024797A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210357220A1 (en) * | 2018-07-31 | 2021-11-18 | Hewlett-Packard Development Company, L.P. | Executing instructions |
US11269637B2 (en) * | 2020-07-23 | 2022-03-08 | Hewlett Packard Enterprise Development Lp | Validating machine-readable instructions using an iterative validation process |
US11698969B1 (en) * | 2021-06-25 | 2023-07-11 | Amazon Technologies, Inc. | Boot security of integrated circuit device |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999014881A2 (en) * | 1997-09-16 | 1999-03-25 | Information Resource Engineering, Inc. | Cryptographic co-processor |
CN1481524A (zh) * | 2000-12-13 | 2004-03-10 | �����ɷ� | 密码处理器 |
US7168065B1 (en) * | 1999-03-09 | 2007-01-23 | Gemplus | Method for monitoring program flow to verify execution of proper instructions by a processor |
CN101196965A (zh) * | 2006-12-07 | 2008-06-11 | 上海安创信息科技有限公司 | 防攻击高级加密标准的加密芯片的算法 |
CN103279700A (zh) * | 2013-06-08 | 2013-09-04 | 北京时代奥视数码技术有限公司 | 液晶监视器的固件版本验证方法和液晶监视器 |
US8782435B1 (en) * | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time using control flow signatures |
EP2936366A2 (en) * | 2012-12-21 | 2015-10-28 | Alibaba Group Holding Limited | Method and system for network validation of information |
US9177153B1 (en) * | 2005-10-07 | 2015-11-03 | Carnegie Mellon University | Verifying integrity and guaranteeing execution of code on untrusted computer platform |
CN105637426A (zh) * | 2013-10-18 | 2016-06-01 | 三星电子株式会社 | Crum芯片、用于验证包括该crum芯片的可消耗单元的图像形成设备及其方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0889088A1 (en) | 1997-07-01 | 1999-01-07 | Du Pont De Nemours International S.A. | Polyolefin compositions |
DE602004031719D1 (de) * | 2004-07-01 | 2011-04-21 | Texas Instruments Inc | Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus |
US20060059369A1 (en) * | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | Circuit chip for cryptographic processing having a secure interface to an external memory |
US7739517B2 (en) * | 2005-03-31 | 2010-06-15 | Intel Corporation | Hardware-based authentication of a software program |
FR2884000A1 (fr) * | 2005-04-05 | 2006-10-06 | St Microelectronics Sa | Coprocesseur securise comprenant des moyens pour empecher l'acces a un organe du coprocesseur |
EP2262259A1 (en) * | 2009-06-08 | 2010-12-15 | Nagravision S.A. | Method for monitoring execution of data processing program instructions in a security module |
US10783250B2 (en) * | 2014-07-24 | 2020-09-22 | Nuvoton Technology Corporation | Secured master-mediated transactions between slave devices using bus monitoring |
-
2016
- 2016-08-04 EP EP16182872.8A patent/EP3279826A1/en not_active Withdrawn
-
2017
- 2017-08-02 US US16/322,983 patent/US11314518B2/en active Active
- 2017-08-02 KR KR1020197006350A patent/KR102422351B1/ko active IP Right Grant
- 2017-08-02 EP EP17748467.2A patent/EP3494509B1/en active Active
- 2017-08-02 ES ES17748467T patent/ES2894890T3/es active Active
- 2017-08-02 WO PCT/EP2017/069578 patent/WO2018024797A1/en unknown
- 2017-08-02 CN CN201780061291.7A patent/CN109891425B/zh active Active
- 2017-08-02 DK DK17748467.2T patent/DK3494509T3/da active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999014881A2 (en) * | 1997-09-16 | 1999-03-25 | Information Resource Engineering, Inc. | Cryptographic co-processor |
US7168065B1 (en) * | 1999-03-09 | 2007-01-23 | Gemplus | Method for monitoring program flow to verify execution of proper instructions by a processor |
CN1481524A (zh) * | 2000-12-13 | 2004-03-10 | �����ɷ� | 密码处理器 |
US9177153B1 (en) * | 2005-10-07 | 2015-11-03 | Carnegie Mellon University | Verifying integrity and guaranteeing execution of code on untrusted computer platform |
CN101196965A (zh) * | 2006-12-07 | 2008-06-11 | 上海安创信息科技有限公司 | 防攻击高级加密标准的加密芯片的算法 |
US8782435B1 (en) * | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time using control flow signatures |
EP2936366A2 (en) * | 2012-12-21 | 2015-10-28 | Alibaba Group Holding Limited | Method and system for network validation of information |
CN103279700A (zh) * | 2013-06-08 | 2013-09-04 | 北京时代奥视数码技术有限公司 | 液晶监视器的固件版本验证方法和液晶监视器 |
CN105637426A (zh) * | 2013-10-18 | 2016-06-01 | 三星电子株式会社 | Crum芯片、用于验证包括该crum芯片的可消耗单元的图像形成设备及其方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102422351B1 (ko) | 2022-07-19 |
US20190187994A1 (en) | 2019-06-20 |
WO2018024797A1 (en) | 2018-02-08 |
EP3494509A1 (en) | 2019-06-12 |
EP3494509B1 (en) | 2021-09-29 |
KR20190038609A (ko) | 2019-04-08 |
US11314518B2 (en) | 2022-04-26 |
ES2894890T3 (es) | 2022-02-16 |
EP3279826A1 (en) | 2018-02-07 |
DK3494509T3 (da) | 2021-10-25 |
CN109891425A (zh) | 2019-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3458999B1 (en) | Self-contained cryptographic boot policy validation | |
EP3265950B1 (en) | Device attestation through security hardened management agent | |
US8533492B2 (en) | Electronic device, key generation program, recording medium, and key generation method | |
US8438658B2 (en) | Providing sealed storage in a data processing device | |
CN101578609B (zh) | 安全启动计算设备 | |
KR101402542B1 (ko) | 지속형 보안 시스템 및 지속형 보안 방법 | |
US20200082088A1 (en) | User/Enterprise Data Protection Preventing Non-Authorized Firmware Modification | |
US20130254906A1 (en) | Hardware and Software Association and Authentication | |
US20070180271A1 (en) | Apparatus and method for providing key security in a secure processor | |
US8412903B2 (en) | Method and system for managing secure code loading in PC-slave devices | |
US8369526B2 (en) | Device, system, and method of securely executing applications | |
US20150078550A1 (en) | Security processing unit with configurable access control | |
US10142303B2 (en) | Separation of software modules by controlled encryption key management | |
US11797715B2 (en) | Erasing a cryptographic hem in a memory of a device in response to a change of an operating mode of the device | |
CN109891425B (zh) | 序列验证 | |
US20120278598A1 (en) | Disabling communication ports | |
CN107924440B (zh) | 用于管理容器的方法、系统和计算机可读介质 | |
US11520859B2 (en) | Display of protected content using trusted execution environment | |
US10880082B2 (en) | Rekeying keys for encrypted data in nonvolatile memories | |
US8499357B1 (en) | Signing a library file to verify a callback function | |
US20230236870A1 (en) | Safe entropy source for encrypted virtual machines | |
WO2022019910A1 (en) | Read protection for uefi variables | |
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 |