# Cissp Domain 3 Security Architecture and Engineering 安全架構與工程
## 概述
這邊會提到不同資產類型、資訊環境 弱點,
例如資產類型有:主機型資產、端點資產
以資訊環境來說會提到 工控環境、IT或OT環境
* 存取控制有關,主要在domain5,但少數的security model 會放在 domain 3 這裡,念書時要跟 domain 5 連起來看
* cissp很廣但可能考完跟根本用不到,security model就類似這種
* 密碼學
---
## 資訊安全設計原則 Secure Design Principles
會提到一些原則,例如最小權限原則,縱深防禦
什麼是最佳實踐 best practice? 某些作法被證明有效的,就被列為最佳實踐
最小權限原則就是跟存取控制有關
---
## Basic Secure Design Principles
* Least Privilege 最小權限原則,最好理解最難做到
例如:
1. 小公司沒有AD,本機電腦都有 local administrator,結果 user 都用最高管理者登入,就違反了最小權限原則。問題:筆電常常中毒或惡意程式,那怎麼收回 Administrtor? 請 MIS 把Admin帳號收回 (就是改掉密碼),惡意程式會需要 kernel 權限,收回帳號後安全性就提升了
2. 寫程式的時候,要存取DB,所以自己就是DBA,作業系統Admin也是我管,自己是開發人員,DB自己管,要 Create Table時正常怎麼做? 開一個帳號,要開什麼表就只能存什麼表,但省事就會都用sa(super admin)的帳號進去管理,惡意程式如果拿到AP存取權限,跳板進去時就等同資料庫最高管理者帳號
3. 這個網站 altoro mutual login.jsp 有 sql injection 漏洞,就可以在帳號輸入列上攻擊,強迫把主機關機 請見影片,
4. https://youtu.be/v8jxQ7DgPaI?si=6dVFSFrhC9_sQrhH
---
## Separation of Duties (SoD)
也是一種最小權限的實現,當兩件工作有利益衝突時,就要做職權區隔
中文講說:**不要球員兼裁判**
Programer vs QA (測試人員)利益衝突
黑箱測試就是在找程式人員麻
拉高來看,對公司的大小章營運也一樣
密碼學也會提到的:金鑰分持
以前資料不能放在境外但太麻煩,現在開始放寬
假設有大量備份資料允許放境外,但是要拆分,降低風險
---
## 金鑰分持可以使用 M of N Control
金鑰如果要恢復的時候,只要有 M 個人就可以恢復,實際上總共有 N個人持有資料
https://blog.apnic.net/2021/05/28/what-is-m-of-n-in-public-private-key-signing/
---
## Secure Defaults 預設安全
產品或系統出廠前,預設組態要以預設安全為考量
例如台灣政府推 [TWGCB 政府組態基準](https://www.nics.nat.gov.tw/GCB.htm?lang=zh)
可能有參考美國GCB等相關規飯
以前叫做系統強化 System hardening
有些iot設備早期 wifi 設定定在 WPA1 ,現在預設應該要 WPA2
CIS benchmark 也是一個很完整的組態系統( EX:雲端,手機發展的相對完整)
* 英文說明請看 [CIS Benchmarks List](https://www.cisecurity.org/cis-benchmarks)
中文說明可參考微軟的[網際網路安全性 (CIS) 中心基準](https://learn.microsoft.com/zh-tw/compliance/regulatory/offering-cis-benchmark)
---
## Fail Secure/Close (故障時維護安全預設關閉)
預設斷掉,以資訊安全考量
硬體式資安設備(防火牆),預設 by pass的話,就是 Fail open
防火牆故障時不通就是Fail Secure/Close,
要考慮目的
防火牆目的是擋威脅,社區管理員休假,就把大門打開好像怪怪的,但很多企業組織為了網路暢通,就會讓他 bypass
有兩台WAF號稱 HA(高可用性互相備),但實際上是分流,有的走 waf1 有的走 waf2,當waf1掛掉時流量不會跑去 waf2,客戶說 waf1 故障是 bypass,就會有一部分訊號跑進去又不阻擋
如果會影響到人或生命,預設 fail safe/open
例如辦公室有一個門,停電預設開門還關門? 停電時從裡面打不開,人在裡面就被關著出不來,那火災燒斷電線迴路時...裡面的人就GG了,自動門應該要設定預設開啟
---
## Shared Responsibility (共享安全責任)
現在都會用第三方服務,這是指一部分責任在第三方供應商身上,必須要識別**這些責任**出來
一部分在Custorer(客戶)身上,一部分在Provider(提供者)身上
防火牆規則設定是使用者責任,其實雲端供應商(提供者)都很熟責任區分,但使用者(租用雲端服務的客戶)可能不太熟

---
## Keep it Simple 保持簡潔
資安的敵人越複雜的系統越有可能產生漏洞,一個漏洞要積年累月,才可能被發現
我們在設計時要盡量簡單一點,做資安待久都不敢當早鳥(例如高鐵首航),因為系統很複雜不知道有無問題,誰知道坐上這班高鐵會不會煞車異常
---
## Trust but Verify 預設信任
Verify then Trust這樣理解比較好
implicif trust 也是預設信任的意思,只要我認定你是自己人就讓你進來
但社區住戶中也有惡意的,使用者被入侵了就可能在裡面橫向移動
遭受到挑戰,內網橫向移動:本來是自己人的內部電腦,但是被攻擊入侵成功了,這台電腦就開始在裡面去攻擊其他電腦
---
## Zero Trust(零信任)
never trust always verify(永不信任 總是驗證)
你是內網電腦,你不該看的話,連掃描內網電腦都掃描不到任何東西
把最小權限落實到極致
---
## Privacy by Design(隱私納入設計)
GDPR第25條將「隱私納入設計」(Privacy by Design)
> 參考連結 (https://www.pwc.tw/zh/services/legal/point-view/legal-clouds/legal-clouds-2005-1.html)
在一開始就有考慮到這個議題,一開始就考慮到安全性,就是 Privacy by Design ,一開始就考慮到隱私議題
一開始做需求分析,以前都是做功能性需求分析,如果有考慮到 Security Requirment,不只考慮功能還考慮安全需求
範例1:幾次登入失敗我要鎖定幾分鐘?
先前第一章節,GDPR 6 個原則裡面有提到資料最小化原則,從源頭把風險迴避掉
資料最小化原則 Data Minimization
---
## Defense in Depth 縱深防禦
又叫 Layered defense 防禦不能靠單一防護措施,要很多層
如果一層被攻破,另外一層還可以保護,希望有一層一層的防禦
* 實體安全一層
* 網路周界(內外網邊界) 可能有防火牆 IPS 裡面有WEB可能還有WAF(Web 應用程式防火牆),以前傳統上只有邊界這邊有防火牆裡面通通沒有防禦。大門鎖很好,裡面爛光光(金玉其外敗絮其中)
* Physical Perimeter
* perimeter Network :WAF IPS
* Lan:IDS IPS
* Hosts:HIPS MDM AV
* Applications (Trusted System Admin)
* Data (Server) Trustedsoftware
會建議客戶做端點防護軟體,URL過濾),可以滿足27001要求
可參考 行政院國家資通安全會報中心主任吳啟文於資安人主辦的「2021亞太資安論壇暨展會」演講簡報
[
](https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=9142)
---
## Security Models
參考書有更多 model,至少前兩個B的要看,其他有時間再看
裡面有一些數學的東西比較沒那麼要求
當我們要在一個系統設計他的 Access Control System 存取控制機制時有三個面向
1. Access Control policies 存取控制權限
* 高階級的需求 high level requirements ,例如 DAC 自由選定存取控制 (Discretionary access control)
* 在Windows 內什麼叫做DAC? 例如檔案就是一個 object ,存取資源的就是 subject,我可以決定物件可以決定subject,可以進行控制
,ACL , DACL()
例如這個就是 Windows 的 DAC,但 windows 稱為 ACL

2. models 模型
* 滿足這些 Mandatroy AC (MAC)美國軍方需求 U.S DoD
3. mechanisms(Domain 5)實作機制
-ACL就是一種實作機制
---
## Security Models
在系統裡面有存取控制機制,要遵循什麼樣的規則,只要遵守規則就可以達到 Access Control policies 的規則
用 機密性 或 完整性 評估能不能存取
這邊是兩個 cissp 中很常出現的 Security Models
* Bell-LaPadula model
* 屬於 MAC (Mandatory Access Control) Model 強制存取控制
* 屬於 hierarchical model 階層模型
* 注重**機密性**
* 中級不能讀取上級寫的資料
* 中級寫的文件不能改成下級可以看
* 軍方文件會放文件的密等
* Windows/Mac 偏向General
* Biba model
* 屬於 MAC (Mandatory Access Control) Model 強制存取控制
* 屬於 hierarchical model 階層模型
* 注重**完整性**
* 中級不會聽下級的命令,上級才能指揮中級
* 中級不能覆寫(竄改)上級的命令
可參考 [[PDF] Bell-LaPadula Model: A MAC Model for Achieving Multi-level Security](https://www.icet.ac.in/Uploads/Downloads/MOD2.pdf) 這邊的圖

## Bell-LaPadula Confidentiality model
:::info
在軍事體系,為了避免高層洩密,我們把職位分成 上級 中級 下級
假設自己是 **中級**,來看以下三條規則:
1. 中級不能讀取上級寫的資料,避免偷窺 (No Read Up)
1. 中級寫的文件不能改成下級可以看,避免洩密給下級 (No Write Down)
1. 中級寫的文件能不能給其他中級看? 中級可以自己決定 (Discretionary 酌情決定)
:::
> 符合 MAC 強制存取控制,一開始就強制決定了規則
這是以機密性做判斷的模型,例如SELinus Security OS,就是符合美國軍方想要的 MAC 存取控制
這個需求被提出來後,美國軍方就提出研究案,Bell-LaPadula兩位學者提出這個Bell-LaPadula 模型(model),用機密性做判斷
1. No read up - Subject不能去讀取他等級低
* 先把所有 subject object 先把高中低設定好 (top是高,confidential 是低)
* 依照業務需求設定機密等級
* No Read up就是不能讀取機密等級比自己設定還高的
2. No write Down - No write Down 不能寫入更下層的內容
3. Discretionary - 同等級可以自己決定能不能讀寫, Object Owner 自己決定,就沒有洩密的問題
## No Read up
* Three Properties of BLP
Simple Security
Star
Discretionary
Discretionary是老師找原始論文看到這個名詞,其他文章可能會用別的名詞,這部分沒有統一
---
## Biba 要去看 p17 表格,還沒補上
:::info
目的是完整性,不希望內容被破壞,這邊分成三個等級 爸爸 國小生 幼稚園小孩,學校教小孩遵守Biba規則
1. 不要聽幼稚園小孩的話 No Read down
1. 不能更改爸爸說過的話 No Write Up
1. 不能叫爸爸做事 Invocation (不能去呼叫信任等級高的功能函式)
:::
> 符合 MAC 強制存取控制,一開始就強制決定了規則
把它想成信任等級,總共三條規則:
1. No Read down:分持高中低,down是資安level
2. NO Write up:不能把手上的資料,寫到信任等級高的資料
3. Invocation:呼叫函式,類似2 不能去呼叫信任等級高的功能函式function
豆花例子 對於一個信任等級較低的資料,我們拒絕處理
> 路人:我ㄉ豆花~ 三十塊~ 陌生人給的豆花你敢吃嗎?
Biba 參考圖片,來源網址如下
https://www.sciencedirect.com/topics/computer-science/biba-model
[](https://www.sciencedirect.com/topics/computer-science/biba-model)
---
## 實際練習 Bibatest
用 windows cmd 指令
```icacls 檔案名稱 /setintegritylevel high```
我還是 owner ,如果我要加一行到這個檔案,我就加不進去了
我明明是 owner,但安全等級不到也寫不進去,改回中才可以
---
## Brewer and Nash(布魯爾-納什模型)
某一個 subject,要存取 object A (旁邊有一個 object B),但中間有利益衝突 (Conflicts of Interest,簡寫COI)
* 例子 :國外有一些大型律師事務所,原告律師只能存取原告A的資料,但原告A 被告B 兩個資料有利益衝突,他想存取被告B資料時就會被拒絕
---
## Clark-Wilson(克拉克-威爾遜模型)
以下縮寫
* S=Subject
* O=Object
* P=Program
存取型態類似這樣
S>O>S>P>O 這個 subject要存取 Object,中間要有 P Programe 控制邏輯(俗稱防呆),把資料修改規定的商業邏輯放在裡面,就可以確保不會改錯了
---
>以下兩個模型處理updat(更新),生命週期(Life cycle)管理
## Graham-Denning(強制訪問控制)
Access rights 存取權限管理
權限大概有這些
create
modify
remove
revoke
---
## HRU(Harrison-Ruzzo-Ullman)
(上課沒講到)
---
## Security Enginerring(安全工程) P23
老師舉例:以前做國防部專案時,有個系統工程組,負責 System Enginerring,他要負責去找規範,台灣都抄美國,就 follow 美國國防部規範,維持品質
> 講義有,但老師覺得考試不太會考,知道就好
透過一些已被證實實踐的理論,讓domain品質變得更好,維持它的品質
兩大組織 ISO NIST
* ISO/IEC/IEEE 15288
* System Engineering(系統工程)
* ISO/IEC/IEEE 15026
* 怎樣做Assurance品質確保?
* NIST SP 800-160
* Security Engineering(安全工程)
* INCOSE
彼此之間的關係有圖片,請看投影片 P24 補充 (或是自己畫)
---
## NIST SP 800-160v1r12022:Enginerring TrustworthySecure Systems P25
這邊主要講系統生命週期,可以看 [PDF 的 129頁 G.2. Process Relationships](https://csrc.nist.gov/pubs/sp/800/160/v1/r1/final) 圖片的架構

* Technical Processes:14個活動 需求訪談
* Technical Management Processes:8
* Organization Project-Enabing: Processes:從組織角度管理專案 某個專案落後風險太高,可能就停掉不做了,就是屬於這類
* Agreement Processes 2個,需要供應商提供軟體產品服務,我們是採購的角色Acquisition,要注意合約要求有沒有寫上去;反過來說,我們是供應商,該如何做到責任與義務
> SP 800 有 190 幾頁,不建議全部看完,知道就好
文件其實也有明顯提到滲透測試的要求
> VA-1.3 Select appropriate security validation methods and the associated success criteria for each security validation action.
Note: Adversity emulation, **including penetration testing** and emulating abuse and misuse, isincluded
## Security Policies, Models, and Architrcture 安全的政策 模型與架構
借前面的圖來用

* Policies
* Model 怎麼設計這個系統?
* Architecture 架構用什麼架構
* 做權限中的控管
* osSK
* Drivers
* Ring 1 Device
* Utils
* Ring 2
* EX:Net User,netsh
* Apps
* Ring 3 User mode
* 投影片缺一個 Implemenation

## Ring Architecture
* Ring 0 OS & Kernel 應用程式不應該存取
* Ring 1 Device Drivers
* Ring 2 Systen utilities
* Ring 3 權限最低是一般應用程式 User mode
沒權限就藏起來是屬於 data hiding
但直接這樣做會有問題,例如 系統時間是應用程式的kernel,你不讓我存取我怎麼寫小時鐘程式?
雖然資料藏在裡面,但我設計一個介面,這個介面其實就是一堆API,要存取 kernel只能用 API,沒有就不能存取,API遊戲規則是 kernel決定
所以**介面**就是有包含存取控制權限了
防火牆 或 router 也可以當作兩邊網路的存取控制要求
---
## SCinsystem and architecture P28
安全能力 Controls,有些能力是系統本來就有的,不用自己去生或是建立。
* Access Control 存取控制 例如Windows DAC
* Process isolation ,作業系統本來就有Process自己空間,你要存取別人的要透過 OS,要看 OS IPC 有沒有放你過
* Memory management
* Data Hiding 沒開放API或介面就不能用
* Abstration layers
* Security Kernel > AC M 滿足一些條件
* reference Monitor:當時有一個資安專家 1980年,James P. Anderson的《計算機安全威脅監控與監視》,提出在一個安全作業系統中,要滿足三個要求(1.Comeplefe:一定要經過存取機制,2.Complefe mod ation:強制一定要經過他 3.Smale enough:驗證方式不能太肥)
* 我們才稱為是Security Kernel,一般商用軟體做不到就不能說是Security Kernel
* Encryption
作業系統就有兩種加密的方式 Windows專業版作業系統,這個加密就是 EFS 功能,軟體加密,MAC也有類似功能

* Code signing
1.Vinder 釋放的軟體要做數位簽章
2.OS
3.Sipns
* Audit and Monitoring
* 要想想該去 Audit 什麼東西?
* windows 的 gpedit 可以看

* Virtualization/Sandbox(虛擬化/沙盒)
> 老師: hyper-v有時候常常跟 vm 相衝造成很慢...要弄什麼 vm workaround

* 沙盒:主要是在做isolation(隔離) 把高風險的東西所在隔離環境,實作方式很多種,建立VM,讓這些高風險的內容可以被阻擋
* Hardware security modules 硬體安全模組
* 如果3個字都大寫 HSM 就會變專有名詞,是用來放私鑰的設備(設備價格百萬起跳)
* 當通用名詞就是保護機制,筆電 TP晶片就是一種安全模組、自然人憑證 smart card裡面有一區安全區域也是這一類,其他手機也有類似的
* File system attributes
---
## Common Risks and Controls on Different Systems Architecture P29
All Systems contain vulerabillities exposing them to:(左邊-威脅)
All System need robust risk Mitigation via Security controls:(右邊-降低風險)
攻擊者怎麼利用這些弱點去攻擊,自己玩連連看
老師試玩一組
* Hardware failures 硬體失效怎麼降低風險 ?
* Configuration management
* monitor analyzerespond
* 舉例:Raid 5顆壞1顆硬碟還 ok,壞2就死了,但平常都只用windows 共用磁碟使用,平常沒去看管理介面壞幾顆會出事。
* > 老師:我很納悶,你壞一顆不能主動發警告訊息或嗶嗶叫嗎?...
Attackers > Access Control 也是一調連線方式
---
## Client-Based systems P30
Characteristics(特徵)
* 桌機、筆電、thin client(沒有運算能力的設備) ,終端機,總之就是端點,後來處理程序越來越往前到user端。
* 資安會把安全運算的東西往後丟,避免被入侵
* 端點數量比較龐大
* 端點狀態更新較頻繁
* 使用者行為模式可能不一樣
Vulnerabilities(漏洞) 產生各種風險
* 使用者的misuse :誤用,例如公司資產應該只做公司的事,拿去看色情網站;弱掃工具是檢查的,結果拿去攻擊入侵
* May be lost/stolen :筆電帶出去被偷,在starbucks工作去上廁所,筆電手機都放在桌上還沒鎖螢幕...,東西放車子裡窗戶被打破偷走

* 監控很困難
* 100%追到最新更新有難度
Mitigations(緩解措施)
* Awareness training
* Endpoint management 端點防護
* HIDS 主機入侵檢測系統(Host-based intrusion detection system,HIDS)又稱基於主機的入侵檢測系統 ,現在已經都包在端點防護了
防護舉例:
* Windows 可以用 AD管制,可以控管端點
* EPP 端點防護軟體,各家都是在端點裝一個 agent,管理軟體都是雲端化
* DLP 有些 agent有防資料外洩 DLP,例如趨勢 apexOne就有
* UEBA 使用者行為分析
* MDM 行動裝置
* EDR ,domain 7 會提到
* UEM,把很多功能整合在端點裡面
* MDR Managed Detection and Response,指的是威脅偵測與應變服務,也有類似功能
> 老師題外話:想找的一個同時能做資產管理的端點 Asset management,包含組態管理,security 的規則都放在上面,但好像都不同廠商,找不太到一個端點把安全功能(防毒,資料外洩,url filter都放在上面),都是不同廠商做的...
> 端點防護軟體效果比較好,而這些軟體廠商都是用訂閱制,每年都要花錢,一個node 台幣1k~2k,100 台就10萬了
---
## Server-Based Systems P31
Characteristics(特徵)
* 不同類server ,web 或 ftp..
* 集中管理 有小機房
Vulnerabilities(漏洞)常見弱點
* 作業系統或軟體已經不支援了
* 主機型流量較高
* 需要透過網路
* 技術上面有做好,但實體安全沒做好也可能造成風險
Mitigations(緩解措施)
* 實體 邏輯或管理者存取控制需做好\
* 可用性要有複式備援評估他是否有Single point of failure(SPof:單點故障)
* Redundant elements
* 客戶有Saas服務,後面要DB,只有一台的話壞了就沒了,所以一台 DB 放台灣,2台放新加坡
* 平常台灣這1台提供 read/write,新加坡只有讀取,維持資料一致性
* 如果台灣的掛了,就手動把新加坡的改成可讀寫
* Configuration and Change Menagement組態管理
* 服務硬體軟體,它的組成 baseline要先做起來,服務需要那些主機? 資源等等就是baseline configuation,定期監控組態看看有沒有變動,有變動的話要透過變更管理去控制風險
* Strong remote access Mechanisms
* 主機需要遠端存取,要有安全遠端存取機制,例如
* 多因子認證
* 不要用特權帳號遠端證據(1.Linux root 2.Windows admin)
* session 管理,一段時間要自動斷掉,因為 session 可能被攻擊者用中間人攻擊,強迫中斷就需要重新驗證
* Logging and Monitoring
* 主機上面重要活動要去監控他,要把它記錄下來
---
## Database Systems 資料庫也是一種主機,只是比較特殊
Characteristics(特徵)
* 以安裝在特定主機,也可以是雲端服務
分散式的DB ,例如 mongoDB
安裝在作業系統上面,作業系統底層是hardware,這邊會常常看到 inherits繼承這個字,作業系統弱點會影響到DB就是 inherits
* 需要高速的運算
* 包含大量有價值的資訊
* 對攻擊者來說是high value target
Vulnerabilities(漏洞)
* aggregation 聚合:攻擊者收集到一些片段的資訊,片段資訊單獨看都是不重要的,合起來就重要了(例如A公司遮蔽身分證前5碼,B公司遮蔽後5碼,撿到前後公司的資料就湊出來了)
* Inference 推理:蒐集資訊或觀察現象,跟前者聚合的差別是他是用**推測**,他會去 guess 猜測一個敏感的結果。
* 舉例 一個系統有機密等級,如果有個海軍艦艇管理系統,機密等級會隨著任務調整,用BellLapuda模型來看,Day1一台艦艇靠岸只是低等級,到了Day2調成高之後,我又去存取不給存,我就可以猜出這台艦艇要去做機密任務了。怎麼防護? polyinstatiation,乾脆把這艘艦艇建立兩筆,機密等級有到就給你查真正的這筆,機密等級不到就給你看假的。
* 但這是理論.....實務上很難看到真的這樣
* Data Mining output,如果是有資料探勘的需求,也要小心沒做好造成資料外洩
* Poor access control
* Vulnerable applications
Mitigations(緩解措施)
* Robust authentication/access control:安全身分驗證或存取機制
* Output throtting 輸出流量管制:例如 match 10萬筆資料,太多要截流,常見的**分頁**就是這種機制 (效能類的防護)
* De-identification 去識別化:敏感資料放進資料庫如果不需要它的特性,可以做去識別化
* 匿名化 anonymigetion,強度較高,例如個資做完匿名化後不可回復 revert,GDPR對去識別化要求要到這個程度
* 擬匿名化 pseudonymization ,換另一個詞但是可以 revert (例如base64)
* Hash是哪一種呢? 正常他不能倒推,但要hash的資料短於hash時有機會被破解出來
* 
* [擬匿名化補充](https://www.cloudflare.com/zh-tw/learning/privacy/what-is-pseudonymization/)
* GDPR有一篇文章說:hash 就是不算 anonymigetion,技術文件的關鍵字:wp 216 05/2014 anonymization,雖然這份2023年好像已經不適用了,但可以參考,搜尋 hash會看到擺在 pseudonymiation 的章節
* Encryption 加密,可以啟用資料庫加密功能,有些稽核不是技術背景,他會問你個資存DB時有無加密,老師會把這種人當作不食人間煙火...因為AP層加密很難用,要審慎考慮,可以在 DB層加密,不會影響到應用程式。要縱深防禦避免AP有重大漏洞,防止 AP權限過高解密一堆資料
* (More on domain 8)
---
## Virtualized Systems 這邊專指 VM 虛擬機器
Characteristics(特徵)
* Hardware,network functions abstracted by software
硬體、網路架構等等用軟體模擬出來
* Many strategies for control, use,update, management of VMs
* Usages: Cloud, sandbox,development, security test, other uses
雲端 沙箱 開發 安全測試或其他使用者都有機會用
## VM有分成(type1 type2)分成兩種架構
Type1:兩大廠商 Vmware(以前跟dell一起) 和 Nutanix
* 底層是虛擬化功能作業系統,作業系統本身就是 Hyperisor 的 OS,更底下就直接是硬體
* hyper-v(微軟虛擬軟體) 和 esxi 就是屬於這種
補充資料:虛擬化Type1的底層類似這樣 ([2016年 什麼是超融合架構? 超融合基礎架構(Hyper-converged infrastructure,縮寫爲HCI) ](https://www.ithome.com.tw/tech/102114))

Type2:疊層架屋 效能較差
* VM下面是 hyperisor 的軟體
* 例如在 windows 裡面安裝 vm workstation、virtualbox,他提供虛擬化環境跑其他作業系統
Vulnerabilities(漏洞)
* inherit host hardware, hypervisor and os vulnerabilities
* 跟 DB 類似有繼承問題,硬體或作業系統弱點會影響裡面的 OS
* Poor access control
* VM escape 存取控制有關
* host os(底層vm系統) guest os(vm系統裡面的OS)
> Gest oS 不能隨便跑道host OS 裡面去
* Poor management
* VM sprawl蔓延,
* 如果沒有好的管理,當 vm 開一大堆,沒用到的 vm 還開在那邊就可能被攻擊
* 或是成本問題,開一堆vm很貴
Mitigations(緩解措施)
* Configuration/change management 組態管理/變更管理
* 可以用 template image的樣板作為 base,當成 vm instance,開起來,我們要關注這個 template 的 OS 是安全的版本
* Proper IAM 身分與權限管理的功能,雲端都有
* Management plation 雲端都有,本機的例如vsphere 或是 container管理工具 k8s
---
## Cloud-Based Systems
* NIST Essential Characteridtices:(4大特點)
這是美國國家標準局(NIST)於2009年4月所提出的雲端運算的標準定義
> 以前地端實體資源虛擬化放在雲端,所以Sever,storge,network這些現在可以虛擬化
例如軟體定義網路(英語:software-defined networking,縮寫作SDN)
* On demand self-service:自助式的服務,用起來接到 3. Rapid elasticity
* Broad network access:隨時隨地用任何網路裝置存取
* Resource pooling:1. 放在一塊資源池,雲端就是 IT資源池什麼都有,怎麼使用呢? 用前面的 2. On demand self-service,
* Rapid elasticity:雲端反應非常快,方便使用
* Measured service:使用者可以monitor監控,供應商也可以量測來跟你收錢計費
老師:有錢好辦事,這個資源池什麼都有,就算原生沒有,生態系的供應商大概也會有,可以使用第三方服務,只要付費就有
* ISO 17888 addition 這個是 ISO 多加的
* Mulititenancy 多租戶跟存取控制很有關係,共用資源
* 這邊會有的風險 **水平提權 horizonral escalation**
* 底層只有一個DB ,給A和B兩個人一起用這台 server,但不代表A和B可以互相存取資料,如果被攻擊,這個攻擊就是 水平提權。
* 從上面名字可以猜到會有**垂直提權**,明明低權限一般使用者拿到高權限使用者(admin)的權限,就是垂直提權。
---
## Service Models 雲端服務提供的模型
* Software as a Service(SaaS)
* 把軟體當成是一個服務(Drobox,Google Drive)
* 人資系統做成 HR SaaS 服務
* CRM(SaleForce)
* SD Security-FWaaS
* Platform as a Service(Paas)
* PAAS 要有 Run-Time 環境
* Google服務, Google APP(GAE):有程式沒有地方執行
* 一樣都是跑 web runtime功能,在 google 的叫做 app engine、Azure 叫 app service、aws 叫 ec2
* Infrastructure as Service (IaaS)
* 提供硬體設備
* 起一個 VM 沒有這些基礎建設,從這開始有一個主機
---
## Deployment Models 雲端的部屬
* Private 私有雲
* 環境只有你的組織使用,其他組織不能用
* 有些主管機關要求一定要地端,講義則不要求,只要是**只有**你的組織可使用就算
* 只要這個資源是我專屬,不會有多租戶的問題就可以
* 可以搜尋 vpn 關鍵字,例如 [Google 虛擬私有雲 (VPC)](https://cloud.google.com/vpc?hl=zh-TW),範圍涵蓋所有區域的全球虛擬網路。整個機構只需使用一個虛擬私有雲,並可利用專案在私有雲中進行分隔
* Public
* Open use by general Public
* Contracted Sevices(CSP)
* Community
* Provisioned for exclusive use by a Community of users
* 例如台灣醫療雲,醫療單位都可以共享
* Hybrid 混合雲
* Combination of two or more deployment models
* 通常是指地端和雲端共用
* multi-cloud 多雲
* 主要功能跑在GCP,Storage放在AWS S3
---
## Cloud Vulnerabilities and Mitigations (弱點)
* Vulnerabilities 弱點
* 這些服務可能直接面對外部網路,例如 Shodan是一個搜索接入網際網路的設備的搜尋引擎,可能就能被人挖到東西
* 設定出問題可能讓攻擊者可以直接看到資料
* 例如 [grayhat warfare ](https://grayhatwarfare.com/)專門掃描公開的 storage
* 
* Gap Between CSP and data owner Security controls (注意!!有考過)
* 雙方安全責任不清,會產生風險,責任區分看 [Google](https://cloud.google.com/blog/products/containers-kubernetes/exploring-container-security-the-shared-responsibility-model-in-gke-container-security-shared-responsibility-model-gke) 的圖,越往左邊雲端供應商的責任越少
* 
* Mitigations
* Reputable cloud service providers 使用有信譽的供應商
* Well-defind Sharing Security responsibilities 資源是否有可視性,能否看到資源狀況 以及 控制
* 好的IAM身分權限管理控制
* Robust Configuration Control 組態管理變更管理 例如 [AWS基礎安全性最佳做法 (FSBP) 標準](https://docs.aws.amazon.com/zh_tw/securityhub/latest/userguide/fsbp-standard.html)
* 設定管理 [AWS config ](https://docs.aws.amazon.com/zh_tw/controltower/latest/userguide/config.html)
* 檔案與通訊加密
* Well-trained system adminitstrators給管理者適合充足的教育訓練,例如之前有雲端大當機,好的訓練可以避免務操作
範例:[烏龍警報聲大響! 中和分局急致歉「誤觸海嘯警報」](https://www.nexttv.com.tw/NextTV/News/Home/Life/2023-11-09/1377895.html)
中和分局回應,每天都會固定測試警報器是否正常運作,但值班員警不小心誤觸「海嘯警鈴」,才會響這麼久,會加強檢討,避免再次發生類似事件。
---
## Edge and Fog Computing Systems
* Characteristics:
* Different Definitions
* Edge Computing:地端邊緣離設備比較近的地方運算,需要realtime即時反應,但是不需要太多運算資源 (limited computing),例如自動駕駛車,不可能傳回雲端丟回去運算(傳輸太花時間耗成本)
* Fog Computing ,near real-time,需要中等的運算資源,想像成區域型的資料中心
* Vulnerabilities:
* Network Compromise
* Increased attack surface 越多層 受攻擊面就越大
* Mitigations:
* Increase network monitoring and icident response 被攻擊有無事故應變流程
* Strengthen inventory and accountability Practices 完整的資產盤點和告訴 owner 負有責任
---
## Smart Home 智慧家庭或Smart City 智慧城市的例子,fog層沒有標準答案
* Enterprise Systems - Cloud
* Gateway - Fog
* IOT Device. - Edge
fog 層參考圖片
[Towards Fault Tolerant Fog Computing for IoT-Based Smart City Applications
N. Mohamed, J. Al-Jaroodi, I. Jawhar
Published in Computing and Communication… 2019
](https://www.semanticscholar.org/paper/Towards-Fault-Tolerant-Fog-Computing-for-IoT-Based-Mohamed-Al-Jaroodi/33ffc8895d678209d210827cbe2e829fa5ec3fb3)
---
##
---
## Software Design Arch P41 軟體設計架構
* Characteristics:
開發軟體時是用 Monolith,不願意改變,也不關心個體的權力龐大的巨型機構,就彷彿整個大專案綁在一起,一整坨。
假設這個軟體有3個function ABC,FunctionA請ProgramA寫,FunctionB請ProgramB寫,AB會互相影響,所以B有動東西不能直接更新,要等到A也幫忙測試 ,大家都測完才能上線
---
## Microservices P42 微服務
* Characteristics:
* 各自獨立運作單位,透過 API 存取該方式
* Containers 方式封裝
* Servicerless
* Cloudy,在雲端執行 1996年就有提出SOA(service-oriented architecture),要部署Middleware
* minimum functiality(功能最小化) ,high cohesion 高聚合度
* Loose coupling 降低相依性,避免牽一髮動全身,處理前面說的 Monolith 一整坨問題
* App services用的 resource 和底層的 resource,底層有自己的管理功能,兩者是隔離開來的
* 佈署方式方式分成 container 或是 serverless
弱點
* Latency 地震預報如果主機架到國外雲端,訊號傳回來延遲就太慢了
* DoS有不同Layer,這邊是第七層
Mitigations
* SSDLC (Secure Software Development Life Cycle): 安全的軟體發展生命週期(Secure SDLC 或S-SDLC) ,domain8再講
* DevSecOps DevSecOps是一種集成開發(Dev)、安全(Sec)和運營(Ops)的方法論
* 限流量或短時間次數, api gaeways 會限制,例如1分鐘不得超過200次
---
## Containerization P43 容器化,把應用程式封裝在一起
* Characteristics
* Shared OS Service
* Lsolated applications
* Reduce size of VMs 想像成小size的vm,把應用程式虛擬化,跟vm不一樣,只是類比
* Reduce cost of operation
* Rapid adoption 應用程式啟動和消失很快
* Containers are portable 只要runtime環境相容,在 windows 或 linux 都可以跑
* Multiple technologies
* Vulnerabilities
* Insecure base images 不安全的image,例如使用到舊的元件log4j
* Excessive Privileges 不可以給container過多權限
* Container sprawl, escape 從 container 裡面跳出來攻擊外面
* Mitigations
* Image Management 類似 vm 避免開太多管理問題(未妥善更新 浪費運算資源)
* Limit Containers Privileges, resources 設定 container 要用什麼權限,資源的使用限制
* Micro-segmentation,firewalls 切小小防火牆做網路區隔
* Container Menagement
## serverless 無伺服器的運算
程式運作完就關閉了,例如
* Google 叫做 [Cloud Function](https://cloud.google.com/functions?hl=zh_tw)
* 微軟叫做 [Azure function](https://learn.microsoft.com/zh-tw/dotnet/architecture/serverless/)
---
## High-Performance Computing System P44 高效能運算系統
其實是一種技術的通稱,講的是需要複雜運算的系統,有多種方式可以實作
* Characteristics
* Highly complex Computational science and mathematical resources 超級電腦就是一種
* Significantly more Computational resources
* Maximize the productive(Customer)use of resources
* Supercomputers, computer clusters,cloud computing 叢集式或雲端也是高效能運算
* 當紅炸子雞 GPU 運算也是一種高效能運算
* 量子運算 quautum computing,但2023年的現在還沒很 成熟
* Vulnerabilities
* Neteork latency 網路延遲拖累運算能力,解決方案舉例:另一個協定 InfiniBand,在super computer之間傳遞資料,參考資料:[InfiniBand進入400Gb/s世代,Nvidia在2020年11月發表400 Gb/s InfiniBand網路解決方案,今年下半將開始提供Quantum-2系列網路交換器的樣品](https://www.ithome.com.tw/review/146313)
* Unauthorized workloads 未驗證的工作流程
* 神經網路軟體做字元識別,切成五個task,派送到五個大型主機,跑一個晚上,軟體就能收回結果,運用分散式平行處理
* Same traditional Security concerns 其他安全跟傳統一樣 主機安全 網路安全 監控機制
* Mitigations
* Proprt design
* Appropriate monitoring and logging
## Industrial Automation Control Systems P45 工控環境
ICS,有些會一個 IACS, A是 Automation
CII 關鍵資訊基礎設施(Critical Information Infrastructure, CII)
跟工控環計有關 (油,水,電)
OT更強調完整性,例如醫療器材設定被改影響生命安全,產線影響效率(台積電感染 wannacry)
OT服務中斷的影響不太一樣,IT就重開reboot就好,產線重開,前面作過70%的半成品都白費變沉沒成本要整個重來。
OT:完整性可用性
IT:重視安全性
控制實體設備透過 actuators 致動器,例如透過 致動器 控制機器手臂。家裡的定溫熱水器就是一個小的設備(快到90度降溫,85 度努力升溫。
工控環境風險:熱水壺被入侵,被串改,現在改成80度
---
## 工控環境參考圖片
[Detecting cyberattacks in industrial control systems using online learning algorithms
Author links open overlay panelGuangxia Li a, Yulong Shen a, Peilin Zhao 1 b, Xiao Lu c, Jia Liu a, Yangyang Liu a, Steven C. H. Hoi d](https://www.sciencedirect.com/science/article/abs/pii/S0925231219309762)

攻擊管道
1. HMI被入侵,去操控 Actuators
2. Sensor 收到指令,對 PLC 下指令,PLC被攔截去操控 Actuators
震網(Stuxnet):美國對伊朗核電廠工控環境使用病毒發起攻擊的事件
* 有改編紀錄片,可參考 [《零日網路戰》:史上最惡病毒「Stuxnet」的真相 - INSIDE](https://www.inside.com.tw/article/6984-zero-days)
SCADA系統,如行車監控中心
* 資料採集與監視系統(英語:supervisory control and data acquisition,縮寫為SCADA)一般是有監控程式及資料收集能力的電腦控制系統。可以用在工業程式、基礎設施或是裝置中。
---
## Industrial Control Systems P47
Characteristics(特徵):
* Cyber Physical 一邊數位一邊實體環境的系統,出問題會造成人員傷亡
* 控制與監控很多等級,有on-device on-site, Lan ,Internet
Vulnerabilities
* 不安全的地點
* 設計 程式或介面可能沒有擁有權
* 不安全的通訊環境(但現在比較好了)
* 更新很困難主要有兩個問題
1. 機台EOS:產線動則數千萬,一用就二十年
2. 封閉網路:網路隔離,無法與原廠直接做更新
Mitigations
* 網段隔離
* 台商廠房做建置,四個產線在同個網段,感染勒索軟體,就都被入侵
* Configuration conotrol 組態管理
* 絕對嚴格禁止未經授權的變動
* Secure protocols 安全的通訊協定
* IEC 62443是針對「工業通信網路-網路和系統的IT安全性」(Industrial communication networks - IT security for networks and systems)的一系列的國際標準。
* 控制四個角色 擁有者owner 製造商 SI 供應商
* SEMI E187,188(台積電帶領制定資安規範)
* 參考 ithome 資安大會 SEMI E187/E188 落地實務指引 https://cyber.ithome.com.tw/2023/session-page/1941
---
## Internet of Things(IOT)Reference Arc
* Characteristics(特徵):
Edge 永久儲存可以透過 Gateway 想像成fog層,往後就是放在雲端,最上層是UI
消費端工業應用幾乎都有運用到
> IOT應用:雅馬遜的無人商店,掃碼掃身份,商品拿出來都會偵測,只要可以偷東西不被算,就代表送你的。
[ 三分鐘設計報 ] - 到 Amazon Go 無人商店偷東西
https://www.youtube.com/watch?v=Z0PTKJ11Hm8
* 小型應用式的感測器
* 與實體環境做溝通
* 用一班網路做溝通(Internet,3G,4G,5G)
* 內建Wi-Fi網卡
* IOT設備convergence 很少單獨運用都會跟網路整合
* Vulnerabilities(弱點):
* code 不好管理更新困難
* firmware 更新檢查完整性不好檢查
* minimal security built-in沒辦法達到 secure default 預設安全
* 加密較弱的問題:nist提適合iot設備的輕量級加解密演算法,[美國NIST 宣佈 ASCON 為物聯網資料保護加密演算法的標準 2023/02/10](https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=10325)
* IOT設備無人看管 ,台灣有 [IOT 影像監控系統資安標準](https://www.tssia.org.tw/news/?mode=data&id=624&parent_id=10000&type_id=10126)
* Default credentials 預設帳密問題,要求每個設備預設帳密不同
* 專門找 ipcam 預設帳密的網站 http://www.insecam.org/
* 
* Mitigations
* 端點管理
* Secure update
---
## Select and determine cryptographic solution 3.6 密碼學
主要聚焦在密碼學的應用,適合的地方
在「我的密碼沒加密」部落格,站長提醒了幾個疑似存在密碼安全漏洞的網站。站長Allen(台灣駭客年會翁浩正) 將在資安展 2012/4/19(四)中午於新品發表區實際展示網站密碼問題
https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=6702
對稱式 非對稱式
## Why Cryptography
機密性,存取控制
## Cryptography Evolution密碼學歷史
1. 第一階段-手動加密
2. 第二階段-機械式加密
3. 第三階段-電子機械式加密:可參考模仿遊戲
模仿遊戲- 維基百科,自由的百科全書
2014年電影 模仿遊戲
1939年英國向納粹德國宣戰,在丹尼斯頓司令安排下,圖靈赴布萊切利園加入解密組,試圖破解當時無人能破的德軍「恩尼格瑪密碼機」,[線上玩看看 Enigma machine emulator](https://www.101computing.net/enigma/)
4. 第四階段-Modem Era 現代數位加密 對稱式非對稱式都算這一種
5. 第五階段- Quantum Cryptography量子加密演算 ,或稱後量子演算法,專們用來防止量子電腦運算很快把舊加密破解的新演算法
---
## Key Encryption Concepts
* Plaintext 明文:沒有加密的狀況
* Cryptosystem 加密解密系統
Chiphertext 加密後的密文
對方收到要 Decryption
加密解密(Encryption)有金鑰參與,編碼(encode)沒有
## 金鑰強度 P60
金鑰強度越長強度越高,密碼學演算法在有限時間(百萬年,千萬年才能解密),沒有辦法破解,他就是安全的
---
## Kerckhoffs's Principle 原則
1. 強調金鑰保存的重要性
2. 不能以隱藏加密的原理 來做為安全保護措施
> Shannon's Corollary說:請假設攻擊者知道你的所有東西 除了金鑰。
## Cryptography System P62 有圖,背起來
目標:機密性,完整性,來源可信任,不可否認性
1. 對稱式加密:分兩類
* AESBlock Cipher:AES
* 串流演算法
2. 非對稱式加密:
* Symmertric
* Block Cipher:代表作 AES
* Stream Cipher:代表作 RC4不安全了,新的是CHACHA20
* Asymmetric
* RSA, 離散對數因式分解 (怕量子電腦運算)
* Discrete Logarithm:ECC橢圓曲線 和 DH 兩個人開發的演算法
* Accidental
3. Hash演算法:
* Keyed HMAC
4. 數位簽章(HASH,非對稱式)
## Symmetric Encryption Algorithms 對稱式加密演算法特性
* 使用相同金鑰加密與解密 Use the same key to encrypt and decrypt
* 對稱式演算法有兩種做法
* 置換substituation
* 重新排列 Transposition
最大目標是達到不可預測性,明文和金鑰之間沒有特定關係,這個演算法就滿足加密的條件
* 須具備不可預測性,算出來有隨機性 Random
## Substitution Ciphers(置換)
把明文某個字元做交換
- 可參考[凱薩密碼加解密工具](https://cryptii.com/pipes/caesar-cipher)

早期的 windows 使用的 ROT13 加密演算法就是用這種方式
## Transposition 重新排列,又叫做 permutation P65有圖
例如 Apple 重新排序

## 頻率分析法 Monoalphabetic and PolyAlphabetic Ciphers P66
因為英文有單字出現頻率的問題,所以可以用頻率分析工具,專門用來剋這種單一字元集的加密演算法
https://www.boxentriq.com/code-breaking/frequency-analysis
---
## One-Time Pads 只是用來產生金鑰表,他不是 One Time Password
the only cipher system asserted as unbreakable
* Truly Random,程式不好做,程式通常只作出 Pseudo 模擬的
* 每把金鑰只用一次
* 模擬器,產生一堆金鑰隨機產生只用一次,學理上無法破解https://www.fourmilab.ch/onetime/otpjs.html

---
## 對稱式加解密優缺點 P68
* Advantages(優點)
* 快:比非對稱式大概1000倍 (大量式資料應該用這種)
* 可達到機密性要求
* 可達到完整性 例如使用 [#CBC-MAC對稱式演算法](#CBC-MAC對稱式演算法))
* Disadvantages(缺點)
* 來源端和接收端必須使用同一把金鑰
* 不能交換金鑰,不能安全的把金鑰給對方
* Scalability(金鑰數量)
* 公式:N*(N-1)/2
* N=3, Key=3
* n=4, Key=6
* n=6, Key=45
* 金鑰數量會暴增很難管理,非對稱式只要 2n 把
* 無法提供不可否認信,也無法提供數位簽章,對稱式加密不能做數位簽章
---
## Asymmetric Algorithms 公開金鑰加密,非對稱式加密法 ,代表作 RSA加密法 P69
非對稱加密:在做加密時會有兩個Key(一個公鑰,私鑰),一把加密,解密要用另外一把開。
> 注意:中文講 **加密** 就會想到機密性,但在非對稱式裡不成立,用公鑰和私鑰要達到的目的不同。
* Public Key 公開的可以隨便給人家
* Private Key 要保存好,全世界只有你有
特徵:One-way-function
* 正向運算簡單,反向運算很難
* 私鑰算公鑰簡單,公鑰反向推出私鑰很難
## Hard Mathematical Problems P70
* Factoring : 代表RSA
* 因式分解,拿兩個很大的質數相乘很簡單,但要拿這個結果反向推算很難
* 離散對數指數運算,拿到 G X,去算 G^x 次方S 很簡單,但只有G和S,要算小x 很難
* Discrete Logarithms : EEC(橢圓曲線)DH
## 達到機密性怎麼做? P71
非對稱式加密要用對方的公鑰做加密,
這主做法就是RSA做法
## Proof of Origin 確認訊息來源可以信任 P72
這邊是數位簽章的概念
Alice用自己的私key加密,解要用 Alice 公key解,主要目的是 verify 驗證沒有問題,就能相信來源是可信任的
現實世界簽約會做什麼? 可以這樣想
蓋私章=用私key加密=證明來源可信任=不可否認
把蓋好私章的紙放到信封,用對方的公key加密,讓接收方用自已的私key解開
加密是要證明來源可信任
---
## 非對稱式:RSA
* RSA是發明者三個大師名字的英文縮寫
* 為什麼名氣高? 因為技術發展的早,很早進入市場
* 提供三個功能
* 加密
* 金鑰交換 (補了對稱式的弱項)
* 數位簽章
* 常見金鑰長度 1024 2048 4096,2023年建議至少2048以上
* ECC加密長度相對比較短,很長不代表看起來比較安全 因為RSA有一些金鑰不是有效bit
* RSA 會用接收方的公Key對這把對稱式金鑰加密,讓金鑰以密文狀態傳遞,對方用自己私鑰解
密碼學有提到一個特性 PFS Perfect Forward Secrecy,如果你的金鑰在未來時間被破解,他應該不能解以前的密文,RSA不具有這種特性
## 實際看 TLS 演算法
從 ssllabs 可以看網站傳遞訊息使用的加密演算法
https://www.ssllabs.com/ssltest/analyze.html?d=licindia.com
FS就是 Forward Secrecy
CBC_SHA 沒有 FS,所以一開始寫FS後面帶 Weak

RC4就很嚴重了,現在網站幾乎都關了
## Diffie-hellman P75
* 只做金鑰交換 沒有金鑰加密 沒有數位簽章
* 兩邊 Public 交換後(私鑰沒交換)可以拿到一樣的 Shared

---
## ECC 橢圓曲線加密法
* 效能會比較好,經常運用在運算能力受限,儲存空間不大
* 全功能:資料加密,數位簽章,資料交換
## ECC產生公私鑰過程
> 我其實沒有一次聽懂橢圓曲線這邊在講什麼..

| ECC | RSA |
| --- | --- |
| 160-Bit | 1024-Bit |
| 224-Bit | 2048-Bit |
| 256-Bit | 3072-Bit |
| 384-Bit (NSA acceptable for top secret) | 7680-Bit |
## 非對稱式優缺點
優點:
* 原生支援金鑰交換功能
* 不管要加多少資料,金鑰數量就是2N把(公鑰,私鑰)
缺點:
* 對大量資料加密(EX:勒索軟體會用對稱式,不然加密別人電腦很慢)
駭客勒索加密時用對稱式金鑰,然後用駭客組織的公鑰加密,公開這段加密資料,贖金付了才給你駭客組織的私鑰
## 混合加密 P79
對稱式+非對稱式加密混合的過程
## MICs Message Integrity Controls 訊息完整性控制 P80
我們怎樣偵測資料的完整性?
MIC是特殊值,透過訊息內容,接收方收到之後來驗證MIC,主要偵測訊息有無變動的控制措施
傳輸可能的問題
1. 傳輸錯誤
2. 攻擊者竄改
* Parity(沒什麼在用了):如果我傳輸 01001[],用1個bit當檢核碼,假設我有兩個字元變動,這時候就檢查不出來了
* Checksum 身分證檢查碼的機制
* 
故意竄改有兩個做法:
* MAC
* 數位簽章
## Hashing P81
單向式的資料加密,不可逆
hash value Hash結果有時也稱做 message digest 訊息摘要,例如 md5 就是取 message digest 做縮寫
特色
1. arbitarity long plaintext 可變長度的明文,但算出來是固定的長度
2. Input 訊息微幅變動:改一個字 hash 就會差很多 , **avalanche effect 雪崩效應**,讓他夠隨機(random)
## 安全的 Hash 演算法需要具備的5個特性 P83
1. Uniformly Distributed
* 訊息Input進來, 每個選擇的機率必須盡量一致(不能有特定的pattern模式)
2. Collision resistant 碰撞
* 一個hash演算法必須是可以 uniqle獨立代表一個訊息的,如果兩個訊息會算出同一個結果就是不夠安全
* [Google 攻破了最重要的加密技術!用 9 兆次演算暴力破解「SHA-1 安全加密演算法」 2017-02-24](https://buzzorange.com/techorange/2017/02/24/google-sha1/)
* 
* 我欠你100萬,請一個第三方,改成我欠你1萬,HASH值一樣
3. Difficult to invert
* 很難反推
4. Computed on entire message 根據整個訊息計算,而非拆開多個部分來獨立計算 Hash
5. Deterministic (same input always producessame digest) 相同訊息應該產生相同結果
## Operation of Hash Dunction P82
HASH演算法偵測意外變動
---
## Hash Functions
* MD2 MD4 MD5 MD6都有,最有名是 MD5,但都有被找到碰撞了
* SHA系列
* SHA-1(160-Bit) 被規定不能用在數位簽章
* SHA-2 (224-512 bit) NIST 2013
* SHA-3 (224-512 bit) NIST 2015
* SHA3演算法其實原本名稱是 keccalc,SHA3是演算法競賽名稱,最贏的就被命名成SHA3
* SHA3 並不是基於 SHA1 或 SHA2 的升級版
> HASH演算法目前是從SHA-2起跳
TW GCB 下載佈署資源時,可以看到有 SHA256 的 Hash value 可驗證

---
## HMAC:Hash Message Authentication Code,Hash訊息驗證碼 P86
key+msg丟進去算出來的Hash value = HMAC,一起傳送到接收方卻
接收方如何驗證?:用同一把金鑰拉出來,用同樣的HASU演算,跟對方的做比對,若相同,就能確保有沒無被惡意竄改
補充資料: [Day25:安全性和演算法-訊息鑑別碼(Message Authentication Code)](https://ithelp.ithome.com.tw/articles/10262850)
---
## CBC-MAC (對稱式演算法)
* CBC Mode
* 切成一個一個Block
* 產生密文,金鑰,把最後的密文當作是解密,將他一起送到接收方,用同一把KEY,用CBC MAC再跑一遍,去確認並驗證
* CCMP(WPA2/3支援),TLS
> 都可以做到機密性,來源性
---
## 數位簽章 P88
圖片看投影片
這邊做法不一樣單獨列出來
* Alice送訊息給Bob:為做到不可否認
蓋私章,用發送者私鑰會產生數位簽章
訊息透過 HASH 產生數位簽章
* 接收方驗證:用發送方公鑰,解密,與發送方做比較,驗證相同將達成:
* Proof of origin(來源可信任)
* integrity(完整性)
數位簽章可以用在哪裡? 電子商務交易 數位憑證
---
## Digital Sianatures Uses P90
收集到的數位證據做簽章
## Hybrid Cryptography Example 2:CME with POR P91
> 功課:找一張白紙把這張圖畫出來
要做到這幾個目標:
1. Confidentiality(機密性)
2. Integrity(完整性)
3. key exchange(密鑰交換)
4. proof of origin(來源可信任)
5. Non-repudiation(不可否認性)
6. 驗證receiver(接收者)
圖的流程模擬(要自己畫一次)
1. 假設一開始左上要產生key,使用 AES-128
2. 左中綠色 H 產生數位簽章要 Hash,使用SHA224
3. Alice's private key 使用 RSA 2048
4. 接收方解密需要對稱式金鑰,Bob's public key 用 RSA-1024
5. CTK右邊,Bob用自己私鑰解開,完成了金鑰交換需求3,解開後得到明文
6. Alice's public key,需用對方公鑰解開 RSA 2048
7. Bob (receiver)收到訊息是加密狀態,達成了前面需求1
8. Bob's Digest達成了前面需求的2,4,5
## steganography 隱寫, 資訊隱藏 P95
看起來很普通的圖片,但裡面有藏秘密
或是藏在超音波耳朵聽不太的地方
偵測上有一定程度的難度,DLP 不一定找得到
實體的隱寫技術:隱形墨水
steganography:圖片8bit,拿最後一個 bit 藏資訊,圖片看起來沒什麼變
null ciphers 藏頭詩的概念
---
## Distributed Ledger 分散式帳本
去中心化應用,可以達到以下目標:
1. 公開透明
2. 防竄改
3. 技術:Hash演算法
4. 技術:數位簽章
5. block chain 區塊鍊就是應用這種技術的成果
* block chain 會包含一堆交易內容,一個 block 有下面這三種東西
* 前一個 block hash
* 這一個 block 的交易
* 我這個 block 的 hash
* 只改自己本機的帳本沒用,因為其他分散的帳本不承認這個結果 (必須用51%算力攻擊,打破consensus共識決)
---
## End to End Encryption 端到端加密
端到端加密,從裝置出去後,一路上加密都沒有解開過
* Line 訊息 (Letter Sealing)
* https也是這種技術
* ftps也是這種技術
* 說穿就是 tls 加密技術
* IPSec也可以做到
---
## Link (Bulk) ENcryption 資料連結層加密
OSI七層的第二層做加密,
第2層以上的資料全部加密,連第3層都加密了
缺點:封包在網路上傳送要經過 routing,經過許多 router,當第2層加密了,送到 router 的時候必須要跟 router交換金鑰才能解開幫你傳去下一個,下個 router 又交換另一把金鑰(很麻煩)
1. 在 Router 上解密時會有空窗期風險
1. 跨 Router 交換金鑰的金鑰管理問題
---
## Hybrid Systems and the Public Key Infrastructure (PKI) P99
結合金鑰/數位憑證/網路協定等內容,機制有個管理流程
PKI目的:希望透過第三方證明網路上的身分,需要跟真實世界連結在一起
EX:自然人憑證-臨櫃申請叫做vetting Process(審查流程),確定身分後才幫你製卡
> 提醒:數位憑證不等於自然人憑證
提供那些目的?
1. 自然人憑證那張 smartcard是我的私鑰
2. 但發給我的數位憑證裡面也有公鑰
## PKI角色
1. 使用者
2. 憑證註冊中心RA (Registration Authority),登記機關,戶政事務所
3. CA(Certificate Authority)
* 驗證數位功能叫VA,為CA功能之一
* 要不要發由CA決定
4. Validation Authority ,
> 網路報稅舉例:
假設一個財稅中心做報稅::100:
報稅前:user 把 報稅資料加上數位簽章,怎麼加?
把自然人憑證插入讀卡機,用自然憑證將報稅資料 做hash 送到財稅中心
財稅中心 問 CA 這個簽章對不對
CA 的 VA 財政中心沒問題是我發的
檢查:資料內容無遭竄改 資料來源是本人正確 本人不可否認有送出過
---
## X.509 Certificate P107
* Subject name :表示現實世界身份,以自然人憑證來說,就是本人的名字
* Digital Signature of CA:用在網站網域名字
> 以上兩個要經過審查才能發出去,憑證發放出去後需有防衛的設計,避免自己偽造他人身分,就是數位簽章
* 數位簽章就是把整個數位憑證內容過HASH演算法,得到一個 digest,把digest 用一把鑰匙加密,
* 用誰的 Private Key加密產生數位簽章呢? A : 用 CA 的 Private Key產生數位簽章,放在憑證後面
怎麼做到防衛呢? (確保網站的憑證未遭竄改)
* 我們要拿到CA的公鑰來驗證
CA的公鑰是預先載入的,可以在瀏覽器找看看信任的根憑證 Root CA

---
## Root CA 被入侵案例,if you can't trust your CA... Digi Notar 2011 P108
DigiMptar CA 私鑰被偷
## Certificate Revocation 憑證召回 P109
憑證什麼時候需要被召回
CRL
* 企業私鑰被偷
* [線上遊戲代理商Garena被發現,有英雄聯盟、流亡黯道和FIFA Online3等3款線上遊戲,在官網供玩家下載的遊戲檔案中,因為數位簽章外洩,被植入網軍常見的惡意程式PlugX](https://www.ithome.com.tw/news/93575)
* 憑證目的被改變
* 原先電商網站,現在改變
* 企業組織停止營運/改名
## CR mechrist 補充資料 P110
CRL
OCSP responder URI 一次問一筆

可以用 windows cmd 的 certutil 指令查看看
---
## Key (金鑰管理)
金鑰生命週期6階段
產生、使用、儲存、備份、還原、銷毀
---
## 密碼一定要定期變更 key rotarion 嗎?
nist 現在並沒有一定要求定期變更密碼,原因
1. 一直改對使用者有困擾
2. 定期改密碼真的有效嗎?
以卡巴斯基密碼強度檢查為例 https://password.kaspersky.com/
1qaz@WSX、1qaz@WSx、1qaz@WSy ,這些都是弱密碼了
建議作法:密碼變更時機是有被入侵風險或疑慮,不一定要定期變更
## Key Recovery 金鑰備份以及毀損時怎麼還原?
異地備份可能還不夠,甚至需要託管第三方
## Key Disposition 金鑰銷毀
---
## Psedo Random (模擬的隨機)
程式可能不是 true random,因為種子可能還是有被算出來的可能
true random 可能是使用現實世界的機制來當作random種子
有研究提供 true random 的 api 可以用
https://qrng.anu.edu.au/random-binary/

可以用這個網站 check 隨機程度
https://planetcalc.com/2472/
* 1 51%
* 0 48%

---
## Creation of Keys
RSAS 不是所有 bit 都是有效 bit
ECC金鑰短但是強度跟 RSA 一樣
---
## KeDistribution金鑰傳遞,Key Wrapping交換,KeyEncrypting Keys加密金鑰的金鑰 P113
* 交換金鑰可以用 RSA ECC,但某些時候需要保護這把加金鑰
* 加密明文的key 稱為 DEk,如果要用對稱式保護Dek,保護後的結果叫做 KEK
金鑰交換2 種方式
* Out ofband key exchange 傳送金鑰的 channel 走其他路徑
* Key wrapping 金鑰交換
或是 Asymmetric 非對稱方式交換
有的書會把非對稱和對稱加密金鑰都叫 key wrapping
但 nist說只有對稱式才算 key wrapping
---
## 金鑰儲存與銷毀 P114
* 硬體儲存模組
* 筆電 tpm晶片
* SecureElement
* root CA HSM -> RCA
* 軟體儲存 安全性稍低 Windows EFS(金鑰放在O)
* 智慧卡
* key wrapping the (session keys 短期密碼),然後使用 KEK 保護 session key
* 金鑰拆解保管 splitting cipher keys ,加密貨幣交易所出金的時候常用,把出金的金鑰拆解放到不同地方,避免一台電腦被入侵就全部被竊取
* 如果萬不得已要把密碼寫在程式內? 先拆解,這樣被扒 source code 可能不容易被發現,也算一種金鑰拆解延伸方式
* 用密碼保護金鑰 (匯入匯出需要密碼)
* key 更改後,要馬上銷毀舊key嗎? rotate 到新的 key前還是先保留一段時間,免得某些東西還是需要舊的解
---
## Key Rocovery P115
dual control
* 雙重控制(核彈兩個人才能發射)
split knowledge
* 重要任務或知識由兩個人執行,例如可樂沒有一個人知道這個配方,重要金鑰不能一個人持有
* **key spliting 演算法**,金鑰切成5份,只要3份到場就可以復原,又稱為 m out of n 演算法
Key Escrow 金鑰託管
* 找信任第三方,金鑰損毀需要復原要填表單驗證身分
## key spliting 演算法可以參考這個網站
[
](https://iancoleman.io/shamir/)
---
## 演算法與協定治理
* 例如 行動應用app基本資安檢測基準 有訂
* 
* 美國聯邦政府要求可以使用的演算法 FIPS 140-2 => 140-3
* 如果密碼已經被破解了,有沒有轉移計劃 transition plan
*
這張圖就是 nist transition 計畫
https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf
3 TDEA 2023年後不給加密

* 演算法選擇的 criteria: 什麼樣的 data 用什麼樣子加密?
基本判斷:information 分類
內部使用 vs 極機密 都用 AES 256,有成本問題
* 金鑰使用 託管 與銷毀的議題
* 發生事件怎麼回報
---
## Issues Surrounding Cryptography P118
* 通常加密是保護隱私和個人安全,但可能跟執法單位有衝突,例如國家需要監聽,執法單位或國家需要有搜索票才能監聽(台灣的通訊監察法)
* 安全跟便利是雙面刃
* 美國的加密設備輸出控制
只要對稱是金鑰長度大於 56 bit 就要送審
https://www.federalregister.gov/documents/2010/06/25/2010-15072/encryption-export-controls-revision-of-license-exception-enc-and-mass-market-eligibility-submission

* 本地國家要求的限制(極權國家比較會要求,例如中國的 密碼法)
---
## 加密管理 P119
* NIST SP 800-57
* ISO 11770 KM
* 醫療產業 HIPA
* 金融產業 GLBA
* 業餘人員不適合執行
---
## Crpytnalysis Attack 破密學 P124
以攻擊者手上有什麼資訊或現象來分類
演算法應該要有不可預測性,明文 金鑰 密文,不能有特定模式,如果可以用統計方式找出來就不行,降低被暴力破解的機ccjo4
* Ciphertext Only 只有密文就可以攻擊
WPA,蒐集夠多密文,就可以金鑰反解回來
在wifi密集處,大概半小時就足夠反解金鑰了
* Known plaintext 已知明文+密文可以解
* Chosen plaintext 攻擊者可以觀察到加解密系統的輸出 output
* Chosen ciphertext 攻擊者可以觀察到加解密系統的輸入 input
* 線性破密Linear
* 統計金鑰與密文的
* 用線性趨近法+統計分析,嘗試找出最有可能的金鑰
* 需要 2^43 的資料
* 差分破密Diffential
* 加密兩個明文和兩個密文
* 計算兩個明文和密文差分
* 找到特定模式後猜看看金鑰可能性
* 需要 2^47 的資料
---
## Implementation and Algorithm Attacks P125
* 旁路攻擊 Side channel 不是針對主要數學問題握演算法,是針對加密系統的訊號有無特定模式,例如執行時間、頻率、消耗的電力、產生的熱、機械震動等物理訊號
* 這種攻擊通常很難實現 但可以發論文 行政院國家科學委員會 論文:[針對密碼硬體具有電力分析攻擊抵抗力之設計方法與最佳化](https://www.grb.gov.tw/search/planDetail?id=1473456)
* Fault injection and error analysis: [wiki: Zeroisation](https://en.wikipedia.org/wiki/Zeroisation) 讓系統電壓歸0,清零通常會在加密會話結束時執行,以防止密鑰意外洩露
* 重播攻擊 Replay Attack:驗證值Credentials會有一段時間不會變,可以 pass (pass the hash or Pass the ticket)
* 克服方式:讓Credentials動態有 random 特性、例如一次性密碼,加鹽、CSRF token
* Mathematical attacks 解決數學難題的任務
* 字典檔:破密工具通常有
* 折衷方式 Rainbow table,pre computed hash,就是預先把所有結果算出來,演算法要防範可以加 salt,rainbowCrack 是有名的破解工具
* rainbow table 通常很大 127gb 690gb

* 使用安全的random 產生方式,例如 Android SecureRandom https://developer.android.com/reference/java/security/SecureRandom
* 暴力攻擊:目標防止暴力破解保護,估算到上百萬年才能解開
* 勒索軟體:密碼學誤用
* 社交工程
* 暴力脅迫Coercion、Intimidation
* 欺騙 從眾心理(大家都這樣做)
* 人性喜歡幫助人
* 服從權威
* 賄絡、買通key man
* 利益交換 中獎mail