加密机制Kerberos原理

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

Kerberos的设计意图,是希望整个认证过程不依赖于操作系统安全、主机物理安全、网址认证、网络安全之类,即使网络上传送的数据包被任意地读取、修改和插入数据,它也浑然不惧。这就比https更厉害了。https就是用来保护信息在传输过程中不被窃取篡改的,但它依赖于CA认证中心和证书。

这么牛逼,是怎么做到的?其实就是加密咯。传输的信息都经过加密,所以不怕泄露;而且还可以验证,因此不怕篡改和抵赖。老实说,加密和校验都不是什么新鲜招,但妙就妙在它的加密方式。

它用对方的口令做密钥进行加密。

具体一点,就是它没有用非对称加密,什么私钥公钥、你来我往这么复杂。用的就是对称加密,简单多了。唯一的诀窍,在于许多加密信息,其密钥用的是信息接收者的口令。

什么意思?

在Kerberos机制中,由Client、Application 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也没有什么更好的办法了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kerberos是一个密钥分配协议和鉴别协议,同时也是一个密钥分配中心(KDC)。它采用AES进行加密,因此具有更高的安全性。Kerberos的工作原理如下: 1. 客户端向KDC发送身份验证请求。这个请求包括客户端的身份信息和时间戳。 2. KDC验证客户端的身份,并生成一个票据授予票据(TGT),其中包含客户端的身份信息和一个会话密钥。 3. KDC将TGT发送给客户端。 4. 客户端使用自己的密码解密TGT,并获得会话密钥。 5. 客户端向KDC发送服务票据请求,其中包括服务的标识符和会话密钥。 6. KDC验证客户端的会话密钥,并生成一个服务票据(ST),其中包含服务的标识符和一个服务会话密钥。 7. KDC将ST发送给客户端。 8. 客户端将ST发送给服务。 9. 服务使用自己的密钥解密ST,并验证客户端的身份。 10. 一旦验证成功,服务和客户端可以使用会话密钥进行加密和解密通信。 Kerberos原理是通过共享密钥和票据来实现安全的身份验证和访问控制。客户端只需要进行一次身份验证,就可以使用获得的票据访问多个服务,实现单点登录(SSO)。由于消息无法穿透防火墙,Kerberos通常用于组织内部的应用场景。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Kerberos 原理简介](https://blog.csdn.net/qq_34902437/article/details/106380629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Kerberos协议工作原理](https://blog.csdn.net/qq_32005671/article/details/54862678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值