Kerberos的定义
- Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。其认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络傻瓜所有主机的物理安全,并假定网络上传送的数据包可以被任意的读取、修改和插入数据。在以上情况下Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。
协议的安全主要依赖于参与者对世界的松散同步和短周期的叫做Kerberos票据的认证声明。下面是对于这个协议的一个简化描述,它包括以下几个模:
2. AS:认证服务器;
3. KDC:密钥分发中心;
4. TGT:票据授权票据;
5. SGT:服务许可票据;
6. TGS:票据授权服务器;
7. SS:特定服务提供端;
Kerberos流程详解
- 客户机发送客户端名+TGS名(服务许可票据申请)到AS服务器;
- AS在数据库中检查是否有客户保存;
- 如果用户存在则生成临时密钥K1;
- 将客户机的密码的HASH值叫做KC(KEYClient)密钥加密K1,记为KC(K1);
- 产生TGT信息,TGT也包括K1,客户端名,有效期;
- TGT会被一个固定密钥加密,加密的密钥保存在AS服务器和TGS服务器上,命名为Kkdc;
- 发送K1和TGT信息两个信息到客户端;
- 客户端如果密码正确则可生成正确的HASH并可以解密出正确的K1;
- 利用K1为密钥加密客户端名;
- 将K1加密后的客户端名、TGT、加密后的Web服务器名发送给TGS服务器获取服务许可票据SGT;
- TGS服务器验证用户身份用固定密钥Kkdc解密TGT信息来获取TGT中的K1密钥和客户端名 ;
- 将从TGS中解密的K1在解密有客户端传输过来的由K1加密的客户端名,并与TGT信息中的客户端名对比判断;
- 产生服务许可票据SGT,SGT包含TGS为了本次服务生成的临时密钥K2,客户端名,有效期;
- SGT用固定密钥Ks进行加密,分别存放于AS、TGS和WEB服务器;
- 用AS生成的临时密钥K1,为密钥加密K2;
- 将加密后的K2,SGT返回给客户端;
- 客户端用K1解密K2,再用K2加密客户端名;
- 客户端将加密后的客户机名、SGT、时间戳发送给WEB服务器;
- WEB服务器由KS密钥,所有可以解密SGT拿到客户端名和K2密钥;
- WEB服务器通过K2密钥解密客户端名,并于SGT中的客户端名进行比较验证;
- WEB服务器利用K2加密时间戳返回给客户端提供服务;
- 客户端通过K2密钥解密验证Web服务器是合法服务器;