一种基于公钥算法和SSL协议的多集群Hadoop系统安全优化方法
技术领域
本发明涉及一种优化方法,具体涉及一种基于公钥算法和SSL协议的多集群Hadoop系统安全优化方法。
背景技术
Hadoop系统是大数据处理的一个有效工具。早期的Hadoop系统主要运行于单个集群环境,后来的版本开始支持运行于多个集群环境。多集群Hadoop系统是一种跨越多个集群环境运行的扩展版本,如图1所示。JobTracker是MapReduce框架的主服务器,负责管理MapReduce框架执行作业的控制流、监控所有执行中任务的健康状态、检测并重新调度失效的任务直到一个作业的所有任务完成。JobTracker从它的用户侧接收新的作业,然后把作业划分为更小的任务并发送给TaskTracker。TaskTracker是JobTracker的动力引擎。每个TaskTracker都有一个特定的计数槽,来表示其被分配的任务数。TaskTracker通过一个心跳消息定期向JobTracker报告健康状态,这个心跳消息包含所有执行中任务的当前进度和TaskTracker的可用数目。作为回应,JobTracker发送新的指令到TaskTracker,这些指令包括新分配的任务和需执行的任务。TaskTracker的职责是监控执行中任务的健康状态、管理自己的日志文件、检测失效的任务并向JobTracker报告相应信息。
总体而言,多集群Hadoop系统维持了早期Hadoop系统的主节点/从节点架构,很好地实现了MapReduce框架。其中,主节点是多集群Hadoop系统架构的中心实体,主要负责管理所有可用文件的元数据和接收用户提交的作业,将作业划分为更小的多个任务,并最终分配任务到从节点,而从节点主要负责执行主节点所分配的任务。
在安全防护机制方面,单集群Hadoop系统原有的用户身份认证和作业提交机制主要是为运行于单个集群环境设计的,没有考虑到运行于多个集群环境的情况。这些机制要求每个用户与每个集群之间建立一个单独连接,因此并不适合诸如网格这样包含多个集群的大规模分布式环境。此外,当将单集群Hadoop系统运行于多个集群环境时,其安全防护机制还暴露出了其它许多不足之处,包括众多从节点的用户重复登录和身份认证、系统资源的滥用和误用、计算节点难以动态调整、网络攻击防护不力等问题。例如,在单集群Hadoop系统的安全机制中,要求一个用户必须登录所有集群一次以完成身份认证,才能访问所有集群的资源。这对用户来说,是一种繁琐乏味和降低效率的事情。因此,需要有一种更为通用的整体解决方案来弥补单集群Hadoop系统安全机制的不足并减少用户的操作负担。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于公钥算法和SSL协议的多集群Hadoop系统安全优化方法,能够有效地实现跨越多个集群环境运行的Hadoop系统的用户身份认证和网络攻击防护,弥补了单集群Hadoop系统原有安全机制运行于多个集群环境时的不足之处,与单集群Hadoop系统原有安全防护机制共同构成了多集群Hadoop系统的完整安全防护。
为了实现上述发明目的,本发明采取如下技术方案:
本发明提供一种基于公钥算法和SSL协议的多集群Hadoop系统安全优化方法,所述方法包括以下步骤:
步骤1:用户登录主节点时对用户进行身份信息认证;
步骤2:主节点向CA服务器申请并获得代理证书;
步骤3:主节点创建从节点列表,并确定主节点身份信息;
步骤4:主节点与从节点之间进行双向身份认证;
步骤5:多集群Hadoop系统执行用户提交的作业;
步骤6:终止用户提交的作业。
所述步骤1具体包括以下步骤:
步骤1-1:用户向多集群Hadoop系统提交作业时,输入用户身份信息{Username,Password}单点登录到主节点;
步骤1-2:多集群Hadoop系统收到用户身份信息{Username,Password}后,主节点搜索自身的用户身份信息库,检查该用户是否存在;如果用户名Username和口令Password正确,并且用户有权访问多集群Hadoop系统的资源,则表明用户通过主节点的身份信息认证,进入到步骤1-3;否则,表明用户未通过主节点的身份信息认证,主节点将向用户发送错误信息作为反馈;
步骤1-3:用户通过主节点的身份认证后,提交作业到多集群Hadoop系统,主节点接收用户提交作业,进行初始化并为用户创建用户实例;然后通知CA服务器为该用户实例颁发代理证书。
所述步骤2具体包括以下步骤:
步骤2-1:利用SSL协议完成主节点和CA服务器双向身份认证,建立经过加密的安全连接;
步骤2-2:主节点随机生成主节点密钥对{MN_Pub,MN_Prv},主节点保留主节点私钥MN_Prv,并将主节点公钥MN_Pub发送给CA服务器,向CA服务器发送为用户实例申请代理证书的请求;
步骤2-3:CA服务器收到主节点发送的主节点公钥MN_Pub后,生成随机信息CA_Rand,并为主节点公钥MN_Pub设定存活周期;CA服务器使用数字签名为主节点的当前请求颁发代理证书,并发送给主节点;
步骤2-4:主节点收到包含有随机信息CA_Rand的代理证书后,断开与CA服务器的SSL连接。
所述代理证书包括代理证书的存活周期、CA服务器的身份ID、随机信息CA_Rand、主节点公钥MN_Pub及MN_Pub的存活周期。
所述步骤3包括以下步骤:
步骤3-1:主节点与从节点之间采用SSL协议建立安全连接;
步骤3-2:主节点创建用户实例的用户会话U_Session,有:
U_Session=MD5(Username+CA_Rand)
用户实例的用户会话U_Session与主节点公钥MN_Pub具有相同的存活周期,均由CA服务器指定,并由代理证书签字;
步骤3-3:根据用户对从节点的访问权限,主节点为用户实例创建从节点列表;
步骤3-4:利用主节点私钥MN_Prv对随机信息CA_Rand和用户实例的用户会话U_Session分别进行加密,得到主节点私钥加密的随机信息MN_Rand和主节点私钥加密的用户会话MN_U_Session,有:
MN_Rand=PBA.encrypt(CA_Rand,MN_Prv)
MN_U_Session=PBA.encrypt(U_Session,MN_Prv)
于是,得到包括代理证书、主节点私钥加密的随机信息MN_Rand和主节点私钥加密的用户会话MN_U_Session的主节点身份信息。
所述步骤4中,主节点与从节点之间进行双向身份认证,包括以下步骤:
步骤4-1:第一次握手,从节点对主节点进行身份认证;
步骤4-2:第二次握手,主节点对从节点进行身份认证;
步骤4-3:第三次握手,主节点发送确认信息给从节点。
所述步骤4-1包括以下步骤:
步骤4-1-1:主节点发送主节点身份信息到从节点,从节点获得封装在代理证书中的CA服务器的身份ID,并检查CA服务器的身份ID是否正确;如正确,进入步骤4-1-2,否则,表明主节点未通过从节点的身份认证;
步骤4-1-2:从节点从代理证书中获得主节点公钥MN_Pub,并利用主节点公钥MN_Rand对主节点私钥加密的随机信息MN_Rand进行解密,得到经过主节点私钥加密并通过主节点公钥解密的随机信息CA_Rand′,有:
CA_Rand′=PBA.decrypt(MN_Rand,MN_Pub)
经过主节点私钥加密并通过主节点公钥解密的随机信息CA_Rand′和封装在代理证书中的随机信息CA_Rand进行比较,并检查代理证书的存活周期和MN_Pub的存活周期;如果代理证书的存活周期和MN_Pub的存活周期检查均通过,表明主节点通过从节点的身份认证,进入步骤4-1-3,如果代理证书的存活周期和MN_Pub的存活周期检查任一未通过,表明主节点未通过从节点的身份认证,从节点反馈拒绝消息给主节点;
步骤4-1-3:从节点将发送表明主节点通过身份认证的确认消息给主节点,然后利用主节点公钥MN_Pub对主节点私钥加密的用户会话MN_U_Session进行解密,获取经过主节点私钥加密并通过主节点公钥解密的用户会话U_Session′,有:
U_Session′=PBA.decrypt(MN_U_Session,MN_Pub)
经过主节点私钥加密并通过主节点公钥解密的用户会话U_Session′、主节点公钥MN_Pub、代理证书、U_Session′的存活周期、MN_Pub的存活周期和代理证书的存活周期均被存储在从节点上,直到收到主节点发来的作业完成消息或左右终止消息,从节点才删除上述信息。
所述步骤4-2包括以下步骤:
步骤4-2-1:从节点随机生成从节点密钥对{SN_Pub,SN_Prv},利用从节点私钥SN_Prv对随机信息CA_Rand和用户实例的用户会话U_Session分别进行加密,得到从节点私钥加密的随机信息SN_Rand和从节点私钥加密的用户会话SN_U_Session,有:
SN_Rand=PBA.encrypt(CA_Rand,SN_Prv)
SN_U_Session=PBA.encrypt(U_Session,SN_Prv)
于是得到包括CA服务器的身份ID、从节点公钥SN_Pub和SN_Pub的存活周期的从节点证书,所述从节点证书由CA服务器颁发;
步骤4-2-2:从节点采用对称加密算法{SCA,SC_Key}实现主节点与从节点之间的数据加密传输,其中SCA为对称加密算法,SC_Key为该对称加密算法的密钥;
从节点利用从节点私钥SN_Prv对对称加密算法{SCA,SC_Key}进行加密得到从节点私钥加密的对称加密算法SCA_SN,并利用主节点公钥MN_Pub对从节点私钥加密的SCA_SN进行加密得到主节点公钥和从节点私钥双重加密的对称加密算法SCA_Check,有:
SCA_SN=PBA.encrypt({SCA,SC_Key},SN_Prv)
SCA_Check=PBA.encrypt(SCA_SN,MN_Pub)
步骤4-2-3:主节点收到从节点发来的从节点证书、从节点私钥加密的随机信息SN_Rand、从节点私钥加密的用户会话SN_U_Session、主节点公钥和从节点私钥双重加密的对称加密算法SCA_Check后,主节点开始验证从节点证书中的CA服务器的身份ID,并利用从节点证书中的从节点公钥SN_Pub解密从节点私钥加密的随机信息SN_Rand,如果从节点私钥加密的随机信息SN_Rand的解密信息不同于封装在代理证书中的随机信息CA_Rand,表明从节点未通过主节点的身份认证,主节点断开与该从节点之间的连接;否则,表明从节点通过主节点的身份认证,进入步骤4-2-4;
步骤4-2-4:主节点利用从节点公钥SN_Pub对从节点私钥加密的用户会话SN_U_Session进行解密以获取经过从节点私钥加密并通过从节点公钥解密的用户会话U_Session″;然后对获取的U_Session″进行验证,如果U_Session″与用户实例的用户会话U_Session不一致,主节点再次发送主节点私钥加密的用户会话MN_U_Session到从节点,并要求从节点确认和重传主节点私钥加密的用户会话MN_U_Session和从节点私钥加密的用户会话SN_U_Session,重复上述操作,如果U_Session″超过3次未通过验证,则主节点断开从节点的连接;如果U_Session″通过验证,主节点采用主节点私钥MN_Prv对主节点公钥和从节点私钥双重加密的对称加密算法SCA_Check解密得到SCA_SN′,再利用从节点公钥SN_Pub对SCA_SN′进行解密得到对称加密算法{SCA,SC_Key},表示为:
SCA_SN′=PBA.decrypt(SCA_Check,MN_Prv)
{SCA,SC_Key}=PBA.decrypt(SCA_SN′,SN_Pub)
所述步骤4-3中,在第三次握手中主节点发送确认信息给从节点,该确认信息使用对称加密算法{SCA,SC_Key}进行加密,此时主节点与从节点之间完成了双向身份认证。
所述步骤5中,主节点将用户实例的用户会话U_Session作为身份认证信息以为从节点分配任务,从节点将在执行任务前,检查U_Session的存活周期;如果用户实例的用户会话U_Session过期,从节点要求主节点更新U_Session的存活周期,主节点申请新的代理证书并直接发送给从节点,在接收到新的代理证书后,从节点更新U_Session的存活周期,并执行任务。
所述步骤6中,终止用户提交的作业分为以下两种情况:
(1)当从节点上的所有任务执行完成时,用户提交相应的活跃作业被终止;
主节点向用户发送作业执行结果,并同时向所有参与作业执行的从节点发送作业完成消息,收到作业完成消息的从节点删除用户实例的用户会话U_Session、代理证书和对称加密算法{SCA,SC_Key};
(2)当从节点上的所有任务发生造成任务不能再被执行的错误时,用户提交相应的活跃作业被终止;
主节点向用户发送有关错误的信息,并同时向所有参与作业执行的从节点发送作业终止消息,收到作业终止消息的从节点终止作业的当前任务,并断开与主节点的连接,同时主节点删除用户实例、用户实例的用户会话U_Session、代理证书和对称加密算法{SCA,SC_Key},并断开与从节点的连接。
与现有技术相比,本发明的有益效果在于:
本发明提供的基于公钥算法和SSL协议的多集群Hadoop系统安全优化方法,在不影响单集群Hadoop系统原有安全机制的情况下,能够有效地实现跨越多个集群环境运行的Hadoop系统的用户身份认证和网络攻击防护,弥补了单集群Hadoop系统原有安全机制运行于多个集群环境时的不足之处,与单集群Hadoop系统原有安全防护机制共同构成了多集群Hadoop系统的完整安全防护系统。
附图说明
图1是现有技术中多集群Hadoop系统的体系结构示意图;
图2是本发明实施例中多集群Hadoop系统的安全优化方法示意图;
图3是本发明实施例中多集群Hadoop系统的安全优化方法流程图;
图4是本发明实施例中主节点与从节点之间进行双向身份认证示意图;
图5是本发明实施例中多集群Hadoop系统的安全优化方法实现图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
本发明提出了一种基于公钥算法和SSL协议的多集群Hadoop系统安全优化方法,以解决上述背景技术中的问题。下面是本发明所提出的安全优化方法涉及到的一些术语:
(1)用户实例(user instance):用户实例是主节点(master node)为拥有活跃作业(activejob)的用户而创建的一个对象,并在用户的活跃作业终止后由主节点删除。用户实例与相应用户的身份和作业信息以及从节点(slave node)的认证过程相关。任何两个不同用户的用户实例都是独立的,但是对于拥有多个活跃作业的同一用户而言,其所有活跃作业共享同一用户实例。如果某个用户登出,但是多集群Hadoop系统中仍有该用户的活跃作业,则相应用户实例不会被删除,此即为用户活跃作业的“离线执行”模式。
(2)代理证书(proxy credential)和从节点证书(slave credential):代理证书和从节点证书是由同一认证机构(certification authority,CA)颁发的两种证书。代理证书用于主节点(实际上是主节点维护的用户实例)到从节点的身份认证,每个用户实例对应一个代理证书。在一个用户实例被一个从节点身份认证后,两者之间将建立一个安全连接并且不再需要代理证书。因此,代理证书属于一次使用,而且只有很短的存活周期来保护身份认证过程免遭中间人(man-in-the-middle,MITM)攻击和回放(replay)攻击。
(3)用户会话(user session):用户会话在用户实例身份认证完成后,充当用户实例的身份信息。因此,一个用户会话与相应的用户实例具有相同的存活周期。
(4)CA服务器(CA Server):CA服务器是一个颁发代理证书和从节点证书的重要组件。由于多集群Hadoop系统的底层文件系统采用的是Globus安全基础设施(Globus securityinfrastructure,GSI)并且已经拥有一个CA服务器,因此本发明所提出的安全优化方法直接使用多集群Hadoop系统的底层文件系统的CA服务器作为CA服务器。
本发明所提出的安全优化方法采用数字签名经常使用的公钥加密算法。为了方便描述,使用PBA表示公钥加密算法,其加密过程和解密过程可以表示为:
加密过程:PBA.encrypt(m,k),其中m为被加密信息,k为私钥或公钥;
解密过程:PBA.decrypt(m,k),其中m为被解密信息,k为私钥或公钥。
图2展示了本发明所提出的安全优化方法的结构。该安全优化方法在不改变主节点/从节点架构的情况下,对单集群Hadoop系统原有的安全机制进行扩展,增加额外的认证证书、加密算法和安全连接协议来进行通信各方的身份认证、建立安全连接、传输加密数据和执行作业任务,以完善多集群Hadoop系统的安全防护机制。
如图3,本发明提供一种基于公钥算法和SSL协议的多集群Hadoop系统安全优化方法,所述方法包括以下步骤:
步骤1:用户登录主节点时对用户进行身份信息认证;
步骤2:主节点向CA服务器申请并获得代理证书;
步骤3:主节点创建从节点列表,并确定主节点身份信息;
步骤4:主节点与从节点之间进行双向身份认证;
步骤5:多集群Hadoop系统执行用户提交的作业;
步骤6:终止用户提交的作业。
所述步骤1具体包括以下步骤:
步骤1-1:用户向多集群Hadoop系统提交作业时,输入用户身份信息{Username,Password}单点登录到主节点;
步骤1-2:多集群Hadoop系统收到用户身份信息{Username,Password}后,主节点搜索自身的用户身份信息库,检查该用户是否存在;如果用户名Username和口令Password正确,并且用户有权访问多集群Hadoop系统的资源,则表明用户通过主节点的身份信息认证,进入到步骤1-3;否则,表明用户未通过主节点的身份信息认证,主节点将向用户发送错误信息作为反馈;
步骤1-3:用户通过主节点的身份认证后,提交作业到多集群Hadoop系统,主节点接收用户提交作业,进行初始化并为用户创建用户实例;然后通知CA服务器为该用户实例颁发代理证书。如果当用户通过身份认证登录到主节点时,用户实例已经存在,这意味着用户实例处于离线执行模式。此时,主节点只为用户显示活跃作业的当前状态,而不执行进一步的操作。
所述步骤2具体包括以下步骤:
步骤2-1:利用SSL协议完成主节点和CA服务器双向身份认证,建立经过加密的安全连接。由于多集群Hadoop系统运行于通过公众网互联的大规模分布式环境,并采用普通文本来传输身份认证等敏感信息,因此需要所有连接都是安全的。SSL(Secure Sockets Layer,安全套接层)协议是一种可供选择的安全连接机制,本步骤采用SSL协议来提供安全连接。在SSL连接建立期间,主节点充当SSL连接的客户端,而CA服务器充当SSL连接的服务器端。
步骤2-2:主节点随机生成主节点密钥对{MN_Pub,MN_Prv},主节点保留主节点私钥MN_Prv,并将主节点公钥MN_Pub发送给CA服务器,向CA服务器发送为用户实例申请代理证书的请求;
步骤2-3:CA服务器收到主节点发送的主节点公钥MN_Pub后,生成随机信息CA_Rand,并为主节点公钥MN_Pub设定存活周期;CA服务器使用数字签名为主节点的当前请求颁发代理证书,并发送给主节点;代理证书包括代理证书的存活周期、CA服务器的身份ID、随机信息CA_Rand、主节点公钥MN_Pub及MN_Pub的存活周期。主节点随机生成的公钥MN_Pub和CA服务器生成的随机信息CA_Rand,确保了代理证书的唯一性。随机信息CA_Rand还会用于实现主节点与从节点之间的双向身份认证。
步骤2-4:主节点收到包含有随机信息CA_Rand的代理证书后,断开与CA服务器的SSL连接。
所述步骤3包括以下步骤:
步骤3-1:主节点与从节点之间采用SSL协议建立安全连接;
步骤3-2:主节点创建用户实例的用户会话U_Session,该用户会话使用Username和CA_Rand的MD5哈希值来确保自身的唯一性,并保证了从节点上的用户隐私问题:具体有:
U_Session=MD5(Username+CA_Rand)
用户实例的用户会话U_Session与主节点公钥MN_Pub具有相同的存活周期,均由CA服务器指定,并由代理证书签字;
步骤3-3:根据用户对从节点的访问权限,主节点为用户实例创建从节点列表;在接下来的操作中,主节点将只向列表中的从节点分配任务。这种机制能够确保用户只能访问具有访问权限的从节点,从而避免多集群Hadoop系统资源的滥用或误用;
步骤3-4:利用主节点私钥MN_Prv对随机信息CA_Rand和用户实例的用户会话U_Session分别进行加密,得到主节点私钥加密的随机信息MN_Rand和主节点私钥加密的用户会话MN_U_Session,有:
MN_Rand=PBA.encrypt(CA_Rand,MN_Prv)
MN_U_Session=PBA.encrypt(U_Session,MN_Prv)
于是,得到包括代理证书、主节点私钥加密的随机信息MN_Rand和主节点私钥加密的用户会话MN_U_Session的主节点身份信息。
如图4,所述步骤4中,主节点与从节点之间进行双向身份认证,包括以下步骤:
步骤4-1:第一次握手,从节点对主节点进行身份认证;
步骤4-2:第二次握手,主节点对从节点进行身份认证;
步骤4-3:第三次握手,主节点发送确认信息给从节点。
所述步骤4-1包括以下步骤:
步骤4-1-1:主节点发送主节点身份信息到从节点,从节点获得封装在代理证书中的CA服务器的身份ID,并检查CA服务器的身份ID是否正确;如正确,进入步骤4-1-2,否则,表明主节点未通过从节点的身份认证;
步骤4-1-2:从节点从代理证书中获得主节点公钥MN_Pub,并利用主节点公钥MN_Rand对主节点私钥加密的随机信息MN_Rand进行解密,得到经过主节点私钥加密并通过主节点公钥解密的随机信息CA_Rand′,有:
CA_Rand′=PBA.decrypt(MN_Rand,MN_Pub)
经过主节点私钥加密并通过主节点公钥解密的随机信息CA_Rand′和封装在代理证书中的随机信息CA_Rand进行比较,并检查代理证书的存活周期和MN_Pub的存活周期;如果代理证书的存活周期和MN_Pub的存活周期检查均通过,表明主节点通过从节点的身份认证,进入步骤4-1-3,如果代理证书的存活周期和MN_Pub的存活周期检查任一未通过,表明主节点未通过从节点的身份认证,从节点反馈拒绝消息给主节点;
步骤4-1-3:从节点将发送表明主节点通过身份认证的确认消息给主节点,然后利用主节点公钥MN_Pub对主节点私钥加密的用户会话MN_U_Session进行解密,获取经过主节点私钥加密并通过主节点公钥解密的用户会话U_Session′,有:
U_Session′=PBA.decrypt(MN_U_Session,MN_Pub)
经过主节点私钥加密并通过主节点公钥解密的用户会话U_Session′、主节点公钥MN_Pub、代理证书、U_Session′的存活周期、MN_Pub的存活周期和代理证书的存活周期均被存储在从节点上,直到收到主节点发来的作业完成消息或左右终止消息,从节点才删除上述信息。
所述步骤4-2包括以下步骤:
步骤4-2-1:从节点随机生成从节点密钥对{SN_Pub,SN_Prv},利用从节点私钥SN_Prv对随机信息CA_Rand和用户实例的用户会话U_Session分别进行加密,得到从节点私钥加密的随机信息SN_Rand和从节点私钥加密的用户会话SN_U_Session,有:
SN_Rand=PBA.encrypt(CA_Rand,SN_Prv)
SN_U_Session=PBA.encrypt(U_Session,SN_Prv)
于是得到包括CA服务器的身份ID、从节点公钥SN_Pub和SN_Pub的存活周期的从节点证书,所述从节点证书由CA服务器颁发;
步骤4-2-2:从节点采用对称加密算法{SCA,SC_Key}实现主节点与从节点之间的数据加密传输,其中SCA为对称加密算法,SC_Key为该对称加密算法的密钥;
从节点利用从节点私钥SN_Prv对对称加密算法{SCA,SC_Key}进行加密得到从节点私钥加密的对称加密算法SCA_SN,并利用主节点公钥MN_Pub对从节点私钥加密的SCA_SN进行加密得到主节点公钥和从节点私钥双重加密的对称加密算法SCA_Check,有:
SCA_SN=PBA.encrypt({SCA,SC_Key},SN_Prv)
SCA_Check=PBA.encrypt(SCA_SN,MN_Pub)
步骤4-2-3:主节点收到从节点发来的从节点证书、从节点私钥加密的随机信息SN_Rand、从节点私钥加密的用户会话SN_U_Session、主节点公钥和从节点私钥双重加密的对称加密算法SCA_Check后,主节点开始验证从节点证书中的CA服务器的身份ID,并利用从节点证书中的从节点公钥SN_Pub解密从节点私钥加密的随机信息SN_Rand,如果从节点私钥加密的随机信息SN_Rand的解密信息不同于封装在代理证书中的随机信息CA_Rand,表明从节点未通过主节点的身份认证,主节点断开与该从节点之间的连接;否则,表明从节点通过主节点的身份认证,进入步骤4-2-4;
步骤4-2-4:主节点利用从节点公钥SN_Pub对从节点私钥加密的用户会话SN_U_Session进行解密以获取经过从节点私钥加密并通过从节点公钥解密的用户会话U_Session″;然后对获取的U_Session″进行验证,如果U_Session″与用户实例的用户会话U_Session不一致,主节点再次发送主节点私钥加密的用户会话MN_U_Session到从节点,并要求从节点确认和重传主节点私钥加密的用户会话MN_U_Session和从节点私钥加密的用户会话SN_U_Session,重复上述操作,如果U_Session″超过3次未通过验证,则主节点断开从节点的连接;如果U_Session″通过验证,主节点采用主节点私钥MN_Prv对主节点公钥和从节点私钥双重加密的对称加密算法SCA_Check解密得到SCA_SN′,再利用从节点公钥SN_Pub对SCA_SN′进行解密得到对称加密算法{SCA,SC_Key},表示为:
SCA_SN′=PBA.decrypt(SCA_Check,MN_Prv)
{SCA,SC_Key}=PBA.decrypt(SCA_SN′,SN_Pub)
所述步骤4-3中,在第三次握手中主节点发送确认信息给从节点,该确认信息使用对称加密算法{SCA,SC_Key}进行加密,此时主节点与从节点之间完成了双向身份认证。
所述步骤5中,主节点将用户实例的用户会话U_Session作为身份认证信息以为从节点分配任务,从节点将在执行任务前,检查U_Session的存活周期;如果用户实例的用户会话U_Session过期,从节点要求主节点更新U_Session的存活周期,主节点申请新的代理证书并直接发送给从节点,在接收到新的代理证书后,从节点更新U_Session的存活周期,并执行任务。
所述步骤6中,终止用户提交的作业分为以下两种情况:
(1)当从节点上的所有任务执行完成时,用户提交相应的活跃作业被终止;
主节点向用户发送作业执行结果,并同时向所有参与作业执行的从节点发送作业完成消息,收到作业完成消息的从节点删除用户实例的用户会话U_Session、代理证书和对称加密算法{SCA,SC_Key};
(2)当从节点上的所有任务发生造成任务不能再被执行的错误时,用户提交相应的活跃作业被终止;
主节点向用户发送有关错误的信息,并同时向所有参与作业执行的从节点发送作业终止消息,收到作业终止消息的从节点终止作业的当前任务,并断开与主节点的连接,同时主节点删除用户实例、用户实例的用户会话U_Session、代理证书和对称加密算法{SCA,SC_Key},并断开与从节点的连接。
实施例
本发明所提出的安全优化方法被作为一个单独插件,以单点登录的方式在多集群Hadoop系统中得到实现,并且可以被多集群Hadoop系统的SHELL设备启动。所开发的原型系统能够根据用户的需要灵活地集成到多集群Hadoop系统或从多集群Hadoop系统中卸载。本发明所提出的安全优化方法的原型系统包括6个主要模块:通用模块、安全模块、用户管理模块、CA节点模块、主节点模块和从节点模块。图5显示了各个模块之间的交互情况。每个模块提供特定的功能,其中:
(1)通用模块是安全优化方法的函数库,为其它模块提供所需的基本接口,包括事件监听器、事件处理器和随机消息生成器等;
(2)安全模块定义和实现了安全优化方法使用的各种安全机制,包括在代理证书分配和握手通信阶段所使用的消息协议;
(3)用户模块实现了所有用户相关的操作和功能,包括用户信息、用户会话和用户实例等。另外,该模块还提供用户信息集中管理和作业提交应用程序接口等功能;
(4)CA节点模块负责颁发代理证书和从节点证书;
(5)主节点模块提供主节点所有的功能,包括HTTP服务、用户和作业集中管理、维护经过认证的用户列表和运行作业调度器。该模块的另一个功能是申请代理证书,实现与从节点的身份认证和建立到从节点的安全连接;
(6)从节点模块主要负责与主节点的身份认证、执行被分配的MapReduce任务、维护代理证书列表以管理任务的认证信息。
所实现的原型系统中最重要的模块是安全模块,包含了各种认证证书的登录和验证功能的实现。在本模块中,主节点和从节点之间的代理证书请求和分配消息以及三次握手消息都被封装成特定协议,并被实现为一系列的对象。在这种方式中,可以很容易地管理通信各方之间的消息。使用系列协议的另一个好处是转换消息为字节流,而字节流是通过网络传输数据的唯一方式。本模块中的代理证书和从节点证书是整个安全优化方法的核心,证书信息对证书拥有者和授权者是可见的,但是在CA服务器颁发后不可修改,因为这是数字证书的固有属性。
用户管理模块提供了用户信息的管理接口,这些信息包括用户档案(用户名、口令和权限列表)、用户实例和用户会话。为了实现单点登录和基于Web服务方式管理用户信息,本模块定义了一个WebUser类以维护用户信息。当用户利用正确的用户名和口令通过Web用户界面登录多集群Hadoop系统时,用户身份得以认证。
下面分析本发明所提出的安全优化方法是如何完整地形成多集群Hadoop系统的安全机制和有效地保护多集群Hadoop系统免遭不同的网络攻击。
(1)安全优化方法的单点登录机制
本发明所提出的安全优化方法的一个主要目标是利用单点登录支持用户提交作业到多集群Hadoop系统。通过建立包含用户名和口令等在内的用户信息库,本发明所提出的安全优化方法允许主节点对登录到自身的用户验证用户名和口令等信息。如果用户所输入的用户名和口令正确,则用户通过了主节点的身份认证。在用户通过主节点的身份认证之后,主节点将会与该用户有权访问的所有从节点进行双向身份认证。一旦主节点与从节点之间通过双向身份认证和建立安全连接,则通过主节点身份认证的用户可以自由地访问所有相关从节点,从而实现了多集群Hadoop系统的单点登录功能。
(2)安全优化方法的资源访问控制
如果用户信息库中仅存储用户名和口令而不包含用户访问权限,则主节点将无法知道每个用户的具体访问权限,这将会引起从节点资源访问控制权限的混乱。在本发明所提出的安全优化方法的用户信息库中,除了用户登录信息外,还为每个用户存储了对从节点的访问权限。在一个用户作业的执行期间,主节点只连接用户信息库允许访问的从节点。这种情况使得主节点能够严格控制用户作业可以访问的系统资源,避免了多集群Hadoop系统资源的滥用。
(3)颁发代理证书的安全分析
CA服务器颁发的代理证书充当着用户实例的身份信息,从节点通过代理证书来对用户实例所涉及的主节点进行身份认证,从而保证用户实例能够访问多集群Hadoop系统的资源。但是,主节点和CA服务器经常分布在不同地方,并通过公众网连接。因此,在传输敏感信息时是不安全的,需要在主节点和CA服务器之间建立安全可信的连接。在本发明所提出的安全优化方法中,通过引入CA服务器生成的一个随机信息CA_Rand和设定的代理证书存活周期来扩展SSL协议,极大地保证了连接通道的安全性。另外,SSL协议本身也具有阻止中间人攻击、延迟攻击和回放攻击的能力。
(4)主节点与从节点之间的网络攻击防护
本发明所提出的安全优化方法能够有效地保证主节点与CA服务器、主节点与从节点之间的交互过程免遭常见的网络攻击。
①阻止中间人攻击
由CA服务器生成的随机信息CA_Rand是继各种证书之后的第二道防护措施。如果一个攻击者在申请和颁发代理证书的期间或者在步骤4的第一次握手过程中,发动了中间人攻击。假定攻击者获得了主节点公钥MN_Pub、代理证书和随机信息MN_Rand,由于随机信息MN_Rand是经过主节点私钥MN_Prv加密的,而攻击者是无法获得主节点私钥MN_Prv的,因此攻击者就无法对代理证书中的随机信息CA_Rand进行加密,也就不能通过从节点的身份认证了。获得主节点私钥MN_Prv的唯一方法是破解其加密算法,但这需要较长一段时间。在此期间,主节点早已完成与从节点的连接。
如果在步骤4的第二次握手过程中,在主节点与从节点之间发生了中间人攻击,假定攻击者已经获得了所有信息,但是由于没有主节点私钥MN_Prv,攻击者仍然不能破解{SCA,SC_Key}的加密信息。攻击者还可能会在第二次握手过程中,基于一个伪造的从节点发动中间人攻击,但是这个伪造的从节点通过不了主节点的身份认证,因为它没有真实的从节点私钥SN_Prv来加密随机信息CA_Rand。因此,在本发明所提出的安全优化方法中,通过公钥算法对随机信息CA_Rand进行加密作为指纹的机制能够阻止中间人攻击。
②阻止延迟攻击和回放攻击
除了能够阻止中间人攻击外,代理证书和主节点公钥MN_Pub还能够保护从节点免遭延迟攻击和回放攻击。具有较短存活周期的代理证书能够阻止耗时较长的网络攻击:如果攻击者发动了一个延迟攻击,代理证书将会变成过期状态,并被从节点拒绝。由于一个活跃用户实例的代理证书存放在从节点上,从节点能够很容易地检测出回放攻击。利用存放在从节点上的代理证书再次进行身份认证的行为将被视为回放攻击,因为代理证书被设计为一次使用。
③保证用户会话完整性
在步骤4的第一次握手过程中,用户会话将使用主节点私钥MN_Prv进行加密。一个窃听了主节点与CA服务器之间通信或者窃取了CA服务器公钥的攻击者,可能会破解经过加密的用户会话。但是在步骤4后,用户会话将被从节点采用私钥SN_Prv进行加密。由于攻击者无法知道从节点私钥SN_Prv,因此也就不能加密用户会话以发动攻击。如果攻击者修改了用户会话,则在步骤4的第二次握手过程中,对用户会话的验证是无法通过的,因为主节点能够很容易地检测出对用户会话的修改。因此,在第一次和第二次握手过程中,通过对用户会话进行加密能够确保用户会话的完整性。
④数据传输的安全连接
当在主节点与从节点之间传输海量数据时,将使用从节点确定的对称加密算法和密钥{SCA,SC_Key}进行数据加密。由于{SCA,SC_Key}先后经过从节点私钥SN_Prv和主节点公钥MN_Pub进行双重加密,攻击者无法获知主节点私钥MN_Prv和从节点私钥SN_Prv,因此保证了信息的真实性和机密性。为了增加攻击者获取{SCA,SC_Key}的难度,{SCA,SC_Key}由从节点而非主节点确定。这种情况下,从节点与主节点之间的每个连接,甚至同一从节点与主节点上不同用户实例之间的每个连接都采用不同的密钥加密,攻击者就更难得到{SCA,SC_Key}的信息了。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,所属领域的普通技术人员参照上述实施例依然可以对本发明的具体实施方式进行修改或者等同替换,这些未脱离本发明精神和范围的任何修改或者等同替换,均在申请待批的本发明的权利要求保护范围之内。