跳至主要内容

密碼學相關

加密 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 為目前最常使用的方法。
  • 提高雜湊安全性:因只有雜湊可能還是會有對照表可以破解
    • 後端加鹽處理:加一段只有後端知道的字串到密碼裡面,再雜湊。但鹽巴也有可能被透過找規律的方式找出來。
    • 重複雜湊 (通常兩到三次就能大幅提升破解成本)
  • 重要觀念:沒有一定安全的存密碼方式,只能盡量去提升破解成本來預防