如何将密码加密到密钥表文件中?

时间:2015-11-18 15:46:03

标签: authentication encryption passwords kerberos keytab

我在Linux系统上使用keytab文件来验证使用kerberos的服务。我想知道这个密码是如何实际存储到该keytab文件中的。正如我们在/ 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

使用该keytab,我可以在不输入密码的情况下获得krbtgt。创建密钥表时,无法与AD / KDC进行通信(因此没有可用于签名的共享密钥或其他内容)。

那么如何将密码加密到keytab中?如果它不是哈希算法 - 是否有可能解密它?

1 个答案:

答案 0 :(得分:7)

通常基于密码的Kerberos密钥来自将特定于算法的密钥派生函数应用于用户提供的密码,并使用用户 principal将命名为salt(以便具有相同密码的两个主体不具有相同的密钥)。使用的实际密钥派生函数在RFC 3961RFC 3962中定义 但RC4配置文件在别处(由Microsoft)定义。

密钥派生是一种单向函数,因此没有可行的方法来解密"关键。