[go: up one dir, main page]

CN115203700A - 用于保护处于静止及运动的数据的灵活安全性enclave - Google Patents

用于保护处于静止及运动的数据的灵活安全性enclave Download PDF

Info

Publication number
CN115203700A
CN115203700A CN202210362662.8A CN202210362662A CN115203700A CN 115203700 A CN115203700 A CN 115203700A CN 202210362662 A CN202210362662 A CN 202210362662A CN 115203700 A CN115203700 A CN 115203700A
Authority
CN
China
Prior art keywords
software image
software
memory device
vtee
storage medium
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210362662.8A
Other languages
English (en)
Inventor
M·T·伯克
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 CN115203700A publication Critical patent/CN115203700A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F21/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F21/54Monitoring 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请涉及用于保护处于静止及运动的数据的灵活安全性enclave。在一个实施例中,公开一种包括存储媒体及处理器的存储器装置,所述处理器经配置以:接收软件映像、验证与所述软件映像相关联的数字签名,将所述软件映像写入到所述存储媒体,从主机处理器接收启动所述软件映像的请求,验证所述软件映像,及将所述软件映像传输到所述主机处理器。

Description

用于保护处于静止及运动的数据的灵活安全性ENCLAVE
技术领域
所公开实施例涉及存储及应用隔离。特定来说,所公开实施例涉及在安全存储器装置中实施基于软件的存储及应用程序隔离。
背景技术
已经提出各种技术以在安全装置中提供应用程序或存储隔离。软件容器及虚拟机已被用于提供应用程序级隔离。也就是说,通过这些技术,应用程序及库是相互“屏蔽”的,且不能不恰当地相互存取数据。虽然软件容器是可移动的,但其共享潜在地暴露敏感数据的软件资源(例如,操作系统、虚拟硬件)。虚拟机消除此暴露,但其依赖于平台并且与底层硬件体系结构紧密结合。
对于存储隔离,两种当前方法涉及使用软件容器或单根输入/输出虚拟化(SR-IOV)。由于软件容器必然是基于软件的,所以此方法在模拟存储隔离的同时存在使用共享硬件的漏洞。SR-IOV向虚拟机或软件容器暴露虚拟功能,然而SR-IOV限于特定存储接口(例如,非易失性存储器快速,NVMe)。
最后,用以提供以上隔离的另一种方法是使用专用安全处理元件,例如可信执行环境(TEE)。在TEE中,专用处理器或处理器的部分经配置以仅安全执行。虽然提供了防止软件漏洞的安全性,但TEE限于单个(安全)操作系统,占用处理器中的单个可信“区域”,难以重新配置,并且依赖于底层处理硬件。
最近,研究人员提出虚拟化TEE(vTEE)系统。在这些系统中,TEE的组件(例如,操作系统、固件等)作为可在不安全硬件上运行的“软件包(bundle)”提供。因此,单个处理器可潜在地运行多个TEE,类似于虚拟机的部署。虽然vTEE系统提供了改进安全性,但其仍然是基于软件的,且因此会遇到上文针对容器及虚拟机识别的所有相同问题。
发明内容
本申请的一方面涉及一种存储器装置,其包括:存储媒体;及处理器,所述处理器经配置以:接收软件映像,验证与所述软件映像相关联的数字签名,将所述软件映像写入到所述存储媒体,从主机处理器接收启动所述软件映像的请求,验证所述软件映像,及将所述软件映像传输到所述主机处理器。
本申请的另一方面涉及一种方法,其包括:在存储器装置处接收软件映像,所述软件映像选自由软件容器或虚拟可信执行环境(vTEE)组成的群组;通过所述存储器装置的加密处理器验证与所述软件映像相关联的数字签名;通过所述存储器装置将所述软件映像写入到存储阵列;通过所述存储器装置从主机处理器接收启动所述软件映像的请求;通过所述存储器装置的所述加密处理器验证所述软件映像;及通过所述存储器装置将所述软件映像传输到所述主机处理器。
本申请的又一方面涉及一种非暂时性计算机可读存储媒体,其用于有形地存储能够由计算机处理器执行的计算机程序指令,所述计算机程序指令定义以下步骤:接收软件映像,所述软件映像选自由软件容器或虚拟可信执行环境(vTEE)组成的所述群组;验证与所述软件映像相关联的数字签名;将所述软件映像写入到存储阵列;从主机处理器接收启动所述软件映像的请求;验证所述软件映像;及将所述软件映像传输到所述主机处理器。
附图说明
参考附图可更好地理解本公开的许多方面。图式中的组件不一定按比例绘制,而是将重点放在清楚地说明本公开的原理上。此外,在图式中,类似参考数字贯穿视图指定对应部分。
图1是根据本公开的一些实施例的安全计算系统的框图。
图2是说明根据本公开的一些实施例的认证系统的框图。
图3是根据本公开的一些实施例的用于创建vTEE并将其上传到存储器装置的方法的流程图。
图4是说明根据本公开的一些实施例的用于创建软件容器并将其上传到存储器装置的方法的流程图。
图5是说明根据本公开的一些实施例的用于存储虚拟TEE的方法的流程图。
图6是说明根据本公开的一些实施例的用于存储软件容器的方法的流程图。
图7是说明根据本公开的一些实施例的安全计算系统的框图。
图8是根据本公开的一些实施例的用于在安全计算环境中启动容器或vTEE的方法的流程图。
图9是说明展示在本公开的各种实施例中使用的客户端或服务器装置的实例的计算装置的框图。
具体实施方式
图1是根据本公开的一些实施例的安全计算系统的框图。
在所说明实施例中,计算系统100包含例如处理器110的处理元件及存储器装置102。存储器装置102包含数据存储装置104、控制器108及加密处理器106。在一些实施例中,加密处理器106及控制器108可组合成单个装置。处理器110及存储器装置102经由总线112通信地连接。
在所说明实施例中,处理器110可包括中央处理单元(CPU)、芯片上系统(SoC)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其它类型的处理装置。一般来说,处理器110可包括经设计以基于所存储程序指令(例如存储在数据存储装置104中的指令)执行计算的任何电子装置。
在所说明实施例中,存储器装置102可包括快闪存储器装置。在这些实施例中,存储器装置102可包括NAND快闪装置、NOR快闪装置或组合NAND与NOR快闪两者的异构型快闪装置。在这些实施例中,数据存储装置104可包括一或多个快闪裸片。在此类实施例中,一或多个快闪裸片包括存储器阵列。存储器阵列可包括多个快闪存储器单元。在一个实施例中,阵列包括多个SLC或MLC单元。在一些实施例中,阵列是同构的(即,仅包括SLC或MLC单元)。在其它实施例中,阵列可包含多种类型的单元(即,SLC与MLC单元的混合)。虽然参考MLC,但也可使用其它类型的快闪存储器单元,例如三电平单元(TLC)、四电平单元(QLC)、五电平单元(PLC)等。在一些实施例中,所述单元可包括伪SLC(pSLC)单元。pSLC单元包括MLC单元,其可经配置以存储单个位的信息,因此充当SLC单元。所述阵列可包括存储器单元的平面二维(2D)阵列。替代地,所述阵列可包括存储器单元的三维(3D)阵列。阵列中单元的特定布置及类型无意受到过度限制。
在另一实施例中,存储器装置102可包括动态随机存取存储器(DRAM)装置。在这些实施例中,数据存储装置104可包括电容性存储器单元阵列。在此实施例中,数据存储装置104可包括同构型单元阵列(例如,具有相同或类似铁磁性质的存储器单元)。在其它实施例中,数据存储装置104可包括异构型单元阵列(例如,具有不同铁磁性质的存储器单元)。在一些实施例中,存储器装置102可包括其它类型的RAM,例如静态RAM(SRAM)、全息RAM(HRAM)、电阻式RAM(ReRAM)、相变存储器(PCM)等。
在所说明实施例中,存储器装置102包含控制器108。在所说明实施例中,控制器108可包括微控制器、处理器或SoC,其经配置以控制存储器装置102的操作。具体来说,在一些实施例中,控制器108经配置以管理例如由处理器110向存储器装置102发出的命令。命令的实例包含向数据存储装置104读取或写入数据的命令以及管理命令。为简洁起见,不包含对命令的详尽参考,并且可支持用于存取存储器装置(例如,快闪或DRAM)的任何命令。在所说明实施例中,控制器108通过总线112与外部装置(例如,处理器,110)通信。在一个实施例中,总线112可包括串行外围接口(SPI)总线或嵌入式多媒体卡(eMMC)总线。
在所说明实施例中,存储器装置102进一步包含加密处理器106。在一个实施例中,加密处理器106包括对数据执行加密操作的专用处理元件(例如,ASIC、FPGA、处理器、SoC等)。在一个实施例中,此类操作包含(但不限于)散列、加密、解密、密钥产生、证书产生、数字签名操作及类似操作。在一些实施例中,加密处理器106进一步包含用于存储例如私钥及其它类型的安全数据的机密数据的安全存储元件(未说明)。在所说明实施例中,加密处理器106及控制器108经由内部数据路径(未说明)通信以支持安全操作。举例来说,控制器108可将通过总线112接收到的命令转发给加密处理器106以在数据存储装置104上执行所述命令之前进行认证。相反,加密处理器106可利用控制器108向处理器110发出命令,例如从处理器110请求网络接入。
在一个实施例中,加密处理器106实现存储器装置102的安全激活以及存储器装置102的所有权的安全转移。在一个实施例中,存储器装置102包含由装置的制造商供应的加密制造商密钥。在一个实施例中,此制造商密钥可包括对称或非对称密钥。如果是非对称的,制造商密钥可包括公私密钥对的私钥。在一个实施例中,制造商可维持将哪个制造商密钥写入到哪个存储器装置的记录。具体来说,每一存储器装置(例如,102)可包含序列号或其它唯一标识符。然后,制造商可将制造商密钥与唯一标识符相关联以维持每一存储器装置的记录。在所说明实施例中,存储器装置102可包含固件或软件以促进装置的所有权的转移。在一个实施例中,通过用客户密钥替换制造商密钥来实施所有权的转移。在其它实施例中,存储器装置102可保留制造商密钥,并且除制造商密钥之外还存储客户的公钥。在一个实施例中,密钥管理服务被用来促进此转移,如下文将论述。
替代地,或者结合前述内容,加密处理器106实现经认证读取及写入操作。在一个实施例中,存储器装置102可存储加密客户密钥,如上文论述。当处理器110向存储器装置发出命令时,其可使用其对应加密密钥(例如,私钥)对命令进行签名并发出命令。然后,存储器装置102可加载对应密钥(例如,公钥)并验证命令以确保其是由授权装置(例如,客户装置)发出的。
替代地,或者结合前述内容,加密处理器106实现加密测量能力。在这些实施例中,加密处理器106能够测量数据存储装置104中的一些或全部并计算内容的加密值(例如,散列值)。然后,加密处理器106可将此计算值与期望值进行比较,以确保在由处理器110执行之前数据存储装置104的内容没有被修改。在一些实施例中,存储器装置102包含安全存储区域,其维持将在无法使用上文方法验证启动映像的情况下加载的替代映像。
替代地,或者结合前述内容,加密处理器106额外地包含各种其它加密功能,例如DICE RiOT(装置身份组成引擎稳健物联网)双因素非对称加密身份证实。
图2是说明根据本公开的一些实施例的认证系统的框图。
所说明系统200包含半导体装置制造商210、KMS 202、可信伙伴(TP)204、客户系统206及多个半导体装置208。在所说明实施例中,制造商210是装置208的制造商。在所说明实施例中,制造商210可经由安全通道与KMS 202通信。在一些实施例中,制造商210为每一装置208上传对应唯一标识符(UID)及装置密钥(也被称为制造商的存储根密钥(MFGSRK))到KMS 202。在所说明实施例中,在制造商210的安全制造环境中产生MFGSRK。在一些实施例中,制造商210还为购买装置208或以其它方式与装置208相关联的每一客户上传客户标识符(CID)。在一些实施例中,制造商还上传与CID相关联的客户认证密钥(CAK)。在一个实施例中,CAK被限制于指定日期范围,因此在所述范围的最后一天过去之后变得无效。UID、MFGSRK、CID及CAK值统称为“制造数据”。
在所说明实施例中,KMS 202存储从制造商210接收到的前述数据。在一个实施例中,KMS 202包括用于存储制造数据的服务器或多个服务器。在一些实施例中,KMS 202利用硬件安全模块(HSM)来保护制造数据。在所说明实施例中,KMS 202能够为所接收UID中的每一者产生激活代码。在一些实施例中,激活代码包括整数或类似可处理值。在一些实施例中,KMS 202响应于来自TP 204的请求产生激活代码。
在所说明实施例中,TP 204包括安全且通信地耦合到KMS 202的计算系统。在所说明实施例中,TP 204向KMS 202发出对成批的激活代码(也称为激活数据库)的网络请求。在一个实施例中,对激活数据库的请求包含CID、日期范围、装置类型及对客户唯一且由KMS202知晓的随机数(称为“KMS随机数”)。在一些实施例中,客户经由网络通信会话与KMS 202协商KMS随机数,从而为KMS随机数建立共同知晓的值。在所说明实施例中,TP 204接收并存储激活数据库的内容。在一些实施例中,TP 204还包含用于保护激活数据库的HSM。在所说明实施例中,TP 204还包含用于为给定客户产生消息认证代码(MAC)的处理能力。此外,在所说明实施例中,TP 204包含用于基于激活数据库中的激活代码及从半导体装置208接收的响应码产生共享装置机密的安全数据库的处理能力。
在所说明实施例中,客户系统206与TP 204通信。客户系统206可包括客户的制造线或用于处置半导体装置208的其它系统。客户系统206的计算装置的特定布置在本文中不受限制。在一些实施例中,TP 204包括安装在客户系统206内的一或多个安全计算装置。在其它实施例中,TP 204是与客户系统206分离的计算系统。
在所说明实施例中,客户系统206与多个半导体装置208a、208b、208c(统称为208)交互。装置208包括半导体装置,例如(但不限于)存储器装置。举例来说,装置可包括NOR或NAND快闪存储器芯片、SoC装置或其它类型离散半导体封装。
装置208包含用于存储各种字段及参数(例如CID及CAK)的多个非易失性存储位置。装置208额外地包含能够执行加密操作(例如支持MAC的操作)的硬件或固件。此类操作的实例包含HMAC-SHA256、AES及CMAC操作。装置208的细节已在图1的描述中进行更全面的描述,且在此不再重复。
可使用各种技术来保护计算系统,例如计算系统100。本文描述可单独或组合使用的此类技术的细节。
图3是根据本公开的一些实施例的用于创建vTEE并将其上传到存储器装置的方法的流程图。
在框302中,所述方法创建软件或虚拟TEE(称为vTEE)。
在一个实施例中,存储器装置经配置有TEE管理程序,其管理存储在所述装置上的一或多个vTEE。存储器装置可进一步包含安全门元件以实现vTEE之间的上下文交换。最后,存储器装置可包含安全通信通道以允许不同vTEE之间的通信。管理程序控制vTEE的调度、数据存储映射以及将任何输入/输出(I/O)装置指派给vTEE。此外,管理程序管理新vTEE的安装、vTEE的移除以及对现有vTEE的递增更新。
在所说明实施例中,vTEE包括经设计以按安全方式操作的任何可执行代码。在一些实施例中,vTEE包括用于安装在存储器装置中的操作系统。在许多实施例中,vTEE可包括经设计以(经由管理程序)直接与存储器装置的硬件交互的汇编较低层代码。在一些实施例中,vTEE可额外地包含用于执行加密操作的各种加密原语。
在框304中,所述方法用KMS密钥对vTEE进行签名。
如上文论述,KMS管理与存储器装置相关联的密钥。经由所有权的安全转移,仅单个授权用户或组织可向存储器装置存取密钥。在一个实施例中,框304包括用私钥对vTEE进行签名。在此实施例中,相关联公钥由存储器装置存储。因此,由于私钥仅被拥有存储器装置的有效用户或组织知晓,因此仅此授权用户或组织可对vTEE进行有效签名。
在第一实施例中,框304可进一步包含将vTEE上传到中央服务器(例如,KMS)。在此实施例中,中央服务器存储用户/组织的私钥,并管理对所述私钥的存取。在此实施例中,vTEE的签名可卸载到KMS,使得客户系统不需要执行签名产生。在一个实施例中,KMS可进一步经装备以在产生签名之后存储vTEE。在此情形下,KMS可操作为经签名vTEE映像的中央存储库。
在第二实施例中,框304可包含对vTEE自身进行签名的客户系统。在此情形下,私钥由KMS以及客户自身两者存储。因此,在一些实施例中,客户系统可脱机地对vTEE进行签名而不需要网络接入来与KMS通信。
在所说明实施例中,可使用众所周知的数字签名算法产生虚拟签名,例如椭圆曲线数字签名算法(ECDSA)、具有安全散列算法(SHA)的ECDSA及任何其它数字签名算法。
在框306中,所述方法包括将经签名vTEE上传到存储器装置。
在一个实施例中,上传经签名vTEE包含经由经认证写入命令将vTEE写入到存储器装置。在这些实施例中,除vTEE映像之外,还可对命令自身进行签名。在另一实施例中,上传经签名vTEE可包括将经签名vTEE映像从中央服务器传输到存储器装置。在此实施例中,存储器装置可与处理器通信以接入网络接口以与中央服务器通信。
在一些实施例中,存储器装置可支持用于写入经签名vTEE映像的单独命令。在其它实施例中,存储器装置可在数据存储装置中保留指定部分以存储vTEE映像。
图4是说明根据本公开的一些实施例的用于创建软件容器并将其上传到存储器装置的方法的流程图。
在框402中,所述方法创建一或多个软件容器。在一个实施例中,软件容器包括一组应用程序。替代地,或者结合前述内容,软件容器可包括供应用程序使用的库。在一个实施例中,软件容器可包括
Figure BDA0003584563880000071
容器映像。可使用其它容器技术,例如CoreOS、LXC(Linux容器)等。用于创建软件容器的特定技术不是限制性的。实际上,可使用可将软件应用程序或库容器化的任何技术。此外,软件或库可包括任何任意代码,并且实施例不限于特定类型的库或应用程序。在所说明实施例中,软件容器通常包括将所需应用程序或库容器化的映像或一组映像。作为实例,软件容器可包括使用Dockerfile及Docker image build命令创建的
Figure BDA0003584563880000072
映像文件。因此,Dockerfile可定义一组应用程序及库以及容器的其它细节以包含在软件容器中。
在框404中,所述方法用KMS密钥对容器进行签名。框404的细节可大体上类似于框304的细节,且为简洁起见,本文不再重复框304的完整描述。
类似于框304,框404可由KMS或由本地客户端装置执行。当框404由KMS执行时,客户端将软件容器上传到中央服务器(例如,KMS)。由于KMS管理客户或客户端的公钥-私钥对,因此KMS识别适当私钥,并对经上传软件容器进行签名。在一个实施例中,KMS可进一步经装备以在产生签名之后存储软件容器。在此情形下,KMS可操作为经签名软件容器的中央存储库,且因此可充当容器注册表。在第二实施例中,框404可包含对软件容器自身进行签名的客户系统。在此情形下,私钥由KMS以及客户自身两者存储。因此,在一些实施例中,客户系统可脱机地对软件容器进行签名而不需要网络接入以与KMS通信。与框304一样,在框404中产生的签名可使用众所周知的数字签名算法产生,例如ECDSA、具有SHA的ECDSA及任何其它数字签名算法。
在框406中,所述方法包括将经签名软件容器上传到存储器装置。框406的细节可大体上类似于框306的细节,且为简洁起见,本文不再重复框306的完整描述。在一个实施例中,所述方法包括经由经认证写入命令将软件容器写入到存储器装置。在另一实施例中,上传经签名软件容器可包括将经签名软件容器从中央服务器传输到存储器装置。在一些实施例中,存储器装置可支持用于写入经签名软件容器的单独命令。在其它实施例中,存储器装置可在数据存储装置中保留指定部分以存储经签名软件容器。
图5是说明根据本公开的一些实施例的用于存储vTEE的方法的流程图。在一些实施例中,图5中论述的方法可由例如快闪存储装置的存储器装置执行。
在框502中,所述方法包括接收vTEE。如结合图3所论述,所述方法可从远程计算装置或从本地连接的装置接收vTEE。在任一情形下,vTEE包括定义vTEE的文件或一组文件。在一些实施例中,可使用与存储器装置相关联的公钥对vTEE进行加密。在一些实施例中,可使用与客户或客户端装置相关联的私钥对vTEE进行签名。
在框504中,所述方法包括验证vTEE。
在一个实施例中,所述方法通过验证与vTEE一起传输的数字签名来验证vTEE。在一个实施例中,使用客户或客户的私钥对数字签名进行签名。在所说明实施例中,客户或客户端是存储器装置的名义所有者,并且可为向存储器装置写入数据的唯一授权用户。如先前论述,所有者用其机密私钥(其对客户/客户端并且在一些实施例中对KMS是已知的)对vTEE进行签名。存储器装置存储对应公钥(或可从KMS检索公钥),并使用公钥确认数字签名。
在一些实施例中,作为框504的部分,所述方法可解密vTEE。在这些实施例中,可用与存储器装置相关联的公钥对vTEE进行加密。存储器装置存储对应私钥且因此可解密vTEE。如果加密失败,那么存储器装置可中止vTEE的存储(框508)。
在框506中,所述方法确定框504中的验证是否成功。如果不是,那么所述方法进行到框508。如果是,那么所述方法进行到框510。
在框508中,所述方法中止vTEE的存储。在此框中,所述方法确定签名无效或已损坏。在任一情况下,所述方法都无法确认vTEE是否由存储器装置的所有者签名。因此,在框508中,所述方法丢弃所接收vTEE并停止对vTEE的处理。在一些实施例中,所述方法可返回错误代码或指示无法验证vTEE的类似返回值。
在框510中,当确定数字签名有效时,所述方法存储vTEE。在一个实施例中,所述方法将vTEE写入到存储媒体的安全存储区域。
在一个实施例中,所述方法可进一步包含计算表示vTEE的一或多个黄金值。如本文所使用,黄金值指安全地表示文件或多个文件的内容的加密值(例如,散列)。在所说明实施例中,黄金值可存储在存储器装置上的安全位置中,所述位置在存储器装置外部不可存取。如将要论述,在一些实施例中,KMS还可为vTEE(及容器)产生黄金值,并且存储器装置可能够远程存取这些黄金值。值得注意的是,黄金值是可重复的并且可随意计算。因此,可针对给定文件重新计算黄金值以确认所述文件的内容与先前计算的黄金值匹配。确认文件的黄金值与先前黄金值匹配(且因此未被篡改)的过程称为证实。当黄金值部分由KMS计算时,其被称为远程证实。在图8及9的描述中对证实的细节进行更全面描述。
图6是说明根据本公开的一些实施例的用于存储软件容器的方法的流程图。在一些实施例中,图6中论述的方法可由例如快闪存储装置的存储器装置执行。
在框602中,所述方法接收软件容器。如上文论述,软件容器可包括文件或多个文件,其包含应用程序、库及其它可执行对象。如结合图4所论述,所述方法可从远程计算装置或从本地连接的装置接收软件容器。在任一情形下,软件容器包括定义软件容器的文件或一组文件。举例来说,软件容器可包括
Figure BDA0003584563880000091
映像。在一些实施例中,可使用与存储器装置相关联的公钥对软件容器进行加密。在一些实施例中,可使用与客户或客户端装置相关联的私钥对软件容器进行签名。
在框604中,所述方法包括验证软件容器。
在一个实施例中,所述方法通过验证与软件容器一起传输的数字签名来验证软件容器。此步骤的细节可与在框504中执行的步骤的细节等同地执行,为简洁起见,对框504的描述的全部内容并入本文中且不重复。另外,如结合框504所论述,软件容器可进一步用与存储器装置相关联的公钥加密,并且由存储在存储器装置上的私钥解密。如果加密失败,存储器装置可中止软件容器的存储(框608)。
在框606中,所述方法确定框604中的验证是否成功。如果不是,那么所述方法进行到框608。如果是,那么所述方法进行到框610。
在框608中,所述方法中止软件容器的存储。在此框中,所述方法确定签名无效或损坏。在任一情况下,所述方法不能够确认软件容器由存储器装置的所有者签名。因此,在框608中,所述方法丢弃所接收软件容器并停止对所述软件容器的处理。在一些实施例中,所述方法可能返回错误代码或指示无法验证软件容器的类似返回值。
在框610中,当确定数字签名有效时,所述方法存储软件容器。在一个实施例中,所述方法将软件容器写入到存储媒体的安全存储区域。
在一个实施例中,所述方法可进一步包含计算表示软件容器的一或多个黄金值。此步骤的细节可与在框610中执行的步骤的细节等同地执行,为简洁起见,对框610的描述的全部内容并入本文中且不重复。
在框612中,在存储容器之后,所述方法包括识别在执行软件容器时要使用的vTEE。在一个实施例中,可向vTEE指派全局唯一标识符(GUID)。在此实施例中,可通过识别此GUID来构建容器。举例来说,GUID可包含在用于构建映像的Dockerfile(或类似文件)中的命令中。替代地,GUID可作为标签存储在软件容器的清单中。在替代实施例中,存储器装置可仅存储单个vTEE,且因此在步骤612中识别所述单个vTEE。然而,在存储器装置存储多个vTEE的情形下,所述方法分析软件容器以确定应使用哪个vTEE来启动软件容器。
在框614中,所述方法确定是否存在有效vTEE。如先前论述,vTEE可存储在存储器装置上的安全位置中。在所说明实施例中,存储器装置将vTEE标识符(例如,GUID)映射到存储器位置,并尝试寻找与vTEE标识符相关联的存储器地址。如果此vTEE不存在,那么无法启动软件容器。
如果所述方法不能够定位正确vTEE,那么在框618中,所述方法将丢弃或隐藏所述软件容器。在第一实施例中,所述方法可丢弃软件容器。在此实施例中,所述方法触发崩溃并立即从存储器装置移除软件容器。在一些实施例中,所述方法可安全地擦除所存储软件容器。在一些实施例中,存储器装置可经配置以在安全性为高时丢弃软件容器,这是由于缺失vTEE的软件容器可能是恶意软件容器。
在另一实施例中,所述方法可代替地隐藏软件容器用于未来使用。在此实施例中,所述方法将软件容器维持在其现有存储位置,或者将软件容器移动到高速缓存位置。在此实施例中,所述方法可隐藏软件容器以允许延迟接收vTEE。在一个实施例中,所述方法无限期地隐藏软件容器。在其它实施例中,所述方法可仅将软件容器隐藏固定量的时间。在此时间到期后,所述方法可接着继续如上文描述那样丢弃软件容器。
在另一实施例中,替代地或结合前述内容,所述方法可主动检索vTEE。在此实施例中,所述方法使用vTEE的GUID或其它标识符以查询例如KMS的可信源。具体来说,所述方法可向KMS提供GUID,并请求KMS返回vTEE。KMS可接着尝试在vTEE的数据库中寻找vTEE。如果没有找到匹配,KMS返回错误,且存储器装置可丢弃或隐藏软件容器,如上文论述。然而,如果KMS可定位vTEE,其将vTEE返回到存储器装置。在此情形下,存储器装置将执行图5的方法来验证vTEE。然后,存储器装置可前进到框616。以此方式,存储器装置可经配置以按需下载vTEE。
在框616中,所述方法启动软件容器及vTEE。在此框中,存储器装置将软件容器及vTEE返回到计算系统(例如,处理器110)用于执行。在框616中,所述方法可进一步执行证实及密钥绑定操作以确保软件容器及vTEE的完整性。框616的细节在接下来论述的图7及8的描述中进行更全面的描述,并且所述图式的全部公开内容并入本文。
图7是说明根据本公开的一些实施例的安全计算系统的框图。
在所说明实施例中,客户端平台700通信地耦合到网络702。如上文论述,客户端平台700可经由网络702向远程计算装置(例如KMS)发出网络请求。在一个实施例中,客户端平台700可包括物联网(IoT)装置。
在所说明实施例中,平台700可包含客户端侧软件定义周界(SDP)704。SDP是一种其中不存在信任模型的用于网络及通信安全方法。SDP可减轻例如分布式拒绝服务、中间人、零日漏洞及服务器扫描等的攻击。除为每一附接装置提供叠加及微分段外,所述周界还围绕用户、客户端及IoT装置创建仅限邀请(基于身份)的安全周界。在所说明实施例中,SDP704执行平台700的认证以及平台700的状态验证。
对于认证,SDP 704确保存储器装置706包含有效加密密钥706E。在所说明实施例中,SDP 704可与KMS通信以验证存储在装置上的加密密钥706E。在一个实施例中,存储器装置706包含唯一标识符(UID)及一组加密密钥706E。SDP 704可使用这两个数据点与KMS确认存储在存储器装置706上的加密密钥706E与由存储器装置706存储的UID正确地相关联。
对于状态验证,SDP 704可进一步经配置以确保存储器装置706的内容有效。在一个实施例中,SDP 704可经配置以对存储器装置706的存储阵列的已知区段执行一或多个测量,并确认这些测量等于预期测量值。
一旦存储器装置706被认证,SDP 704就在存储器装置706及其试图访问的服务器(例如,KMS)之间建立个别网络连接。SDP 704分配一个其它任何人都无法接入且仅包含存储器装置706已被批准存取的服务的专用网络连接。在一个实施例中,这可能包括仅允许KMS与存储器装置706之间的通信。
在所说明实施例中,软件容器706A、706B及vTEE 706C经由SDP 704从远程端点传输到存储器装置706。因此,确保软件容器706A、706B及vTEE 706C仅从已知端点(例如,KMS)接收。在前述图3到6中描述接收软件容器706A、706B及vTEE 706C的细节,且在本文中不重复。
在所说明实施例中,存储器装置706存储待部署到计算系统708的软件容器706A、706B及vTEE 706C。在所说明实施例中,计算系统708可包括SoC或类似装置。一般来说,计算系统708可包括包含处理元件(例如,处理器)及可存取硬件装置的任何计算系统。
在所说明实施例中,计算系统708启动存储在存储器装置706上的软件容器706A、706B及vTEE 706C。在所说明实施例中,存储器装置706通过总线将软件容器706A、706B及vTEE 706C传送到计算系统708。在所说明实施例中,存储器装置706存储两个软件容器706A、706B。第一容器706A存储第一组应用程序708A及库708B。第二容器706B存储第二组应用程序708C及库708D。此外,vTEE 706C包含安全OS 708E、安全固件708F及虚拟化硬件708G(例如,虚拟CPU、虚拟易失性存储器、虚拟外围装置等)。在所说明实施例中,软件容器706A、706B两者都经配置以在vTEE 706C中执行。也就是说,两个软件容器706A、706B都可识别vTEE 706C的GUID。最终,软件容器706A、706B及vTEE 706C在计算系统708的底层物理硬件(708H)(例如,物理CPU、DRAM等)上运行。
在所说明实施例中,存储器装置706配置有证实逻辑706D及加密密钥706E。这两个组件使得能够将存储器装置706的内容安全加载到计算系统708。
在所说明实施例中,证实逻辑706D在将软件容器706A、706B及vTEE 706C释放到计算系统708之前确认存储器装置706的身份。在一个实施例中,存储器装置706包含唯一装置机密(UDS)作为加密密钥706E的部分。在一个实施例中,UDS包括存储器装置706特有的值,并且可经由物理不可克隆功能(PUF)产生。UDS也可由KMS存储。在一个实施例中,存储器装置706使用UDS(及/或其它秘钥)来计算软件容器706A、706B及vTEE 706C的黄金测量值。存储器装置706可将这些黄金测量值存储在存储阵列中的安全位置中。在将软件容器706A、706B及vTEE 706C传送到计算系统708之前,存储器装置706重新测量软件容器706A、706B及vTEE 706C,并将最新测量值与黄金测量值进行比较。如果测量值匹配,那么存储器装置706可证实软件容器706A、706B及vTEE706C是有效的且未被篡改。然而,如果测量值不匹配,那么存储器装置706可防止将软件容器706A、706B或vTEE 706C中的任一者传送到计算系统708,从而保护计算系统708免受恶意软件容器706A、706B或vTEE 706C的攻击。
图8是根据本公开的一些实施例的用于在安全计算环境中启动容器或vTEE的方法的流程图。在一些实施例中,图8中论述的方法可由例如快闪存储装置的存储器装置执行。
在框802中,所述方法包括接收启动一或多个软件映像的请求。在一个实施例中,主机处理器向存储器装置发出启动软件映像的请求。在一个实施例中,请求包括将软件映像从存储器装置的存储阵列读取到可由主机处理器存取的易失性存储器中的请求。
在所说明实施例中,软件映像可包括软件容器或vTEE。在一些实施例中,请求可识别单个软件映像(例如,单个容器或vTEE)。在其它实施例中,请求可识别多个软件容器、多个vTEE或软件容器与vTEE的组合。
在一个实施例中,如果请求仅识别一或多个软件容器,那么所述方法可自动识别一或多个对应vTEE以与软件容器一起返回。如上文论述,在一些实施例中,软件容器和与vTEE相关联的标识符相关联。因此,存储器装置可在没有明确指示识别vTEE的情况下自动识别vTEE。替代地,或者结合前述内容,反过来的情况可能是成立的。也就是说,给定vTEE可与一或多个软件容器相关联。在此实施例中,所述方法可接收对vTEE的请求并自动识别要返回的所需软件容器。
在一个实施例中,请求可仅包含逻辑块地址(LBA)。在此实施例中,所述方法可识别位于LBA处的软件映像的类型,并基于此识别确定要返回的内容,如上文论述。为实施此功能性,在第一实施例中,存储器装置可维持LBA(或物理块地址,PBA)值到软件映像类型的映射。在第二实施例中,存储器装置可开始在LBA(或PBA)处读取数据,并基于映像的第一字节确定映像类型(例如,幻数)。
在框804中,所述方法测量软件映像。如上文论述,当所述方法下载软件映像时,其可计算黄金测量。由于映像在即时接收时保证是准确的,因此存储器装置可在此时执行此黄金测量,并将所计算测量值存储在安全且持久的存储位置。例如:
Mgolden=HMAC(Keyprivate,image) 等式1
在等式1中,HMAC是产生固定长度值的基于散列的消息认证代码算法,Keyprivate包括存储器装置已知的私有或其它机密值,且image包括软件映像的二进制内容。在一个实施例中,Keyprivate可包括UDS或由PUF产生的其它值,且因此对于存储器装置是唯一的。在其它实施例中,Keyprivate包括与KMS及客户共享的私钥(例如,非对称私钥)。值得注意的是,在一些实施例中,如果基于PUF产生Keyprivate的值,那么Keyprivate的值可能永远不需要永久存储,而是可根据需要基于PUF产生。因此,Keyprivate的存储不足确保密钥不会泄漏。
在框804中,所述方法根据以下对软件映像的当前内容重复计算:
Mcurrent=HMAC(Keyprivate,imagecurrent) 等式2
在等式2中,imagecurrent表示当前存储的软件映像的二进制内容,其中当前存储的软件映像据称包括与等式1中的image相同的映像。
当等式1中的image的值与等式2中的imagecurrent的值相同时,Mgolden及Mcurrent的值应相等。然而,如果软件映像在被接收之后被(例如,被恶意用户或恶意软件)修改或篡改,那么等式1中的image与等式2中的imagecurrent的二进制内容将不相等,且因此Mgolden与Mcurrent将不相等。所述方法可对要返回的每一软件映像(例如,软件容器或vTEE)执行此计算。
在框806中,所述方法确定测量中的任一者是否失败。如上文论述,当Mgolden与Mcurrent不相等时,给定软件映像的测量失败,因此在框806中,所述方法确定针对每一软件映像Mgolden是否==Mcurrent
如在框804中论述,所述方法可识别要返回的多个软件映像。在一些实施例中,如果单个软件映像失败,那么所述方法将确定失败已经发生,因此
pass=comp1&&comp2&&...compn 等式3
在等式3中,compi表示针对给定软件映像(i)的黄金测量值(Mi,golden)与当前测量值(Mi,current)之间的比较,即,compi=Mi,golden==Mi,current。如果这些比较中的任一者失败,那么方法将返回全局失败。换句话说,只有正确测量所有软件映像,所述方法才会通过。
在替代实施例中,所述方法可能失败或通过每一个别软件映像:
pass=comp1||comp2||...compn 等式4
在此实施例中,仅可返回具有通过的测量值的映像,而不返回具有失败的测量值的映像。在此实施例中,可针对每一失败软件映像执行框808,而可针对每一通过软件映像执行框810。在此实施例中,所述方法在框808中不中止,而是返回指示失败的测量值的错误代码。为简洁起见,框808及810的描述假定等式3用于在继续进行之前确认所有测量值。
如果所述方法在框806中确定测量值中任一者失败,那么所述方法在框808中继续进行到中止。在一个实施例中,中止包括停止软件映像的所有处理,并向主机处理器返回指示没有返回数据的错误代码。在一些实施例中,错误代码进一步识别哪些软件映像无法被验证。在一些实施例中,所述方法可进一步从存储阵列移除与失败的测量值相关联的那些软件映像。在一些实施例中,所述方法可在移除那些映像之后重新下载所述映像。在一些实施例中,在重新下载映像之后,所述方法可返回到框804以重新测量先前失败的映像。在此情形下,如果重新测量值通过,那么所述方法可继续进行到框810。
另一方面,如果所述方法确定软件映像的所有测量值都通过,那么在框810中,所述方法将软件映像传输到主机处理器。如上文结合图7描述,主机过程接着可将映像复制到易失性存储器,并继续进行以启动软件映像。
图9是说明展示在本公开的各种实施例中使用的客户端或服务器装置的实例的计算装置的框图。
计算装置900可包含比图9所展示的组件更多或更少的组件,这取决于装置900的部署或使用。举例来说,服务器计算装置(例如机架式服务器)可不包含音频接口952、显示器954、键盘956、照明器958、触觉接口962、全球定位服务(GPS)接收器964或照相机/传感器966。一些装置可包含未展示的额外组件,例如图形处理单元(GPU)装置、加密协处理器、人工智能(AI)加速器或其它外围装置。
如在图式中展示,装置900包含中央处理单元(CPU)922,其经由总线924与大容量存储器930通信。计算装置900还包含一或多个网络接口950、音频接口952、显示器954、键盘956、照明器958、输入/输出接口960、触觉接口962、任选全球定位系统(GPS)接收器964及照相机或其它光学、热或电磁传感器966。装置900可包含一个照相机/传感器966或多个照相机/传感器966。照相机/传感器966在装置900上的定位可根据装置900型号、装置900能力及类似者或其某一组合而改变。
在一些实施例中,CPU 922可包括通用CPU。CPU 922可包括单核或多核CPU。CPU922可包括芯片上系统(SoC)或类似嵌入式系统。在一些实施例中,可使用GPU来代替CPU 922,或者将其与CPU 922组合使用。大容量存储器930可包括动态随机存取存储器(DRAM)装置、静态随机存取存储器装置(SRAM)或快闪(例如,NAND快闪)存储器装置。在一些实施例中,大容量存储器930可包括此类存储器类型的组合。在一个实施例中,总线924可包括外围组件互连快速(PCIe)总线。在一些实施例中,总线924可包括多个总线而不是单个总线。
大容量存储器930说明用于存储例如计算机可读指令、数据结构、程序模块或其它数据的信息的计算机存储媒体的另一实例。大容量存储器930存储用于控制计算装置900的低级操作的基本输入/输出系统(“BIOS”)940。大容量存储器还存储用于控制计算装置900的操作的操作系统(941)。
应用程序942可包含计算机可执行指令,当由计算装置900执行时,所述计算机可执行指令执行先前在前述图式的描述中描述的方法中的任一者(或方法的部分)。在一些实施例中,实施方法实施例的软件或程序可从硬盘驱动器(未说明)读取,并由CPU 922临时存储在RAM 932中。然后,CPU 922可从RAM932中读取软件或数据,对其进行处理,并再次将其存储到RAM 932。
计算装置900可任选地与基站(未展示)通信或直接与另一计算装置通信。网络接口950有时被称为收发器、收发装置或网络接口卡(NIC)。
音频接口952产生及接收例如人语音的声音的音频信号。举例来说,音频接口952可耦合到扬声器及麦克风(未展示)以实现与其它者的通信或产生对某一动作的音频确认。显示器954可为液晶显示器(LCD)、气体等离子体、发光二极管(LED)或与计算装置一起使用的任何其它类型的显示器。显示器954还可包含触摸屏,其经布置以接收来自例如尖笔的对象的输入或来自人手的数字。
键盘956可包括经布置以从用户接收输入的任何输入装置。照明器958可提供状态指示或提供光。
计算装置900还包括用于使用例如USB、红外、
Figure BDA0003584563880000161
或类似者的通信技术与外部装置通信的输入/输出接口960。触觉接口962向客户端装置的用户提供触觉反馈。
任选GPS接收器964可确定计算装置900在地球表面上的物理坐标,其通常输出作为纬度及经度值的位置。GPS接收器964还可采用其它地理定位机制,其包含(但不限于)三角测量、辅助GPS(AGPS)、E-OTD、CI、SAI、ETA、BSS或类似者,以进一步确定计算装置900在地球表面上的物理位置。然而,在一个实施例中,计算装置900可通过其它组件进行通信,提供可用于确定装置的物理位置的其它信息,包含例如MAC地址、IP地址或类似者。
已经根据对计算机存储器内的数据位的操作的算法及符号表示来呈现前述详细描述的某些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其它技术人员传达其工作实质的方式。此处,算法通常被认为是导致所需结果的自洽操作序列。所述操作是需要对物理量的物理操纵的操作。通常但不是必须的,这些量采用能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。已经证明,有时主要出于通用的原因将这些信号称为位、值、元件、符号、字符、项、数字或类似者是方便的。
然而,应牢记,所有这些及类似术语均应与适当物理量相关联并且仅仅是应用于这些量的方便标签。本公开内容可指代计算机系统或类似电子计算装置的动作及过程,所述计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
本公开还涉及用于执行本文的操作的设备。此设备可经特定构造用于预期目的,或者其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适用于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文提出的算法及显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文的教示的程序一起使用,或者可证明构造更专用设备来执行所述方法是方便的。各种这些系统的结构将如下文描述中所阐述那样出现。另外,未参考任何特定编程语言来描述本公开。将了解,可使用各种编程语言来实施如本文所描述的本公开的教示。
本公开可被提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以由机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在此描述中,各种功能及操作被描述为由计算机指令执行或由计算机指令引起以简化描述。然而,所属领域的技术人员将认识到,此类表达的意思是功能是由一或多个控制器或处理器(例如微处理器)执行计算机指令而产生的。替代地或组合地,可使用具有或不具有软件指令的专用电路来实施功能及操作,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。可使用没有软件指令的硬接线电路或结合软件指令的硬接线电路来实施实施例。因此,技术既不限于硬件电路与软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。
在前述说明书中,已经参考本公开的特定实例实施例描述本公开的实施例。显而易见的是,在不脱离如所附权利要求书中阐述的本公开的实施例的更广泛精神及范围的情况下,可对所述实施例进行各种修改。因此,说明书及图式应被认为是说明性意义而不是限制意义。

