CN111698091B - 一种基于可信计算的Docker平台动态防护方法 - Google Patents
一种基于可信计算的Docker平台动态防护方法 Download PDFInfo
- Publication number
- CN111698091B CN111698091B CN202010457330.9A CN202010457330A CN111698091B CN 111698091 B CN111698091 B CN 111698091B CN 202010457330 A CN202010457330 A CN 202010457330A CN 111698091 B CN111698091 B CN 111698091B
- Authority
- CN
- China
- Prior art keywords
- vpcr
- value
- module
- measurement
- container
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- 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/3234—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 additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
-
- 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/123—Applying verification of the received information received data contents, e.g. message integrity
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0877—Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于可信计算的Docker平台动态防护方法,首先,系统进行初始化,完成vPCR模块和度量代理模块的初始化工作;其次,用户向Docker平台请求生成容器,容器生成过程中生成与容器对应的vPCR实例;再次,用户通过验证系统中的远程验证模块向平台请求验证特定容器的动态完整性;再者,目标系统中的度量代理模块根据请求执行度量流程,将度量值扩展存储至vPCR模块和TPM构成的安全模块当中,并记录相应的度量日志;然后,目标系统向验证系统返回完整性证据;最后,验证系统根据目标系统的完整性证据判断其完整性状态。本发明在不影响原有进程执行结果的同时执行度量流程,保证容器的动态完整性不受破坏。
Description
技术领域
本发明涉及一种基于可信计算的Docker平台动态防护方法,属于可信计算的动态完整性验证领域。
背景技术
随着云计算技术的不断发展与广泛应用,虚拟化技术也变得愈加重要。相比于传统虚拟化技术,基于容器的虚拟化技术更加轻量、灵活,对系统性能造成的影响也更小,因此受到越来越多用户和厂商的青睐。Docker技术是容器技术的一种,目前在容器市场中占据着主导地位,已成为容器技术的事实标准,因此Docker平台的安全防护具有重要的研究意义和实用价值。在Docker平台中,容器的低隔离性及镜像的构建和分发都可能引入新的安全威胁,如何保障在不可信的容器环境中容器的可信启动和用户对容器的信任是一个亟待解决的问题。基于可信计算的防护方法便是解决该问题的一个主流解决方案。
可信计算的概念最早可以追溯到1971年,而第一个针对可信计算的组织成立于1999年10月,该组织被称为可信计算平台联盟TCPA(TrustedComputingPlatformAlliance),由惠普、IBM、英特尔、微软等公司牵头,成员有190家。TCPA的主要工作包括定义可信平台模块TPM(TrustedPlatformModule),研制密码芯片、特殊的CPU、主板、操作系统安全内核等。TCG将可信计算定义为:一个实体的行为如果总是按照预期的方式进行,最终达到预期的目标,则这个实体就是可信的。
为了解决虚拟机中存在的可信问题,研究人员开始将可信计算的概念引入虚拟机领域。Berger等人提出了将TPM虚拟化的实现方法,为每个虚拟机分配一个vTPM实例作为其可信根,提供与硬件TPM完全相同的功能。Xen基于Berger提出的模型率先在生产环境中实现了虚拟环境下的可信计算。
在容器虚拟环境中实现可信计算时,Hosseinzadeh等人尝试将之前在虚拟机中的工作(主要以Berger等人的工作为主)直接应用到容器环境中,提出了两种不同的架构,其中一种与上述架构类似,在一个独立的容器中部署vTPMManager,生成vTPM实例。vTPM实例与用户容器一一对应,为各容器提供了独立可用的TPM,可以达到各容器度量数据隔离存储的效果。另一种架构是将vTPM模块放置在容器层下方的操作系统内核中,通过这种方式,可以更好的保护vTPM实例,免遭其他进程或容器的未授权访问。
在基于容器的虚拟化环境中,传统的可信计算实现方法要么复杂度较高,引起不必要的性能损耗,要么无法隔离存储各个容器的度量值,以提供保密性。另外,传统的可信计算实现方法仅仅关注平台的静态完整性,无法保证平台中运行服务的动态完整性。所以现有的可信计算实现方法难以直接应用于基于容器的虚拟化环境之中。
发明内容
本发明的目的是针对上述存在的问题提供一种基于可信计算的Docker平台动态防护方法,通过虚拟TPM中的PCR部分,为各个容器提供隔离存储度量值的方法,同时利用物理TPM提供其他必要的TPM功能,达到以低性能损耗解决保密性问题的目的。另外,本发明拟将进程自身代码段和依赖共享库代码段作为度量对象,完成对进程动态完整性的保护。
本发明实现上述目的所采用的技术方案是:
一种基于可信计算的Docker平台动态防护方法,该方法包括以下步骤:
(1)系统初始化,包括完成vPCR模块和度量代理模块的初始化工作;
(2)用户生成容器,vPCR模块负责生成与容器对应的vPCR实例;
(3)用户通过验证系统中的远程验证模块向平台请求验证目标系统中特定容器的动态完整性;
(4)目标系统中的度量代理模块根据请求执行度量流程,将度量值扩展存储至vPCR模块和TPM构成的安全模块当中,并记录相应的度量日志;
(5)目标系统向验证系统返回完整性证据;
(6)验证系统根据目标系统的完整性证据判断其完整性状态。
进一步地,步骤(1)所述的vPCR模块初始化过程中生成/sys/kernel/security/vpcr/pcr_old文件,设其中的值为PCRold,用于记录与vPCR实例绑定的物理TPM中PCR的旧值,设为pPCR,初始化完成时,PCRold和pPCR都为0;步骤(1)所述的度量代理模块的初始化过程中生成主机域的动态度量文件,并记录主机域的PID命名空间。
进一步地,步骤(2)所述的容器生成过程中,完成信任链的传递,具体来说,平台启动后CRTM首先获得系统的控制权,接着度量验证BIOS的完整性,如果验证通过,就将控制权移交给BIOS;接着通过一级验证一级的方式,依次度量BootLoader、OS Kernel和dockerdaemon的完整性,最后dockerdaemon完成对Docker镜像完整性的度量,若上述验证通过,根据镜像生成容器,并通过vPCR模块生成相应的vPCR实例,将镜像的度量值扩展存储至相应vPCR实例的Reg0,在扩展过程中,vPCR实例完成了与底层TPM的绑定:
(1)当vPCR模块接收到扩展操作请求时且pcr_old文件中相应的PCRold不为0时,计算所有vPCR实例相应寄存器值串联后的哈希值:
其中表示与容器j绑定的vPCR实例中第i个寄存器的值。而后将与pcr_old中相应的值(设为)进行标准扩展操作,即计算并与pPCR中的值进行对比,若相等则验证通过,继续操作;若不通过,则通知出现异常,停止操作。
(2)对目标vPCR实例执行扩展操作,将新产生的与容器j相关的度量值value记录到vPCR实例中:
在vPCR模块中维护了容器命名空间与vPCR实例的映射关系,通过该方法完成了vPCR实例与相应容器之间的绑定。
进一步地,步骤(2)所述的vPCR实例生成过程中,需要为vPCR实例申请相应的vAIK证书,用于后续的完整性证据生成。向CA申请vAIK证书的过程如下:
(1)vPCR模块需要为vPCR实例分配vAIK密钥对时,首先利用物理TPM创建vAIK公私钥对,同时生成随机数nonce,然后执行申请vAIK证书的流程。
(2)vPCR模块使用nonce、vPCR实例绑定的容器ID和vAIK公钥向物理TPM发起请求,使用AIK私钥对这些信息和pPCR的值进行签名,表示如下:
QuotevAIK=ignAIK(nonce||containerID||vAIKpub||pPCR)
(3)vPCR模块对返回的QuotavAIK使用CA的公钥进行加密后发送给CA。
(4)CA对请求中的信息进行校验,若签名中的pPCR值与基准值相同,则CA签发vAIK证书。
(5)vPCR模块解密CA返回的信息,检验nonce的新鲜度,决定是否接受vAIK证书。
进一步地,步骤(4)所述的度量过程以进程地址空间中的代码段(包括自身代码段和程序依赖共享库的代码段)为度量目标,遍历进程地址空间中的vm_area_struct列表,根据每个vm_area_struct的权限位(可读可执行)来筛选出代码段,并计算各代码段内容的安全哈希值作为其度量值:
SM=Hash(content(S))
进一步地,步骤(4)所述的进程度量日志格式如下:
PML={pid,SML1,SML2,…SMLi,…SMLn},(0<i<n,n≠+∞)
其中pid表示度量进程的PID值,SMLi表示对进程中第i个代码段的度量结果:
SML=<memSize,hashAlg,SM,filepath>
其中memSize表示该段在内存中的大小,hashAlg表示度量使用的安全哈希算法名,filepath表示度量代码段所属ELF文件的绝对路径名。容器的整个动态度量列表表示如下:
DML={PML1,PML2,…PMLi,…PMLm},(0<i<m,m≠+∞)
度量结果扩展存储至安全模块方法如下:
Mtemp=HA1(SM1||SM2||…||SMi||…||SMn),(0<i<n,n≠+∞)
其中SMi表示进程中第i个代码段的安全哈希值。将上述计算结果扩展存储至相应的vPCR实例当中。
进一步地,验证系统Verifier与目标系统Attester之间的验证协议如下:
(1)Verifier生成随机数nonce,并向Attester发送远程证明请求,请求数据包括nonce,目标容器ID containerID或主机域中需要度量的程序名称列表processList。
(2)使用双AIK签名方案,Attester通过TSS从物理TPM获取pPCR的签名值(签名密钥为AIK),并从vPCR模块中获取相应容器vPCR签名值的签名值(签名密钥为vAIK)、所有的vPCR实例的值vPCRList和PCRold值(包括Reg0和Reg2对应的旧值),所有这些连同DML,AIK证书(CrtAIK)和vAIK证书(CrtvAIK)构成动态完整性报告DIR。
signedPCR=SignAIK(nonce||pPCR)||SignvAIK(nonce||vPCR)
DIR={signedPCR,vPCRList,PCRold,DML,CrtAIK,CrtvAIK}
(3)Verifier收到Attester发来的DIR,进入验证流程,验证目标系统的可信状态。
验证流程如下:
(1)验证AIK证书和nonce:通过CA的公钥验证CrtAIK和CrtvAIK,以证明远端主机实体的身份。之后验证签名signedPCR是否有效,并利用nonce校验当前的会话是否已经失效。
(2)验证vPCR的完整性:vPCRList中包括所有vPCR实例中Reg0和Reg2的值,以Reg0对应的容器启动时度量值为例,首先将所有vPCRList中的Reg0计算出vPCRhash,然后与PCRold中相应的旧值进行扩展操作,最后将计算结果与相应绑定的物理TPM中pPCR11的值比较,如果相等,则说明vPCR实例中的值可信。
(3)验证DML的完整性:对DML中的摘要值进行模拟扩展操作,与签名的vPCR中Reg2的进行对比,确认动态度量列表的完整性。
(4)验证度量值是否可信:确认DML的完整性后,对DML中的每一项与基准值数据库中的值进行对比,通过是否匹配确认可信性。
有益效果:与现有技术相比,本发明的有益效果:本发明仅仅虚拟TPM的PCR部分,同时利用物理TPM提供其他的TPM功能,使得虚拟PCR和TPM一起构成Docker平台的可信根,减少了传统实现可信计算方法带来的性能损耗,并解决了保密性问题。另外发明通过对容器中运行进程的代码段进行完整性度量,保证了Docker平台的动态可信性。
附图说明
图1为本发明流程图。
图2为vPCR的整体架构图。
图3为信任链扩展过程图。
图4为动态完整性度量架构图。
图5为度量方法整体流程图。
图6为动态远程验证协议整体流程图。
具体实施方式
下面将结合附图对本发明作进一步描述。如图1所示,本发明包括以下步骤:
步骤1,系统初始化:vPCR模块初始化过程中生成/sys/kernel/security/vpcr/pcr_old文件(设其中的值为PCRold),用于记录与vPCR实例绑定的物理TPM中PCR(设为pPCR)的旧值,初始化完成时,PCRold和pPCR都为0。vPCR模块的整体架构如图2所示。度量代理模块的初始化过程中生成主机域的动态度量文件,并记录主机域的PID命名空间。
步骤2,容器生成:用户向Docker平台请求生成容器以运行指定服务,容器生成过程中,完成信任链的传递,传递过程如图3所示,具体来说,平台启动后CRTM首先获得系统的控制权,接着度量验证BIOS的完整性,如果验证通过,就将控制权移交给BIOS。接着通过一级验证一级的方式,依次度量BootLoader、OS Kernel和docker daemon的完整性,最后dockerdaemon完成对Docker镜像完整性的度量。若上述验证通过,根据镜像生成容器,并通过vPCR模块生成相应的vPCR实例,将镜像的度量值扩展存储至相应vPCR实例的Reg0。在扩展过程中,vPCR实例完成了与底层TPM的绑定:
(1)当vPCR模块接收到扩展操作请求时且pcr_old文件中相应的PCRold不为0时,计算所有vPCR实例相应寄存器值串联后的哈希值:
其中表示与容器j绑定的vPCR实例中第i个寄存器的值。而后将与pcr_old中相应的值(设为)进行标准扩展操作,即计算并与pPCR中的值进行对比,若相等则验证通过,继续操作;若不通过,则通知出现异常,停止操作。
(2)对目标vPCR实例执行扩展操作,将新产生的与容器j相关的度量值value记录到vPCR实例中:
在vPCR模块中维护了容器命名空间与vPCR实例的映射关系,通过该方法完成了vPCR实例与相应容器之间的绑定。
此外在vPCR实例生成过程中,需要为vPCR实例申请相应的vAIK证书,用于后续的完整性证据生成。向CA申请vAIK证书的过程如下:
(1)vPCR模块需要为vPCR实例分配vAIK密钥对时,首先利用物理TPM创建vAIK公私钥对,同时生成随机数nonce,然后执行申请vAIK证书的流程。
(2)vPCR模块使用nonce、vPCR实例绑定的容器ID和vAIK公钥向物理TPM发起请求,使用AIK私钥对这些信息和pPCR的值进行签名,表示如下:
QuotevAIK=SignAIK(nonce||containerID||vAIKpub||pPCR)
(3)vPCR模块对返回的QuotavAIK使用CA的公钥进行加密后发送给CA。
(4)CA对请求中的信息进行校验,若签名中的pPCR值与基准值相同,则CA签发vAIK证书。
(5)vPCR模块解密CA返回的信息,检验nonce的新鲜度,决定是否接受vAIK证书。
步骤3,请求验证容器动态完整性:如图4所示,用户请求验证系统中的验证服务验证目标系统中特定容器的动态完整性,验证系统与目标系统处于不同的物理主机当中,通过动态远程验证协议进行数据交换和验证流程。
步骤4,执行度量流程:如图5所示,以目标进程地址空间中的代码段(包括自身代码段和程序依赖共享库的代码段)为度量目标,遍历进程地址空间中的vm_area_struct列表,根据每个vm_area_struct的权限位(可读可执行)来筛选出代码段,并计算各代码段内容的安全哈希值作为其度量值:
SM=Hash(content(S))
进程度量日志格式设计如下:
PML={pid,SML1,SML2,…SMLi,…SMLn},(0<i<n,n≠+∞)
其中pid表示度量进程的PID值,SMLi表示对进程中第i个代码段的度量结果:
SML=<memSize,hashAlg,SM,filepath>
其中memSize表示该段在内存中的大小,hashAlg表示度量使用的安全哈希算法名,filepath表示度量代码段所属ELF文件的绝对路径名。容器的整个动态度量列表表示如下:
DML={PML1,PML2,…PMLi,…PMLm},(0<i<m,m≠+∞)
度量结果扩展存储至安全模块方法如下:
Mtemp=SHA1(SM1||SM2||…||SMi||…||SMn),(0<i<n,n≠+∞)
其中SMi表示进程中第i个代码段的安全哈希值。将上述计算结果扩展存储至相应的vPCR实例当中。
步骤5,返回完整性证据。
步骤6,验证完整性状态。
步骤3、5、6中涉及的验证系统Verifier与目标系统Attester之间的动态远程验证协议流程如图6所示。具体如下:
(1)Verifier生成随机数nonce,并向Attester发送远程证明请求,请求数据包括nonce,目标容器ID containerID或主机域中需要度量的程序名称列表processList。
(2)使用双AIK签名方案,Attester通过TSS从物理TPM获取pPCR的签名值(签名密钥为AIK),并从vPCR模块中获取相应容器vPCR签名值的签名值(签名密钥为vAIK)、所有的vPCR实例的值vPCRList和PCRold值(包括Reg0和Reg2对应的旧值),所有这些连同DML,AIK证书(CrtAIK)和vAIK证书(CrtvAIK)构成动态完整性报告DIR。
signedPCR=SignAIK(nonce||pPCR)||SignvAIK(nonce||vPCR)
DIR={signedPCR,vPCRList,PCRold,ML,CrtAIK,CrtvAIK}
(3)Verifier收到Attester发来的DIR,进入验证流程,验证目标系统的可信状态。
验证流程如下:
(1)验证AIK证书和nonce:通过CA的公钥验证CrtAIK和CrtvAIK,以证明远端主机实体的身份。之后验证签名signedPCR是否有效,并利用nonce校验当前的会话是否已经失效。
(2)验证vPCR的完整性:vPCRList中包括所有vPCR实例中Reg0和Reg2的值,以Reg0对应的容器启动时度量值为例,首先将所有vPCRList中的Reg0计算出vPCRhash,然后与PCRold中相应的旧值进行扩展操作,最后将计算结果与相应绑定的物理TPM中pPCR11的值比较,如果相等,则说明vPCR实例中的值可信。
(3)验证DML的完整性:对DML中的摘要值进行模拟扩展操作,与签名的vPCR中Reg2的进行对比,确认动态度量列表的完整性。
(4)验证度量值是否可信:确认DML的完整性后,对DML中的每一项与基准值数据库中的值进行对比,通过是否匹配确认可信性。
本发明所公开的技术手段不仅限于上述技术手段所公开的技术手段,还包括由以上技术特征等同替换所组成的技术方案。本发明的未尽事宜,属于本领域技术人员的公知常识。
Claims (9)
1.一种基于可信计算的Docker平台动态防护方法,其特征在于,包括以下步骤:
(1)系统初始化,包括完成vPCR模块和度量代理模块的初始化工作;
(2)用户生成容器,vPCR模块负责生成与容器对应的vPCR实例;
(3)用户通过验证系统中的远程验证模块向平台请求验证目标系统中特定容器的动态完整性;
(4)目标系统中的度量代理模块根据请求执行度量流程,将度量值扩展存储至vPCR模块和TPM构成的安全模块当中,并记录相应的度量日志;
(5)目标系统向验证系统返回完整性证据;
(6)验证系统根据目标系统的完整性证据判断其完整性状态;
通过在vPCR模块维护容器命名空间与vPCR实例的映射关系,完成vPCR实例与相应容器之间的绑定;同时,vPCR实例在扩展操作过程中完成与底层物理TPM的绑定,具体步骤如下:
(1)当vPCR模块接收到扩展操作请求时且pcr_old文件中相应的PCRold不为0时,计算所有vPCR实例相应寄存器值串联后的哈希值:
其中表示与容器j绑定的vPCR实例中第i个寄存器的值,而后将与pcr_old中相应的值进行标准扩展操作,即计算并与pPCR中的值进行对比,若相等则验证通过,继续操作;若不通过,则通知出现异常,停止操作;
(2)对目标vPCR实例执行扩展操作,将新产生的与容器j相关的度量值value记录到vPCR实例中:
2.根据权利要求1所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,所述vPCR模块由vPCR实例和外围辅助功能模块组成,vPCR实例与用户容器一一对应;每个vPCR实例包括三个寄存器Reg0、Reg1和Reg2,分别用于扩展存储容器的启动度量值、静态度量值和动态度量值。
3.根据权利要求1所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,步骤(1)所述的vPCR模块初始化过程中生成/sys/kernel/security/vpcr/pcr_old文件,设其中的值为PCRold,用于记录与vPCR实例绑定的物理TPM中PCR的旧值pPCR,初始化完成时,PCRold和pPCR都为0;步骤(1)所述的度量代理模块的初始化过程中生成主机域的动态度量文件,并记录主机域的PID命名空间。
4.根据权利要求1所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,步骤(2)所述的容器生成过程中,完成信任链的传递,具体来说,平台启动后CRTM首先获得系统的控制权,接着度量验证BIOS的完整性,如果验证通过,就将控制权移交给BIOS;接着通过一级验证一级的方式,依次度量BootLoader、OS Kernel和docker daemon的完整性,最后dockerdaemon完成对Docker镜像完整性的度量;若上述验证通过,根据镜像生成容器,并通过vPCR模块生成相应的vPCR实例,将镜像的度量值扩展存储至相应vPCR实例的Reg0。
5.根据权利要求1所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,步骤(2)所述的vPCR实例生成过程中,需要为vPCR实例申请相应的vAIK证书,用于后续的完整性证据生成,向CA申请vAIK证书的过程如下:
(1)vPCR模块需要为vPCR实例分配vAIK密钥对时,首先利用物理TPM创建vAIK公私钥对,同时生成随机数nonce,然后执行申请vAIK证书的流程;
(2)vPCR模块使用nonce、vPCR实例绑定的容器ID containerID和vAIK公钥vAIKpub向物理TPM发起请求,物理TPM使用AIK私钥对这些信息和物理TPM中与系统启动相关的PCR值pPCR进行签名:
QuotevAIK=SignAIK(nonce||containerID||vAIKpub||pPCR)
其中SignAIK表示使用物理TPM的AIK私钥进行签名操作;
(3)vPCR模块对返回的QuotavAIK使用CA的公钥进行加密后发送给CA;
(4)CA对请求中的信息进行校验,若签名中的pPCR值与基准值相同,则CA签发vAIK证书;
(5)vPCR模块解密CA返回的信息,检验nonce的新鲜度,决定是否接受vAIK证书。
6.根据权利要求1所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,远程验证模块所在的验证系统与度量代理模块所在的目标系统处于不同的物理主机。
7.根据权利要求1所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,步骤(4)所述的度量流程以进程地址空间中的代码段为度量目标,进程地址空间中的代码段包括自身代码段和程序依赖共享库的代码段,遍历进程地址空间中的vm_area_struct列表,根据每个vm_area_struct的权限位来筛选出代码段,权限位指可读可执行权限,并计算各代码段内容的安全哈希值作为其度量值:
SM=Hash(content(S))。
8.根据权利要求7所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,步骤(4)所述的度量日志格式如下:
PML={pid,SML1,SML2,...SMLi,...SMLn},(0<i<n,n≠+∞)
其中pid表示度量进程的PID值,SMLi表示对进程中第i个代码段的度量结果:
SML=<memSize,hashAlg,SM,filepath>
其中memSize表示该段在内存中的大小,hashAlg表示度量使用的安全哈希算法名,filepath表示度量代码段所属ELF文件的绝对路径名,容器的整个动态度量列表表示如下:
DML={PML1,PML2,...PMLi,...PMLm},(0<i<m,m≠+∞)
度量结果扩展存储至安全模块方法如下:
Mtemp=SHA1(SM1||SM2||…||SMi||…||SMn),(0<i<n,n≠+∞)
其中SMi表示进程中第i个代码段的安全哈希值,将上述计算结果扩展存储至相应的vPCR实例当中。
9.根据权利要求8所述的一种基于可信计算的Docker平台动态防护方法,其特征在于,验证系统Verifier与目标系统Attester之间的验证协议如下:
(1)Verifier生成随机数nonce,并向Attester发送远程证明请求,请求数据包括nonce,目标容器ID containerID或主机域中需要度量的程序名称列表processList;
(2)使用双AIK签名方案,Attester通过TSS从物理TPM获取与vPCR实例绑定的PCR,表示为pPCR的签名值,其签名密钥为AIK,并从vPCR模块中获取相应容器vPCR的签名值,其签名密钥为vAIK、所有的vPCR实例的值vPCRList和PCRold值,包括Reg0和Reg2对应的旧值,所有这些连同DML,AIK证书(CrtAIK)和vAIK证书(CrtvAIK)构成动态完整性报告DIR,
signedPCR=SignAIK(nonce||pPCR)||SignvAIK(nonce||vPCR)
DIR={signedPCR,vPCRList,PCRold,DML,CrtAIK,CrtvAIK}
其中SignAIK表示使用物理TPM的AIK进行签名操作,SignvAIK表示使用vPCR实例的vAIK进行签名操作;
(3)Verifier收到Attester发来的DIR,进入验证流程,验证目标系统的可信状态,
验证流程如下:
(1)验证AIK证书和nonce:通过CA的公钥验证CrtAIK和CrtvAIK,以证明远端主机实体的身份,之后验证签名signedPCR是否有效,并利用nonce校验当前的会话是否已经失效;
(2)验证vPCR的完整性:vPCRList中包括所有vPCR实例中Reg0和Reg2的值,以Reg0对应的容器启动时度量值为例,首先将所有vPCRList中的Reg0计算出vPCRhash,然后与PCRold中相应的旧值进行扩展操作,最后将计算结果与相应绑定的物理TPM中pPCR11的值比较,如果相等,则说明vPCR实例中的值可信;
(3)验证DML的完整性:对DML中的摘要值进行模拟扩展操作,与签名的vPCR中Reg2的进行对比,确认动态度量列表的完整性;
(4)验证度量值是否可信:确认DML的完整性后,对DML中的每一项与基准值数据库中的值进行对比,通过是否匹配确认可信性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010457330.9A CN111698091B (zh) | 2020-05-26 | 2020-05-26 | 一种基于可信计算的Docker平台动态防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010457330.9A CN111698091B (zh) | 2020-05-26 | 2020-05-26 | 一种基于可信计算的Docker平台动态防护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111698091A CN111698091A (zh) | 2020-09-22 |
CN111698091B true CN111698091B (zh) | 2022-08-19 |
Family
ID=72478366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010457330.9A Active CN111698091B (zh) | 2020-05-26 | 2020-05-26 | 一种基于可信计算的Docker平台动态防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111698091B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112995206B (zh) * | 2021-04-13 | 2021-07-30 | 北京电信易通信息技术股份有限公司 | 一种基于可信技术实现多型工作单元安全联动的方法 |
CN114048485B (zh) * | 2021-11-12 | 2023-04-07 | 四川大学 | 一种针对Docker容器内进程代码段完整性动态监测方法 |
CN114201747B (zh) * | 2021-11-29 | 2022-12-13 | 海光信息技术股份有限公司 | 一种动态度量根实现方法、装置、系统及存储介质 |
CN114201761B (zh) * | 2022-02-17 | 2022-06-28 | 支付宝(杭州)信息技术有限公司 | 在可信计算系统中增强度量代理安全性 |
CN114679253B (zh) * | 2022-04-22 | 2023-03-14 | 四川大学 | 一种vTPM2.0的中国商用密码算法扩展方法 |
CN117971347B (zh) * | 2024-03-28 | 2024-06-11 | 中国人民解放军国防科技大学 | 一种基于TrustZone的容器可信服务设计方法、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701607A (zh) * | 2013-12-25 | 2014-04-02 | 国家电网公司 | 一种虚拟机环境下可信平台模块的虚拟化方法 |
CN103795717A (zh) * | 2014-01-23 | 2014-05-14 | 中国科学院计算技术研究所 | 一种云计算平台完整性证明方法及其系统 |
EP3514714A1 (en) * | 2018-01-22 | 2019-07-24 | Hewlett Packard Enterprise Development LP | Integrity verification of an entity |
-
2020
- 2020-05-26 CN CN202010457330.9A patent/CN111698091B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701607A (zh) * | 2013-12-25 | 2014-04-02 | 国家电网公司 | 一种虚拟机环境下可信平台模块的虚拟化方法 |
CN103795717A (zh) * | 2014-01-23 | 2014-05-14 | 中国科学院计算技术研究所 | 一种云计算平台完整性证明方法及其系统 |
EP3514714A1 (en) * | 2018-01-22 | 2019-07-24 | Hewlett Packard Enterprise Development LP | Integrity verification of an entity |
Non-Patent Citations (2)
Title |
---|
"基于可信计算的Docker平台防护技术研究";潘桂鑫;《中国优秀硕士学位论文全文数据库》;20220415;全文 * |
一种可信虚拟平台底层环境验证方案;孙浩男等;《计算机应用与软件》;20180812(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111698091A (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111698091B (zh) | 一种基于可信计算的Docker平台动态防护方法 | |
US9361462B2 (en) | Associating a signing key with a software component of a computing platform | |
McCune et al. | Flicker: An execution infrastructure for TCB minimization | |
US9264220B2 (en) | Secure virtual machine provisioning | |
US8074262B2 (en) | Method and apparatus for migrating virtual trusted platform modules | |
KR100930218B1 (ko) | 소프트웨어 기반 보안 코프로세서를 제공하는 방법, 장치및 처리 시스템 | |
US8151262B2 (en) | System and method for reporting the trusted state of a virtual machine | |
US9626512B1 (en) | Validating using an offload device security component | |
US11455396B2 (en) | Using trusted platform module (TPM) emulator engines to measure firmware images | |
US7571312B2 (en) | Methods and apparatus for generating endorsement credentials for software-based security coprocessors | |
US7636442B2 (en) | Method and apparatus for migrating software-based security coprocessors | |
US8953807B2 (en) | Method and apparatus for remotely provisioning software-based security coprocessors | |
JP5390703B2 (ja) | 隠れ実行環境における整合性検証及び証明の提供 | |
US20110246778A1 (en) | Providing security mechanisms for virtual machine images | |
US20180013552A1 (en) | Validating using an offload device security component | |
US20090089582A1 (en) | Methods and apparatus for providing upgradeable key bindings for trusted platform modules | |
US10211985B1 (en) | Validating using an offload device security component | |
CN103270518A (zh) | 虚拟机验证 | |
WO2016045458A1 (zh) | 一种安全控制方法及网络设备 | |
US20230237155A1 (en) | Securing communications with security processors using platform keys | |
US20230066427A1 (en) | Distributed trusted platform module key management protection for roaming data | |
Futral et al. | Fundamental principles of intel® txt | |
AU2016429414B2 (en) | Balancing public and personal security needs | |
Sadeghi | Property-Based Attestation Approach and Virtual TPM | |
Kursawe | The future of trusted computing: An outlook |
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 |