基于PKI的HDFS认证及安全传输机制研究

2014-06-05 15:27李延改赵华伟
山东科学 2014年5期
关键词:密钥集群客户端

李延改,赵华伟

(1.山东财经大学计算机科学与技术学院,山东 济南 250014;2.山东中孚信息产业股份有限公司,山东 济南 250101)

基于PKI的HDFS认证及安全传输机制研究

李延改1,2,赵华伟1*

(1.山东财经大学计算机科学与技术学院,山东 济南 250014;2.山东中孚信息产业股份有限公司,山东 济南 250101)

为解决Hadoop核心子项目Hadoop分布式文件系统(HDFS)文件服务过程中存在的认证及安全传输问题,对当前所采用的Kerberos方案进行了详细的分析,针对其在安全性和效率性方面存在的缺陷,提出将基于PKI的数字证书认证技术及基于数字信封的AES对称加密技术应用到HDFS的安全机制中。分析表明,该安全机制与Kerberos相比,能够为HDFS文件服务提供更安全、更高效的解决方案。

Hadoop;HDFS安全;Kerberos;PKI

Hadoop作为Apache旗下的一个开源分布式计算平台,从2002年发布面世以来,就受到了广泛的关注。Hadoop强大的存储能力和高效的并行计算能力,受到了企业界的青睐,逐步成为大数据时代数据存储处理的有效工具,Amazon、Yahoo等知名组织更是用Hadoop集群搭建自己的私有云架构。然而尽管有着无与伦比的存储和计算能力,Hadoop薄弱的安全机制[1]却成为其发展推广的重大障碍,让许多亟待使用它的企业望而却步。

HDFS是Hadoop项目的核心项目,是Hadoop应用的一个分布式文件系统,起源于谷歌的GFS文件系统,但相较于GFS,HDFS搭建运行在廉价的商用机器集群上,并且采用流式数据访问模式,可以处理超大文件,有着较高的访问吞吐量。HDFS作为Hadoop数据存储的基础[2],也是其上层并行计算Mapreduce的基础,所以Hadoop的安全机制的第一步便是HDFS的安全机制设计。

本文通过分析HDFS目前所采用的Kerberos认证方案[3],指出了其在安全性和效率性等方面存在的缺陷,提出了一种基于PKI的数字证书认证机制来代替Kerberos认证,并在文件传输阶段采用基于数字信封的AES对称加密技术的安全方案。通过对比分析表明,本文提出的安全方案不论在安全性还是在效率性方面,都优于Kerberos。

1 HDFS简介

1.1 体系结构

HDFS是被设计用来处理超大文件的分布式文件系统[4],采用Master/Slaver架构对文件系统进行管理。一个HDFS集群是由一个Namenode节点和一定数目的Datanodes节点组成的,采用中心控制模式,各类节点在集群中的主要作用是:

(1)Namenode作为集群中心服务器,承担Master的任务[5]。

Namenode负责对HDFS文件系统的文件目录树及文件索引目录、文件Block列表等进行相应的维护,并将这些信息持久化到本地磁盘的命名空间镜像和编辑日志中。负责对HDFS文件系统的命名空间、集群配置信息和文件Block块的创建、删除和复制等进行管理。负责接收客户端对HDFS文件系统的访问请求,执行相应的文件操作,例如对文件的打开、关闭和重命名等。将HDFS中的超大文件划分为多个Block块,存储在不同的Datanode中,并由Namenode中的元数据记录每个Block与对应的Datanode的映射关系,客户端可以通过Namenode获得文件的元数据信息,即每个文件的每个Block所在的Datanode地址。

(2)Datanode是具体任务的执行节点,承担Worker任务。

Datanode是文件存储的基本单元,将文件的Block存储在本地文件系统中,同时保存了Block的元数据信息。接受Nmaenode统一的调度,对文件的Block块进行创建、删除和复制等操作,同时Datanode还负责接收处理客户端对文件的读/写请求。

(3)Datanode与Namenode间的交互[6]。

Namenode在每次启动系统时都会动态重建文件系统的元数据信息,会以心跳轮询集群中的Datanode节点,Datanode以心跳响应Namenode,定时向Namenode发送它所存储的文件块信息。

HDFS的体系结构如图1所示。

