Kerberos 认证协议

Kerberos 认证协议是基于对称密钥的认证协议,在详细描述 Kerberos 之前,要先讲两个重要的概念:

  1. Master Key:又叫 Long-term Key,这样的 Key 可能长期保持不变,用其加密的数据应该尽可能少的在网络中传输。因为一旦这些数据包被截获,只要有充足的时间,总是可以被破解的。
  2. Session Key,又叫 Short-term Key,因为 Long-term Key 加密的数据要尽量少的在网络中传输,所以使用 Short-term Key 来加密平常传输的数据。这种 Key 只存在一段时间,所以即使加密的包被截获被破解了,Key 也可能早已过期了。

身份认证解决的是“如何证明某个人确确实实就是他或她所声称的那个人”的问题。一个基本的方法是:如果一个秘密(secret)仅仅存在于 A 和 B,那么有个人对 B 声称自己就是 A,B 通过让 A 提供这个秘密来证明这个人就是他或她所声称的 A。这个过程涉及到三个方面:

  1. Secret 如何表示?
  2. A 如何向 B 提供 Secret
  3. B 如何识别 Secret

在 Kerberos 协议里,KDC(Key Distribution Center)负责协调 Client、Server 之间的通信,为其分配 Secret。
Client、Server 与 KDC 交互时靠什么做身份认证呢?同样有一个 Secret,这里叫 Master Key,是“管理员”预先分配好的,KDC 里保存了所有用户(包含 Client、Server)的 Master Key。相对的 Client、Server 交互使用的 Secret 可以称为 Session Key。


上图的设计有两个问题:

  1. Server 要记录每一个 Client 的 Session Key,太耗费资源
  2. 同一个 Key 要同时同步到 Session Key、Server 是比较难的,当 Session Key 需要定期更新时同步就更难了

Kerberos 是如何解决这两个问题的呢?KDC 返给 Client 两份数据,一份是用 Client Master Key 加密的 Session Key,一份是用 Server Master Key 加密的 Ticket,包含以下内容:Session Key、Client 身份标识、有效期 Timestamp。第一份数据可供 Client 解密拿到 Session Key,第二份数据即 Ticket 需要 Client 访问 Server 时带上,Server 解密即可得到 Session Key。


按照 master key 要尽量少用的原则来看,上述交互还有两个个问题:

  1. Client 与 KDC 交互用的是 Master Key
  2. Ticket 加密用的还是 Server 的 Master Key

针对问题 1,将 KDC 拆分为两个:AS 和 TGS,Client 在启动时去 AS 拿一个凭据 TGT 和后续与 TGS 交互的 Session Key,这里 TGT 的作用和 Client、Server 交互使用的 Ticket 类似,也就是 Client 与 TGS 交互的 Ticket。拿到 TGT 后,Client 可带着 TGT 去 TGS 来拿与 Server 交互的 Ticket。

针对问题 2,可以让 Client 先去 Server 拿一下 Server 与 TGS 交互的 TGT,然后带着一起去 TGS 拿 Ticket,TGS 会解密 Server 的 TGS 拿到 Server 与 TGS 交互的 Session Key,用其来加密 Ticket。

经过这两个改造后,Master Key 仅用在 Client 刚启动时获取 TGT 上了,其他交互都使用了 Session Key,完整的交互流程如下图所示,可分为四步:

  1. Client 使用 Master Key 加密身份信息和数据,访问 AS,得到与 TGS 交互的 TGT 和 Session Key
  2. Client 获取 Server 与 TGS 交互的 TGT
  3. Client 使用 TGS 的 Session Key 加密身份信息和数据,并带着 client 的 TGT、server 的 TGT 访问 TGS,拿到与 Server 交互的 Ticket 和 Session Key
  4. Client 用 Session Key 加密身份信息和数据,并带着 Ticket 访问 Server

