【網絡安全】加鹽和胡椒即增強銀行保安?銀行保存客戶密碼 不可單靠哈希算法

博客 12:48 2022/09/20

分享:

分享:

上一期銀行閑談 (183) 談到負責任的企業在用戶設定密碼後,並不會把密碼直接儲存在資料庫,而是會透過哈希算法 (hashing) 來把密碼變成另一串字串 (hashed value) 放在資料庫裏。

一旦資料庫外洩,黑客就算得到這些 hashed value,理論上都沒有簡單、直觀的方法將其反哈希 (reverse hash) 成本來的模樣;可是只要有足夠的算力、時間和儲存空間,黑客大可以把所有密碼組合都 hash 一遍,這樣便可以利用這些 hashed value 對照出本來的密碼。

例如如果密碼是 0–999999,黑客又知道企業用的是 SHA-1 算法,黑客便可以先把這 100 萬個組合全部 hash 一遍,再與資料庫裏的密碼對照便可以了,過程也不了 2 秒鐘。

    點擊圖片放大

所以單單用 Hash 是不夠的,還要加些鹽 (salt) 和加些胡椒 (pepper) 調調味才行。

什麼是 salt 什麼是 pepper 呢?今期繼續和大家科普一下吧。

如果資料庫一旦外洩,下一步就是要大大增加Reverse Hash的所需時間了

上一次有網友問,為什麼儲存密碼要搞到那麼麻煩,把資料庫加密不就好了嗎?

資料庫當然是加了密,不過不論怎麼加密,要「核對密碼」就是要把資料庫解密了、再把資料庫裏的密碼拿出來核對才行,所以說無論上多少個鎖,最後都是要解鎖,資料庫都是有整個被偷出來的風險咯。

萬一真的被偷了,下一步想的就是怎麼增加黑客 reverse hash 的時間,所需時間增加,企業就能爭取時間做出補救措施,而這個方法便是在密碼上加鹽 (salt) 了。

加salt怎麼大大增加Reverse Hash的時間呢?

繼續上次的例子,在最簡單的情況下,hash 一百萬個字串只需要 2 秒鐘,這樣「整個資料庫」就被暴力地 (brute-force) 破解了。

但如果我們在 hash 每個密碼的時候,都隨機加一串字 (salt) 在前面,例如第一個密碼就加 “!asdf34”、第二個密碼就加 “(7af&nf5” 在密碼前面,即是變了 「salt + 密碼」後才再 hsah,這樣的話就算 2 個用戶用了一樣的密碼 (例如 “myPassword”),由於 salt 不一樣,hash 出來的結果就不一樣,黑客就沒辦法簡單得知兩個密碼是不是一樣了。

而由於每個用戶的 salt 都不一樣,黑客就要根據每一個 salt 把所有可能的密碼都 hash 一次,所需暴力破解的時間就會直線增加。

繼續之前的例子,要 Hash 0–999999 合共100 萬個組合要 2 秒,如果資料庫內有 100 萬個用戶,因為每個用戶的 salt 都不一樣,所以每個用戶都需要 2 秒時間破譯,那全數破譯 100 萬個用戶就要:

100 萬個用戶 X 2 秒 = 200 萬秒 = 超過 23 天的時間。
只需要為每個密碼都加一個 salt,就可以大大增加黑客破譯密碼的時間喇。

加Pepper又是什麼一回事呢?Pepper和Salt又有什麼分別呢?

一般 salt 會和 hashed value 一起放在同一個資料庫內,所以如果黑客能突破重重防衛偷取 hashed value,就能同步把 salt 一起偷取,所以 salt 只能夠增加黑客破譯 hashed value 的時間,但沒有把保安系數提升的。

Pepper 和 Salt 其實很類似,都是一串隨機的數字,當密碼需要 hash 的時候,就會以「salt + pepper + 密碼」的方式 hash,但 Salt 和 Pepper 有 2 個分別:

Salt 是每個用戶都不一樣的、而 Pepper 就只有一個
Salt 是和 hashed value 放在一起的,而 Pepper 一般會存放於一個上了鎖的金鑰庫裏

    點擊圖片放大

由於 Pepper 是上了鎖、也不跟 Salt 和 hashed value 存放在一起,黑客就算要暴力破解,也要同時偷到金鑰庫裏的 pepper 才可以。

在偷取資料庫外,還要同時破解金鑰庫,難度當然高很多。這也解釋了為什麼 pepper 只需要一個,因為 pepper 的重點是「另一把鎖」,如果能破解金鑰庫,1 個和 100 萬個 pepper 都沒什麼差了。

銀行是怎樣儲存大家的密碼的呢?鹽和胡椒又怎樣加強銀行的保安系數呢?

今期和大家分享了企業在儲存密碼的時候,在 hashing 以外 salt 和 pepper 怎麼保護大家在資料庫裏儲存的密碼:

Salt 是一個每個用戶獨有的字串,一旦資料庫外洩,將有效大大延長黑客全面破解密碼的所需時間;
Pepper 是另一串存放於另一個密碼庫的字串,由於密碼會以「salt + pepper + 密碼」的方式 hash,沒有 pepper 就不能暴力破譯 hashed value,這將逼使黑客在偷取資料庫時,必須同時偷取 pepper,這便大大增加破譯的難度了。
最後一點網絡保安小提示,在 salt 和 pepper 以外,最安全的方法便是避免重覆使用密碼,因為一旦密碼外洩,也能把影響減至最低;如果企業提供雙重認証,也不要怕麻煩儘快啟用吧。

網絡罪案每年都在極速增加,就算企業多麼努力,最有效仍然是源頭堵截,即是從你和我開始小心處理自己的密碼喇!

【文章來源:華田銀行;已獲授權轉載。原題:銀行閑談 (184) — 銀行是怎樣儲存大家的密碼的呢?鹽和胡椒又怎樣加強銀行的保安系數呢?】

【關於作者】

兒時夢想做i-banker,結果做了bank worker,還要是retail那種。過去在各大小銀行不同部門流徙,叫人借錢、催人還錢、審批貸款、出股票app、出借錢app、出信用卡、廣告策劃、銷售管理、分行佈點、生物認證、電子排隊、機器學習、敏捷開發,到現在還未安定下來。不懂財經、不懂經濟,只想談一下「銀行」這回事。

【石Sir一周前瞻及異動股】中國財險、澳博控股、浙江世寶

=====

想盡早財務自由,提早退休,立即免費下載《香港經濟日報》App取經

開啟hket App,閱讀全文

撰文 : Wallace Tin 華田銀行

欄名 : 華田銀行

緊貼財經時事新聞分析,讚好hket Facebook 專版
訂閱《香港經濟日報》電郵通訊
收取第一手財經新聞資訊 了解更多投資理財知識 提交代表本人同意收取香港經濟日報集團所發出的推廣訊息,你也可以查閱本網站的私隱政策使用條款