CN110998545A - 具有安全模块的计算机系统软件/固件和处理器单元 - Google Patents

具有安全模块的计算机系统软件/固件和处理器单元 Download PDF

Info

Publication number
CN110998545A
CN110998545A CN201880048728.8A CN201880048728A CN110998545A CN 110998545 A CN110998545 A CN 110998545A CN 201880048728 A CN201880048728 A CN 201880048728A CN 110998545 A CN110998545 A CN 110998545A
Authority
CN
China
Prior art keywords
security module
processor
data
cache
computer
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.)
Granted
Application number
CN201880048728.8A
Other languages
English (en)
Other versions
CN110998545B (zh
Inventor
A.努内兹门西亚斯
J.C.朗
M.雷克滕沃尔德
U.迈耶
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN110998545A publication Critical patent/CN110998545A/zh
Application granted granted Critical
Publication of CN110998545B publication Critical patent/CN110998545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

用于在安全模式下解密和使用处理器缓存中的安全模块的技术,以便动态地址转换以防止对易失性存储器中秘密储存区之外的易失性存储器部分的访问。

Description

具有安全模块的计算机系统软件/固件和处理器单元
背景技术
本发明涉及用于执行加密相关的操作(例如,目标数据的加密、目标数据的解密、密钥管理)的安全模块(SMs)。
硬件安全模块(HSM)是一种保护和管理用于强身份验证的数字密钥并提供加密处理的物理计算设备。这些模块通常以插件卡或直接连接到计算机或网络服务器的外部设备的形式出现。HSMs可以拥有提供篡改证据(例如日志记录和警报)和抗篡改性(例如在检测到篡改时删除密钥)的控件。每个模块包含一个或多个安全加密处理器芯片,用于防止篡改和总线探测。
许多HSM系统都有办法安全地备份它们处理的密钥,或者通过计算机的操作系统以包装的形式,或者在外部使用智能卡或其它安全令牌。由于硬件安全模块通常是关键任务基础设施(如公钥基础设施或在线银行应用程序)的一部分,通常可以将硬件安全模块集群化以获得高可用性。有些硬件安全模块具有双电源和可现场更换的组件(如冷却风扇),以符合数据中心环境的高可用性要求,实现业务连续性。
没有多少硬件安全模块有能力执行HSM的安全外壳内的专门开发的模块。这种能力例如在必须在安全和受控的环境中执行特殊算法或业务逻辑的情况下,是有用的。这些模块可以用C语言、.NET、Java或其它编程语言开发。这些执行引擎提供了保护特定于应用程序的代码的好处,同时遵守HSM的联邦信息处理标准(FIPS,Federal InformationProcessing Standard)或通用标准(Common Criteria)验证。
硬件安全模块可以在任何使用数字密钥的应用程序中采用。通常,密钥必须具有高价值,这意味着如果密钥被泄露,将对其所有者产生重大的负面影响。HSM的功能是:(i)板载安全加密密钥生成;(ii)板载安全加密密钥存储和管理;(iii)加密材料的使用;和(iv)敏感数据材料的使用;和(v)卸载应用服务器以实现完全的非对称和对称加密。HSM还被部署用于管理数据库的透明数据加密(Transparent Data Encryption)密钥。硬件安全模块为这些材料(包括加密密钥)提供逻辑和物理保护,以防未经授权的使用和潜在的对手。大多数HSM处理的加密材料是用于公钥加密的非对称密钥对(和证书)。有些硬件安全模块还可以处理对称密钥和其它任意数据。
物理HSMs的生产成本非常高。此外,HSMs专用于虚拟机(或固定数量的域中的至少一个)。因此,如果大型机计算机系统中有很多虚拟机,那么可能没有足够的物理HSMs来覆盖所有虚拟机,但是隐私/安全要求仍然适用。在目前的传统HSMs中,加密存储机制可用于加密处理。除了使用HSMs外,还可以使用某些商用密码加速器或通常用于金融交易和个人识别等电子处理的带有内置微处理器的塑料卡。被称为加密功能中央处理器助理(CPACF)的机制或网络HSMs,如有些商用信息安全解决方案一样,可用于这些目的。
此外,可以使用所谓的虚拟HSM(VHSM),它是用于在虚拟化应用程序环境之外存储和操作秘密数据的软件套件。虽然HSM是连接到计算机的物理设备,但该软件通过基于Linux的OpenVZ容器技术的虚拟环境中的应用程序编程接口(API)提供HSM功能。
虚拟HSM的体系结构由以下关键组件组成:(i)VHSM虚拟环境(VHSM VE)是包含VHSM服务器和安全存储器的隔离环境。服务器对秘密数据执行操作,存储器则保存加密的用户数据。此外,在客户端和服务器虚拟环境之间传输交换数据的传输层基于:(i)基于Linux的Netlink套接字技术;和(ii)客户端虚拟环境,具有客户端API和用于从客户端环境访问VHSM服务器的配套实用程序。
在本领域中,还存在一组特定的商用CPU(中央处理单元)代码指令,该指令允许用户级代码分配称为飞地(enclaves)的私有存储区。与普通进程存储器不同,“飞地”受到保护,不受以在更高优先权级运行的进程的影响。
对CPU中的在以上段落中提到的CPU指令的支持在CPUID命令“StructuredExtended Feature Leaf”(EBX位02)中指明,但其对应用程序的可用性需要BIOS(基本输入/输出系统)支持和选择进入启用,而这不反映在CPUID的位中。上述段落中提到的CPU指令基于特殊的受信任的存储器,即处理器保留的存储器。进一步的代码将作为纯文本发送到机器。
发明内容
提出了一种具有安全模块的计算机系统软件,该安全模块具有用于存储秘密数据的秘密储存区和用于操作系统与该安全模块交互的接口,该安全模块被用公钥加密存储在计算机系统的存储器中,计算机系统包括至少一个具有至少一个处理器高速缓存的处理器,其中,响应于对接口的访问,该软件执行(i)将计算机系统的处理器切换到安全模式;(ii)禁用将安全模块的程序代码和数据的从处理器高速缓存到存储器的写操作;(iii)用密钥解密处理器高速缓存中安全模块的程序代码和/或数据;(iv)配置动态地址转换以防止访问安全模块使用的区域之外的存储器;(v)用接口上提供的数据执行安全模块的程序代码;(vi)使用公钥加密处理器高速缓存中的数据;(vii)启用程序代码和安全模块的数据从处理器高速缓存到存储器的写操作;以及(viii)将处理器切换到正常操作系统模式。
有利地,具有安全模块的本发明软件允许在软件、固件和/或硬件中模拟虚拟硬件安全模块。因此,模拟的安全模块可能不会被篡改,因此无需信任系统管理员。允许客户对自己的虚拟安全模块进行编程,用自己的秘密或证书填充安全模块,并将它们部署到仿真安全模块中的远程系统上。软件/硬件通过加密安全模块的内容和限制读取访问过程来保护虚拟安全模块的存储器和/或接口。解密的安全模块,包括内部信息,永不离开处理器单元芯片。安全模块的接口使操作系统能够管理,特别是使操作系统能够检索仅加密状态的秘密储存区的内容。将程序代码从处理器高速缓存写入存储器可能特别需要考虑自修改代码。
根据一个实施例,对于用非安全标志标记的数据,可以禁用对存储器的写操作。使用非安全标志可以有利地区分允许离开处理器芯片的数据与不允许离开处理器芯片的数据。
根据一个实施例,处理器高速缓存可以至少包括一级高速缓存和二级高速缓存。具有不同级别高速缓存的处理器有利地允许控制具有不同属性的程序或数据的可用性,以禁用对特定程序或数据的访问。
根据一个实施例,安全模块的接口可以实现为使用加密体系结构的应用程序编程接口。通过这种方式,客户可以编写自己的安全模块,以保证其私有数据的高度安全性。
根据一个实施例,在向处理器发送中断请求期间,可以暂停安全模块的执行,并且可以在将控制权传递给中断处理程序之前对安全模块进行加密。因此,有利地,可以防止对安全模块的解密的私有数据的访问。
根据一个实施例,安全模块可以在中断请求终止后重新启动。通过这种方式,即使在中断请求中断后,也可以实现安全模块的可靠工作。
根据一个实施例,安全模块可以在安全模块的受控中止之后重新启动。通过这种方式,即使在中断请求中断后,也可以实现安全模块的可靠工作。
根据一个实施例,在多个程序之间共享的安全模块可以使用信号量机制来序列化对安全模块使用的存储器区域的访问。因此,不同的程序可以以同步的方式正确地使用相同的存储区域和/或数据,而不会有一个程序的数据被另一个程序破坏的风险。
根据一个实施例,在处理器上执行多线程处理中的线程时,可以在安全模块的执行期间禁用多线程。这样,如果处理器在线程之间共享缓存,则可以避免由于老化和/或由其它线程访问解密的数据而丢失安全模块的高速缓存线的问题。
根据一个实施例,可以用非安全标志标记高速缓存线,用于阻止高速缓存线访问其他线程,和/或可以防止高速缓存线被其他线程清除或老化。因此,即使在线程之间共享高速缓存的处理器中启用了多线程,也可以避免未经授权的线程的高速缓存访问。
根据一个实施例,在处理器上执行多线程进程中的线程时,可以在执行安全模块期间禁用线程之间的缓存共享,并且可以在重新启动多线程之前清除高速缓存线。通过这种方式,可以避免由于老化和/或由其它线程访问解密数据而丢失安全模块的高速缓存线的问题。
此外,还提出了一种用如上所述的软件实现的计算机系统固件。与仿真安全模块一起实现软件系统可以以有利的方式另外增加计算机系统的安全水平。
此外,还提出了一种用于在软件中实现安全模块的处理器单元,其中至少一个处理器包含至少一个处理器高速缓存,处理器单元包含至少另一个高速缓存,该安全模块具有用于存储秘密数据的秘密储存区和用于操作系统与该安全模块交互的接口,该安全模块用公钥加密存储在计算机系统的存储器中,其中处理器被配置为响应于对该接口的访问,(i)如果切换到安全模式,则禁用安全模块的程序代码和数据从高速缓存到存储器的写操作;(ii)使用密钥解密处理器高速缓存中安全模块的程序代码和/或数据;(iii)配置动态地址转换以防止访问安全模块使用的区域之外的存储器;(iv)使用接口上提供的数据执行安全模块的程序代码;(v)使用公钥加密处理器高速缓存中的数据;以及(vi)如果切换到正常操作系统模式,则启用安全模块的程序代码和数据从处理器高速缓存到存储器的写操作。
有利地,用于在软件中实现安全模块的本发明处理器单元允许在软件、固件和/或硬件中模拟硬件安全模块。因此,模拟的安全模块不可以被篡改,因此无需信任系统管理员。允许客户对自己的虚拟安全模块进行编程,用自己的秘密或证书填充安全模块,并将它们部署到仿真安全模块中的远程系统上。软件/硬件通过加密安全模块的内容和限制读取访问过程来保护虚拟安全模块的存储器和/或接口。解密的安全模块,包括内部信息,永不离开处理器单元芯片。安全模块的接口使操作系统能够管理和检索仅加密状态的秘密储存区的内容。
根据一个实施例,对于用非安全标志标记的数据,可以禁用对存储器的写操作。使用非安全标志可以有利地区分允许离开处理器芯片的数据与不允许离开处理器芯片的数据。
根据一个实施例,处理器可以至少包括一级高速缓存和二级高速缓存,并且处理器单元可以包括至少三级高速缓存,其中当在一级和/或二级高速缓存和三级高速缓存中使用时,安全模块的程序代码和/或数据可以是未加密的。具有不同级别高速缓存的处理器有利地允许控制具有不同属性的程序或数据的可用性,以禁用对特定程序或数据的访问。
根据一个实施例,安全模块的程序代码和/或数据可以在离开处理器单元时被加密。这样,可以保证安全模块中编码的客户数据以及客户程序通过使用安全模块的接口访问的数据的高度隐私。
根据一个实施例,在对存储器执行交叉询问处理时,可以使用信号量机制来序列化对进程之间共享的存储器区域的访问。因此,如果共享安全模块的多个进程互相试图使用安全模块的高速缓存线,则可以有利地保持存储器一致性。
根据一个实施例,在执行事务性存储器时,可以使用信号量机制来序列化对进程之间共享的存储器区域的访问。因此,如果共享安全模块的多个进程互相试图使用安全模块的高速缓存线,则可以有利地保持存储器一致性。
根据一个实施例,在向处理器发送中断请求期间,安全模块的执行可以被暂停,并且安全模块可以在将控制权传递给中断处理程序之前被加密。因此,可以有利地防止对安全模块的解密的私有数据的访问。
根据一个实施例,安全模块可以在中断请求终止后重新启动。通过这种方式,即使在中断请求中断后,也可以实现安全模块的可靠工作。
根据一个实施例,安全模块可以在安全模块的受控中止之后重新启动。通过这种方式,即使在中断请求中断后,也可以实现安全模块的可靠工作。
根据一个实施例,在处理器上执行多线程中的线程时,可以在安全模块的执行期间禁用多线程。这样,如果处理器在线程之间共享缓存,则可以避免由于老化和/或由其它线程访问解密数据而丢失安全模块的高速缓存线的问题。
根据一个实施例,可以用非安全标志标记高速缓存线,用于阻止高速缓存线访问其他线程,和/或可以防止高速缓存线被其他线程清除或老化。因此,可以避免未经授权的线程的高速缓存访问。
根据一个实施例,在处理器上执行多线程中的线程时,在执行安全模块期间可以禁用线程之间的缓存共享,并且可以在重新启动多线程之前清除高速缓存线。通过这种方式,可以避免由于老化和/或由其它线程访问解密的数据而丢失安全模块的高速缓存线的问题。
当安全模块处于活动状态时允许多线程时,另一个线程可能加载高速缓存线,并由此替换当前标记为非安全的高速缓存线。这类情况的处理方式与交叉询问类似,或者设置了NS标志的高速缓存线可能会受到保护,不被另一个线程替换,从而避免老化。
此外,还提出了在计算机系统软件中实现安全模块的有利方法,该安全模块具有用于存储秘密数据的秘密储存区和用于操作系统与该安全模块交互的接口,该安全模块被用公钥加密地存储在计算机系统的存储器中,计算机系统包括至少一个具有至少一个处理器高速缓存的处理器,其中,响应于对接口的访问,该方法包括以下软件操作:(i)将计算机系统的处理器切换到安全模式;(ii)禁用安全模块的程序代码和数据从处理器高速缓存到存储器的写操作;(iii)使用密钥解密处理器高速缓存中安全模块的程序代码和/或数据;(iv)配置动态地址转换以防止对安全模块使用的区域之外的存储器的访问;(v)用接口上提供的数据执行安全模块的程序代码;(vi)用公钥加密处理器高速缓存中的数据;(vii)启用安全模块的程序代码和数据从处理器高速缓存到存储器的写操作;以及(viii)将处理器切换到正常操作系统模式。
有利地,具有安全模块的本发明软件允许在软件、固件和/或硬件中模拟硬件安全模块,因此,模拟的安全模块不可以被篡改,因此无需信任系统管理员。允许客户对自己的虚拟安全模块进行编程,用自己的秘密或证书填充安全模块,并将它们部署到仿真安全模块中的远程系统上。软件/硬件通过加密安全模块的内容和限制读取访问过程来保护虚拟安全模块的存储器和/或接口。解密的安全模块,包括内部信息,永远不会离开处理器单元芯片。安全模块的接口使操作系统能够管理,特别是使操作系统能够检索仅加密状态的秘密储存区的内容。
根据一个实施例,对于用非安全标志标记的数据,可以禁用对存储器的写操作。使用非安全标志可以有利地区分允许离开处理器芯片的数据和不允许离开处理器芯片的数据。
此外,还提出了一种有利的计算机程序产品,用于在计算机系统软件中实现安全模块,该安全模块具有用于存储秘密数据的秘密储存区和用于操作系统与该安全模块交互的接口,该安全模块被用公钥加密地存储在计算机系统的存储器中,该计算机系统包括至少一个具有至少一个处理器高速缓存的处理器,所述计算机程序产品包括具有所述程序指令的计算机可读存储介质,所述程序指令可由计算机执行,以响于应对接口的访问,执行包括以下软件操作的方法:(i)将计算机系统的处理器切换到安全模式;(ii)禁用将安全模块的程序代码和数据从处理器高速缓存到存储器的写操作;(iii)使用密钥解密处理器高速缓存中安全模块的程序代码和/或数据;(iv)配置动态地址转换以防止访问安全模块使用的区域之外的存储器;(v)使用接口上提供的数据执行安全模块的程序代码;(vi)用公钥加密处理器高速缓存中的数据;(vii)允许程序代码和安全模块的数据从处理器高速缓存到存储器的写操作;以及(viii)将处理器切换到正常操作系统模式。
根据一个实施例,对于用非安全标志标记的数据,可以禁用对存储器的写操作。使用非安全标志可以有利地区分允许离开处理器芯片的数据和不允许离开处理器芯片的数据。
此外,还提出了一种具有至少一个处理器的至少一个处理器单元的有利的数据处理系统,用于执行数据处理程序,包括用于在计算机系统软件中实现安全模块的计算机可读程序指令,所述安全模块具有用于秘密数据的秘密储存区和用于操作系统与安全模块交互的接口,安全模块被用公钥加密存储在计算机系统的存储器中,其中,响应于对接口的访问,软件执行(i)将计算机系统的处理器切换到安全模式;(ii)禁用安全模块的程序代码和数据从处理器高速缓存到存储器的写操作;(iii)用密钥解密处理器高速缓存中的安全模块的程序代码和/或数据;(iv)配置动态地址转换以防止访问安全模块使用的区域以外的存储器;(v)用接口上提供的数据执行安全模块;(vi)用公钥加密处理器高速缓存中的数据;(vii)启用安全模块的程序代码和数据从处理器高速缓存到存储器的写操作;以及(viii)将处理器切换到正常操作系统模式。
根据一个实施例,对于用非安全标志标记的数据,可以禁用对存储器的写操作。使用非安全标志可以有利地区分允许离开处理器芯片的数据和不允许离开处理器芯片的数据。
根据一个实施例,有一种与安全模块一起使用的方法、计算机程序产品和/或系统,安全模块包括用于在易失性存储器中为秘密数据提供秘密储存区以及提供用于与操作系统交互的接口的程序指令,执行以下操作(不一定按以下顺序):(i)在处理机的处理机高速缓存中存储构成加密形式的安全模块的数据,该安全模块可由密钥解密;(ii)将处理机切换到安全模式;(iii)响应于切换到安全模式,禁用写操作,所述写操作是将构成安全模块的数据从处理器高速缓存写入易失性存储器的操作;(iv)在处理器高速缓存中用密钥解密构成安全模块的数据;(v)配置动态地址转换以防止对秘密储存区以外的易失性存储器的部分的访问;(vi)通过安全模块的接口接收数据;(vii)由安全模块并在处理器高速缓存中用公钥加密通过安全模块的接口接收的数据;(viii)启用所述写操作;和(ix)将处理器切换到正常操作系统模式。
附图说明
从以下对实施例的详细描述可以最好地理解本发明以及上述和其它目的和优点,但本发明不限于实施例。
图1描绘了根据本发明实施例的在计算机系统软件上实现安全模块的框图。
图2描绘了根据本发明实施例的具有安全模块的计算机系统的高速缓存和存储器的层次结构。
图3描绘了根据本发明的一个实施例的由两个程序使用共享的安全模块、用信号量锁定机制限制访问的流程图。
图4描绘了根据本发明实施例的使用在计算机系统软件上实现的安全模块的流程图。
图5描绘了用于执行根据本发明的方法的数据处理系统的示例实施例。
具体实施方式
附图中用相同的附图标记来表示类似的元素。这些附图仅仅是示意性的表示,并不旨在描绘本发明的特定参数。此外,附图旨在仅描绘本发明的典型实施例,因此不应被视为限制本发明的范围。
如上在背景技术部分所述,有一组特定的商用CPU(中央处理器)代码指令,允许用户级代码分配称为“飞地”的专有存储器区。本发明的一些实施例可能认识到,这可能:(i)增加应用程序的特征检测的复杂性(由于CPUID的使用);和/或(ii)引起安全问题(由于信息以纯文本的形式发送)。
示例性实施例提供一种计算机系统软件,其具有:(i)安全模块,该安全模块具有用于存储秘密数据的秘密储存区和用于操作系统与安全模块交互的接口;(ii)该安全模块被用公钥加密存储在计算机系统存储器中,和(iii)计算机系统包括至少一个具有至少一个处理器高速缓存的处理器。
为了说明的清晰,这里有时仅使用特定技术作为示例来描述示例性实施例。示例性实施例可用于访问接口,该软件执行:(i)将计算机系统的处理器切换到安全模式;(ii)禁用安全模块的程序代码和数据从处理器高速缓存到存储器的写操作;(iii)用密钥解密处理器高速缓存中的安全模块的程序代码和/或数据;(iv)配置动态地址转换以防止对安全模块使用的区域之外的存储器的访问;(v)使用接口上提供的数据执行安全模块的程序代码;(vi)使用公钥加密处理器高速缓存中的数据;(vii)启用安全模块的程序代码和数据从处理器高速缓存到存储器的写操作;以及(viii)将处理器切换到正常操作系统模式。
图1描绘了根据本发明的实施例的在计算机系统软件上的被表示为虚拟硬件安全模块(vHSM)的安全模块12的实现的框图。用于实现安全模块12的软件也可以在计算机系统212的固件10中实现。
图1中的计算机系统212包括至少一个具有至少一个处理器高速缓存20的处理器16,该处理器16在具有接口40的固件/硬件(FW/HW)环境10中运行。到安全模块12的接口40被实现为使用加密体系结构的应用程序编程接口。如图2所示,处理器高速缓存20可以至少包括一级高速缓存22、24和二级高速缓存26、28。计算机系统212还包括存储器18,其中由操作系统OS操作的程序14可以在其中执行。
安全模块12具有用于秘密数据的秘密储存区,并且可以由客户在受保护的构建环境48中使用软件开发工具包(SDK)50创建。通过程序14的请求,安全模块12被用公钥42加密存储在计算机系统212的存储器18中。公钥42是证书的公共部分,并且可供客户使用。安全模块12由该公钥42加密并发送到计算机系统212。安全模块12的程序代码实现由加密体系结构描述的接口40。接口40用于操作系统与安全模块12交互,以便在加密状态下管理和检索安全模块12的秘密储存区的内容。
程序14对接口40的访问、对安全模块12的地址的引用以及指向存储器18的输入/输出区域的存储器指针被传递到接口40。计算机系统212的处理器16被软件切换到安全模式。对于用非安全标志标记的数据,由安全模块12的程序代码禁用从处理器高速缓存20到存储器18的数据写操作。用密钥44解密处理器高速缓存20中的安全模块12的程序代码和/或数据。重新配置动态地址转换以防止对在安全模块12使用的区域之外的存储器18的访问,但是仍然允许访问安全模块12的输入/输出区域(之前已传递了其存储器指针)。软件用所传递的参数触发安全模块12的执行。用接口40上提供的数据来执行安全模块12的程序代码。然后,由安全模块12的程序代码执行离开安全模块模式的指令。由软件用公钥42加密处理器高速缓存20中的数据。由软件重新启用安全模块12的程序代码从处理器高速缓存20到存储器18的数据写操作。加密的数据被写回到存储器18,并且处理器16被软件切换回正常操作系统模式。程序14检索安全模块操作的结果并继续其正常执行。
图2描绘了具有根据本发明实施例的安全模块的计算机系统212的高速缓存和存储器层次结构。处理器单元216作为计算机系统212的一部分,用于实现软件形式的安全模块,其中至少有一个包括至少处理器高速缓存20、22、24、26、28的处理器16,并且处理器单元包括至少另一高速缓存30。在图2中的实施例中所示的处理器16包括两个一级高速缓存22、24(L1i作为指令高速缓存,L1d作为数据高速缓存)和两个二级高速缓存26、28(L2i作为指令高速缓存,L2d作为数据高速缓存)。处理器单元216还包括三级高速缓存30(L3)。图2中的实施例中的计算机系统212还包括四级高速缓存32(L4)和主存储器18。高速缓存线的长度通常为256字节。例如,本实施例的一级高速缓存22、24、26、28包括8x64位的高速缓存线。指令高速缓存22和26通常被配置为只读(RO),而数据高速缓存24和28以及三级高速缓存30的内容可以被标记为:(i)只读(RO);(ii)独占(EX)或(iii)事务性存储器(TX)。四级高速缓存32与系统控制器(SC)相关。
有利的是,安全模块的程序代码和/或数据在一级和/或二级高速缓存22、24、26、28和三级高速缓存30中使用时未加密。这是通过用非安全(NON-SECURE=NS)标志标记程序代码和/或数据来实现的。当离开处理器单元216时,程序代码和/或数据被加密,因此四级高速缓存32以及存储器18仅接收标记为安全的程序代码和/或数据(从不NS)。
从性能的角度来看,可以驻留在处理器芯片16内的高速缓存线的数量确实很重要。因此,将NS标志/标记用于一级、二级和三级高速缓存。
指令和数据处理之间也有区别。数据自然需要存储,因此安全模块通常确保解密的数据不会被排出。这也是通过NS标志实现的。非安全数据不能写回或写到芯片高速缓存层级之外。指令通常以只读方式获取。但是,根据加密/解密操作发生的位置(例如在L1和L2之间的边界上,而不是在L2和L3之间的边界上),解密的指令高速缓存线可以从L1写入L2。
指令高速缓存22和26获得从数据高速缓存24和28推送的非安全高速缓存线。中止时,从数据高速缓存24和28以及指令高速缓存22和26清除非安全高速缓存线。在三级高速缓存30中标记为非安全的数据从不离开处理器单元216,而是在离开处理器单元216之前首先被加密。
在执行交叉询问过程(XI)时,作为存储器一致性机制的一部分,交叉询问过程从高速缓存22、24、26、28和30删除高速缓存线,其中该高速缓存线可以是解密的。由于系统的潜在故障,绝不能保留或拒绝交叉询问,因此安全模块可以用作高速缓存的硬件扩展。将状态(例如,请勿存储)添加到高速缓存中的高速缓存线,其中可以在高速缓存中对同一高速缓存线进行加密或解密。
XI可以移除不变的NS标记的高速缓存线,其将被重新获取。然后,无需采取特殊措施,或者XI可以删除必定已经被独占地获取的修改后的缓存行。这可能导致不同的选择。
如果自安全模块的调用以来已经发生了安全模块(vHSM)存储,则可以将XI处理延迟到能存储高速缓存线为止。如果vHSM已自然地完成,则将存储更改,并发送XI响应。如果vHSM操作在可中断的点停止,则将存储更改,并发送XI响应。
如果自调用以来未发生任何vHSM存储,则vHSM操作可能被中止/无效。然后可以丢弃所有修改过的vHSM数据,并发送XI响应。
当在多个进程之间共享安全模块时,交叉询问进程可能会从其它进程中获取缓存行。然后,安全模块操作可能会中止。由于不能保证正向处理,因此使用信号量机制来序列化对在进程之间共享的存储器18的区域的访问。在这种情况下,将触发向前的进度升级。
该机制类似于执行事务性存储器操作,其中可以使用信号量机制来序列化对在进程之间共享的存储器18的区域的访问。在这种情况下,也将触发向前的进度升级。
当允许多线程并且安全模块处于活动状态时,另一个线程可能加载高速缓存线并替换当前标记为NS的高速缓存线。可以类似于交叉询问的方式来处理此类情况,或用NS标志设置高速缓存线,可以防止被其它线程替换,从而得到免于老化的保护。
图3描绘了根据本发明的一个实施例的由两个程序A和B使用共享安全模块(vHSM)、用信号量锁定机制限制访问的流程图。
根据图3,可以使用信号量机制在多个程序之间共享安全模块,以序列化对安全模块使用的存储器区域的访问。在使用安全模块之前,程序A和B将在操作S300和S302中尝试为它们锁定安全模块。如果程序A和B中的一个获得了信号量,这意味着在操作S304中锁定了安全模块;在操作S306和S314中对安全模块的锁定进行检查后,程序A和B中的一个将在操作S308和316中使用安全模块。没有获得信号量的程序则返回,在操作S300和S302中尝试锁定安全模块。在成功使用了安全模块之后,安全模块在操作S310和S318中由使用它的程序释放。这样,安全模块就可以被其它程序在操作S304中自由地使用。
中断可能会将控制权交给另一个程序,该程序不应访问安全模块的解密存储器区域。有利地,对具有适当地址的处理器单元的一级高速缓存的访问可以提供这种存储器访问。由于需要对中断请求及时采取行动,安全模块可以确保向前的进度升级,从而在内部跟踪状态。因此,软件可以在分支到中断代码之前加密安全模块。在向处理器发出中断请求期间,安全模块的执行被暂停,并且安全模块在将控制权传递给中断处理程序之前被加密。中断请求终止后,安全模块重新启动。因此,安全模块可以在安全模块的受控中止之后重新启动。
在处理器上的多线程处理中的线程执行期间,可以在安全模块的执行期间禁用多线程。如果处理器正在运行其它线程高速缓存,则安全模块的高速缓存线可能会由于老化而丢失,或者其它线程可能会访问安全模块的解密的数据。
有两种选择来进行使解密的高速缓存线对其它线程隐藏的处理:(i)关闭多线程并在再次打开多线程之前清除高速缓存;或(ii)用非安全标志来标记每个高速缓存线,该标志可以在高速缓存访问命中比较逻辑中使用,以仅匹配允许访问的线程。可以使用软件来设置非安全标志或相应地执行清除高速缓存。这可以通过用非安全标志标记高速缓存线来实现,所述标志用于阻止对其它线程的高速缓存线访问和/或防止高速缓存线被其它线程清除或老化。
备选地,可以在安全模块的执行期间禁用线程之间的高速缓存共享,并且可以在重新启动多线程之前清除高速缓存线。
图4描绘了根据本发明实施例的使用在计算机系统软件上实现的安全模块的流程图。因此,也可以详细地理解在软件中实现安全模块的方法。
如果在操作S400中在计算机系统上执行的程序需要安全模块的操作,则在操作S402中将安全模块的程序代码和/或数据或其部分加载到存储器中。通过程序访问具有加密体系结构的接口,操作S404引用安全模块的地址以及指向存储器的输入/输出区域的存储器指针。然后在操作S406中将该信息传递到接口。在操作S408中,通过软件将计算机系统的处理器切换到安全模式。接下来,在操作S410中,对于由非安全标记标记的数据,由安全模块的程序代码从处理器高速缓存到存储器的数据写操作被禁用。在操作412中,使用密钥在处理器高速缓存中解密安全模块的程序代码和/或数据。在操作S414中,重新配置动态地址转换(DAT),以防止访问安全模块使用的区域之外的存储器,但仍允许访问安全模块的、其存储器指针之前已传递的输入/输出区域。在操作S416中,软件使用传递的参数触发安全模块的执行,然后在操作S418中,使用接口上提供的数据来执行安全模块的程序代码。然后在操作S420中,由安全模块的程序代码执行用于退出安全模块模式的指令。在操作S422中,由软件用公钥在处理器高速缓存中加密数据。在操作S424中,由软件重新启用针对安全模块的程序代码的从处理器高速缓存到存储器的数据写操作。在操作S426中,加密的数据被写回到存储器,并且处理器被软件切换回到正常操作系统模式。程序可以在输入/输出区域中检索安全模块操作的结果,并在操作S428中继续其正常执行。
现在参考图5,示出了数据处理系统210的示例的示意图。数据处理系统210仅是合适的数据处理系统的一个示例,并且无意于暗示对本文所述本发明实施例的使用范围或功能的任何限制。无论如何,数据处理系统210能够实现和/或执行本文上面阐述的任何功能。
数据处理系统210具有至少一个处理器单元216,处理器单元具有至少一个处理器,数据处理系统210可用于执行数据处理程序240,该程序包括:(i)用于实现计算机系统软件中的安全模块的计算机可读程序指令;(ii)具有用于秘密数据的秘密储存区以及用于操作系统管理和检索该秘密储存区的内容的接口的该安全模块,以及(iii)使用公钥加密存储在计算机系统212的存储器中的该安全模块。响应对接口的访问,软件可以执行以下操作:(a)将计算机系统212的处理器16切换到安全模式;(b)禁用将程序代码和安全模块的数据从处理器高速缓存20到存储器的写操作;(c)用密钥解密处理器高速缓存中安全模块的程序代码和/或数据;(d)配置动态地址转换,以防止访问安全模块使用的区域之外的存储器;(e)利用接口上提供的数据执行安全模块的程序代码;(f)用公钥加密处理器高速缓存中的数据;(g)启用将程序代码和安全模块的数据从处理器高速缓存到存储器的写操作;(h)将处理器16切换到正常操作系统模式。对于标记有非安全标志的数据,可以禁用对存储器的写操作。
在数据处理系统210中,有计算机系统/服务器212,其可与许多其它通用或专用计算系统环境或配置一起操作。可能适合与计算机系统/服务器212一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于:(i)个人计算机系统;(ii)服务器计算机系统;(iii)瘦客户端;(iv)胖客户端;(v)手持或笔记本电脑设备;(vi)多处理器系统;(vii)基于微处理器的系统;(viii)机顶盒;(ix)可编程消费电子产品;(x)联网电脑;(xi)微型计算机系统;(xii)大型计算机系统;(xiii)包括以上任何系统或设备等的分布式云计算环境。
可以在由计算机系统执行的计算机系统可执行指令(例如程序模块)的一般上下文中描述计算机系统/服务器212。一般来说,程序模块可以包括:(i)例程;(ii)程序;(iii)对象;(iv)组件;(v)逻辑;(vi)执行特定任务或实现特定抽象数据类型的数据结构等。可以在分布式云计算环境中实践计算机系统/服务器212,在分布式云计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图5所示,数据处理系统210中的计算机系统/服务器212以通用计算设备的形式来表示。计算机系统/服务器212的组件可以包括但不限于:(i)一个或者多个处理器或者处理单元216,(ii)系统存储器228,以及(iii)耦合不同系统组件、包括将系统存储器228耦合到处理单元216的总线218。
总线218表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线、微通道体系结构(MAC)总线、增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器212典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器212访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器228可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)230和/或高速缓存存储器232。计算机系统/服务器212可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统234可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线218相连。存储器228可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块242的程序/实用工具240,可以存储在存储器228中,这样的程序模块242包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块242通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器212也可以与一个或多个外部设备214(例如键盘、指向设备、显示器224等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器212交互的设备通信,和/或与使得该计算机系统/服务器212能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口222进行。并且,计算机系统/服务器212还可以通过网络适配器220与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线218与计算机系统/服务器212的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器212一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
本发明可以是:(i)系统;(ii)方法;和/或(iii)计算机程序产品。该计算机程序产品可以包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储介质可以是可以保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于:(i)电子存储设备;(ii)磁存储设备;(iii)光学存储设备;(iv)电磁存储设备;(v)半导体存储设备;(vi)上述的任何适当组合。计算机可读存储介质的更具体示例的非穷举列表包括以下内容:(a)便携式计算机磁盘;(b)硬盘;(c)随机存取存储器(RAM);(d)只读存储器(ROM);(e)可擦可编程只读存储器(EPROM或闪存);(f)静态随机存取存储器(SRAM);(g)便携式光盘只读存储器(CD-ROM);(h)数字通用磁盘(DVD);(i)记忆棒;(j)软盘;(k)机械编码的设备,例如穿孔卡或上面记录有指令的凹槽中的凸起结构;(l)前述的任何适当的组合。本文所使用的计算机可读存储介质不应被解释为本身是瞬态信号,诸如:(1)无线电波或其它自由传播的电磁波;(2)通过波导或其它传输介质传播的电磁波(例如,穿过光缆的光脉冲);或(3)通过电线传输的电信号。
本文描述的计算机可读程序指令可以从以下各项下载到相应的计算/处理设备:(i)计算机可读存储介质;(ii)外部计算机;(iii)通过网络(例如互联网)的外部存储设备;(iv)局域网;(v)广域网;和/或(vi)无线网络。网络可以包括:(a)铜传输电缆;b)光传输纤维;(c)无线传输;(d)路由器;(e)防火墙;(f)开关;(g)网关计算机;和/或(h)边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令以存储在相应的计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是:(i)汇编程序指令;(ii)指令集架构(ISA)指令;(iii)机器指令;(iv)机器相关指令;(v)微码;(vi)固件指令;(vii)状态设定数据;(viii)以一种或多种编程语言(包括面向对象的编程语言(例如Smalltalk,C++等)和常规过程编程语言(例如“C”编程语言)或类似的编程语言)的任何组合编写的源代码或目标代码。所述计算机可读程序指令可以:(a)完全在用户计算机上执行;(b)部分在用户的计算机上执行;(c)作为独立软件包执行;(d)部分在用户计算机上、部分在远程计算机上执行;或(e)完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,所述网络包括:(1)局域网(LAN);(2)广域网(WAN);或(3)可以(例如,使用因特网服务提供商通过因特网)与外部计算机建立的连接。在一些实施例中:(I)电子电路,包括例如可编程逻辑电路;(II)现场可编程门阵列(FPGA)或(III)可编程逻辑阵列(PLA)可以通过利用计算机可读程序指令的状态信息来个性化电子电路来执行计算机可读程序指令,以便执行本发明的各方面的任务。
本文参考以下各项的流程图和/或框图描述了本发明的各方面:(i)方法;(ii)设备(系统);(iii)根据本发明的实施例的计算机程序产品。将理解的是,流程图和/或框图的每个框以及流程图和/或框图中的框的组合,可以通过计算机可读程序指令来实现。
可将这些计算机可读程序指令提供给:(i)通用计算机的处理器;(ii)专用计算机;(iii)其它可编程数据处理设备,以生成一种机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令创建用于实现流程图和/或框中指定的功能/动作的装置。这些计算机可读程序指令也可以存储在计算机可读存储介质中,该计算机可读存储介质可以引导:(a)计算机;(b)可编程数据处理设备;和/或(c)其它设备以特定方式运行,以使其中存储有指令的计算机可读存储介质包括一种制品,该制品包括实现流程图和/或框图中指定的功能/动作的各方面的指令。
所述计算机可读程序指令还可被加载到:(i)计算机;(ii)其它可编程数据处理设备;或(iii)其它设备,以导致在以下设备上执行一系列操作:(a)计算机;(b)其它可编程装置或其它设备,以产生计算机执行的过程,从而使指令在计算机上执行;(c)其它可编程设备;(d)实现流程图和/或框图方框中指定的功能/动作的其它设备。
附图中的流程图和框图示出根据本发明的各种实施例的(a)系统、(b)方法、(c)计算机程序产品的(i)架构、(ii)功能、(iii)可能的实现的操作。在这方面,流程图或框图中的每个方框可以表示:(1)一个模块、(2)一个段;或(3)指令的一部分,其中包括一个或多个用于实现指定逻辑功能的可执行指令。在一些替代实施方式中,方框中指出的功能可以不按图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者有时可以以相反的顺序执行这些框。还应注意,框图和/或流程图的每个框以及框图和/或流程图的框的组合,可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的基于硬件的专用系统来实现。
已经出于说明的目的给出了本发明的各种实施例的描述,但上述描述并不旨在是穷举性的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理、对市场上发现的技术的实际应用或技术上的改进,或者使本领域的其它普通技术人员能够理解这里公开的实施例。

