gpt4 book ai didi

java - pam 共享哈希

转载 作者:行者123 更新时间:2023-11-30 11:44:01 27 4
gpt4 key购买 nike

我正在研究 PAM 模块的设计方式,作为我自己的 JAAS LoginModule 的指南。让我感到惊讶的一件事是,尽管用于访问散列密码的方法大多与散列方法本身正交,但我无法找到任何可以充分利用此属性的 PAM 模块。是因为我忽略了某些安全问题,还是仅仅是尚未探索的问题?

为了进一步解释我的意思,假设我们有 3 种不同的方法来访问散列密码(LDAP、SQL、纯文件)和 2 种散列方法(MD5、SHA1)。目前,每种访问方法都有一个或多个 PAM 模块,每个模块都实现了这些哈希方法中的一种或多种。添加新的哈希方法(比如 BCrypt)意味着需要修改所有这些访问方法以支持新的哈希类型。更好的设计是为每种访问方法配备一个 PAM 模块,使用用户名简单地检索散列密码,然后拥有一组单独的 PAM 模块进行散列验证,散列值在模块之间共享(如密码是)。因此,如果我使用数据库来存储我的密码,并使用 MD5 来验证密码,我的配置将如下所示:

password  required  pam_sql.so
password required pam_md5.so

在此配置中,pam_sql 从数据库中检索哈希密码(如果用户名不存在,则失败)。然后 pam_md5 将散列密码与要测试的密码进行比较,如果不匹配则失败。在使用 Bcrypt 的不同配置中,我只需将 pam_md5 替换为 pam_bcrypt,而不必等待 pam_sql 的开发人员更新它以使用新的哈希方法。

最佳答案

PAM 不了解密码散列或比较密码的方法(无论是否散列)。 PAM 为模块提供了与用户进行“对话”的便利,即向他们提问并从他们那里得到答案。当然,通常的问题是“您的用户名是什么?”和“你的密码是什么?”,但它们不一定是。对于所有 PAM 关心,某些模块可以在决定身份验证过程的结果之前询问用户 5 个问题或不询问。

您要求的是比 PAM 更低层的抽象,为处理散列密码的 PAM 模块子集提供通用服务。

你的问题是什么?你想实现这样的抽象并将其作为标准推广吗?

关于java - pam 共享哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com