omo*_*ser 4 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
Run Code Online (Sandbox Code Playgroud)
使用该keytab,我可以在不输入密码的情况下获得krbtgt.创建密钥表时,无法与AD/KDC进行通信(因此没有可用于签名的共享密钥或其他内容).
那么如何将密码加密到keytab中?如果它不是哈希算法 - 是否可以解密它?
通常,基于密码的Kerberos密钥来自将特定于算法的密钥派生函数应用于用户提供的密码,并使用用户主体名称作为salt(因此具有相同密码的两个主体将不具有相同的密钥).使用的实际密钥派生函数在RFC 3961和RFC 3962中定义, 但RC4配置文件在别处(由Microsoft)定义.
密钥派生是单向函数,因此没有可行的方法来"解密"密钥.