首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pam共享哈希

pam共享哈希
EN

Stack Overflow用户
提问于 2012-06-09 22:47:09
回答 1查看 311关注 0票数 2

我正在研究如何将PAM模块设计为我自己的JAAS LoginModule的指导方针。令我惊讶的一件事是,尽管用于访问散列密码的方法与散列方法本身大部分是正交的,但我无法找到任何可以很好地利用此属性的PAM模块。是因为我忽略了一些安全问题,还是仅仅是因为还没有探索到的问题?

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

代码语言:javascript
复制
password  required  pam_sql.so
password  required  pam_md5.so

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-10 23:22:24

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10961937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档