首页 > 编程知识 正文

kerberos4,理论知识的重要性

时间:2023-05-06 13:37:20 阅读:143004 作者:1037

一、什么是kerberos

Kerberos是一种计算机网络许可协议,用于在不安全的网络上以安全的方式验证个人通信。 指麻省理工学院为该协议开发的一套计算机软件。 软件采用http://www.Sina.com/http://www.Sina.com/http://www.Sina.com /结构,可相互认证。 这意味着客户端和服务器端都可以认证对方。 可用于防止窃听、防止重放攻击、保护数据完整性等,是应用对称密钥方式进行密钥管理的系统。 Kerberos的扩展产品也通过了公钥加密方式的认证。

当n人使用该系统时,为了确保任意两个人之间进行秘密对话,该系统保存与至少每一个人的共享密钥,需要的最低会话密钥数量为n。

Kerberos网络验证协议允许一个实体在不安全的网络环境中通信,并以安全的方式向另一个实体证明自己的身份。 指的是麻省理工学院实现该合同并发布的一套免费软件。 其设计主要针对客户端模型,可以提供一系列相互认证33543358www.Sina.com/来验证对方的身份。 Kerberos协议可保护网络实体免受窃听和重复攻击。

Kerberos协议基于/,需要可信的第三方。 通过Kerberos协议的扩展,可以在身份验证的几个阶段支持公钥加密。

服务器

客户- - 服务器

kerberos principal主体:在Kerberos中称为用户或服务,通常为用户和 服务器((或具体服务) ) 对称密码学、 由http://www.Sina.com的两个或三个部分组成的Kerberos的认证系统用二、kerberos在hadoop中的位置识别唯一的id,在CDH中主体是操作系统的用户名或服务名通过将票证Tickets分配给Kerberos主体,Kerberos可以访问支持Kerberos群集的Hadoop服务。 kerberos keytab Keytab文件包含三、kerberos在hadoop中的概念。 在Hadoop守护进程中,每个keytab文件都是唯一的。 由于实例包含主机名,如hbase/node@HADOOP.COM,因此此文件用于验证kerberos主机。delegation tokens用户在通过kerberos验证后提交作业用户此时注销系统后,后续的身份验证将通过代理令牌进行,代理令牌和Nn共享私钥以伪装用户获取执行任务。 代理令牌的有效期为一天,更新程序只能在七天内更新令牌,并且任务完成后代理令牌将被取消。primary主要标识

1、相关概念

kerberos基于ticket的概念进行动作,各部分的概念为以下:

密钥分发中心(KDC )=密钥分发中心

由AS和TGS组成,是所有通信的主要集线器,存储每个客户端或服务的私钥副本,帮助完成通信认证。

授权服务器(as )=认证服务器TGS(ticketgrantingserver )=票据授权服务器TGT (ticketgrantingticket )=票据授权票据、票据

请求访问资源的主体可以是用户或服务。 请求的资源一般是hive等具体服务。 KDC 2、功能说明

要启动验证会话,客户端首先将用户名发送到KDC的AS进行验证。 通常使用kinit命令进行。 KDC服务器生成相应的票证批准票证(TGT )并加上时间戳。 TGT是一个请求和

其他服务通信的票据,并在数据库中查找该请求用户的密码,并用查找到的密码对TGT进行加密,将加密结果返回给请求用户。

客户端收到返回结果,使用自己的密码解密得到TGT票据授权票据,该TGT会在一段时间后自动失效,有些程序可以用户登录期间进行自动更新,比如hadoop的hdfs用户。当客户端需要请求服务时,客户端将该TGT发送到KDC的TGS服务,当用户的TGT通过验证并且有权限访问所申请的服务时,TGS生成一个被请求服务对应的Ticket和和Session Key,并发给请求客户端。

客户端将该Ticket和要请求的服务一同发送给目的服务端,完成验证并获得相应服务。简单地说,用户先用共享密钥从KDC的AS认证服务器得到一个身份证明。随后,用户使用这个身份证明与SS通信,而不使用共享密钥。

3、工作原理

3.1、客户端认证过程

客户端(Client)从认证服务器(AS)获取票据的票据(TGT

1) 客户端向AS发送明文信息,申请基于该用户的请求服务,比如‘用户APP1想请求服务’。(注意:用户不向AS发送“用户密钥”(user's secret key),也不发送密码)该AS能够从本地数据库中查询到该申请用户的密码,并通过相同途径转换成相同的“用户密钥”(user's secret key)。

2) AS检查请求用户ID是否存在于Kerberos数据库中,如果存在则通过验证,返回如下信息。

