National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 78 24°C PM2.5 18
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 34

資訊安全:惡意程式、攻擊與密碼學

病毒、釣魚、加密、雜湊與數位簽章
Interaction 30 minute(s)

Learning Objectives

  • 說出資訊安全的三個目標:機密性、完整性、可用性
  • 分辨病毒、蠕蟲、木馬、勒索軟體、間諜軟體,並說出對應的防護方法
  • 辨認釣魚訊息的常見特徵,說明多因素驗證為什麼能保護帳號
  • 分辨對稱加密與非對稱(公開金鑰)加密,用小數字的 RSA 走一次加密與解密
  • 說出雜湊的特性,以及網站為什麼存雜湊而不存密碼、為什麼要加鹽
  • 說明數位簽章與憑證怎麼證明「是誰送的、有沒有被改過」

一則包裹簡訊

你收到一則簡訊:「您的包裹因地址不完整無法配送,請於今日內點擊連結更新資料。」連結點開是一個長得很像物流公司的網頁,要你輸入姓名、地址和信用卡號碼。

這一課要回答幾個問題:

  1. 電腦上會遇到哪些威脅?哪些是程式造成的,哪些是衝著「人」來的?
  2. 密碼怎麼設才安全?為什麼登入時還要再輸入一次手機上的驗證碼?
  3. 瀏覽器網址列的鎖頭背後,用了哪些密碼學工具?加密、雜湊、數位簽章各解決什麼問題?

資訊安全的三個目標

目標 意思 被破壞的例子
機密性(confidentiality) 只有該看的人看得到 個資外洩、密碼被偷
完整性(integrity) 資料沒有被偷偷改掉 轉帳金額在傳送途中被竄改
可用性(availability) 需要時用得到 檔案被勒索軟體鎖住、網站被大量流量灌爆而無法連線

這三個英文字的字首合起來常被稱為 CIA。後面每一種威脅與防護,都可以問一句:它破壞或保護的是哪一個目標?

本課只介紹觀念與防護方法。未經授權存取別人的電腦、帳號或資料是違法行為;想學資安實務,請在課程或合法授權的練習環境中進行。

惡意程式的種類

惡意程式(malware)是故意設計來造成損害、竊取資料或控制電腦的軟體。常見的種類依「怎麼傳播」與「做什麼」來分:

種類 怎麼傳播 會做什麼
病毒(virus) 附在其他檔案或程式上,使用者執行那個檔案時才發作並感染其他檔案 破壞或修改檔案
蠕蟲(worm) 自己透過網路找有漏洞的電腦複製過去,不需要使用者執行 大量占用網路與電腦資源
木馬(Trojan horse) 偽裝成有用的軟體(破解版、免費小工具),讓使用者自己安裝 開後門讓別人遠端控制、偷資料
勒索軟體(ransomware) 常透過釣魚信件附件或未修補的漏洞進入 把檔案加密,要求付款才給解密金鑰
間諜軟體(spyware) 常和其他軟體綁在一起安裝 偷偷記錄鍵盤輸入、瀏覽紀錄、帳號密碼
廣告軟體(adware) 和免費軟體綁在一起 不斷跳出廣告、改掉瀏覽器首頁

被入侵的電腦也可能被集中控制,組成殭屍網路(botnet),在主人不知情的情況下被拿去寄垃圾郵件或灌爆別人的網站。

防護的基本功

做法 擋住什麼
作業系統與軟體保持更新 很多惡意程式利用的是已經有修補程式、但使用者沒有更新的漏洞
只從官方商店或原廠網站安裝軟體,不用破解版 木馬、綁在一起的間諜軟體
開啟作業系統內建的防毒與防火牆 已知的惡意程式、未經允許的連線
平常用一般使用者權限,不隨便按「允許」 惡意程式取得系統管理權限
定期備份,而且至少一份備份平常不連在電腦上 勒索軟體、硬碟故障;檔案被鎖住時可以直接從備份還原

備份常用「3-2-1」原則來記:至少 3 份資料、存在 2 種不同的媒體、其中 1 份放在別的地方。

