加密與雜湊的差異


Posted by fang on 2020-09-20

我記得幾個月前,有一個老師在 facebook 發文,問她有沒有人可以跟他解釋一下加密跟雜湊有什麼不同,這兩者之間是什麼關係,那時候我曾經聽過這兩個名詞,但是還似懂非懂,所以就上網查查資料,查的過程中也有人已經回應老師,我也沒有多想探討些什麼,就是默默地了解答案,當時有人貼了一個漫畫版,在這裡。如今我比當初更了解加密跟雜湊是什麼東西,所以就筆記在這邊摟~

加密有一個相反詞,叫做解密,所以加解密是一個雙向的動作,你如果把資料做加密,我只要有一把鑰匙可以對資料做解密,我就可以看到資料的原貌。這邊又會牽者到中間人攻擊的資安問題,以及後續衍伸出來的公鑰私鑰的方法,這邊著重在雜湊與加密兩者之間的差異,就不多說這一塊。

而雜湊是沒有鑰匙的,如果我把資料做雜湊,是很難從一串雜湊值亂碼知道我的資料原貌是怎麼樣的,所以可以拿來作身份驗證,就是因為沒有鑰匙,如果駭客不知道我用什麼雜湊函數,他是不可能盜用我的密碼的。另外,雜湊有一個特性讓他更適用於身份驗證,當我把一個字串進行雜湊,做一百遍一樣的步驟獲得的雜湊值都會是一樣的。

在這邊我覺得有兩件事情可以說明,有人說雜湊就是資料的身分證,我不這麼去想它,在幾億分之一的可能下,將會有不同的資料獲得相同的雜湊值,那當 A 跟 B 的密碼不同卻獲得同樣的雜湊值會不會影響到資安問題,其實是很難的,因為身份驗證其實只是需要把你輸入的密碼轉換成雜湊值,再把它對應到資料庫存取的雜湊值看看一不一樣這樣就好了,通常身份驗證都會做次數限制,是很難讓你測試別人的密碼到成功的。

另一件事情就是如果你想盜用 B 的帳號,首先你必須知道 B 的帳號,再來你必須知道該系統是使用哪一種雜湊函數,如果你真的都知道了,想要使用彩虹表來破解密碼,系統可能還有使用加鹽來做防範。

加鹽就是在密碼中加調味料,先把密碼加入一些值,再進行雜湊,儘管你嘗試了所有著名的雜湊函數,你也很難知道該系統是怎麼進行加鹽的,如此一來,目前應該不太有人可以突破這道防線了吧!

今天是偏心了,雜湊的部分寫得比較多,做一個總結,加密跟雜湊最大的不同在於雜湊不可逆,加密可逆,其用途也大大的不同,這也是為什麼存在資料庫裡不要存明碼,也不要用加密,最好是使用雜湊,因為資安的問題,我們還是要努力避免資料庫被駭客入侵的!

所以如果有人問說:雜湊是加密的一種嗎?痾...不系。


#加密 #雜湊







Related Posts

股癌

股癌

MTR04_0705

MTR04_0705

動態改變node CSS屬性 (補)

動態改變node CSS屬性 (補)


Comments