Kerberos krb5p 是如何加密的?

How Kerberos krb5p does encryption?

全部,

我正在尝试将 NAS 驱动器安装到 Linux VM。 我有对传输中的数据进行加密的要求,即我希望在以下情况下对数据进行加密 它从 Linux 写入 NAS dribe

https://www.dellemc.com/hu-hu/collaterals/unauth/technical-guides-support-information/products/storage/docu88304.pdf

根据上述 link krb5p 提供数据加密。 krb5p:Kerberos 身份验证、数据完整性和数据隐私,方法是在通过网络发送数据之前对其进行加密。数据加密需要额外

https://www.varonis.com/blog/kerberos-authentication-explained/ 我了解 Kerberos 相互身份验证的工作原理,但是一旦授予服务访问权限(在我的例子中是 NAS 驱动器),传输到 NAS 的数据将如何加密。 有人可以提供有关“加密”如何与 krb5p 一起使用的其他详细信息或文档吗? 我找不到任何其他详细信息。

根据: https://whyistheinternetbroken.wordpress.com/tag/krb5p/ 使用 krb5p 时: NFS 数据包将使用 Kerberos 配置中指定的 enctype 进行加密。

但是可以指定的可用加密类型是什么?

我附上了一张试图解释消息流的图 b/w Server-KDC-Client

Kerberos 允许客户端和 KDC、KDC 和服务以及客户端和服务之间的相互身份验证。这是通过双方之间的密钥协议实现的。

客户端和 KDC 证明知道共享密钥,KDC 和服务证明知道不同的共享密钥,因此客户端和服务可以生成另一个随机密钥并相互同意。

换句话说,当客户端向服务发送票证时,它包含一个密钥,双方可以在身份验证成功后使用该密钥来加密数据。在这种情况下,该密钥用于保护 NFS 流量。

选择的加密类型有点不确定。这取决于所有三方都同意一个,并且每个人都有机会改变它。在实践中,最终决定权在服务端。它应该是它认为客户端可以处理的最强算法。这通常表示 RC4、AES128 或 AES256。

Kerberos 只提供加密密钥,但它本身并不会神奇地执行加密——这必须由 NFS 客户端和 NFS 服务器自己完成。他们知道 krb5p 已协商,并会在需要时调用相应的 encryption/decryption 函数。 (更具体地说,它发生在构建 NFS 的 SunRPC 层中。)


当 Kerberos KDC 向您发出“nfs/yourserver.example.com”的票据时,该票据包含随机生成的会话密钥的两份副本:一份可由您解密,另一份副本可由该服务器解密。

KDC 将使用最佳 enctype 标记此会话密钥,该 enctype 在您的票证请求中指示的内容与服务器主体持有的 long-term 密钥之间是常见的。通常这将是 AES256-CTS,但如果服务密钥在很长时间内未更改,则可以是 RC4 (arcfour)。

例如,

  • “nfs/yourserver.example.com”主体有 long-term 个 aes256-cts-sha1-96、aes128-cts-sha1-96、arcfour-hmac 密钥, des3-cbc.
  • 您的客户端制作 AS_REQ 表示支持 aes256-cts-sha384、aes128-cts-sha256、aes256-cts-sha1-96、aes128-cts-sha1-96。
  • KDC 选择 aes256-cts-sha1-96 作为会话密钥的最佳加密类型。

此指示存储在票据本身中。如果客户端使用 MIT Krb5 软件,您可以使用 kvno 手动请求服务票据(如果您还没有)然后 klist -e 查看为该票据设置的 enctypes – ” skey" 表示会话密钥要使用的加密类型。

因此,在从 KDC 收到票据后,作为 RPCSEC_GSS 身份验证过程的一部分,您将其发送到 NFS 服务器,现在您和服务器都拥有会话密钥的副本。 (只要服务票有效,相同的会话密钥就会一直使用——通常是 10 小时。)


possible enctypes的集合是:

  • aes256-cts-hmac-sha384-192aes128-cts-hmac-sha256-128:新的,大多数实现尚不支持(而且大多数服务也不会有该类型的密钥)。
  • aes256-cts-hmac-sha1-96aes128-cts-hmac-sha1-96:得到所有 Kerberos 实现的广泛支持。
  • camellia256-cts-cmaccamellia128-cts-cmac:AES 的不错替代品,但在实践中很少使用。
  • arcfour-hmac (RC4):已弃用,但仍偶尔使用。从 Linux 5.10.
  • 消失
  • des3-cbc-sha1:已弃用,但仍在实施。
  • des-cbc-md5des-cbc-crc:完全过时了。希望你永远不会看到那些。

(不要相信网页上说 Linux NFS 客户端仅支持 DES – 已在 2010 年为 v2.6.35 修复,现在完全支持 AES。)