图1 HDFS的体系结构Fig.1 Architecture of HDFS

1.2 工作原理

HDFS是基于流数据模式访问和处理超大文件的需求而开发的,适用于一次写入、多次读取的场合。文件在HDFS中以Block的形式存储在数据节点Datanode中,默认的Block大小为64 M,复制因子是3,即同一Block会被存放在3个不同的Datanode上。客户端读取文件Block时选取离自己最近的Datanode节点进行数据读取。HDFS的工作原理如下。

1.2.1 读文件流程

(1)客户端通过RPC向HDFS的Namenode发送文件读请求;

(2)Namenode将客户端所请求的文件的Blocks所在的Datanodes地址,以及Block副本所在的地址等元数据信息返回给客户端;

(3)客户端根据Blocks所在地址与相应的Datanodes通信,读取文件数据。

1.2.2 写文件过程

(1)客户端通过RPC向HDFS的Namenode发送文件写请求,Namenode检查客户端要创建的文件是否存在,若不存在则会为文件创建一个记录,否则抛出异常;

(2)客户端开始写入文件时,会将文件切分成许多Packets,然后向Namenode申请新的Blocks,获取这些Packets及其副本所要存储的Datanodes的一个列表;

(3)客户端得到这些列表后,将Packet写入第一个Datanode中,成功后第一个Datanode再将数据传送给第二个Datanode,第二个Datanode再将数据依次写入到第三个Datanode,至此数据写入完成;

(4)写完第一个Packet后,依次循环将所有的Packets写入HDFS中。

2 HDFS安全现状研究及不足之处

2.1 基于Kerberos的HDFS安全认证机制

Hadoop在设计之初,不仅集群实体之间缺乏认证机制,而且数据传输及存储也缺乏加密机制。针对Hadoop的安全缺陷,Hadoop1.0.0版本后,引入了Kerberos认证机制,用以保证集群节点的可信性[7-8]。Kerberos是一种基于对称密钥体制的计算机网络认证协议,实现了机器级别的安全认证,也就是说在非安全网络通信环境下,某个实体可以通过Kerberos向另一个实体以一种安全的方式证明自己的身份。Kerberos的实现需要一个可信赖的第三方,这个第三方被称为密钥分发中心(KDC),它由两个相互独立的逻辑部分认证服务器(AS)和票据授权服务器(Ticket Granting Service)组成。Kerberos持有一个密钥数据库,用来记载每个Kerberos用户的密钥,这个密钥只有Kerberos用户和KDC知道,该密钥可以对网络实体与KDC的通信进行加密。而对于两个实体间的通信,KDC会为他们产生一个临时会话密钥,用来加密他们之间的交互信息。

在搭建Hadoop集群时,事先对集群中确定的机器节点由管理员手动添加到Kerberos数据库中,在KDC上分别产生KDC与各个节点的keytab文件(该文件包含了KDC和对应节点的名字,还有他们之间的密钥等信息),然后将这些keytab分发到对应的节点上。通过这些keytab文件,节点可以实现与KDC的安全通信,进而获得与KDC发放的与目标节点通信的临时密钥,最后实现被目标节点认证这一过程。

HDFS过程中基于Kerberos的认证机制如下[9-10]。

2.1.1 Client与KDC通信过程

首先,Client向KDC发送自己的身份信息,然后KDC中的Ticket Granting Service产生TGT(ticketgranting ticket),KDC将这个TGT用协议开始前Client与KDC之间的密钥K1加密后回复给Client。此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT解密,从而获得TGT(图2)。

2.1.2 Client与Namenode通信过程

(1)Client用先前得到的TGT向KDC请求Namenode服务的Ticket;

(2)KDC中的Ticket Granting Service将为客户端和Namenode之间生成一个Session Key,即K3用于Namenode和客户端之间的通信,并打包生成Ticket;

图2 Client与KDC通信过程Fig.2 Communication process of Client and KDC

(3)为了保证K3的安全性,KDC用客户端的密钥K1将K3加密,随(Ticket)K2一起返回给Client,其中K2是Namenode的密钥;

(4)Client用自己的密钥K1将(K3)K1解密,得到K3,由于Client不知道Namenode的密钥K2,所以它无法解密或算改Ticket中的信息;

