Kerberos协议以此命名,巧合的是Kerberos协议也是有三个重要的部分组成,他们分别是:Client, Server, KDC(密钥分发中心)。
Client:需要使用Kerberos服务的客户端
Service:提供具体服务的服务端
KDC:负责分发密钥的密钥分配中心
来自百度百科关于Kerberos的解释:
https://baike.baidu.com/item/Kerberos/5561682?fr=aladdin
Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
要了解Kerberos协议的工作过程,我们先了解不含KDC的简单相互身份验证。
A向B发送信息时,会附加一个Authenticator(认证码,该数据结构=身份信息+时间戳)来进行两人的身份验证,在开始验证之前,A和B有且只有一个二人知晓的密钥。
简单身份认证工作流程
说明:
a. A用密钥加密了【信息+Authenticator(身份信息+时间戳)】,将其发给B;
b. B用密钥解密A发来的Authenticator,并将记录其中的时间戳,B将这个时间戳与自己的当前时间进行比较,如果这个时间差大于某个值(windows下默认是5分钟),B认为信息不是A发来的,拒绝后续验证。如果这个时间差小于设定值,B要检查在过去5分钟内,是否存在含有更早时间戳的Authenticator,如果没有,B认为信息确实是A发来了,此时即完成B对A的验证;
c. B用密钥加密Authenticator里的时间戳,然后将其发回给A,以证明自己确实是B;
d. A收到后,解密出时间戳,经对比,确认对方确实是B. 至此,完成了A对B的验证;
上述3提到实现简单相互身份验证有一个前提条件,即A和B必须有一个有且只有二人知晓的密钥,引入KDC密钥分发中心后,当A尝试向B发信息时,KDC会分别向A、B发放一个加密过的session key,相当于上述那个有且只有A、B双方知晓的密钥。
引入密钥分发中心KDC具体工作过程
a. 客户端向KDC提交客户端身份信息(这个传输过程使用客户端secretkey进行加密),要求与服务端进行相互身份验证。
b. KDC生成一个仅有客户端与服务端知晓的session key。
c. KDC将session key附加上客户端身份信息形成了session ticket,并用服务端secret key加密session ticke后传给服务端。服务端收到了KDC回复,使用服务端secret key解密,获得了有且只有客户端和服务端二者知晓的密钥session key。
d. KDC将【session key+服务端secret key加密后的session ticket】用客户端secret key加密后,传给客户端。客户端收到了KDC的回复,用客户端secret key解密出【session key+服务端secret key加密后的session ticket】。当客户端再次向服务端发送信息时,客户端就可以直接向服务端发送【要发送的信息+服务端secret key加密后的session ticket+用session key加密的Authenticator(身份信息+时间戳)】
e. 服务端收到来自客户端的以上凭据,先用服务端secret key将session ticket解密,取得内嵌在session ticket里的session key,用其将Authenticator解密,得到客户端发送消息的时间戳,之后按照3中简单相互身份验证过程中的步骤b, c, d继续进行。
派拉统一身份认证(ESC)域单点无缝集成
派拉ESC产品和AD域控的集成实现配置化,无缝对接;
开机即访问(域用户登录电脑,访问应用无需再次进行登录认证),大大提升用户体验,登录认证 so easy。