iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0

DAY12 認識加密與雜湊

  • 一. 加密?
    • 1-1 對稱式加密
    • 1-2 非對稱式加密
  • 二. 雜湊
    • 2-1 固定長度輸出
    • 2-2 常拿來做什麼?
    • 2-3 為什麼密碼不直接存明文
      • 2-3-1 Salt 鹽值
  • 三. 碰撞

重要名詞

  • 對稱式加密 Symmetric Encryption
  • 非對稱式加密 Asymmetric Encryption
  • 雜湊 Hash
  • 鹽值 Salt
  • 碰撞 Collision

加密 vs 雜湊

加密:

通常可以解密

雜湊:

不是設計來解密還原的


一. 加密?

明文:

原本看得懂、可以辨識的資料

明文經過:

加密演算法 + 金鑰

變成:

密文 Ciphertext

加密主要是為了保護:

機密性


👤 IPAS 115-1 Q37

資料加解密,最主要保護 CIA 中的哪一個?

答案:

機密性 Confidentiality


加密演算法

簡單來說:

用什麼方法去加密

分成兩類:

  • 對稱式加密
  • 非對稱式加密

例如:

  • 對稱式加密:AES、凱薩密碼
  • 非對稱式加密:RSA

金鑰

簡單來說:

以上的加密演算法用什麼值去做加密

解密時必須知道的秘密。

例如:

密碼被往後移了幾格


1-1 對稱式加密

加密與解密:

使用相同金鑰

常見包含:

  • DES
  • 3DES
  • AES
  • RC6

優點

  • 速度快
  • 效率高

適合:

大量資料加密

缺點

金鑰分配問題

雙方要用同一把金鑰,

但該如何把金鑰安全地交給對方?

通常會用:

非對稱式加密

來解決這個問題。


1-2 非對稱式加密

又稱:

公開金鑰密碼學

使用一對不同但互相有關的金鑰:

  • 公鑰
  • 私鑰

1-2-1 公鑰與私鑰

公鑰

可以公開給他人。

私鑰

只有擁有者安全保管。


假設:

用鎖頭舉例應該比較好理解

  1. MIKEY 想傳秘密給 TONY
  2. TONY 給了 MIKEY 一個已經打開的鎖頭,但沒有給鑰匙
  3. MIKEY 將秘密放進去並把鎖頭鎖上,再傳給 TONY
  4. 這時 MIKEY 也打不開鎖
  5. TONY 拿到上鎖的鎖頭後,再用自己的鑰匙打開

保護好私鑰是非對稱式加密的安全前提


1-2-2 非對稱式加密的優缺點

優點

不必先共享同一把秘密金鑰。

適合:

安全交換金鑰

也可以支援:

Digital Signature(數位簽章)

缺點

速度通常比對稱式加密慢


數位簽章

用來證明:

  • 這東西是我發的
  • 沒有被更改過

基本概念:

私鑰簽署、公鑰驗證

目的是:

  • 證明身分
  • 確保內容沒被竄改

例如:

  1. MIKEY 要寄信給 TONY
  2. MIKEY 手上有獨一無二的印章(私鑰)
  3. 所有人都能拿到這個印章的樣本(公鑰)
  4. MIKEY 在要給 TONY 的信上蓋我獨一無二的印章
  5. TONY 收到信後,拿出大家都有的樣本去比對
  6. 確認這封信是不是 MIKEY 本人所寄出的

二. 雜湊

雜湊函數屬於:

單方向函數

原則上:

無法從雜湊值反推回原始資料


2-1 固定長度輸出

不同長度的輸入,

都會產生:

固定長度的雜湊結果

以 SHA-256 為例:

不管是輸入:

A

還是輸入:

MIKEY

輸出的長度都會是一樣的。


👤 IPAS 115-1 Q38

關於雜湊函數,

下列敘述何者正確?

答案:

C:雜湊函數可將任意長度的資料轉換成固定長度的訊息特徵值


2-2 常拿來做什麼?

常用於:

確認完整性

例如:

Python 的檔案,

就有使用雜湊值來確認檔案的完整性。


👤 IPAS 115-1 Q4

軟體更新檔旁提供:

  • SHA-256
  • SHA-512

雜湊值,

主要目的是實現資通安全的哪一項觀念?

答案:

A:完整性


2-3 為什麼密碼不直接存明文

資料庫中直接存:

User = MIKEY
Password = 123456

如果資料庫外洩或被攻擊:

攻擊者會直接看到密碼,毫不費力

比較好的方式是:

Password Hash(密碼雜湊)


但常見的密碼及 Hash,

攻擊者還是可能建立:

Rainbow Table(彩虹表)

進行破解。


2-3-1 Salt 鹽值

在密碼進行雜湊前:

加入隨機產生的值

例如:

User = MIKEY
Password = 123456
Salt = AAA
Hash = QWE

User = TONY
Password = 123456
Salt = BBB
Hash = ASD

兩個密碼一樣,

但因為鹽值不同,

最後產生的雜湊值也不同。

能夠降低:

預先計算 Hash / 彩虹表攻擊的效果


👤 IPAS 115-1 Q39

為有效防範:

「預運算雜湊攻擊」(如彩虹表攻擊)

並確保相同密碼在系統中產生的雜湊值具有唯一性,

系統通常會在:

執行雜湊運算前

於明文密碼中加入一段:

隨機產生的唯一字串

下列哪一項是此種技術於密碼學領域之專業術語?

答案:

A:鹽值 Salt

但:

鹽值只是讓相同密碼產生不同雜湊,並不是加密金鑰


三. 碰撞

通常:

不同的資料應該會得到不同的雜湊值

但有一種例外:

碰撞 Collision

意思是:

兩份不同的輸入,卻輸出了同一個雜湊值


危險的地方

  1. 假設正常檔案的雜湊值為:
Hash = 12345
  1. 有一個攻擊者做了一個惡意檔案
  2. 他讓惡意檔案的雜湊值也變成:
Hash = 12345
  1. 使用者用 Hash 做比對
  2. 誤以為是一樣的檔案
  3. 使用者下載到惡意檔案

上一篇
DAY11 PAM、JIT、Zero Trust、工作負載身分
下一篇
DAY13 PKI、數位簽章、憑證、CA、金鑰生命週期、Hybrid Encryption
系列文
格鬥教練想轉職學資安是否搞錯了什麼(自學第一步)IPAS初級筆記 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言