資訊安全課程
資訊安全課程
資訊安全課程教學說明
課程目標
- 學習基本的加密與解密技術。
- 理解身份驗證系統的基本原理及如何確保安全性。
- 分析真實案例以了解安全事件對組織的影響與應對措施。
- 培養評估資訊安全風險與改進措施的能力。
程式實作模組
練習1:實作簡單的加密算法
背景知識
- 凱撒密碼 (Caesar Cipher) 是一種古老的加密技術,通過將字母按固定的位移加密。
- 雖然這種加密技術已過時,但它展示了加密的基本原理,是學習複雜加密技術的基礎。
詳細步驟
- 介紹加密與解密的概念:
- 加密:將原始數據轉換為不易讀的形式。
- 解密:將加密數據轉回原始形式。
- 撰寫加密函數:
- 創建函數
encrypt,接受text和shift作為參數。 - 使用 ASCII 編碼 (
ord()和chr()函數) 操作字母。
- 創建函數
- 撰寫解密函數:
- 使用與加密相反的位移來還原原始文本。
- 測試與除錯:
- 提供測試數據並指導學生進行測試和排除錯誤。
程式碼補充說明
# 凱撒密碼的加密和解密
def encrypt(text, shift):
"""加密函數"""
encrypted_text = ""
for char in text:
if char.isalpha():
shift_base = ord('A') if char.isupper() else ord('a')
encrypted_text += chr((ord(char) - shift_base + shift) % 26 + shift_base)
else:
encrypted_text += char
return encrypted_text
def decrypt(text, shift):
"""解密函數"""
return encrypt(text, -shift)
# 測試加密與解密
if __name__ == "__main__":
original = "Hello, World!"
shift_value = 3
encrypted = encrypt(original, shift_value)
decrypted = decrypt(encrypted, shift_value)
print(f"原始文字: {original}")
print(f"加密後: {encrypted}")
print(f"解密後: {decrypted}")
練習2:開發基本的身份驗證系統
學習目標
- 學會密碼Hash的基本操作。
- 理解用戶註冊與驗證的流程。
- 能夠應用安全的加密庫來提高系統安全性。
背景知識
- 密碼不能以明文形式存儲,必須使用雜湊算法。
- bcrypt 是一種強大的密碼雜湊工具,能自動添加鹽值(salt)以防止彩虹表攻擊。
詳細步驟
- 介紹密碼雜湊的概念與重要性:
- 雜湊是一種不可逆的加密方法,適合用於密碼存儲。
- 為什麼使用鹽值能提高安全性。
- 撰寫用戶註冊函數:
- 使用字典模擬數據庫,將用戶名與加密的密碼對應存儲。
- 撰寫用戶登入函數:
- 比對用戶提供的密碼與存儲的雜湊密碼。
- 安全注意事項:
- 注意雜湊的成本參數調整。
- 強調不應返回過於詳細的錯誤信息(例如:「用戶名不存在」或「密碼錯誤」)。
程式碼補充說明
import bcrypt
# 模擬的用戶資料庫
user_db = {}
def register(username, password):
"""用戶註冊函數"""
if username in user_db:
return "用戶已存在"
hashed = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
user_db[username] = hashed
return "註冊成功"
def login(username, password):
"""用戶登入函數"""
if username not in user_db:
return "登入失敗:用戶名或密碼錯誤"
stored_hashed = user_db[username]
if bcrypt.checkpw(password.encode('utf-8'), stored_hashed):
return "登入成功"
else:
return "登入失敗:用戶名或密碼錯誤"
# 測試
if __name__ == "__main__":
print(register("user1", "mypassword123"))
print(login("user1", "mypassword123"))
print(login("user1", "wrongpassword"))
延伸討論
1. 學習成果反思
- 完成實作後,討論以下問題:
- 凱撒密碼有何限制?如何改進?
- 在身份驗證系統中,雜湊比對的效率是否會成為瓶頸?
2. 題目與討論
- 題目:
- 假設一個密碼存儲系統中遺失了鹽值,這會產生什麼影響?
- 如果凱撒密碼的密鑰被攔截,加密信息是否仍然安全?為什麼?
- 討論:
- 如何選擇合適的加密算法?(對稱 vs 非對稱加密)
- 密碼管理的實務建議(例如:使用密碼管理器)。
課程結構說明
本課程分為以下幾個模組,每個模組包含理論講解和實作練習:
- 加密技術:介紹基本的加密和解密技術,包括對稱加密和非對稱加密。
- 身份驗證:學習如何設計和實作安全的身份驗證系統。
- 網絡安全:分析常見的網絡攻擊手法及其防禦措施。
- 安全事件管理:通過案例分析,了解如何應對和處理安全事件。
- 風險評估與管理:學習如何評估資訊安全風險並制定改進措施。
每個模組都包含實作練習,幫助學生鞏固所學知識並應用於實際場景。