Kerberos 认证协议相关推荐

  1. Kerberos认证协议

    序言:近几天学习了Kerberos认证协议,觉得有必要把学习过程和学习心得记录一下,文章内容有William Stallings编著的<网络安全基础>中的部分内容,也有自己的理解和思考.我 ...

  2. Kerberos认证协议中TGS服务器可以去掉吗?

    Kerberos协议最早是由MIT提出的,是一种身份认证协议. 应用场景:在一个开放环境中,一个工作站用户想通过网络对分布在网络中的各种服务提出请求,那么希望服务器能够只对授权用户提供服务,并能够鉴别 ...

  3. 基于对称加密的密钥分配和Kerberos认证

    基于对称加密的密钥分配和Kerberos认证 对于对称加密,加密双方必须共享同一密钥,而且必须保护密钥不被他人读取.此外,常常需要频繁地改变密钥来减少某个攻击者可能知道密钥带来的数据泄露.因此,任何密 ...

  4. 服务器ipv4协议认证,基于TCP/IP应用层密码认证协议的研究

    Internet在全世界盛行,它的基础协议就是传输控制协议/网际协议(TCP/IP).TCP/IP是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来以及传送方式 ...

  5. Kerberos网络认证协议的理解

    1. Kerberos 1.1. 概念 Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务.该认证过程的实现不依赖于主机操作系统的认证,无需基 ...

  6. Hadoop平台安全机制Kerberos认证

    日前笔者在使用flume采集数据直接入到Hadoop平台HDFS上时,由于Hadoop平台采用了Kerberos认证机制.flume配置上是致辞kerberos认证的,但由于flume要采集的节点并不 ...

  7. kerberos认证_初识 Windows域认证体系 Kerberos认证

    关键词: Kerberos认证 域控制器(Domain Controller,DC) 密钥分发中心(Key Distribution Center,KDC) 帐户数据库(Account Databas ...

  8. java kerberos认证 过期_定位Kerberos 配置常见问题

    定位Kerberos配置过程中的问题,可尝试如下步骤,也可学习逗点云的<Kerberos调试系列>课程: 1.使用Kerberos Tray或Kerberos List确认有尝试连接的服务 ...

  9. Kerberos认证过程学习理解

    概念: Kerberos服务器:AS认证服务器,TGS服务授权服务器 Client 客户端,代表使用应用的用户 AppServer 服务端,应用提供各种服务的服务器 Client在Kerberos注册 ...

最新文章

  1. Linux supervisor守护进程的安装和使用
  2. mysql的delete的底层实现_MySQL索引的底层实现
  3. 转eclipse如何修改dynamic web module version .
  4. 图解计算机图形学三维变换算法
  5. unordered_map使用自定义enum作为键值
  6. 数学家的浪漫,你想都想不到!
  7. 大疆地理围栏系统预防无人机闯入机场
  8. 2017年总结-致毕业半年的自己
  9. 基于FPGA实现Camera Link接口
  10. docker $PWD路径_基于Docker搭建Nacos集群
  11. 职高学的计算机单招考试能换专业吗,高职单招录取后可以换专业吗
  12. java的日期格式使用
  13. iphone 开发常用代码2
  14. JDK与JRE各种版本下载地址
  15. 安川机器人io对照表_安川机器人按键功能一览
  16. MySQL读写分离原理
  17. GitHub 中国区前 100 名到底是什么样的人
  18. ImportError: cannot import name ‘bbox_ious‘
  19. AI产品经理能力模型的重点素质:人文素养和灵魂境界
  20. [MATLAB] 图像的插值算法1:MATLAB中的插值函数及其原理

热门文章

  1. Docker新手入门教程
  2. tensorflowgpu20升级
  3. 证明:标准二元正态分布各向同性
  4. 暴风集团发布2018半年报业绩预告,TV销量增长惊人
  5. mysql数据转换拼音函数
  6. 局域网监控软件可行性分析报告
  7. 怪兽来袭DARTZ款奔驰G 63逆天越野
  8. All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools
  9. Steam串流投屏-Moonlight与SteamLink(2022/3/7更新)
  10. 每隔 2 秒刷新抢票次数,携程抢票服务疑似造假