CN113906424A - 用于磁盘认证的装置和方法 - Google Patents
用于磁盘认证的装置和方法 Download PDFInfo
- Publication number
- CN113906424A CN113906424A CN201980096733.0A CN201980096733A CN113906424A CN 113906424 A CN113906424 A CN 113906424A CN 201980096733 A CN201980096733 A CN 201980096733A CN 113906424 A CN113906424 A CN 113906424A
- Authority
- CN
- China
- Prior art keywords
- enclave
- application
- disk image
- disk
- public key
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000012545 processing Methods 0.000 claims description 41
- 238000007789 sealing Methods 0.000 claims description 36
- 230000006870 function Effects 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 description 49
- 230000008569 process Effects 0.000 description 28
- 230000007246 mechanism Effects 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002207 retinal effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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/53—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 executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/78—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及一种用于软件认证的装置和方法,其中,在可信执行环境中初始化包括操作系统(operation system,OS)库的飞地;执行软件认证以验证所述飞地的标识;使用所述OS库在所述飞地内执行应用程序,其中,执行所述软件认证包括对与所述应用程序相关联的磁盘映像的内容进行认证。
Description
技术领域
本发明涉及一种用于软件认证的装置和方法,具体地,涉及分布式计算环境中的磁盘认证和磁盘密封。
背景技术
在分布式计算环境中,云计算作为一种实现更加灵活、可扩展、高效系统的方式变得越来越重要。然而,随着云计算服务的用户失去了对云提供商托管的数据和应用程序的直接控制权,云服务的可信度成为阻碍云应用程序部署的主要问题。
为了克服用户对使用云服务的保留意见,云/服务提供商提供所谓的可信服务,其向他们的用户确保他们向该服务提供的数据和应用程序将保持安全且受到保护,并且该服务将仅按照用户的期望使用这些资产。
可信服务的一个示例是可信云服务,它向其客户保证他们的应用程序将以未经修改并且甚至受到云提供商保护的形式在云中运行,云提供商提供服务作为基础设施即服务(infrastructure as a service,IaaS)。
可信服务可以使用诸如英特尔软件保护扩展(Software Guard Extensions,SGX)之类的可信执行环境(trusted execution environment,TEE)开发。TEE是处理器的安全区域,其建立隔离执行环境,该环境提供安全功能,诸如隔离执行、使用TEE执行的应用程序的完整性以及其资产的机密性。
诸如英特尔软件保护扩展(Software Guard Extensions,SGX)之类的可信执行环境确保在其中运行的应用程序具有以下属性:代码不可变性,意味着受保护应用程序的逻辑不能被更改;数据机密性,确保应用程序在未经授权的情况下不能被访问;以及认证,意味着受保护应用程序具有向第三方证明其标识的能力,即它确实是在TEE中运行的特定程序。因此,使用TEE,服务提供商可以确保用户的资产将受到保护,并且所提供的服务将能够向用户认证其标识。
服务标识通常是一个很大的数字,例如256位,其可以是服务可执行文件(即应用程序的二进制代码)或包括服务的各个组件和拓扑的整个应用程序部署的加密哈希的结果。在使用英特尔SGX的情况下,应用程序的标识是应用程序的哈希,即创建并开始运行隔离执行环境或受保护容器(通常称为飞地)时,可执行文件和存储器初始状态的哈希。
在英特尔SGX中,只有在用户模式下执行应用程序时,才能确保上述保护。然而,例如关于磁盘I/O以及异常和中断处理的系统调用调用操作系统(operating system,OS)内核,该内核通常是不可信任的。此外,在应用程序执行期间调用OS功能需要特殊处理,并且在执行性能方面的代价相对较高。因此,将应用程序移植到英特尔SGX需要付出一些努力,这限制了英特尔SGX的传播,尽管它具有显著的安全优势。
为了简化将应用程序移植到英特尔SGX的过程,将Linux内核库(Linux KernelLibrary,LKL)移植到英特尔SGX。LKL将操作系统服务作为库公开给应用程序。在LKL中,系统调用被转换为标准函数调用。SGX-LKL,即具有移植的LKL的英特尔SGX在SGX飞地内执行整个LKL,并因此执行由LKL处理的任何可执行文件。SGX-LKL的主要优势是允许在SGX中运行未经修改的应用程序。
尽管SGX-LKL具有优势,但也存在许多安全问题。作为示例,SGX-LKL认证仅覆盖LKL,而不覆盖正在执行的应用程序。因此,挑战者在认证过程中无法区分正确的应用程序与正在执行的恶意应用程序。此外,磁盘内容通常不会通过SGX-LKL认证进行认证。对于以诸如Python、Java等解译语言运行的应用程序,应用程序的行为不仅取决于可执行文件(即解释器),而且主要取决于数据。此外,应用程序行为还受到配置文件的影响。最后,在使用SGX-LKL的情况下,磁盘内容不受保护。因此,磁盘上的数据可能会被公开和/或更改。
针对上述问题提出的一个直接解决方案是向SGX-LKL提供加密磁盘。只有应用程序所有者知道加密密钥。在执行开始时,SGX-LKL向所有者认证其标识并与所有者建立安全信道。然后,所有者提供使得能够对磁盘进行解密的诸如公钥的加密密钥,并且程序执行开始。
该解决方案具有两大缺点:
首先,容易受到以下攻击:攻击者借助使用自己的密钥加密的磁盘开始SGX-LKL执行,并向SGX-LKL飞地提供密钥。SGX-LKL飞地开始在磁盘上执行恶意软件,该恶意软件会更改SGX-LKL飞地的存储器并改变其行为。SGX-LKL飞地现在已损坏,让真正的应用程序所有者误以为它是新创建的SGX-LKL飞地实例。
其次,该解决方案假设存在可以提供磁盘加密密钥的实体,诸如应用程序的所有者。遗憾的是,一些应用程序,特别是分散式应用程序,没有所有者,但仍然需要证明自己的标识。
因此,需要提供一种防御上述攻击的机制。特别地,该机制应提供不仅覆盖可执行文件而且覆盖磁盘内容的认证。最后,应密封磁盘内容以防止篡改,在分布式执行的情况下尤为如此。
发明内容
本发明提供了一种用于分布式计算环境中的磁盘认证和磁盘密封的装置和方法。除应用程序的可执行文件(包括LKL)之外,本发明的扩展认证还包括与所述应用程序相关联的磁盘的内容。换句话说,在认证过程中,除所述应用程序的所述可执行文件的真实性之外,本发明的SGX-LKL飞地还将能够证明所述应用程序正在使用的所述磁盘的所述内容的真实性。根据本发明提供的所述磁盘密封确保将仅使用经扩展认证认证的磁盘映像,并且其内容将保持受到保护。
根据本发明的一个方面,提供了一种用于软件认证的装置,其中所述装置包括处理电路,所述处理电路用于:在可信执行环境(trusted execution environment,TEE)中初始化飞地,其中所述飞地包括操作系统(operation system,OS)库;执行软件认证,以验证所述飞地的标识;以及使用所述OS库在所述飞地内执行应用程序;其中执行所述软件认证包括对与所述应用程序相关联的磁盘映像的内容进行认证。特别地,所述处理电路可以包括磁盘认证单元,用于对与所述应用程序相关联的磁盘映像的所述内容进行认证。
所述磁盘映像的所述内容可以包括以下各项中的至少一个:所述应用程序的可执行文件、所述应用程序的解释程序、所述应用程序的执行数据以及所述应用程序的配置文件。
根据另一方面,所述处理电路,特别地,所述磁盘认证单元,还可以用于在初始化所述飞地之前,将公钥或所述公钥的加密哈希添加到所述飞地的存储器中。所述处理电路,特别地,所述磁盘认证单元,还可以用于接收另一公钥作为所述飞地的输入,其中验证所述飞地的所述标识包括:根据添加到所述飞地的所述存储器中的所述相应公钥或所述公钥的加密哈希,验证由所述处理电路,特别地,所述磁盘认证单元,计算的所述接收的另一公钥或所述接收的另一公钥的加密哈希。所述处理电路,特别地,所述磁盘认证单元,还可以用于接收所述磁盘映像的所述内容的加密签名作为所述飞地的输入,其中验证所述飞地的所述标识包括通过使用所述公钥和所述加密签名来验证所述磁盘映像的所述内容。
根据另一方面,所述处理电路,特别地,所述磁盘认证单元,还可以用于对所述磁盘映像的所述内容应用加密哈希函数,并在初始化所述飞地之前将得到的加密哈希添加到所述飞地的存储器中。验证所述飞地的标识包括通过使用所述加密哈希来验证所述磁盘映像的所述内容。
根据又一方面,所述处理电路还可以用于:在所述飞地的所述标识的所述验证失败时,停止执行所述应用程序。为此,所述处理电路可以包括磁盘密封单元。所述处理电路,特别地,所述磁盘密封单元,还可以用于:在执行所述应用程序之前,生成随机加密密钥;读取所述磁盘映像;并通过使用所述随机加密密钥对所述磁盘映像进行加密来创建所述磁盘映像的副本。所述处理电路,特别地,所述磁盘密封单元,还可以用于在成功验证所述飞地的所述标识时,通过使用所述飞地的密钥,诸如所述飞地的密封密钥,对所述随机加密密钥进行加密,并将所述加密的随机加密密钥添加到所述加密的副本中。所述处理电路,特别地,所述磁盘密封单元,还可以用于在执行所述应用程序期间,将所述OS库的所有磁盘访问调用重定向到所述加密的副本。
根据本发明的一个方面,提供了一种用于软件认证的方法,其中所述方法包括:在可信执行环境(trusted execution environment,TEE)中初始化飞地,其中所述飞地包括操作系统(operation system,OS)库;执行软件认证,以验证所述飞地的标识;以及使用所述OS库在所述飞地内执行应用程序;其中执行所述软件认证包括对与所述应用程序相关联的磁盘映像的内容进行认证。
所述磁盘映像的所述内容可以包括以下各项中的至少一个:所述应用程序的可执行文件、所述应用程序的解释程序、所述应用程序的执行数据以及所述应用程序的配置文件。
根据进一步的方面,所述方法还可以包括:在初始化所述飞地之前,将公钥或所述公钥的加密哈希添加到所述飞地的存储器中。所述方法还可以包括:接收另一公钥作为所述飞地的输入;以及根据添加到所述飞地的所述存储器中的所述相应公钥或所述公钥的加密哈希,验证所述接收的另一公钥或所述接收的另一公钥的加密哈希,以验证所述飞地的所述标识。
所述方法还可以包括:接收所述磁盘映像的所述内容的加密签名作为所述飞地的输入;以及通过所述公钥和所述加密签名来验证所述磁盘映像的所述内容,以验证所述飞地的所述标识。
根据又一方面,所述方法还可以包括:对所述磁盘映像的所述内容应用加密哈希函数;以及在初始化所述飞地之前,将得到的加密哈希添加到所述飞地的存储器中。所述方法还可以包括:通过使用所述加密哈希来验证所述磁盘映像的所述内容,以验证所述飞地的所述标识。
所述方法还可以包括:在所述飞地的所述标识的所述验证失败时,停止执行所述应用程序。
根据另一方面,所述方法还可以包括:生成随机加密密钥;读取所述磁盘映像;以及在执行所述应用程序之前,通过使用所述随机加密密钥对所述磁盘映像进行加密来创建所述磁盘映像的副本。在成功验证所述飞地的所述标识时,通过使用所述飞地的密钥,诸如所述飞地的密封密钥,可以对所述随机加密密钥进行加密;以及可以将所述加密的随机加密密钥添加到所述加密的副本中。在执行所述应用程序期间,可以将所述OS库的所有磁盘访问调用重定向到所述加密的副本。
此外,提供了一种存储指令的计算机可读介质,其中所述计算机可读介质在处理器上执行时,使所述处理器执行上述方法中的任意一种。
如上所述,所述装置可以包括一种用于执行上述方法中的任意一种的专用磁盘认证单元和/或专用磁盘密封单元。所述磁盘认证单元和/或所述磁盘密封单元可以实现为一个或多个软件模块或所述处理电路的单独单元。所述磁盘认证单元和/或所述磁盘密封单元可以实现为软件和硬件的组合。所述处理可以由芯片执行,诸如通用处理器、CPU、GPU或现场可编程门阵列(field programmable gate array,FPGA)等。然而,本发明不限于在可编程硬件上实现所述磁盘认证单元和/或所述磁盘密封单元。所述单元也可以在专用集成电路(application-specific integrated circuit,ASIC)上实现,或者通过上述硬件组件的组合实现。
附图说明
下文将参考以下附图详细描述示例实施例:
图1示意性地示出了诸如远程计算之类的远程服务的通用客户端-服务器配置;
图2示意性地示出了本领域已知的使用安全容器进行可信计算的配置;
图3示出了本领域已知的安全容器中的应用程序的运行时执行的概念;
图4示出了本领域已知的SGX-LKL飞地的概念;
图5示出了根据本发明实施例提供的基于所有者的磁盘认证过程和基于内容的磁盘认证过程;
图6示出了根据本发明提供的磁盘密封过程。
具体实施方式
本发明涉及诸如云计算、软件即服务(Software as a Service,SaaS)、基础设施即服务(Infrastructure as a Service,IaaS)和远程计算之类的远程服务的身份验证的一般技术领域。通过添加与远程应用程序相关联的磁盘内容的认证和磁盘密封,本发明扩展了用于认证远程应用程序的标识的现有机制,以维护磁盘内容的机密性和完整性。
图1示意性地示出了一种用于远程服务的通用客户端-服务器架构。该配置包括与一个或多个服务器200通信的一个或多个客户端100。如下所述,客户端可以在用户设备或客户端设备中实现。服务器可以在服务提供商和/或云提供商提供的服务器设备中实现。然而,本发明不限于这些具体实现方式,可以应用程序于本地客户端(设备)从远程服务器(设备)请求由服务器提供给客户端的服务的任何配置。应当理解,该服务可以由多个服务器或服务器设备提供,但本身可以依赖于分布式系统架构。服务器可以包括例如作为前端的Web服务器、应用程序服务器和数据库服务器。为了简单起见,提供该服务的远程实体,无论是单个服务器、服务器设备还是基于分布式或微服务的系统等,在下文中将称为服务提供商。此外,客户端不限于单个客户端或客户端设备,其本身可以包括分布式系统。客户端还可以在分布式环境中充当服务器本身,例如作为中介服务器。这里使用的术语“客户端”包括上述架构中的任意一个,仅指示实体100(例如,客户端设备)从远程实体200(例如,服务器设备)接收服务。关于远程服务的提供和接收之外的其它方面,客户端100和服务器200甚至可以切换角色。
客户端100和服务提供商200可以可操作地连接到一个或多个相应的客户端数据存储器和服务器数据存储器(未示出),所述客户端数据存储器和服务器数据存储器可以用于存储相应客户端100和服务器200本地的信息,诸如应用程序代码、应用程序数据、输入数据、输出数据、身份验证数据等。
客户端100和服务提供商200可以使用箭头所示的通信框架彼此传达信息。所述信息可以包括身份验证信息,诸如用于建立安全通信信道的密钥和/或签名、一个或多个应用程序(例如,代码或二进制文件)、用于执行远程应用程序的输入数据和/或配置数据、远程应用程序的输出数据等。如下所述,信息还可以包括用于软件认证的密钥和/或签名。此外,可以将应用程序提供为解释器执行的解释代码。此外,应用程序可以作为将由解释器执行的解释代码予以提供。
在IaaS架构中,远程应用程序可以由客户端100提供,并在由服务提供商执行之前经由通信通道传达给服务提供商200。在这种情况下,远程服务可以包括安装,例如编译或解释从客户端接收的应用程序代码,在服务提供商侧以远程应用程序的形式执行接收的应用程序,以及将执行的结果传达回客户端100。在SaaS架构中,远程应用程序由服务提供商本身提供,并且远程服务包括潜在地对从客户端100接收的输入数据和/或配置数据执行远程应用程序,并将结果传送给客户端。
用于客户端100与服务提供商200之间通信的通信框架可以实现任何公知的通信技术和协议。通信框架可以实现为分组交换网络(例如,诸如互联网之类的公共网络、诸如企业内部网之类的专用网络等)、电路交换网络(例如,公共交换电话网络)或分组交换网络和电路交换网络(具有合适的网关和转换器)的组合。客户端-服务器架构可以包括各种常见的通信元素,诸如发射器、接收器、收发器、无线设备、网络接口、基带处理器、天线、放大器、滤波器、电源等。然而,实施例不限于这些实现方式。
通信框架可以实现被布置为接受、通信和连接到通信网络的各种网络接口。网络接口可以被视为输入/输出接口的专用形式。网络接口可以采用连接协议,包括但不限于直接连接、以太网(例如,胖、瘦、双绞线10/100/1000Base T等)、令牌环、无线网络接口、蜂窝网络接口、IEEE 802.11a-x网络接口、IEEE 802.16网络接口、IEEE 802.20网络接口等。此外,可以使用多个网络接口与各种通信网络类型配合。例如,可以采用多个网络接口来允许通过广播、组播和单播网络进行通信。如果处理要求规定更高的速度和容量,可以类似地采用分布式网络控制器架构来实现联合、负载均衡以及以其它方式增加客户端100和服务器200所需的通信带宽。通信网络可以是任意一种有线和/或无线网络及其组合,包括但不限于直接互连、安全定制连接、专用网络(例如,企业内部网)、公共网络(例如,互联网)、个域网(Personal Area Network,PAN)、局域网(Local Area Network,LAN)、城域网(Metropolitan Area Network,MAN)、作为互联网上的节点执行任务(Operating Missionsas Nodes on the Internet,OMNI)、广域网(Wide Area Network,WAN)、无线网络、蜂窝网络和其它通信网络。
如上所述,客户端100和服务器200都可以包括设备,该设备可以是能够例如通过通信组件接收、处理和发送信息的任何电子设备。电子设备的示例可以包括但不限于客户端设备、个人数字助理(personal digital assistant,PDA)、移动计算设备、智能手机、蜂窝电话、电子书阅读器、消息传送设备、计算机、个人计算机(personal computer,PC)、台式计算机、膝上型计算机、笔记本电脑、上网本、手持式计算机、平板电脑、服务器、服务器阵列或服务器场、Web服务器、网络服务器、互联网服务器、工作站、网络设备、Web设备、分布式计算系统、多处理器系统、基于处理器的系统、消费类电子设备、可编程消费类电子设备、游戏设备、电视、机顶盒、无线接入点、基站、用户台、移动用户中心、无线网络控制器、路由器、集线器、网关、网桥、交换机、机器或其组合。实施例在这种情况下不作限定。
该设备可以针对诸如示例性客户端应用程序110和远程应用程序210之类的一个或多个应用程序、针对通信组件、操作系统(特别地,所述操作系统的内核)以及针对使用一个或多个处理组件(即处理电路)的其它软件元素执行处理操作或逻辑。处理组件或处理电路可以包括各种硬件元素,诸如设备、逻辑设备、组件、处理器、微处理器、电路、处理器电路、电路元素(例如,晶体管、电阻器、电容器、电感等)、集成电路、专用集成电路(application specific integrated circuit,ASIC)、可编程逻辑器件(programmablelogic device,PLD)、数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(field programmable gate array,FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件元素的示例可以包括软件组件、程序、应用程序、计算机程序、应用程序程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、流程、软件接口、应用程序程序接口(application programinterface,API)、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号或其任意组合。确定下述磁盘认证单元和/或磁盘密封单元的实施例是否使用硬件元素和/或软件元素来实现可以根据任意数量的因素而变化,所述因素诸如期望的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其它设计或性能约束,具体取决于给定实现方式的需要。
该设备可以使用一个或多个通信组件针对与其它设备的通信执行通信操作或逻辑。通信组件可以实现任何公知的通信技术和协议,诸如适用于分组交换网络(例如,诸如互联网的公共网络、诸如企业内部网的专用网络等)、电路交换网络(例如,公共交换电话网络)或分组交换网络和电路交换网络(具有合适的网关和转换器)的组合的技术。通信组件可以包括各种类型的通信元素,诸如一个或多个通信接口、网络接口、网络接口卡(networkinterface card,NIC)、无线设备、无线发射器/接收器(收发器)、有线和/或无线通信媒体、物理连接器等。例如但不限于,通信介质包括有线通信介质和无线通信介质。有线通信介质的示例可以包括电线、线缆、金属导线、印刷电路板(printed circuit board,PCB)、背板、交换结构、半导体材料、双绞线、同轴线缆、光纤、传播信号等。无线通信介质的示例可以包括声学、射频(radio-frequency,RF)频谱、红外和其它无线介质。
该设备可以使用如图1所示的通信信号经由一个或多个通信组件在通信介质上与其它设备通信。其它设备可以在该设备内部或外部,具体取决于给定实现方式的需要。
该设备可以以分布式系统的形式实现,该分布式系统可以跨多个计算实体分布上述结构和/或操作的部分。分布式系统的示例可以包括但不限于客户端-服务器架构、3层架构、N层架构、紧密耦合或集群架构、端到端架构、主从架构、共享数据库架构和其它类型的分布式系统。实施例在这种情况下不作限定。
客户端100和/或服务器200可以包括如下所述的计算架构。在一个实施例中,计算架构可以包括或实现为电子设备的一部分。电子设备的示例可以包括上述电子设备。实施例在这种情况下不作限定。
如本发明中所使用的,术语“装置”、“组件”、“客户端”、“服务器”、“服务提供商”、“软件提供商”、“磁盘认证单元”和“磁盘密封单元”旨在指代与计算机相关的实体,包括硬件、硬件和软件的组合、软件或执行中的软件,其示例由下面描述的示例性计算架构提供。例如,组件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器、(光存储介质和/或磁存储介质的)多个存储驱动器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用程序和该服务器两者皆可以是组件。一个或多个组件可驻留在进程和/或执行的线程内,且组件可以局部化在一台计算机上或分布在两台或两台以上计算机之间。此外,组件可以通过各种类型的通信介质以通信方式彼此耦合,以协调操作。根据需要,协调可以涉及信息的单向交换或双向交换。例如,组件可以以在通信介质上传达的信号的形式传达信息。信息可以实现为分配给各种信号线的信号。在此类分配中,每个消息都是信号。然而,另选地,其它实施例可以采用数据消息。此类数据消息可以通过各种连接发送。示例性连接包括并行接口、串行接口和总线接口。
计算架构可以包括各种常见的计算元素,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、显卡、声卡、多媒体输入/输出(input/output,I/O)组件、电源等。然而,实施例不限于由该计算架构实现。
计算架构可以包括处理单元、系统存储器和系统总线。处理单元可以是各种市售处理器中的任意一种,包括但不限于和处理器;应用程序、嵌入式安全处理器;和处理器;IBM和Cell处理器;Core(2)和处理器;以及类似的处理器。双微处理器、多核处理器和其它多处理器架构也可以用作处理单元。
系统总线为系统组件提供接口,所述系统组件包括但不限于系统存储器至处理单元。系统总线可以是多种类型的总线结构中的任意一种,该总线结构可以使用各种市售总线架构中的任意一种来进一步互连到存储器总线(带或不带存储器控制器)、外围总线和本地总线。接口适配器可以经由插槽架构连接到系统总线。示例性插槽架构可以包括但不限于加速图形端口(Accelerated Graphics Port,AGP)、插件总线、(扩展)工业标准架构((Extended)Industry Standard Architecture,(E)ISA)、微通道架构(Micro ChannelArchitecture,MCA)、NuBus、外围部件互连(扩展)(Peripheral Component Interconnect(Extended),PCI(X))、快捷PCI、个人计算机内存卡国际协会(Personal Computer MemoryCard International Association,PCMCIA)等。
计算架构可以包括或实现计算机可读存储介质以存储逻辑。计算机可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动存储器或不可移动存储器、可擦除存储器或不可擦除存储器、可写存储器或可重写存储器等。逻辑的示例可以包括使用任何合适类型的代码实现的可执行计算机程序指令,所述代码诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象的代码、可视代码等。实施例也可以至少部分地实现为包含在非瞬时性计算机可读介质中或其上的指令,其可以由一个或多个处理器读取和执行,以实现本文所描述的操作的执行。
系统存储器可以包括采用一个或多个较高速存储器单元的形式的各种类型的计算机可读存储介质,诸如只读存储器(read-only memory,ROM)、随机存取存储器(random-access memory,RAM)、动态RAM(dynamic RAM,DRAM)、双倍数据速率DRAM(Double-Data-Rate DRAM,DDRAM)、同步DRAM(synchronous DRAM,SDRAM)、静态RAM(static RAM,SRAM)、可编程ROM(programmable ROM,PROM)、可擦除可编程ROM(erasable programmable ROM,EPROM)、电可擦除可编程ROM(electrically erasable programmable ROM,EEPROM)、闪存、诸如铁电聚合物存储器的聚合物存储器、奥氏存储器、相变或铁电存储器、微米硅氧化氮氧化硅(silicon-oxide-nitride-oxide-silicon,SONOS)存储器、磁卡或光卡、诸如独立磁盘冗余阵列(Redundant Array of Independent Disks,RAID)驱动器的设备阵列、固态存储器设备(例如,USB存储器、固态磁盘(solid state drive,SSD))和任何其它适于存储信息的存储介质。系统存储器可以包括非易失性存储器和/或易失性存储器。基本输入/输出系统(basic input/output system,BIOS)可以存储在非易失性存储器中。
计算架构可以包括采用一个或多个较低速存储器单元的形式的各种类型的计算机可读存储介质,包括内部(或外部)硬盘驱动器(hard disk drive,HDD)、用于读取或写入可移动磁盘的磁性软盘驱动器(floppy disk drive,FDD)以及用于读取或写入可移动光盘(例如,CD-ROM、DVD或蓝光)的光盘驱动器。HDD、FDD和光盘驱动器可以分别通过HDD接口、FDD接口和光驱接口连接到系统总线。用于外部驱动器实现的HDD接口可以包括通用串行总线(Universal Serial Bus,USB)和IEEE 1394接口技术中的至少一者或两者。
驱动器和相关联的计算机可读介质提供数据、数据结构、计算机可执行指令等的易失性存储和/或非易失性存储。例如,多个程序模块可以存储在驱动器和存储器单元中,包括操作系统(特别地,所述操作系统的内核)、一个或多个应用程序(在本文中也称为应用程序,诸如示例性客户端应用程序110和示例性远程应用程序210)、其它程序模块和程序数据。在一个实施例中,一个或多个应用程序、其它程序模块和程序数据可以包括例如用于实现所公开的实施例的各种应用程序和/或组件。
根据本发明提供的数据的非易失性存储包括与要在飞地内执行的应用程序相关联的磁盘映像的存储。根据本发明提供的磁盘映像是包含磁盘的磁盘卷或一部分的内容和结构的计算机文件,甚至包括整个数据存储设备,诸如上述HDD、FDD或光盘驱动器。可信执行环境可以放置磁盘的特定部分,或者为每个飞地创建特定磁盘卷,使得对该部分或卷的读取和/或写入访问仅限于在TEE中执行的应用程序。磁盘映像可以特别地包括配置数据和/或解释代码,并且通常可以包括应用程序的输入和/或输出数据。
用户可以通过一个或多个有线/无线输入设备,例如键盘和诸如鼠标之类的指示设备,向计算设备输入命令和信息。其它输入设备可以包括麦克风、红外(infra-red,IR)遥控器、射频(radio-frequency,RF)遥控器、游戏控制器、铁笔、读卡器、数据卡、指纹机、手套、图形输入板、操纵杆、键盘、视网膜阅读器、触摸屏(例如,电容式、电阻式等)、轨迹球、轨迹板、传感器、手写笔等。这些和其它输入设备通常通过耦合到系统总线的输入设备接口连接到处理单元,但可以通过诸如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等之类的其它接口连接。
显示器也可以经由诸如视频适配器之类的接口连接到系统总线。显示器可以在计算设备内部或外部。除显示器之外,计算设备通常还包括其它外围输出设备,诸如扬声器、打印机等。
计算设备可以使用经由有线和/或无线通信连接到诸如远程设备之类的一个或多个远程计算机的逻辑连接在网络环境中运行。远程设备可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其它通用网络节点,并且通常包括相对于计算架构描述的许多或所有元素。逻辑连接可以包括到局域网(localarea network,LAN)和/或较大网络(例如,广域网(wide area network,WAN))的有线/无线连接。此类LAN和WAN网络环境在办公室和公司中很常见,并且便于企业范围的计算机网络,诸如内部网,所有这些都可以连接到全球通信网络,例如因特网。
当在LAN网络环境中使用时,该设备通过有线和/或无线通信网络接口或适配器连接到LAN。适配器可以促进与LAN的有线和/或无线通信,该LAN还可以包括设置在其上以与适配器的无线功能通信的无线接入点。
当在WAN网络环境中使用时,该设备可以包括调制解调器,或者连接到WAN上的通信服务器,或者具有用于在WAN上建立通信的其它装置,诸如通过互联网。调制解调器可以是内部或外部的,可以是有线和/或无线设备,经由输入设备接口连接到系统总线。在网络环境中,程序模块或其部分可以存储在远程存储器/存储设备中。应当理解,网络连接是示例性的,并且可以使用其它方式在设备之间建立通信链路。
客户端/服务器设备可操作以与使用IEEE 802系列标准的有线和无线设备或实体通信,诸如可操作地设置在无线通信中的无线设备(例如,IEEE 802.11无线调制技术)。这至少包括Wi-Fi(或无线保真)、WiMax和BluetoothTM无线技术等。因此,通信可以是与传统网络相同的预定义结构,或者仅仅是至少两个无线设备之间的临时通信。Wi-Fi网络使用称为IEEE 802.11x(a、b、g、n等)的无线技术提供安全、可靠、快速的无线连接。Wi-Fi网络可以用于将设备彼此连接、连接到互联网以及连接到有线网络(使用IEEE 802.3相关介质和函数)。
诸如图1所示的远程计算之类的远程服务本质上是不安全的,并且经常受到可能损害用户的服务和/或资产的安全泄漏的影响,因为远程设备由通常不受信任的一方,即服务提供商拥有和维护。可信服务是一个相对新颖的概念,因此,解决方案的数量有限。
HTTPS协议允许与经过认证的服务器建立安全信道。服务器身份验证可以基于服务器提供的X.509证书,该证书由先验可信证书颁发机构(特别地,根证书颁发机构)进行认证和签名。即使可以通过这种方式对服务器进行认证,并且可以建立提供机密性和通信完整性的安全信道,该过程仍可能受到服务提供商侧的恶意软件的损害。例如,如果相应软件组件包括恶意软件,则从比远程应用程序更高权限级别的软件组件,特别地,包括管理程序(也称为虚拟机监控器(Virtual Machine Monitor,VMM))和操作系统内核的系统软件组件对远程应用程序的存储器访问可能会损害远程应用程序。在这种情况下,甚至安全信道的设置,例如经由传输层安全(Transport Layer Security,TLS)客户端,也可能受到损害,使得不能保证机密性和通信完整性。
为了解决更高权限级别的恶意软件问题,引入了可信执行环境的概念。在最低权限级别运行的诸如Web服务器或游戏客户端之类的远程应用程序的应用程序代码在隔离执行环境(即所谓的安全容器或安全飞地)中执行。即使是特权系统代码,也不能访问飞地的内容,从而保护该飞地的代码和数据。相反,提供了可用于访问该飞地的内容的一组有限的可信函数。
可信执行环境的示例是英特尔软件保护扩展(Software Guard Extensions,SGX),如Victor Costan和Srinivas Devadas于2016年在IACR Cryptology ePrintArchive上发表的综述论文“英特尔SGX”中详细描述的。SGX是英特尔架构的一组扩展,旨在为在计算机上执行的安全敏感计算提供完整性和机密性保证,其中所有特权软件(内核、虚拟机监视器等)可能是恶意的。启用SGX的处理器通过将飞地的代码和数据与诸如操作系统和虚拟机监视器之类的外部计算环境以及连接到系统总线的硬件设备隔离来保护飞地内计算的完整性和机密性。在SGX中,飞地(安全容器)可能只包含计算中的私有数据以及对其进行操作的代码。应用程序通常使用可信部分和不可信部分构建,其中只有可信部分在飞地内执行。飞地可以协同工作以支持分布式架构。飞地代码和数据以明文形式运行,并且写入磁盘的飞地数据经过加密并检查完整性。
图2示意性地示出了用于如上所述使用安全容器的可信计算的图1所示的客户端-服务器架构的修改配置。该配置中的服务提供商300提供可信执行环境320,其中一个或多个安全飞地330被初始化以执行最终提供客户端100所请求的远程服务的远程应用程序310。远程应用程序310中的每一个与在设置相应飞地时创建的磁盘映像相关联。为了简单起见,图中仅示出了远程应用程序的可信部分。
图3示出了本领域已知的安全容器中的应用程序的典型运行时执行的概念。首先,远程应用程序400分别使用可信部分410和不可信部分440构建。该应用程序可以由服务提供商300本身提供,例如作为SaaS,或者经由安全信道从客户端100接收。当应用程序(不可信部分)运行时,系统将创建飞地,其放置在处理器的可信存储器中。调用可信函数,并且经由调用门将执行转移到飞地。飞地可以清楚地看到所有过程数据,同时拒绝外部访问飞地数据。可信函数返回飞地数据,并且应用程序继续正常执行。在执行期间,飞地阻止特权系统代码450访问可信部分,诸如操作系统(operating system,OS)、虚拟机监控器(VirtualMachine Monitor,VMM)、BIOS、系统管理模式(System Management Mode,SMM)等。然而,如上所述,诸如磁盘I/O或中断的可信函数的系统调用的飞地外执行以执行系统调用,并且因此受到与特权系统代码相关的潜在安全问题的影响。如上所述,通过将Linux内核库(LinuxKernel Library,LKL)移植到英特尔SGX,可以部分地解决此问题。
除与系统调用相关的安全问题之外,远程计算还需要一种机制来确保在飞地内执行的应用程序本身是可信的。
与其前身可信平台模型(Trusted Platform Model,TPM)和可信执行技术(Trusted Execution Technology,TXT)一样,SGX依赖于软件认证来向用户证明他/她正在与可信硬件托管的安全容器中运行的特定软件通信。证明可以是验证安全容器的内容的哈希的加密哈希,诸如SHA-1、SHA-2、SHA-256、MD4或MD5。服务提供商可以将任何应用程序加载到安全容器中,但是用户/客户端将拒绝将其数据加载到内容哈希与期望值不匹配的安全容器中。处理器和飞地专用密封密钥可用于安全地存储和检索可能需要存储在磁盘上的敏感信息,下面将更详细地进行描述。
SGX飞地330可以生成包含例如远程应用程序310的飞地数据的加密哈希的SGX报告。服务提供商还可以在SGX报告上生成可链接报价,其可以由报价飞地(QuotingEnclave,QE)(未示出)进行签名,该报价飞地反过来可以在包含报告和加密哈希的SGX报告上生成报价Q。QE可以作为服务提供商300侧的单独飞地来提供。SGX飞地330可以从可以驻留在远程服务器上的第三方认证服务(例如,英特尔认证服务(Intel’s AttestationService,IAS))请求认证报价Q。来自认证服务的认证响应可以使用公钥进行签名,并且可以包含报价的副本。然后,服务提供商300可以将报价、关于所述报价的IAS认证报告和数据作为认证响应发送到客户端100,该客户端在相应认证请求中请求认证。在接收到认证响应之后,客户端100可以通过使用公钥检查IAS响应上的签名来验证报价的有效性。客户端可以进一步验证数据的加密哈希对应于报价内的哈希。通过这种方式,可以信任数据直接来自发送飞地。
加密哈希可以在远程应用程序310可能需要由服务提供商300的安全飞地330安全处理的任何数据上生成。例如,数据可以包括应用程序的二进制代码。
如果应用程序生成用于在客户端100与安全飞地330之间建立安全信道的公钥,客户端可以使用相应二进制代码的加密哈希来验证该公钥由SGX保护的应用程序生成,该应用程序的标识由该哈希给出。该公钥可以用于为客户端100与安全飞地330之间的安全信道生成共享密钥。
如果应用程序是要作为SaaS和IaaS两者服务执行的远程应用程序,加密哈希可以用作应用程序的标识。在这种情况下,客户端100能够基于认证响应来验证应用程序的标识。
通过利用图2的可信执行环境和认证来扩展图1的客户端-服务器架构,客户端100可以验证在服务提供商300的可信执行环境320中执行的远程应用程序310的标识。
然而,确定应用程序的执行,特别是关于磁盘访问的执行是否可信存在问题。作为示例,如果远程服务器上的操作系统本身包含恶意代码,可能会出现安全泄漏。通常,例如通过在安全飞地外包括不安全的函数调用,应用程序的可信函数可能仍然是不安全的。在这种情况下,仅验证应用程序ID并不能检测到安全漏洞。
英特尔SGX试图通过向可信执行环境添加LKL,即操作系统的一部分来解决此问题。图4示出了本领域已知的SGX-LKL飞地的概念。通过将LKL移植到英特尔SGX,可以创建SGX-LKL飞地530,而不是简单的SGX飞地,以便在安全容器中执行应用程序。除执行应用程序510(可信部分)之外,在飞地530内执行操作系统的库LKL 560。因此,关于LKL 560的函数的系统调用在飞地内部处理。LKL的典型功能包括线程同步、存储器管理、文件系统、联网和信号处理。此外,标准C库和运行时支持可以移植到英特尔SGX,并因此在SGX-LKL飞地530内执行。因此,到SGX-LKL飞地外的转换可以约简为对主机操作系统550和可以通过超级调用接口执行的加载器/起动器的调用。
由于SGX-LKL飞地530的认证包括库OS 560,因此可以避免由于LKL函数内的恶意系统代码导致的安全漏洞。然而,如上所述,SGX-LKL飞地认证不包括与应用程序相关联的磁盘映像的内容,使得特别地,应用程序的解释代码和配置文件不会得到验证。此外,由于磁盘映像的内容不受保护,因此可以在不更改相应SGX-LKL飞地的标识的情况下公开和/或更改磁盘上的数据。即使结合使用SGX-LKL和加密磁盘,仍会存在新鲜度问题,使得攻击者能够让SGX-LKL在磁盘上执行恶意软件,从而更改SGX-LKL的存储器并改变其行为。
本发明通过两个附加机制,即磁盘认证机制和磁盘密封机制来扩展SGX-LKL来解决这些问题。磁盘认证和磁盘密封可以在软件方面作为模块和/或在硬件方面作为上述处理电路的磁盘认证单元和/或磁盘密封单元添加。根据本发明提供的磁盘认证的主要目的是在SGX-LKL飞地内执行应用程序之前,验证与应用程序相关联的磁盘映像。换句话说,在认证过程中,除其可执行文件的真实性之外,SGX-LKL还能够证明其正在处理的磁盘映像的内容的真实性。磁盘密封单元确保只有经过磁盘认证单元认证的磁盘将被使用,同时确保其内容将保持受到保护。磁盘映像的内容可以包括以下各项中的至少一个:应用程序的可执行文件、应用程序的解释程序、应用程序的执行数据以及应用程序的配置文件。
图5示出了本发明的两个实施例提供的基于所有者的磁盘认证过程和基于内容的磁盘认证过程。在SGX-LKL飞地的初始化过程中,磁盘认证可以集成为模块。磁盘认证的目的是确保在SGX-LKL软件认证过程中能够验证磁盘映像的内容。通过实现根据本发明提供的磁盘认证,每当SGX-LKL飞地面临证明其标识的挑战时,它不仅将认证LKL和应用程序的真实性,而且还将认证与应用程序相关联的磁盘映像的真实性。下面将结合图5的左侧和右侧描述磁盘认证模块/单元的两种可能的实现方式。
根据磁盘认证单元的第一实施例,在存在与加密密钥相关联的应用程序的所有者的情况下,实现最适用的基于所有者的磁盘认证过程。基于所有者的磁盘认证过程的目的是验证由应用程序的所有者生成的磁盘映像的完整性。
在基于所有者的磁盘认证的第一步骤671中,客户端100向服务提供商300提供与应用程序的所有者相关联的公钥PK。当例如由服务提供商300响应于在可信执行环境320中执行特定应用程序的相应请求而调用创建SGX-LKL飞地的功能时,磁盘认证单元在创建飞地之前将公钥PK添加到SGX-LKL飞地的存储器中。另选地,可以在初始化飞地之前将公钥PK的加密哈希添加到SGX-LKL飞地的存储器中。加密哈希可以是SHA-1、SHA-2、SHA-256、MD4、MD5等。
在下一步骤672中,通过创建飞地来启动飞地。由于在初始化飞地之前已将公钥PK或公钥PK的加密哈希添加到SGX-LKL飞地的存储器中,因此在英特尔SGX中由MRENCLAVE的值表示的飞地标识也反映了公钥。
响应于客户端100的认证请求,可以使用公钥PK或其加密哈希来认证飞地的所有权。为此,认证请求可以包括与所有者相关联的公钥PK作为SGX-LKL飞地的输入。远程服务器可以为随认证请求提供的公钥PK计算加密哈希,具体取决于是否已向飞地的存储器中添加公钥或其加密哈希。然后,作为认证过程的一部分,验证飞地的标识包括分别比较接收的公钥或其加密哈希与添加到飞地的存储器中的公钥或其加密哈希。如果接收的公钥和存储的公钥或其相应的加密哈希不一致,SGX-LKL飞地可以自动停止执行,并在认证响应中向客户端100报告失败的验证。
另选地或附加地,SGX-LKL飞地在启动后可以接收与应用程序相关联的磁盘映像的内容的加密签名作为飞地的输入,例如作为上述认证请求的一部分。加密签名可以由客户端100使用与添加到飞地的存储器中的公钥对应的所有者的私钥确定。加密签名可以通过以下方式计算,即计算与应用程序相关联的磁盘映像的内容的加密哈希,随后使用所有者的私钥对加密哈希进行签名。作为认证过程的一部分,在步骤673中,远程服务器300可以计算与SGX-LKL飞地相关联的磁盘映像的内容的相应加密哈希H。然后,在步骤674中,可以使用存储在SGX-LKL飞地的存储器中的公钥PK或如上所述接收的作为飞地的输入的公钥PK,根据SGX-LKL飞地关联和使用的磁盘映像的内容来验证接收的加密签名sig。如果使用公钥处理后的加密签名与在步骤673中计算的加密哈希H一致,该过程继续进行步骤676,其中如下所述对磁盘映像执行磁盘密封。如果这两个值不一致,在步骤675中,SGX-LKL飞地执行停止,并且控制流退出飞地。
另选地或附加地,根据第二实施例,磁盘认证可以实现为图5右侧所示的基于内容的磁盘认证过程。基于内容的磁盘认证过程不需要所有者的存在,因此特别适于安全地执行没有所有者但仍必须证明其标识的分散式应用程序。
在基于内容的磁盘认证过程的第一步骤681中,如果磁盘映像由客户端100提供给服务提供商300,则在客户端侧计算与应用程序相关联的磁盘映像的内容的哈希,特别地,加密哈希H;或者如果应用程序由服务提供商300提供作为SaaS,则在服务器侧计算与应用程序相关联的磁盘映像的内容的哈希,特别地,加密哈希H。然后,在步骤682中,在初始化飞地之前,将得到的加密哈希H添加到SGX-LKL飞地的存储器中。因此,飞地的标识反映了在SGX-LKL软件认证中启动飞地之前的磁盘映像的内容。
随后,在步骤683中,通过创建包括应用程序、LKL OS库和加密哈希H的SGX-LKL飞地来启动该飞地。在步骤687中,在密封磁盘并在SGX-LKL飞地内执行应用程序之前,为与要在SGX-LKL飞地执行期间使用的SGX-LKL飞地相关联的磁盘映像的内容计算第二加密哈希H'。该计算可以响应于来自客户端100的显示认证请求来执行。如下面将就图6所示的磁盘密封过程更详细描述的,在执行SGX-LKL飞地期间要使用的磁盘映像可以是最初与SGX-LKL飞地相关联的磁盘映像的副本。
在步骤685中,确定加密哈希H和H'是否相同。如果相同,该过程继续进行步骤687,其中如下所述对磁盘映像执行磁盘密封。然而,如果这两个加密哈希不一致,在步骤686中,SGX-LKL飞地执行停止,并且控制流退出飞地。
最后,根据本发明提供的软件认证过程在飞地的标识的验证失败时,停止执行应用程序,与标识的验证失败原因无关。因此,除检测恶意应用程序之外,根据本发明提供的软件认证还检测所有者更改和/或磁盘映像更改。
图6示出了根据本发明提供的磁盘密封过程。磁盘密封过程的目的是在应用程序执行期间保护磁盘映像的内容,并确保磁盘映像的内容与上述磁盘认证单元调用的认证方法相匹配。
在飞地执行开始时,即在步骤672或步骤683中启动飞地之后,在步骤691中,在远程服务器300上生成随机加密密钥K。如上所述,随机加密密钥K的生成可作为磁盘密封模块的一部分或由处理电路的专用磁盘密封单元执行。接下来,如图5的步骤673和步骤684所示,读取在启动飞地之后与SGX-LKL飞地相关联的磁盘映像,并且计算磁盘映像的内容的加密哈希。随后,在使用随机加密密钥K加密的磁盘密封过程的步骤692中创建磁盘映像的复本newdisk。
根据是执行基于内容的(content-based,CB)磁盘认证还是基于所有者的(owner-based,OB)磁盘认证,在步骤685中,即在启动飞地之后,确定为与SGX-LKL飞地相关联的磁盘映像的内容计算的加密哈希H'与在初始化之前插入到飞地的存储器中的与应用程序相关联的磁盘映像的内容的加密哈希H是否相同,或者在步骤674中,使用公钥PK根据为与SGX-LKL飞地相关联的磁盘映像的内容计算的加密哈希H来验证作为SGX-LKL飞地的输入提供的加密签名sig。如上所述,验证失败将分别导致在步骤686和步骤675中立即停止执行。由于加密密钥K是随机生成的,因此SGX-LKL飞地的任何新执行都将不能使用加密磁盘。因此,启动SGX-LKL飞地的新实例的攻击者将无法访问加密磁盘。
如果哈希验证成功,磁盘密封单元在步骤693中使用SGX-LKL飞地的诸如密封密钥的加密密钥EK对随机加密密钥K进行加密,并在步骤694中将结果存储在磁盘映像的副本中。加密的随机加密密钥可以作为密封件附加到磁盘映像的副本中。可以使用LKL功能将加密的随机加密密钥附加到磁盘映像的副本中。将加密的随机加密密钥存储在磁盘映像的副本中确保加密的磁盘映像可以用于SGX-LKL飞地的其它执行或实例。由于SGX-LKL飞地的加密密钥EK对于具有相同标识的SGX-LKL飞地的所有实例都是相同的,因此例如在分布式执行环境中,可以由SGX-LKL飞地的其它实例使用加密的磁盘映像,这是通过解密附加到加密的磁盘映像中的随机加密密钥并使用随机加密密钥来解密磁盘映像来实现的。
由于加密的随机加密密钥仅在上述磁盘认证过程成功的情况下添加到加密的磁盘映像中,因此根据本发明提供的磁盘密封机制保证只有经过磁盘认证单元认证的磁盘映像将被SGX-LKL飞地使用。使用随机加密密钥对磁盘映像进行加密,并使用飞地特定的加密密钥EK对随机加密密钥进行加密,从而确保只有具有加密密钥EK的SGX-LKL飞地以及具有相同标识的该飞地的其它实例才能访问和修改磁盘映像。因此,磁盘密封机制向与应用程序相关联的磁盘映像提供机密性和完整性,并且由于使用随机加密密钥而进一步保证关于SGX-LKL飞地的新鲜度。
最后,磁盘密封单元可以将来自SGX-LKL飞地的所有磁盘访问重定向到磁盘映像的加密副本。因此,由于损坏的SGX-LKL飞地无权访问与正确的SGX-LKL飞地相关联的磁盘映像的加密副本,因此依赖于借助提供给SGX-LKL飞地的攻击者的密钥进行加密的磁盘映像来执行SGX-LKL的上述攻击将不会成功。
使用磁盘认证和磁盘密封对SGX-LKL进行的上述扩展确保软件认证不仅覆盖可执行文件,而且覆盖相关联的磁盘映像的内容。此外,所描述的磁盘密封使得攻击者难以修改和破坏与在安全容器中执行的应用程序相关联的磁盘映像。本发明提供了一种在SGX中运行的库OS,可以证明其使用的磁盘映像的内容的真实性,并且可以对磁盘映像进行加密。所公开的用于认证磁盘映像的内容的方法可以基于所有者的签名和/或磁盘映像的内容。此外,描述了一种用于在认证其内容的真实性之后密封磁盘映像的方法。
Claims (15)
1.一种用于软件认证的装置,其特征在于,包括处理电路,所述处理电路用于:
在可信执行环境(trusted execution environment,TEE)中初始化飞地(530),其中,所述飞地包括操作系统(operation system,OS)库(560);
执行软件认证,以验证所述飞地(530)的标识;
使用所述OS库(560)在所述飞地(530)内执行应用程序(510);
其中,执行所述软件认证包括对与所述应用程序(510)相关联的磁盘映像的内容进行认证。
2.根据权利要求1所述的装置,其特征在于,所述磁盘映像的所述内容包括以下各项中的至少一个:所述应用程序(510)的可执行文件、所述应用程序(510)的解释程序、所述应用程序(510)的执行数据以及所述应用程序(510)的配置文件。
3.根据权利要求1或2所述的装置,其特征在于,所述处理电路还用于在初始化所述飞地(530)之前,将公钥或所述公钥的加密哈希添加到所述飞地的存储器中。
4.根据权利要求3所述的装置,其特征在于,所述处理电路还用于接收另一公钥作为所述飞地(530)的输入,
其中,验证所述飞地(530)的所述标识包括:根据添加到所述飞地(530)的所述存储器中的所述相应公钥或所述公钥的加密哈希,验证由所述处理电路计算的所述接收的另一公钥或所述接收的另一公钥的加密哈希。
5.根据权利要求3或4所述的装置,其特征在于,所述处理电路还用于接收所述磁盘映像的所述内容的加密签名作为所述飞地(530)的输入,
其中,验证所述飞地(530)的所述标识包括通过使用所述公钥和所述加密签名来验证所述磁盘映像的所述内容。
6.根据权利要求1或2所述的装置,其特征在于,所述处理电路还用于对所述磁盘映像的所述内容应用加密哈希函数,并在初始化所述飞地(530)之前将得到的加密哈希添加到所述飞地的存储器中。
7.根据权利要求6所述的装置,其特征在于,验证所述飞地(530)的所述标识包括通过使用所述加密哈希来验证所述磁盘映像的所述内容。
8.根据权利要求4至7中任一项所述的装置,其特征在于,所述处理电路还用于:在所述飞地(530)的所述标识的所述验证失败时,停止执行所述应用程序(510)。
9.根据权利要求3至8中任一项所述的装置,其特征在于,所述处理电路还用于:在执行所述应用程序(510)之前,生成随机加密密钥;读取所述磁盘映像;并通过使用所述随机加密密钥对所述磁盘映像进行加密来创建所述磁盘映像的副本。
10.根据权利要求9所述的装置,其特征在于,所述处理电路还用于在成功验证所述飞地(530)的所述标识时,通过使用所述飞地的密钥,例如所述飞地的密封密钥,对所述随机加密密钥进行加密,并将所述加密的随机加密密钥添加到所述加密的副本中。
11.根据权利要求10所述的装置,其特征在于,所述处理电路还用于在执行所述应用程序(510)期间,将所述OS库(560)的所有磁盘访问调用重定向到所述加密的副本。
12.一种用于软件认证的方法,其特征在于,所述方法包括:
在可信执行环境(trusted execution environment,TEE)中初始化飞地(530),其中,所述飞地包括操作系统(operation system,OS)库(560);
执行软件认证,以验证所述飞地(530)的标识;
使用所述OS库(560)在所述飞地(530)内执行应用程序(510);
其中,执行所述软件认证包括对与所述应用程序(510)相关联的磁盘映像的内容进行认证。
13.根据权利要求12所述的方法,其特征在于,还包括:
在初始化所述飞地(530)之前,将公钥或所述公钥的加密哈希添加(671)到所述飞地的存储器中;
接收另一公钥和所述磁盘映像的所述内容的加密签名作为所述飞地(530)的输入;
根据添加到所述飞地(530)的所述存储器中的所述相应公钥或所述公钥的加密哈希,验证所述接收的另一公钥或所述接收的另一公钥的加密哈希;
通过使用所述公钥和所述加密签名来验证(674)所述磁盘映像的所述内容。
14.根据权利要求12所述的方法,其特征在于,还包括:
对所述磁盘映像的所述内容应用(681)加密哈希函数;
在初始化所述飞地(530)之前,将得到的加密哈希添加(682)到所述飞地的存储器中;
通过使用所述加密哈希来验证(685)所述磁盘映像的所述内容。
15.根据权利要求12至14中任一项所述的方法,其特征在于,还包括:
生成(691)随机加密密钥;
读取所述磁盘映像;
在执行所述应用程序(510)之前,通过使用所述随机加密密钥对所述磁盘映像进行加密来创建(692)所述磁盘映像的副本;
在成功验证所述飞地的所述标识时,通过使用所述飞地(530)的密钥,诸如所述飞地的密封密钥,对所述随机加密密钥进行加密(693);
将所述加密的随机加密密钥添加(694)到所述加密的副本中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2019/068705 WO2021004636A1 (en) | 2019-07-11 | 2019-07-11 | Apparatus and method for disk attestation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113906424A true CN113906424A (zh) | 2022-01-07 |
Family
ID=67297171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980096733.0A Pending CN113906424A (zh) | 2019-07-11 | 2019-07-11 | 用于磁盘认证的装置和方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP3966721A1 (zh) |
CN (1) | CN113906424A (zh) |
WO (1) | WO2021004636A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117716666A (zh) * | 2021-07-29 | 2024-03-15 | 索尼集团公司 | 用于向用户提供自主身份云服务的方法、云服务方法、云服务器、自主身份方法 |
WO2023059232A1 (en) * | 2021-10-07 | 2023-04-13 | Telefonaktiebolaget Lm Ericsson (Publ) | First node, second node, third node, computing system and methods performed thereby for handling information indicating one or more features supported by a processor |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120179904A1 (en) * | 2011-01-11 | 2012-07-12 | Safenet, Inc. | Remote Pre-Boot Authentication |
WO2017129659A1 (en) * | 2016-01-29 | 2017-08-03 | British Telecommunications Public Limited Company | Disk encryption |
US10439803B2 (en) * | 2016-11-14 | 2019-10-08 | Microsoft Technology Licensing, Llc | Secure key management |
-
2019
- 2019-07-11 EP EP19739979.3A patent/EP3966721A1/en active Pending
- 2019-07-11 CN CN201980096733.0A patent/CN113906424A/zh active Pending
- 2019-07-11 WO PCT/EP2019/068705 patent/WO2021004636A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021004636A1 (en) | 2021-01-14 |
US20220129544A1 (en) | 2022-04-28 |
EP3966721A1 (en) | 2022-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9690498B2 (en) | Protected mode for securing computing devices | |
US8966642B2 (en) | Trust verification of a computing platform using a peripheral device | |
US10635821B2 (en) | Method and apparatus for launching a device | |
CN107851167B (zh) | 在计算环境中保护计算数据的技术 | |
US9698988B2 (en) | Management control method, apparatus, and system for virtual machine | |
CN105745661B (zh) | 对权限管理的内容的基于策略的受信任的检测 | |
US9575790B2 (en) | Secure communication using a trusted virtual machine | |
US7222062B2 (en) | Method and system to support a trusted set of operational environments using emulated trusted hardware | |
CN113302893B (zh) | 用于信任验证的方法及装置 | |
US11714895B2 (en) | Secure runtime systems and methods | |
WO2015183117A1 (en) | Below-os security solution for distributed network endpoints | |
KR102286794B1 (ko) | 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 부트 방법 | |
CN113906424A (zh) | 用于磁盘认证的装置和方法 | |
US20180198618A1 (en) | Apparatus and method for providing secure execution environment for mobile cloud | |
WO2022170966A1 (zh) | 在目标平台上启动应用程序的方法及装置 | |
KR20150089696A (ko) | 접근제어와 우선순위기반 무결성 검증 시스템 및 그 방법 | |
US12032679B2 (en) | Apparatus and method for disk attestation | |
Pedone et al. | Trusted computing technology and proposals for resolving cloud computing security problems | |
Nagy et al. | T-RAID: TEE-based Remote Attestation for IoT Devices | |
Jian et al. | A New Method to Enhance Container with vTPM | |
Li | System design and verification methodologies for secure computing | |
Liberal Rocha | Insider threat: memory confidentiality and integrity in the cloud | |
Daniel | A Trusted Integrity verification Architecture for Commodity Computers | |
Daniel et al. | Launch Time Application Security: The Trusted Approach |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220304 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Huawei headquarters office building, Bantian, Longgang District, Shenzhen City, Guangdong Province Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right |