2017-08-16 32 views
3

为什么PostgreSQL默认将用户密码存储在MD5哈希中并不是安全漏洞?我正在研究PostgreSQL的内部,并且已经进入了系统日志记录pg_authid,当我读到MD5哈希加密时,它似乎被认为是过时的。在我看来,如果管理员或用户能够访问底层文件存储,那么他们可以假设破解密码并执行所有凭证启用的操作。为什么PostgreSQL默认将用户密码存储在MD5哈希中,这不是安全漏洞?

我问为什么它不是一个安全漏洞,因为显然PostgreSQL一直是“通用标准认证”,它似乎是军事级别的安全,根据它的wiki,它注意到它来自西方国防组织。

谢谢!

+0

版本10将提供['scram-sha-256'认证方法](https://www.postgresql.org/docs/10/static/auth-methods。 html#auth-password) –

+0

那么说现在在很多默认安装中确实存在一个很大的安全漏洞是否公平? –

+0

@ClodoaldoNeto^ –

回答

3

首先,基于SASL的PostgreSQL 10 adds SCRAM-SHA256,使得这是一个有争议的问题。

对于旧版本:这是一个弱点,但它并不适合多种原因存在很大的安全漏洞:

  • 互联网部署PostgreSQL的情况下,应使用SSL,防止在协议窃听。这大大降低了成功密码盗窃的可能性。

  • 密码被两次腌制。存储在磁盘上的密码用盐进行散列处理,并采用md5摘要。但是,在线路上发送的密码被重新腌制,并且使用特定于认证交换的盐进行哈希处理,因此如果在线路上捕获散列密码,则不能在以后的认证中重播。

如果您设法通过窃听明文连接来获得相同的两次盐渍密码几份,你可能会利用在MD5的弱点找到一个储存在磁盘上一次盐渍版本,并使用该与数据库进行身份验证。

但它有很多工作,并且通过使用SSL几乎完全阻止了它。

就个人而言,我认为“通用标准”接近一堆官僚主义废话。它只适用于一个特定版本的安装,其中包含从硬件到硬件的所有内容。它应该有助于排除总的蛇油,但它肯定没有证明任何东西是安全的。 (地狱,看看政府系统......)

+0

谢谢!有意义的是,数据库的配置为系统增加了一个重要的安全层,并且我认为他们不会将通用标准认证的批准标记发放给任何软件。 @Craig Ringer我很好奇,在哪里可以了解更多关于正确的部署流程的信息,以及如果所有的第二个重点都记录在案? –

+0

@johndrinane我不确定PostgreSQL中md5身份验证握手的细节记录在源代码之外。请参阅'src/backend/libpq/auth.c' –

+0

我会考虑将它添加到文档中,然后我猜... muchos gracias! –

相关问题