Claims (20)

1.一种与安全模块一起使用的计算机实现的方法,安全模块包括用于提供用于秘密数据的易失性存储器中的秘密储存区和用于与操作系统交互的接口的程序指令,所述方法包括:
将构成安全模块的数据以可由密钥解密的加密形式存储在处理器的处理器高速缓存中;
将处理器切换到安全模式;
响应于切换到安全模式,禁用写操作,其中所述写操作是将构成安全模块的数据从处理器高速缓存写入易失性存储器的操作;
在处理器高速缓存中,用密钥解密构成安全模块的数据;
配置动态地址转换以防止访问秘密储存区以外的易失性存储器的部分;
通过安全模块接口接收数据;
由安全模块并且在处理器高速缓存中,用公钥对通过安全模块接口接收的数据进行加密;
启用写操作;以及
将处理器切换到正常操作系统模式。
2.根据权利要求1所述的方法,还包括:
对非安全标志标记的数据禁用写操作。
3.根据权利要求1所述的方法,其中处理器高速缓存包括一组一级高速缓存和一组二级高速缓存。
4.根据权利要求1所述的方法,其中安全模块的接口采取使用加密体系结构的应用程序编程接口的形式。
5.根据权利要求1所述的方法,还包括:
由处理器接收中断请求;
响应中断请求,暂停安全模块的执行;以及
安全模块加密后,将控制权传递给中断处理程序。
6.根据权利要求5所述的方法,还包括:
终止中断请求;以及
响应中断请求的终止,重新启动安全模块。
7.根据权利要求1所述的方法,还包括:
使用信号量机制在多个程序之间共享安全模块,以序列化对易失性存储器的秘密储存区的访问。
8.一种与安全模块一起使用的计算机程序产品,安全模块包括用于提供用于秘密数据的易失性存储器中的秘密储存区和用于与操作系统交互的接口的程序指令,所述计算机程序产品包括:
机器可读存储设备;以及
存储在机器可读存储设备上的计算机代码,计算机代码包括使处理器集执行包括以下操作的指令:
将构成安全模块的数据以可由密钥解密的加密形式存储在处理器的处理器高速缓存中;
将处理器切换到安全模式;
响应于切换到安全模式,禁用写操作,其中所述写操作是将构成安全模块的数据从处理器高速缓存写入易失性存储器的操作;
在处理器高速缓存中,用密钥解密构成安全模块的数据;
配置动态地址转换以防止访问秘密储存区以外的易失性存储器的部分;
通过安全模块接口接收数据;
由安全模块并且在处理器高速缓存中,用公钥对通过安全模块接口接收的数据进行加密;
启用写操作;以及
将处理器切换到正常操作系统模式。
9.根据权利要求8所述的计算机程序产品,其中,计算机代码还包括使处理器集执行包括以下操作的指令:
对非安全标志标记的数据禁用写操作。
10.根据权利要求8所述的计算机程序产品,其中,处理器高速缓存包括一组一级高速缓存和一组二级高速缓存。
11.根据权利要求8所述的计算机程序产品,其中,安全模块的接口采取使用加密体系结构的应用程序编程接口的形式。
12.根据权利要求8所述的计算机程序产品,其中,计算机代码还包括使处理器集执行包括以下操作的指令:
由处理器接收中断请求;
响应中断请求,暂停安全模块的执行;以及
安全模块加密后,将控制权传递给中断处理程序。
13.根据权利要求12所述的计算机程序产品,其中,计算机代码还包括使处理器集执行包括以下操作的指令:
终止中断请求;以及
响应中断请求的终止,重新启动安全模块。
14.根据权利要求8所述的计算机程序产品,其中,计算机代码还包括使处理器集执行包括以下操作的指令:
使用信号量机制在多个程序之间共享安全模块,以序列化对易失性存储器的秘密储存区的访问。
15.一种计算机系统,与包括用于在易失性存储器中为秘密数据提供秘密储存区的程序指令和用于与操作系统交互的接口的安全模块一起使用,所述计算机系统包括:
处理器集;
机器可读存储设备;以及
存储在机器可读存储设备上的计算机代码,计算机代码包括使处理器集执行包括以下操作的指令:
将构成安全模块的数据以可由密钥解密的加密形式存储在处理器的处理器高速缓存中;
将处理器切换到安全模式;
响应于切换到安全模式,禁用写操作,其中所述写操作是将构成安全模块的数据从处理器高速缓存写入易失性存储器的操作;
在处理器高速缓存中,用密钥解密构成安全模块的数据;
配置动态地址转换以防止访问秘密储存区以外的易失性存储器的部分;
通过安全模块接口接收数据;
由安全模块并且在处理器高速缓存中,用公钥对通过安全模块接口接收的数据进行加密;
启用写操作;以及
将处理器切换到正常操作系统模式。
16.根据权利要求15所述的计算机系统,其中,计算机代码还包括使处理器集执行包括以下操作的指令:
对非安全标志标记的数据禁用写操作。
17.根据权利要求15所述的计算机程序系统,其中,处理器高速缓存包括一组一级高速缓存和一组二级高速缓存。
18.根据权利要求15所述的计算机程序产品,其中,安全模块的接口采取使用加密体系结构的应用程序编程接口的形式。
19.根据权利要求15所述的计算机系统,其中,计算机代码还包括使处理器集执行包括以下操作的指令:
由处理器接收中断请求;
响应中断请求,暂停安全模块的执行;以及
安全模块加密后,将控制权传递给中断处理程序。
20.根据权利要求19所述的计算机系统,其中,计算机代码还包括使处理器集执行包括以下操作的指令:
终止中断请求;以及
响应中断请求的终止,重新启动安全模块。
CN201880048728.8A 2017-07-25 2018-07-23 具有安全模块的计算机系统软件/固件和处理器单元 Active CN110998545B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/658,441 2017-07-25
US15/658,441 US10534725B2 (en) 2017-07-25 2017-07-25 Computer system software/firmware and a processor unit with a security module
PCT/IB2018/055462 WO2019021153A1 (en) 2017-07-25 2018-07-23 COMPUTER SYSTEM SOFTWARE / COMPUTER SOFTWARE AND PROCESSOR UNIT WITH SECURITY MODULE

