用于Hadoop集群的身份认证方法与流程

文档序号:11517778阅读:436来源:国知局
用于Hadoop集群的身份认证方法与流程

本发明涉及一种身份认证方法,特别是涉及一种用于hadoop集群的身份认证方法。



背景技术:

早期,hadoop(hadoop是一个由apache基金会所开发的分布式系统基础架构)集群的初始用途是管理大量的公共web数据,因此数据安全性和隐私并不是最初设计的考虑因素。设计时总是假定hadoop集群将会由相互协作的、可信的机器组成,并由在可信环境中的可信用户使用。因此hadoop不认证用户或服务,没有数据隐私,任何人都可以提交执行代码。

后来随着hadoop成为一个更加流行的大数据分析平台,hadoop开发社区意识到有必要为hadoop增添更加健壮的安全控制。开发人员选择了kerberos作为hadoop集群的基础身份认证机制。虽然kerberos认证具有实现简单、可靠性好、性能优越等诸多优点,但是安全性上也具有以下两个较明显的弱点:

一、系统的安全性完全基于用户口令和对称加密算法,用户口令需要存储在身份认证服务器的数据库中,管理员等高权限用户可以查看任何用户的口令。

二、由于系统安全性很大程度上取决于用户口令的复杂度,因此不可避免的容易遭受弱口令攻击。



技术实现要素:

本发明所要解决的技术问题是提供一种用于hadoop集群的身份认证方法,其能够大大降低系统遭受弱口令攻击的风险。

本发明是通过下述技术方案来解决上述技术问题的:一种用于hadoop集群的身份认证方法,其特征在于,其包括如下步骤:

步骤一,客户端向认证服务器发送请求,请求获得票据许可票据:先以明文方式向认证服务器发出请求;请求报文包括用户名称、授权服务器名称、有效生存期限、第一随机数和用户所在的kerberos领域用户信息;

步骤二,认证服务器收到客户端的请求报文后,先根据用户名称在本地数据库中查找用户密钥,如果查找成功,则认证继续;

步骤三,认证服务器生成会话密钥,该会话密钥用于客户端和授权服务器之间的加密通信;

步骤四,认证服务器产生用户请求的授权服务器的票据许可票据,该票据包括用户名称、授权服务器名称、用户ip、随机数、有效生存期限以及会话密钥,并用授权服务器的密钥进行加密,以保证只有授权服务器才能解密;

步骤五,认证服务器发送应答报文,该报文包括票据许可票据和用户密钥加密的信息;

步骤六,当客户端收到认证服务器返回的应答报文后,使用用户密钥进行解密,得到会话密钥,客户端向授权服务器发送访问hadoop应用服务器的请求报文,请求获得服务许可票据:

报文内容包括要访问的hadoop应用服务器的名称、有效生存期限、第二随机数、票据许可票据、第一认证符,第一认证符用会话密钥进行加密,包括用户名称、用户所在的kerberos领域以及时间戳;

步骤七,授权服务器收到客户端发来的请求报文后,用自己的授权服务器的密钥对票据许可票据进行解密处理,该票据的含义为“使用会话密钥的客户是c”,授权服务器用从票据许可票据中取出的会话密钥解密第一认证符,并将第一认证符中的数据与票据许可票据中的数据进行比较,从而可以相信票据许可票据的发送者用户就是票据许可票据的实际持有者;

步骤八,授权服务器验证用户的合法身份之后,生成随机会话密钥,该随机会话密钥用于客户端和hadoop应用服务器之间的加密通信;

步骤九,授权服务器产生用于访问hadoop应用服务器的服务许可票据,服务许可票据包括用户名称、hadoop应用服务器名称、用户ip、有效生存期限和随机会话密钥,并用hadoop应用服务器的密钥来加密,以保证只有hadoop应用服务器才能解得开;

步骤十,授权服务器发送应答报文,该应答报文包括服务许可票据和会话密钥加密的信息;

步骤十一,当客户端收到授权服务器的应答报文后,用会话密钥解密得到会话密钥;

