Kerberos认证服务理解

  当系统中服务模块分开时,比如有邮件服务,文件服务。传统认证模式是用户传输用户名和密码到相应的服务中,服务认证通过后返回结果。这会产生一个问题,即用户的信息会在网络传输中被劫持、攻击。当然这里可以采用非对称加密来加密数据、签名来确认用户身份。
  比如甲想给乙发一个安全的保密的数据,那么应该甲乙各自有一个私钥,甲先用乙的公钥加密这段数据,再用自己的私钥加密这段加密后的数据.最后再发给乙,这样确保了内容即不会被读取,也不会被篡改.
因此理想情况下应该是客户端来进行验证。客户端像认证服务器发送自己的用户名,认证服务器查询对应密码后,用该用户的密码来加密票据授权票(TGT),将加密后的数据包发送给用户,客户端通过输入的密码来解码该数据包,如果解码成功则能顺利得到正确的TGT。
这里的TGT相当于是动物园的一张通票,你拿着这张通票可以进入任何地方,比如狮子园,老虎园。
  当请求具体服务时,比如请求邮件服务。客户端会像认证服务器发送TGT以及想要请求的服务名。认证服务器认证通过后会返回该服务对应的票。客户端拿着这张票就可以访问对应的服务了。
这里会有一个超时问题,因为用户不可能申请一次,永久使用。而且当TGT在网络中传输时,也会被劫持。因为需要有一个东西来确定用户身份类似于签名。
  Kerberos通过在认证中心发TGT票时,生成一个该用户和服务共享的密钥,再用用户的密码去加密TGT和密钥。因此验证中心回复的应该是
加密后的[sessionkey|ticket]([会话密钥 | 票])
  用户拿到后通过密码解密可以得到TGT票和会话密钥。
当用户访问服务的时候,用户会生成一个认证器,并通过会话密钥进行加密。像认证中心发送TGT票和认证器以及请求服务名
认证器 - {用户名:IP地址} 被会话密钥加密
AUTHENTICATOR - {username:address} encrypted with session key
当认证中心收到后通过与用户共享的会话密钥解密可以验证用户,通过密码解密获取信息。
参考:https://www.freebuf.com/articles/others-articles/323331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值