(5)Client将自己的用户名、IP等打包成Authenticator用K3加密后发送给Namenode,一并发给Namenode的还有(Ticket)K2;

(6)Namenode接到客户端发来的消息后,先用自己的密钥K2解密(Ticket)K2,得到{K3,用户名,IP,地址,服务名,有效期,时间戳}这些信息。然后用得到的K3解密Authenticator={(用户名,IP)K3},再一次得到客户端的用户名和IP,比较两次得到的用户名和IP,若一致,则说明客户端是真实可靠的,而并非假冒伪造,从而验证了客户端的身份合法性,至此Client与Namenode之间的通信认证已经完成;

(7)Client获得了Namenode的安全认证后,Namenode向Client分发认证令牌Delegation Token,该令牌用于客户端与Namenode间的再次识别认证。但是Delegation Token有一定的时间期效,令牌一旦过期就要重新申请。

整个过程如图3所示。

图3 Client与Namenode通信认证过程Fig.3 Communication authentication process of Client and Namenode

2.1.3 Client与Datanode的认证过程

认证过程基本相同,因篇幅原因不再赘述。

2.2 Kerberos的缺陷分析

2.2.1 安全性缺陷分析

客户端及集群节点的密钥都存储在Kerberos的KDC密钥数据库中,如果一个合法的客户端被敌手俘获,并且攻破KDC,就能得到所有客户端及集群节点与KDC通信的密钥。那么它就可以冒充合法实体与KDC通信,进而得到与Hadoop集群服务器通信的临时会话密钥,然后对Hadoop集群服务器发起攻击。

客户端向KDC申请TGT时发送的身份信息不进行加密,因此这些信息存在被窃取、篡改等不安全因素。

Kerberos的认证过程中,两个实体之间的通信采用对称加密,消息没有相应的校验措施,某个恶意敌手,可能截获消息,进而对消息进行篡改,则接收端对接收到的消息进行解密,得到一堆无意义的不正确的明文,如果敌手还知道这两个实体的通信密钥则可以对消息进行伪造,这时接收端收到的则是伪造的消息。所以Kerberos的认证过程不能保证两个实体通信过程中所发送信息的完整性。

Kerberos方案中,客户端与Datanode之间进行文件传输时,没有考虑数据的加密处理,因此数据的传输安全没有保障。

2.2.2 效率性缺陷分析

在Hadoop集群中搭建Kerberos环境,是一个相当麻烦的工作,通常需要花费一周的时间,其过程中又总会出现各种无法预料或难以解决的错误。而且Kerberos十分复杂,一旦出现故障,要花费数周来进行维修,耗费大量的人力物力。集群中任何两个实体之间进行初次通信时都要有Kerberos的参与,这无疑降低了Hadoop集群的运作速度。

KDC成为HDFS文件系统的瓶颈。在Kerberos方案中,两个实体的身份认证,要向Kerberos的密钥分配中心KDC请求授权票据,而在Hadoop集群中,同一时间可能执行成千上万的任务,如果每个任务的执行都要使用Kerberos认证,当这些任务在一个很短的时间内同时向Kerberos服务器发送票据请求时,就会使KDC陷入瘫痪危机,进而影响系统性能。

Kerberos的认证令牌具有一定有效期,因此,Hadoop集群中主机的时钟与Kerberos服务器的时钟两者的时间相差不能超过10 min,否则认证就会失败。所以在搭建Kerberos环境时,还要额外的设置网络时间协议后台程序来保持时钟同步。

3 基于PKI的HDFS安全机制

3.1 PKI与CA证书

PKI的全称是“公钥基础设施”,即利用公钥理论和技术建立的安全服务基础设施。PKI能够为所有的网络提供加密和数字签名等密码服务以及必需的密钥和证书管理体系,因此简单来说,PKI是一种遵循既定标准的密钥管理平台。

PKI的核心是CA认证中心[11-13],PKI的一些重要功能,例如证书发放、证书更新、证书撤销和证书验证等都是通过CA实现的,其中的证书发放和数字证书管理是CA的核心功能,因此CA主要由注册服务器、证书申请受理和审核机构、认证中心服务器这三部分组成。

由于PKI不仅具有良好的跨平台性和可操作性,而且能够提供完善的信息安全服务,因此,我们提出用基于PKI的加密、数字签名、认证和数字信封等技术来构建HDFS的安全机制。

