在网络空间中,用户进行通信时,要将自己的信息转换成数据,在网络上传输给对方。最初是不加密直接传输的,但是对话信息容易被他人查看,所以就出现了加密模式。这种方式,一定程度上保护了通信安全,但一些“聪明”的黑客,仍能通过第三方攻击的手段偷换密码,以达到窃取信息的目的。
在企业中,大多信息都能产生价值。黑客为了获得利益,不惜耗费巨大的精力研究密码,窃取信息。企业急需一种能够在更高程度上保护信息安全的通信方式。
Kerberos,作为一种网络认证协议,凭借其更高的便利性和安全性,成为了各大企业规范内网通信的首选方案。
本篇文章,我们将为大家详细介绍Kerberos协议的原理。
#Kerberos概述#
Kerberos作为第三方认证机构,在客户端需要与服务端通信时,通过对通信双方的认证,来保证通信安全。
如果用“一手交钱一手交货“来比喻通信过程。我们可以这样理解:客户端把自己的钱(我是谁)交给另一方,另一方验证真假后,把货物交给客户端(返回数据)。
但是在网络世界中,交易双方无法面对面交易,交易的“物品”也不是实物,如何确认交易对象的身份,保证信息没有被篡改,是件困难的事。
Kerberos要做的就是解决这个问题:在发生交易前,确认交易双方可信,并且制定交易规则。
确认身份过程,由交易双方提供证件,即ID等信息,Kerberos根据数据库记录,检查信息是否与记录一致,以防止他人伪冒客户端申请服务,或假冒服务端发送虚假信息。
交易规则主要包括交易期限、交易时间、交易密码等,由Kerberos制定,并发送给通信双方知晓。
其中,最重要的是交易密码,也就是我们常说的通信密钥,用来加密通信双方的数据,可以理解为货物上的“锁”。通信密钥与私钥不同,通信密钥加密的信息可以由通信双方查看,而私玥加密的信息只能由该密钥拥有者查看。
保证通信密钥能准确无误地分发给客户端和服务端,并且不被其他人盗取,是Kerberos中至关重要的一步。
用户在Kerberos环境下请求服务,共有三次通信,每次通信分别进行“用户身份验证“、“授权用户访问服务“和“请求响应服务”。
前两次通信主要通过KDC(密钥分发中心)来实现。KDC通常安装在域控上,由AS和TGS两部分组成。AS负责“用户身份验证”,TGS负责“授权用户访问服务”。
它们间的关系就像个连环扣,每一步都依赖于上一步的成功完成。第一步确定第二步的通信规则,第二步确定第三步的通信规则。接下来我们详细说说这个环环相扣的过程。
【验证用户身份】
通信安全,首先要保证通信双方都是可信的,所以进行身份验证是必不可少的环节。
交钱:客户端将自己的身份信息装进Authenticator(用户私钥加密)发给AS,同时附上请求信息。
交货:AS生成TGS Session Key(客户端私钥加密),用于客户端与TGS通信时加密数据。AS将第二阶段的通信内容装进TGT(TGS私钥加密),将它和TGS Session Key(客户端私钥加密)一起返回给客户端。
交易规则:
AS接收到客户端信息后,并不是立即接受交易,而是先在AD数据库中查找是否有该用户记录。如果存在,则用该用户的密码HASH解密Authenticator,解密成功则允许交易。
也就是说AS只接受特定用户的交易,如果请求用户不在它的信任名单内,就会拒绝交易。这也是Kerberos维护域内安全的一种方式。
客户端收到“货物“后,发现两件货物都被”上了锁“,TGS Session Key上的”锁“可以用客户端的密钥解开。但是TGT上的锁只能由TGS解开,客户端无法打开也看不到里面的内容,只能直接转交给TGS。
【授权客户端访问服务】
在拿到TGT后,客户端就可以用它跟TGS做交易了。
交钱:客户端同样将包含自身信息的Authenticator(TGS Session Key加密)发给TGS,同时附上TGT。
交货:TGS生成Service Session Key,用于客户端与服务端通信时加密数据。再将第三阶段的通信内容封装进Ticket for Service(Service Secret Key加密),将它和Service Session Key(TGS Session Key加密)一起发送给客户端。
交易规则
TGS收到货物后,发现这两件货物中,只有TGT上的锁可以解开。但是解开后,在里面找到了一把钥匙——TGS Session Key,这把钥匙正好可以解开 Authenticator的锁,于是它就得到了全部货物中的信息。
进行身份验证时,通过对比TGT和Authenticator中用户信息就能判断“发件人”是否可信。
TGS在对比完用户信息后,还会检查货物中的其它信息来保证安全性,比如检查时间戳判断这批货物是否过期,检查TGS缓存查看是否客户端已经申请过该服务……
同样,客户端收到TGS发来的货物后,能够用TGS Session Key解开Service Session Key,但无法打开Ticket for Service上的锁,于是把Ticket for Service转发给服务端。
【请求响应服务】
交钱:客户端将Authenticator(Service Session Key加密)发送给服务端,同时附上Ticket For Service。
交货:用Service Session Key加密数据,开始通信。
同TGS一样,服务端收到Authenticator和Ticket后,用私钥解密Ticket,获得TGS封装给它的信息。再用其中的Service Session Key解密Authentictor,获得客户端封装给它的信息。
通过对比客户端信息判断用户身份是否可信,再检查时间戳、生命周期等保证会话安全性。
之后,客户端和服务端就能愉快地进行通信啦!
由此可见,为了把通信密钥安全地送到客户端和服务端手里,Kerberos废了多大的力,下面这张图总结了kerberos协议在整个交易过程中所用到的密钥。
#结语#
尽管Kerberos的认证模式已经能满足大多数企业的安全需求了,但这样就足够了吗?不是的,其中还存在很多威胁。AD域的攻击行为,很多都与Kerberos相关,比如哈希传递、黄金票据、Kerberoast攻击等。了解Kerberos协议的作用原理后,我们就可以针对各个阶段特有的威胁采取针对性的防护措施,帮助我们选择智能运营方案。
以上就是我们给大家介绍的Kerberos协议的全部内容,下一篇文章中,我们将继续为大家介绍ntlm协议。
如若转载,请注明原文地址