CN117034258A - 一种基于Docker的物联网程序运行时验证方法 - Google Patents

一种基于Docker的物联网程序运行时验证方法 Download PDF

Info

Publication number
CN117034258A
CN117034258A CN202311004955.XA CN202311004955A CN117034258A CN 117034258 A CN117034258 A CN 117034258A CN 202311004955 A CN202311004955 A CN 202311004955A CN 117034258 A CN117034258 A CN 117034258A
Authority
CN
China
Prior art keywords
container
verification
target container
measurement
value
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
CN202311004955.XA
Other languages
English (en)
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.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
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 Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN202311004955.XA priority Critical patent/CN117034258A/zh
Publication of CN117034258A publication Critical patent/CN117034258A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/31User authentication
    • G06F21/33User authentication using certificates
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Storage Device Security (AREA)

Abstract

本发明公开一种基于Docker的物联网程序运行时验证方法,涉及程序验证技术领域,该方法包括:基于完整性度量架构,对容器镜像进行哈希度量并写入度量列表;将目标容器对应的度量列表中度量值存储到目标容器对应的vPCR模块;将vPCR模块扩展入可信平台模块;对目标容器所在主机平台的身份信息和状态信息进行验证,验证通过则容器启动成功;根据容器ID、目标容器内进程pid以及采集时间获取对应进程运行时的内存二进制信息,并构造内存事件;通过对验证状态机端接收的内存事件进行状态间流转,实现对内存事件对应的物联网程序业务流程上的验证。本发明提高了物联网程序运行的安全性。

Description