消息A:会话秘钥,Client/TGS会话密钥(Client/TGS Session Key)(该Session Key用在将来Client与TGS的通信(会话)上),通过用户密钥(user‘s secret key)进行加密。消息B:票据授权票据(TGT)(TGT包括: “Client/TGS会话密钥”(Client/TGS Session Key),KDC名字,用户ID,IP地址,TGT有效期),通过KDC中TGS密钥(TGS‘s secret key)进行加密。KDC将响应结果返回,包括加密后的新会话秘钥、TGT。

3) Client收到返回消息后,Client用自己的密钥解密返回的加密会话密钥,从而得到解密后的会话密钥Client/TGS会话密钥(Client/TGS Session Key), (注意:Client不能解密TGT,因为TGT是用TGS

密钥(TGS's secret key)加密的)。拥有了“Client/TGS会话密钥”(Client/TGS Session Key),Client就足以通过TGS进行认证了。

3.2、服务授权

client从TGS获取票据(client-to-server ticket)

1)当客户端需要请求某个服务时,发送如下信息到KDC。

消息C:1.获取的返回TGT,消息B,即通过TGS密钥(TGS‘s secret key)进行加密的TGT。2.想要获取服务的服务ID。消息D:认证元组(用户ID、IP地址、时间戳),通过Client/TGS会话密钥(Client/TGS Session Key) 加密。

2) KDC收到请求后,TGS检查KDC数据库中是否存在该服务ID,如果存在,则TGS用自己的TGS密钥(TGS‘s secret key)解密请求消息获得TGT,得到之前生成的Client/TGS会话密钥(Client/TGS

Session Key) 。TGS在用该会话密钥Client/TGS Session Key解密认证元组,得到(用户ID、IP地

址、时间戳) ,并验证TGT和认证元组,如果验证通过返回如下:

消息E:Client-Server票据(Client-To-Server Ticket),(该Ticket包括:Client/SS会话密钥(Client/Server Session Key),用户ID,用户网址,有效期),通过提供该服务的服务密钥(service's secret key)进行加密。消息F:Client/SS会话密钥( Client/Server Session Key),(该Session Key用在将来Client与Server Service的通信(会话)上),通过Client/TGS会话密钥(Client/TGS Session Key)进行加密。

3) 客户端收到响应后通过Client/TGS会话密钥”(Client/TGS Session Key)解密消息得到Client/SS会话密钥( Client/Server Session Key) 。 (注意:Client不能解密Client-Server票据(Client-To-

Server Ticket) ,因为是用“服务密钥”(service's secret key)加密的)。

3.3、服务请求

Client从SS获取服务

1) 通过获取的Client/SS会话密钥”(Client/Server Session Key)后,Client就可以使用服务器提供的服

务,Client向服务器发送如下信息。

消息E:Client-Server票据(Client-To-Server Ticket) ,(该Ticket包括:Client/SS会话密(Client/Server Session Key),用户ID,用户网址,有效期),通过提供该服务的服务密钥(service's secret key)进行加密。消息G:新认证元组(用户ID、IP地址、时间戳),通过Client/SS会话密钥(Client/Server Session

Key) 进行加密。

2)SS用自己的密钥(service‘s secret key)解密消息Client-Server票据(Client-To-Server Ticket)从而得到TGS提供的Client/SS会话密钥(Client/Server Session Key)。再用这个会话密钥解密加密的新认证元组得到新认证元组。(同TGS一样)对Ticket和认证元组进行验证,验证通过则返回1条消息(确认函:确证身份真实,乐于提供服务):

消息H:新时间戳,(新时间戳是:Client发送的时间戳加1,v5已经取消这一做法),通过Client/SS会话密钥(Client/Server Session Key)进行加密。

3)Client通过Client/SS会话密钥(Client/Server Session Key)解密消息H,得到新时间戳并验证其是否正确。验证通过的话则客户端可以信赖服务器,并向服务器(SS)发送服务请求。

4)服务器(SS)向客户端提供相应的服务。

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

      用人品去感动别人,用改变去影响别人,用状态去燃烧别人,用行动去带动别人,用阳光去照耀别人,用坚持去赢得别人,要求自己每天都去做与目标有关的事情,哪怕每天只进步一点点,坚持下来你就是最优秀卓越的!欢迎大家加入大数据交流群:725967421     一起交流,一起进步!!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。