步骤十二,客户端向hadoop应用服务器发送请求报文,该请求报文的内容包括hadoop应用服务器名称、用于访问hadoop应用服务器的服务许可票据以及用随机会话密钥加密的第二认证符;

步骤十三,hadoop应用服务器收到客户端发来的请求报文后,用自己的密钥对服务许可票据进行解密,得到随机会话密钥来解密第二认证符,并将解密后的第二认证符中的数据与服务许可票据中的数据进行比较,用户的身份得到验证;

步骤十四,hadoop应用服务器向客户端发送应答报文,包括用随机会话密钥加密的用户名称用户信息;

步骤十五,当客户端收到信息后,解密信息并确认hadoop应用服务器的身份后,认证结束。

优选地,所述步骤一的客户端向认证服务器发送票据许可票据申请请求时,在一个as_req消息中增加一下skprv-c字段,该字段是客户端使用自己的私钥采用非对称签名算法对消息内容的签名;认证服务器收到客户端的请求报文后,先根据用户名称在本地数据库中查找用户的公钥,并对消息内容进行验签运算,如果验签通过,则认证继续;认证服务器生成会话密钥,该会话密钥用于客户端和授权服务器之间的加密通信;认证服务器产生用户请求的授权服务器的票据许可票据,该票据包括用户名称、授权服务器名称、用户ip、随机数、有效生存期限以及会话密钥用户,并用授权服务器的密钥进行加密生成tickettgs,以保证tickettgs只有授权服务器才能解密;用用户的公钥加密另外一份包含会话秘钥的信息ekpub-c;认证服务器再对整个消息用自己的私钥签名生成skprv-as,并返回应答报文,该应答报文被用户接收到后,用户先用预先保存的认证服务器公钥验证签名,验签通过后,再用自己的私钥解密得到会话秘钥后续流程需要用到的信息。

优选地,所述步骤一至步骤五是关于认证服务器向用户发放票据许可票据,步骤六至步骤十是关于授权服务器向用户发放服务许可票据,所述步骤十一至步骤十五是关于用户向应用服务器获取服务。

优选地,所述用于hadoop集群的身份认证方法通过称为密钥分发中心的第三方服务来验证集群中实体的相互身份,并建立密钥以保证实体间的安全连接。

本发明的积极进步效果在于:

一,本发明由于采用了基于pki的认证模式后,无需在kdc上保存用户的口令,减少了系统的风险点,这样大大提高了hadoop集群身份认证的安全性。

二,由于本发明改造的是hadoop集群身份认证中执行频率非常低的as_req和as_req流程,因此对系统的性能几乎没有什么影响。

三,系统认证采用双因子模式后,可以大大降低弱口令攻击的风险,对hadoop集群的安全性也是一个比较明显的提升。

附图说明

图1为本发明的标准认证流程示意图。

图2为本发明基于pki的认证流程部分示意图。

具体实施方式

下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。

本发明通过称为kdc(keydistributioncenter,密钥分发中心)的第三方服务来验证集群中实体的相互身份,并建立密钥以保证实体间的安全连接。kdc由认证服务器as和授权服务器tgs两部分组成。kerberos(kerberos是古希腊神话中守卫地狱入口狗,长着三个头。mit麻省理工学院之所以将其认证协议命名为kerberos,是因为他们计划通过认证、授权和审计三个方面来建立完善的安全机制)认证系统总共包括三个相关方:认证服务器as,用于在登录时验证用户的身份并发放票据许可票据tgt;授权服务器tgs,用于发放服务许可票据ts;hadoop应用服务器v,客户端请求工作的实际执行者。在执行具体的认证流程前,系统需要做必要的初始化。客户端首先需要在kdc做开户操作,将自己的口令及基础信息保存到kdc的数据库中,之后才能完成后续的认证。

如图1所示,本发明用于hadoop集群的身份认证方法包括如下步骤:

步骤一,客户端向认证服务器发送请求,请求获得票据许可票据tgt:

c→as:as_req={idc,idtgs,times,nounce1,realmc,options}

as→c:as_rep={realmc,idc,tickettgs,ekc(kc,tgs,times,nounce1,realmtgs,idtgs)}tickettgs=ektgs(

realmc,idc,idtgs,ipc,times,kc,tgs,flags)