3.2 基于PKI的HDFS安全机制设计

3.2.1 HDFS认证的初始化

在集群为客户提供安全服务之前,要进行安全初始化操作:首先我们要让HDFS中的Namenode节点和Datanodes节点向CA申请合法身份证书,CA验证了Hadoop中节点的用户身份后,为其创建相应的公私钥对,并为其颁发数字证书;然后我们在每个节点创建一个配置文件,用来存储集群中所有合法节点的用户身份信息及数字证书。

在安全初始化阶段完成后,集群便可以向客户提供安全的文件服务。

3.2.2 客户端在Namenode上进行身份注册与身份注销

一个客户端若要访问Hadoop的HDFS服务,例如进行一些大型文件的存储或是读取HDFS上文件数据,那么这个客户端必须成为Hadoop集群认证的合法客户,所以客户端的第一步便是向Hadoop集群进行注册。这里我们假设客户端已经被CA认证,并从CA处获得了自己的数字证书。

客户端将自己的{用户名,IP,地址,时间戳,[(用户名,IP,地址,时间戳)hash]KSC}KPN发送给Namenode进行注册。Namenode接到客户端发来消息后用自己的私钥KSN进行第一步解密得到客户端的身份信息,然后根据客户端的身份信息,到认证中心CA下载该用户的数字证书,将客户端的身份信息及其数字证书写入到自己管理的客户配置文件中,并分发到集群中的Datanodes节点中。其中KSC为Client的私钥,KPN为Namenode的公钥。

当用户不再需要Hadoop的HDFS服务,要与Hadoop彻底断开联系时,用户可以执行注销行为,则Hadoop集群中的节点将配置文件中关于客户端的所有信息及其数字证书一并清除。

客户端注册过程如图4所示。

图4 客户端注册过程Fig.4 Registration process at Client side

3.2.3 Namenode与Datanode之间的通信认证过程

Hadoop集群启动后,Namenode要通过心跳与Datanode通信,从Datanode上收集它所存储的文件Block的元数据信息。Namenode将这些元数据信息收集来之后加载到内存之中,以便加快随后的客户端与Namenode的交互过程。这个安全认证过程如下:

(1)D→N:消息I1:{文件块信息,D的身份信息,时间戳,[(文件块信息,用户身份信息,时间戳)hash]KSD}KPN。其中KSD为D的私钥,而KPN为N的公钥。

(2)N接到消息后,用自己的私钥KSN解密消息,得到D的身份,然后用该D的公钥KPD解密数字签名得到(文件块信息,用户身份身份信息,时间戳)hash,然后对得到的文件块信息和用户身份进行hash,得到又一个数字签名,两者进行比较,若一致则验证了D身份的合法性,同时也说明消息没有被篡改。

(3)N→D:{Responde,[(Responde)hash]KSN}KPD。

(4)D用同样的方法来解开N发送来的消息,确认N身份的合法性。

过程如图5所示。

图5 Datanode与Namenode的通信认证过程Fig.5 Communication authentication process between Datanode and Namenode

3.2.4 客户端进行文件读过程中的认证与加密过程

3.2.4.1 客户端在请求文件读服务时与Namenode的安全通信过程

(1)C→N:消息I1:{用户身份身份信息,文件读服务请求,时间戳[(用户身份信息,文件读服务请求,时间戳)hash]KSC}KPN。其中KSC为Client的私钥。

(2)N接收到C发来的消息后进行解密验证,验证合格则将C所请求的文件所在的Datanode地址返回给C,并打包生成相应的数据访问令牌,一并返回给C。

N→C:消息I2:{Datanode地址,[(Datanode地址)hash]KSN}KPC,其中KPC为C的公钥;

数据访问令牌(Block Access Token):{数据块信息,数据访问权限,时间期限,[(数据块信息,数据访问令牌,时间期限)hash]KSN}KPD。

(3)C接到N发来的两个消息后,解开第一条消息,得到消息中包含的Datanode地址信息。但C也无法解密,无法伪造数据访问令牌。

上述过程如图6所示。

图6 客户端与Namenode之间的通信认证过程Fig.6 Communication authentication process between Client and Namenode