社交工程與釣魚

最常見的入侵方式不是破解技術,而是騙人。利用人的信任、恐懼或貪小便宜,讓人自己交出密碼或執行檔案,稱為社交工程(social engineering)。

釣魚(phishing)是最常見的社交工程:假冒銀行、物流、學校、網購平台寄出訊息,引導你到假網站輸入帳號密碼或信用卡。透過簡訊的叫簡訊釣魚,針對特定對象、內容量身打造的叫魚叉式釣魚(spear phishing)。

釣魚訊息的常見特徵

特徵 例子
製造急迫感 「今日內未處理將停權」「最後通知」
要你提供不該提供的東西 密碼、簡訊驗證碼、信用卡背面的末三碼
網址和官方的不一樣 字母換成長得像的數字(examp1e.com)、多了一段(example.com.login-check.example.net)
好到不像真的 中獎、退稅、超低價
意外的附件 「發票.zip」「薪資調整.exe」

遇到可疑訊息怎麼做

  1. 不要點訊息裡的連結登入。自己打官方網址,或打開原本就裝好的官方 App 查看。
  2. 用官方網站上的電話查證,不要打訊息裡留的電話。
  3. 已經輸入了密碼:立刻到官方網站改密碼,並檢查其他用同一組密碼的帳號。已經輸入了信用卡:馬上打給發卡銀行。
  4. 在臺灣,懷疑是詐騙可以撥打 165 反詐騙諮詢專線查證。

密碼與多因素驗證

密碼:長度最重要

猜密碼的難度取決於「所有可能的組合有多少」:可用字元數的密碼長度次方。

密碼規則 可能的組合數
6 位數字 10⁶=100 萬
8 個小寫字母 26⁸ ≈ 2.1×10¹¹
8 個大小寫字母加數字 62⁸ ≈ 2.2×10¹⁴
16 個小寫字母 26¹⁶ ≈ 4.4×10²²

把長度加倍,組合數不是變兩倍,而是變成原本的平方。所以一句好記的長句子(例如四、五個不相關的詞串在一起)通常比短而複雜的密碼更安全,也更好記。

另外兩個原則:

  • 每個網站用不同的密碼。一個網站外洩時,別人會拿同一組帳號密碼去試其他網站。記不住這麼多組,就用密碼管理器。
  • 不要用個人資訊:生日、學號、手機號碼都很容易查到。

多因素驗證(MFA)

只靠密碼,密碼外洩就失守了。多因素驗證(multi-factor authentication)要求同時提供兩種以上不同類型的證明:

類型 例子
你知道的 密碼、PIN 碼
你擁有的 手機(收簡訊驗證碼、驗證器 App 的一次性密碼)、實體安全金鑰
你本身的 指紋、臉部辨識

就算密碼被釣走,對方手上沒有你的手機,還是登不進去。也因為這樣,簡訊驗證碼絕對不能告訴任何人,包括自稱是客服或警察的人:給出驗證碼,等於把第二道鎖的鑰匙交出去。

有些網站支援通行金鑰(passkey):用手機或電腦上的指紋、臉部辨識解鎖,背後用的是後面會介紹的公開金鑰密碼學,不需要記密碼,也不會被假網站騙走。

想一想:威脅與防護

1.

你收到簡訊:「包裹地址有誤,請點連結更新資料並支付補運費 25 元。」最好的做法是?

2.

勒索軟體把你電腦裡的檔案全部加密,要求付款才給解密金鑰。事前做好哪一件事,最能讓你不付錢也能恢復檔案?

3.

有人打電話自稱是銀行客服,說你的帳戶有異常,請你念出剛剛收到的簡訊驗證碼「以便解除鎖定」。應該怎麼做?

第 1 次作答

加密的基本名詞與凱撒密碼

加密(encryption)是把看得懂的資料變成看不懂的資料,只有擁有正確金鑰的人才能還原。

名詞 意思
明文(plaintext) 原本的訊息
密文(ciphertext) 加密後的訊息
演算法 加密與解密的步驟
金鑰(key) 演算法需要的祕密參數;同一個演算法,換一把金鑰結果就不同

