# 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(提供者)身上 防火牆規則設定是使用者責任,其實雲端供應商(提供者)都很熟責任區分,但使用者(租用雲端服務的客戶)可能不太熟 ![image](https://hackmd.io/_uploads/H1ltZXlBp.png) --- ## 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://hackmd.io/_uploads/HysQEQgSp.png) ](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 ![image](https://hackmd.io/_uploads/HkkOFXgBp.png) 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) 這邊的圖 ![](https://hackmd.io/_uploads/S1wScXeBp.png) ## 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 [![image](https://hackmd.io/_uploads/HJ8867gHp.png)](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) 圖片的架構 ![image](https://hackmd.io/_uploads/BJIDbElr6.png) * 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 安全的政策 模型與架構 借前面的圖來用 ![image](https://hackmd.io/_uploads/H1IIM4gHT.png) * Policies * Model 怎麼設計這個系統? * Architecture 架構用什麼架構 * 做權限中的控管 * osSK * Drivers * Ring 1 Device * Utils * Ring 2 * EX:Net User,netsh * Apps * Ring 3 User mode * 投影片缺一個 Implemenation ![image](https://hackmd.io/_uploads/HJCoGNlrp.png) ## 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也有類似功能 ![image](https://hackmd.io/_uploads/rJtcS4xBT.png) * Code signing 1.Vinder 釋放的軟體要做數位簽章 2.OS 3.Sipns * Audit and Monitoring * 要想想該去 Audit 什麼東西? * windows 的 gpedit 可以看 ![image](https://hackmd.io/_uploads/rk7x8VxrT.png) * Virtualization/Sandbox(虛擬化/沙盒) > 老師: hyper-v有時候常常跟 vm 相衝造成很慢...要弄什麼 vm workaround ![image](https://hackmd.io/_uploads/rkw4LNeSa.png) * 沙盒:主要是在做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工作去上廁所,筆電手機都放在桌上還沒鎖螢幕...,東西放車子裡窗戶被打破偷走 ![筆電防盜鎖](https://hackmd.io/_uploads/H12FiVgH6.png) * 監控很困難 * 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時有機會被破解出來 * ![image](https://hackmd.io/_uploads/r10vfrxSa.png) * [擬匿名化補充](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)) ![image](https://hackmd.io/_uploads/BJTwEPZHp.png) 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 * ![image](https://hackmd.io/_uploads/H1KZ_UlBT.png) * 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) 的圖,越往左邊雲端供應商的責任越少 * ![image](https://hackmd.io/_uploads/ryzqdLlST.png) * 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)![image](https://hackmd.io/_uploads/SkZMa8lr6.png) --- ## --- ## 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) ![image](https://hackmd.io/_uploads/BJk_vDeH6.png) 攻擊管道 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/ * ![台灣監視器外洩的部分](https://hackmd.io/_uploads/H1ol6vlB6.jpg) * 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) ![image](https://hackmd.io/_uploads/Hk6HH_gHp.png) 早期的 windows 使用的 ROT13 加密演算法就是用這種方式 ## Transposition 重新排列,又叫做 permutation P65有圖 例如 Apple 重新排序 ![image](https://hackmd.io/_uploads/Hy6MLdxBa.png) ## 頻率分析法 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 ![image](https://hackmd.io/_uploads/HkvmwdgBT.png) --- ## 對稱式加解密優缺點 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 ![image](https://hackmd.io/_uploads/rktrgtgrT.png) RC4就很嚴重了,現在網站幾乎都關了 ## Diffie-hellman P75 * 只做金鑰交換 沒有金鑰加密 沒有數位簽章 * 兩邊 Public 交換後(私鑰沒交換)可以拿到一樣的 Shared ![image](https://hackmd.io/_uploads/Sk6B-KlBp.png) --- ## ECC 橢圓曲線加密法 * 效能會比較好,經常運用在運算能力受限,儲存空間不大 * 全功能:資料加密,數位簽章,資料交換 ## ECC產生公私鑰過程 > 我其實沒有一次聽懂橢圓曲線這邊在講什麼.. ![image](https://hackmd.io/_uploads/HJifztxBa.png) | 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 身分證檢查碼的機制 * ![image](https://hackmd.io/_uploads/S1m8EteSa.png) 故意竄改有兩個做法: * 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/) * ![image](https://hackmd.io/_uploads/HkuVIFeB6.png) * 我欠你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 可驗證 ![image](https://hackmd.io/_uploads/HkzzuKxHp.png) --- ## 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 ![image](https://hackmd.io/_uploads/HymKS5xra.png) --- ## 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 一次問一筆 ![image](https://hackmd.io/_uploads/S1yC8clHT.png) 可以用 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/ ![image](https://hackmd.io/_uploads/SkWYL8Krp.png) 可以用這個網站 check 隨機程度 https://planetcalc.com/2472/ * 1 51% * 0 48% ![image](https://hackmd.io/_uploads/BkBxDLtSa.png) --- ## 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 演算法可以參考這個網站 [![shamir's secret sharing](https://hackmd.io/_uploads/BkoNo8trT.png) ](https://iancoleman.io/shamir/) --- ## 演算法與協定治理 * 例如 行動應用app基本資安檢測基準 有訂 * ![image](https://hackmd.io/_uploads/B1EafvtBa.png) * 美國聯邦政府要求可以使用的演算法 FIPS 140-2 => 140-3 * 如果密碼已經被破解了,有沒有轉移計劃 transition plan * 這張圖就是 nist transition 計畫 https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf 3 TDEA 2023年後不給加密 ![image](https://hackmd.io/_uploads/Hkf-hLYHp.png) * 演算法選擇的 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 ![image](https://hackmd.io/_uploads/r1uq6UtB6.png) * 本地國家要求的限制(極權國家比較會要求,例如中國的 密碼法) --- ## 加密管理 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 ![image](https://hackmd.io/_uploads/By7t7DFBa.png) * 使用安全的random 產生方式,例如 Android SecureRandom https://developer.android.com/reference/java/security/SecureRandom * 暴力攻擊:目標防止暴力破解保護,估算到上百萬年才能解開 * 勒索軟體:密碼學誤用 * 社交工程 * 暴力脅迫Coercion、Intimidation * 欺騙 從眾心理(大家都這樣做) * 人性喜歡幫助人 * 服從權威 * 賄絡、買通key man * 利益交換 中獎mail