Publications (2)

Publication Number Publication Date
CN110998545A true CN110998545A (zh) 2020-04-10
CN110998545B CN110998545B (zh) 2023-05-26

Family

ID=65037918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880048728.8A Active CN110998545B (zh) 2017-07-25 2018-07-23 具有安全模块的计算机系统软件/固件和处理器单元

Country Status (6)

Country Link
US (3) US10534725B2 (zh)
JP (1) JP6955619B2 (zh)
CN (1) CN110998545B (zh)
DE (1) DE112018002947T5 (zh)
GB (1) GB2578410B (zh)
WO (1) WO2019021153A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534725B2 (en) 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module
WO2020000344A1 (en) * 2018-06-29 2020-01-02 Intel Corporation Techniques to support a holistic view of cache class of service for a processor cache
US11307857B2 (en) * 2019-12-05 2022-04-19 Marvell Asia Pte, Ltd. Dynamic designation of instructions as sensitive for constraining multithreaded execution
US11372647B2 (en) 2019-12-05 2022-06-28 Marvell Asia Pte, Ltd. Pipelines for secure multithread execution
CN111343041B (zh) * 2020-01-19 2021-11-02 苏州浪潮智能科技有限公司 一种风扇状态监控方法和装置
CN115080158A (zh) * 2021-03-12 2022-09-20 Oppo广东移动通信有限公司 界面显示方法、装置、终端设备及计算机可读存储介质
US20230176901A1 (en) * 2021-12-03 2023-06-08 International Business Machines Corporation Scheduling a secure code segment on a processor core of a processing unit
US20230177143A1 (en) * 2021-12-03 2023-06-08 International Business Machines Corporation Operating a secure code segment on a processor core of a processing unit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
WO2015157690A1 (en) * 2014-04-11 2015-10-15 Rubicon Labs, Inc. System and method for sharing data securely
US20160292086A1 (en) * 2015-04-02 2016-10-06 International Business Machines Corporation Protecting contents of storage

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6789197B1 (en) * 1994-10-27 2004-09-07 Mitsubishi Corporation Apparatus for data copyright management system
JPH08305558A (ja) * 1995-04-27 1996-11-22 Casio Comput Co Ltd 暗号化プログラム演算装置
US6615349B1 (en) * 1999-02-23 2003-09-02 Parsec Sight/Sound, Inc. System and method for manipulating a computer file and/or program
JP2005227995A (ja) * 2004-02-12 2005-08-25 Sony Corp 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
US20070014403A1 (en) * 2005-07-18 2007-01-18 Creative Technology Ltd. Controlling distribution of protected content
KR20090082349A (ko) 2006-08-24 2009-07-30 첨비 인더스트리즈, 인코포레이티드 네트워크화된 어플리케이션 공유 시스템에서 사용하기 위한설정가능한 개인용 시청각 장치
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US20140281587A1 (en) * 2013-03-14 2014-09-18 Ologn Technologies Ag Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
US9231923B1 (en) 2013-11-12 2016-01-05 Amazon Technologies, Inc. Secure data destruction in a distributed environment using key protection mechanisms
US10169618B2 (en) * 2014-06-20 2019-01-01 Cypress Semiconductor Corporation Encryption method for execute-in-place memories
US9928080B2 (en) 2014-09-30 2018-03-27 International Business Machines Corporation Hardware security module access management in a cloud computing environment
US9798678B2 (en) 2015-04-02 2017-10-24 International Business Machines Corporation Protecting storage from unauthorized access
US10089245B2 (en) * 2015-05-18 2018-10-02 Hewlett Packard Enterprise Development Lp Management of encryption keys for multi-mode network storage device
US9767320B2 (en) * 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9432183B1 (en) 2015-12-08 2016-08-30 International Business Machines Corporation Encrypted data exchange between computer systems
US10534725B2 (en) 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
WO2015157690A1 (en) * 2014-04-11 2015-10-15 Rubicon Labs, Inc. System and method for sharing data securely
US20160292086A1 (en) * 2015-04-02 2016-10-06 International Business Machines Corporation Protecting contents of storage

