kerberos认证协议

        kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下,kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

kerberos和NTLM的区别:

        在kerberos之前,Microsoft使用一种称为NTLM的身份验证技术。NTLM代表NT LAN Manager,是一种质询响应身份验证协议。目标计算机或域控制器会质询并检查密码,并存储密码哈希以供继续使用。这两个系统之间的最大区别是第三方验证和kerberos中更强大的加密功能。该过程中的这一额外步骤为NTLM提供了重要的额外安全层。

AS(Authentication Server)==  认证服务器

KDC(Key Distribution Server)==  密钥分发中心

TGT(Ticket Granting Ticket)==  票据授权票据,票据的票据

TGS(Ticket Granting Sever)==  票据授权服务器

SS(Service Server)==  特定服务提供端

具体的kerberos认证流程:

一、从AS服务器中获取TGT票据

用户在客户端输入账号和密码之后,会对密码进行hash处理,作为user-secret-key

1、客户端将用户名发送给AS服务器申请服务,在AS服务器中会对用户名进行验证,在AS服务器本地数据库中查询到该用户名的密码,并使用hash生成user-secret-key。

2、AS服务器向用户发送两个信息:

        ①Client/TGS会话秘钥,使用user-secret-key进行加密

        ②TGT,包含TGS会话密钥,用户信息,时间戳,TGT有效期。使用TGS密钥进行加密

3、用户接收到消息之后,会使用本地的user-secret-key对消息1进行解密,如果解密成功,说明用户提供的凭据是正确的,此时用户得到了加密后的TGT。

二、从TGS服务器中获取访问权限

1、客户端向TGS服务器发送信息:

        ①第一步骤中的TGT

        ②认证信息(认证符Authenticator),包含用户id以及时间戳,通过TGS会话密钥进行加密。

2、TGS服务器收到消息后,会使用TGS密钥对消息1进行解密,获取到TGS会话密钥,进而对消息2进行解密,再对用户id以及时间戳进行认证,如果认证成功,向客户端发送消息

        ①client-server-ticket(包含SS会话密钥,用户名信息以及时间戳),使用SS密钥进行加密

        ②SS会话密钥使用TGS会话密钥进行加密

3、客户端收到信息后会对消息2进行解密,获得SS会话密钥。

三、访问服务

1、客户端向SS服务器发送以下消息:

        ①第二步骤中的client-server-ticket

        ②新的Authenticator,包含用户信息,时间戳。通过SS会话密钥进行加密

2、SS服务器收到消息后,会使用SS密钥对消息1进行解密,解密后使用SS会话密钥对消息2解密,解密成功后会得到Authenticator,认证之后,发送:

        ①新时间戳,client发送的时间戳加1,通过SS会话密钥进行加密

3、客户端收到时间戳后,确认解密,成功之后发送服务请求

4、SS服务器收到之后提供服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值