加密机制Kerberos原理

网友投稿 1072 2022-09-29

加密机制Kerberos原理

加密机制Kerberos原理

Kerberos是一种加密机制。Kerberos据说是希腊神话中一条三个头的看家神犬,凶猛异常。加密机制以此为名,估计是自认为很厉害,好打得吧。

Kerberos的设计意图,是希望整个认证过程不依赖于操作系统安全、主机物理安全、网址认证、网络安全之类,即使网络上传送的数据包被任意地读取、修改和插入数据,它也浑然不惧。这就比Server、KDC三大部分组成。Client、Application Server好理解,KDC则是一个居于中心地位的中央认证模块,叫KDC(key distribution center):密钥发放中心。KDC由两个模块组成:认证服务模块AS(authentication service),授权服务模块TGS(ticket granting service,票据授权服务)。认证和授权是安全验证的两个主题。认证解决你是谁的问题,授权则解决你能做啥的问题。

Kerberos的运作流程如下图:

结合上图,解说如下:

1、需要凭证

客户端(client)想去访问某应用服务器1(Application 1 Server),结果Application 1 Server说,你啥凭证都没有,没身份,没授权,恕不接待。

2、寻求凭证

客户端于是找到KDC,报上自己的username(应该是账号)。

3、发送凭证

KDC.AS向client发回一个包,里面有一个票据TGT和一把密钥SK_TGS,记作{TGT,SK_TGS},这个包使用了client的口令进行加密。其中,TGT本身又是一个包{ user, address, tgs_name, start_time, lisftime, SK_TGS},它是用KDC.TGS的口令进行加密的!注意到TGT里也包含了一份相同的SK_TGS。SK_TGS是client和KDC.TGS进行会话的密钥。

4、得到凭证

client收到KDC.AS发回的包以后,用自己的口令解开,得到TGT和SK_TGS。然后,client向KDC.TGS发送[TGT,Authenticator]。其中Authenticator={ user, addresss, start_time, lifetime},使用了SK_TGS进行加密。

5、校验凭证

KDC.TGS收到client发来的包后,用自己的口令解开TGT,得到了SK_TGS。然后,用SK_TGS解开Authenticator,将里面的内容与TGT里的相关信息进行比对和验证。

验明正身以后,KDC.TGS为 client 和 Application 1 Server 之间生成一个会话密钥SK_Service;然后发送给 client 一个包:[ {SK_Service}SK_TGS,ST]。其中,SK_Service使用SK_TGS加密,票据ST使用Application 1 Server 的口令加密。同样,ST本身也是一个包,内容为:{ user, address, start_time, lifetime, SK_Service }。请注意里面也有一份SK_Service。

6、开启对话

client收到KDC.TGS发回的包,利用SK_TGS解密得到SK_Service,然后用SK_Service加密生成Authenticator,然后向Application 1 Server发送[ ST,Authenticator ]。

Application 1 Server用自己的口令解开ST,得到里面的会话密钥SK_Service,以此解开Authenticator,然后对比验证。从此与client之间使用SK_Service开始进行了愉快的对话。

7、需要“单点登录”

client想访问第2个应用服务器Application 2 Server,遭拒

8、单点登录

由于在有效时间内,client的身份已被证实,因此无须再向KDC.AS进行身份认证,直接与KDC.TGS申请Application 2 Server的访问授权。。。

由上可知,Kerberos主要是使用了类似电子信封这一安全技术,将密钥放在加密票据里,而而票据的加密往往又使用了对方的口令作为密钥。另外,一个传输包往往存在票据和加密包两种对象,而票据和加密包里的内容又有相关性,用票据里的密钥解开加密包后,可以互为参照,防止了篡改和抵赖。初初看Kerberos,觉得非常绕,各种票据、会话密钥满天飞,但只要明白这个套路,就不难理解。

再总结得彻底一点,就是Kerberos非常重视使用会话密钥。访问不同的对象,就用不同的会话密钥,每人一把,永不落空。会话密钥由KDC统一生成,它怎么发给对方呢?用对方的口令来加密。这真是一个神来之笔。对比https。https的传输内容,主要也是对称加密。但密钥怎么产生呢?是客户端和服务器建立连接之初协商产生的。密钥创建出来之后,为了传输给对方,就用了非对称加密,用对方公钥加密,然后对方再用私钥解密,颇费周折。然后又衍生出我怎么知道这个公钥是你的公钥呢?于是CA和证书又来了。而Kerberos够狠,就用你的口令来加密,那你自己的口令,自己肯定知道啊。

这就引出一个问题,KDC是怎么知道对方的口令的?其实,KDC作为中央认证模块,它预先存储了账号和应用服务器的口令,这也是Kerberos机制一个重要的基础设施。明白了这一层,只能说,Kerberos有自己的优势,但只能用在定制开发的应用系统里,大家知根知底。如果在互联网,似乎除了https也没有什么更好的办法了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅谈小程序确保每个页面都已登陆的方法(小程序的登陆功能是怎么实现的)
下一篇:开发婚庆小程序「婚纱小程序」
相关文章

 发表评论

暂时没有评论,来抢沙发吧~