2010-06-20 20 views
2

良好的安全實踐決不會維護系統的登錄密碼數據庫,而是維護密碼哈希數據庫(使用某種合適的哈希函數)並在登錄時比較密碼哈希提供存儲在數據庫中的信息。僅需要特定字符的登錄

但是,我越來越多地看到我需要登錄的例子(例如)只提供密碼的第3,4,6和8個字符。這是否意味着我的原始密碼必須存儲以便進行字符比較?還是有一種特殊類型的散列函數仍然允許字符比較?

+1

這意味着該網站是愚蠢的和不安全的。 – 2010-06-20 13:51:37

+0

詢問一個字符子集在銀行之間相當普遍,他們往往會強迫你用鼠標點擊下拉以回答鍵盤記錄。但是,除非您爲每個字母組合存儲哈希+鹽,您可以要求您必須存儲明文密碼。因此,從通行短語中請求完整密碼和n個字符是典型的(我相信)。不知道是否還有更好的方法?例如。以某種方式使用某種對稱密碼魔法對n個字符進行驗證,使其更加緊湊的散列/加密數據。 – redcalx 2011-11-08 18:37:04

回答

0

很多銀行都這樣做,通常您通過鼠標點擊而不是使用鍵盤來選擇這些字符。所有這些都是爲了防止鍵盤記錄程序獲取密碼。但是,這意味着他們必須保存明文密碼。

+0

這不是確鑿的,他們可以只是連接字符和散列這些。 – nos 2010-06-20 14:36:06

+0

但是,他們將不得不存儲他們可能要求的每個可能的密碼子集的散列。例如,如果他們總是要求組成密碼的15個字符中的6個,那麼就是5005個哈希。 (至少對我來說)這似乎是每人多一個額外的。 – 2010-06-20 15:12:26

+0

@ qwerty1793:對我也是。如果一個網站確實要求提供密碼字符的隨機子集,那麼我認爲這是他們將完整密碼存儲在後端(但可能仍然是加密的)的有力證據。 – 2010-06-21 17:38:09

3

這並不意味着他們正在存儲明文密碼。例如,這個可以散列你輸入的第3,4,6和8個字符。無論如何,這絕對是非常不安全的。他們基本上只是將密碼縮短爲4個字符。

+2

散列一個字符是毫無用處的,因爲它們只有很少的一部分,而且對純文本字符進行暴力破解並不重要。 – Amnon 2010-06-20 14:12:39