Claims (20)

1.一种存储器装置,其包括:
存储媒体;及
处理器,所述处理器经配置以:
接收软件映像,
验证与所述软件映像相关联的数字签名,
将所述软件映像写入到所述存储媒体,
从主机处理器接收启动所述软件映像的请求,
验证所述软件映像,及
将所述软件映像传输到所述主机处理器。
2.根据权利要求1所述的存储器装置,其中所述软件映像包括虚拟可信执行环境vTEE。
3.根据权利要求1所述的存储器装置,其中所述软件映像包括软件容器。
4.根据权利要求3所述的存储器装置,其中所述处理器进一步经配置以:
识别与所述软件容器相关联的vTEE;
验证所述vTEE,及
将所述vTEE传输到所述主机处理器。
5.根据权利要求1所述的存储器装置,其中在将所述软件映像写入到所述存储媒体之前,所述处理器进一步经配置以计算所述软件映像的黄金测量值,并将所述黄金测量值写入到所述存储媒体中的安全存储位置。
6.根据权利要求5所述的存储器装置,其中验证所述软件映像包括计算所述软件映像的当前测量值,并确定所述当前测量值是否等于所述黄金测量值。
7.根据权利要求1所述的存储器装置,其中验证与所述软件映像相关联的所述数字签名包括从所述存储媒体读取公钥,所述公钥与用于产生所述数字签名的私钥相关联,及使用所述公钥验证所述数字签名。
8.根据权利要求1所述的存储器装置,其中接收所述软件映像包括从软件定义的周界接收所述软件映像。
9.根据权利要求8所述的存储器装置,其中接收所述软件映像包括从密钥管理服务器接收所述软件映像。
10.一种方法,其包括:
在存储器装置处接收软件映像,所述软件映像选自由软件容器或虚拟可信执行环境vTEE组成的群组;
通过所述存储器装置的加密处理器验证与所述软件映像相关联的数字签名;
通过所述存储器装置将所述软件映像写入到存储阵列;
通过所述存储器装置从主机处理器接收启动所述软件映像的请求;
通过所述存储器装置的所述加密处理器验证所述软件映像;及
通过所述存储器装置将所述软件映像传输到所述主机处理器。
11.根据权利要求10所述的方法,其中在将所述软件映像写入到所述存储媒体之前,所述方法进一步包括通过所述存储器装置的所述加密处理器计算所述软件映像的黄金测量值,以及通过所述存储器装置的所述加密处理器将所述黄金测量值写入到所述存储媒体中的安全存储位置。
12.根据权利要求11所述的方法,其中验证所述软件映像包括计算所述软件映像的当前测量值,并确定所述当前测量值是否等于所述黄金测量值。
13.根据权利要求10所述的方法,其中验证与所述软件映像相关联的所述数字签名包括读取公钥,所述公钥与用于产生所述数字签名的私钥相关联,及使用所述公钥验证所述数字签名。
14.根据权利要求10所述的方法,其中接收所述软件映像包括从软件定义的周界接收所述软件映像。
15.根据权利要求14所述的方法,其中接收所述软件映像包括从密钥管理服务器接收所述软件映像。
16.一种非暂时性计算机可读存储媒体,其用于有形地存储能够由计算机处理器执行的计算机程序指令,所述计算机程序指令定义以下步骤:
接收软件映像,所述软件映像选自由软件容器或虚拟可信执行环境vTEE组成的所述群组;
验证与所述软件映像相关联的数字签名;
将所述软件映像写入到存储阵列;
从主机处理器接收启动所述软件映像的请求;
验证所述软件映像;及
将所述软件映像传输到所述主机处理器。
17.根据权利要求16所述的非暂时性计算机可读存储媒体,其中在将所述软件映像写入到所述存储媒体之前,所述计算机程序指令进一步定义计算所述软件映像的黄金测量值并将所述黄金测量值写入到所述存储媒体中的安全存储位置的步骤。
18.根据权利要求17所述的非暂时性计算机可读存储媒体,其中验证所述软件映像包括计算所述软件映像的当前测量值,并确定所述当前测量值是否等于所述黄金测量值。
19.根据权利要求16所述的非暂时性计算机可读存储媒体,其中验证与所述软件映像相关联的所述数字签名包括从所述存储媒体读取公钥,所述公钥与用于产生所述数字签名的私钥相关联,及使用所述公钥验证所述数字签名。
20.根据权利要求16所述的非暂时性计算机可读存储媒体,其中接收所述软件映像包括从软件定义的周界接收所述软件映像。
CN202210362662.8A 2021-04-08 2022-04-07 用于保护处于静止及运动的数据的灵活安全性enclave Pending CN115203700A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/225,519 2021-04-08
US17/225,519 US11811948B2 (en) 2021-04-08 2021-04-08 Flexible security enclave for protecting data at rest and in motion

