Kerberos一词来源于古希腊神话中的Cerberus——守护地狱之门的三头犬,Kerberos是为TCP/IP 网络设计的可信第三方鉴别协议,最初是在麻省理工学院(MIT)为Athena 项目而开发的。Kerberos服务起着可信仲裁者的作用,可提供安全的网络鉴别,允许个人访问网络中不同的机器。
Kerberos模型基于Needham-Schroeder的可信第三方协议,采用DES加密(也可用其他算法替代),它与网络上的每个实体分别共享一个不同的秘密密钥,知道该秘密密钥就是身份的证明。
首先以吃饭为例,阐述Client与Kerbros、TGS及Server之间的关系如下:
Kerberos有一个所有客户和秘密密钥的数据库,由于Kerberos知道每个人的秘密密钥,所以它能产生一个实体证实另一个实体身份的消息。Kerberos还能产生会话密钥,只供一个客户机和一个服务器(或两个客户机)使用。会话密钥用来加密双方间的通信消息,通信完毕,即销毁会话密钥。
Kerberos 协议如下:
客户从Kerberos 请求一张票据许可票据(TGT,Ticket Granting Ticket)作为票据许可服务(TGS,Ticket-Granting Service),该票据用用户的秘密密钥加密后发送给用户;
为了使用特定的服务器,客户需要从TGS中请求一张票据,TGS 将票据发回给客户;
客户将此票据提交给服务器和鉴别器,如果客户的身份没有问题,服务器就会让客户访问该服务。
(1) 请求票据许可票据
客户到Kerberos: c c c,tgs。
(2)票据许可票据
Kerberos到客户: { K c , t g s } K c \{K_{c,tgs}\}K_c {Kc,tgs}Kc, { T c , t g s } K t g s \{T_{c,tgs}\}K_{tgs} {Tc,tgs}Ktgs
(3)请求服务器票据
客户到TGS: { A c , s } K c , t g s \{A_{c,s}\}K_{c,tgs} {Ac,s}Kc,tgs, { T c , t g s } K t g s \{T_{c,tgs}\}K_{tgs} {Tc,tgs}Ktgs
(4)服务器票据
TGS到客户: { K c , s } K c , t g s \{K_{c,s}\}K_{c,tgs} {Kc,s}Kc,tgs, { T c , s } K s \{T_{c,s}\}K_s {Tc,s}Ks
(5)请求服务
客户到服务器: { A c , s } K c , s \{A_{c,s}\}K_{c,s} {Ac,s}Kc,s, { T c , s } K s \{T_{c,s}\}K_s {Tc,s}Ks,
相关缩写表示如下
c c c | 客户(机) |
s s s | 服务器 |
a a a | 客户的网络地址 |
v v v | 票据的有效起止时间 |
t t t | 时间标记 |
K x K_x Kx | x x x的秘密密钥 |
K x , y K_{x,y} Kx,y | x x x与 y y y的会话密钥 |
{ m } K x \{m\}K_x {m}Kx | 以 x x x的秘密密钥加密的 m m m |
T x , y T_{x,y} Tx,y | 使用 y y y的 x x x的票据 |
A x , y A_{x,y} Ax,y | 从 x x x到 y y y的鉴别码 |
Kerberos使用两类凭证:票据(ticket)和鉴别码(authenticator)。
(1)票据
票据用于秘密地向服务器发送持有票据用户的身份识别,票据中还包括有一些信息,服务器能够用这些信息来确认使用票据的客户与发给票据的客户是同一个客户。
Kerberos票据的格式如下: T c , s = s , { c , a , v , K c , s } K s T_{c,s} = s,\{c,a,v,K_{c,s}\} K_s Tc,s=s,{c,a,v,Kc,s}Ks对单个的服务器和客户而言,票据很有用。它包括客户名、服务器名、网络地址、时间标记和会话密钥。这些信息用服务器的秘密密钥加密。
客户一旦获得该票据,他便可以多次使用它来访问服务器,直到票据过期。客户无法解密票据(她不知道服务器的秘密密钥),但她可以以其加密的形式呈递给服务器。票据在网络上传送时,任何在网上窃听的人都无法阅读或修改它。
(2)鉴别码
Kerberos鉴别码的格式如下: A c , s = { c , t , k e y } K c , s A_{c,s}=\{c,t,key\}K_{c,s} Ac,s={c,t,key}Kc,s客户在每次需要使用服务器上的服务时,都要产生一个鉴别码。该鉴别码包括用户名、时间际记和一个可选的附加会话密钥,它们用服务器与客户共享的会话密钥加密。与票据不同的是,鉴别码只能使用一次。客户可以根据需要产生鉴别码(它知道共享的秘密密钥)。
鉴别码可达到两个目的:
(1)初始票据获取
(2)服务器票据的获取
(3)服务请求