---
# System prepended metadata

title: 1062 資安筆記
tags: [NTOU]

---

# Information Security Note

:::info
+ 課程名稱：資訊安全實務與管理 Information Security: Practice and Management
+ 授課老師：[name=林韓禹 Han-Yu Lin]
+ 開課學期：1062
:::

[TOC]

# Chapter 1 - Computer Security Basics

## What is 電腦安全 (Computer Security)

+ 答案根據使用者的角度 (Perspective) 有所不同
+ Garfinkel 和 Spafford 兩位大師表示
    >「若這部電腦的運作與軟體的行為能按照你的期望進行，則稱之為安全。」
    > "A computer is secure if you can depend on it and its software to behave as you expect"

## CIA Traid - 從使用者的角度
+ 機密性 Confidentiality
	+ 防止被未授權 (Unauthorized) 的使用者**讀取** (Reading) 機密資訊
+ 完整性 Integrity
	+ 防止被未授權的使用者**修改** (Writing) 資訊
+ 可用性 Availability
	+ 授權的使用者可以正常的存取資料、使用服務

## DAD Traid - 從攻擊者的角度
+ 洩漏 Disclosure
	+ 未授權的使用者存取到機密性的資訊
	+ 破壞了 CIA 的機密性
+ 竄改 Alteration
	+ 未授權的使用者竄改了資訊
	+ 破壞了 CIA 的完整性與機密性
+ 阻斷 Denial
	+ 授權的使用者無法存取資料
	+ 破壞了 CIA 的可用性

## 網路資訊安全 Network Security
+ 原本只需要關注獨立系統的安全
+ 區域網路 (LANs - Local Area Network) 與網際網路 (Internet) 的發展使資訊安全的問題變得更困難
+ 注意事項 (Considerations) 包含：
	+ 保護 TCP/IP ++協定 (Protocol)++
	+ 防火牆 (Firewalls)
	+ 入侵檢測系統 (Intrusion Detection Systems)

## 網路對安全的威脅 Threat to Security
+ 黑客 Hacker
	+ 黑客原意為熟練的電腦使用人員
	+ 現在是指 企圖 滲透 一個資訊系統安全的人，**無論其意圖為何**
+ 惡意代碼物件 Malicious Code Object
    + 病毒 Virus
        + 無法獨立生存，**寄生**在其他檔案，並在特定時機攻擊癱瘓電腦
    + 蠕蟲 Worm
        + 會大量**複製**自己
    + 後門 Backdoor
        + **繞過**系統安全性，從比較隱密的地方取得系統存取權
        + 特洛伊木馬 (Trojan Horse) 就是一種後門軟體
            + 用以誤導使用者藉以騙取甚至遠端操作
+ 來自內部的惡意 Malicious Insider
	+ 系統安全要從**內部**做起
	+ 組織內部的人試圖超越他們合法擁有的權利 (Right) 和權限 (Permissions)
	+ 安全專家和系統管理員 (Administrators) 特別危險
*[企圖]: Attempts
*[滲透]: Penetrate

## 風險分析 Risk Analysis
+ 因為**資源有限**，所以無法採取所有保護措施
+ 風險分析所涉及 (Involved) 的行動：
	+ 決定有價值的資產 (Assets)
	+ 識別 (Identify) 資產可能面臨的風險
	+ 確定每個風險發生的可能性 (Likelihood)
	+ 採取保護措施來管理 (Manage) 風險
+ 資安專家所規定的風險分析過程

## 資產價值 Identifying and Valuing Assets
+ 資產價值是**權衡** 成本與收益 的**基礎**
+ 資產的價值可以用的評估 (Valuation) 方法：
	+ **取代價評估法** Replacement Cost Valuation
		+ 使用取代物的價格作為資產的價格
	+ **原始價評估法** Original Cost Valuation
		+ 使用資產當初購入的價格作為資產的價格
	+ **折舊價評估法** Depreciated Valuation
		+ 使用取代物與原價的價差作為資產的價格
	+ **優先度評估法** Qualitative Valuation
		+ 無論該資產的金錢價值 (Dollar Values) 為何
		+ 優先度 (Priorities) 高的資產就是比較重要
*[權衡]: Tradeoffs
*[成本與收益]: Cost & Benefit
*[基礎]: Foundation

## 識別與評估風險 Identifying and Assessing Risks
+ 兩種主要的風險評估技術：
	+ 值 Qualitative
	+ 量 Quantitative
+ 漏洞 Vulnerability
	+ 系統**內部** 潛在可能 被 利用 的 弱點
	+ 例如：沒有安裝防毒軟體的電腦
+ 威脅 Threat
	+ 來自**外部**可能利用系統漏洞的情況 (Circumstance)
	+ 例如：網路上存在著電腦病毒
+ 風險 Risk
	+ 等於**威脅**加上**漏洞**

