常見的使用者密碼加密方式以及破解方法

2021-07-24 17:09:24 字數 1316 閱讀 6330

要完全防止資訊洩露是非常困難的事情,除了防止黑客外,還要防止內部人員洩密。但如果採用合適的演算法去加密使用者密碼,即使資訊洩露出去,黑客也無法還原出原始的密碼(或者還原的代價非常大)。也就是說我們可以將工作重點從防止洩露轉換到防止黑客還原出資料。

作為網際網路公司的資訊保安從業人員經常要處理撞庫掃號事件,產生撞庫掃號的根本原因是一些企業發生了資訊洩露事件,且這些洩露資料未加密或者加密方式比較弱,導致黑客可以還原出原始的使用者密碼。

目前已經**的資訊洩露事件至少上百起,其中包括多家一線網際網路公司,洩露總資料超過10億條。本文作者就職於攜程技術中心資訊保安部,文中他將分享使用者密碼的加密方式以及主要的破解方法。

使用者密碼儲存到資料庫時,常見的加密方式有哪些,我們該採用什麼方式來保護使用者的密碼呢?以下幾種方式是常見的密碼儲存方式:

直接明文儲存,比如使用者設定的密碼是「123456」,直接將「123456」儲存在資料庫中,這種是最簡單的儲存方式,也是最不安全的方式。但實際上不少網際網路公司,都可能採取的是這種方式。

使用對稱加密演算法來儲存,比如3des、aes等演算法,使用這種方式加密是可以通過解密來還原出原始密碼的,當然前提條件是需要獲取到金鑰。不過既然大量的使用者資訊已經洩露了,金鑰很可能也會洩露,當然可以將一般資料和金鑰分開儲存、分開管理,但要完全保護好金鑰也是一件非常複雜的事情,所以這種方式並不是很好的方式。

使用md5、sha1等單向hash演算法保護密碼,使用這些演算法後,無法通過計算還原出原始密碼,而且實現比較簡單,因此很多網際網路公司都採用這種方式儲存使用者密碼,曾經這種方式也是比較安全的方式,但隨著彩虹表技術的興起,可以建立彩虹表進行查表破解,目前這種方式已經很不安全了。

特殊的單向hash演算法,由於單向hash演算法在保護密碼方面不再安全,於是有些公司在單向hash演算法基礎上進行了加鹽、多次hash等擴充套件,這些方式可以在一定程度上增加破解難度,對於加了「固定鹽」的hash演算法,需要保護「鹽」不能洩露,這就會遇到「保護對稱金鑰」一樣的問題,一旦「鹽」洩露,根據「鹽」重新建立彩虹表可以進行破解,對於多次hash,也只是增加了破解的時間,並沒有本質上的提公升。

pbkdf2演算法,該演算法原理大致相當於在hash演算法基礎上增加隨機鹽,並進行多次hash運算,隨機鹽使得彩虹表的建表難度大幅增加,而多次hash也使得建表和破解的難度都大幅增加。使用pbkdf2演算法時,hash演算法一般選用sha1或者sha256,隨機鹽的長度一般不能少於8位元組,hash次數至少也要1000次,這樣安全性才足夠高。

一次密碼驗證過程進行1000次hash運算,對伺服器來說可能只需要1ms,但對於破解者來說計算成本增加了1000倍,而至少8位元組隨機鹽,更是把建表難度提公升了n個數量級,使得大批量的破解密碼幾乎不可行,該演算法也是美國國家標準與技術研究院推薦使用的演算法。

常見的使用者密碼加密方式以及破解方法

作者 張輝,就職於攜程技術中心資訊保安部,負責安全產品的設計與研發。作為網際網路公司的資訊保安從業人員經常要處理撞庫掃號事件,產生撞庫掃號的根本原因是一些企業發生了資訊洩露事件,且這些洩露資料未加密或者加密方式比較弱,導致黑客可以還原出原始的使用者密碼。目前已經 的資訊洩露事件至少上百起,其中包括多...

常見的使用者密碼加密方式以及破解方法

作者 張輝,就職於攜程技術中心資訊保安部,負責安全產品的設計與研發。作為網際網路公司的資訊保安從業人員經常要處理撞庫掃號事件,產生撞庫掃號的根本原因是一些企業發生了資訊洩露事件,且這些洩露資料未加密或者加密方式比較弱,導致黑客可以還原出原始的使用者密碼。目前已經 的資訊洩露事件至少上百起,其中包括多...

Linux中檢視使用者密碼(加密方式)

我們知道linux是乙個多使用者的作業系統,也就是說在linux系統中儲存著很多不同使用者的使用者名稱及密碼。那麼如果某乙個使用者的密碼忘記了怎麼辦?首先我們得知道,在linux系統中,使用者名稱被存放在了 etc passwd這個檔案中 密碼存放在 etc shadow中。知道這兩條重要的資訊,那...