先以明文方式向认证服务器发出请求,请求报文包括用户名称、授权服务器名称、有效生存期限、第一随机数和用户所在的kerberos领域等信息;

步骤二,认证服务器收到客户端的请求报文后,先根据用户名称在本地数据库中查找用户密钥kc,如果查找成功,则认证继续;

步骤三,认证服务器生成会话密钥kc,tgs,该会话密钥用于客户端和授权服务器之间的加密通信;

步骤四,认证服务器产生用户请求的授权服务器的票据许可票据tgt,该票据包括用户名称、授权服务器名称、用户ip、随机数、有效生存期限以及会话密钥kc,tgs等,并用授权服务器的密钥ktgs进行加密,以保证只有授权服务器才能解密;

步骤五,认证服务器发送应答报文,该报文包括票据许可票据tgt和用户密钥kc加密的信息;

步骤六,当客户端收到认证服务器返回的应答报文后,使用用户密钥kc进行解密,得到会话密钥kc,tgs,客户端向授权服务器发送访问hadoop应用服务器的请求报文,请求获得服务许可票据ts:

c→tgs:tgs_req={idv,times,nounce2,tickettgs,authenticator1,options}

authenticator1=ekc,tgs(idc,realmc,ts1)

tgs→c:tgs_rep=realmc,idc,ticketv,ekc,tgs(kc,v,times,nounce2,realmv,idv)}

ticketv=ekv(idc,idv,ipc,times,kc,v,realmc,flags)

报文内容包括要访问的hadoop应用服务器的名称、有效生存期限、第二随机数、tgt、第一认证符等,第一认证符用会话密钥kc,tgs进行加密,包括用户名称、用户所在的kerberos领域以及时间戳;

步骤七,授权服务器收到客户端发来的请求报文后,用自己的密钥ktgs对票据tgt进行解密处理,该票据的含义为“使用会话秘钥kc,tgs的客户是c”,授权服务器用从票据许可票据tgt中取出的会话密钥kc,tgs解密第一认证符,并将第一认证符中的数据与票据许可票据tgt中的数据进行比较,从而可以相票据许可票据信tgt的发送者用户就是票据许可票据tgt的实际持有者;

步骤八,授权服务器验证用户的合法身份之后,生成随机会话密钥kc,v,该密钥用于客户端和hadoop应用服务器之间的加密通信;

步骤九,授权服务器产生用于访问hadoop应用服务器的服务许可票据ts,服务许可票据ts包括用户名称、hadoop应用服务器名称、用户ip、有效生存期限和随机会话密钥kc,v等,并用hadoop应用服务器的密钥kv来加密,以保证只有hadoop应用服务器才能解得开;

步骤十,授权服务器发送应答报文,该报文包括服务许可票据ts和会话密钥kc,tgs加密的信息;

步骤十一,当客户端收到授权服务器的应答报文tgs_rep后,用会话密钥kc,tgs解密得到随机会话密钥kc,v;

步骤十二,客户端向hadoop应用服务器发送请求报文ap_req:

