密碼學相關
加密 Encryption
-
透過金鑰 (key) 來對原始密碼作加密和解密
-
加密前後的值為一對一的關係
-
分成對稱加密和非對稱加密兩種類別
-
對稱加密
- 如: 凱薩加密法、AES
- 利用同一個 key 來作加密和解密
- 缺點是解密的一方也必須拿到 key,而 key 在傳輸中也可能被偷走,導致資料還是無法被保護到
-
非對稱加密
- 如: RSA
- 利用兩個 key,公鑰和私鑰來達成。
- 安全性較對稱加密高,他利用公鑰來做加密只能用私鑰來解密,因為私鑰未曾經過網路傳輸,即便公鑰被取得也無法做解密。
-
-
透過解密之後就可以知道你的密碼,好處是忘記密碼還能找得回來。
雜湊 Hash
- 透過雜湊函式 (演算法) 來轉換原始密碼
- 加密前後的值為多對一的關係
- 轉換後的值稱為雜湊值。以 SHA-1 演算法為例,是以 20 bytes 組成的
- 雜湊還具備許多特性
- 無論輸入值 (原始密碼) 的長度為何,都會轉換出固定長度的雜湊值
- 轉換後的雜湊值和原先的密碼字元相似性獨立
- 相同的輸入值去做雜湊保證得到相同的雜湊值
- 由於雜湊值長度有限,必然可能發生不同輸入值得到相同的雜湊值,這樣的現象稱作 hash collision
- 雜湊和加密最大的不同為不可逆的特性,雜湊值無法回推得到原本的密碼
- 透過比較雜湊值可以知道你是不是輸入相同的密碼,但如果忘記密碼就只能重新設定
- 常見的雜湊演算法:MD4, MD5, SHA-0, SHA-1, SHA-2。其中 SHA-2 為目前最常使用的方法。
- 提高雜湊安全性:因只有雜湊可能還是會有對照表可以破解
- 後端加鹽處理:加一段只有後端知道的字串到密碼裡面,再雜湊。但鹽巴也有可能被透過找規律的方式找出來。
- 重複雜湊 (通常兩到三次就能大幅提升破解成本)
- 重要觀念:沒有一定安全的存密碼方式,只能盡量去提升破解成本來預防