Publications (1)

Publication Number Publication Date
CN115203700A true CN115203700A (zh) 2022-10-18

Family

ID=83509656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210362662.8A Pending CN115203700A (zh) 2021-04-08 2022-04-07 用于保护处于静止及运动的数据的灵活安全性enclave

Country Status (2)

Country Link
US (1) US11811948B2 (zh)
CN (1) CN115203700A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220374529A1 (en) * 2021-04-28 2022-11-24 MatterFi Secure cryptographic server card
US20230015519A1 (en) * 2021-07-12 2023-01-19 Dell Products, L.P. Automatically evicting an owner of a security processor
US12476823B2 (en) * 2023-06-12 2025-11-18 Wiz, Inc. System and method for validating a signature of a virtual workload image in runtime

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080298596A1 (en) * 2007-05-30 2008-12-04 Fujitsu Limited Image encryption/decryption system
JP5085287B2 (ja) * 2007-11-21 2012-11-28 株式会社リコー 情報処理装置、正当性検証方法および正当性検証プログラム
US11132440B2 (en) * 2018-11-01 2021-09-28 Foundation Of Soongsil University-Industry Cooperation Hybrid trust execution environment based android security framework, android device equipped with the same and method of executing trust service in android device
KR102864752B1 (ko) * 2020-01-08 2025-09-24 삼성전자주식회사 소프트웨어의 인증을 위한 장치 및 방법

