當我們把帳號密碼都存在資料庫當中,有個最大的隱憂就是,一旦資料庫遭駭,駭客就可以拿到所有的帳號密碼,造成資訊安全上的危害。
以下簡單簡介常見的幾種密碼保護方式:
編碼
編碼,encode;解碼,decode
編碼並不會修改資料、也沒有任何加密的效果,單純就是換個方式來表達資料而已。最常見的就是摩斯密碼。
對資訊安全,一點幫助都沒有。
加密
加密,encryption
資料加密之前叫做「明文 plaintext」,加密之後叫做「密文 ciphertext」。「加密」是明文變密文,「解密」是密文變明文。
加密有幾個特性:
- 加密是一對一的關係,也就是說密文在固定加密演算法下,只會對應到一個明文。因而衍伸加密的重要特性,可以解密。
- 需要密鑰 (key) 才可以進行加密及解密。
- 分為對稱加密及不對稱加密。
- 對稱加密只會有一把密鑰。常見的對稱加密法是 AES。
- 不對稱加密會有兩把密鑰,一把公鑰 ( public key ) 一把私鑰 ( private key ),公鑰負責加密,私鑰負責解密。常見的不對稱加密法是 RSA。
雜湊
雜湊,Hash function,又稱雜湊函式或是雜湊演算法
雜湊有幾個特性:
- 是單向函式 / 演算法,不能從輸出還原出原本的輸入。
- 同樣的輸入經過雜湊後,一定會得到同樣的輸出。
- 不同長度的輸入,會得到固定長度的輸出。
- 類似鴿籠原理,因為是固定長度的輸出,所以不同輸入可能會產生同個輸出。這樣的情況稱為碰撞 Collision。但一般知名的雜湊發生碰撞的機率很低。
- 通常會加鹽 (salting)。加鹽通常會自動幫使用者產生一段亂碼,可以穿插放在雜湊前中後,有資安概念的可能會每個人都加上一樣的鹽,厲害點的可以每個人的鹽都不同。一般鹽會由亂數產生,然後把鹽也存在資料庫中,這樣就能有更高的防範,
常見的雜湊演算法:
- MD5 ( 已被證實不安全 )
- SHA-1 ( 已被證實不安全 )
- SHA-256 ( 比 MD5 還強、安全性更高的雜湊函數,但對於伺服器來說,越安全、也代表速度越慢 )
但雜湊也不是說不能解,其實就有一張彩虹表(rainbow table),用原本已經做好字串與雜湊值對照的表格,去強硬破解資料庫裡的密碼。所以由此就可以知道加鹽的重要性。
加密及雜湊兩個在資訊領域中,都是對資料的處理方法,兩者最大的差別就在於
加密可以進行解密(可逆),但雜湊不行還原(不可逆)。
除此之外, hash 也常用在檢查檔案的完整性,許多軟體會提供 hash 過後的文字(校驗碼),讓使用者下載過後可以自行驗證檔案是否有被更改或加料過。
評論