Also Published As

Publication number Publication date
US11204881B2 (en) 2021-12-21
CN110998545B (zh) 2023-05-26
GB2578410B (en) 2020-10-28
GB202002174D0 (en) 2020-04-01
US20190034357A1 (en) 2019-01-31
JP2020528608A (ja) 2020-09-24
GB2578410A (en) 2020-05-06
US10534725B2 (en) 2020-01-14
JP6955619B2 (ja) 2021-10-27
US20200110712A1 (en) 2020-04-09
US20190034356A1 (en) 2019-01-31
DE112018002947T5 (de) 2020-04-02
WO2019021153A1 (en) 2019-01-31
US10528487B2 (en) 2020-01-07

Similar Documents

Publication Publication Date Title
CN110998545B (zh) 具有安全模块的计算机系统软件/固件和处理器单元
CN107454958B (zh) 使用多个嵌套页表隔离客户机代码和数据
CN107851151B (zh) 保护虚拟机的状态信息
US10102152B2 (en) Protecting a memory from unauthorized access
US9690947B2 (en) Processing a guest event in a hypervisor-controlled system
EP3087524B1 (en) Virtual machine assurances
US10372628B2 (en) Cross-domain security in cryptographically partitioned cloud
US10536274B2 (en) Cryptographic protection for trusted operating systems
US9779032B2 (en) Protecting storage from unauthorized access
US20080165957A1 (en) Virtualization of file system encryption
US20150078550A1 (en) Security processing unit with configurable access control
US11755753B2 (en) Mechanism to enable secure memory sharing between enclaves and I/O adapters
US10545883B2 (en) Verification bit for one-way encrypted memory
US11748493B2 (en) Secure asset management system
JP6672341B2 (ja) 仮想マシンの状態情報の保護
US20160292086A1 (en) Protecting contents of storage
US10389521B2 (en) Protection of encrypted information during a processing by a processing unit
US20240143363A1 (en) Virtual machine tunneling mechanism

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