一种基于Docker的物联网程序运行时验证方法
技术领域
本发明涉及程序验证技术领域,特别是涉及一种基于Docker的物联网程序运行时验证方法。
背景技术
随着物联网技术的蓬勃发展,终端程序的大规模部署,人们对云计算虚拟机化技术提出了更高的要求。不同于传统的虚拟机技术,容器作为一种新型的虚拟化技术具有部署方便、启动速度快、运行效率高等特点,受到众多物联网厂商和企业的青睐。Docker作为典型代表是目前容器技术的主流,然而其面临的安全问题也日益严峻。另外,随着攻击技术的泛滥,很多攻击会导致软件在运行时出现非预期的错误,影响整个软件的运行流程,甚至造成目标系统的拒绝服务。在物联网无人值守、高度自动化的应用环境下,物联网服务的运行安全仍有待提高。
发明内容
本发明的目的是提供一种基于Docker的物联网程序运行时验证方法,提高了物联网程序运行的安全性。
为实现上述目的,本发明提供了如下方案:
一种基于Docker的物联网程序运行时验证方法,包括:
启动容器ID对应的目标容器;所述目标容器为Docker容器;
基于完整性度量架构,对容器镜像进行哈希度量并写入度量列表,对启动所述目标容器时的启动依赖文件和应用文件进行哈希度量并写入度量列表;将所述目标容器对应的度量列表中度量值存储到所述目标容器对应的vPCR模块;
将所述vPCR模块扩展入可信平台模块;
基于所述可信平台模块为所述vPCR模块生成虚拟AIK证书;
基于所述目标容器对应的度量列表,对所述目标容器所在主机平台的身份信息和状态信息进行验证,若验证通过则所述目标容器启动成功;
当所述目标容器启动成功后,根据所述容器ID、所述目标容器内进程pid以及验证状态机端发送的采集时间,获取对应进程运行时的内存二进制信息;
确定所述内存二进制信息对应的函数调用轨迹和目标参数信息并构造内存事件,将构造的内存事件发送到验证状态机端;
通过对所述验证状态机端接收的所述内存事件进行状态间流转,实现对所述内存事件对应的物联网程序业务流程上的验证。
可选地,基于完整性度量架构,对容器镜像进行哈希度量并写入度量列表,对启动所述目标容器时的启动依赖文件和应用文件进行哈希度量并写入度量列表,具体包括:
以所述容器ID命名,创建所述目标容器对应的度量列表;
通过度量代理监听并捕获所述完整性度量架构的度量事件;
对于监听到的度量事件,解析度量事件进程的结构体获得度量事件进程的NamespaceID,将度量事件进程的NamespaceID和所述目标容器的NamespaceID对比;
若度量事件进程的NamespaceID和所述目标容器的NamespaceID相等,则将监听到的度量事件对应的度量值扩展入所述目标容器对应的度量列表中。
可选地,将所述vPCR模块扩展入可信平台模块,具体包括:
遍历vPCR模块链表中vPCR模块,根据每个vPCR模块的哈希度量值计算哈希度量中间值;
若所述可信平台模块的扩展寄存器的值不为0,比较扩展寄存器的值与当前哈希度量中间值是否相同,若不相同则所述目标容器启动失败;
若扩展寄存器的值为0或者扩展寄存器的值与当前哈希度量中间值相同,则对所述目标容器对应的vPCR模块进行扩展操作,得到扩展操作后的哈希度量中间值;
将扩展操作后的哈希度量中间值扩展到所述扩展寄存器中。
可选地,基于所述可信平台模块为所述vPCR模块生成虚拟AIK证书,具体包括:
所述可信平台模块生成AIK密钥对,记为第一AIK密钥对,并生成EK证书,将生成的EK证书发送到认证中心;
所述认证中心通过所述EK证书验证所述可信平台模块的身份,通过验证后向所述所述可信平台模块签发AIK证书;
所述目标容器的vPCR模块向所述可信平台模块发送申请证书请求,所述申请证书请求中包括所述容器ID;
所述可信平台模块接收到所述申请证书请求后,根据所述容器ID创建vAIK密钥对,同时生成Key,所述Key为RSA密钥对;
所述可信平台模块采用所述第一AIK密钥对中私钥对所述Key进行签名,得到第一签名信息;
所述可信平台模块采用所述Key对所述vAIK密钥对中公钥、所述容器ID和寄存器进行签名,得到第二签名信息;
所述可信平台模块将所述第一签名信息、所述第二签名信息和所述vAIK密钥对中公钥组成所述虚拟AIK证书。
可选地,基于所述目标容器对应的度量列表,对所述目标容器所在主机平台的身份信息和状态信息进行验证,具体包括:
证明者向验证者发送验证请求,所述验证请求包括所述目标容器的所述容器ID;证明者为所述目标容器所在主机平台的证明者;
所述验证者生成AIK密钥对和AIK证书,将验证者生成的AIK密钥对记为第二AIK密钥对;
当所述验证者接收到所述验证请求后,收集所述验证者所在主机平台的状态信息,同时生成第一随机数,采用所述第二AIK密钥对中私钥对所述状态信息、所述第一随机数和所述容器ID进行签名,得到第三签名信息,将所述第三签名信息和所述AIK证书发送给所述证明者;
所述证明者接收所述第三签名信息和所述AIK证书后,通过采用所述第二AIK密钥对中公钥对所述第三签名信息进行解密验证所述验证者的身份,通过身份验证后,根据虚拟AIK证书申请协议生成所述证明者的虚拟AIK证书;利用所述AIK证书对pPCR值签名得到第四签名信息,利用所述证明者的虚拟AIK证书对vPCR模块值签名得到第五签名信息,同时生成第二随机数,将所述第四签名信息、所述第五签名信息、所述第二随机数、所述AIK证书、所述证明者的虚拟AIK证书、vPCR模块链表中各vPCR模块的value值集合以及所述目标容器对应的度量列表组成第一认证报告,将所述第一认证报告和所述第一认证报告的哈希值构成的第一认证消息发送到所述验证者;
所述验证者接收到所述第一认证消息后,对所述第一认证消息进行验证,将验证结果生成第二验证报告,将所述第二验证报告、所述第二随机数、以及所述第二验证报告和所述第二随机数进行连接后的哈希值构成的第二认证消息发送到所述证明者;
所述证明者通过接收到的所述第二认证消息后,对所述第二认证消息进行验证,若对所述第二认证消息验证通过则所述目标容器所在主机平台的身份信息和状态信息通过验证。
可选地,当所述目标容器启动成功后,根据所述容器ID、所述目标容器内进程pid以及验证状态机端发送的采集时间,获取对应进程运行时的内存二进制信息,具体包括:
根据所述容器ID确定所述目标容器的NamespaceID;
根据所述目标容器的NamespaceID和所述目标容器内进程pid在pid_hash表查询定位数组节点;所述定位数组节点包括ns值和nr值,所述ns值表示NamespaceID的值,所述nr值表示进程pid的值;
根据查询到的定位数组节点定位到目标进程中upid结构体,确定所述upid结构体对应的PID实体;
根据所述PID实体获得进程描述符,根据所述进程描述符中成员变量确定进程虚拟空间内存地址;
将所述虚拟空间内存地址转换到物理地址;
根据所述虚拟空间内存地址、所述物理地址和mmap函数,确定对应进程运行时的内存二进制信息。
可选地,通过对所述验证状态机端接收的所述内存事件进行状态间流转,实现对所述内存事件对应的物联网程序业务流程上的验证,具体包括:
根据当前状态节点的预测时间值进行内存事件采集,并开启计时,当所述验证状态机端采集到内存事件时,对物联网程序业务流程的当前状态节点的下一状态节点的多函数约束表达式进行遍历,若当前采集的内存事件满足多函数约束表达式中任意约束,则转移成功,将下一状态节点更新为当前状态节点,若当前采集的内存事件不能满足多函数约束表达式中任意约束,则转移失败,继续进行内存事件采集,直到转移成功,得到当前状态节点的转移总时长,若当前状态节点的转移总时长出现次数达到设定阈值时,将当前状态节点的转移总时长更新为当前状态节点的预测时间值;
若当前状态节点为最终节点,则物联网程序业务流程验证结束。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明首先在目标容器启动过程中对运行环境进行验证,其次在目标容器启动成功后对运行时状态进行验证,从而提高了物联网程序运行的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于Docker的物联网程序运行时验证方法流程示意图;
图2为本发明实施例提供的虚拟AIK证书生成示意图;
图3为本发明实施例提供的远程验证时证明端和验证端的时序交互图;
图4为本发明实施例提供的虚拟地址转换为物理地址的示意图;
图5为本发明实施例提供的单个节点的状态转移示意图;
图6为本发明实施例提供的内存事件字符串格式示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种基于Docker的物联网程序运行时验证方法,提高了物联网程序运行的安全性。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
实施例1
如图1所示,本实施例提供的一种基于Docker的物联网程序运行时验证方法,具体包括如下步骤。
步骤101:启动容器ID对应的目标容器;所述目标容器为Docker容器。
步骤102:基于完整性度量架构,对容器镜像进行哈希度量并写入度量列表,对启动所述目标容器时的启动依赖文件和应用文件进行哈希度量并写入度量列表;将所述目标容器对应的度量列表中度量值存储到所述目标容器对应的vPCR模块。
步骤103:将所述vPCR模块扩展入可信平台模块。
步骤104:基于所述可信平台模块为所述vPCR模块生成虚拟AIK证书。
步骤105:基于所述目标容器对应的度量列表,对所述目标容器所在主机平台的身份信息和状态信息进行验证,若验证通过则所述目标容器启动成功。
步骤106:当所述目标容器启动成功后,根据所述容器ID、所述目标容器内进程pid以及验证状态机端发送的采集时间,获取对应进程运行时的内存二进制信息。
步骤107:确定所述内存二进制信息对应的函数调用轨迹和目标参数信息并构造内存事件,将构造的内存事件发送到验证状态机端。
步骤108:通过对所述验证状态机端接收的所述内存事件进行状态间流转,实现对所述内存事件对应的物联网程序业务流程上的验证。
针对启动过程中需要对运行环境进行验证的问题,本发明通过步骤101-步骤103利用可信平台模块(TPM)和完整性度量架构(IMA)技术实现可信启动中的完整性度量。
针对启动成功后需要对运行时状态进行验证的问题,本发明通过步骤104-步骤105利用远程验证技术完成度量值的可信验证。
本发明中容器(目标容器)是Docker的体现形式,它根据镜像文件启动,形成一个个动态实例,本质上是一个个进程。容器通过命名空间(Namespace)技术实现进程通信、文件系统、网络配置和域名之前的隔离,达到内部进程互不干扰的目的。本次可信启动目标是保证容器镜像文件、启动依赖文件和容器内应用文件度量值的完整性。其中步骤101中,用户使用docker start<containerID>命令,启动对应目标容器。
度量代理是完整性度量的核心模块,承接了整个度量过程中的容器镜像、启动依赖文件和应用文件度量值的收集和分发工作。度量代理首先针对容器镜像(Docker镜像是Docker容器启动的基础,包含了启动所需要的全部静态数据资源,本质上是一种root文件系统)进行哈希度量,然后针对容器启动时依赖文件和应用程序的完整性引入改进IMA机制进行哈希度量。
相关名词解释:ConID代表Docker为容器动态实时分配的容器ID;NamespaceID指容器进程命名空间ID,同一容器内进程NamespaceID一致。IMA度量是通过在内核相应度量点处埋入钩子函数,实现当内核模块加载、动态链接库加载和应用程序运行时,对相关代码和关键数据进行度量并写入度量列表中。vPCR(虚拟PCR)模块存储各个容器度量值,同时通过步骤103与底层TPM绑定。
其中,步骤102具体包括:
根据容器ID(ConID)获取对应目标容器的NamespaceID。
以所述容器ID命名,创建所述目标容器对应的度量列表,创建的度量列表为空文件。
通过度量代理监听并捕获所述完整性度量架构的度量事件。
对于监听到的度量事件,解析度量事件进程的task_struct结构体获得度量事件进程的NamespaceID,将度量事件进程的NamespaceID和所述目标容器的NamespaceID对比。
若度量事件进程的NamespaceID和所述目标容器的NamespaceID相等,则将监听到的度量事件对应的度量值扩展入所述目标容器对应的度量列表中。
最后将容器度量列表内容根据如下公式扩展入容器对应的vPCR模块(虚拟PCR模块)中。
target-vPCR.conHash=HASH(target-vPCR.conHash||e.n odehash),(e∈conMLi);
target-vPCR.value=HASH(target-vPCR.value||target-vPCR.conHash);
其中,target-vPCR.conHash代表目标vPCR模块中启动依赖文件和应用程序的哈希度量值,e.nodehash代表当前IMA度量事件的度量值,conMLi代表目标容器度量列表,target-vPCR.value代表目标vPCR模块中容器镜像和启动依赖文件、应用程序的哈希度量值,e为当前IMA度量事件。
其中,步骤103将不同容器的度量值隔离存储入vPCR模块形成vPCR模块-List(各个容器的vPCR模块通过指针串联起来形成vPCR模块-List链表),并扩展入TPM(可信平台模块)的物理PCR中保证度量值的可信存储。TPM是一种安全密码处理器,本发明方法通过使用专用安全硬件TPM来对信息进行加密和存储,具体包括:
由于TPM的PCR15寄存器属于用户自定义寄存器,选择PCR15寄存器作为扩展寄存器。
当vPCR模块接收到绑定TPM的请求时,首先遍历vPCR模块链表中前n-1个vPCR模块,计算每个vPCR模块的哈希度量值vPCRi.value计算哈希度量中间值。前n-1个vPCR模块为目标容器的度量列表扩展之前的所有vPCR模块。
vPCR模块链表为各个容器的vPCR模块通过指针串联起来形成vPCR模块-List链表。
前n-1个vPCR模块据目前所有具有的vPCR模块数量设置。
每个vPCR模块的哈希度量中间值tempPCR的初始值为0,计算公式为:
tempPCR=HASH(tempPCR||vPCRi.value),(0<i<n,n≠+∞);
其中,tempPCR表示哈希度量中间值,vPCRi.value代表第i个vPCR模块中容器镜像和启动依赖文件、应用程序的哈希度量值。
若所述可信平台模块的扩展寄存器的值不为0,比较扩展寄存器的值与所述哈希度量中间值是否相同,若不相同则所述目标容器启动失败。
若扩展寄存器的值为0或者扩展寄存器的值与当前哈希度量中间值相同,则对所述目标容器对应的vPCR模块进行扩展操作,得到扩展操作后的哈希度量中间值。
将扩展操作后的哈希度量中间值扩展到所述扩展寄存器中,具体包括:
将vPCR模块-List中第n个vPCR模块的值与tempPCR进行如下公式计算,得到新的tempPCR。
tempPCR=HASH(tempPCR||vPCRn.value);
其中,vPCRn.value代表第n个vPCR模块(目标容器的vPCR模块)中容器镜像和启动依赖文件、应用程序的哈希度量值。
对对TPM的PCR15寄存器值进行重置,并将新的tempPCR扩展到PCR15寄存器中。
PCR15=PCR_Extend(PCR15,tempPCR);
其中,PCR15寄存器代表TPM中的第15个PCR寄存器。
完成完整性度量之后需要通过远程验证对度量值进行验证。但是在远程验证之前需要保证vPCR管理模块的可信性,因此需要针对其生成虚拟AIK(平台身份认证密钥)证书。本发明方法中,基于信任扩展实现虚拟AIK证书的申请,利用物理AIK的证书链扩展保证了虚拟AIK的可信,进而保证了vPCR管理模块的可信性。
其中,如图2所示,步骤104具体包括:
1)所述可信平台模块生成AIK密钥对,记为第一AIK密钥对,并利用TPM初始化生成EK证书,将生成的EK证书发送到认证中心。
EK证书又叫背书证书,一个TPM一生只能有一个EK证书,EK证书是TPM芯片的唯一标识。
所述认证中心通过所述EK证书验证所述可信平台模块的身份,通过验证后向所述所述可信平台模块签发AIK证书。AIK用于签名硬件TPM上的PCR0-PCR7以及PCR15寄存器,来证明宿主机平台的完整性。
TPM上的PCR0-PCR7以及PCR15寄存器称pPCR。
2)所述目标容器的vPCR模块向所述可信平台模块发送申请证书请求,并将ConID扩展至TPM内部,所述申请证书请求中包括所述容器ID。
3)所述可信平台模块接收到所述申请证书请求后,根据所述容器ID创建vAIK密钥对,同时生成Key,所述Key为RSA密钥对。
4)所述可信平台模块采用所述第一AIK密钥对中私钥对所述Key进行签名,得到第一签名信息,实现Key与物理平台身份信息(容器所在物理主机的完整性度量信息)绑定。
5)所述可信平台模块采用所述Key对所述vAIK密钥对中公钥、所述容器ID和寄存器(寄存器PCR0-寄存器PCR7)进行签名,得到第二签名信息;寄存器PCR0-寄存器PCR7共8个寄存器。
所述可信平台模块将所述第一签名信息、所述第二签名信息和所述vAIK密钥对中公钥组成所述虚拟AIK证书。
证明者收集验证信息,采用双AIK签名平台身份信息和平台状态信息。验证者实现平台身份和状态信息的双重验证。
相关名词解释:目标容器是指本次远程验证所需验证的容器;AIKv代表验证者端生成的AIK密钥对。平台身份信息代表平台身份的真实性;平台状态信息代表运行在平台上应用程序的可信性。
证明者为目标容器所在主机平台的证明者;证明者和验证者属于不同的主机平台。
其中,远程验证流程如图3所示,步骤105具体包括:
1)证明者向验证者发送验证请求,所述验证请求包括所述目标容器的所述容器ID。
Attester→Verifier:ConID;
其中,Attester代表证明者,Verifier代表验证者,ConID代表目标容器编号。
2)验证者通过CA完成自己所在平台的身份验证,生成AIK密钥对和AIK证书,将验证者生成的AIK密钥对记为第二AIK密钥对。
当所述验证者接收到所述验证请求后,收集所述验证者所在主机平台的状态信息verPCR,同时生成第一随机数N1,采用所述第二AIK密钥对中私钥对所述状态信息、所述第一随机数和所述容器ID进行签名,得到第三签名信息,将所述第三签名信息和所述AIK证书发送给所述证明者,请求挑战。发送平台状态信息是为了向证明者证明自身平台的可信性,生成N1随机数是为了保持本次会话的新鲜性,避免重放攻击。
其中,verPCR代表验证者所在主机平台的状态信息,验证者所在主机平台的状态信息是指验证者所在主机的TPM的扩展寄存器的哈希度量值,N1代表验证者生成的第一随机数,代表使用验证者的AIK密钥AIKv进行签名,/>代表验证者的AIK证书。
3)所述证明者接收所述第三签名信息和所述AIK证书后,通过采用所述第二AIK密钥AIKv对中公钥对所述第三签名信息进行解密验证所述验证者的身份,通过身份验证后,根据虚拟AIK证书申请协议生成所述证明者的虚拟AIK证书;利用所述AIK证书对pPCR值(硬件PCR0-PCR7和PCR15寄存器)签名得到第四签名信息,利用所述证明者的虚拟AIK证书对目标容器对应的vPCR模块值签名得到第五签名信息,同时生成第二随机数N2,将所述第四签名信息、所述第五签名信息、所述第二随机数、所述AIK证书、所述证明者的虚拟AIK证书、vPCR模块链表中各vPCR模块的value值集合以及所述目标容器对应的度量列表(conML)组成第一认证报告M1,将所述第一认证报告和所述第一认证报告的哈希值构成的第一认证消息发送到所述验证者。其中生成的第二随机数N2是为了保证本次返回请求的新鲜性。
signPCR=SignAIK(pPCR||N1)||SignvAIK(vPCR||N1);
M1={signPCR,sendPCRs,conML,CertAIK,CertvAIK,N2};
Attester→Verifier:M1,HASH(M1);
其中,SignAIK代表使用证明者的AIK密钥进行签名,SignvAIK代表使用虚拟AIK(vAIK)密钥进行签名,sendPCRs代表vPCR模块-List中各个vPCR模块的value值集合,conML代表目标容器度量值列表,CertAIK和CertvAIK分别代表证明者的AIK证书和vAIK证书,HASH代表哈希计算,signPCR为第四签名信息和第五签名信息连接后的结果,||表示连接。
4)所述验证者接收到所述第一认证消息后,对所述第一认证消息进行验证,将验证结果生成第二验证报告M2,将所述第二验证报告、所述第二随机数、以及所述第二验证报告和所述第二随机数进行连接后的哈希值构成的第二认证消息发送到所述证明者。
验证者接收到所述第一认证消息后,对接收到的第一认证报告M1进行哈希计算,将计算得到的哈希值和第一认证消息中哈希值进行比较,若相同则验证通过,否则,验证不通过。第二验证报告M2用于表示验证是否通过的结果。
Verifier→Attester:M2,N2,HASH(M2||N2)。
5)所述证明者通过接收到的所述第二认证消息后,对接收到的第二认证报告M2进行哈希计算,将计算得到的哈希值和第二认证消息中哈希值进行比较,并将接收到的第二随机数与证明者存储的第二随机数进行比较,若均相同则验证通过,即所述目标容器所在主机平台的身份信息和状态信息通过验证,否则,验证不通过。
证明者首先验证hash值确认报告没有被篡改,然后验证随机数N2的有效性证明会话新鲜性,最后获取验证报告M2。
其中对M1和M2报告进行Hash再发送的设计是为了防止报告在传输过程中被攻击者恶意篡改导致报告失效,进而影响容器的正常启动。
通过步骤105的验证后,程序启动成功。接下来开始进行程序运行时状态验证。
在宿主机端根据ConID和容器内进程pid以及流程验证端发送的下一次采集时间,获取对应进程运行时的内存二进制信息。
步骤106中进程内存获取方法采用pid_hash散列值法对指定程序进程进行查找,之后对目标进程地址进行虚拟地址到物理地址的转换,最后结合mmap函数进行内存映射实现内存地址内容的获取。
相关名词解释:pid代表进程pid号;PID代表进程PID实体;upid结构体是指在PID实体中包含的upid类型的结构体,该结构体就是同一个PID对应的不同命名空间下的upid实体。
其中,步骤106具体包括:
1)根据所述容器ID确定所述目标容器的NamespaceID。
2)根据所述目标容器的NamespaceID和所述目标容器内进程pid在pid_hash表查询定位数组节点;所述定位数组节点包括ns值和nr值,所述ns值表示NamespaceID的值,所述nr值表示进程pid的值。即依次遍历节点数组判断节点ns和nr值是否与目标NamespaceID和pid号相同。如果相同,则定位到目标进程的upid结构体。
3)根据查询到的定位数组节点定位到目标进程中upid结构体,通过系统函数container_of确定所述upid结构体对应的PID实体。
4)根据所述PID实体获得进程描述符task_struct,根据所述进程描述符中成员变量确定进程虚拟空间内存地址范围。虚拟空间内存地址范围包括起始地址和终止地址。
5)结合/proc/<pid>/pagemap文件,结合图4,根据如下公式将所述虚拟空间内存地址范围内虚拟空间内存地址转换到物理地址。
其中,vaddr代表虚拟地址,pageSize代表页面大小(一般为4KB),offset代表pagemap文件偏移量,phyPageIndex代表映射出的物理页号,paddr代表物理地址,sizeof(uint64)代表计算64位无符号整型的大小。
6)根据所述虚拟空间内存地址范围、所述物理地址和mmap函数,确定对应进程运行时的内存二进制信息。即通过/dev/fmem设备与系统调用mmap函数相结合将目标进程内存映射到内存取证程序所在的地址空间,内存取证程序通过访问自己虚拟内存地址的信息实现对指定物理内存的实时访问。
其中,步骤107根据获取到的内存二进制信息通过语义分析和语义重构还原出运行时的函数调用轨迹和目标参数信息,并构造内存事件发送给验证状态机端。
相关名词解释:进程代码段是用来存放程序编译后所执行机器指令的区域,是可执行程序在内存中的镜像。
步骤107具体包括:
1)以4个字节为单位从低地址往高地址读取获取到的栈内存信息(之后称为块信息),并按照硬件配置组织字节大小端排列还原出真实的存储信息。
2)将块信息与进程代码段反汇编内容作对比确定是否存在返回地址。
3)根据确定的返回地址,反汇编读取进程代码段返回地址-5处的内容,读取的内容为callq<地址内容><函数名称>格式,根据读取的内容解析出函数名称,并根据各函数名称确定函数调用轨迹。
4)根据目标函数(已知函数)在代码段中的地址,依据参数个数,反汇编代码段内容确定参数相对于栈帧起始地址的位置。
5)根据参数相对位置到栈帧中获取参数二进制内容,根据参数类型还原出参数具体值。
6)根据事先定义好的xml格式要求构造内存事件字符串,格式如图6所示,内存事件字符串中包括上述步骤中得到的目标函数名称、函数参数值等。
7)根据验证状态机端系统IP地址和端口号,向验证状态机端建立事件发送请求,等待验证系统连接后将内存事件字符串(内存事件)发送过去。
验证状态机端状态机根据内存事件采集端采集到的内存事件进行状态间流转实现物联网程序业务流程上的验证。业务流程由多个状态节点构成。
物联网程序业务流程有多个状态节点构成。
步骤108中业务流程验证在状态机流转时设计采集时间预测、多函数验证和时间预测修正等策略进一步提高验证效率,单个节点的状态转移示意图如图5所示,其中包括了各个策略的应用,具体步骤为:
1)状态节点的预测时间值和多函数约束表达式在初始化时进行预先配置。即为每个状态节点初始化预测时间值和多函数约束表达式。
2)当内存事件到来时,对即将流转到的下一状态节点的多函数约束表达式进行遍历并尝试转移,如果满足其中任意约束则转移成功,下一节点变为当前状态节点。
3)当前状态节点开启时间计数,并将预测的时间值发送给内存事件采集侧进行精准事件采集(采集内存事件字符串)。
4)对采集到的事件重复上一步的状态节点转移尝试,成功则进入下一状态节点,否则通知事件采集侧持续采集,直到状态节点转移成功,并记录此时的转移总时长。当该转移总时长出现次数累计达到一定阈值,修改当前状态节点的预测时间值。
5)若当前状态节点转移到最终节点时,整个业务流程验证完成。
在业务流程验证过程中,每次状态节点转移均与设定流程模版进行对比,若每个状态节点转移与设定流程模版一致,则通过验证,否则没有通过验证。
设定流程模版为内存事件对应的物联网程序业务流程的正确流程。
本发明提供了一种基于Docker的物联网程序运行时验证方法,针对物联网程序面临的运行环境不可信和运行状态不可信的问题,通过可信计算技术、远程验证技术、内存取证技术和运行时验证技术的结合,保证了运行环境Docker容器的可信并高效启动,实现了物联网程序业务流程运行时的精准和稳定监控。通过引入此方法,企业可以提高物联网程序安全性,及时发现攻击并作出补救措施,最大程度得降低损失。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

