CN113391880B - 一种分层双重哈希验证的可信镜像传输方法 - Google Patents
一种分层双重哈希验证的可信镜像传输方法 Download PDFInfo
- Publication number
- CN113391880B CN113391880B CN202110688097.XA CN202110688097A CN113391880B CN 113391880 B CN113391880 B CN 113391880B CN 202110688097 A CN202110688097 A CN 202110688097A CN 113391880 B CN113391880 B CN 113391880B
- Authority
- CN
- China
- Prior art keywords
- layer
- mirror image
- container
- hash
- trusted
- 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
-
- 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
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种分层双重哈希验证的可信镜像传输方法,通过对容器的每一次层镜像进行哈希计算得到单层哈希值HashN,再对多个HashN合并成聚合哈希值,并再次对合并后的聚合哈希值进行哈希运算得到静态度量值HashS,并将其加密传输到可信镜像仓库,在解密后对多个单层哈希值HashN与单层哈希值对应的容器的镜像进行第一重的安全校验,再对静态度量值HashS进行第二重安全校验,两次校验通过则对新容器的镜像进行存储。通过本发明提出的可信镜像传输方法,可有效解决在容器的镜像传输过程镜像被篡改而导致的安全问题。验证在传输过程中的数据一致性,提供一种可靠的数据传输方案。
Description
技术领域
本发明属于计算机领域,具体涉及一种分层双重哈希验证的可信镜像传输方法。
背景技术
容器作为一种轻量级虚拟化技术,与虚拟机技术相比,具有性能损耗小,资源利用率高等优势,已成为云计算下一步技术发展的重要方向。镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件。镜像是容器的基础,同虚拟机不同,容器镜像利用联合挂载技术,同一个容器镜像可运行在成百上千的容器中。
在实际中,往往通过建立一个集中存储各种功能的容器镜像的仓库来保存镜像,以方便在使用时快速拉取指定镜像用于建立一些服务。因此需要将建立好的镜像保存并发送到容器镜像的仓库。但在传输过程中可能被恶意攻击或被替换掉安全的镜像,在镜像仓库收到镜像的时候,无法根据生产场景进行验证。存在很大的安全隐患。若一个危险镜像被大量拉取到不同的容器中运行,其所造成的危害将是巨大的。
因此,需要一个对容器的镜像传输时提供一个完善的且安全的验证方案。
发明内容
为解决上述问题,本发明提出一种分层双重哈希验证的可信镜像传输方法,包括:
管理节点对容器的镜像层进行哈希计算获取到多个单层哈希值HashN,并将多个单层哈希值按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希计算得到所述容器的静态度量值HashS;
所述管理节点通过TCM可信芯片生成静态度量值保护秘钥KeyP,并使用所述静态度量值保护秘钥KeyP加密所述静态度量值HashS获得静态度量值密文;
所述管理节点向可信镜像仓库节点发送入库请求,接收来自所述可信镜像仓库节点的公钥,并使用所述公钥加密所述静态度量值保护秘钥KeyP得到静态度量值保护秘钥的密文;
所述管理节点将所述容器的镜像、所述每一层镜像的单层哈希值HashN、所述静态度量值密文和所述静态度量值保护秘钥的密文发送到所述可信镜像仓库节点;
所述可信镜像仓库根据私钥解密收到的所述静态度量值保护秘钥的密文获得静态度量值保护秘钥KeyP,以及根据解密得到的所述静态度量值保护秘钥KeyP解密所述静态度量值密文得到所述静态度量值HashS;
所述可信镜像仓库根据每一层的单层哈希值HashN和静态度量值HashS进行所述容器的镜像层数据校验和容器静态度量值校验,若验证通过则将所述容器的镜像数据保存。
在本发明的一些实施方式中,进行容器的镜像层数据校验包括:
所述可信镜像仓库根据收到的单层哈希值HashN在已存储的镜像层数据的单层哈希值HashN列表中进行检索;
响应于所述检索结果为匹配,则跳过对所述收到的单层哈希值HashN对应的镜像层的验证,执行下一镜像层的单层哈希值HashN的验证。
在本发明的一些实施方式中,方法还包括:
响应于所述检索结果为不匹配,则所述可信镜像仓库对所述单层哈希值HashN对应的容器的镜像层数据进行哈希计算产生新的单层哈希值HashN2;
对比所述单层哈希值HashN与哈希计算产生的新的单层哈希值HashN2;
响应于所述对比结果一致,执行下一镜像层的单层哈希值验证。
在本发明的一些实施方式中,方法还包括:
响应于所述对比结果不一致,结束此次容器镜像存储,并删除所述容器的所有数据。
在本发明的一些实施方式中,进行容器静态度量值校验包括:
响应于所述镜像层校验已完成且验证结果为通过,将所述镜像层校验通过的多个单层哈希值HashN按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希运算得到新的静态度量值HashS2,并与所述解密后的静态度量值HashS进行比对;
若比对结果为一致,将所述容器的镜像层中的单层哈希值HashN等于HashN2的镜像保存。
在本发明的一些实施方式中,方法还包括:
响应于所述比对结果不一致,结束此次容器镜像存储,并删除所述容器的所有数据。
在本发明的一些实施方式中,方法还包括:
在所述容器静态度量值校验完成后,调用可信镜像仓库的漏洞扫描程序对容器镜像内容进行扫描,若扫描结果为无漏洞威胁,将所述容器镜像保存;
若扫描结果为存在漏洞,删除所述容器的镜像。
在本发明的一些实施方式中,管理节点向可信镜像仓库发送所述静态度量值密文的通信方式包括:
数字信封安全机制或安全隧道的方式。
在本发明的一些实施方式中,将多个单层哈希值按照预定顺序合并包括:
按照容器镜像层的生成顺序将对应的单层哈希值HashN进行前后拼接;或者
将多个单层哈希值HashN采用同位或逻辑运算的方式合并。
在本发明的一些实施方式中,还包括:
响应于管理节点从可信镜像仓库节点拉取容器镜像,可信镜像仓库节点对容器的镜像层进行哈希计算获取到多个单层哈希值HashN,并将多个单层哈希值按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希计算得到所述容器的静态度量值HashS;
所述可信镜像仓库节点通过TCM可信芯片生成静态度量值保护秘钥KeyP,并使用所述静态度量值保护秘钥KeyP加密所述静态度量值HashS获得静态度量值密文;
所述可信镜像仓库向管理节点发送传输数据请求,接收来自所述管理节点的公钥,并使用所述公钥加密所述静态度量值保护秘钥KeyP得到静态度量值保护秘钥的密文;
所述可信镜像仓库节点将所述容器的镜像、所述每一层镜像的单层哈希值HashN、所述静态度量值密文和所述静态度量值保护秘钥的密文发送到所述管理节点;
所述管理节点根据私钥解密收到的所述静态度量值保护秘钥的密文获得静态度量值保护秘钥KeyP,以及根据解密得到的所述静态度量值保护秘钥KeyP解密所述静态度量值密文得到所述静态度量值HashS;
所述管理节点根据每一层的单层哈希值HashN和静态度量值HashS进行所述容器的镜像层数据校验和容器静态度量值校验,若验证通过则将所述容器的镜像数据保存。
通过本发明所提出的一种分层存储双重哈希验证的可信镜像传输方法,通过对容器镜像进行逐层哈希获取每一层的单层哈希值,并将多层镜像的单层哈希值进行合并,并对合并后的聚合哈希值再次哈希获取容器的静态度量值,将静态度量值加密发送,在可信镜像仓库对容器的每一层镜像进行第一次校验,以确保每一层的镜像与其对应的单层哈希值匹配;再对可信镜像仓库收到的解密容器的静态度量值进行第二次校验以验证容器的镜像和镜像所对应的单层哈希值没有同时被替换。通过这两重验证以及TCM可信芯片的隔离保密哈希计算可以有效避免容器的镜像在传输过程中被篡改和/或容器的镜像和单层哈希值同时被篡改。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法的一个实施例流程图;
图2为本发明方法的一实施例的容器镜像数据结构图;
图3位本发明方法的一示例性实施例的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
如图1所示,本发明提出一种分层双重哈希验证的可信镜像传输方法,包括:
步骤S100、管理节点对容器的镜像层进行哈希计算获取到多个单层哈希值HashN,并将多个单层哈希值按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希计算得到所述容器的静态度量值HashS;
步骤S200、所述管理节点通过TCM可信芯片生成静态度量值保护秘钥KeyP,并使用所述静态度量值保护秘钥KeyP加密所述静态度量值HashS获得静态度量值密文;
步骤S300、所述管理节点向可信镜像仓库节点发送入库请求,接收来自所述可信镜像仓库节点的公钥,并使用所述公钥加密所述静态度量值保护秘钥KeyP得到静态度量值保护秘钥的密文;
步骤S400、所述管理节点将所述容器的镜像、所述每一层镜像的单层哈希值HashN、所述静态度量值密文和所述静态度量值保护秘钥的密文发送到所述可信镜像仓库节点;
步骤S500、所述可信镜像仓库根据私钥解密收到的所述静态度量值保护秘钥的密文获得静态度量值保护秘钥KeyP,以及根据解密得到的所述静态度量值保护秘钥KeyP解密所述静态度量值密文得到所述静态度量值HashS;
步骤S600、所述可信镜像仓库根据每一层的单层哈希值HashN和静态度量值HashS进行所述容器的镜像层数据校验和容器静态度量值校验,若验证通过则将所述容器的镜像数据保存。
需要说明的是,在Docker中,镜像可以看成是由多个镜像层叠加起来的一个文件***(通过UnionFS和AUFS文件联合***实现),镜像层也可以简单理解为一个基本的镜像,在本发明中所述的镜像是指一个镜像层的镜像,或者可以理解为一个容器镜像的所能分割而成的最小存储单位,因为容器的镜像是由一层一层的建立起来的。
在本实施例中,在步骤S100之前,管理节点需要根据具体的业务需求的需要获取程序运行的所需内容,包括代码、运行时库、环境变量以及配置文件等,具体为:在创建好的空白容器中安装自己需要的工具,配置项目代码以及配置好配置环境,并通过dockercommit命令的方式提交便可生成一个容器的镜像。
在步骤S100中,管理节点对生成的容器的镜像的进行哈希计算获取该镜像的单层哈希值HashN,其中N代表该镜像在容器中生成顺序,由于Docker是提交(commit)一次便生成一个镜像。如图2所示,每增加一层镜像,该层镜像的单层哈希值的编号N就加1。管理节点持续对容器每一层的镜像进行哈希计算得到每一层镜像的单层哈希值HashN,并将容器的所有层的多个单层哈希值Hash1、Hash2、……、HashN按照一定顺序合并得到聚合的哈希值,并通过TCM可信芯片对聚合的哈希值再次进行哈希计算得到容器的静态度量值HashS。
在步骤S200中,为将容器的静态度量值安全的发送到可信镜像仓库,需要将对其进行加密,为此,管理节点通过TCM可信芯片随机生成一组随机数作为静态度量值保护秘钥KeyP。在本发明的一些实施例中是通过静态度量值+当前时间的哈希值作为静态度量值保护秘钥KeyP。并通过调用TCM可信芯片将静态度量值保护秘钥KeyP和静态度量值HashS发送到TCM可信芯片进行加密以获取到静态度量值的密文。
在步骤S300中,在获取到静态度量值密文后,需要对静态度量值保护秘钥KeyP进行加密传输用以后续的可信镜像仓库解密,管理节点向可信镜像仓库发送相应请求,获得来自可信镜像仓库用于加密的公钥,并通过公钥对静态度量值保护秘钥KeyP进行加密以获取到静态度量值保护秘钥的密文。
在步骤S400中,管理节点将静态度量值密文、静态度量值保护秘钥密文、容器的所有镜像层的单层哈希值HashN、以及容器的所有镜像层数据发送到可信镜像仓库。
如图3所示,在本发明的一些实施例中,管理节点对静态度量值密文、静态度量值保护秘钥密文、容器的所有镜像层的单层哈希值HashN、以及容器的所有镜像层数据向可信镜像仓库的发送并不是统一发送。
在一些实施例中,管理节点在对容器的镜像进行哈希计算得到单层哈希值HashN,便将单层哈希值HashN发送到可信镜像仓库,可信镜像仓库在接收到单层哈希值HashN后在已存储的容器镜像的哈希值列表中检索,若存在相同的单层哈希值HashN,反馈给管理节点,管理节点将不再将位于管理节点的容器的该层镜像数据发送到可信镜像仓库以节省传输带宽。
在步骤S500中,可信镜像仓库首先使用私钥对静态度量值保护秘钥密文进行解密运算以获取到静态度量值保护秘钥KeyP,在获取到静态度量值保护秘钥KeyP之后,再通过静态度量值保护秘钥KeyP解密静态度量值密文得到在管理节点生成的容器的静态度量值HashS。
在步骤S600中,可信镜像仓库对容器的每一层镜像的HashN值与镜像内容数据本身进行匹配校验;若匹配校验均通过,则重新计算所有镜像层的单层哈希值HashN,并将所有镜像层的HashN合并成新的聚合哈希值,并进一步将聚合哈希值通过TCM可信芯片依照管理节点使用的相同算法再次计算得出新的静态度量值HashS2,再判断新的静态度量值Hash2和解密获得的来自管理节点计算得到的静态度量值HashS是否一致,若判断结果为一致,则证明容器的各层镜像数据均未改变。传输过程中没有被篡改。
在本发明的一些实施例中,进行容器的镜像层数据校验包括:
所述可信镜像仓库根据收到的单层哈希值HashN在已存储的镜像层数据的单层哈希值HashN列表中进行检索;
响应于所述检索结果为匹配,则跳过对所述收到的单层哈希值HashN对应的镜像层的验证,执行下一镜像层的单层哈希值HashN的验证。
在本实施例中,可信镜像仓库对接收到的每一个单层哈希值HashN都在已经存储的镜像的单层哈希值列表中进行检索,若检索到存在该单层哈希值HashN,则说明该镜像已经存储过。这是因为Docker的生成机制导致,因为存在很多对容器的修改存在相同的操作,比如在其他数据情况下,容器1和容器2在下一提交中均只是安装了一个相同的软件。为防止这一现象导致数据的冗余存储,对于镜像层中已经被存储与可信镜像仓库的镜像数据进行一次基于单层哈希值HashN的检索,若存在则跳过该镜像层的验证。直接执行下一层的镜像的单层哈希值HashN的验证。
在本发明的一些实施例中,方法还包括:
响应于所述检索结果为不匹配,则所述可信镜像仓库对所述单层哈希值HashN对应的容器的镜像层数据进行哈希计算产生新的单层哈希值HashN2;
对比所述单层哈希值HashN与哈希计算产生的新的单层哈希值HashN2;
响应于所述对比结果一致,执行下一镜像层的单层哈希值验证。
在本实施例中,对于没有存储过的容器的镜像,在可信镜像仓库对其数据内容进行再次哈希计算得到单层哈希值值HashN2,然后对比来自管理节点哈希计算的HashN,若两者的对比结果相同,则说明在传输过程中镜像数据文件与其对应的哈希值是一致的。镜像层验证通过,对下一层的单层哈希值HashN+1进行哈希值与数据的匹配校验。
在本发明的一些实施方式中,方法还包括:
响应于所述对比结果不一致,结束此次容器镜像存储,并删除所述容器的所有数据。
在本实施例中,若在可信镜像仓库重新计算的单层哈希值HashN2与在管理节点计算的单层哈希值HashN两者不相同,则说明该容器的这一层镜像在传输过程中被篡改或者被损坏。则直接结束此次容器的存储过程,将此待存储的容器的所有的镜像数据全部删除。
在本发明的一些实施方式中,进行容器静态度量值校验包括:
响应于所述镜像层校验已完成且验证结果为通过,将所述镜像层校验通过的多个单层哈希值HashN按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希运算得到新的静态度量值HashS2,并与所述解密后的静态度量值HashS进行比对;
若比对结果为一致,将所述容器的镜像层中的单层哈希值HashN等于HashN2的镜像保存。
在本实施例中,若对容器镜像的单层哈希值HashN的校验完成,也即容器镜像层的校验完成,说明容器的所有镜像与其单层哈希值HashN均相互匹配,则将这些镜像的单层哈希值按照在管理节点相同的顺序且相同的方式进行合并成聚合哈希值,并将聚合哈希值发送到TCM可信芯片,由TCM可信芯片进行哈希计算得到新的静态度量值HashS2,再将新的静态度量值HashS2与HashS进行比对,若两者完全相同则验证通过,将本次对容器镜像的校验完成,数据在传输过程中容器的镜像与其对应的单层哈希值HashN没有被同时替换。可以对数据进行保存。
另外,当静态度量值验证通过后,可以对容器的镜像数据进行存储,而在这种情况下,仅对具有HashN2的镜像数据进行存储,因为在本发明中对容器的镜像中已经被存储的容器的镜像已经验证其安全性并存储到可信镜像仓库中,并且对于没有存储过的容器的镜像进行了再次哈希计算获得新的单层哈希值HashN,因此将具有新的单层哈希值HashN的容器的镜像直接存储即可,可大大节省存储流程所消耗的时间与存储空间。
在一些实施例中,出于对哈希算法的保密,防止在获取Hash算法的情况下根据新的多个镜像层的单层哈希值HashN进行哈希计算伪造静态度量值HashS。TCM可信芯片对静态度量值HashS计算所采用的算法并不是由管理节点或可信镜像仓库节点在哈希计算时指定,而是在先对TCM可信芯片进行设定,包括选择一定的Hash算法以及在运算时采用。TCM可信芯片只接收数据串(聚合哈希值),并按照预先设定的哈希算法或可选择的加入一些特定的混淆字符等方式对数据进行哈希,例如,根据TCM可信芯片的唯一标识作为附加字符串与接收到的聚合哈希值再次前后拼接,在这种情况下,在管理节点TCM可信芯片和在可信镜像仓库节点的TCM可信芯片应成对匹配,也即两者的TCM可信芯片应保存由对方TCM可信芯片的唯一标识,当然也可采用其他预设的成对出现的字符标识,在验证由对方(管理节点或可信镜像仓库节点)TCM可信芯片生成的静态度量值时(HashS和HashS2)使用对方的唯一标识进行再次计算,以满足算法相同的前提。然后将哈希计算后的静态度量值HashS输出。形成一个的独立的运行环境,其安全性较高。
在一些实施例中,在对容器的镜像层数据进行哈希计算获取单层哈希值HashN时,出于安全考虑其所使用的哈希算法与TCM中使用的Hash算法不能相同,且对于镜像层数据的哈希计算由于数量庞大可根据需要选择软件实现或者通过硬件层次的物理密码卡加速进行哈希计算。
在本发明的一些实施方式中,方法还包括:
响应于所述比对结果不一致,结束此次容器镜像存储,并删除所述容器的所有数据。
在本实施例中,如果对静态度量值的验证不成功,则意味着在传输过程中,容器的某个镜像存在被篡改或被修改的可能,并且该修改同时修改了其对应的单层哈希值HashN,所以在第一重对单层哈希值进行校验是没有被发现。所以在这种情况下无需判断是容器的哪一层的镜像被篡改,只需删除该容器的所有数据,终止对该容器镜像的入库流程即可。
在本发明的一些实施方式中,方法还包括:
在所述容器静态度量值校验完成后,调用可信镜像仓库的漏洞扫描程序对容器镜像内容进行扫描,若扫描结果为无漏洞威胁,将所述容器镜像保存;
若扫描结果为存在漏洞,删除所述容器的镜像。
在本实施例中,可信镜像仓库在对静态度量值HashS的验证通过之后,在存储容器数据之前,出于对安全的考虑对入库容器的镜像数据通过杀毒软件或漏洞扫描工具进行安全检测,若安全检测均通过将安全检测通过的镜像数据存入可信镜像仓库。
在一些实施例中,对若安全检测发现容器的有些镜像存在漏洞,而有些镜像是安全的,将安全的镜像直接存储到可信镜像仓库,将存在漏洞的容器的镜像数据进行删除并将有安全漏洞的容器的镜像的信息反馈到管理节点。
在一些实施例中,将存在漏洞的容器的镜像数据也存储在可信镜像仓库,并对其进行标记,在使用时提醒用户存在哪些漏洞,建议用户采取什么样的方式进行维护或保护。
在本发明的一些实施例中,管理节点向可信镜像仓库发送所述静态度量值密文的通信方式包括:
数字信封安全机制或安全隧道的方式。
在本实施例中,为进一步提高数据的传输的安全性,在管理节点向可信镜像仓库传输静态度量值密文、容器的镜像数据、单层哈希值HashN以及静态度量值保护秘钥密文时,可采用数字信封技术或者是安全通道等传输技术来保证传输过程中的数据的一致性。也可根据网络传输情况仅将静态度量值密文通过数字信封技术或者是安全通道等方式进行传输。
在本发明的一些实施例中,将多个单层哈希值按照预定顺序合并包括:
按照容器镜像层的生成顺序将对应的单层哈希值HashN进行前后拼接。
在本实施例中,在生成聚合哈希值时,可将容器的多个镜像的单层哈希值以前后拼接的方式按照容器的镜像层级顺序依次拼接成一组更长的字符串作为聚合哈希值。通过拼接的方式更能保证拼接容器镜像数据特征的唯一性。但可能对于容器镜像层较多的容器存在一定的计算性能消耗。
在本发明的一些实施例中,将多个单层哈希值按照预定顺序合并还包括
将多个单层哈希值HashN采用同位或逻辑运算的方式合并。
在本实施例中,对于容器的镜像层数较少的容器数据,在合并聚合哈希值时,可采用原有的单层哈希值HashN转换成2进制数据进行同位逻辑或运算,得到一个与单层哈希值HashN相同数据长度的聚合哈希值。
在本发明的一些实例式中,方法还包括:
响应于管理节点从可信镜像仓库节点拉取容器镜像,可信镜像仓库节点对容器的镜像层进行哈希计算获取到多个单层哈希值HashN,并将多个单层哈希值按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希计算得到所述容器的静态度量值HashS;
所述可信镜像仓库节点通过TCM可信芯片生成静态度量值保护秘钥KeyP,并使用所述静态度量值保护秘钥KeyP加密所述静态度量值HashS获得静态度量值密文;
所述可信镜像仓库向管理节点发送传输数据请求,接收来自所述管理节点的公钥,并使用所述公钥加密所述静态度量值保护秘钥KeyP得到静态度量值保护秘钥的密文;
所述可信镜像仓库节点将所述容器的镜像、所述每一层镜像的单层哈希值HashN、所述静态度量值密文和所述静态度量值保护秘钥的密文发送到所述管理节点;
所述管理节点根据私钥解密收到的所述静态度量值保护秘钥的密文获得静态度量值保护秘钥KeyP,以及根据解密得到的所述静态度量值保护秘钥KeyP解密所述静态度量值密文得到所述静态度量值HashS;
所述管理节点根据每一层的单层哈希值HashN和静态度量值HashS进行所述容器的镜像层数据校验和容器静态度量值校验,若验证通过则将所述容器的镜像数据保存。
在本实施例中,当需要从可信镜像仓库节点获取响应的容器镜像建立容器运行相应业务时,管理节点首先向可信镜像仓库节点发送拉取容器请求。可信镜像仓库在接收到对应的容器的拉取请求后,将对应的容器的所有镜像进行哈希计算得到单层哈希值HashN,并将多个单层哈希值HashN拼接成聚合哈希值,并将聚合哈希值交由TCM可信芯片计算得到静态度量值HashS,再通过TCM可信芯片生成静态度量值保护秘钥KeyP,并通过静态度量值保护秘钥加密静态度量值HashS,并获得密文。
可信镜像仓库节点向管理节点发送获取加密公钥请求,在接收到加密公钥之后使用加密公钥加密静态度量值保护秘钥KeyP并获得密文。
可信镜像仓库节点向管理节点发送容器的镜像数据,发送的数据主要包括:容器的镜像层的多个镜像数据,该容器的静态度量值HashS密文,该容器的多个单层哈希值HashN、静态度量值保护秘钥KeyP密文。需要说明的是上述数据的发送并不是统一发送,而是根据完成情况以及网络情况即时发送。
在管理节点接收到上述数据之后,首先通过私钥解密静态度量值保护秘钥KeyP密文得到静态度量值保护秘钥KeyP,再使用静态度量值保护秘钥KeyP解密静态度量值HashS密文得到静态度量值HashS。再在接收到容器的全部镜像数据之后,对每个镜像一词进行哈希计算得到多个单层哈希值HashN2,并将多个单层哈希值HashN2拼接成聚合哈希值,并将聚合哈希值交由TCM可信芯片计算得到静态度量值HashS2。
先判断重新计算得到的单层哈希值HashN2与来自可信镜像仓库节点的单层哈希值是否相同,若某一组哈希值不匹配则验证不通过,直接删除该容器的内容,此次拉取失败不执行后续步骤。
最后进行判断重新计算得到的静态度量值HashS2与解密得到的静态度量值HashS是否相同,若相同则说明该容器的镜像数据在传输过程中没有被篡改,是安全的,管理节点将容器的镜像下发到指定的容器平台运行。若不相同,则说明该容器的数据在传输过程中被修改了或损坏了,则删除该容器的内容。
管理节点向可信镜像仓库节点拉取相应的容器的镜像。管理节点和可信镜像仓库执行的方法如上述,区别为是验证过程中的身份发生互换,由可信仓库节点发送数据,由管理节点进行验证,省去了查找已存储的镜像流程。
如图3所示为本发明的一个优选的实施例,其中:
步骤S301管理节点1启动容器镜像存储任务;
步骤S302管理节点1根据平台用户传入的镜像构建文件生成新容器镜像的镜像层内容;
步骤S303管理节点1根据生成的新容器镜像的镜像层内容使用物理密码卡加速哈希运算生成新容器镜像每一层的哈希值Hash1、Hash2、……、HashN;
步骤S304,管理节点1将新容器镜像每一层的哈希值Hash1、Hash2、……、HashN按照镜像的层级顺序进行前后拼接生成聚合哈希值,并将聚合哈希值发送到TCM可信芯片,通过TCM可信芯片预先设置号的哈希算法进行哈希计算得到静态度量值HashS;
步骤S305管理节点1调用TCM可信芯片生成随机生成静态度量值保护秘钥KeyP;
步骤S306管理节点1向可信镜像仓库节点发送请求获取加密公钥,并使用镜像仓库节点的公钥对静态度量值保护秘钥KeyP进行加密,并将静态度量值保护秘钥密文发送到可信镜像仓库2;
步骤S307管理节点1使用静态度量值保护秘钥KeyP将静态度量值HashS加密,并将加密后的静态度量值密文发送到可信镜像仓库2;
步骤S308管理节点1将新容器镜像的每一层的单层哈希值HashN发送到可信镜像仓库2,并接收镜像层的反馈;
步骤S301管理节点1若接收到可信镜像仓库反馈的检索结果为可信镜像仓库不存在该容器的镜像,将该单层哈希值HashN对应的不存在于可信镜像仓库的容器的镜像层数据发送到可信镜像仓库2;
步骤S310可信镜像仓库2在接收到加密后的静态度量值保护秘钥密文后,通过私钥对其解密得到静态度量值保护秘钥KeyP;
步骤S311可信镜像仓库2通过解密后的静态度量值保护秘钥解密静态度量值密文获取静态度量值HashS;
步骤S312可信镜像仓库2根据接收到的新容器镜像的每一层的单层哈希值HashN进行检索。
步骤S313可信仓库节点2通过查找已存储的容器镜像的哈希值列表中是否存在与HashN匹配的项,若匹配则说明镜像层N已经存在,则执行步骤S3131;
步骤S3131将处理镜像层数N+1并跳转的步骤S312;
步骤S314若在步骤S313中判断结果为,不存在该新容器的镜像第N层的数据,通知管理节点1并接收来自管理节点1发送来的该新容器的第N层的镜像数据;
步骤S315在接收到来自管理节点1发送来的该新容器的第N层的镜像数据之后,对该新容器的第N层的镜像数据进行哈希计算得到新的新容器的第N层的镜像数据的单层哈希值HashN2;
步骤S316对比该新容器的第N层的镜像数据的单层哈希值HashN和新的单层哈希值HashN2是否相同;若相同执行步骤S3131;不同则执行S320;
步骤S317在对Hash1、Hash2、……、HashN等镜像层度量完成之后,将对应的多个单层哈希值Hash1、Hash2、……、HashN按照与步骤S304相同的拼接方法重新进行合并得到新的聚合哈希值,并将新的聚合哈希值发送到位于可信镜像仓库2的TCM可信芯片中进行哈希运算得到新的静态度量值HashS2;
步骤S318对比从管理节点1发送来并解密的静态度量值HashS和在步骤S317中重新计算得到的新的静态度量值是否相同,若相同则执行步骤S319若不相同则执行步骤S320结束此次新容器镜像的存入可信镜像仓库流程。
步骤S319响应于静态度量值度量成功,通过漏洞扫描程序对新容器所有的镜像进行扫描,若不存在安全漏洞,则将新容器存储到可信镜像仓库,执行步骤S320;
步骤S320结束此次容器镜像的存储过程。
需要说明的是,上述步骤中并非是完全按照顺序执行,在不影响下一步骤执行的情况下为节约流程,有些步骤可并行执行。
通过本发明所提出的一种分层存储双重哈希验证的可信镜像存储方法。通过对容器镜像进行逐层哈希获取每一层的单层哈希值,并将多层镜像的单层哈希值进行合并,并对合并后的聚合哈希值再次哈希获取容器的静态度量值,将静态度量值加密发送,在可信镜像仓库对容器的每一层镜像的单层哈希值HashN进行第一次校验,以确保每一层的镜像与其对应的单层哈希值匹配;再对可信镜像仓库收到的解密容器的静态度量值HashS进行第二次校验以验证容器的镜像和镜像所对应的单层哈希值没有同时被替换。通过这两重验证可以有效避免容器的镜像被篡改和/或容器的镜像和单层哈希值同时被篡改。
通过TCM可信芯片保证在管理节点对哈希计算产生的静态度量值进行保密的哈希计算,产生独特的静态度量值。即便在获取到某个容器的所有的镜像的单层哈希值HashN并对其中的某个镜像进行修改并同时修改其单层哈希值HashN值后,在没有TCM可信芯片及其内部的哈希算法的情况下也无法生成相同静态度量值,从而保证数据的一致性校验得以安全可靠完成。
Claims (10)
1.一种分层双重哈希验证的可信镜像传输方法,其特征在于,包括:
管理节点对容器的镜像层进行哈希计算获取到多个单层哈希值,并将多个单层哈希值按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希计算得到所述容器的静态度量值HashS;
所述管理节点通过TCM可信芯片生成静态度量值保护秘钥KeyP,并使用所述静态度量值保护秘钥KeyP加密所述静态度量值HashS获得静态度量值密文;
所述管理节点向可信镜像仓库节点发送入库请求,接收来自所述可信镜像仓库节点的公钥,并使用所述公钥加密所述静态度量值保护秘钥KeyP得到静态度量值保护秘钥的密文;
所述管理节点将所述容器的镜像、每一层镜像的单层哈希值、所述静态度量值密文和所述静态度量值保护秘钥的密文发送到所述可信镜像仓库节点;
所述可信镜像仓库根据私钥解密收到的所述静态度量值保护秘钥的密文获得静态度量值保护秘钥KeyP,以及根据解密得到的所述静态度量值保护秘钥KeyP解密所述静态度量值密文得到所述静态度量值HashS;
所述可信镜像仓库根据每一层的单层哈希值和静态度量值HashS进行所述容器的镜像层数据校验和容器静态度量值校验,若验证通过则将所述容器的镜像数据保存。
2.根据权利要求1所述的可信镜像传输方法,其特征在于,所述进行容器的镜像层数据校验包括:
所述可信镜像仓库根据收到的单层哈希值在已存储的镜像层数据的单层哈希值列表中进行检索;
响应于检索结果为匹配,则跳过对所述收到的单层哈希值对应的镜像层的验证,执行下一镜像层的单层哈希值的验证。
3.根据权利要求2所述的可信镜像传输方法,其特征在于,还包括:
响应于所述检索结果为不匹配,则所述可信镜像仓库对所述单层哈希值对应的容器的镜像层数据进行哈希计算产生新的单层哈希值;
对比所述单层哈希值与哈希计算产生的新的单层哈希值;
响应于对比结果一致,执行下一镜像层的单层哈希值验证。
4.根据权利要求3所述的可信镜像传输方法,其特征在于,还包括:
响应于所述对比结果不一致,结束此次容器镜像存储,并删除所述容器的所有数据。
5.根据权利要求3所述的可信镜像传输方法,其特征在于,所述进行容器静态度量值校验包括:
响应于镜像层校验已完成且验证结果为通过,将所述镜像层校验通过的多个单层哈希值按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希运算得到新的静态度量值HashS2,并与所述解密后的静态度量值HashS进行比对;
若比对结果为一致,将所述容器的镜像层中的单层哈希值等于哈希计算产生的新的单层哈希值的镜像保存。
6.根据权利要求5所述的可信镜像传输方法,其特征在于,还包括:
响应于所述比对结果不一致,结束此次容器镜像存储,并删除所述容器的所有数据。
7.根据权利要求5所述的可信镜像传输方法,其特征在于,还包括:
在所述容器静态度量值校验完成后,调用可信镜像仓库的漏洞扫描程序对容器镜像内容进行扫描,若扫描结果为无漏洞威胁,将所述容器镜像保存;
若扫描结果为存在漏洞,删除所述容器的镜像。
8.根据权利要求1所述的可信镜像传输方法,其特征在于,所述管理节点向可信镜像仓库发送所述静态度量值密文的通信方式包括:
数字信封安全机制或安全隧道的方式。
9.根据权利要求1所述的可信镜像传输方法,其特征在于,所述将多个单层哈希值按照预定顺序合并包括:
按照容器镜像层的生成顺序将对应的单层哈希值进行前后拼接;或者
将多个单层哈希值采用同位或逻辑运算的方式合并。
10.根据权利要求1所述的可信镜像传输方法,其特征在于,还包括:
响应于管理节点从可信镜像仓库节点拉取容器镜像,可信镜像仓库节点对容器的镜像层进行哈希计算获取到多个单层哈希值,并将多个单层哈希值按照预定顺序合并,通过TCM可信芯片对合并后的聚合哈希值再次进行哈希计算得到所述容器的静态度量值HashS;
所述可信镜像仓库节点通过TCM可信芯片生成静态度量值保护秘钥KeyP,并使用所述静态度量值保护秘钥KeyP加密所述静态度量值HashS获得静态度量值密文;
所述可信镜像仓库向管理节点发送传输数据请求,接收来自所述管理节点的公钥,并使用所述公钥加密所述静态度量值保护秘钥KeyP得到静态度量值保护秘钥的密文;
所述可信镜像仓库节点将所述容器的镜像、所述每一层镜像的单层哈希值、所述静态度量值密文和所述静态度量值保护秘钥的密文发送到所述管理节点;
所述管理节点根据私钥解密收到的所述静态度量值保护秘钥的密文获得静态度量值保护秘钥KeyP,以及根据解密得到的所述静态度量值保护秘钥KeyP解密所述静态度量值密文得到所述静态度量值HashS;
所述管理节点根据每一层的单层哈希值和静态度量值HashS进行所述容器的镜像层数据校验和容器静态度量值校验,若验证通过则将所述容器的镜像数据保存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110688097.XA CN113391880B (zh) | 2021-06-21 | 2021-06-21 | 一种分层双重哈希验证的可信镜像传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110688097.XA CN113391880B (zh) | 2021-06-21 | 2021-06-21 | 一种分层双重哈希验证的可信镜像传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113391880A CN113391880A (zh) | 2021-09-14 |
CN113391880B true CN113391880B (zh) | 2023-04-07 |
Family
ID=77623464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110688097.XA Active CN113391880B (zh) | 2021-06-21 | 2021-06-21 | 一种分层双重哈希验证的可信镜像传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113391880B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114172729B (zh) * | 2021-12-08 | 2024-03-26 | 中国电信股份有限公司 | 基于容器的可信迁移方法和设备及存储介质 |
CN114638604A (zh) * | 2022-03-22 | 2022-06-17 | 成都质数斯达克科技有限公司 | 基于区块链的金融业务计费、收费方法及装置 |
CN114490544B (zh) * | 2022-04-18 | 2022-06-28 | 梯度云科技(北京)有限公司 | 一种新加入主机下载容器镜像的方法及装置 |
CN116561772B (zh) * | 2023-07-11 | 2023-09-22 | 北京智芯微电子科技有限公司 | 可信静态度量值计算方法、装置、存储介质及处理器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102024123A (zh) * | 2010-12-20 | 2011-04-20 | 北京世纪互联工程技术服务有限公司 | 一种云计算中虚拟机镜像导入方法及装置 |
WO2017024934A1 (zh) * | 2015-08-07 | 2017-02-16 | 阿里巴巴集团控股有限公司 | 实现电子签章的方法、装置及签章服务器 |
CN108270574A (zh) * | 2018-02-11 | 2018-07-10 | 浙江中控技术股份有限公司 | 一种白名单库文件的安全加载方法及装置 |
WO2021073170A1 (zh) * | 2019-10-18 | 2021-04-22 | 支付宝(杭州)信息技术有限公司 | 数据提供和融合的方法及装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105989306B (zh) * | 2015-02-13 | 2020-04-28 | 中兴通讯股份有限公司 | 操作***的文件签名方法、文件校验方法及装置 |
CN106295318A (zh) * | 2015-06-05 | 2017-01-04 | 北京壹人壹本信息科技有限公司 | 一种***启动引导方法和装置 |
CN105069353B (zh) * | 2015-08-11 | 2017-10-24 | 武汉大学 | 一种基于Docker的可信容器安全加固方法 |
EP3267351A1 (en) * | 2016-07-07 | 2018-01-10 | Gemalto Sa | Method for securely managing a docker image |
CN108628658B (zh) * | 2017-03-17 | 2022-04-05 | 华为技术有限公司 | 一种容器的许可证管理方法及装置 |
CN108733455B (zh) * | 2018-05-31 | 2020-08-18 | 上海交通大学 | 基于ARM TrustZone的容器隔离性增强*** |
CN110647740B (zh) * | 2018-06-27 | 2023-12-05 | 复旦大学 | 一种基于tpm的容器可信启动方法及装置 |
US10936725B2 (en) * | 2018-10-17 | 2021-03-02 | Accenture Global Solutions Limited | Container image vulnerability reduction |
US11475138B2 (en) * | 2019-02-06 | 2022-10-18 | International Business Machines Corporation | Creation and execution of secure containers |
CN110007933A (zh) * | 2019-03-26 | 2019-07-12 | 山东超越数控电子股份有限公司 | 一种面向多租户容器镜像安全配置方法,***,运行终端及存储介质 |
CN110069921B (zh) * | 2019-04-12 | 2021-01-01 | 中国科学院信息工程研究所 | 一种面向容器平台的可信软件授权验证***及方法 |
CN111625320B (zh) * | 2020-05-27 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 一种镜像管理方法、***、设备以及介质 |
CN111787116B (zh) * | 2020-07-07 | 2021-08-20 | 上海道客网络科技有限公司 | 一种基于区块链技术的容器镜像可信认证的***与方法 |
CN112054899A (zh) * | 2020-08-28 | 2020-12-08 | 航天科工网络信息发展有限公司 | 一种基于加密机的容器镜像加密管理方法 |
CN112784280A (zh) * | 2021-01-12 | 2021-05-11 | 苏州浪潮智能科技有限公司 | 一种SoC芯片安全设计方法及硬件平台 |
CN112732407B (zh) * | 2021-01-15 | 2024-04-16 | 上海浪潮云计算服务有限公司 | 一种实现多cpu架构的容器全生命周期管理方法 |
-
2021
- 2021-06-21 CN CN202110688097.XA patent/CN113391880B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102024123A (zh) * | 2010-12-20 | 2011-04-20 | 北京世纪互联工程技术服务有限公司 | 一种云计算中虚拟机镜像导入方法及装置 |
WO2017024934A1 (zh) * | 2015-08-07 | 2017-02-16 | 阿里巴巴集团控股有限公司 | 实现电子签章的方法、装置及签章服务器 |
CN108270574A (zh) * | 2018-02-11 | 2018-07-10 | 浙江中控技术股份有限公司 | 一种白名单库文件的安全加载方法及装置 |
WO2021073170A1 (zh) * | 2019-10-18 | 2021-04-22 | 支付宝(杭州)信息技术有限公司 | 数据提供和融合的方法及装置 |
Non-Patent Citations (1)
Title |
---|
陈兰香 ; 邱林冰 ; .基于Merkle哈希树的可验证密文检索方案.信息网络安全.2017,(04),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN113391880A (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113391880B (zh) | 一种分层双重哈希验证的可信镜像传输方法 | |
US9977918B2 (en) | Method and system for verifiable searchable symmetric encryption | |
CN114726643B (zh) | 云平台上的数据存储、访问方法及装置 | |
US10904231B2 (en) | Encryption using multi-level encryption key derivation | |
US6968456B1 (en) | Method and system for providing a tamper-proof storage of an audit trail in a database | |
CN111047450A (zh) | 链上数据的链下隐私计算方法及装置 | |
CN112800450B (zh) | 数据存储方法、***、装置、设备和存储介质 | |
CN117278224A (zh) | 用于验证身份属性信息的方法和*** | |
CN111506901A (zh) | 基于区块链的数据处理方法、终端及存储介质 | |
CN111709038A (zh) | 文件加密解密方法、分布式存储***、设备及存储介质 | |
CN101443774A (zh) | 优化的完整性验证过程 | |
KR20030082484A (ko) | 공개 키 암호화에 기초한 데이터의 저장 및 검색 | |
CN113435888B (zh) | 一种账户数据处理方法、装置、设备及存储介质 | |
JPH0816104A (ja) | 分散化した照合子による情報保全検証方法及び装置 | |
CN112347508A (zh) | 一种区块链数据共享加密和解密方法及*** | |
CN111340483A (zh) | 一种基于区块链的数据管理方法及相关设备 | |
CN117155549A (zh) | 密钥分发方法、装置、计算机设备和存储介质 | |
US20220216999A1 (en) | Blockchain system for supporting change of plain text data included in transaction | |
CN114978664A (zh) | 一种数据共享方法、装置及电子设备 | |
US8862893B2 (en) | Techniques for performing symmetric cryptography | |
US20230107805A1 (en) | Security System | |
US9135449B2 (en) | Apparatus and method for managing USIM data using mobile trusted module | |
CN115865461A (zh) | 一种高性能计算集群中分发数据的方法和*** | |
CN114896621A (zh) | 应用服务的获取方法、加密方法、装置、计算机设备 | |
CN114553557A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230320 Address after: 250104 No. 2877 Kehang Road, Sun Village Town, Jinan High-tech Zone, Shandong Province Applicant after: Chaoyue Technology Co.,Ltd. Address before: Room 102, 1 / F, block a, Huihang Plaza, middle section of Hangtuo Road, national civil aerospace industry base, Xi'an, Shaanxi 710000 Applicant before: Xi'an Chaochao Shentai Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |