CN111698091B - 一种基于可信计算的Docker平台动态防护方法 - Google Patents

一种基于可信计算的Docker平台动态防护方法 Download PDF

Info

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
Application number
CN202010457330.9A
Other languages
English (en)
Other versions
CN111698091A (zh
Inventor
黄杰
潘桂鑫
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.)
Southeast University
Original Assignee
Southeast University
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 Southeast University filed Critical Southeast University
Priority to CN202010457330.9A priority Critical patent/CN111698091B/zh
Publication of CN111698091A publication Critical patent/CN111698091A/zh
Application granted granted Critical
Publication of CN111698091B publication Critical patent/CN111698091B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/3234Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation 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]
    • 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

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平台的安全防护具有重要的研究意义和实用价值。在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实例相应寄存器值串联后的哈希值:
Figure BDA0002509806290000021
其中
Figure BDA0002509806290000031
表示与容器j绑定的vPCR实例中第i个寄存器的值。而后将
Figure BDA0002509806290000032
与pcr_old中相应的值(设为
Figure BDA0002509806290000033
)进行标准扩展操作,即计算
Figure BDA0002509806290000034
并与pPCR中的值进行对比,若相等则验证通过,继续操作;若不通过,则通知出现异常,停止操作。
(2)对目标vPCR实例执行扩展操作,将新产生的与容器j相关的度量值value记录到vPCR实例中:
Figure BDA0002509806290000035
(3)用更新过的
Figure BDA0002509806290000036
重新计算新的
Figure BDA0002509806290000037
同时将pcr_old的值置为pPCR中记录的当前值,最后将
Figure BDA0002509806290000038
扩展到pPCR中。
在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实例相应寄存器值串联后的哈希值:
Figure BDA0002509806290000051
其中
Figure BDA0002509806290000052
表示与容器j绑定的vPCR实例中第i个寄存器的值。而后将
Figure BDA0002509806290000053
与pcr_old中相应的值(设为
Figure BDA0002509806290000054
)进行标准扩展操作,即计算
Figure BDA0002509806290000055
并与pPCR中的值进行对比,若相等则验证通过,继续操作;若不通过,则通知出现异常,停止操作。
(2)对目标vPCR实例执行扩展操作,将新产生的与容器j相关的度量值value记录到vPCR实例中:
Figure BDA0002509806290000056
(3)用更新过的
Figure BDA0002509806290000057
重新计算新的
Figure BDA0002509806290000058
同时将pcr_old的值置为pPCR中记录的当前值,最后将
Figure BDA0002509806290000059
扩展到pPCR中。
在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实例相应寄存器值串联后的哈希值:
Figure FDA0003705642860000011
其中
Figure FDA0003705642860000013
表示与容器j绑定的vPCR实例中第i个寄存器的值,而后将
Figure FDA0003705642860000016
与pcr_old中相应的值
Figure FDA0003705642860000014
进行标准扩展操作,即计算
Figure FDA0003705642860000015
并与pPCR中的值进行对比,若相等则验证通过,继续操作;若不通过,则通知出现异常,停止操作;
(2)对目标vPCR实例执行扩展操作,将新产生的与容器j相关的度量值value记录到vPCR实例中:
Figure FDA0003705642860000012
(3)用更新过的
Figure FDA0003705642860000018
重新计算新的
Figure FDA0003705642860000019
同时将pcr_old的值置为pPCR中记录的当前值,最后将
Figure FDA0003705642860000017
扩展到pPCR中。
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中的每一项与基准值数据库中的值进行对比,通过是否匹配确认可信性。
CN202010457330.9A 2020-05-26 2020-05-26 一种基于可信计算的Docker平台动态防护方法 Active CN111698091B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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