客户端得到它所请求文件所在的地址后,就可以直接与相应的Datanode通信,来获得数据。为了使客户端与Datanode的数据传输过程是安全的,我们对这个过程中传输的数据进行加密,为了避免非对称加密速度缓慢的问题,我们将基于数字信封的对称加密技术AES[12]运用到这个过程中。

3.2.4.2 客户端与Datanode安全通信过程

(1)Client向Datanode发送数据请求前,自身先产生一段对称密码K;

(2)C→D:消息I1:{(用户身份信息,对称密码K,时间戳),[(用户身份信息,对称密码K,时间戳)hash]KSC}KPD;数据访问令牌;

(3)D接收到C发过来的数据后,先解开数字令牌,验证C数据权限,若权限合法,再解开第二条消息验证客户端身份并获得对称密码;

(4)D→C:{数据}K。

过程如图7所示。

图7 客户端与Datanode之间的安全通信过程Fig.7 Secure communication process between Client and Datanode

3.2.5 客户端进行文件写过程中的认证与加密过程

这个过程和上述文件读过程开头部分基本一致,只是在客户端将数据块写入第一个Datanode后,第一个Datanode要继续将文件块写入到第二个作为备份的Datanode节点。而后第二个节点要继续将数据块写入第三个备份的Datanode节点(默认Hadoop的备份节点是3)。下面是文件写与文件读过程中不一样的步骤。

(1)客户端首先要向第一个节点Datanode1写入数据,同样自己先产生一段对称密码K;

(2)C→D1:消息I1:{(C用户身份,对称密码K,时间戳),[(用户身份,对称密码K,时间戳)hash]KSC}KPD1;{数据}K;

(3)D1接收到C发来的消息,解密第一条消息,验证客户端身份并得到对称密码K,然后打包消息I2:{(D1用户身份,对称密码K,时间戳),[(D1用户身份,对称密码K,时间戳)hash]KSD1}KPD2,然后将打包好的消息I1同C发送过来的{数据}K一起发往D2;

(4)D2将数据发往D3与上述过程一致。

过程如图8所示。

4 本方案的安全性和效率分析

下面我们从安全性和效率性两方面对本方案和Kerberos方案进行对比分析。

4.1 安全性分析

CA作为独立的第三方认证机构作,并没有像Kerberos那样与Hadoop集群紧密联系在一起,因此Hadoop自身的安全性不像Kerberos认证那样依赖于这个认证机构。从客户端的注册过程我们可以知道,客户端一旦注册成功,则Hadoop集群中的每个节点都保存有它的数字证书,所以如果CA认证中心出现短暂的事故,则Hadoop集群中正在运行的作业仍然可以继续使用CA先前颁发的数字证书,而不必立刻停掉这些作业。这相较于Kerberos是很大的一个提高。

在本文提出的认证过程中,HDFS中的两个实体间进行消息传递时的数字签名机制能够保证所传输的信息的源节点认证性和完整性,这一点Kerberos无法做到。

HDFS在文件传输阶段使用数字信封技术,客户端产生一个对称密钥,并用客户端的私钥KSC对这个对称密钥进行加密,相同密钥长度,非对称加密发放的抗攻击性要比其他加密方法强很多倍,这保证了对称密钥在传输过程中的安全性。而文件数据则用此对称密钥进行AES加密,保证了数据传输过程中的安全性。

HDFS的文件服务过程中,数字证书认证可产生可靠的数字签名,使这个过程中的客户端及服务端都对自己发送的消息数据具有不可抵赖性。而Kerberos方案则无法做到这一点。

4.2 效率分析

前面在Kerberos的缺陷分析中我们知道,Kerberos的认证环境搭建十分麻烦,且极易出错,相比较而言Hadoop集群中节点数字证书的的申请则要快捷方便许多,CA认证中心能为客户提供24×7不间断的服务。

HDFS采用数字证书认证时,两个实体通信认证的过程中只需要用到CA中心颁发的证书,而不需要CA中心的再次参与,因此即使集群中的文件任务再多,也不存在像Kerberos认证时的KDC瓶颈问题,且用数字证书的认证只有一个证书申请过程,这要比Kerberos的三步认证简洁很多。

本文所提的方案在客户端与Datanode进行数据传输阶段采用对称加密方法AES,AES的加密方法与传统的加密方法相比具有速度快、适应性强且灵活性高等特点,从而保证了大规模数据传输的效率。

