协议的安全主要依赖于参加者对时间的松散同步和短周期的叫做Kerberos票据的认证声明。 下面是对这个协议的一个简化描述,将使用以下缩写:
- AS(Authentication Server)= 认证服务器
- TGS(Ticket Granting Server)= 票据授权服务器。
- SS(SS)= 服务器。
- TGT(TGT)= 票据授权票据。
-
用户基于客户机程序登录的步骤:
- 用户输入用户名和密码到客户机。
- 客户机程序在输入的密码上运行一个单向函数(大多数为杂凑),这个成为客户机/用户的密钥。
客户机程序户认证步骤:
- 客户机向AS发送一个明文消息,代表用户请求服务。举个例子:"用户XYZ想请求服务。"注意:既不需要向AS发送密钥,也不需要发送密码。
- AS校验这个客户是否在它的数据库里。如果在,AS返回以下两条信息给客户:
- 消息A:用客户/用户密钥加密的客户/TGS会议密钥。
- 消息B:用TGS密钥加密的票据授权票据(包括客户ID,客户网络地址,票据有效期,客户/TGS会议密钥)。
- 一旦客户收到消息A和B,他解密消息A得到客户/TGS会议密钥。会议密钥用在将来与TGS的通信上(注意:客户不能解密消息B,因为它是用TGS的密钥加密的)。这样的话,客户有了足够的信息向TGS证明自己的身份)。
客户服务认证步骤:
- 当申请服务时,客户向TGS发送以下两条消息:
- 消息C:由从消息B中获取的票据授权票据和申请的服务的ID组成。
- 消息D:用客户/TGS会议密钥加密的认证(由客户ID和时间戳组成)。
- 基于收到的消息C和D,TGS从消息C中重新获取消息B。它用TGS的密钥解密消息B。这一步使他得到"客户/TGS会议密钥"。通过使用这个密钥,TGS解密消息D(认证),而后返回给客户以下两条信息:
- 消息E:用服务器密钥加密的用户-服务器票据(包括客户ID, 客户网络地址,客户/服务器会议密钥的有效期)。
- 消息F:用客户/TGS会议密钥加密的客户/服务器会议密钥。
客户服务申请的步骤:
- 基于从TGS收到的消息E和F,客户有足够的信息向SS认证自己。客户联系SS,并向他发出以下两条消息:
- 消息E:由先前的步骤得到(用户-服务器票据,用服务器的密钥加密)。
- 消息G:用客户/服务会议密钥加密的一个新的认证,包括客户ID,时间戳。
- SS用它自己的密钥解密票据重新得到客户/服务器会议密钥。用这个会议密钥,SS解密得到认证,并返回以下消息给客户,确认他的身份真实,并乐于向客户提供服务:
- 消息H:在客户认证中找到时间戳,加1 ,用客户/服务器会议密钥加密。
- 客户使用客户/服务器会议密钥解密确认函,并检查时间戳是否被正确地更新。如果是,客户可以信赖服务器,并可以向服务器发送服务请求。
- 服务器向客户提供其所请求的服务。