我在 Linux 系统上使用 keytab 文件通过 kerberos 对服务进行身份验证。我想知道这个密码是如何实际存储到该密钥表文件中的。正如我们在 /etc/passwd 中所知道的,密码是在应用单向散列方法后存储的 - 因此无法从中计算明文密码。
但是如何在 keytab 文件中完成呢?使用 keytab 的进程必须知道密码才能验证用户身份?!它是否使用主密码加密以便可以解密?
我正在使用它来创建一个 keytab 文件:
$ ktutil
ktutil: addent -password -p my_user@MYREALM -k 1 -e rc4-hmac
Password for my_user@MYREALM:
ktutil: wkt my_user.keytab
ktutil: quit
使用该密钥表,我无需输入密码即可获得 krbtgt。创建密钥表时,没有与 AD/KDC 通信(因此没有可以添加用于签名或其他内容的共享密钥)。
那么密码是如何加密到keytab中的呢?如果它不是散列算法 - 是否可以解密它?