目录
前言
什么是kerberos协议:
专注于验证通信双方身份的网络协议 帮助客户端和服务器端解决 “我就是我” 的问题 ,使通信双方能够完全信任对方身份
kerberos协议是干什么的:
为网络通信的双方提供严格的身份验证服务 kerberos协议侧重于认证通信双方的身份.
客户端需要确认即将访问的网络服务就是自己所想要访问的服务而不是一个伪造的服务器,而服务端需要确认这个客户端是一个身份真实,安全可靠的客户端,而不是一个想要进行恶意网络攻击的用户
认识kerberos协议
kerberos协议的组成角色
客户端(client):发送请求的一方
服务端(Server):接收请求的一方
密钥分发中心(Key Distribution Center,KDC),而密钥分发中心一般又分为两部分,分别是
AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访 问TGS的TGT(票据授予票据)
TGS(Ticket Granting Ticket):票据授予服务器,用来发放整个认证过程以及客户端访问 服务端时所需的服务授予票据(Ticket)
kerberos认证如何解决‘我就是我’的问题
我们先导入生活的事例:
小明和小红不在同一个班 但是又经过了一些特殊的途径 小明加上了小红的微信 这美女经不起暖男的软磨硬泡 小红就提出想见小明 但是两人就算见面了 也不认识
这时候怎么办呢
刚好就有小军 同时认识小红和小明 小军就给小红说:那个帅气的男孩子就是小明 小军又给小明说 那个美丽的女孩子就是小红 然后小红和小明就互相认识了
然后再我们的kerberos协议里面
小红就是服务端 小明就是客户端 小军就是KDC(秘钥分发中心)
然后kerberos认证流程可以简化描述为:
客户端向KDC请求 获取 目标服务授予的票据(ticket)
客户端拿着从KDC获取的服务票据(ticket)访问相应的服务
Kerberos 详细的认证流程
在这之前我们需要知道kerberos认证的前提条件:
kerberos中会自带一个数据库,这个数据库会由创建kerberos的运维人员提前在库中添加好整个系统中拥有使用kerberos认证权限的用户和网络服务。在后续的认证中也是根据数据库中是否存在该用户和服务来判断该对象是否能够通过认证服务的
(拿上面的例子来说就是小军在小红和小明相识之前同时认识小明和小红,以便后面帮助小红和小明互相认证)
所有使用kerberos协议的用户和网络服务,在他们添加进kerberos系统中时,都会根据自己当前的密码(用户密码,人为对网络服务随机生成的密码)生成一把密钥存储在kerberos数据库中,且kerberos数据库也会同时保存用户的基本信息(例如用户名,用户IP地址等)和网络服务的基本信息(IP,Server Name)
第一次通信
由于客户端第一次来玩 还要获取票据(ticket) KDC并不了解他来究竟是干什么的 就要收集他的信息(保安大爷)
所以第一次通信是为了KDC认证客户端身份 确保客户端拥有访问的KDC权限的客户端
第二次通信
客户端收到AS的响应 并且获取到其中的两部分
客户端会用自己的秘钥将第二部分解密 分别获得时间戳还有TGS信息和与TGS建立通信时候的秘钥CT_SK
请求的主要目的是为了获取能够访问目标网络服务的服务授予票据Ticket
第三次通信
此时的客户端收到了来自TGS的响应,并使用缓存在本地的CT_SK解密了第二部分内容(第一部分内容中的ST是由Server密码加密的,客户端无法解密),检查时间戳无误后取出其中的CS_SK准备向服务端发起最后的请求
请求建立联系到此成功