信息安全工程师知识点:Kerberos协议过程
在Kerberos协议中:用户(C)和认证服务器(AS)共享密钥Kc,认证服务器(AS)和票据许可服务器(TGS)共享密钥Ktgs,票据许可服务器(TGS)和服务器(V)之间共享密钥Kv,但是用户(C)和服务器(V)之间没有密钥共享,因此用户想要访问服务器,就必须通过认证服务器(AS)和票据许可服务器(TGS)获得相应的密钥Kc,v。
Kerberos协议的第一阶段:用户(C)和认证服务器(AS)的交互,用户(C)获取票据许可服务器(TGS)的票据许可票据Tickettgs。
用户(C)向AS发送请求IDc:用户(C)的标识IDtgs: 用户请求访问TGS;TSl:时间戳,让AS验证用户端时间的有效性,以防止重放攻击。
AS返回应答信息给用户(C): 基于用户(C)和AS共享口令Kc的加密,使得AS和用户端可以验证口令,并保护通信安全Ekc:基于用户口令的加密,使得用户端可以验证口令,以保护认证服务器返回给客户端的信息,用户可用Kc解密Kc:由AS产生,是用户与TGS之间进行信息交换的临时口令;IDtgs:确认这个票据是为TGS制作的TS2;时间戳LT2:告知用户该票据的有效性Tickettgs;用户用来访问TGS的票据,由Ektgs加密,可以重用,从而用户不用重复被AS认证。Ektgs: 使用AS和TGS才知道的密钥Ktgs来加密信息,防止信息被篡改。Kctgs: 用户C和TGS之间的会话密钥。IDc:指明票据Ticket的正确主人。
具体过程:用户(C)将自己的信息{IDc,IDtgs,TS1}发送到AS进行验证;AS验证用户的身份后返回给用户一个信息{Kc,tgs,IDtgs,TS2,LT2,Tickettgs},这个信息由Ekc进行加密,用户可以用自身和AS共享的密钥Kc来解密。这个信息中包含了用户可以访问票据许可服务器(TGS)的票据Tickettgs以及用户和票据许可服务器(TGS)之间通信的密钥Kc,tgs。
Kerberos协议的第二所段:用户(C)与票据许可服务器(TGS)交互,用户(C)获取服务器(V)的服务许可票据Ticketv。
用户(C)向票据许可服务器(TGS)发送请求IDv:用户请求服务器Tickeitgs:
向TGS证实该用户已经被AS认证AUc:由用户的客户端生成,由Ekc,tgc加密,用于验证ticket。Ekc,tgc: 使用用户(C)和TGS共享的密钥Kc,tgs来加密,以保护TGS返回给用户(C)的信息,可用Kc,tgs解密。
票据许可服务器(TGS)返回应答信息给用户(C):基于用户(C)和TGS共享口令Kc,tgs的加密,使得TGS和客户端可以验证口令,并保护通信安全;Kc,v由TGS产生,是用户和服务器(V)之间进行信息交换时的临时口令;IDv:确认该票据是为服务器而签发;TS4:时间戳Ticketv;由Ekv加密用户用来访问服务器的票据。Ekv:使用TGS服务器知道的会话密钥Kv加密信息以防止信息被篡改。
具体过程:用户(C)将访问TGS的票据和对服务器的请求以及自己的信息。{IDv,Tickettgs, AUc}发送到TGS进行验证TGS验证用户的身份以及请求后返回给用户一个信息{Kc,v, IDv, TS4, Ticketv},这个信息由进行加密,用户可以用自身和TGS共享的密钥Kc,tgs来解密。同时这个信息中包含了用户可以访问服务器(V)的票据Ticketv以及用户和服务器(V)之间通信的密钥Kc,v。
Kerberos协议的第三阶段:用户(C)与服务器(V)交互,用户(C)获得服务。
用户(C)向服务器(V)发送服务请求Ticketv:向服务器证实该票据己被AS和TGS认证;AUc:由用户的客户端生成,用于验证ticket。
服务器(V) 返回应答信患给用户(C): 基于用户(C)和服务器共享口令Kc,v来加密,使用户确认这报文来自于服务器(V); TS5+1:时间戳,使用户确信这不是报文重放攻击。
具体过程:用户(C) 将访问服务器(V) 的票据和自身的信息{Ticketv, AUc}发送给服务器进行验证:服务器验证用户的身份以及请求后,返回给用户一个信息{TS5+1}这个信息由Ekc,v进行加密,用户可以用自身和服务器之间共享的口令Kc,v来解密。同时用户可以开始访问服务器。