---
# System prepended metadata

title: '[CS50] 課程筆記- Cybersecurity'
tags: [CS50, Cybersecurity]

---


## 課程摘要
* **網絡安全導論(Introduction to Cybersecurity)**: 本章為我們日益數位化的世界中網絡安全的重要性奠定了基礎。它介紹了基本概念和術語，為理解後續主題打下了基礎。

* **密碼安全(Password Security)**: 介紹密碼選擇中常見的陷阱，指出了使用弱密碼的頻繁情況，並以十大最常見密碼為例，說明了它們帶來的漏洞。

* **暴力破解攻擊(Brute Force Attacks)**: 講座接著討論了暴力破解攻擊，解釋了攻擊者如何系統性地檢查所有可能的密碼，直到找到正確的密碼。以破解四位數密碼的簡單性來說明這種攻擊對弱安全措施的威脅。

* **增強密碼安全性(Enhancing Passcode Security)**: 說明複雜密碼的重要性。通過比較不同類型的密碼，他說明了添加字母、數字和標點符號顯著提高了安全性。

* **雙因素認證(Two-Factor Authentication)**: 雙因素認證（2FA）作為一個重要的安全層。本節解釋了2FA的概念以及它如何提供超越密碼的額外防護。

* **密碼管理器(Password Security)**: 講座轉向討論使用密碼管理器的好處。本節倡導這些工具，因為它們可以為每個帳戶生成並安全地存儲強大、獨特的密碼。

* **加密及其應用(Encryption and Its Applications)**: 加密在保護數據方面發揮著關鍵作用。本節討論了各種形式的加密，如HTTPS和端對端加密，解釋了它們如何保護數據傳輸。

* **全盤加密(Full Disk Encryption)**:  全盤加密作為保護設備上數據的一種方法。本節解釋了即使有人獲得了設備的物理訪問權，它也如何防止未經授權的用戶訪問數據。

* **勒索軟體(Ransomware)**: 強調了攻擊者如何利用加密技術惡意地鎖定用戶的文件並要求贖金來進行解密。

---

## Password
* 常見且弱的密碼：許多人傾向於使用簡單、常見的密碼，如「123456」或「qwerty」。這些密碼容易被猜測，從而增加安全風險​​。

* 密碼長度和複雜性：建議使用長度較長且複雜的密碼，這類密碼的破解機率極低。這通常涉及到使用密碼管理器（password manager）來存儲和管理這些複雜的密碼​​。

- 暴力破解密碼demo
    - 破解4位數字密碼
        - 4位數密碼組成的可能性:$10*10*10*10$ = 1e4種組合
        - 需要多少時間嘗試破解
        - `python crack.py`
            ```python=
            from string import digits 
            from itertools import product 

            for passcode in product(digits, repeat=4): 
                print@*passcode)
            ```
            - 僅需要不到1秒時間就可以破解出各種4位數字的密碼組合   
    - 破解4個字母組成的密碼
        - 密碼組成的可能性:$94*94*94*94$ = 7.8M or 7.8e6
            -94 = 大小寫字母＋數字＋特殊符號組合
        - 與四位數數字密碼（只有10,000種可能性）相比，使用字母作為密碼可以顯著(x 7.8k)增加密碼的強度和安全性
        - code demo
            ```python=
            from string import ascii_letters, digits, punctuation 
            from itertools import product 

            for passcode in product(ascii_letters + digits + punctuation, repeat=4): 
                print(*passcode)
            ```
    - 當拓展到８個密碼時組合時
        - 可能性　$94^8 = 6e15$ 的可能性組合
        - 需要計算的時間超過課堂上許多人的壽命總和
        - 大幅提高被破解的機率=大幅提升破解門檻

    - 示範了如何通過增加密碼的長度和複雜性來增強安全性。當使用更多字符（如結合大寫字母、小寫字母、數字和符號）時，可能的組合數量會進一步增加，從而使得密碼更難以被猜測或破解

    網路安全程度是個量化(機率)的相對標準
    :::warning
    Security is really about comparisons and evaluating things if quantitatively relative to some other system, relative to some other code. 
    :::


## 密碼管理器（password managers）
* 密碼管理器定義：密碼管理器是一種軟體，用於在你的Mac、PC或手機上管理密碼。

* 功能與用途：當你訪問一個新網站或下載一個新應用並需要創建帳戶時，密碼管理器可以幫助你生成難以猜測的密碼。這些密碼可能包括標點符號、數字和字母。

* 自動記憶密碼：密碼管理器記住為你生成的密碼，這意味著在大多數情況下，你不需要手動輸入或記住這些密碼。

* 提高安全性：使用密碼管理器可以生成不同的強密碼，用於不同的網站和應用，這降低了一個密碼被破解時其他帳戶同時受到威脅的風險。

* 存取管理器的安全性：訪問密碼管理器本身通常需要使用生物識別技術（如面部識別或指紋）或另一個強密碼。

* 主密碼的重要性：管理器的安全性依賴於一個強大的主密碼。如果這個主密碼被破解或遺忘，則可能導致所有存儲的密碼失去安全保障。

* 使用方便與風險：使用密碼管理器方便且提高安全性，但也存在忘記主密碼或在無法訪問管理器時的風險。
 

## 雙因素認證（Two-Factor Authentication）
* 定義與運作方式：雙因素認證是一種安全措施，除了常規密碼外，還需第二種認證方式。通常是發送一個數字代碼到你的手機，這個代碼是一次性的，通常在一分鐘或十分鐘後失效。

* 安全性提升：這種方法不僅依賴於你知道的信息（如密碼），還依賴於你擁有的物件（如手機）。這大大增加了未經授權的用戶獲取帳戶訪問權限的難度。

* 物理訪問要求：攻擊者要登入帳戶，不僅需要猜測或暴力破解密碼，還需要實際擁有用戶的手機才能接收到驗證碼。

* 地理限制：這種方法限制了潛在攻擊者的範圍，不再是所有有網絡連接的人，而是有機會接觸到第二因素（如手機）的人。

* 提高攻擊成本：雙因素認證提高了攻擊者成功攻擊的難度、時間消耗和地理限制，從而增加了攻擊成本。

* 潛在的缺點：如果用戶忘記帶手機、在沒有信號的地方或無法接收驗證碼的情況下，可能無法登入。這也對IT部門帶來了額外的挑戰，因為他們需要處理這類情況，可能會產生額外的人力和財務成本。

## 加密（Encryption）
* 加密定義：加密是一種將信息轉換成不可辨識形式的技術，以保護信息的隱私和安全。

* 加密應用：當發送訊息、電子郵件、上傳照片或使用信用卡時，加密技術確保這些信息不會被未經授權的人看到。加密在網站、應用程序、ATM等設備中普遍使用。

* 加密原理：加密依賴於複雜的數學運算，以確保只有發送者和接收者能理解信息的真實內容。加密過程包括將明文（plain text）轉換成密文（ciphertext），並在接收端進行解密還原。

* 加密範例：一種簡單的加密範例是凱撒密碼（Caesar cipher），它通過將字母按照固定數量位移來加密信息。現代加密技術遠比這更複雜，但基本原理相似。

* HTTP**S**和端到端加密：HTTP**S**是一種常見的網絡加密形式，用於保護網絡通訊。端到端加密（end-to-end encryption）是一種更安全的加密形式，其中只有通訊的發送者和接收者能夠解密信息，即使是傳輸過程中的中間人也無法解讀。

* 加密的重要性：隨著越來越多的敏感信息在網絡上傳輸，加密成為保護個人隱私和安全的關鍵技術。