PAC特权属性证书

Posted zpchcbd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAC特权属性证书相关的知识,希望对你有一定的参考价值。

在 Kerberos 最初设计的几个流程里说明了如何证明 Client 是 Client 而不是由其他人来冒充的,但并没有声明 Client 有没有访问 Server 服务的权限,因为在域中不同权限的用户能够访问的资源是有区别的。

所以微软为了解决这个问题在实现 Kerberos 时加入了 PAC 的概念,PAC 的全称是 Privilege Attribute Certificate(特权属性证书)。可以理解为火车有一等座,也有二等座,而 PAC 就是为了区别不同权限的一种方式。

(1)PAC 的实现

当用户与 KDC 之间完成了认证过程之后,Client 需要访问 Server 所提供的某项服务时,Server 为了判断用户是否具有合法的权限需要将 Client 的 User SID 等信息传递给 KDC,KDC 通过 SID 判断用户的用户组信息,用户权限等,进而将结果返回给 Server,Server 再将此信息与用户所索取的资源的 ACL 进行比较,最后决定是否给用户提供相应的服务。

PAC 会在 KRB_AS_REP 中 AS 放在 TGT 里加密发送给 Client,然后由 Client 转发给 TGS 来验证 Client 所请求的服务。

在 PAC 中包含有两个数字签名 PAC_SERVER_CHECKSUM 和 PAC_PRIVSVR_CHECKSUM,这两个数字签名分别由 Server 端密码 HASH 和 KDC 的密码 HASH 加密。

同时 TGS 解密之后验证签名是否正确,然后再重新构造新的 PAC 放在 ST 里返回给客户端,客户端将 ST 发送给服务端进行验证。

(2)Server 与 KDC

PAC 可以理解为一串校验信息,为了防止被伪造和串改,原则上是存放在 TGT 里,并且 TGT 由 KDC hash 加密。同时尾部会有两个数字签名,分别由 KDC 密码和 server 密码加密,防止数字签名内容被篡改。

技术图片

同时 PAC 指定了固定的 User SID 和 Groups ID,还有其他一些时间等信息,Server 的程序收到 ST 之后解密得到 PAC 会将 PAC 的数字签名发送给 KDC,KDC 再进行校验然后将结果已 RPC 返回码的形式返回给 Server。

技术图片

参考文章:https://www.freebuf.com/articles/system/196434.html

以上是关于PAC特权属性证书的主要内容,如果未能解决你的问题,请参考以下文章

Javascript的私有变量和方法共有变量和方法以及特权方法构造器静态共有属性和静态共有方法

使用一条语句对多个属性和表进行 Oracle SQL 特权授权

私有变量和特权方法

vfork()孩子拥有哪些特权?

Linux 权能综述

第十七课 保护模式中的特权级(下)