c→v:ap_req={options,ticketv,authenticator2}authenticator2=ekc,v(idc,realmc,ts2,subkey,seq#)

v→c:ap_rep={ekc,v(idc),realmc,ts2,subkey,seq#}

报文内容包括hadoop应用服务器名称、用于访问hadoop应用服务器的服务许可票据ts以及用随机会话密钥kc,v加密的第二认证符;

步骤十三,hadoop应用服务器收到客户端发来的请求报文tgs_rep后,用自己的密钥对服务许可票据ts进行解密,得到随机会话密钥kc,v来解密第二认证符,并将解密后的第二认证符中的数据与票据ts中的数据进行比较,用户的身份得到验证;

步骤十四,hadoop应用服务器向客户端发送应答报文,包括用随机会话密钥kc,v加密的用户名称等信息;

步骤十五,当客户端收到信息后,解密信息并确认hadoop应用服务器的身份后,认证结束。

为了实现无需在kdc上存储用户口令,保证用户口令除了用户自己外,没有任何人能够知晓,本发明主要针对上述标准认证流程中的步骤一至步骤五(as_req和as_rep)进行改进,改进的措施主要是采用pki(publickeyinfrastructure)即公开密钥体系来替换原来基于对称算法和用户口令的认证体系。其认证消息格式和流程如下:所述步骤一的客户端向认证服务器发送tgt申请请求时,在as_req(as为认证服务authenticationservice,req为request请求,rep为reponse,as_req就是认证请求)消息中增加一下skprv-c字段,该字段是客户端使用自己的私钥采用非对称签名算法对消息内容{idc,idtgs,times,nounce1,realmc,options}的签名:

c→as:as_req={idc,idtgs,times,nounce1,realmc,options,skprv-c}

as→c:as_rep={realmc,idc,tickettgs,ekpub-c(kc,tgs,times,nounce1,realmtgs,idtgs),skprv-as}

tickettgs=ektgs(realmc,idc,idtgs,ipc,times,kc,tgs,flags)

认证服务器收到客户端的请求报文后,先根据用户名称在本地数据库中查找用户的公钥kpub-c,并对消息内容进行验签运算,如果验签通过,则认证继续;

认证服务器生成会话密钥kc,tgs,该会话密钥用于客户端和授权服务器之间的加密通信;

认证服务器产生用户请求的授权服务器的票据许可票据tgt,该票据包括用户名称、授权服务器名称、用户ip、随机数、有效生存期限以及会话密钥kc,tgs等,并用授权服务器的密钥ktgs进行加密(对称)生成tickettgs,以保证tickettgs只有授权服务器才能解密;

用用户的公钥加密另外一份包含kc,tgs的信息ekpub-c(kc,tgs,times,nounce1,realmtgs,idtgs);

认证服务器再对整个消息用自己的私钥签名生成skprv-as,并返回应答报文,该应答报文被用户接收到后,用户先用预先保存的认证服务器公钥验证签名,验签通过后,再用自己的私钥解密得到kc,tgs等后续流程需要用到的信息。改进后的as_req和as_rep(as_rep是认证响应)流程完成。

用于hadoop集群的身份认证方法将原来简单基于口令的软件认证模式改造成基于硬件和口令结合的双因子认证模式,从而降低了hadoop集群认证易遭受弱口令攻击的风险。本发明取代kerberos的默认机制,避免在密钥管理中心保存用户的口令,以提高系统安全性。本发明的身份认证机制能够有效的降低系统遭受弱口令攻击的风险,而且不会造成系统的复杂度大大增加,可用性明显降低。

由于采用了上述技术方案,与现有技术相比,本发明的有益效果如下:

一,本发明由于采用了基于pki的认证模式后,无需在kdc上保存用户的口令,减少了系统的风险点,这样大大提高了hadoop集群身份认证的安全性。

二,由于本发明改造的是hadoop集群身份认证中执行频率非常低的as_req和as_req流程,因此对系统的性能几乎没有什么影响。

三,系统认证采用双因子模式后,可以大大降低弱口令攻击的风险,对hadoop集群的安全性也是一个比较明显的提升。

综上所述,本发明为了减轻hadoop集群认证易遭受弱口令攻击的风险,本发明采用的措施是将原来简单基于口令的软件认证模式改造成基于硬件和口令结合的双因子认证模式。双因子认证(2fa)是指结合密码以及实物(智能卡、sms手机、令牌或指纹等生物标志)两种条件对用户进行认证的方法。在本案例中,主要是将客户的私钥储存到智能卡设备中,并用口令进行加密保护。需要使用私钥进行认证前,客户端程序先要求客户输入口令,验证通过后才允许客户端调用内置在智能卡内部的非对称算法完成认证动作。hadoop集群的认证系统经过双因子认证改造后,虽然无法完全杜绝弱口令攻击,但是由于认证过程涉及硬件设备,攻击者虽然可以通过猜测等非正常手段获取到口令,但是往往很难同时获得硬件智能卡设备,因此可以大大降低系统遭受弱口令攻击的风险。

以上所述的具体实施例,对本发明的解决的技术问题、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1