Kerberos:网络认证服务系统,给予私匙体制。
Kerberos协议主要用于计算机网络的身份鉴别,其特点是用户只需要输入一次身份验证信息就可以凭借此验证访问多个服务,即SSO。由于每个Client和Service之间建立了共享密匙,是得该协议具有相当的安全性。
client与KDC,KDC与service在协议工作前已经有了各自的共享密匙,并且由于协议中的消息无法穿透防火墙,这些条件就限制了kerberos协议往往用于一个组织的内部。
Kerberos协议分为两个部分:
1.client向KDC发送自己的身份信息,KDC从Ticket Granting Service得到TGT,并用协议开始前Client与KDC之间的密匙将TGT加密恢复给Client。此时只有真正的Client才能利用它与KDC之间的密钥将加密后的TGT解密,从而获得TGT。
2.Client利用之前获得的TGT向KDC请求其他Service的Ticket,从而通过其他Service的身份鉴别。
Client将之前获得TGT和要请求的服务信息发送给KDC,KDC中的Ticket Granting Service将为Client何Service之间生成一个SessionKey用于Service对Client的身份鉴别。然后KDC将这个Session Key和用户名,用户地址,服务名,有效期,时间戳一起包装成一个Ticket发送给Service,不过Kerberos协议并没有直接将Ticket发送给Service,而是通过Client转发给Service。
此时KDC将刚才的Ticket转发给Client。由于这个Ticket是要给Service的,不能让Client看到,所以KDC用协议开始前KDC与Service之间的密钥将Ticket加密后在发送给Client。同时为了让Client和Service之间共享那个秘密,KDC用Client于它之间的密钥将SessionKey加密随加密的Ticket一起返回给Client。
为了完成Ticket的传递,Client将刚才收到的Ticket转发到Service。由于Client不知道KDC与Service之间的密钥,所以它无法篡改Ticket中的信息。同时Client将收到的SessionKey解密出来,然后将自己的用户名,IP打包成Authenticator用Session Key加密也发送给Service。
Service收到Ticket后利用它与KDC之间的密钥将Ticket中的信息解密出来,从而获得Session Key和用户名,IP,服务名,有效期。然后再用Session Key将Authenticator解密从而获得用户名,IP将其与之前Ticket中解密出来的用户名,IP做比较从而验证Client的身份。
如果Service又返回结果,将其返回给Client。
Kerberos主要做了两件事:
Ticket的安全传递;
Session key的安全发布。
安装Kerberos之后,必须配置KDc服务器。配置一个主KDC服务器和至少一个从KDC服务器可以提供颁发凭证是Kerberos服务的基础,因此在尝试其他任务之前必须安装到KDC。
主KDC服务器和从KDC服务器之间最大的差别是,只有主KDC服务器可以处理数据库管理请求。