Kerberos简介
- 麻省理工大学发明
- 客户端/服务器结构与DES加密技术,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证
- 一种应用对称密钥体制进行密钥管理的系统,支持SSO
- 不适应互联网环境
- UNIX 和 Windows 作为默认的安全认证服务集成进操作系统
- 苹果的Mac OS X也使用了Kerberos的客户和服务器版本
- Red Hat Enterprise Linux4 和后续的操作系统使用了Kerberos的客户和服务器版本
Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。
协议的安全主要依赖于参加者对时间的松散同步和短周期的叫做Kerberos票据的认证声明。
相关概念
AS(Authentication Server)= 认证服务器 KDC(Key Distribution Center)= 密钥分发中心 TGT(Ticket Granting Ticket)= 票据授权票据,票据的票据 TGS(Ticket Granting Server)= 票据授权服务器 SS(Service Server)= 特定服务提供端
认证流程
- 客户端用户发送自己的用户名到KDC服务器以向AS服务进行认证。
- KDC服务器会生成相应的TGT票据,打上时间戳,在本地数据库中查找该用户的密码,并用该密码对TGT进行加密,将结果发还给客户端用户。
该操作仅在用户登录或者kinit申请的时候进行。
客户端收到该信息,并使用自己的密码进行解密之后,就能得到TGT票据了。这个TGT会在一段时间之后失效,也有一些程序(session manager)能在用户登陆期间进行自动更新。
- 当客户端用户需要使用一些特定服务(Kerberos术语中用"principal"表示)的时候,该客户端就发送TGT到KDC服务器中的TGS服务。
- 当该用户的TGT验证通过并且其有权访问所申请的服务时,TGS服务会生成一个该服务所对应的ticket和session key,并发还给客户端。
- 客户端将服务请求与该ticket一并发送给相应的服务端即可。
简化流程
- Client向KDC申请TGT(Ticket Granting Ticket)。
- Client通过获得TGT向KDC申请用于访问Server的Ticket。
- Client最终向为了Server对自己的认证向其提交Ticket。