Also Published As

Publication number Publication date
US20220329437A1 (en) 2022-10-13
US11811948B2 (en) 2023-11-07

Similar Documents

Publication Publication Date Title
EP3695587B1 (en) Providing secure communications between a host system and a data processing accelerator
CN112262546B (zh) 用于数据处理加速器的密钥分配和交换的方法和系统
US11799651B2 (en) Data processing accelerator having a security unit to provide root trust services
US11233652B2 (en) Method and system to derive a session key to secure an information exchange channel between a host system and a data processing accelerator
CN112650985B (zh) 使用隐式数据签名人工智能水印的方法和系统
CN110612699B (zh) 用于保护计算系统存储器的方法和系统以及存储介质
EP3794477B1 (en) Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
US11609766B2 (en) Method and system for protecting data processed by data processing accelerators
CN115203700A (zh) 用于保护处于静止及运动的数据的灵活安全性enclave
CN112528243A (zh) 用于通过数据处理加速器处理数据的系统和方法
CN112528242A (zh) 使用用于数据处理加速器的水印算法配置水印单元的系统和方法
US11616651B2 (en) Method for establishing a secure information exchange channel between a host system and a data processing accelerator
CN112650988B (zh) 使用内核加密数据的方法和系统
US11409534B2 (en) Attestation protocol between a host system and a data processing accelerator
JP2022527904A (ja) 無線更新の有効性確認
CN116579029A (zh) 使用具有加密密钥的存储器装置的许可控制
CN112650990B (zh) 使用查询来签名人工智能水印的方法和系统
US11693970B2 (en) Method and system for managing memory of data processing accelerators
US11281251B2 (en) Data processing accelerator having a local time unit to generate timestamps
US20230281324A1 (en) Advanced elastic launch for trusted execution environments
CN112650987B (zh) 使用内核签名人工智能水印的方法和系统
CN112650991B (zh) 使用内核签名输出的方法和系统
CN112650989B (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