答案是肯定的和否定的,这取决于你的意思。在基本的 Kerberos 模型中,领域中的每个主体通常与 Kerberos 身份验证服务器(密钥分发中心或 KDC)共享一个机密。(我说“通常”是因为只充当客户端的主体可以避免共享秘密,而是使用其他方法向 KDC 进行身份验证,例如通过 PKINIT 的 RSA 密钥对或一次性密码,这可以避免密码猜测这里完全讨论了这个问题。)对于像 Web 服务器这样的软件组件,这是一组随机生成的密钥;有一套而不是只有一套,可以为客户提供对各种加密密码的支持。对于用户,它是从用户密码派生的一组密钥。所以 KDC 掌握着所有的秘密:如果它被泄露,
但是,KDC 实际上并没有用户的密码,只有从密码派生的一组密钥。就 Kerberos 本身而言,这种区别并不重要:密钥是实际的 Kerberos 机密。但是,人们经常为各种系统重复使用密码;因此,如果 KDC 遭到破坏,攻击者将不会立即获得用户密码来尝试访问他们的 GMail 帐户,例如(尽管他现在可以发起字典攻击来尝试发现密码)。
这是否意味着这是 Kerberos 的致命弱点,因为如果 KDC 被入侵,攻击者将知道所有用户的明文密码(而不是获取 Linux 系统的 /etc/shadow,它只会为攻击者提供散列和加盐密码)?
这是一个属性Kerberos;我不会称其为“阿喀琉斯之踵”。Unix 密码哈希方案允许它做一件事:验证明文密码,该密码必须交给服务器。像 Kerberos 和 PKI 这样的系统可以做的远不止这些,而且它们有更多的秘密需要保护,以不同的方式分布,由各自的技术决定。PKI 没有包含所有用户密钥的单一存储区,但它确实具有证书颁发机构 (CA) 的高度敏感密钥,必须像 Kerberos 主体数据库一样小心保护,因为窃取 CA 私钥的方式类似允许攻击者冒充系统中的许多主体。保护 CA 私钥可能比保护 KDC 数据库更容易,因为后者必须在线才能进行 KDC 操作,而前者只需要用于相对不频繁的签名操作(尽管这取决于所讨论的 CA 的性质和用途)。另一方面,基于 Kerberos 密码的身份验证不需要辅助存储或额外的设备(例如智能卡)来保存用户的私钥和受信任的 CA 证书,其对称密码学比公钥操作要快得多。公钥基础设施。等等……有很多比较和权衡。