Claims (7)

1.一种基于Docker的物联网程序运行时验证方法,其特征在于,包括:
启动容器ID对应的目标容器;所述目标容器为Docker容器;
基于完整性度量架构,对容器镜像进行哈希度量并写入度量列表,对启动所述目标容器时的启动依赖文件和应用文件进行哈希度量并写入度量列表;将所述目标容器对应的度量列表中度量值存储到所述目标容器对应的vPCR模块;
将所述vPCR模块扩展入可信平台模块;
基于所述可信平台模块为所述vPCR模块生成虚拟AIK证书;
基于所述目标容器对应的度量列表,对所述目标容器所在主机平台的身份信息和状态信息进行验证,若验证通过则所述目标容器启动成功;
当所述目标容器启动成功后,根据所述容器ID、所述目标容器内进程pid以及验证状态机端发送的采集时间,获取对应进程运行时的内存二进制信息;
确定所述内存二进制信息对应的函数调用轨迹和目标参数信息并构造内存事件,将构造的内存事件发送到验证状态机端;
通过对所述验证状态机端接收的所述内存事件进行状态间流转,实现对所述内存事件对应的物联网程序业务流程上的验证。
2.根据权利要求1所述的基于Docker的物联网程序运行时验证方法,其特征在于,基于完整性度量架构,对容器镜像进行哈希度量并写入度量列表,对启动所述目标容器时的启动依赖文件和应用文件进行哈希度量并写入度量列表,具体包括:
以所述容器ID命名,创建所述目标容器对应的度量列表;
通过度量代理监听并捕获所述完整性度量架构的度量事件;
对于监听到的度量事件,解析度量事件进程的结构体获得度量事件进程的NamespaceID,将度量事件进程的NamespaceID和所述目标容器的NamespaceID对比;
若度量事件进程的NamespaceID和所述目标容器的NamespaceID相等,则将监听到的度量事件对应的度量值扩展入所述目标容器对应的度量列表中。
3.根据权利要求1所述的基于Docker的物联网程序运行时验证方法,其特征在于,将所述vPCR模块扩展入可信平台模块,具体包括:
遍历vPCR模块链表中vPCR模块,根据每个vPCR模块的哈希度量值计算哈希度量中间值;
若所述可信平台模块的扩展寄存器的值不为0,比较扩展寄存器的值与当前哈希度量中间值是否相同,若不相同则所述目标容器启动失败;
若扩展寄存器的值为0或者扩展寄存器的值与当前哈希度量中间值相同,则对所述目标容器对应的vPCR模块进行扩展操作,得到扩展操作后的哈希度量中间值;
将扩展操作后的哈希度量中间值扩展到所述扩展寄存器中。
4.根据权利要求1所述的基于Docker的物联网程序运行时验证方法,其特征在于,基于所述可信平台模块为所述vPCR模块生成虚拟AIK证书,具体包括:
所述可信平台模块生成AIK密钥对,记为第一AIK密钥对,并生成EK证书,将生成的EK证书发送到认证中心;
所述认证中心通过所述EK证书验证所述可信平台模块的身份,通过验证后向所述所述可信平台模块签发AIK证书;
所述目标容器的vPCR模块向所述可信平台模块发送申请证书请求,所述申请证书请求中包括所述容器ID;
所述可信平台模块接收到所述申请证书请求后,根据所述容器ID创建vAIK密钥对,同时生成Key,所述Key为RSA密钥对;
所述可信平台模块采用所述第一AIK密钥对中私钥对所述Key进行签名,得到第一签名信息;
所述可信平台模块采用所述Key对所述vAIK密钥对中公钥、所述容器ID和寄存器进行签名,得到第二签名信息;
所述可信平台模块将所述第一签名信息、所述第二签名信息和所述vAIK密钥对中公钥组成所述虚拟AIK证书。
5.根据权利要求4所述的基于Docker的物联网程序运行时验证方法,其特征在于,基于所述目标容器对应的度量列表,对所述目标容器所在主机平台的身份信息和状态信息进行验证,具体包括:
证明者向验证者发送验证请求,所述验证请求包括所述目标容器的所述容器ID;证明者为所述目标容器所在主机平台的证明者;
所述验证者生成AIK密钥对和AIK证书,将验证者生成的AIK密钥对记为第二AIK密钥对;
当所述验证者接收到所述验证请求后,收集所述验证者所在主机平台的状态信息,同时生成第一随机数,采用所述第二AIK密钥对中私钥对所述状态信息、所述第一随机数和所述容器ID进行签名,得到第三签名信息,将所述第三签名信息和所述AIK证书发送给所述证明者;
所述证明者接收所述第三签名信息和所述AIK证书后,通过采用所述第二AIK密钥对中公钥对所述第三签名信息进行解密验证所述验证者的身份,通过身份验证后,根据虚拟AIK证书申请协议生成所述证明者的虚拟AIK证书;利用所述AIK证书对pPCR值签名得到第四签名信息,利用所述证明者的虚拟AIK证书对vPCR模块值签名得到第五签名信息,同时生成第二随机数,将所述第四签名信息、所述第五签名信息、所述第二随机数、所述AIK证书、所述证明者的虚拟AIK证书、vPCR模块链表中各vPCR模块的value值集合以及所述目标容器对应的度量列表组成第一认证报告,将所述第一认证报告和所述第一认证报告的哈希值构成的第一认证消息发送到所述验证者;
所述验证者接收到所述第一认证消息后,对所述第一认证消息进行验证,将验证结果生成第二验证报告,将所述第二验证报告、所述第二随机数、以及所述第二验证报告和所述第二随机数进行连接后的哈希值构成的第二认证消息发送到所述证明者;
所述证明者通过接收到的所述第二认证消息后,对所述第二认证消息进行验证,若对所述第二认证消息验证通过则所述目标容器所在主机平台的身份信息和状态信息通过验证。
6.根据权利要求1所述的基于Docker的物联网程序运行时验证方法,其特征在于,当所述目标容器启动成功后,根据所述容器ID、所述目标容器内进程pid以及验证状态机端发送的采集时间,获取对应进程运行时的内存二进制信息,具体包括:
根据所述容器ID确定所述目标容器的NamespaceID;
根据所述目标容器的NamespaceID和所述目标容器内进程pid在pid_hash表查询定位数组节点;所述定位数组节点包括ns值和nr值,所述ns值表示NamespaceID的值,所述nr值表示进程pid的值;
根据查询到的定位数组节点定位到目标进程中upid结构体,确定所述upid结构体对应的PID实体;
根据所述PID实体获得进程描述符,根据所述进程描述符中成员变量确定进程虚拟空间内存地址;
将所述虚拟空间内存地址转换到物理地址;
根据所述虚拟空间内存地址、所述物理地址和mmap函数,确定对应进程运行时的内存二进制信息。
7.根据权利要求1所述的基于Docker的物联网程序运行时验证方法,其特征在于,通过对所述验证状态机端接收的所述内存事件进行状态间流转,实现对所述内存事件对应的物联网程序业务流程上的验证,具体包括:
根据当前状态节点的预测时间值进行内存事件采集,并开启计时,当所述验证状态机端采集到内存事件时,对物联网程序业务流程的当前状态节点的下一状态节点的多函数约束表达式进行遍历,若当前采集的内存事件满足多函数约束表达式中任意约束,则转移成功,将下一状态节点更新为当前状态节点,若当前采集的内存事件不能满足多函数约束表达式中任意约束,则转移失败,继续进行内存事件采集,直到转移成功,得到当前状态节点的转移总时长,若当前状态节点的转移总时长出现次数达到设定阈值时,将当前状态节点的转移总时长更新为当前状态节点的预测时间值;
若当前状态节点为最终节点,则物联网程序业务流程验证结束。
CN202311004955.XA 2023-08-10 2023-08-10 一种基于Docker的物联网程序运行时验证方法 Pending CN117034258A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311004955.XA CN117034258A (zh) 2023-08-10 2023-08-10 一种基于Docker的物联网程序运行时验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311004955.XA CN117034258A (zh) 2023-08-10 2023-08-10 一种基于Docker的物联网程序运行时验证方法