現代密碼學有一個重要原則(以提出者 Kerckhoffs 命名):系統的安全應該只依賴金鑰保密,就算演算法完全公開也一樣安全。所以標準的加密演算法都是公開的,經過全世界專家檢驗;要保密的只有金鑰。

凱撒密碼

最古老的例子之一。相傳古羅馬的凱撒在書信中把每個字母換成字母表中往後數第 3 個(A 寫成 D、B 寫成 E),後來把「每個字母往後移固定格數」的方法統稱為凱撒密碼。這裡的金鑰就是「移幾格」。

原文:H E L L O
位移 3 ↓ ↓ ↓ ↓ ↓
密文:K H O O R

它有兩個弱點:

  • 金鑰太少:只有 25 種有意義的位移,一個一個試很快就試完。
  • 頻率不變:英文裡 E 最常出現,加密後最常出現的字母,很可能就是 E 移過去的。

下面的練習會讓你親手感受這兩點。

互動練習:凱撒密碼與字母頻率

上方切換「加密/解密」並拉動位移,輸入的文字會即時轉換,下方的對照表顯示每個字母變成什麼。依序完成任務:把 HELLO 加密;載入第一段密文,切到解密並調整位移解開它;載入較長的密文,看字母頻率圖最高的那個字母,推算位移後解開;最後回答一個問題。也可以按「列出全部 25 種位移」,看看金鑰只有 25 種代表什麼。

對稱加密與公開金鑰加密

對稱加密:同一把金鑰

凱撒密碼的加密與解密用同一把金鑰(位移幾格),這類方法稱為對稱加密。現代最常用的對稱加密是 AES(進階加密標準),金鑰長度 128 或 256 位元,速度很快,適合加密大量資料,例如整顆硬碟或一整段影片串流。

對稱加密有一個難題:金鑰怎麼交給對方? 如果能安全地把金鑰交過去,似乎直接把訊息交過去就好了。在網路上,你和購物網站從來沒見過面,要怎麼約定一把只有雙方知道的金鑰?

公開金鑰加密:一對金鑰

1976 年,Diffie 與 Hellman 發表〈New Directions in Cryptography〉,提出公開金鑰密碼學的構想,以及讓雙方在公開的網路上協商出共同金鑰的方法(Diffie–Hellman 金鑰交換)。1977 年,MIT 的 Rivest、Shamir、Adleman 提出 RSA(取三人姓氏的字首),是第一個廣泛使用的公開金鑰加密方法。

公開金鑰加密(又稱非對稱加密)每個人有一對金鑰:

公鑰(public key) 私鑰(private key)
給誰 公開給所有人 只有自己保管,永遠不給別人
加密時 別人用你的公鑰加密要給你的訊息
解密時 只有你的私鑰解得開

就像一個大家都能投信、只有你有鑰匙打開的信箱。

RSA 的安全性建立在一個數學事實上:兩個大質數相乘很容易,但把乘積分解回原本的兩個質數非常困難。公鑰裡有乘積 n,私鑰需要知道 n 是哪兩個質數相乘;真實的 n 有數百位數,目前沒有有效率的方法分解它。

兩種一起用

公開金鑰加密的計算比對稱加密慢很多。實務上(例如 HTTPS)兩者合作:先用公開金鑰的方法安全地約定一把臨時的對稱金鑰,接下來大量的資料都用對稱加密。

對稱加密 公開金鑰加密
金鑰 雙方共用同一把 每人一對:公鑰與私鑰
速度 快 慢
難題 金鑰怎麼安全地交給對方 怎麼確定拿到的公鑰真的是對方的(見後面的憑證)
常見用途 加密大量資料 約定金鑰、數位簽章

互動練習:用小數字走一次 RSA

