2011-02-25 76 views
1

我在企業系統dba_users(oracle)上偶然遇到了一張表。從HASH獲得原始值

我能夠在此表中找到每個員工的哈希密碼,以及他們的用戶名。

據我所知(從谷歌搜索)用戶名+密碼連接,然後散列。

問題:知道「鹽」(我自己的用戶名),「原始值」(我自己的密碼)以及散列值......在這裏有一個危險是能夠計算散列?

此外 - 谷歌搜索10g哈希 - 似乎有些人認爲他們已經算出了哈希算法。我已經閱讀了關於「彩虹表」和「離線字典攻擊」......最後,我已經使用了oracle 11g,並且該版本中的一個功能是將dba_users中的散列密碼隱藏起來,以便最終用戶可以沒有看到它。

無論如何,我在爲我(即最終用戶)訪問此表的原因而撓頭,以及爲什麼DBA似乎不太擔心它。

+0

select REGEXP_SUBSTR('USER','USER'),'''[^''] +''')雙重PASSWD; Oracle使用哪種散列算法? – wittrup

回答

5

散列密碼然後將散列存儲到數據庫的重點在於,如果這樣做,則不必擔心誰可以在表中看到密碼。

要強調:存儲在數據庫中的密碼(正確計算)的哈希值在沒有原始數據庫的情況下完全沒有用處。

據我所知,對於像md5這樣的算法來說,沒有辦法從散列中對原始密碼進行反向工程。這就是爲什麼當你點擊'我忘記'鏈接時,現在大多數服務都不會向你發送你的密碼 - 相反,他們提供設置一個新密碼(只要你提供舊密碼並且服務比較哈希)。

+1

這些天,無鹽MD5可能非常容易被暴力破解,尤其是在彩虹桌上。強烈建議至少使用更強的(醃製)散列,如SHA-1。 –

+0

謝謝@GoranJovic。對於該表(我的)中的一條記錄,我知道原始值(我自己的密碼)。 – Chains

3

詳細說明@Goran Jovic所說的,通過連接(即醃製)每個散列密碼和用戶名。在提供此密碼方面沒有任何危險。爲了理解這一點,你必須瞭解彩虹桌是如何工作的。彩虹表破解一系列密碼的方式是將預先計算的一系列密碼從密碼加載到內存中。然後,搜索關聯未知密碼的哈希表,查看是否可以在彩虹表中找到匹配項(其中您知道密碼對應於特定的哈希)。然而,通過用獨特的標識符(即用戶名)對哈希進行醃製,你可以擊敗這種攻擊,因爲即使已經看到的密碼也會根據與其相關聯的用戶進行不同的散列。因此,現在,它必須包含每個可能的密碼加上每個可能的用戶名的散列,而不是一個彩虹表,它必須處理數以百萬計的不同密碼組合。這樣的結果空間太大而無法搜索,除非在計算技術上出現了巨大的飛躍,無法用bruteforce戰術來擊敗。