Publications (1)

Publication Number Publication Date
CN117034258A true CN117034258A (zh) 2023-11-10

Family

ID=88631243

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311004955.XA Pending CN117034258A (zh) 2023-08-10 2023-08-10 一种基于Docker的物联网程序运行时验证方法

Country Status (1)

Country Link
CN (1) CN117034258A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117971347A (zh) * 2024-03-28 2024-05-03 中国人民解放军国防科技大学 一种基于TrustZone的容器可信服务设计方法、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117971347A (zh) * 2024-03-28 2024-05-03 中国人民解放军国防科技大学 一种基于TrustZone的容器可信服务设计方法、设备及存储介质
CN117971347B (zh) * 2024-03-28 2024-06-11 中国人民解放军国防科技大学 一种基于TrustZone的容器可信服务设计方法、设备及存储介质

Similar Documents

Publication Publication Date Title
US10754989B2 (en) Runtime self-correction for blockchain ledgers
US11501533B2 (en) Media authentication using distributed ledger
CN107577427B (zh) 用于区块链系统的数据迁移方法、设备和存储介质
CN110582775B (zh) 利用utxo基础协议基于区块链管理文件的方法及利用其的文件管理服务器
JP6014286B2 (ja) 機器にセキュリティを提供する方法および装置
CN108345786B (zh) 硬件协助的软件控制流完整性远程证明方法
CN113221166A (zh) 一种获取区块链数据的方法、装置、电子设备及存储介质
US11290256B2 (en) Blockchain-based advertisement monitoring method and apparatus, and electronic device
CN117034258A (zh) 一种基于Docker的物联网程序运行时验证方法
CN111222176A (zh) 基于区块链的云存储持有性证明方法、系统及介质
US20200287724A1 (en) Establishment of trusted communication with container-based services
US20230359628A1 (en) Blockchain-based data processing method and apparatus, device, and storage medium
CN111367923A (zh) 数据处理方法、装置、节点设备及存储介质
US9425966B1 (en) Security mechanism evaluation service
KR102356725B1 (ko) 계층 블록체인을 이용한 인증 및 정책 관리 방법
CN109951527B (zh) 面向虚拟化系统的hypervisor完整性检测方法
WO2023165401A1 (zh) 可信度量装置、设备、系统及可信身份认证方法
CN112214769B (zh) 基于SGX架构的Windows系统的主动度量系统
Liu et al. Distributed Cloud Forensic System with Decentralization and Multi-participation
US11483132B2 (en) Generating and initiating pre-signed transaction requests for flexibly and efficiently implementing secure cryptographic key management
CN110933155B (zh) 一种新型区块链网络
Di Lorenzo Formal verification of security properties for remote attestation protocols
Dobre et al. Proofs of writing for efficient and robust storage
Gao et al. DRC-EDI: An integrity protection scheme based on data right confirmation for mobile edge computing
CN116545696A (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