CN114048485A - 一种针对Docker容器内进程代码段完整性动态监测方法 - Google Patents
一种针对Docker容器内进程代码段完整性动态监测方法 Download PDFInfo
- Publication number
- CN114048485A CN114048485A CN202111340145.2A CN202111340145A CN114048485A CN 114048485 A CN114048485 A CN 114048485A CN 202111340145 A CN202111340145 A CN 202111340145A CN 114048485 A CN114048485 A CN 114048485A
- Authority
- CN
- China
- Prior art keywords
- integrity
- measurement
- code segment
- container
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 168
- 238000012544 monitoring process Methods 0.000 title claims abstract description 16
- 238000005259 measurement Methods 0.000 claims abstract description 94
- 238000012795 verification Methods 0.000 claims abstract description 15
- 101100296683 Arabidopsis thaliana PCR11 gene Proteins 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 17
- 230000002776 aggregation Effects 0.000 claims description 9
- 238000004220 aggregation Methods 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 238000006116 polymerization reaction Methods 0.000 claims description 4
- 230000004069 differentiation Effects 0.000 claims description 3
- 230000009191 jumping Effects 0.000 claims description 3
- 238000013519 translation Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 2
- 238000009440 infrastructure construction Methods 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000002955 isolation Methods 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种针对Docker容器内进程代码段完整性动态监测方法,首先构建容器内进程代码段分页式动态度量子系统:通过在内核中加载虚拟字符设备实现对物理内存的操纵,以分页的方式实现对进程代码段的度量;再构建进程代码段完整性可信基础子系统:利用硬件TPM2.0模块实现动态度量值的存储,设计存储度量日志文件,根据日志信息区分出不同容器的同名文件;最后构建进程代码段完整性验证子系统:通过对进程对应ELF文件代码段进行分页式度量,构建完整性基准值库,进行动态度量的完整性验证。本发明能够完成对进程代码段的完整性度量,从程序运行时的角度实现对容器内应用的可信性评价,并且设计的存储度量日志能够区分不同容器的同名文件。
Description
技术领域
本发明涉及虚拟化和可信计算技术领域,具体为一种针对Docker容器内进程代码段完整性动态监测方法。
背景技术
近年来,越来越多的企业和个人在公有云上部署其业务,云计算的安全问题也引发了更加广泛的关注。特别是以容器技术为核心的容器云,由于容器技术的共享内核和资源隔离强度较低的特性,面临更多的安全风险。在以虚拟机为主体的IaaS云计算平台中,以可信计算技术为主的目标系统可信性评价方案已经被大量研究和应用;但是在以容器为主体的云计算平台,因容器技术方兴未艾,针对容器云的可信性评价方案尚需进一步研究。
若考虑虚拟可信计算技术,为每个容器配置虚拟可信根,虽然可以实现一定程度的可信性评估,但是在容器云中单台服务器中的容器实例一般在几十个,如此会造成极大的性能损耗。也有学者基于可信计算组织(TCG,Trusted Computing Group)支持的完整性度量架构(IMA,Integrity Measurement Architecture)实现的评价方案,由于IMA已经是Linux的一个内核子系统,因此可以充分利用Linux的内核特性实现对文件和程序的完整性度量。但是IMA度量发生是在文件打开或者程序执行之前,不能实现对进程的监控;且IMA度量日志无法区分不同容器中的同名文件。另外,国内学者也提出了可信计算3.0技术,通过双系统的体系架构实现对计算机应用程序的主动度量,确保应用的可信启动,但其度量对象依旧是程序的静态文本数据。然而,以上方法中对完整性的度量时机均在程序加载进内存之前,度量的对象是静态文本数据,目前还缺乏对容器内程序运行时的可信性评价方案。
发明内容
针对上述问题,本发明的目的在于提供一种针对Docker容器内进程代码段完整性动态监测方法,通过在Linux内核中加载一个虚拟字符设备实现对进程代码段的完整性度量,从程序运行时的角度实现对容器内应用的可信性评价。技术方案如下:
一种针对Docker容器内进程代码段完整性动态监测方法,包括以下步骤:
步骤1:基于procfs的容器内进程代码段分页式动态度量
通过在内核中加载虚拟字符设备的方式实现代码段虚拟内存地址到物理内存地址的映射,利用Linux提供的进程数据接口procfs实现进程的虚拟地址映射信息和进程所对应的ELF文件的路径信息的获取,以分页的方式实现对进程代码段单个分页的度量;
步骤2:基于TPM2.0的进程代码段完整性可信基础构建
在TCG提出的链式信任构建方法基础上,利用硬件TPM2.0模块实现动态度量值的安全存储,设计存储度量日志文件,使得根据日志信息区分出不同容器的同名文件;
步骤3:进程代码段完整性的验证
首先通过对进程对应ELF文件代码段进行分页式度量,构建完整性基准值库,然后进行动态度量的完整性验证。
进一步的,所述步骤1具体为:
步骤1.1:根据.config配置文件中写入的需要被监控容器的ID或者名字,用户空间工具UserUtil从Docker守护进程中获取需要监控容器内进程的宿主PID和容器所属镜像名称image_name;
步骤1.2:根据procfs中/proc/[PID]/maps所维护的进程当前已映射虚拟内存区域以及其访问权限的信息,解析出进程的虚拟地址映射信息;并提取进程所对应的ELF文件的路径信息,完成日志信息中进程的区分;
步骤1.3:通过ioctl系统调用将所获取到的进程相关信息发送给虚拟字符设备Dymeasure,并对容器内的每个进程都发起一次度量操作命令;
步骤1.4:字符设备Dymeasure中动态度量模块根据用户空间工具UserUtil发送的进程虚拟地址映射信息,借助/proc/[PID]/pagemap文件完成从虚拟地址到物理地址的翻译;
步骤1.5:根据进程分页的起始物理地址,调用内核提供的散列算法,完成一个代码段分页的完整性度量,生成度量值;同时,在每完成一次分页度量后,将此次分页度量所得散列值和前一次度量的散列值连接在一起并再次计算散列,最后得到所有被加载进物理内存的进程代码段分页的聚合度量值。
更进一步的,所述步骤1.1具体为:
步骤1.11:由系统管理员或者云租户通过Agent代理向.config配置文件中添加需要被监控容器的ID或者名字;
步骤1.12:用户空间工具UserUtil读取配置文件,检查容器的ID或者名字在系统中是否存在,否则向Agent返回错误信号;
步骤1.13:UserUtil通过和容器守护进程dockerd交互,获取所需要监控容器中的所有进程的宿主进程号pid和容器所属镜像的名称image_name。
更进一步的,所述步骤1.4具体为:
步骤1.41:物理地址解析子模块根据所获取的进程代码段的起始和终止虚拟地址vadd_start和vadd_end,结合/proc/[PID]/pagemap文件中所记录的进程虚拟地址到物理内存地址的映射信息,判断当前进程分页是否已经被加载进内存,还是已经被换出;若分页被加载进了内存,则利用pagemap中的映射记录将代码段分页的虚拟内存地址翻译得到其物理内存地址phyaddr_start和phyaddr_end,并跳转到步骤1.42;否则忽略当前进程分页;同时使用一个位图数据结构page_bitmap记录进程分页在物理内存中的加载情况;
步骤1.42:将代码段单个分页的起止物理内存地址phyadd_start和phyaddr_end传递给分页度量子模块。
更进一步的,所述步骤2具体为:
步骤2.1:可信基础构建模块读取完整性度量架构IMA存储度量日志imaSML的首条记录boot_aggregate;选择第11号PCR11作为保存动态度量值的寄存器;
步骤2.2:插入虚拟字符设备Dymeasure时,将完整性度量架构IMA存储度量日志imaSML的首条记录boot_aggregate中的template-hash作为基础扩展到第11号PCR11中;
步骤2.3:读取扩展后的PCR11值pcr11_value,同boot_aggregate信息一起记录到存储度量日志idmsSML的进程代码段完整性信息日志文件中,生成完整性动态度量系统IDMS的首条日志记录;
步骤2.4:在后续的动态度量操作中,动态度量模块向可信基础构建模块传递参数,包括:聚合度量值digests_aggregate,代码段分页位图page_bitmap,容器镜像名image_name和被度量进程对应ELF二进制文件路径elf_path;
步骤2.5:将聚合度量值digests_aggregate扩展到PCR11中,并读取扩展后的PCR11值pcr11_value;
步骤2.6:将pcr11_value、digests_aggregate、image_name和elf_path记录到idmsSML的进程代码段完整性信息日志,将代码段分页位图page_bitmap记录到idmsSML的进程分页位图日志文件proc_pages_bitmap。
更进一步的,所述步骤3具体为:
步骤3.1:通过对ELF代码段执行分页式度量,构建进程代码段完整性的基准值库;
步骤3.2:代理程序将可信基础构建模块生成的完整性信息发送给远程验证方,远程验证方首先根据ascii_proc_measurements文件中第i条记录的image_name和elf_path信息查找对应的代码段的分页基准值baseline[i];
步骤3.3:返回对应的baseline[i]后,依据索引查找对应的分页位图记录pages_bitmap[i];
步骤3.4:结合baseline[i]和pages_bitmap[i],计算出第i条记录所对应的digests_aggregate[i];
步骤3.5:将所有得到的digests_aggregate再次计算其聚合度量值,得到pcr11_value_compare;
步骤3.6:将通过TPM_Quote命令得到PCR11_Value和pcr11_value_compare进行比对,验证完整性是否被篡改。
本发明的有益效果是:本发明通过三个子系统的构建,实现了针对Docker的容器内进程代码段完整性动态监测,能够完成对进程代码段的完整性度量,从程序运行时的角度实现对容器内应用的可信性评价,并且设计一种具有区分度的存储度量日志格式,实现完整性度量结果的硬件可信基础构建,完成进程完整性度量值的基准值生成和验证。
附图说明
图1为本发明中基于procfs的容器内进程代码段分页式动态度量子系统PPDMS实现原理图。
图2为本发明中基于TPM2.0的进程代码段完成行可信基础构建子系统TTFS实现原理图。
图3为本发明中进程代码段完整性验证子系统IVS中完整性验证实现原理图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。由于对于容器内应用的可信评价,需要考虑程序的运行时阶段——进程,同时要考虑区分容器云生成的存储度量日志中的同名文件,所以本发明的目的在于提出一种针对Docker的容器内进程代码段完整性动态监测方案,通过在Linux内核中加载一个虚拟字符设备实现对进程代码段的完整性度量,从程序运行时的角度实现对容器内应用的可信性评价,并且设计一种具有区分度的存储度量日志格式,实现完整性度量结果的硬件可信基础构建,完成进程完整性度量值的基准值生成和验证。具体步骤如下:
步骤1:基于procfs的容器内进程代码段分页式动态度量。
通过在内核中加载虚拟字符设备的方式实现对物理内存的操纵,利用Linux提供的进程数据接口procfs文件系统实现相关信息的获取,以分页的方式实现对进程代码段的度量。
附图1给出了本发明中基于procfs的容器内进程代码段分页式动态度量子系统PPDMS(Procfs-based Paginated Dynamic Measurement subSystem)实现原理图。PPDMS分页式动态度量方案需要在内核空间中加载一个名为Dymeasure的虚拟字符设备,依赖字符设备中的动态度量模块实现对用户空间中容器内进程代码段的完整性动态度量,动态度量模块又分成物理地址解析子模块和分页度量子模块,分别完成代码段虚拟内存地址到物理内存地址映射的解析和代码段单个分页的度量。其具体执行过程如下:
步骤1.1:根据.config配置文件中写入的需要被监控容器的ID或者名字,用户空间工具UserUtil从Docker守护进程中获取需要监控容器内进程的宿主PID和容器所属镜像名称image_name。
1)由系统管理员或者云租户通过Agent代理向.config配置文件中添加需要被监控容器的ID或者名字。
2)用户空间工具UserUtil读取配置文件,检查容器的ID或者名字在系统中是否存在,否则向Agent返回错误信号。
3)UserUtil通过和容器守护进程dockerd交互,获取所需要监控容器中的所有进程的宿主进程号pid(即容器所在宿主机对此进程所标识的进程号)和容器所属镜像的名称image_name。
步骤1.2:根据procfs(proc file system proc文件系统)中/proc/[PID]/maps所维护的进程当前已映射虚拟内存区域以及其访问权限的信息,解析出进程的虚拟地址映射信息,即进程代码段的起始虚拟地址vadd_start和终止虚拟地址vaddr_end。为了完成日志信息中进程的区分,还会提取进程所对应的ELF文件的路径信息elf_path。
步骤1.3:向字符设备Dymeasure发起ioctl系统调用,通过ioctl系统调用将上面几步所获取到的进程相关信息发送给虚拟字符设备Dymeasure,并对容器内的每个进程都发起一次度量操作命令。
步骤1.4:字符设备Dymeasure中动态度量模块根据UserUtil发送的进程虚拟地址映射信息,借助/proc/[PID]/pagemap文件完成从虚拟地址到物理地址的翻译。具体为:
1):物理地址解析子模块根据所获取的进程代码段的起始和终止虚拟地址vadd_start和vadd_end,结合/proc/[PID]/pagemap文件中所记录的进程虚拟地址到物理内存地址的映射信息,判断当前进程分页是否已经被加载进内存(in-ram),还是已经被换出(swapped)。若分页被加载进了内存,则利用pagemap中的映射记录将代码段分页的虚拟内存地址翻译得到其物理内存地址phyaddr_start和phyaddr_end,并跳转到第2)步;否则忽略当前进程分页。同时使用一个位图数据结构page_bitmap记录进程分页在物理内存中的加载情况。
2):将代码段单个分页的起止物理内存地址phyadd_start和phyaddr_end传递给分页度量子模块。
步骤1.5:根据进程分页的起始物理地址,调用设定的散列算法,完成一个代码段分页的完整性度量,生成度量值page_digest。同时,在每完成一次分页度量后,便将此次分页度量所得散列值和前一次度量的散列值连接在一起并再次计算散列,最后得到所有被加载进物理内存的进程代码段分页的聚合度量值digests_aggregate。
步骤2:基于TPM2.0的进程代码段完整性可信基础构建。
在TCG提出的链式信任构建方法基础上,利用硬件TPM2.0模块实现了对本发明中动态度量值的安全存储,设计一种存储度量日志文件,使得根据日志信息可以区分出不同容器的同名文件;
附图2给出了本发明中基于TPM2.0的进程代码段完成行可信基础构建子系统TTFS(TPM 2.0-based Trusted Fundation subSystem)实现原理图。硬件可信基础的构建依赖于附图1的进程代码段分页式动态度量子系统PPDMS,需要其提供最后的聚合度量值和进程的一些相关信息。本发明中选用第11号PCR11作为保存动态度量值的寄存器。其具体执行过程如下:
(1)在插入虚拟字符设备Dymeasure时,
首先,可信基础构建模块会读取完整性度量架构IMA存储度量日志imaSML的首条记录boot_aggregate;选择第11号PCR11作为保存动态度量值的寄存器。
接着,插入虚拟字符设备Dymeasure时,将完整性度量架构IMA存储度量日志imaSML的首条记录boot_aggregate记录中的template-hash作为基础扩展至第11号PCR11中;
然后,读取扩展后的PCR11值pcr11_value,同boot_aggregate信息一起记录到存储度量日志idmsSML的进程代码段完整性信息日志文件binary_proc_measurements和ascii_proc_measurements中,生成完整性动态度量系统IDMS的首条日志记录。由此,将计算机启动过程的可信证据应用到了本发明的动态监测系统之中。
(2)在后续的动态度量操作中,动态度量模块向可信基础构建模块传递参数,包括:聚合度量值digests_aggregate,代码段分页位图page_bitmap,容器镜像名image_name和被度量进程对应ELF二进制文件路径elf_path。
(3)将聚合度量值digests_aggregate扩展到PCR11中,并读取扩展后的PCR11值pcr11_value。
(4)将pcr11_value、digests_aggregate、image_name和elf_path记录到idmsSML的进程代码段完整性信息日志,将代码段分页位图page_bitmap记录到idmsSML的进程分页位图日志文件proc_pages_bitmap。
步骤3:进程代码段完整性的验证。
首先需要通过对进程对应ELF文件代码段进行分页式度量,构建完整性基准值库,然后进行动态度量的完整性验证。
表1进程代码段完整性信息日志格式
index | 11 | pcr_value | hash_algo | : | digests_aggregate | image_name | elf_path |
表1给出了本发明中进程代码段完整性信息日志格式。进程代码段完整性信息日志包含两个文件:binary_proc_measurements和ascii_proc_measurements。它们都记录了动态度量的结果和相关信息,前者是对结果的直接存储,是二进制格式;而后者是将度量结果做了转换,以ASCII编码方式存储,是可读的。它们所记录的信息包含以下内容:
(1)index:日志索引,从0开始。首条记录是计算机基础环境的完整性信息,来自imaSML的boot_aggregate记录的template-hash字段;从1开始是进程代码段动态度量的正式记录。
(2)11:存储完整性信息的PCR索引号。
(3)pcr_value:PCR11执行扩展操作后的值。
(4)hash_algo:度量所使用的散列算法名字。
(5)digests_aggregate:单次动态度量得到的进程代码段分页度量值的聚合度量值。
(6)image_name:进程所属容器的镜像名字。
(7)elf_path:进程在容器中对应ELF文件的路径。
表2进程代码段分页位图日志格式
index | bitmap |
表2为本发明中进程代码段分页位图日志格式。该日志格式用于保存分页式度量过程中,哪些分页被度量了和哪些分页未被度量,方便完整性的验证。日志格式字段分别为:
(1)index:日志索引。从1开始,每条记录和进程完整性信息日志中相同索引的记录一一对应。
(2)bitmap:分页位图。代表当次动态度量中进程代码段分页被度量情况,由附图1中步骤(6)中生成的page_bitmap填入。
附图3为本发明中进程代码段完整性验证子系统IVS(Integrity VerificationsubSystem)中完整性验证实现原理图。其具体执行过程如下:
步骤3.1:通过对ELF代码段执行分页式度量,构建进程代码段完整性的基准值库。
步骤3.2:代理程序将可信基础构建模块生成的完整性信息发送给远程验证方,远程验证方首先根据ascii_proc_measurements文件中第i条记录的image_name和elf_path信息查找对应的代码段的分页基准值baseline[i]。
步骤3.3:返回对应的baseline[i]后,依据索引查找对应的分页位图记录pages_bitmap[i]。
步骤3.4:结合baseline[i]和pages_bitmap[i],计算出第i条记录所对应的digests_aggregate[i]。
步骤3.5:将所有得到的digests_aggregate再次计算其聚合度量值,得到pcr11_value_compare。
步骤3.6:将通过TPM_Quote命令得到PCR11_Value和pcr11_value_compare进行比对,验证完整性是否被篡改。
Claims (6)
1.一种针对Docker容器内进程代码段完整性动态监测方法,其特征在于,包括以下步骤:
步骤1:基于procfs的容器内进程代码段分页式动态度量
通过在内核中加载虚拟字符设备的方式实现代码段虚拟内存地址到物理内存地址的映射,利用Linux提供的进程数据接口procfs实现进程的虚拟地址映射信息和进程所对应的ELF文件的路径信息的获取,以分页的方式实现对进程代码段单个分页的度量;
步骤2:基于TPM2.0的进程代码段完整性可信基础构建
在TCG提出的链式信任构建方法基础上,利用硬件TPM2.0模块实现动态度量值的安全存储,设计存储度量日志文件,根据日志信息区分出不同容器的同名文件;
步骤3:进程代码段完整性验证
首先通过对进程对应ELF文件代码段进行分页式度量,构建完整性基准值库,然后进行动态度量的完整性验证。
2.根据权利要求1所述的一种针对Docker容器内进程代码段完整性动态监测方法,其特征在于,所述步骤1具体为:
步骤1.1:根据.config配置文件中写入的需要被监控容器的ID或者名字,用户空间工具UserUtil从Docker守护进程中获取需要监控容器内进程的宿主PID和容器所属镜像名称image_name;
步骤1.2:根据procfs中/proc/[PID]/maps所维护的进程当前已映射虚拟内存区域以及其访问权限的信息,解析出进程的虚拟地址映射信息;并提取进程所对应的ELF文件的路径信息,完成日志信息中进程的区分;
步骤1.3:通过ioctl系统调用将所获取到的进程相关信息发送给虚拟字符设备Dymeasure,并对容器内的每个进程都发起一次度量操作命令;
步骤1.4:字符设备Dymeasure中动态度量模块根据用户空间工具UserUtil发送的进程虚拟地址映射信息,借助/proc/[PID]/pagemap文件完成从虚拟地址到物理地址的翻译;
步骤1.5:根据进程分页的起始物理地址,调用内核提供的散列算法,完成一个代码段分页的完整性度量,生成度量值;同时,在每完成一次分页度量后,将此次分页度量所得散列值和前一次度量的散列值连接在一起并再次计算散列,最后得到所有被加载进物理内存的进程代码段分页的聚合度量值。
3.根据权利要求2所述的针对Docker容器内进程代码段完整性动态监测方法,其特征在于,所述步骤1.1具体为:
步骤1.11:由系统管理员或者云租户通过Agent代理向.config配置文件中添加需要被监控容器的ID或者名字;
步骤1.12:用户空间工具UserUtil读取配置文件,检查容器的ID或者名字在系统中是否存在,否则向Agent返回错误信号;
步骤1.13:UserUtil通过和容器守护进程dockerd交互,获取所需要监控容器中的所有进程的宿主进程号pid和容器所属镜像的名称image_name。
4.根据权利要求2所述的针对Docker容器内进程代码段完整性动态监测方法,其特征在于,所述步骤1.4具体为:
步骤1.41:物理地址解析子模块根据所获取的进程代码段的起始和终止虚拟地址vadd_start和vadd_end,结合/proc/[PID]/pagemap文件中所记录的进程虚拟地址到物理内存地址的映射信息,判断当前进程分页是否已经被加载进内存,还是已经被换出;若分页被加载进了内存,则利用pagemap中的映射记录将代码段分页的虚拟内存地址翻译得到其物理内存地址phyaddr_start和phyaddr_end,并跳转到步骤1.42;否则忽略当前进程分页;同时使用一个位图数据结构page_bitmap记录进程分页在物理内存中的加载情况;
步骤1.42:将代码段单个分页的起止物理内存地址phyadd_start和phyaddr_end传递给分页度量子模块。
5.根据权利要求1所述的针对Docker容器内进程代码段完整性动态监测方法,其特征在于,所述步骤2具体为:
步骤2.1:可信基础构建模块读取完整性度量架构IMA存储度量日志imaSML的首条记录boot_aggregate;选择第11号PCR11作为保存动态度量值的寄存器;
步骤2.2:插入虚拟字符设备Dymeasure时,将完整性度量架构IMA存储度量日志imaSML的首条记录boot_aggregate中的template-hash作为基础扩展到第11号PCR11中;
步骤2.3:读取扩展后的PCR11值pcr11_value,同boot_aggregate信息一起记录到存储度量日志idmsSML的进程代码段完整性信息日志文件中,生成完整性动态度量系统IDMS的首条日志记录;
步骤2.4:在后续的动态度量操作中,动态度量模块向可信基础构建模块传递参数,包括:聚合度量值digests_aggregate,代码段分页位图page_bitmap,容器镜像名image_name和被度量进程对应ELF二进制文件路径elf_path;
步骤2.5:将聚合度量值digests_aggregate扩展到PCR11中,并读取扩展后的PCR11值pcr11_value;
步骤2.6:将pcr11_value、digests_aggregate、image_name和elf_path记录到idmsSML的进程代码段完整性信息日志,将代码段分页位图page_bitmap记录到idmsSML的进程分页位图日志文件proc_pages_bitmap。
6.根据权利要求1所述的针对Docker容器内进程代码段完整性动态监测方法,其特征在于,所述步骤3具体为:
步骤3.1:通过对ELF代码段执行分页式度量,构建进程代码段完整性的基准值库;
步骤3.2:代理程序将可信基础构建模块生成的完整性信息发送给远程验证方,远程验证方首先根据ascii_proc_measurements文件中第i条记录的image_name和elf_path信息查找对应的代码段的分页基准值baseline[i];
步骤3.3:返回对应的baseline[i]后,依据索引查找对应的分页位图记录pages_bitmap[i];
步骤3.4:结合baseline[i]和pages_bitmap[i],计算出第i条记录所对应的digests_aggregate[i];
步骤3.5:将所有得到的digests_aggregate再次计算其聚合度量值,得到pcr11_value_compare;
步骤3.6:将通过TPM_Quote命令得到PCR11_Value和pcr11_value_compare进行比对,验证完整性是否被篡改。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111340145.2A CN114048485B (zh) | 2021-11-12 | 2021-11-12 | 一种针对Docker容器内进程代码段完整性动态监测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111340145.2A CN114048485B (zh) | 2021-11-12 | 2021-11-12 | 一种针对Docker容器内进程代码段完整性动态监测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114048485A true CN114048485A (zh) | 2022-02-15 |
CN114048485B CN114048485B (zh) | 2023-04-07 |
Family
ID=80208789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111340145.2A Active CN114048485B (zh) | 2021-11-12 | 2021-11-12 | 一种针对Docker容器内进程代码段完整性动态监测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114048485B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115017504A (zh) * | 2022-04-15 | 2022-09-06 | 国网河南省电力公司电力科学研究院 | 一种智能物联终端容器安全管控方法 |
CN117971347A (zh) * | 2024-03-28 | 2024-05-03 | 中国人民解放军国防科技大学 | 一种基于TrustZone的容器可信服务设计方法、设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163209A1 (en) * | 2006-12-29 | 2008-07-03 | Rozas Carlos V | Methods and apparatus for remeasuring a virtual machine monitor |
CN101344904A (zh) * | 2008-09-02 | 2009-01-14 | 中国科学院软件研究所 | 一种动态度量方法 |
WO2015100188A1 (en) * | 2013-12-24 | 2015-07-02 | Microsoft Technology Licensing, Llc | Virtual machine assurances |
CN105069353A (zh) * | 2015-08-11 | 2015-11-18 | 武汉大学 | 一种基于Docker的可信容器安全加固方法 |
CN106909509A (zh) * | 2017-03-01 | 2017-06-30 | 四川大学 | 一种虚拟机进程代码的无代理分页式度量系统和方法 |
CN108804203A (zh) * | 2018-06-15 | 2018-11-13 | 四川大学 | 基于标签的vTPM私密信息保护方法 |
US20190042759A1 (en) * | 2018-09-27 | 2019-02-07 | Intel Corporation | Technologies for fast launch of trusted containers |
US20190332777A1 (en) * | 2018-04-30 | 2019-10-31 | Hewlett Packard Enterprise Development Lp | Trusted computing integrity measurement architecture security for containers |
CN110647740A (zh) * | 2018-06-27 | 2020-01-03 | 复旦大学 | 一种基于tpm的容器可信启动方法及装置 |
CN110674494A (zh) * | 2018-07-02 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 进程的保护方法、系统及数据处理方法 |
CN111698091A (zh) * | 2020-05-26 | 2020-09-22 | 东南大学 | 一种基于可信计算的Docker平台动态防护方法 |
CN111857967A (zh) * | 2020-07-29 | 2020-10-30 | 中科方德软件有限公司 | 一种容器完整性校验方法 |
-
2021
- 2021-11-12 CN CN202111340145.2A patent/CN114048485B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080163209A1 (en) * | 2006-12-29 | 2008-07-03 | Rozas Carlos V | Methods and apparatus for remeasuring a virtual machine monitor |
CN101344904A (zh) * | 2008-09-02 | 2009-01-14 | 中国科学院软件研究所 | 一种动态度量方法 |
WO2015100188A1 (en) * | 2013-12-24 | 2015-07-02 | Microsoft Technology Licensing, Llc | Virtual machine assurances |
CN105830082A (zh) * | 2013-12-24 | 2016-08-03 | 微软技术许可有限责任公司 | 虚拟机保证 |
CN105069353A (zh) * | 2015-08-11 | 2015-11-18 | 武汉大学 | 一种基于Docker的可信容器安全加固方法 |
CN106909509A (zh) * | 2017-03-01 | 2017-06-30 | 四川大学 | 一种虚拟机进程代码的无代理分页式度量系统和方法 |
US20190332777A1 (en) * | 2018-04-30 | 2019-10-31 | Hewlett Packard Enterprise Development Lp | Trusted computing integrity measurement architecture security for containers |
CN108804203A (zh) * | 2018-06-15 | 2018-11-13 | 四川大学 | 基于标签的vTPM私密信息保护方法 |
CN110647740A (zh) * | 2018-06-27 | 2020-01-03 | 复旦大学 | 一种基于tpm的容器可信启动方法及装置 |
CN110674494A (zh) * | 2018-07-02 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 进程的保护方法、系统及数据处理方法 |
US20190042759A1 (en) * | 2018-09-27 | 2019-02-07 | Intel Corporation | Technologies for fast launch of trusted containers |
CN111698091A (zh) * | 2020-05-26 | 2020-09-22 | 东南大学 | 一种基于可信计算的Docker平台动态防护方法 |
CN111857967A (zh) * | 2020-07-29 | 2020-10-30 | 中科方德软件有限公司 | 一种容器完整性校验方法 |
Non-Patent Citations (4)
Title |
---|
YULONG WANG ET.AL: "ContainerGuard: A Real-Time Attack Detection System in Container-Based Big Data Platform""" * |
YULONG WANG 等: ""DockerWatch: a two-phase hybrid detection of malware using various static features in container cloud"" * |
刘国杰 等: ""基于TPCM的容器云可信环境研究"" * |
陈兴蜀 等: ""基于长短期记忆神经网络的容器内进程异常行为检测"" * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115017504A (zh) * | 2022-04-15 | 2022-09-06 | 国网河南省电力公司电力科学研究院 | 一种智能物联终端容器安全管控方法 |
CN117971347A (zh) * | 2024-03-28 | 2024-05-03 | 中国人民解放军国防科技大学 | 一种基于TrustZone的容器可信服务设计方法、设备及存储介质 |
CN117971347B (zh) * | 2024-03-28 | 2024-06-11 | 中国人民解放军国防科技大学 | 一种基于TrustZone的容器可信服务设计方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114048485B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114048485B (zh) | 一种针对Docker容器内进程代码段完整性动态监测方法 | |
US9858072B2 (en) | Portable executable file analysis | |
CN101344904B (zh) | 一种动态度量方法 | |
CN105930242B (zh) | 一种支持精确访存检测的多核处理器随机验证方法及装置 | |
CN109062965B (zh) | 大数据分析系统、服务器、数据处理方法和存储介质 | |
CN111400695B (zh) | 一种设备指纹生成方法、装置、设备和介质 | |
CN111967065A (zh) | 一种数据保护方法、处理器及电子设备 | |
CN114143024B (zh) | 基于生成对抗网络的黑盒恶意软件检测对抗样本生成方法、系统、电子设备及存储介质 | |
CN114741250A (zh) | 用于验证多级高速缓存器的系统及方法 | |
CN114138402A (zh) | 一种容器集群部署平台 | |
CN116930727B (zh) | 基于电路板的芯片检测方法 | |
CN112133357B (zh) | 一种eMMC的测试方法及装置 | |
CN108876963A (zh) | 一种汽车日志的存储方法、装置、微处理器及存储介质 | |
CN115952084A (zh) | 验证访存部件的方法及系统 | |
CN109951527B (zh) | 面向虚拟化系统的hypervisor完整性检测方法 | |
WO2023165257A1 (zh) | 一种代码段动态度量方法、装置及电子设备 | |
US6920593B2 (en) | Logical verification apparatus and method for memory control circuit | |
CN111737090B (zh) | 日志仿真方法、装置、计算机设备和存储介质 | |
CN115687129A (zh) | 一种覆盖率报告生成方法、装置、存储介质和计算机设备 | |
CN115827304A (zh) | 一种片内高速总线数据的校验系统及校验方法 | |
CN115292147A (zh) | 便捷高效的内存压力测试方法、系统和可读存储介质 | |
CN110601846B (zh) | 一种校验虚拟可信根的系统及方法 | |
US20080163180A1 (en) | Dynamic discovery of data segments within instrumented code | |
CN111737223A (zh) | 一种文件拷贝方法、装置、设备及存储介质 | |
CN111259361B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231225 Address after: 215163 Building 1, 58 Kunlunshan Road, high tech Zone, Suzhou City, Jiangsu Province Patentee after: CHINA MOBILE (SUZHOU) SOFTWARE TECHNOLOGY Co.,Ltd. Patentee after: SICHUAN University Address before: 610065, No. 24, south section of first ring road, Chengdu, Sichuan, Wuhou District Patentee before: SICHUAN University |