5 结语

Hadoop作为目前云计算的的热门技术,有着不可限量的应用前景,而其安全问题的重要性也随着Hadoop的推广而愈加突出,HDFS作为Hadoop的底层存储项目,其自身的安全也是Hadoop集群安全的基础,本文通过分析HDFS文件服务过程中存在的认证问题及数据传输过程中的安全性问题,并总结目前所采用的Kerberos解决方案及其缺陷,提出了一种基于PKI的更加快捷、安全的数字证书认证机制,并在数据传输阶段采用基于数字信封的AES对称加密,这些措施极大地提高了HDFS的安全性和效率性。

当然本文还有一些未解决的问题,例如HDFS中的文件访问控制策略的研究,以及Hadoop中Mapreduce中的安全机制研究等,这些都是后续需要解决的问题。

[1]皮丽华.不可盲崇拜Hadoop警惕安全性漏洞[EB/OL].[2013-04-15]. http://tech.it168.com/a2011/1208/1285/000001285780.shtml.

[2]刘琨,李爱菊,董龙江.基于hadoop的云存储的研究及实现[J].微计算机信息,2011,27(7):220-221.

[3]O'MALLEY O,ZHANG K,RADIA S,et al.Hadoop security design[EB/OL].[2013-04-15]. http://www.docin.com/p-663863857.html.

[4]WHITE T.Hadoop权威指南[M].北京:清华大学出版社,2010.

[5]HOLMESA.Hadoop in practice[M].US:Manning Publications Co.,2012.

[6]陆嘉恒.Hadoop实战[M].北京:机械工业出版社,2012.

[7]柴黄琪,苏成.基于HDFS的安全机制设计[J].计算机安全,2010(12):22-25.

[8]马媛.基于Hadoop的云计算平台安全机制研究[J].信息安全与通信保密,2012(6):89-92

[9]BECHERER A.Hadoop security design just addkerberos?Really?[EB/OL].[2013-04-18]. http://media.blackhat.com/bh-us-10/whitepapers/Becherer/BlackHat-USA-2010-Becherer-Andrew-Hadoop-Security-wp.pdf.

[10]The Apache Software Foundation.Service level authorization guide[EB/OL].[2013-04-18]. http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ServiceLevelAuth.html#Service_Level_Authorization_Guide.

[11]斯坦普.信息安全原理与实践[M].北京:清华大学出版社,2013.

[12]谢冬青.PKI原理与技术[M].北京:清华大学出版社,2004.

[13]宁宇鹏,陈昕.PKI技术[M].北京:机械工业出版社,2004.

PKI based HDFS authentication and secure transmission mechanism

LI Yan-gai1,2,ZHAO Hua-wei1*
(1.School of Computer Science and Technology,Shandong University of Finance and Economics,Jinan 250014,China;2.Shandong Zhongfu Information Industry Co.,Ltd.,Jinan 250101,China)

We detailedly analyze existing Kerberos scheme to solve the authentication andsecure transmission in the process of file service of Hadoop DistributedFile System(HDFS),a core sub-project of Hadoop.We then generalize the negatives of its security andefficiency.We further app ly PKI baseddig ital certificate authentication anddigital envelop based AES symmetric enc ryp tion to the security mechanism of HDFS.Analysis shows that the approach can provide a safer andmore efficient solution for HDFS service,as compared with Kerberos.

Hadoop;security of HDFS;Kerberos;PKI

TP393.08

A

1002-4026(2014)05-0033-09

10.3976/j.issn.1002-4026.2014.05.007

2014-05-21

山东省自然科学基金(ZR2011FL027);济南市科技发展计划

李延改(1989-),女,硕士研究生,研究方向为信息安全。

*通讯作者,赵华伟,副教授,博士/博士后。Email:1056846736@qq.com

猜你喜欢
密钥集群客户端
密码系统中密钥的状态与保护*
海上小型无人机集群的反制装备需求与应对之策研究
如何看待传统媒体新闻客户端的“断舍离”?
TPM 2.0密钥迁移协议研究
一种无人机集群发射回收装置的控制系统设计
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
一种对称密钥的密钥管理方法及系统
Python与Spark集群在收费数据分析中的应用
勤快又呆萌的集群机器人