上方選兩個質數 p、q 與公開指數 e,程式會算出 n、φ(n) 與私鑰 d。左下用公鑰加密一個數字,右下選「私鑰 d」或「公鑰 e」來解密。依序完成任務:用 p=61、q=53、e=17 產生金鑰;加密 65;先用公鑰 e 試著解密,再用私鑰 d 解密;最後換一組自己選的金鑰再做一次。所有數字都是當場算出來的。

剛剛發生了什麼

RSA 的步驟整理如下(練習裡的數字是 p=61、q=53、e=17):

步驟 計算 練習裡的值
選兩個質數 p、q 61、53
算乘積 n=p×q 3233
算 φ(n) (p−1)×(q−1) 3120
選公開指數 e 和 φ(n) 沒有公因數 17
算私鑰 d 讓 e×d 除以 φ(n) 餘 1 2753
加密 c=mᵉ mod n 65¹⁷ mod 3233=2790
解密 m=cᵈ mod n 2790²⁷⁵³ mod 3233=65

mod 是「除以後的餘數」。用公鑰 e 再算一次得不到原文;只有 d 能把 e 的效果抵銷回來。

要算出 d,必須知道 φ(n),也就是必須知道 p 和 q。練習裡的 n=3233 一下子就能分解成 61×53,所以完全不安全;真實的金鑰把 n 做到數百位數,安全性就靠「分解不了」。

雜湊:資料的指紋

雜湊函數(hash function)把任意長度的資料,算成一段固定長度的值,稱為雜湊值或摘要。常用的 SHA-256 不論輸入是一個字還是一整部影片,輸出都是 256 位元(寫成 64 個十六進位字)。

密碼學用的雜湊函數有幾個特性:

特性 意思
固定長度 輸出長度和輸入長度無關
同樣的輸入,永遠得到同樣的輸出 所以可以拿來比對
單向 從雜湊值沒辦法反推回原本的資料
雪崩效應 輸入只改一個字,輸出大約一半的位元都會改變
很難找到碰撞 實際上找不到兩份不同的資料有相同的雜湊值

雜湊不是加密:加密可以用金鑰還原,雜湊不能還原。

雜湊的用途

  • 存密碼:網站不存你的密碼,只存密碼的雜湊。登入時把你輸入的密碼算雜湊,和資料庫裡的比對。資料庫就算外洩,對方拿到的也只是雜湊。
  • 加鹽(salt):只存雜湊有個問題,兩個人用同一組密碼,雜湊會一模一樣。所以每個使用者配一段隨機字串(鹽),和密碼接在一起再算雜湊;同樣的密碼也會得到不同的雜湊。實務上還會用專為密碼設計、刻意算得比較慢的雜湊方法。
  • 檢查檔案有沒有被改過:軟體下載頁常附上檔案的 SHA-256,下載後自己算一次,相同就代表檔案完整、沒有被竄改。

較舊的 MD5、SHA-1 已經被找到碰撞的方法,不建議再用於安全用途。

互動練習:雜湊、密碼與加鹽

上半部輸入文字按「算雜湊」,結果和上一次比較,不同的十六進位字標成紅色,並算出有幾個位元改變。下半部是一個只存雜湊的網站資料庫。依序完成任務:算 hello 的雜湊;只改一個字元再算一次;用 alice 的密碼 sunflower42 先打錯一次、再登入成功;回答 bob 與 carol 的雜湊為什麼一樣;最後打開「加鹽」,看資料庫的變化並再登入一次。

想一想:加密與雜湊

1.

下面的程式算兩段文字的 SHA-256,會印出什麼?

import hashlib
a = hashlib.sha256('密碼'.encode()).hexdigest()
b = hashlib.sha256(('很長的文字' * 100).encode()).hexdigest()
print(len(a), len(b))
2.

下面的程式用凱撒密碼加密,會印出什麼?

text = 'CAT'
out = ''
for ch in text:
    out += chr((ord(ch) - 65 + 3) % 26 + 65)
print(out)
3.

很多不認識的同學都要寄作業檔案給你,而且希望只有你打得開。用公開金鑰加密,應該怎麼做?

第 1 次作答

數位簽章與憑證

加密解決「別人看不到」。另一個問題是:怎麼確定訊息真的是某人送的,而且途中沒有被改過? 這是數位簽章(digital signature)的工作。