![風險 = 威脅 + 漏洞](https://i.imgur.com/emYkYkD.png)
*[潛在可能]: Potentially
*[利用]: Exploited
*[弱點]: Weakness

## 質的風險評估 Qualitative Risk Assessment
+ 專心於分析資產的**無形**特性 (Intangible Properties) 而非金錢價值
+ 確定風險的優先級來協助分配安全資源
+ 相對容易進行的評估方式 (?)

## 量的風險評估 Quantitative Risk Assessment
+ 根據資產價值、暴露風險的發生率以及資產的年度耗損做評估
+ 使用可能損失的金額決定是否值得實施安全措施

## 風險管理 Managing Risks
+ 風險避免 Risk Avoidance
	+ 當獲利遠小於風險，禁不起任何一次虧損，需要採取風險避免
		+ 例如：騎車可能出車禍，可能有生命危險
	+ 完全避開所有可能發生風險的機率
		+ 例如：宅在家裡，完全不出門騎車
		+ 例如：完全不使用網路
+ 風險減緩 Risk Mitigation
	+ 當獲利大於風險，可以接受這些損失
	+ 採取預防措施來降低風險
		+ 例如：騎車騎慢一點
		+ 例如：使用防火牆
+ 風險轉移 Risk Transference
	+ 當風險發生時，把損失轉移到第三者身上
		+ 例如：買保險 (Insurance)
+ 接受風險 Risk Acceptance
	+ 當風險造成的傷害非常低的時候
	+ 完全不做任何事情來避免風險
+ 組合多項管理風險的方式是常見的方法

## 安全性權衡的考量 Considering Security Tradeoffs
+ 安全性可以被視為風險與獲益之間的 Tradeoff
+ 要考量的部分包含
	+ 安全性
	+ 使用者便利 Convenience
		+ 使用者可能會因為系統安全過於**累贅**而降低使用**意願**
        + 使用者為了規避安全可能會造成系統更不安全
		    + 例如：使用過於簡單的登入密碼
	+ 企業目標
	+ 費用 Expenses
		+ 成本不可以大於企業利益
*[累贅]: Cumbersome
*[意願]: Willingness

## 方針與教育 Policy and Education
+ 安全工作的基石
	+ 實施適當的方針
	+ 教育使用者這些方針
+ 資訊安全的方針
	+ 彈性 Flexible
	    + 避免頻繁的修改
	+ 全面 Comprehensive
	    + 確定所有情況都有考慮到
	    + 對所有組織內的成員都可用
	+ 可讀性 Readable
	+ 可理解性 Understandable

## 總結
+ CIA Triad - 資訊安全人員的目的
	+ Confidentiality
	+ Integrity
	+ Availability
+ DAD Triad - 試圖逃避 (Evade) 安全措施的目的
	+ Disclosure
	+ Alteration
	+ Denial
+ 因為網路，安全問題從個人電腦移至保護所有互聯 (Interconnected) 電腦
+ Threat
	+ Hacker
	+ Malicious Code
		+ Virus
		+ Worm
		+ Backdoor
		+ Trojan Horse
	+ Malicious Insider
+ 風險分析決定成本與獲益的權衡
	+ 資產估價 Identifying and Valuing Assets
		+ Replacement Cost Valuation
		+ Original Cost Valuation
		+ Depreciated Valuation
		+ Qualitative Valuation
	+ 識別風險 Identifying Risks
	+ 風險機率 Assessing Risks
	+ 選擇措施 Managing Risks
		+ Risk Avoidance - 運作影響最大
		+ Risk Mitigation
		+ Risk Transference
		+ Risk Acceptance - 運作影響最小
+ 資訊安全的關鍵是設定有效率的方針與教育

# Chapter 2 - Authentication 認證

## 存取控制簡介 Basics of Access Control
+ 方法 (Method) 與物件 (Component) 的集合 (Collection)
	+ 機密性 (Confidentiality)
	+ 完整性 (Integrity)
+ 存取控制的目標是在許可範圍內，去認證允許 (Permitted) 主體 (Subject) 存取物件 (Object) 的行為
+ 主體不一定是人，只要發出請求 (Request) 的都是主體

## 存取與控制 Access & Control
+ 包含了**存取** (Access) 與**控制** (Control) 兩個部分
+ 認證 Authentication
	+ 誰可以過去? (Who goes there?)
	+ 認證人對機器的存取
	+ 認證機器對機器的存取
+ 授權 Authorization
	+ 可不可以做這件事? (Are you allow to do that?)
	+ 有了存取權後可以做什麼?
	+ 對行為施加限制
+ ==**注意**==
    + 存取控制常被當成授權的代名詞 (Synonym)
    + 但完整定義必須包含兩個部分
+ 主體 Subject
	+ 發出要存取資源需求的個體 (Entity)
+ 對象 Object
	+ 主體試圖存取的資源
+ 最低存取原則 Least Privilege Philosophy
	+ 給予主體足夠完成所需工作的權限即可

## 控制 Control
+ 允許或禁止對象訪問的機制 (Mechanisms)
	+ 也可以說是不合法存取的一種阻礙 (Barrier)
+ 控制常見的種類
	+ 管理層面 Administrative
		+ 從**管理策略**來執行 (Enforce) 安全規則
		    + 雇用策略 Hiring Practice，無不良紀錄才雇用
		+ 雇用後的狀況觀察
		    + 使用量監測和稽核 (Usage Monitoring & Accounting)
	+ 邏輯與技術 Logic & Technical
		+ 對象存取的限制 (Restrictions)
		+ 例如：
			+ 識別 Identification
			    + 多對一的比較
			+ 認證 Authentication
			    + 一對一的比較
			+ 加密 Encryption
	+ 實體 Physical
		+ 將存取限制施加在硬體上
		+ 例如：圍牆 (Fence) 、牆壁、上鎖的門

## 存取控制技術 Access Control Techniques
+ 選擇符合組織需求的技術
+ 也要考慮使用者的接受度

## 存取控制設計 Access Control Designs
+ 強制型 Mandatory Access Control
    + 指定安全標籤 (Security Label) 給每個主體和物件
    + 由安全標籤來決定行為是否准許 (Granted)
    + 常見的應用方式為 **Rule-Based 存取控制**
        + Rule-Base 是 Mandatory 的一種實作方式
        + 需要知道給主體哪種等級的安全標籤
        + 是一種強制的存取控制
    + 常見軍方 (Military) 資料分級 (Classifications)
        + 未分類 Unclassified
        + 敏感但未分類 Sensitive but Unclassified
        + 機密 Confidential
        + 秘密 Secret
        + 最高機密 Top Secret
    + 常見商業 (Commercial) 資料分級
        + 公開 Public
        + 敏感 Sensitive
        + 私人 Private
        + 機密 Confidential
+ 斟酌型 Discretionary Access Control
    + 依照物件所有者的喜好決定
    + 商業操作上常見的設計
    + 基本上比較彈性、易實作
    + 基本上比 Mandatory 不安全
    + 包含 Identity-Based 存取控制、Access Control Lists (ACLs)
+ 非斟酌型 Non-Discretionary Access Control
    + 根據 Subject 的角色與任務決定存取控制權
        + 也可稱為 Role-Based, Task-Based Access Control
    + 適用於角色轉換頻繁 (High Turnover) 的公司
    + Lattice-Based Control 是一種 Non-Discretionary Access Control 的變體 (Variation)
        + 主體和對象之間具有一組用於定義訪問規則和條件的邊界

## 存取控制的管理 Access Control Administration
+ 主要分為集中式、分散式、混合式
+ 集中式 Centralized
	+ 所有的需求都經過一個權力核心
	+ 管理政策相對單純
	+ 因為都經過一個點，所以會有效能瓶頸 (Bottlenecks)
+ 分散式 Decentralized
	+ 物件的存取控制不是集中的
	+ 相對複雜的管理策略
	+ 效能相對穩定
+ 混和式 Hybrid

## 責任 Accountability
+ 系統管理員使用系統審核 (Auditing) 來監測
	+ 誰在使用系統 (Who is using the system)
	+ 在使用系統做什麼 (What users are doing)
+ Logs 訊息很重要，負責追蹤事件
+ 但這個過程會對效能造成影響
	+ 限制 Logs 的數量大小
	+ 設定 Logs 啟動的門檻 (Clipping Level)
	+ 紀錄關鍵的事件才能在事後追蹤

## 存取控制模型 Access Control Models
+ State Machine Model
	+ 定義 Object 的狀態和轉換的集合
	    + Ex: 印表機的休眠、列印中狀態
	+ Bell-LaPadula Model
		+ 強調機密性 (Confidentiality)
		+ No read up, no write down
			+ 不可以讀機密性高的文件
			+ 不可以把高機密內容寫到機密性低的文件
	+ Biba Model
		+ 強調完整性 (Integrity)
		+ No read down, no write up
			+ 將軍不去讀小兵寫的策略
			+ 小兵不能寫將軍的策略
+ Clark-Wilson Model
	+ 不是一種狀態機模型
	+ 用不同的途徑 (Approach) 確保完整性
	+ CDIs: Constrained Data Items 受保護的資料
	+ UDIs: Unconstrained Data Items 未受保護的資料
	+ IVPs: Integrity Verification Procedures
		+ 驗證資料完整性的程序
	+ TPs: Transaction Procedures
		+ 任何對資料進行的授權修改行為
	+ 所有在模型下的資料都是 CDIs
	+ IVPs 會確保系統中資料的完整性
	+ TPs 會接收 CDIs 或 UDIs 並且製造 CDIs
	+ TPs 必須保證所有可能的 UDIs 都會變成安全的 CDIs
+ Noninterference Model
	+ 通常是其他模型額外的補充
	+ 確保模型彼此不會互相干擾

## Who Goes There?
+ Something You Know: 密碼
+ Something You Have: Smart Card
+ Something You Are: 指紋
+ Ex: 信用卡則包含了實體 & 簽名，其中簽名屬於生物特徵

## 密碼的問題 Trouble With Passwords
+ 在實務上有很嚴重的問題
+ 人類無法選擇過於安全的密碼
+ 密碼的優點：
	+ 成本低，免費
	+ 方便性，易於修改
+ 密碼的缺點：
	+ 太容易被破解
	+ 對Bad Guy很有優勢
+ 密碼是資訊安全的底限 (Bottom Line)

## Keys vs Passwords
+ 密鑰
	+ 長度 64 Bits，也可以理解成 8 Bytes的字串之類的
	+ 則有 2^64 種組合
	+ 而且系統隨機挑選密鑰
	+ 攻擊者必須嘗試至少 2^63 次
+ 密碼
	+ 長度 8 個字元，有 256 種不同的字元
	+ 則有 256^8 = 2^64 種組合
	+ 但使用者並不會隨機挑選
	+ 攻擊者嘗試次數遠小於 2^63 次
	+ 使用字典攻擊 (Dictionary Attack)

## Good & Bad Passwords
+ 不好的密碼可能單調、重複或單字
+ 好的密碼大小寫混雜、長度足夠

## 密碼實驗 Password Experiment
+ **實際的實驗內容參考PPT第28頁**
+ 實驗的過程發現，使用者很難遵從 (Compliance) 實驗規則
+ 選擇密碼的建議：
	+ 系統指定的密碼可能比較好
	+ 使用密碼破解工具 (Cracking Tool) 測試安全性
	+ 定期 (Periodic) 更換密碼

## 密碼攻擊 Attacks on Password
+ Outsider > Normal User > Administrator
+ 有時可能一個脆弱的密碼就導致整個系統被入侵

## 密碼重試 Password Retry
+ 有些系統可能會在三次嘗試之後鎖定登入
+ 鎖定登入的等待越久，雖然安全性越高，但使用者也越不方便

## 密碼檔案 Password File
+ 把密碼存在一個檔案裡面是不好的主意
+ 加密 (Cryptographic) 方法：雜湊 (Hash)
	+ 在密碼檔案裡面儲存 y = h (pwd)
	+ 即便密碼檔案被獲取，攻擊者也不知道密碼是多少
	+ 但攻擊者可以藉由猜測密碼 x 得到 y = h(x) 來破解密碼
	+ 所以還是無法降低攻擊者的猜測
+ 若使用字典攻擊
	+ 攻擊者只要算一次雜湊值就可以猜測所有人的密碼
	+ 對攻擊者的成本好像反而更低了
+ 更好的加密方法：Hash with Salt
	+ Salt 是 Admin 選的
	+ 選擇亂數 s，計算 y = h (pwd, s)
	+ 在密碼檔案裡面儲存 s 跟 y
	+ Salt 是公開的
	+ 驗證密碼非常容易
	+ 但是攻擊者就不能一次猜全部

## Password Cracking: Do The Math
+ 這裡是計算步驟
+ PPT 第35~37頁

## 其他問題 Other Password Issues
+ 太多密碼要記，所以重複使用的密碼太多
+ 社交工程 (Social Engineering)
	+ 釣魚網頁
	+ 社交詐騙
+ Error Logs 可能含有近似真實密碼的紀錄
+ Bugs、按鍵側錄 (Keystroke Logging) 、間諜軟體 (Spyware) 等

## 生物辨識 Something You Are
+ 需要便宜且可靠的辨識裝置
+ 雖然研究很活躍但是普及速度不快
+ 理想的生物特徵 Ideal Biometric
	+ 普遍性 Universal
		+ 大家都有的
	+ 區分性 Distinguishing
		+ 非常明確的區分
	+ 永久性 Permanent
		+ 一輩子永遠不會改變
	+ 可蒐集 Collectable
		+ 方便蒐集的特徵
	+ 安全，簡易使用等等

## 生物辨識的模式 Biometric Modes
+ 識別 Identification
	+ 一對多的比對
	+ Ex: FBI 的指紋資料庫
+ 認證 Authentication
	+ 一對一的比對
+ 識別比較難

## 註冊 Enrollment
+ 必須多做幾次，確保準確度
+ 是許多系統難以克服的困難

## 辨識 Recognition
+ 要快速、簡單而且準確

## 合作對象 Cooperative Subjects
+ 有時候對象是不合作的，造成正確率下降
+ 沒有良好的註冊，就沒有良好的辨別率

## 誤差 Biometric Errors
+ Fraud Rate: 把 A 誤認成 B
+ Insult Rate: 認為 A 不是 A
+ 假設更改辨識門檻：
	+ 如果標準設在 99%，則 Fraud Rate 低，Insult Rate 高
		+ Ex: 可能因為感冒造成聲音辨識不出來
	+ 如果標準設在 30%，則 Fraud Rate 高，Insult Rate 低
		+ Ex: 可能會讓雙胞胎被誤認
+ Equal Error Rate
	+ 當 Fraud Rate == Insult Rate

## 指紋 Fingerprint Biometric
+ 類型：迴圈 (Loop) 、中心 (Whorls) 跟拱橫紋 (Arches)
+ 用一些手法強化圖片特徵，例如：加高對比值

## 手掌 Hand Geometry
+ 辨識手掌形狀、指寬、指長
+ 適合認證 (Authentication) ，但不適合識別 (Identification)
+ 優點
	+ 快，只要1分鐘註冊，5秒鐘識別
	+ 兩隻手是對稱的
+ 缺點
	+ 不適用年紀太小或太大的人
	+ 高 Equal Error Rate

## 視網膜 Iris

## EER 比較 Equal Error Rate Comparison
+ 指紋 5%
+ 手 10^-3
+ 視網膜 10^-6
	+ 但不容易實現

## Something You Have
+ 擁有的東西
	+ Ex: 車鑰匙、信用卡
	+ Ex: 密碼產生器

## 辨識與認證方法 Identification & Authentication Methods
+ 兩步驟驗證 Two-Factor Authentication
+ 手機可以是一種密碼產生器

## Single Sign-On
+ 避免頻繁且多次的登入
+ Kerberos 是其中一種
	+ 使用對稱加密
	+ 提供 End-To-End 的安全性
		+ 傳送過程無法讀取內容
	+ 使用分佈式環境，但由中央伺服器執行
	+ 包含數據庫和認證過程
	+ 弱點包含：
		+ 單點故障 (Single Failure)
		+ 效能瓶頸
		+ Session Key 會在客戶端上存在一小段時間，可能被盜用

## File & Data Ownership
+ Data Owner
	+ 承擔最大的責任，設定資料分級
+ Data Custodian
	+ 實施安全策略，通常是 IT 部門的成員
+ Data User
	+ 每天使用資料，要負責遵守安全政策

## 攻擊手法 Related Methods of Attacks
+ 暴力破解 Brute Force Attack
	+ 嘗試所有可能
+ 字典攻擊 Dictionary Attack
	+ 嘗試一些可能的組合
+ 詐騙攻擊 Spoofing Attack
	+ 釣魚網站

## 總結 Summary
+ Access Control Designs
	+ Mandatory
	+ Discretionary
	+ Non-Discretionary
+ Access Control Administration
	+ Centralized
	+ Decentralized
	+ Hybrid
+ Access Control Models
	+ State Machine Model
		+ Bell-LaPadula Model - Confidentiality
		+ Biba Model - Integrity
	+ Clark-Wilson Model
	+ Noninterference Model
+ Biometric
	+ Fingerprint
	+ Hand Geometry
	+ Iris

# Chapter 3 - Authorization 授權
## Lampson's Access Control Matrix
+ User多、Object多，就很難管理
+ 分割矩陣增加管理效率

## ACLs
+ 只有存 Column 的部分，實作上會變成 Linked List
+ Ex: 紀錄 OS 可以被A rx, B rx, C rwx...
+ 屬於資料導向 (Data-Oriented) ，容易修改一個資源的權限

## Capabilities
+ 只有存 Row 的部分，Subject 為主
+ Ex: 紀錄 A 可以 rx OS, rx Program, rx Data...
+ 容易新增刪除使用者
+ 容易解決 Confused Deputy 的代表 (Delegate) 問題

## 混淆的代理者 Confused Deputy
+ Ex: Compiler 本身是 Object 也是 Subject
+ 雖然 A 不能 Write B，但 A 可以操作 Compiler Write B
+ 使用 ACLs 比較難避免這個問題
+ 使用 C-List 就比較容易預防這個問題
	+ 這個動作的權限就根據 A 的存取權限來決定

## 分類與許可 Classification & Clearances
+ 分類 (Classification) → Objects
	+ 可能有 Secret, Top Secret 等
+ 許可 (Clearances) → Subjects
	+ 越高機密的資料，取得許可就越需要詳細的檢查

## MLS - Mutilevel Security
+ 是一種存取控制的形式
+ Model 屬於描述性的 (Descriptive) ，不是規範性的 (Prescriptive)
	+ 他只有叫你分 (What to do) ，但沒有說怎麼分 (How to implement)
	+ 屬於 High-Level 的描述，不是實際的演算法

## 網路分層結構 (參考)
1. 應用 Application
2. 傳輸 Transport -> (Stateful Packet Filter)
3. 網路 Network -> (Packet Filter)
4. 連結 Link
5. 實體 Physical

## 防火牆 Firewalls
+ 一種網路 (Network) 的存取控制
+ 決定什麼可以進來，什麼可以出去
+ 術語 Terminology
	+ 並沒有標準的術語
+ 防火牆的種類
	+ 封包過濾器 Packet Filter
		+ 在網路層 (Network Layer) 運作
		+ 基於雙方的 IP 和 Port 做過濾
		+ 優點：快
		+ 缺點：沒有狀態、無法追蹤 TCP 連接
	+ 有狀態封包過濾器 Stateful Packet Filter
		+ 在傳輸層 (Transport Layer) 運作
		+ 可以記得 TCP 連接，也能記得 UDP 的封包
		+ 優點：可以追蹤持續的連接
		+ 缺點：比較慢，無法看見應用程式的內容
		+ 雖然可以做到所有 Packet Filter 能做到的事情
			+ 但是不可以只留 Stateful Packet Filter，會造成效能瓶頸
			+ 相對的，有兩個 Filter 就能分散負擔
	+ 應用代理 Application Proxy
		+ 在應用層 (Application Layer) 運作
		+ 優點：可以直接看到程式內容，防止病毒
		+ 缺點：速度更慢
	+ 個人防火牆 Personal Firewall
		+ 保護個人使用者的網路
		+ 可能使用以上的任何方法

## 入侵預防 Intrusion Prevention
+ 防止壞人進入
+ 認證、防火牆和防毒軟體都是一種預防

## 入侵偵測 Intrusion Detection
+ 攻擊者已經入侵到你的系統了
+ 透過觀察是否有異常的行為來偵測
	+ 分析 Logs

## 入侵者 Who is likely intruder?
+ 想穿過防火牆的 Outsider
+ 邪惡的 Insider

# Chapter 4 - General Security Principles and Practices

## 常見的安全原則 Common Security Principles
+ 分散權力原則 Separation of Privileges Principle
	+ 避免單一 User 擁有過大的權力
		+ Ex: 兩個鑰匙才能啟動一顆飛彈
		+ Ex: 公司的存摺與印章
+ 最小權力原則 Least Privilege Principle
	+ 每個 User 只擁有最小的權力
	+ 但 Administer 經常沒有注意到 (Inattention)
		+ 把 User 放在權力太廣闊 (Broad) 的層級
	+ 或者發生權力轉移 (**Privilege Creep**)
		+ *當 User 的角色改變，但現有的權力卻沒有改變*
+ 深度防禦原則 Defense in Depth Principle
	+ 分層式 (Layered) 的防禦
	+ 可以解決效能瓶頸 (Bottleneck) 問題
+ 模糊式的安全 Security through Obscurity
	+ 在早期，可以把安全建立在 User 的無知
	+ 但現在資訊發達，已經不能這樣做
	+ 現在的資安都要建立在演算法公開的情形下設計
		+ 只有 Key 是私有的

## 安全政策 Security Policies
+ 安全政策必須要是個可以寫出來的文件 (Written Document)
+ 可能是單個文件或多個文件，以供不同用戶組使用

## 可接受行為 AUP - Acceptable Use Policy
+ 必須要能夠具體指導 (Guide) 使用者
+ 要足夠彈性 (Flexible) 以應付意外情況 (Unanticipated Situations)
+ 制定方向
	+ 哪些動作可以接受？
	+ 哪些動作不可以接受？
	+ 哪裡可以讓使用者獲得更多資訊？
	+ 如果違規，要如何處置？

## 備份 Backup Policy
+ 用來防止資料的損壞 (Corruption) 和丟失 (Loss)
+ 維持完整性和可用性 (Integrity & Availability)
+ 制定方向
	+ 哪些資料需要被備份？
	+ 要如何備份這些資料？
		+ Ex: 雲端、USB、異地備份
	+ 備份的資料會存放在哪裡？
	+ 誰可以存取這些備份？
	+ 這些備份資料要被保留 (Retain) 多久？
		+ 不一定所有資料都採用單一的策略
	+ 備份可以被重複使用的頻率？

## 保密 Confidentiality Policy
+ 用來保護 (Safeguard) 機密訊息
+ 包含所有訊息傳播手段，例如電話、印刷、口頭
+ 制定方向：
	+ 什麼資料是機密的？
	+ 應該如何處理這些資料？
	+ 要如何發布這些機密訊息？
	+ 如果機密資訊外洩要怎麼辦？
+ 員工可能會被要求簽屬保密協定 (Nondisclosure Agreements)

## 資料保存 Data Retention Policy
+ 需要三個重要的元素
    + Categories of Data 資料的種類
    + Maximum Retention Time 最長的保存時間
    + Minimum Retnetion Time 最短的保存時間
+ 制定資料保留的時長
+ 可能透過法律或者業務需求來制定
	+ 例如：納稅的資料要保留七年

## 硬體政策 Physical Security
+ 保護硬體的安全
+ 硬體的危害可能包含天然災害
	+ Ex: 淹水，所以把機房設置在二樓
+ 常見的硬體保護手法
	+ 周遭的防禦 Perimeter Protection
		+ 實體的阻隔，例如：牆壁
		+ 感應器、看門狗、警衛
		+ 記得 Defense in Depth 原則
			+ 單一的保護機制並不足夠
	+ 防電磁裝置 Electronic Emanations
		+ 國家級的攻擊可能透過電磁波來分析資訊
		+ 使用防電波磁裝置來保護
	+ 防火 Fire Protection
		+ 防止火災，例如：滅火器、灑水設備

## 無線裝置 Wireless Device Policy
+ 包含手機、平板、掌上型電腦
+ 可能會要求員工上班時不能使用或攜帶
+ 制定方向
	+ 組織可以購買的裝置種類
	+ 個人可以帶入工作場所的裝置
	+ 可以使用該裝置進行哪些行為？
	+ 例外狀況需要授權單位的許可

## 執行 Implementing Policy
+ 內部員工要去遵守這些政策
+ 確保政策持續在進行 (Ongoing)

## 發展 Developing Policy
+ 以團隊的方式 (Team Approach) 來制定
+ Policy 是慢慢發展出來的
+ 先制定目標清單
+ 然後編寫文件
+ 最後達成共識

## 建立共識 Building Consensus
+ 透過 Selling the Policy 來建立共識
+ 發展企業文化，凝聚向心力
+ 通常由高級管理階層來推廣和宣傳

## 教育 Education
+ Initial Training 一次性的訓練
	+ 主要在員工剛進入公司時做的訓練
+ Refresher Training 週期性的訓練
	+ 提醒員工自己的責任
	+ 提供員工最新的政策更新與責任相關事宜

## 執行與維護 Enforcement & Maintenance
+ 責任定義
	+ 違規舉報
	+ 發生違規時的處置
+ 隨著公司和技術的變化，政策也會隨之改變
+ 政策也要包含如何修改政策的條款

## 工具 Security Administration Tools
+ Security Checklists
	+ 條列式的審核
+ Security Matrices
	+ 把重點放在希望達成的目標
	    + Ex: 轉帳這個行為，完整性 > 機密性

## 人員安全 Personnel Security
+ 人類很脆弱QQ
+ 防止惡意的 Insider 使用的手法：
	+ 背景調查 Background Investigations
		+ 前科調查 (Criminal Record)
		+ 打電話去上一間公司問 (Reference Evaluations)
	+ 活動監測 Monitor Employee Activity
		+ 包含網路活動、監視器、通話紀錄等
	+ 強制休假 Mandatory Vacations
		+ 符合勞基法的規定
		+ 避免員工壓力過大，做出傷害公司的行為
	+ 離職政策 Exit Procedures
		+ 保密協議很重要

## 總結 Summary
+ Security Principles
	+ Separation of Privileges Principle
	+ Least Privilege Principle
	+ Defense in Depth Principle
	+ Security through Obscurity (X)
+ Policies
	+ Acceptable Use Policy
	+ Backup Policy
	+ Confidentiality Policy
	+ Data Retention Policy
	+ Wireless Device Policy
	+ Physical Security
+ About a Policy
	+ Implementing Policy
	+ Develope Policy
	+ Building Consensus
	+ Education
	+ Enforcement & Maintenance
+ Administration Tools
	+ Security Checklists
	+ Security Matrices
+ Physical Security
	+ Perimeter Protection
	+ Electronic Emanations
	+ Fire Protection
+ Personnel Security
	+ Background Checks
	+ Ongoing Monitoring
	+ Mandatory Vacations
	+ Exit policies

# Chapter 5 - The Business of Security

## Business Case
+ 必須了解公司的主要目的
+ 商業公司主要目的大多是為了獲利

## 永續經營計畫 Business Continuity
+ 幫助企業在面臨風險時持續往下走
+ 風險 (Risk) = 威脅 (Threat) x 弱點 (Vulnerability)
+ 使用象限圖做弱點評估
威脅
2 ↑ 1
－ → 弱點
4 | 3

## 實施控制 Implementing Controls
+ 四種風險控管
	+ Avoidance
	+ Mitigation
	+ Acceptance
	+ Transference
+ BCP 團隊要決定這些策略如何執行
+ 不是所有風險都可以用技術性的方法解決
	+ 可能需要教育訓練 & 外部專業人員 (External Expertise)

## 維護計畫 Maintaining The Plan
+ BCP 是一份存在的文件
+ BCP 要有彈性 (Flexible)
+ 環境的改變導致新的風險產生
+ 週期性 (Periodic) 的檢視與更新 BCP

## 災害恢復計畫 Disaster Recovery Planning
+ 目標是維持組織的運作
	+ 使用替代 (Alternate) 設備恢復運作
	+ 提供延伸的操作
		+ 原本的設備沒有的服務
	+ 當主設備可用要如何恢復

## 團隊選擇 Selecting The Team
+ 團隊平常不需運作
	+ 以原來的工作為主
+ 只有 DRP 啟動時才會改變角色
+ 要涵蓋到所有部門的人員
+ 分為規劃 & 執行兩個小組

## 建立計畫 Building The Plan
+ 計畫必須要詳細說明：
	+ 所有人的責任
	+ 所需要的資源
+ 選擇替代設施是最主要的困難
	+ 替代設施需要什麼樣的能力
	+ 需要越多能力，設施就越昂貴

## 復原設施 Disaster Recover Facilities
+ Hot Site
	+ 包含所有軟硬體設備和資料
	+ 能立即接手運作
+ Warm Site
	+ 包含大多數的軟硬體設備，沒有即時 (Live Copies) 的資料副本
	+ 在數小時到數天內接手運作
+ Cold Site
	+ 包含基本的電力、電信 (Telecommunications) 和支援系統
	+ 沒有軟硬體設備和資料
	+ 能在數周到數個月內接手運作

## Creative Disaster Recovery
+ 非傳統的 DRP 可能適用於特定的組織
+ 地理上分散的組織可能會考慮移動設施
	+ 拖車、移動房屋、空運單位
+ 互助協議 Mutual Assistance Agreements
	+ 與其他組織分攤成本
	+ 要小心機密外洩

## 訓練 Training
+ Initial Training
	+ 新人到來第一次的訓練
+ Refresher Training
	+ 定期培訓
+ 要為不同的人設計不同的訓練

## 測試 Testing
+ Checklist Review
	+ 最簡單、最不費力 (Labor-Intensive) 的測試
	+ 每個人都有自己的 Checklist
	+ 測試期間每個人都去檢查各自的清單
	+ 無論單人或團體都可以完成
+ Tabletop Exercise
	+ 測試者 (Test Facilitator) 口頭描述特定的災難場景
	+ DRP 成員口頭回答他們對該情況 (Scenario) 的回應
+ Soft Test (Parallel Test)
	+ DRP 成員將面臨災難狀況，並以啟動恢復設施進行回應
	+ 恢復設施與主要設施同時運作，並不需要全面運作
	+ 比較全面也比較昂貴的測試
+ Hard Test (Full-Interruption Test)
	+ 只有在很少數的情況下才會使用
	+ 破壞性更大更昂貴
	+ 涉及將設施運作完全轉移到替代設施，再從替代設施返回

## 執行計畫 Implementing The Plan
+ 災害發生時，情況必定混亂 (Chaotic)
+ 誰有權限決定發動 DRP Plan
	+ 可能不只一個人
+ 第一時間要向誰回報

## 維護計畫 Maintaining The Plan
+ 成員、程序和工具會隨時間改變
+ 團隊要嚴格執行清單避免恐慌 (Panic) 和混亂
	+ 清單要隨時保持最新
+ DRP 要持續進行測試與評估

## 資料分級 Data Classification
+ 提供敏感訊息的分層 (Stratify)
+ 針對每一層級別，提供適合的保障系統
+ 訪問保密數據的先決條件 (Prerequisites)
	+ 安全許可 Security Clearance
	+ Need To Know

## 安全許可 Security Clearance
+ 根據組織和級別不同，需要不一樣的檢查
+ 通常和個人當前的工作和基本活動有關聯

## Need To Know
+ 安全許可負責廣泛種類上的訪問
+ Need To Know 則限制實際訊息
+ 安全許可由中央執行
+ Need To Know 通常由保管 (Custodians) 人員執行

## 分級系統 Classification Systems
+ 美國政府分級 U.S. Government Classifications
	+ Top Secret
	+ Secret
	+ Confidential
	+ Sensitive but Unclassified (For Official Use Only)
	+ Unclassified
+ 一般工業分級
	+ Trade Secret
		+ 通常不受專利或版權保護的機密
	+ Company Confidential/Proprietary (專有)
	+ Unclassified

## 安全倫理 Security Ethics
+ 專業安全人員通常可以訪問高度機密的資訊
	+ 必須表現出高度的道德標準
+ ISC^2^ 是安全人員的專業組織
	+ International Information Systems Security Certification Consortium
	+ 此組織制訂了道德標準

## 監測 Monitoring
+ 資安專家通常被委託來監測組織的內外部活動
+ 處理監測過程中獲得的訊息需要高度的道德操守、謹慎和專業精神
+ 誰來監視監測者?
	+ 確保監測者有正確的處理訊息

## 電腦安全法律 Computer Security Law
+ ECPA - Electronic Communications Privacy Act
+ USA Patriot Act
+ COPPA - Children’s Online Privacy Protection Act
+ HIPPA - Health Insurance Portability and Accountability Act
+ Gramm-Leach-Bliley Act
+ European Union Directive on Data Privacy

# Chapter 6 - Cryptographic Technologies

## Crypto
+ Cryptology - 密碼學，指的是研究密碼的這門學問
+ Cryptography - 加密，只包含加密的演算法
+ Cryptanalysis - 解密，只包含解密的演算法
+ Crypto - 以上全部

## Speak
+ A cipher or cryptosystem is used to encrypt the plaintext.
	+ Cipher 或 Cryptosystem 是用來加密 (Encrypt) 文本 (Plaintext) 的。
+ The result of encryption is ciphertext.
	+ 加密出來的結果叫做密文 (Ciphertext) 。
+ We decrypt ciphertext to recover plaintext.
	+ 將密文解密 (Decrypt) 來復原文本。
+ A symmetric key cryptosystem uses the same key to encrypt as to decrypt.
	+ 對稱金鑰系統 (Symmetric Key Cryptosystem) 使用一把相同的金鑰 (Key) 來加密或解密
	+ 密文要寄給 10 個人就需要 10 把 Keys。
+ A public key cryptosystem uses a public key to encrypt and a private key to decrypt
	+ 公開金鑰系統 (Public Key Cryptosystem) 也可稱為非對稱加密，只需要一把公鑰來加密，和一把私鑰來解密。
	+ 無論寄給多少人，都只需要保管兩把 Keys。

## Kerckhoffs's Principle
+ 加密演算法是完全公開的。
+ 攻擊者非常熟悉這個系統。
+ 只有 Keys 是保密的。

## 傳統加密法
+ Simple Substitution
	+ 單純的代換法，有一個代換表。
+ Caesar's Cipher
	+ 透過位移法加密，例如 A 位移 3 變成 D。
+ 以上兩種方法可以用英文字母頻率破解。

## Cryptanalysis
+ 如果最好的破解方法是嘗試所有可能，那就是個安全 (Secure) 的加密系統。
+ 如果有任何破解捷徑，那這個加密系統就不安全 (Insecure) 。
+ 所以一個 Insecure 的系統可能比 Secure 更難破解。

## Double Transposition
+ 用二維陣列來打亂原文順序。
![原文](https://i.imgur.com/LuXi6Ju.png)→![密文](https://i.imgur.com/F3FqErn.png)
+ Key 表示為 (3, 5, 1, 4, 2) & (1, 3, 2)

## One-Time Pad
+ 主要使用 XOR 做運算。
+ Encryption
	+ Plaintext XOR Key = Ciphertext
	![Example](https://i.imgur.com/ufMK7hI.png)
+ Decryption
	+ Ciphertext XOR Key = Plaintext
	![Example](https://i.imgur.com/RF8v1FJ.png)

## 目的
+ 機密性 Confidentiality
	+ 訊息的內容經過加密後要被隱藏 (Concealed) 。
+ 完整性 Integrity
	+ 確認接收到的就是寄出去的。
+ 不可否認性 Nonrepudiation
	+ 寄件者不能表示他沒有發送訊息。
+ 認證 Authentication

## 加密演算法 Cryptographic Algorithms
+ 分為對稱和非對稱兩種。
+ 文本 > 加密 > 密文 > 解密 > 文本。
+ 早期會使用含糊的方式增加安全性，但現在系統都比較嚴格而且公開。

## 對稱演算法 Symmetric Algorithms
+ 也稱之為 Secret Key Cryptosystems。
+ 雙方都要知道 Key。
+ Key 也稱為 Shared Secret Key 或 Secret Key。
+ Key Length，代表 Key 的 Bits 數，是最重要的部分。
	+ 越長的 Key 保護程度也越高。
	+ 最常見的對抗手法是暴力破解。
	+ 長度為 n 的 Key 就有 2^n 種組合。

## DES - Data Encryption Standard
+ 美國的一種加密標準。
+ 56 Bits 的 Key Length。
+ 有四種 Mode 的操作，因為加密訊息過長，需要分段處理與打亂。
+ 但是現在 56 Bits 已經不夠長，所以現在使用 Triple DES (3DES)。
	+ 把 DES 重複做三次。

## DES 規格
+ DES 是一種費斯妥密碼 (Feistel Cipher) 。
	+ 64 Bits Block
		+ 固定加密 64 Bits的明文。
	+ 56 Bits Key Length
	+ 16 回合
	+ 每個回合產生 48 Bits 的 Subkey
+ 安全性主要依靠 S-Boxes
	+ Map 6 Bits to 4 Bits
	![S-Boxes](https://i.imgur.com/npZDoXS.png)
	+ 給定6位元輸入，將首尾兩個位元和中間四個位元作為條件進行查表，最終獲得4位元輸出。
	+ Ex: 以 011011 做為輸入，將首尾兩個位元 01 和中間的位元 1101 進行查表，輸出 1001。

## DES 變化
+ 3DES 有比較強的保護，可能使用 2 或 3 把 Keys。
	+ 3DES-EEE (Encrypt-Encrypt-Encrypt) 使用三把 Keys。
	+ 3DES-EDE (Encrypt-Decrypt-Encrypt) 使用 1 ~ 3 把 Keys。

## AES - Advanced Encryption Standard
+ 是國家標準研究院 (National Institute of Standards, NIST) 贊助的比賽中獲獎的演算法。
+ AES 允許使用者選擇 3 種不同長度的 Keys
	+ 128, 192 或 256 Bits。
	+ 越長越安全。
+ Block Size: 128, 192 or 256 Bits
+ Key Length: 128, 192 or 256 Bits
+ 10 ~ 14 回合，每個回合使用四個 Functions
	+ ByteSub (Nonlinear Layer)
		+ 就是 AES 的 S-Box。
		+ 用前四個 Bits 和後四個 Bits 查表。
		![ByteSub](https://i.imgur.com/Cyi9rFX.png)
	+ ShiftRow (Linear Mixing Layer)
		+ 向左 Shift
		+ "mnop" Shift 1 => "nopm"
	+ MixColumn (Nonlinear Layer)
		+ 對每個Column做非線性、可逆的操作
	+ AddRoundKey (Key Addition Layer)
		+ 運算：Subkey XOR Block
		+ Subkey 是用 Key Schedule 演算法產生的。
+ 解密部分 Decrypt
	+ AddRoundKey 只要再做一次 XOR 就好。
	+ MixColumn 是 Invertible 的查表。
	+ ShiftRow 照原方向轉回去就好。
	+ ByteSub 也是可逆的查表。

## 非對稱加密演算法 Asymmetric Algorithms
+ 也可稱為 Public Key Cryptosystems。
+ 數學運算出兩把 Keys，公鑰和私鑰。
+ 用公鑰加密的訊息只能以私鑰解密。
+ 公鑰可以公開讓大家都可以加密自己的訊息。
+ RSA, Rivest Shamir Adelman Algorithm
	+ 最廣為人知的非對稱加密演算法。
	+ 依靠大質數很難被因數分解。
+ PGP, Pretty Good Privacy
	+ 跨平台的方案。
	+ 包含了許多加密演算法在內，也有 RSA
	+ 支援分散式公鑰管理的架構。

## 信任的網頁 The Web of Trust
+ Keys 的交換是個困難的問題。
	+ 在 PGP 之前，必須在離線狀態下交換 Keys。
+ PGP 加上 Web of Trust 讓使用者可以判斷公鑰的真實性。
+ 四個信任等級：
	+ 隱性信任 Implicit Trust
	+ 充分信任 Full Trust
	+ 邊際信任 Marginal Trust
	+ 不可信任 Untrusted

## 對稱與非對稱式加密的比較
+ 對稱式加密不好擴展。
+ 非對稱加密比對稱加密慢。
+ 對稱式加密在通訊電路上表現傑出，例如虛擬私人網路。
+ 非對稱式加密在用戶數量多的時候比較實用。

## 數位簽章 Digital Signatures
+ 替加密系統增加完整性和不可否認性。
+ 不可否認性只能在非對稱式加密上執行。
+ 數位簽章的創建：
	+ 使用雜湊函式來產生一個獨特的訊息摘要。
	+ 經常使用 SHA 跟 MD 演算法。
	+ 使用私鑰來加密訊息摘要。
+ 數位簽章的驗證：
	+ 收件人解密訊息獲得文本與數位簽章。
	+ 收件人使用相同的雜湊函式來創造新的訊息摘要。
	+ 收件人使用寄件人的公鑰解密數位簽章獲得寄件人的訊息摘要。
	+ 收件人比對兩個訊息摘要，如果相同就驗證成功。
	+ 如果不同，可能是惡意的訊息，也可能是傳送錯誤。

## 數位憑證 Digital
+ 數位憑證是第三方認證的擔保。
+ 第三方負責驗證發件人的身份。
+ 憑證頒發機構 Certification Authorities
	+ 常見的有 VeriSign 和 Thawte。

## 總結
+ 加密系統是為了機密性、完整性、不可否認性和認證。
+ 一般的密碼系統步驟為：
	+ 首先要有文本訊息 (Plaintext) 。
	+ 使用加密金鑰 (Keys) 和演算法產生密文 (Ciphertext) 。
	+ 使用相同或相關的金鑰解密密文。
	+ 獲得原本的文本訊息。
+ 加密演算法分為兩種：
	+ 對稱式加密演算法 Symmetric Algorithm
		+ 雙方使用一把密鑰。
	+ 非對稱式加密演算法 Asymmetric Algorithm
		+ 使用一把公鑰和一把金鑰。
+ 數位簽章式為了增加完整性和不可否認性。
+ 數位簽章使用雜湊函式產生訊息摘要。
+ 數位憑證是第三方認證出來的。
+ 數位憑證是用戶公鑰的副本。

# Chapter 7 - Public Key Cryptography

## Overview
+ 寄件人使用收件人的公鑰加密訊息。
+ 收件人使用他自己的私鑰解密訊息。
+ 基於 Trap Door, One Way Function
	+ 單向的計算很容易，但從其他方向很難推算回來。
	+ Trap Door 用來創建金鑰。
	+ 舉例：
		+ 給定一個 p 和 q 可以很輕鬆得到 N = p * q。
		+ 但給定一個 N 卻很難找到 p 跟 q 是誰。
+ 使用 Bob 的公鑰加密的訊息
	+ 只有 Bob 的私鑰可以還原
+ 數位簽章
	+ 使用私鑰簽名加密過程
	+ 任何人都可以使用公鑰解碼來驗證簽章
	+ 但只有私鑰的持有者可以簽名

## 背包問題
+ 就是子集總和的問題
+ 背包問題是 NP-Complete 問題
+ 一般的背包問題很難解決
	+ 可以使用 Superincreasing Knapsack 方法
	+ 從最大的開始往下加
	+ Ex: Weights (2, 3, 7, 14, 30, 57, 120, 251)
		+ Target: 186
		+ Step 1. Get 120, Left 66
		+ Step 2. Get 57, Left 9
		+ Step 3. Get 7, Left 2
		+ Step 4, Get 2, Left 0, Done.

## 背包密碼系統
+ 產生 Superincreasing Knapsack
+ 把 SIK 轉換成 General Knapsack
	+ 公鑰：GK
	+ 私鑰：SIK + Conversion Factors
+ Easy to encrypt with GK
+ Easy to decrypt with SIK

## 背包密碼系統範例
+ SIK: (2, 3, 7, 14, 30, 57, 120, 251)
+ 選擇 m = 41 和 n = 491
+ n 是一個大於總和的數字
+ 產生 General Knapsack
	+ 2 * 41 mod 491 = 82
	+ 3 * 41 mod 491 = 123
	+ 7 * 41 mod 491 = 287
	+ 14 * 41 mod 491 = 83
	+ 30 * 41 mod 491 = 248
	+ 57 * 41 mod 491 = 373
	+ 120 * 41 mod 491 = 10
	+ 251 * 41 mod 491 = 471
	+ GK: (82, 123, 287, 83, 248, 373, 10, 471)
+ 私鑰
	+ (2, 3, 7, 14, 30, 57, 120, 251)
	+ m^-1^ mod n = 41^-1^ mod 491 = 12
+ 公鑰
	+ (82, 123, 287, 83, 248, 373, 10, 471)
	+ n = 491
+ 加密訊息 10010110
	+ 第 1, 4, 6, 7 個 Bit 為 1
	+ 82 + 83 + 373 + 10 = 548
+ 解密
	+ 548 * 12 = 193 mod 491
	+ S = 193, 求 SIK
	+ Get 120, Left 73
	+ Get 57, Left 16
	+ Get 14, Left 2
	+ Get 2, Left 0, Done.
	+ (2, 14, 5, 7) 為 SIK 的第 1, 4, 6, 7 個元素
	+ 獲得原文 10010110

## 背包密碼系統的弱點
+ Trapdoor
	+ SIK 轉換至 GK 使用 Modular Arithmetic
+ One-Way
	+ GK 很容易加密原文，但很難解開密文
	+ SIK 很容易解開密文
+ 但 1983 被 Apple II 電腦使用 Lattice Reduction 破解

## RSA
+ p 跟 q 是兩個很大的質數
+ N = p * q 為 Modulus
+ 選擇一個 e 跟 (p-1)(q-1) 互質
+ e * d = 1 mod (p-1)  (q-1)
+ 公鑰是 (N, e)
+ 私鑰是 d
+ 加密訊息 M
	+ C = M^e^ mod N
+ 解密訊息 C
	+ M = C^d^ mod N
+ e 跟 N 是公開的
+ 如果攻擊者可以分解 N，他就可以用 e 輕鬆找到 ed = 1 mod (p-1)  (q-1)
+ 將 Modulus 分解就可以破解 RSA

## RSA Work
+ Euler's Theorem
	+ 歐拉定理也稱為費馬-歐拉定理
	+ x 若是與 n 互質，則 x^φ (n) ^ = 1 mod n
+ 歐拉函式φ
	+ φ(n) 是小於或等於 n 的正整數中與 n 互質的數的數量。
	+ φ(8) = 4，因為 1, 3, 5, 7 與 8 互質。

## Mod
+ a = b mod n
	+ a - b 是 n 的倍數
+ 38 = 14 mod 12
	+ 38 - 12 - 12 = 14

## Simple RSA Example
+ 選擇大質數 p = 11, q = 3
+ N = pq = 33, (p-1)(q-1) = 20
+ e = 3 跟 20 互質
+ 找到一個 d 符合 ed = 1 mod 20
+ 我們選擇 d = 7
+ 公鑰：(N, e) = (33, 3)
+ 私鑰：d = 7
+ 假設訊息 M = 8
+ 密文 C = M^e^ mod N
	+ C = 8^3^ mod 33 = 17
+ 解密 M = C^d^ mod N
	+ M = 17^7^ mod 33 = 8

## Diffie-Hellman
+ 一種交換金鑰的演算法。
	+ 用來建立一個對稱式金鑰。
+ 不是用來加密或簽名的。
+ 安全性依賴在離散問題上。
	+ 給定 g, p, g^k^ mod p, 找到 k
+ 讓 p 是質數，g 是產生器，這兩個數是公開的
+ 在 x 屬於 {1, 2, ..., p-1} 存在一個 n 使得 x = g^n^ mod p
+ Alice 選擇 Secret Value a
+ Bob 選擇 Secret Value b
+ Alice 送出 g^a^ mod p 給 Bob
+ Bob 送出 g^b^ mod p 給 Alice
+ 兩人皆計算分享的 g^ab^ mod p
+ g^ab^ mod p 可以做為對稱式金鑰來用
+ 假設 Trudy 可以看見 g^a^ mod p 和 g^b^ mod p
+ 註記：g^a^ * g^b^ mod p = g^ (a+b) ^ mod p ≠ g^ab^ mod p
+ 如果 Trudy 知道 a 或 b，則系統被破解
+ 如果 Trudy 可以解開離散問題，則他可以找到 a 或 b
+ MiM, Man-In-The-Middle Attack
	+ (Alice, a) > g^a^ mod p > (Trudy, t) > g^t^ mod p > (Bob, b)
	+ (Alice, a) < g^t^ mod p < (Trudy, t) < g^b^ mod p < (Bob, b)
	+ Trudy 分享 g^at^ mod p 給 Alice
	+ Trudy 分享 g^bt^ mod p 給 Bob
	+ 這個過程中，Alice 跟 Bob 都不知道 Trudy 的存在
	+ 如何預防？
		+ 使用對稱金鑰加密 DH Exchange
		+ 使用公開金鑰加密 DH Exchange
		+ 使用私鑰簽名 DH Value

## ECC, Elliptic Curve Crypto
+ EC 不是一個密碼系統，是一種公鑰的數學方式。
+ 可能會更有效率
	+ 一樣的安全性，需要比較少的 Bits
	+ 但是操作更加複雜
+ 圖形 E 代表方程式 y^2^ = x^3^ + ax + b
+ 同時也包含在無限大的點
+ ![Elliptic Curve] (https://i.imgur.com/YiAg5ms.png)
+ 如果 P1 跟 P2 都在 E 上，則定義 P3 = P1 + P2

## Points on Elliptic Curve
+ 假設 y^2^ = x^3^ + 2x + 3 (mod 5)
	+ x = 0 => y^2^ = 3 => No Solution (mod 5)
	+ x = 1 => y^2^ = 6 => y = 1, 4 (mod 5)
	+ x = 2 => y^2^ = 15 => y = 0 (mod 5)
	+ x = 3 => y^2^ = 36 => y = 1, 4 (mod 5)
	+ x = 4 => y^2^ = 75 => y = 0 (mod 5)
+ 則 Elliptic Curve 上的點為
	+ (1, 1) (1, 4)
	+ (2, 0)
	+ (3, 1) (3, 4)
	+ (4, 0)
	+ 在無限大的點為無限大

## Elliptic Curve Math
+ y^2^ = x^3^ + ax + b (mod p)
	+ P~1~ = (x~1~, y~1~)
	+ P~2~ = (x~2~, y~2~)
	+ P~1~ + P~2~ = P~3~ = (x~3~, p~3~)
		+ x~3~ = m^2^ - x~1~ - x~2~ (mod p)
		+ y~3~ = m(x~1~ - x~3~) - y~1~ (mod p)
	+ m = (y~2~ - y~1~) * (x~2~ - x~1~)^-1^ mod p, if P~1~ ≠ P~2~
	+ m = (3x~1~^2^ + a) * (2y~1~)^-1^ mod p, if P~1~ = P~2~
	+ 特殊情況：如果 m 是無限大，P~3~ = ∞，而且 ∞ + P = P for all P

## Elliptic Curve Addition
+ 假設 y^2^ = x^3^ + 2x + 3 (mod 5)
+ 在 Curve 上的點為 (1, 1) (1, 4) (2, 0) (3, 1) (3, 4) (4, 0) 和 ∞
+ (1, 4) + (3, 1) = P~3~ = (x~3~, y~3~) 是多少?
	+ m = (1-4) * (3-1)^-1^ = -3 * 2^-1^
	+ m = 2 * 3 = 6 = 1 (mod 5)
	+ x~3~ = 1 - 1 - 3 = 2 (mod 5)
	+ y~3~ = 1 * (1-2) - 4 = 0 (mod 5)
	+ 所以 (1, 4) + (3, 1) = (2, 0)

## ECC Diffie-Hellman
+ 公開：Elliptic Curve 和 Curve 上的點 (x, y)
+ 私有：Alice 的 A 和 Bob 的 B
	+ Alice > A(x, y) > Bob
	+ Alice < B(x, y) < Bob
+ Alice 計算 A (B (x, y) )
+ Bob 計算 B (A (x, y) )
+ 這些都是一樣的，因為 AB = BA

## ECC DH 範例
+ Public: y^2^ = x^3^ + 7x + b (mod 37)
+ Alice's Secret: A = 4
+ Bob's Secret: B = 7
+ Alice 傳給 Bob: 4(2, 5) = (7, 32)
+ Bob 傳給 Alice: 7(2, 5) = (18, 35)
+ Alice 計算 4(18, 35) = (22, 1)
+ Bob 計算 7(7, 32) = (22, 1)

## 公鑰系統的使用
+ 資料的傳輸必須經過不安全的頻道。
+ 保護資料與不安全的媒體。
+ 數位簽章提供完整性與不可否認性。

## Non-Non-Repudiation
+ Alice 從 Bob 那裡點了 100 張股票
+ Alice 使用對稱金鑰計算 MAC
+ 股票下跌，Alice 卻宣稱她沒有買股票
+ Bob 有辦法證明 Alice 下過訂單嗎?
+ 沒辦法，即便 Bob 知道金鑰，他也有可能忘記訊息
+ 所以 Bob 知道 Alice 有下過訂單，可是他無法證明

## Non-Repudiation
+ Alice 一樣買了 100 張股票
+ Alice 在訂單上使用私鑰簽名
+ 股價下跌，Alice 又宣稱他沒有下訂單
+ 這次 Bob 可以證明 Alice 有下單
+ 因為只有擁有 Alice 私鑰的人可以下單
+ 但這是建立在 Alice 的私鑰沒有被竊取的情況下

## 簽名再加密 VS 加密再簽名
+ 標記
	+ 以 Alice 的私鑰 Sign 訊息 M
		+ [M]<sub>Alice</sub>
	+ 以 Alice 的公鑰 Encrypt 訊息 M
		+ {M}<sub>Alice</sub>
	+ {[M]<sub>Alice</sub>} = M
	+ [{M}<sub>Alice</sub>] = M
+ 下面的圖解 Bob 各種誤會，我也看不懂

## 公鑰的基礎 Public Key Infrastructure
+ ### 公鑰憑證 Public Key Certificate
	+ 包含使用者的名稱與使用者的金鑰
	+ 憑證由發行人簽章
	+ 使用簽章者的公鑰驗證憑證上的簽章
+ ### 憑證頒發機構 Certificate Authority
	+ CA 是第三方信任機構 (TTP, Trusted Third Party)
	+ 專門發行與簽章憑證的
	+ 驗證簽章 Verifying Signature
		+ 用來驗證私鑰所有者的身份
		+ 不會用來驗證憑證的來源
	+ 憑證是公開的
	+ 如果 CA 出錯將會造成很大的問題
	+ 常見的憑證格式是 X.509
+ ### PKI, Public Key Infrastructure
	+ PKI 包含了所有的部分：
		+ 金鑰的產生與管理
		+ 憑證頒發機構
		+ 憑證的終止...等
	+ PKI 並沒有一般的標準
	+ 我們考慮使用一些信任模型 (Trust Models)
		+ 壟斷模型 Monopoly Model
			+ 一個大家都信任的組織來擔任 CA
			+ 主要是 VeriSign 在使用
			+ 但若 CA 受到威脅，將會出問題
			+ 如果你不信任 CA 也是個大問題
		+ 寡頭政治模型 Oligarchy Model
			+ 有多個可信任的 CA
			+ 現在瀏覽器使用這個方法
			+ 可能有超過 80 個憑證，只為了驗證簽章
			+ 使用者可以決定哪個 CA 可信任
		+ 無政府模型 Anarchy Model
			+ 所有人都是 CA
			+ 使用者必須決定哪個 CAs 可信任
			+ PGP 使用這個方法
		+ 還有很多種其他的模型

## 真實世界的機密性
+ 對稱金鑰 VS 公開金鑰
	+ 對稱金鑰
		+ 速度快
		+ 不需要 PKI
	+ 公開金鑰
		+ 簽章 - 不可否認性
		+ 沒有共享的秘密
+ 對稱金鑰的標記
	+ 使用對稱金鑰 K 加密文本 P
		+ C = E (P, K)
	+ 使用對稱金鑰 K 解密密文 C
		+ P = D (C, K)
+ 混合式的密碼系統
	+ 使用公鑰密碼系統建立一把 Key
	+ 使用對稱式金鑰系統來加密 Data
	+ 考慮以下狀況：
		+ Alice ====    {K}<sub>Bob</sub>    ===> Bob
		+ Alice <=== E(Bob's Data, K) ==== Bob
		+ Alice ==== E(Alice's Data, K) ===> Bob
		+ Bob 有辦法確定他在跟 Alice 說話嗎?

