2017-08-16 31 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! –

相關問題