簽章與驗證

數位簽章把公開金鑰的用法反過來:

寄件端:訊息 ──雜湊──▶ 摘要 ──用「自己的私鑰」運算──▶ 簽章
        把「訊息+簽章」一起送出

收件端:收到的訊息 ──雜湊──▶ 摘要 A
        收到的簽章 ──用「寄件人的公鑰」運算──▶ 摘要 B
        A 和 B 相同 ⇒ 簽章有效
  • 只有持有私鑰的人簽得出能被公鑰驗證通過的簽章,所以能證明來源。
  • 訊息改一個字,雜湊就完全不同,驗證會失敗,所以能證明完整性。
  • 簽章不負責保密:訊息本身仍是明文。要保密,得另外加密。

憑證:這把公鑰真的是他的嗎

驗證簽章要用寄件人的公鑰。可是如果有人冒充寄件人,給你一把假的公鑰呢?

數位憑證(certificate)把「身分」和「公鑰」綁在一起,由憑證機構(certificate authority,CA)用它自己的私鑰簽章。瀏覽器與作業系統內建一份信任的憑證機構清單,所以能驗證網站送來的憑證。

你連到 https:// 開頭的網站時,瀏覽器會:

  1. 收到網站的憑證,用憑證機構的公鑰驗證憑證上的簽章;
  2. 確認憑證上的網域名稱就是你連的網址、而且還沒過期;
  3. 用憑證上的公鑰和網站約定一把臨時的對稱金鑰,之後的資料都加密傳送。

網址列的鎖頭代表連線有加密、而且對方確實擁有這個網域的憑證,不代表這個網站是好人:釣魚網站也可以申請到自己網域的憑證。所以還是要看清楚網址是不是官方的。

互動練習:數位簽章

左邊是寄件端:寫好訊息,選用誰的私鑰簽章,再按「傳送」。右邊是收件端:收到的訊息可以修改(模擬傳送途中被竄改),一律用 Alice 憑證上的公鑰驗證。依序完成任務:用 Alice 的私鑰簽章並傳送、驗證成功;在收件端改掉金額再驗證;改用 Mallory 的私鑰簽同一則訊息並傳送後驗證;最後回答驗證成功代表什麼。

想一想:網址列的鎖頭

1.

你點開一封信裡的連結,網址是 https://examp1e-bank.example.net,網址列也有鎖頭。下列哪個說法正確?

第 1 次作答

重點整理

  • 資訊安全的三個目標:機密性(只有該看的人看得到)、完整性(沒被偷改)、可用性(需要時用得到)。
  • 惡意程式依傳播與行為分成病毒、蠕蟲、木馬、勒索軟體、間諜軟體、廣告軟體等;基本防護是更新、只裝可信來源的軟體、最小權限、定期且離線的備份。
  • 社交工程與釣魚騙的是人:急迫感、要驗證碼、網址不對都是警訊。不點訊息裡的連結,自己從官方管道查證;臺灣可撥 165 查證。
  • 密碼的強度主要看長度;每個網站不同密碼,用密碼管理器;開啟多因素驗證,驗證碼絕不告訴任何人。
  • 對稱加密用同一把金鑰,速度快;公開金鑰加密每人一對金鑰,公鑰加密、私鑰解密,解決了金鑰交換的問題。RSA 的安全性來自大數難以分解。
  • 雜湊把資料算成固定長度的指紋,單向、改一個字就全變;網站存「加鹽後的雜湊」而不存密碼。
  • 數位簽章用私鑰簽、公鑰驗證,證明來源與完整性;憑證由憑證機構簽發,把身分和公鑰綁在一起。鎖頭不代表網站可信,網址還是要看清楚。

下一課:第 35 課看物聯網、虛擬實境與人工智慧怎麼運作。這一課的觀念在那裡也用得到:數以萬計的連網裝置,每一台都是需要更新與保護的電腦。

這一課完成了!
Next lesson:物聯網、虛擬實境與人工智慧
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。